Content Egg - Version 5.2.0

Version Description

  • New: Feed module to work with custom CSV feeds.
  • New: Viglink module.
  • New: Merchant settings: Shop info.
  • New: Block template: Top listing.
  • New: Price alert email templates.
  • New: Price alerts option: General alert for all products in a post.
  • New: Frontend text settings.
  • Improvement: Compatibility with WooCommerce 5.1.0.
  • Improvement: Glyphicons are no longer used on frontend.
Download this release

Release Info

Developer keywordrush
Plugin Icon 128x128 Content Egg
Version 5.2.0
Comparing to
See all releases

Code changes from version 5.1.0 to 5.2.0

Files changed (162) hide show
  1. application/BlockShortcode.php +10 -7
  2. application/EggShortcode.php +10 -7
  3. application/Installer.php +10 -1
  4. application/ModuleUpdateScheduler.php +20 -15
  5. application/ModuleUpdateVisit.php +2 -0
  6. application/ModuleViewer.php +4 -4
  7. application/Plugin.php +36 -11
  8. application/PriceAlert.php +79 -37
  9. application/ProductSearch.php +5 -5
  10. application/Translator.php +33 -0
  11. application/WooIntegrator.php +7 -4
  12. application/admin/AdminNotice.php +1 -1
  13. application/admin/AutoblogController.php +1 -1
  14. application/admin/AutoblogTable.php +2 -2
  15. application/admin/EggMetabox.php +6 -6
  16. application/admin/GeneralConfig.php +292 -68
  17. application/admin/ModuleSettingsContoller.php +1 -1
  18. application/admin/PluginAdmin.php +14 -4
  19. application/admin/PrefillController.php +27 -4
  20. application/admin/ProductController.php +2 -2
  21. application/admin/ProductTable.php +1 -1
  22. application/admin/ToolsController.php +37 -6
  23. application/admin/views/_metabox_autoblog.php +30 -34
  24. application/admin/views/_metabox_results.php +1 -2
  25. application/admin/views/_promo_box.php +1 -1
  26. application/admin/views/ae_integration.php +15 -8
  27. application/admin/views/autoblog_edit.php +2 -2
  28. application/admin/views/autoblog_index.php +7 -1
  29. application/admin/views/module_index.php +13 -3
  30. application/admin/views/module_settings.php +26 -8
  31. application/admin/views/prefill.php +11 -6
  32. application/admin/views/settings.php +1 -1
  33. application/components/AffiliateFeedParserModule.php +21 -5
  34. application/components/AffiliateFeedParserModuleConfig.php +7 -4
  35. application/components/AffiliateParserModule.php +2 -2
  36. application/components/AffiliateParserModuleConfig.php +3 -3
  37. application/components/Config.php +1 -1
  38. application/components/ContentManager.php +27 -14
  39. application/components/LinkHandler.php +1 -1
  40. application/components/Module.php +2 -2
  41. application/components/ModuleConfig.php +1 -1
  42. application/components/ModuleManager.php +54 -14
  43. application/components/ModuleTemplateManager.php +2 -2
  44. application/components/ParserModule.php +32 -3
  45. application/components/ParserModuleConfig.php +3 -4
  46. application/components/Scheduler.php +8 -6
  47. application/components/TemplateManager.php +5 -2
  48. application/helpers/AdminHelper.php +17 -1
  49. application/helpers/CurrencyHelper.php +2 -2
  50. application/helpers/ImageHelper.php +1 -1
  51. application/helpers/TemplateHelper.php +250 -42
  52. application/helpers/TextHelper.php +33 -3
  53. application/libs/ParserClient.php +1 -2
  54. application/libs/RestClient.php +1 -1
  55. application/libs/WpHttpClient.php +3 -0
  56. application/libs/viglink/ViglinkApi.php +73 -0
  57. application/models/AutoblogModel.php +12 -7
  58. application/models/FeedProductModel.php +16 -1
  59. application/models/Model.php +1 -0
  60. application/models/ProductModel.php +5 -2
  61. application/modules/AE/AEConfig.php +1 -1
  62. application/modules/AE/AEModule.php +3 -3
  63. application/modules/AdmitadProducts/AdmitadProductsConfig.php +1 -1
  64. application/modules/AffilinetCoupons/AffilinetCouponsConfig.php +1 -1
  65. application/modules/Amazon/AmazonConfig.php +1 -1
  66. application/modules/Amazon/templates/data_compare.php +1 -1
  67. application/modules/CjLinks/CjLinksConfig.php +1 -1
  68. application/modules/Coupon/CouponModule.php +2 -2
  69. application/modules/Feed/ExtraDataAE.php +23 -0
  70. application/modules/Feed/FeedConfig.php +247 -0
  71. application/modules/Feed/FeedModule.php +334 -0
  72. application/modules/Feed/FeedName.php +52 -0
  73. application/modules/Feed/index.php +3 -0
  74. application/modules/Feed/models/MyFeed10ProductModel.php +27 -0
  75. application/modules/Feed/models/MyFeed11ProductModel.php +27 -0
  76. application/modules/Feed/models/MyFeed12ProductModel.php +27 -0
  77. application/modules/Feed/models/MyFeed13ProductModel.php +27 -0
  78. application/modules/Feed/models/MyFeed14ProductModel.php +27 -0
  79. application/modules/Feed/models/MyFeed15ProductModel.php +27 -0
  80. application/modules/Feed/models/MyFeed16ProductModel.php +27 -0
  81. application/modules/Feed/models/MyFeed17ProductModel.php +27 -0
  82. application/modules/Feed/models/MyFeed18ProductModel.php +27 -0
  83. application/modules/Feed/models/MyFeed19ProductModel.php +27 -0
  84. application/modules/Feed/models/MyFeed1ProductModel.php +26 -0
  85. application/modules/Feed/models/MyFeed20ProductModel.php +27 -0
  86. application/modules/Feed/models/MyFeed21ProductModel.php +27 -0
  87. application/modules/Feed/models/MyFeed22ProductModel.php +27 -0
  88. application/modules/Feed/models/MyFeed23ProductModel.php +27 -0
  89. application/modules/Feed/models/MyFeed24ProductModel.php +27 -0
  90. application/modules/Feed/models/MyFeed25ProductModel.php +27 -0
  91. application/modules/Feed/models/MyFeed2ProductModel.php +27 -0
  92. application/modules/Feed/models/MyFeed3ProductModel.php +27 -0
  93. application/modules/Feed/models/MyFeed4ProductModel.php +27 -0
  94. application/modules/Feed/models/MyFeed5ProductModel.php +27 -0
  95. application/modules/Feed/models/MyFeed6ProductModel.php +27 -0
  96. application/modules/Feed/models/MyFeed7ProductModel.php +27 -0
  97. application/modules/Feed/models/MyFeed8ProductModel.php +27 -0
  98. application/modules/Feed/models/MyFeed9ProductModel.php +27 -0
  99. application/modules/Feed/models/MyFeedProductModel.php +36 -0
  100. application/modules/Feed/templates/data_grid.php +10 -0
  101. application/modules/Feed/templates/data_item.php +10 -0
  102. application/modules/Feed/templates/data_item_simple.php +10 -0
  103. application/modules/Feed/templates/data_list.php +9 -0
  104. application/modules/Feed/templates/data_price_tracker_alert.php +10 -0
  105. application/modules/Feed/views/search_panel.php +3 -0
  106. application/modules/Feed/views/update_panel.php +3 -0
  107. application/modules/GdeSlon/GdeSlonConfig.php +1 -1
  108. application/modules/GdeSlon/GdeSlonModule.php +2 -2
  109. application/modules/Viglink/ExtraDataViglink.php +20 -0
  110. application/modules/Viglink/ViglinkConfig.php +158 -0
  111. application/modules/Viglink/ViglinkModule.php +305 -0
  112. application/modules/Viglink/index.php +3 -0
  113. application/modules/Viglink/templates/data_grid.php +11 -0
  114. application/modules/Viglink/templates/data_item.php +11 -0
  115. application/modules/Viglink/templates/data_item_simple.php +10 -0
  116. application/modules/Viglink/templates/data_list.php +10 -0
  117. application/modules/Viglink/templates/data_price_tracker_alert.php +11 -0
  118. application/modules/Viglink/views/search_panel.php +3 -0
  119. application/modules/Viglink/views/update_panel.php +3 -0
  120. application/templates/blocks/grid_row.php +2 -2
  121. application/templates/blocks/item_after_price_row.php +5 -11
  122. application/templates/blocks/item_features.php +29 -26
  123. application/templates/blocks/item_row.php +15 -9
  124. application/templates/blocks/list_row.php +19 -16
  125. application/templates/blocks/list_row_no_price.php +17 -9
  126. application/templates/blocks/price_alert_inline.php +9 -8
  127. application/templates/blocks/price_history.php +6 -6
  128. application/templates/data_coupon.php +4 -4
  129. application/templates/data_item.php +1 -1
  130. application/templates/data_list.php +6 -3
  131. application/templates/data_price_tracker_alert.php +3 -3
  132. content-egg.php +1 -1
  133. languages/content-egg.pot +995 -599
  134. languages/tpl/content-egg-tpl.pot +268 -231
  135. loader.php +2 -2
  136. readme.txt +54 -31
  137. res/app/app.js +3 -3
  138. res/bootstrap/css/egg-bootstrap.css +148 -807
  139. res/bootstrap/css/egg-bootstrap.min.css +3 -5
  140. res/bootstrap/css/glyphicons.css +805 -0
  141. res/bootstrap/js/popover.js +121 -0
  142. res/bootstrap/js/tooltip.js +361 -0
  143. res/css/admin.css +26 -16
  144. res/css/products.css +23 -7
  145. res/img/logo.png +0 -0
  146. res/js/common.js +1 -1
  147. res/js/jquery.blockUI.js +610 -606
  148. res/js/keywords.js +14 -14
  149. res/js/prefill.js +4 -4
  150. res/js/price_alert.js +1 -1
  151. res/logos/amazon-sa.png +0 -0
  152. templates/block_offers_logo.php +17 -14
  153. templates/block_offers_tile.php +1 -1
  154. templates/block_price_alert.php +2 -2
  155. templates/block_price_comparison.php +14 -15
  156. templates/block_price_comparison_card.php +2 -2
  157. templates/block_price_history.php +1 -1
  158. templates/block_price_statistics.php +1 -1
  159. templates/block_text_links.php +1 -1
  160. templates/block_top_listing.php +84 -0
  161. templates/wdgt_price_movers_grid.php +2 -2
  162. templates/wdgt_price_movers_list.php +3 -4
application/BlockShortcode.php CHANGED
@@ -13,8 +13,8 @@ use ContentEgg\application\helpers\TemplateHelper;
13
  * BlockShortcode class file
14
  *
15
  * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
  */
19
  class BlockShortcode {
20
 
@@ -36,7 +36,7 @@ class BlockShortcode {
36
 
37
  private function prepareAttr($atts)
38
  {
39
- $a = \shortcode_atts(array(
40
  'modules' => null,
41
  'template' => '',
42
  'post_id' => 0,
@@ -54,8 +54,11 @@ class BlockShortcode {
54
  'product' => '',
55
  'hide' => '',
56
  'show' => '',
57
- 'btn_text' => '',
58
- ), $atts);
 
 
 
59
 
60
  $a['next'] = (int) $a['next'];
61
  $a['limit'] = (int) $a['limit'];
@@ -67,7 +70,7 @@ class BlockShortcode {
67
  $a['group'] = \sanitize_text_field($a['group']);
68
  $a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
69
  $a['show'] = strtolower(TextHelper::clear($a['show']));
70
- $a['btn_text'] = wp_strip_all_tags($a['btn_text'], true);
71
 
72
  if ($a['group'] && !$a['groups'])
73
  $a['groups'] = $a['group'];
@@ -158,7 +161,7 @@ class BlockShortcode {
158
  $module_ids = array_intersect($module_ids, $supported_module_ids);
159
  }
160
 
161
- return ModuleViewer::getInstance()->viewBlockData($module_ids, $post_id, $a);
162
  }
163
 
164
  }
13
  * BlockShortcode class file
14
  *
15
  * @author keywordrush.com <support@keywordrush.com>
16
+ * @link http://www.keywordrush.com
17
+ * @copyright Copyright &copy; 2021 keywordrush.com
18
  */
19
  class BlockShortcode {
20
 
36
 
37
  private function prepareAttr($atts)
38
  {
39
+ $allowed_atts = array(
40
  'modules' => null,
41
  'template' => '',
42
  'post_id' => 0,
54
  'product' => '',
55
  'hide' => '',
56
  'show' => '',
57
+ 'btn_text' => ''
58
+ );
59
+
60
+ $allowed_atts = \apply_filters('cegg_block_shortcode_atts', $allowed_atts);
61
+ $a = \shortcode_atts($allowed_atts, $atts);
62
 
63
  $a['next'] = (int) $a['next'];
64
  $a['limit'] = (int) $a['limit'];
70
  $a['group'] = \sanitize_text_field($a['group']);
71
  $a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
72
  $a['show'] = strtolower(TextHelper::clear($a['show']));
73
+ $a['btn_text'] = \wp_strip_all_tags($a['btn_text'], true);
74
 
75
  if ($a['group'] && !$a['groups'])
76
  $a['groups'] = $a['group'];
161
  $module_ids = array_intersect($module_ids, $supported_module_ids);
162
  }
163
 
164
+ return ModuleViewer::getInstance()->viewBlockData($module_ids, $post_id, $a, $content);
165
  }
166
 
167
  }
application/EggShortcode.php CHANGED
@@ -14,8 +14,8 @@ use ContentEgg\application\helpers\TemplateHelper;
14
  * EggShortcode class file
15
  *
16
  * @author keywordrush.com <support@keywordrush.com>
17
- * @link http://www.keywordrush.com/
18
- * @copyright Copyright &copy; 2015 keywordrush.com
19
  */
20
  class EggShortcode {
21
 
@@ -39,7 +39,7 @@ class EggShortcode {
39
 
40
  private function prepareAttr($atts)
41
  {
42
- $a = \shortcode_atts(array(
43
  'module' => null,
44
  'limit' => 0,
45
  'offset' => 0,
@@ -56,8 +56,11 @@ class EggShortcode {
56
  'products' => '',
57
  'product' => '',
58
  'hide' => '',
59
- 'btn_text' => '',
60
- ), $atts);
 
 
 
61
 
62
  $a['next'] = (int) $a['next'];
63
  $a['limit'] = (int) $a['limit'];
@@ -72,7 +75,7 @@ class EggShortcode {
72
  $a['groups'] = \sanitize_text_field($a['groups']);
73
  $a['group'] = \sanitize_text_field($a['group']);
74
  $a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
75
- $a['btn_text'] = wp_strip_all_tags($a['btn_text'], true);
76
  if ($a['group'] && !$a['groups'])
77
  $a['groups'] = $a['group'];
78
  if ($a['groups'])
@@ -109,7 +112,7 @@ class EggShortcode {
109
  return;
110
 
111
  Shortcoded::getInstance($post_id)->setShortcodedModule($module_id);
112
- return ModuleViewer::getInstance()->viewModuleData($module_id, $post_id, $a);
113
  }
114
 
115
  public static function arraySortByColumn(&$arr, $col, $dir = SORT_ASC)
14
  * EggShortcode class file
15
  *
16
  * @author keywordrush.com <support@keywordrush.com>
17
+ * @link https://www.keywordrush.com
18
+ * @copyright Copyright &copy; 2021 keywordrush.com
19
  */
20
  class EggShortcode {
21
 
39
 
40
  private function prepareAttr($atts)
41
  {
42
+ $allowed_atts = array(
43
  'module' => null,
44
  'limit' => 0,
45
  'offset' => 0,
56
  'products' => '',
57
  'product' => '',
58
  'hide' => '',
59
+ 'btn_text' => '',
60
+ );
61
+
62
+ $allowed_atts = \apply_filters('cegg_module_shortcode_atts', $allowed_atts);
63
+ $a = \shortcode_atts($allowed_atts, $atts);
64
 
65
  $a['next'] = (int) $a['next'];
66
  $a['limit'] = (int) $a['limit'];
75
  $a['groups'] = \sanitize_text_field($a['groups']);
76
  $a['group'] = \sanitize_text_field($a['group']);
77
  $a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
78
+ $a['btn_text'] = wp_strip_all_tags($a['btn_text'], true);
79
  if ($a['group'] && !$a['groups'])
80
  $a['groups'] = $a['group'];
81
  if ($a['groups'])
112
  return;
113
 
114
  Shortcoded::getInstance($post_id)->setShortcodedModule($module_id);
115
+ return ModuleViewer::getInstance()->viewModuleData($module_id, $post_id, $a, $content);
116
  }
117
 
118
  public static function arraySortByColumn(&$arr, $col, $dir = SORT_ASC)
application/Installer.php CHANGED
@@ -13,7 +13,7 @@ use ContentEgg\application\models\AutoblogModel;
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
  * @link https://www.keywordrush.com
16
- * @copyright Copyright &copy; 2020 keywordrush.com
17
  */
18
  class Installer {
19
 
@@ -124,6 +124,9 @@ class Installer {
124
  if ($db_version < 50)
125
  self::upgrade_v50();
126
 
 
 
 
127
  \update_option(Plugin::slug . '_db_version', self::dbVesrion());
128
  }
129
 
@@ -157,6 +160,12 @@ class Installer {
157
  global $wpdb;
158
  $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'cegg_awin_product');
159
  }
 
 
 
 
 
 
160
 
161
  public function redirect_after_activation()
162
  {
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
  * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
  */
18
  class Installer {
19
 
124
  if ($db_version < 50)
125
  self::upgrade_v50();
126
 
127
+ if ($db_version < 53)
128
+ self::upgrade_v53();
129
+
130
  \update_option(Plugin::slug . '_db_version', self::dbVesrion());
131
  }
132
 
160
  global $wpdb;
161
  $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'cegg_awin_product');
162
  }
163
+
164
+ private static function upgrade_v53()
165
+ {
166
+ global $wpdb;
167
+ $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'cegg_daisycon_product');
168
+ }
169
 
170
  public function redirect_after_activation()
171
  {
application/ModuleUpdateScheduler.php CHANGED
@@ -12,8 +12,8 @@ use ContentEgg\application\components\ModuleManager;
12
  * ModuleUpdateScheduler class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2016 keywordrush.com
17
  */
18
  class ModuleUpdateScheduler extends Scheduler {
19
 
@@ -36,7 +36,7 @@ class ModuleUpdateScheduler extends Scheduler {
36
  self::priceUpdate();
37
  }
38
 
39
- private static function byKeywordUpdate()
40
  {
41
  global $wpdb;
42
 
@@ -49,15 +49,18 @@ class ModuleUpdateScheduler extends Scheduler {
49
  shuffle($module_ids);
50
  foreach ($module_ids as $module_id)
51
  {
52
- $module = ModuleManager::getInstance()->factory($module_id);
53
- $ttl = $module->config('ttl');
54
 
55
- $meta_key_keyword = self::addKeywordPrefix($module_id);
56
- $meta_key_last_bykeyword_update = self::addByKeywordUpdatePrefix($module_id);
 
 
 
 
57
 
58
- $limit = (int) \apply_filters('cegg_update_limit_keyword', self::BYKEYWORD_UPDATE_LIMIT_FOR_MODULE);
59
 
60
- $sql = "SELECT last_bykeyword_update.post_id
61
  FROM {$wpdb->postmeta} last_bykeyword_update
62
  INNER JOIN {$wpdb->postmeta} keyword
63
  ON last_bykeyword_update.post_id = keyword.post_id
@@ -68,20 +71,22 @@ class ModuleUpdateScheduler extends Scheduler {
68
  ORDER BY last_bykeyword_update.meta_value ASC
69
  LIMIT " . $limit;
70
 
71
- $query = $wpdb->prepare($sql, $meta_key_keyword, $meta_key_last_bykeyword_update);
72
- $results = $wpdb->get_results($query);
73
- if (!$results)
 
 
74
  continue;
75
 
76
  // update!
77
- foreach ($results as $r)
78
  {
79
- ContentManager::updateByKeyword($r->post_id, $module_id);
80
  }
81
  }
82
  }
83
 
84
- private static function priceUpdate()
85
  {
86
  global $wpdb;
87
 
12
  * ModuleUpdateScheduler class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
+ * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
  */
18
  class ModuleUpdateScheduler extends Scheduler {
19
 
36
  self::priceUpdate();
37
  }
38
 
39
+ public static function byKeywordUpdate()
40
  {
41
  global $wpdb;
42
 
49
  shuffle($module_ids);
50
  foreach ($module_ids as $module_id)
51
  {
52
+ $post_ids = \apply_filters('cegg_keyword_update_posts', array(), $module_id);
 
53
 
54
+ if (!$post_ids)
55
+ {
56
+ $module = ModuleManager::getInstance()->factory($module_id);
57
+ $ttl = $module->config('ttl');
58
+ $meta_key_keyword = self::addKeywordPrefix($module_id);
59
+ $meta_key_last_bykeyword_update = self::addByKeywordUpdatePrefix($module_id);
60
 
61
+ $limit = (int) \apply_filters('cegg_update_limit_keyword', self::BYKEYWORD_UPDATE_LIMIT_FOR_MODULE);
62
 
63
+ $sql = "SELECT last_bykeyword_update.post_id
64
  FROM {$wpdb->postmeta} last_bykeyword_update
65
  INNER JOIN {$wpdb->postmeta} keyword
66
  ON last_bykeyword_update.post_id = keyword.post_id
71
  ORDER BY last_bykeyword_update.meta_value ASC
72
  LIMIT " . $limit;
73
 
74
+ $query = $wpdb->prepare($sql, $meta_key_keyword, $meta_key_last_bykeyword_update);
75
+ $post_ids = $wpdb->get_col($query);
76
+ }
77
+
78
+ if (!$post_ids)
79
  continue;
80
 
81
  // update!
82
+ foreach ($post_ids as $post_id)
83
  {
84
+ ContentManager::updateByKeyword($post_id, $module_id);
85
  }
86
  }
87
  }
88
 
89
+ public static function priceUpdate()
90
  {
91
  global $wpdb;
92
 
application/ModuleUpdateVisit.php CHANGED
@@ -78,6 +78,8 @@ class ModuleUpdateVisit {
78
  continue;
79
 
80
  $keyword = \get_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $module->getId(), true);
 
 
81
  if (!$keyword)
82
  continue;
83
 
78
  continue;
79
 
80
  $keyword = \get_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $module->getId(), true);
81
+ $keyword = \apply_filters('cegg_keyword_update', $keyword, $post->ID, $module->getId());
82
+
83
  if (!$keyword)
84
  continue;
85
 
application/ModuleViewer.php CHANGED
@@ -124,7 +124,7 @@ class ModuleViewer {
124
  return $content;
125
  }
126
 
127
- public function viewModuleData($module_id, $post_id = null, $params = array())
128
  {
129
  if (!$post_id)
130
  {
@@ -224,10 +224,10 @@ class ModuleViewer {
224
  else
225
  $btn_text = '';
226
 
227
- return $tpl_manager->render($template, array('items' => $data, 'title' => $title, 'keyword' => $keyword, 'post_id' => $post_id, 'module_id' => $module_id, 'cols' => $cols, 'disable_features' => $disable_features, 'btn_text' => $btn_text));
228
  }
229
 
230
- public function viewBlockData(array $module_ids, $post_id = null, $params = array())
231
  {
232
  if (!$post_id)
233
  {
@@ -324,7 +324,7 @@ class ModuleViewer {
324
  else
325
  $cols = 0;
326
 
327
- return $tpl_manager->render($params['template'], array('data' => $data, 'post_id' => $post_id, 'params' => $params, 'title' => $title, 'cols' => $cols, 'sort' => $params['sort'], 'order' => $params['order'], 'groups' => $params['groups'], 'btn_text' => $params['btn_text']));
328
  }
329
 
330
  private function spliceBlockData($data, $offset, $length)
124
  return $content;
125
  }
126
 
127
+ public function viewModuleData($module_id, $post_id = null, $params = array(), $content = '')
128
  {
129
  if (!$post_id)
130
  {
224
  else
225
  $btn_text = '';
226
 
227
+ return $tpl_manager->render($template, array('items' => $data, 'title' => $title, 'keyword' => $keyword, 'post_id' => $post_id, 'module_id' => $module_id, 'cols' => $cols, 'disable_features' => $disable_features, 'btn_text' => $btn_text, 'atts' => $params, 'content' => $content));
228
  }
229
 
230
+ public function viewBlockData(array $module_ids, $post_id = null, $params = array(), $content = '')
231
  {
232
  if (!$post_id)
233
  {
324
  else
325
  $cols = 0;
326
 
327
+ return $tpl_manager->render($params['template'], array('data' => $data, 'post_id' => $post_id, 'params' => $params, 'title' => $title, 'cols' => $cols, 'sort' => $params['sort'], 'order' => $params['order'], 'groups' => $params['groups'], 'btn_text' => $params['btn_text'], 'atts' => $params, 'content' => $content));
328
  }
329
 
330
  private function spliceBlockData($data, $offset, $length)
application/Plugin.php CHANGED
@@ -13,17 +13,23 @@ use ContentEgg\application\components\ExternalFeaturedImage;
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
  * @link https://www.keywordrush.com
16
- * @copyright Copyright &copy; 2020 keywordrush.com
17
  */
18
  class Plugin {
19
 
20
- const version = '5.1.0';
21
- const db_version = 51;
22
  const wp_requires = '4.6.1';
23
  const slug = 'content-egg';
 
 
24
  const api_base = 'https://www.keywordrush.com/api/v1';
25
  const api_base2 = '';
26
  const product_id = 302;
 
 
 
 
27
 
28
  private static $instance = null;
29
  private static $is_pro = null;
@@ -66,32 +72,49 @@ class Plugin {
66
 
67
  public function registerScripts()
68
  {
69
- \wp_register_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.min.css');
70
  \wp_register_script('bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/js/bootstrap.min.js', array('jquery'), null, false);
71
  \wp_register_script('bootstrap-tab', \ContentEgg\PLUGIN_RES . '/bootstrap/js/tab.js', array('jquery'), null, false);
 
 
72
  \wp_register_style('egg-products', \ContentEgg\PLUGIN_RES . '/css/products.css', array(), '' . Plugin::version());
73
  \wp_register_script('raphaeljs', \ContentEgg\PLUGIN_RES . '/js/morrisjs/raphael.min.js', array('jquery'));
74
  \wp_register_script('morrisjs', \ContentEgg\PLUGIN_RES . '/js/morrisjs/morris.min.js', array('raphaeljs'));
75
  \wp_register_style('morrisjs', \ContentEgg\PLUGIN_RES . '/js/morrisjs/morris.min.css');
76
  }
77
 
78
- static public function version()
79
  {
80
  return self::version;
81
  }
82
 
83
- static public function slug()
 
 
 
 
 
84
  {
85
  return self::slug;
86
  }
87
 
 
 
 
 
 
 
 
 
 
 
88
  public static function getApiBase()
89
  {
90
  return self::api_base;
91
  }
92
 
93
  public static function isFree()
94
- {
95
  return !self::isPro();
96
  }
97
 
@@ -111,7 +134,9 @@ class Plugin {
111
  {
112
  if (self::$is_envato === null)
113
  {
114
- if (class_exists("\\ContentEgg\\application\\admin\\EnvatoConfig", true) || \get_option(Plugin::slug . '_env_install'))
 
 
115
  self::$is_envato = true;
116
  else
117
  self::$is_envato = false;
@@ -145,7 +170,7 @@ class Plugin {
145
  {
146
  $response = \wp_remote_post($api_url, $params);
147
  if (\is_wp_error($response))
148
- continue; // try alternative api uri
149
 
150
  $response_code = (int) \wp_remote_retrieve_response_code($response);
151
  if ($response_code == 200)
@@ -185,7 +210,7 @@ class Plugin {
185
 
186
  public static function pluginSiteUrl()
187
  {
188
- return self::getPluginDomain() . 'contentegg';
189
  }
190
 
191
  public static function pluginDocsUrl()
@@ -195,7 +220,7 @@ class Plugin {
195
 
196
  public function registerAmpStyles()
197
  {
198
- echo '.egg-container table td{padding:0} .egg-container .btn,.egg-container .cegg-price{white-space:nowrap;font-weight:700}.cegg-couponcode,.cegg-gridbox a{text-decoration:none}.egg-container .cegg-gridbox{box-shadow:0 8px 16px -6px #eee;border:1px solid #ddd;margin-bottom:25px;padding:20px}.egg-container .egg-listcontainer .row-products>div{margin-bottom:12px}.egg-container .btn{display:inline-block;padding:7px 14px;margin-bottom:0;font-size:14px;line-height:1.42857143;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.egg-container .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;text-decoration:none}.egg-container .panel-default{border:1px solid #ddd;padding:20px}.cegg-price-alert-wrap,.cegg-price-tracker-item div[id$=chart]{display:none}.cegg-price-tracker-panel .btn{margin-bottom:6px}.egg-container .cegg-no-top-margin{margin-top:0}.egg-container .cegg-mb5{margin-bottom:5px}.egg-container .cegg-mb10{margin-bottom:10px}.egg-container .cegg-mb15{margin-bottom:15px}.egg-container .cegg-mb20{margin-bottom:20px}.egg-container .cegg-mb25{margin-bottom:25px}.egg-container .cegg-mb30{margin-bottom:30px}.egg-container .cegg-mb35{margin-bottom:35px}.egg-container .cegg-lineh-20{line-height:20px}.egg-container .cegg-mr10{margin-right:10px}.egg-container .cegg-mr5{margin-right:5px}.egg-container .btn.cegg-btn-big{padding:13px 60px;line-height:1;font-size:20px;font-weight:700}.cegg-couponcode{text-align:center;background:#efffda;padding:8px;display:block;border:2px dashed #5cb85c;margin-bottom:12px}.cegg-bordered-box{border:2px solid #ededed;padding:25px}.cegg-price-tracker-item .cegg-price{font-size:22px;font-weight:700}.egg-list-coupons .btn{font-size:16px;font-weight:700;display:block}.cegg-listlogo-title{line-height:18px;font-size:15px}.cegg-list-withlogos .cegg-price,.egg-listcontainer .cegg-price{font-weight:700;font-size:20px;color:#5aaf0b}.egg-container .cegg-list-withlogos .btn{font-weight:700;font-size:15px;padding:8px 16px}.cegg-price-row strike{opacity:.42;font-size:90%}.cegg-list-logo-title{font-weight:700;font-size:17px}.egg-container .cegg-btn-grid .btn{display:block;margin-bottom:10px}#cegg_market .cegg-image-container img{max-height:350px}.cegg-review-block{padding:20px;border:1px solid #eee}.cegg-line-hr{clear:both;border-top:1px solid #eee;height:1px}.amp-wp-article-content .cegg-btn-row amp-img,.amp-wp-article-content .cegg-desc-cell amp-img,.amp-wp-article-content .cegg-price-tracker-panel .cegg-mb5 amp-img,.amp-wp-article-content .producttitle amp-img{display:inline-block;margin:0 4px 0 0;vertical-align:middle}.egg-container .cegg-promotion{top:25px;left:0;position:absolute;z-index:10}.egg-container .cegg-discount{background-color:#eb5e58;border-radius:0 4px 4px 0;color:#fff;display:inline-block;font-size:16px;padding:3px 5px}.cegg-thumb{position:relative}';
199
  }
200
 
201
  }
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
  * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
  */
18
  class Plugin {
19
 
20
+ const version = '5.2.0';
21
+ const db_version = 53;
22
  const wp_requires = '4.6.1';
23
  const slug = 'content-egg';
24
+ const short_slug = 'cegg';
25
+ const name = 'Content Egg';
26
  const api_base = 'https://www.keywordrush.com/api/v1';
27
  const api_base2 = '';
28
  const product_id = 302;
29
+ const website = 'https://www.keywordrush.com';
30
+ const supportUri = 'https://www.keywordrush.com/contact';
31
+ const panelUri = 'https://www.keywordrush.com/panel';
32
+
33
 
34
  private static $instance = null;
35
  private static $is_pro = null;
72
 
73
  public function registerScripts()
74
  {
75
+ \wp_register_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.min.css', array(), '' . Plugin::version());
76
  \wp_register_script('bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/js/bootstrap.min.js', array('jquery'), null, false);
77
  \wp_register_script('bootstrap-tab', \ContentEgg\PLUGIN_RES . '/bootstrap/js/tab.js', array('jquery'), null, false);
78
+ \wp_register_script('bootstrap-tooltip', \ContentEgg\PLUGIN_RES . '/bootstrap/js/tooltip.js', array('jquery'), null, false);
79
+ \wp_register_script('bootstrap-popover', \ContentEgg\PLUGIN_RES . '/bootstrap/js/popover.js', array('bootstrap-tooltip'), null, false);
80
  \wp_register_style('egg-products', \ContentEgg\PLUGIN_RES . '/css/products.css', array(), '' . Plugin::version());
81
  \wp_register_script('raphaeljs', \ContentEgg\PLUGIN_RES . '/js/morrisjs/raphael.min.js', array('jquery'));
82
  \wp_register_script('morrisjs', \ContentEgg\PLUGIN_RES . '/js/morrisjs/morris.min.js', array('raphaeljs'));
83
  \wp_register_style('morrisjs', \ContentEgg\PLUGIN_RES . '/js/morrisjs/morris.min.css');
84
  }
85
 
86
+ public static function version()
87
  {
88
  return self::version;
89
  }
90
 
91
+ public static function slug()
92
+ {
93
+ return self::getSlug();
94
+ }
95
+
96
+ public static function getSlug()
97
  {
98
  return self::slug;
99
  }
100
 
101
+ public static function getShortSlug()
102
+ {
103
+ return self::short_slug;
104
+ }
105
+
106
+ public static function getName()
107
+ {
108
+ return self::name;
109
+ }
110
+
111
  public static function getApiBase()
112
  {
113
  return self::api_base;
114
  }
115
 
116
  public static function isFree()
117
+ {
118
  return !self::isPro();
119
  }
120
 
134
  {
135
  if (self::$is_envato === null)
136
  {
137
+ if (isset($_SERVER['KEYWORDRUSH_DEVELOPMENT']) && $_SERVER['KEYWORDRUSH_DEVELOPMENT'] == '16203273895503427')
138
+ self::$is_envato = false;
139
+ elseif (class_exists("\\ContentEgg\\application\\admin\\EnvatoConfig", true) || \get_option(Plugin::slug . '_env_install'))
140
  self::$is_envato = true;
141
  else
142
  self::$is_envato = false;
170
  {
171
  $response = \wp_remote_post($api_url, $params);
172
  if (\is_wp_error($response))
173
+ continue;
174
 
175
  $response_code = (int) \wp_remote_retrieve_response_code($response);
176
  if ($response_code == 200)
210
 
211
  public static function pluginSiteUrl()
212
  {
213
+ return self::getPluginDomain() . 'contentegg?utm_source=cegg&utm_medium=referral&utm_campaign=plugin';
214
  }
215
 
216
  public static function pluginDocsUrl()
220
 
221
  public function registerAmpStyles()
222
  {
223
+ echo '.egg-container table td{padding:0} .egg-container .btn,.egg-container .cegg-price{white-space:nowrap;font-weight:700}.cegg-couponcode,.cegg-gridbox a{text-decoration:none}.egg-container .cegg-gridbox{box-shadow:0 8px 16px -6px #eee;border:1px solid #ddd;margin-bottom:25px;padding:20px}.egg-container .egg-listcontainer .row-products>div{margin-bottom:12px}.egg-container .btn{display:inline-block;padding:7px 14px;margin-bottom:0;font-size:14px;line-height:1.42857143;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.egg-container .btn-danger{color:#fff;background-color:#5cb85c;border-color:#4cae4c;text-decoration:none}.egg-container .panel-default{border:1px solid #ddd;padding:20px}.cegg-price-alert-wrap,.cegg-price-tracker-item div[id$=chart]{display:none}.cegg-price-tracker-panel .btn{margin-bottom:6px}.egg-container .cegg-no-top-margin{margin-top:0}.egg-container .cegg-mb5{margin-bottom:5px}.egg-container .cegg-mb10{margin-bottom:10px}.egg-container .cegg-mb15{margin-bottom:15px}.egg-container .cegg-mb20{margin-bottom:20px}.egg-container .cegg-mb25{margin-bottom:25px}.egg-container .cegg-mb30{margin-bottom:30px}.egg-container .cegg-mb35{margin-bottom:35px}.egg-container .cegg-lineh-20{line-height:20px}.egg-container .cegg-mr10{margin-right:10px}.egg-container .cegg-mr5{margin-right:5px}.egg-container .btn.cegg-btn-big{padding:13px 60px;line-height:1;font-size:20px;font-weight:700}.cegg-couponcode{text-align:center;background:#efffda;padding:8px;display:block;border:2px dashed #5cb85c;margin-bottom:12px}.cegg-bordered-box{border:2px solid #ededed;padding:25px}.cegg-price-tracker-item .cegg-price{font-size:22px;font-weight:700}.egg-list-coupons .btn{font-size:16px;font-weight:700;display:block}.cegg-listlogo-title{line-height:18px;font-size:15px}.cegg-list-withlogos .cegg-price,.egg-listcontainer .cegg-price{font-weight:700;font-size:20px;color:#5aaf0b}.egg-container .cegg-list-withlogos .btn{font-weight:700;font-size:15px;padding:8px 16px}.cegg-price-row strike{opacity:.42;font-size:90%}.cegg-list-logo-title{font-weight:700;font-size:17px}.egg-container .cegg-btn-grid .btn{display:block;margin-bottom:10px}#cegg_market .cegg-image-container img{max-height:350px}.cegg-review-block{padding:20px;border:1px solid #eee}.cegg-line-hr{clear:both;border-top:1px solid #eee;height:1px}.amp-wp-article-content .cegg-btn-row amp-img,.amp-wp-article-content .cegg-desc-cell amp-img,.amp-wp-article-content .cegg-price-tracker-panel .cegg-mb5 amp-img,.amp-wp-article-content .producttitle amp-img{display:inline-block;margin:0 4px 0 0;vertical-align:middle}.egg-container .cegg-promotion{top:25px;left:0;position:absolute;z-index:10}.egg-container .cegg-discount{background-color:#eb5e58;border-radius:0 4px 4px 0;color:#fff;display:inline-block;font-size:16px;padding:3px 5px}.cegg-thumb{position:relative} @media (max-width: 767px) {.egg-container .hidden-xs {display: none !important;}} .egg-container .visible-xs {display: none !important;} @media (max-width: 767px) {.egg-container .visible-xs {display: block !important;}}';
224
  }
225
 
226
  }
application/PriceAlert.php CHANGED
@@ -16,8 +16,8 @@ use ContentEgg\application\admin\GeneralConfig;
16
  * PriceAlert class file
17
  *
18
  * @author keywordrush.com <support@keywordrush.com>
19
- * @link http://www.keywordrush.com/
20
- * @copyright Copyright &copy; 2016 keywordrush.com
21
  */
22
  class PriceAlert {
23
 
@@ -56,7 +56,7 @@ class PriceAlert {
56
 
57
  public function registerJs()
58
  {
59
- \wp_enqueue_script('cegg-price-alert', \ContentEgg\PLUGIN_RES . '/js/price_alert.js', array('jquery'));
60
  \wp_localize_script('cegg-price-alert', 'ceggPriceAlert', array(
61
  'ajaxurl' => \admin_url('admin-ajax.php'),
62
  'nonce' => \wp_create_nonce('cegg-price-alert')
@@ -148,20 +148,37 @@ class PriceAlert {
148
  ), \get_permalink($alert['post_id']));
149
  $uri .= '#' . urlencode($alert['unique_id']);
150
 
151
- $body = '<p>' . __('Hello,', 'content-egg-tpl') . '<br></p>';
152
- $body .= '<p>' . sprintf(__('You have successfully set a price drop alert for %s.', 'content-egg-tpl'), $product_title) . '</p>';
153
- $body .= '<p>' . __('We will not send you any price alerts until you verified your email address.', 'content-egg-tpl');
154
- $body .= ' ' . sprintf(__('Please open this link to validate your email address:<br> <a href="%s">%s</a>', 'content-egg-tpl'), \esc_url($uri), \esc_url($uri)) . '</p>';
155
- $body .= '<p>' . sprintf(__('If you don\'t want to receive any price alerts from us in the future, <a href="%s">please click here</a>.', 'content-egg-tpl'), $unsubscribe_url) . '</p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
 
157
  $body .= $this->getEmailSignature();
158
-
159
  self::mail($email, $subject, $body);
160
  }
161
 
162
  private function getEmailSignature()
163
  {
164
- return "<pre class=\"moz-signature\" cols=\"72\">--\r\n" . sprintf(__('Thank You,', 'content-egg-tpl') . "\r\n" . __('The %s Team', 'content-egg-tpl') . "\r\n%s", \get_bloginfo('name'), get_home_url()) . "</pre>";
 
 
 
165
  }
166
 
167
  private function jsonResult($message, $status = 'success')
@@ -266,10 +283,10 @@ class PriceAlert {
266
  public function tickboxInlineScript()
267
  {
268
  echo '<script>
269
- jQuery(window).load(function()
270
  {
271
- jQuery("body").append("<div style=\"display:none;\" id=\"cegg-price-alert-tickbox\"><p>' . \esc_js($this->tickbox_message) . '<div style=\"text-align:center; padding-top: 30px;padding-right: 20px;\"><input value=\"' . esc_js(__(' Ok ', 'content-egg-tpl')) . '\" type=\"button\" onclick=\"javascript:tb_remove()\"></div></p></div>");
272
- tb_show("' . esc_js($this->tickbox_subject) . '", "#TB_inline?height=200&amp;width=300&amp;inlineId=cegg-price-alert-tickbox", false);
273
  });</script>';
274
  }
275
 
@@ -316,23 +333,25 @@ class PriceAlert {
316
  if (!$previous_price || (float) $previous_price <= (float) $d['price']) //!!!!!
317
  continue;
318
 
319
- // Subscribers exist?
320
- $params = array(
321
- 'where' => array('unique_id=%s AND module_id=%s AND status=%d AND price >= %f', array($d['unique_id'], $module_id, PriceAlertModel::STATUS_ACTIVE, $d['price'])),
322
- );
323
- $subscribers = PriceAlertModel::model()->findAll($params);
324
- if (!$subscribers)
 
325
  continue;
326
 
327
- $total += count($total);
 
 
 
328
  $this->sendAlertEmails($subscribers, $d, $post_id);
329
  }
330
 
331
  // clean up & optimize
332
  if ($total && rand(1, 5) == 5)
333
- {
334
  PriceAlertModel::model()->cleanOld(PriceAlertModel::CLEAN_DELETED_DAYS);
335
- }
336
  }
337
 
338
  private function sendAlertEmails($alerts, $product, $post_id)
@@ -356,20 +375,39 @@ class PriceAlert {
356
  $saved_amount = TemplateHelper::formatPriceCurrency($saved_amount, $product['currencyCode']);
357
  $saved_percentage = round(100 - (100 * $product['price']) / $alert['start_price'], 2);
358
 
359
- $body = '<p>' . __('Good news!', 'content-egg-tpl') . '<br></p>';
360
- $body .= '<p>' . __('The price target you set for the item has been reached.', 'content-egg-tpl');
361
- $body .= '<p>' . sprintf(__('<a href="%s">Save %s (%s%%) on %s</a>', 'content-egg-tpl'), $post_url, $saved_amount, $saved_percentage, $product_title);
362
- $body .= '<ul>';
363
- $body .= '<li>' . sprintf(__('Desired Price: %s', 'content-egg-tpl'), $desired_price) . '</li>';
364
- $body .= '<li>' . sprintf(__('Current Price: <strong>%s</strong>', 'content-egg-tpl'), $current_price)
365
- . ' (' . __('as of', 'content-egg-tpl') . ' ' . TemplateHelper::getLastUpdateFormatted($alert['module_id'], $post_id) . ')</li>';
366
- $body .= '<li>' . sprintf(__('Price dropped from %s to %s', 'content-egg-tpl'), $start_price, $current_price) . '</li>';
367
- $body .= '</ul><br>';
368
- $body .= sprintf(__('<a href="%s">More info...</a>', 'content-egg-tpl'), $post_url);
369
- $body .= '</p><br>';
370
-
371
- $body .= '<p>' . sprintf(__('This present alert has now expired. You may <a href="%s">create a new alert</a> for this item.', 'content-egg-tpl'), $post_url);
372
- $body .= '<br>' . sprintf(__('If you don\'t want to receive any price alerts from us in the future, <a href="%s">please click here</a>.', 'content-egg-tpl'), $unsubscribe_url) . '</p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  $body .= $this->getEmailSignature();
374
 
375
  // send alert email
@@ -389,7 +427,6 @@ class PriceAlert {
389
 
390
  if (!GeneralConfig::getInstance()->option('price_alert_enabled'))
391
  return false;
392
- //get_option( 'wp_page_for_privacy_policy' )
393
 
394
  if ($unique_id && $module_id)
395
  {
@@ -399,4 +436,9 @@ class PriceAlert {
399
  return true;
400
  }
401
 
 
 
 
 
 
402
  }
16
  * PriceAlert class file
17
  *
18
  * @author keywordrush.com <support@keywordrush.com>
19
+ * @link https://www.keywordrush.com
20
+ * @copyright Copyright &copy; 2021 keywordrush.com
21
  */
22
  class PriceAlert {
23
 
56
 
57
  public function registerJs()
58
  {
59
+ \wp_enqueue_script('cegg-price-alert', \ContentEgg\PLUGIN_RES . '/js/price_alert.js', array('jquery'), Plugin::version());
60
  \wp_localize_script('cegg-price-alert', 'ceggPriceAlert', array(
61
  'ajaxurl' => \admin_url('admin-ajax.php'),
62
  'nonce' => \wp_create_nonce('cegg-price-alert')
148
  ), \get_permalink($alert['post_id']));
149
  $uri .= '#' . urlencode($alert['unique_id']);
150
 
151
+ if ($template = GeneralConfig::getInstance()->option('email_template_activation'))
152
+ {
153
+ $tags = array(
154
+ '%POST_ID%' => $alert['post_id'],
155
+ '%POST_URL%' => \get_permalink($alert['post_id']),
156
+ '%POST_TITLE%' => \get_the_title($alert['post_id']),
157
+ '%PRODUCT_TITLE%' => $product_title,
158
+ '%VALIDATE_URL%' => \esc_url($uri),
159
+ '%UNSUBSCRIBE_URL%' => $unsubscribe_url,
160
+ );
161
+ $body = self::buildTemplate($template, $tags);
162
+ } else
163
+ {
164
+ $body = '<p>' . __('Hello,', 'content-egg-tpl') . '<br></p>';
165
+ $body .= '<p>' . sprintf(__('You have successfully set a price drop alert for %s.', 'content-egg-tpl'), $product_title) . '</p>';
166
+ $body .= '<p>' . __('We will not send you any price alerts until you verified your email address.', 'content-egg-tpl');
167
+ $body .= ' ' . sprintf(__('Please open this link to validate your email address:<br> <a href="%s">%s</a>', 'content-egg-tpl'), \esc_url($uri), \esc_url($uri)) . '</p>';
168
+ $body .= '<p>' . sprintf(__('If you don\'t want to receive any price alerts from us in the future, <a href="%s">please click here</a>.', 'content-egg-tpl'), $unsubscribe_url) . '</p>';
169
+ }
170
 
171
  $body .= $this->getEmailSignature();
172
+
173
  self::mail($email, $subject, $body);
174
  }
175
 
176
  private function getEmailSignature()
177
  {
178
+ if ($signature = GeneralConfig::getInstance()->option('email_signature'))
179
+ return $signature;
180
+ else
181
+ return "<pre class=\"moz-signature\" cols=\"72\">--\r\n" . sprintf(__('Thank You,', 'content-egg-tpl') . "\r\n" . __('The %s Team', 'content-egg-tpl') . "\r\n%s", \get_bloginfo('name'), \get_home_url()) . "</pre>";
182
  }
183
 
184
  private function jsonResult($message, $status = 'success')
283
  public function tickboxInlineScript()
284
  {
285
  echo '<script>
286
+ jQuery(window).on("load", function()
287
  {
288
+ jQuery("body").append("<div style=\"display:none;\" id=\"cegg-price-alert-tickbox\"><p>' . \esc_js($this->tickbox_message) . '<div style=\"text-align:center; padding-top: 30px;padding-right: 20px;\"><input value=\"' . \esc_js(__(' Ok ', 'content-egg-tpl')) . '\" type=\"button\" onclick=\"javascript:tb_remove()\"></div></p></div>");
289
+ tb_show("' . \esc_js($this->tickbox_subject) . '", "/?TB_inline&amp;height=200&amp;width=300&amp;inlineId=cegg-price-alert-tickbox", false);
290
  });</script>';
291
  }
292
 
333
  if (!$previous_price || (float) $previous_price <= (float) $d['price']) //!!!!!
334
  continue;
335
 
336
+ $price_alert_mode = GeneralConfig::getInstance()->option('price_alert_mode');
337
+ if ($price_alert_mode == 'post')
338
+ $where = array('post_id=%s AND status=%d AND price >= %f', array($post_id, PriceAlertModel::STATUS_ACTIVE, $d['price']));
339
+ else
340
+ $where = array('unique_id=%s AND module_id=%s AND status=%d AND price >= %f', array($d['unique_id'], $module_id, PriceAlertModel::STATUS_ACTIVE, $d['price']));
341
+
342
+ if (!$subscribers = PriceAlertModel::model()->findAll(array('where' => $where)))
343
  continue;
344
 
345
+ // remove dublicates by email column
346
+ $subscribers = array_reverse(array_values(array_column(array_reverse($subscribers), null, 'email')));
347
+
348
+ $total += count($subscribers);
349
  $this->sendAlertEmails($subscribers, $d, $post_id);
350
  }
351
 
352
  // clean up & optimize
353
  if ($total && rand(1, 5) == 5)
 
354
  PriceAlertModel::model()->cleanOld(PriceAlertModel::CLEAN_DELETED_DAYS);
 
355
  }
356
 
357
  private function sendAlertEmails($alerts, $product, $post_id)
375
  $saved_amount = TemplateHelper::formatPriceCurrency($saved_amount, $product['currencyCode']);
376
  $saved_percentage = round(100 - (100 * $product['price']) / $alert['start_price'], 2);
377
 
378
+ if ($template = GeneralConfig::getInstance()->option('email_template_alert'))
379
+ {
380
+ $tags = array(
381
+ '%POST_ID%' => $post_id,
382
+ '%POST_URL%' => $post_url,
383
+ '%POST_TITLE%' => \get_the_title($post_id),
384
+ '%PRODUCT_TITLE%' => $product_title,
385
+ '%SAVED_AMOUNT%' => $saved_amount,
386
+ '%SAVED_PERCENTAGE%' => $saved_percentage,
387
+ '%DESIRED_PRICE%' => $desired_price,
388
+ '%CURRENT_PRICE%' => $current_price,
389
+ '%START_PRICE%' => $start_price,
390
+ '%UPDATE_DATE%' => TemplateHelper::getLastUpdateFormatted($alert['module_id'], $post_id),
391
+ '%UNSUBSCRIBE_URL%' => $unsubscribe_url,
392
+ );
393
+ $body = self::buildTemplate($template, $tags);
394
+ } else
395
+ {
396
+ $body = '<p>' . __('Good news!', 'content-egg-tpl') . '<br></p>';
397
+ $body .= '<p>' . __('The price target you set for the item has been reached.', 'content-egg-tpl');
398
+ $body .= '<p>' . sprintf(__('<a href="%s">Save %s (%s%%) on %s</a>', 'content-egg-tpl'), $post_url, $saved_amount, $saved_percentage, $product_title);
399
+ $body .= '<ul>';
400
+ $body .= '<li>' . sprintf(__('Desired Price: %s', 'content-egg-tpl'), $desired_price) . '</li>';
401
+ $body .= '<li>' . sprintf(__('Current Price: <strong>%s</strong>', 'content-egg-tpl'), $current_price)
402
+ . ' (' . __('as of', 'content-egg-tpl') . ' ' . TemplateHelper::getLastUpdateFormatted($alert['module_id'], $post_id) . ')</li>';
403
+ $body .= '<li>' . sprintf(__('Price dropped from %s to %s', 'content-egg-tpl'), $start_price, $current_price) . '</li>';
404
+ $body .= '</ul><br>';
405
+ $body .= sprintf(__('<a href="%s">More info...</a>', 'content-egg-tpl'), $post_url);
406
+ $body .= '</p><br>';
407
+
408
+ $body .= '<p>' . sprintf(__('This present alert has now expired. You may <a href="%s">create a new alert</a> for this item.', 'content-egg-tpl'), $post_url);
409
+ $body .= '<br>' . sprintf(__('If you don\'t want to receive any price alerts from us in the future, <a href="%s">please click here</a>.', 'content-egg-tpl'), $unsubscribe_url) . '</p>';
410
+ }
411
  $body .= $this->getEmailSignature();
412
 
413
  // send alert email
427
 
428
  if (!GeneralConfig::getInstance()->option('price_alert_enabled'))
429
  return false;
 
430
 
431
  if ($unique_id && $module_id)
432
  {
436
  return true;
437
  }
438
 
439
+ public static function buildTemplate($template, array $tags)
440
+ {
441
+ return str_ireplace(array_keys($tags), array_values($tags), $template);
442
+ }
443
+
444
  }
application/ProductSearch.php CHANGED
@@ -10,14 +10,14 @@ use ContentEgg\application\components\ModuleManager;
10
  use ContentEgg\application\helpers\TextHelper;
11
  use ContentEgg\application\ModuleViewer;
12
  use ContentEgg\application\components\ContentManager;
13
- use ContentEgg\application\helpers\InputHelper;
14
 
15
  /**
16
  * ProductSearch class file
17
  *
18
  * @author keywordrush.com <support@keywordrush.com>
19
- * @link http://www.keywordrush.com/
20
- * @copyright Copyright &copy; 2017 keywordrush.com
21
  */
22
  class ProductSearch extends VirtualPage {
23
 
@@ -71,7 +71,7 @@ class ProductSearch extends VirtualPage {
71
  if ($total)
72
  return GeneralConfig::getInstance()->option('search_page_tpl');
73
  else
74
- return __('Sorry. No products found.', 'content-egg-tpl');
75
  }
76
 
77
  public function getTemplate()
@@ -116,7 +116,7 @@ class ProductSearch extends VirtualPage {
116
 
117
  public function getTitle()
118
  {
119
- return sprintf(__('Search Results for "%s"', 'content-egg-tpl'), $this->keyword);
120
  }
121
 
122
  }
10
  use ContentEgg\application\helpers\TextHelper;
11
  use ContentEgg\application\ModuleViewer;
12
  use ContentEgg\application\components\ContentManager;
13
+ use ContentEgg\application\Translator;
14
 
15
  /**
16
  * ProductSearch class file
17
  *
18
  * @author keywordrush.com <support@keywordrush.com>
19
+ * @link https://www.keywordrush.com
20
+ * @copyright Copyright &copy; 2021 keywordrush.com
21
  */
22
  class ProductSearch extends VirtualPage {
23
 
71
  if ($total)
72
  return GeneralConfig::getInstance()->option('search_page_tpl');
73
  else
74
+ return Translator::translate('Sorry. No products found.');
75
  }
76
 
77
  public function getTemplate()
116
 
117
  public function getTitle()
118
  {
119
+ return sprintf(Translator::translate('Search Results for "%s"'), $this->keyword);
120
  }
121
 
122
  }
application/Translator.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\admin\GeneralConfig;
8
+
9
+ /**
10
+ * Translator class file
11
+ *
12
+ * @author keywordrush.com <support@keywordrush.com>
13
+ * @link https://www.keywordrush.com
14
+ * @copyright Copyright &copy; 2021 keywordrush.com
15
+ */
16
+ class Translator {
17
+
18
+ private static $pairs = array();
19
+
20
+ public static function __($str)
21
+ {
22
+ return self::translate($str);
23
+ }
24
+
25
+ public static function translate($str)
26
+ {
27
+ $texts = GeneralConfig::getInstance()->option('frontend_texts');
28
+ if (!empty($texts[$str]))
29
+ return $texts[$str];
30
+ else
31
+ return __($str, 'content-egg-tpl');
32
+ }
33
+ }
application/WooIntegrator.php CHANGED
@@ -12,13 +12,14 @@ use ContentEgg\application\admin\GeneralConfig;
12
  use ContentEgg\application\components\ModuleManager;
13
  use ContentEgg\application\helpers\TemplateHelper;
14
  use ContentEgg\application\components\ContentProduct;
 
15
 
16
  /**
17
  * WooIntegrator class file
18
  *
19
  * @author keywordrush.com <support@keywordrush.com>
20
  * @link https://www.keywordrush.com
21
- * @copyright Copyright &copy; 2020 keywordrush.com
22
  */
23
  class WooIntegrator {
24
 
@@ -122,6 +123,8 @@ class WooIntegrator {
122
  {
123
  if (!$product = \wc_get_product($post_id))
124
  return false;
 
 
125
 
126
  // set price
127
  if (!empty($item['price']))
@@ -180,7 +183,7 @@ class WooIntegrator {
180
  $product->set_stock_status('instock');
181
  }
182
 
183
- if ($item['description'] && !\apply_filters('cegg_disable_description_sync', false))
184
  {
185
  if (\apply_filters('cegg_sync_full_description', false))
186
  $product->set_description($item['description']);
@@ -538,7 +541,7 @@ class WooIntegrator {
538
 
539
  $date = TemplateHelper::dateFormatFromGmt($item['last_update'], true);
540
 
541
- echo '<span class="price_updated">' . sprintf(__('Last updated on %s', 'content-egg-tpl'), $date) . '</span>';
542
  }
543
  }
544
 
@@ -557,7 +560,7 @@ class WooIntegrator {
557
  if (empty($item['extra']['pricePerUnitDisplay']))
558
  return;
559
 
560
- echo '<div class="cegg_price_per_unit">' . sprintf(__('Price per unit: %s', 'content-egg-tpl'), $item['extra']['pricePerUnitDisplay']) . '</div>';
561
  }
562
  }
563
 
12
  use ContentEgg\application\components\ModuleManager;
13
  use ContentEgg\application\helpers\TemplateHelper;
14
  use ContentEgg\application\components\ContentProduct;
15
+ use ContentEgg\application\Translator;
16
 
17
  /**
18
  * WooIntegrator class file
19
  *
20
  * @author keywordrush.com <support@keywordrush.com>
21
  * @link https://www.keywordrush.com
22
+ * @copyright Copyright &copy; 2021 keywordrush.com
23
  */
24
  class WooIntegrator {
25
 
123
  {
124
  if (!$product = \wc_get_product($post_id))
125
  return false;
126
+
127
+ $item = \apply_filters('cegg_before_woo_sync', $item, $module_id, $post_id);
128
 
129
  // set price
130
  if (!empty($item['price']))
183
  $product->set_stock_status('instock');
184
  }
185
 
186
+ if ($item['description'] && !$product->get_description() && !\apply_filters('cegg_disable_description_sync', false))
187
  {
188
  if (\apply_filters('cegg_sync_full_description', false))
189
  $product->set_description($item['description']);
541
 
542
  $date = TemplateHelper::dateFormatFromGmt($item['last_update'], true);
543
 
544
+ echo '<span class="price_updated">' . sprintf(Translator::__('Last updated on %s'), $date) . '</span>';
545
  }
546
  }
547
 
560
  if (empty($item['extra']['pricePerUnitDisplay']))
561
  return;
562
 
563
+ echo '<div class="cegg_price_per_unit">' . sprintf(Translator::__('Price per unit: %s'), $item['extra']['pricePerUnitDisplay']) . '</div>';
564
  }
565
  }
566
 
application/admin/AdminNotice.php CHANGED
@@ -27,7 +27,7 @@ class AdminNotice {
27
  'autoblog_csv_file_error' => __('Error while handling file with keywords.', 'content-egg'),
28
  'autoblog_batch_created' => __('Tasks for autoblogging are saved.', 'content-egg') . ' %%ID%%.',
29
  'license_reset_error' => __('License can\'t be deactivated. Write to support of plugin.', 'content-egg'),
30
- 'license_reset_success' => __('License was deactivated. You must deactivate and delete plugin from current domain to enable it on another one.', 'content-egg'),
31
  );
32
  }
33
 
27
  'autoblog_csv_file_error' => __('Error while handling file with keywords.', 'content-egg'),
28
  'autoblog_batch_created' => __('Tasks for autoblogging are saved.', 'content-egg') . ' %%ID%%.',
29
  'license_reset_error' => __('License can\'t be deactivated. Write to support of plugin.', 'content-egg'),
30
+ 'license_reset_success' => __('The license has been deactivated.', 'content-egg') . ' ' . __('You must deactivate and delete Content Egg from your current domain to use plugin on a new domain.', 'content-egg'),
31
  );
32
  }
33
 
application/admin/AutoblogController.php CHANGED
@@ -64,7 +64,7 @@ class AutoblogController {
64
 
65
  if ($GLOBALS['pagenow'] == 'admin.php' && !empty($_GET['page']) && $_GET['page'] == 'content-egg-autoblog-edit')
66
  {
67
- \wp_enqueue_script('contentegg-keywords', \ContentEgg\PLUGIN_RES . '/js/keywords.js', array('jquery'), '1asa' . Plugin::version());
68
  // tabs
69
  \wp_enqueue_script('jquery-ui-tabs');
70
  \wp_enqueue_script('jquery-ui-button');
64
 
65
  if ($GLOBALS['pagenow'] == 'admin.php' && !empty($_GET['page']) && $_GET['page'] == 'content-egg-autoblog-edit')
66
  {
67
+ \wp_enqueue_script('contentegg-keywords', \ContentEgg\PLUGIN_RES . '/js/keywords.js', array('jquery'), '' . Plugin::version());
68
  // tabs
69
  \wp_enqueue_script('jquery-ui-tabs');
70
  \wp_enqueue_script('jquery-ui-button');
application/admin/AutoblogTable.php CHANGED
@@ -64,9 +64,9 @@ class AutoblogTable extends MyListTable {
64
  function column_status($item)
65
  {
66
  if ($item['status'])
67
- return '<span style="color:green">' . __('Works', 'content-egg') . '</span>';
68
  else
69
- return '<span style="color:red">' . __('Stoped', 'content-egg') . '</span>';
70
  }
71
 
72
  function column_keywords($item)
64
  function column_status($item)
65
  {
66
  if ($item['status'])
67
+ return '<span style="color:green">' . __('Enabled', 'content-egg') . '</span>';
68
  else
69
+ return '<span style="color:red">' . __('Disabled', 'content-egg') . '</span>';
70
  }
71
 
72
  function column_keywords($item)
application/admin/EggMetabox.php CHANGED
@@ -60,7 +60,6 @@ class EggMetabox {
60
 
61
  $title .= '&nbsp;<a target="_blank" href="' . Plugin::pluginDocsUrl() . '">' . __('user guide', 'content-egg') . '</a>';
62
 
63
-
64
  \add_meta_box('content_meta_box', $title, array($this, 'renderMetabox'), $post_type, 'normal', 'high');
65
  $this->angularInit();
66
  }
@@ -177,7 +176,7 @@ class EggMetabox {
177
  private function angularInit()
178
  {
179
  // Justified gallery jquery plugin
180
- \wp_enqueue_script('justified-gallery', \ContentEgg\PLUGIN_RES . '/justified_gallery/jquery.justifiedGallery.min.js', array('jquery'), Plugin::version);
181
  \wp_enqueue_style('justified-gallery', \ContentEgg\PLUGIN_RES . '/justified_gallery/justifiedGallery.min.css');
182
 
183
  // Angular core
@@ -188,12 +187,13 @@ class EggMetabox {
188
  \wp_enqueue_script('angular-ui-bootstrap', \ContentEgg\PLUGIN_RES . '/app/vendor/angular-ui-bootstrap/ui-bootstrap-tpls-2.5.0.min.js', array('angularjs'), Plugin::version);
189
 
190
  \wp_enqueue_script('angular-sortable', \ContentEgg\PLUGIN_RES . '/app/vendor/angular-sortable.js', array('angularjs', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-sortable'), Plugin::version);
191
- \wp_register_script('contentegg-metabox-app', \ContentEgg\PLUGIN_RES . '/app/app.js', array('angularjs'), Plugin::version);
192
- \wp_enqueue_script('contentegg-metabox-service', \ContentEgg\PLUGIN_RES . '/app/ModuleService.js', array('contentegg-metabox-app'), Plugin::version);
193
 
194
  // Bootstrap
195
- \wp_enqueue_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.css');
196
- \wp_enqueue_script('bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/js/bootstrap.min.js', array('jquery'), Plugin::version);
 
197
 
198
  // ContentEgg application params
199
  $this->addAppParam('active_modules', ModuleManager::getInstance()->getModulesIdList(true));
60
 
61
  $title .= '&nbsp;<a target="_blank" href="' . Plugin::pluginDocsUrl() . '">' . __('user guide', 'content-egg') . '</a>';
62
 
 
63
  \add_meta_box('content_meta_box', $title, array($this, 'renderMetabox'), $post_type, 'normal', 'high');
64
  $this->angularInit();
65
  }
176
  private function angularInit()
177
  {
178
  // Justified gallery jquery plugin
179
+ \wp_enqueue_script('justified-gallery', \ContentEgg\PLUGIN_RES . '/justified_gallery/jquery.justifiedGallery.min.js', array('jquery'), Plugin::version());
180
  \wp_enqueue_style('justified-gallery', \ContentEgg\PLUGIN_RES . '/justified_gallery/justifiedGallery.min.css');
181
 
182
  // Angular core
187
  \wp_enqueue_script('angular-ui-bootstrap', \ContentEgg\PLUGIN_RES . '/app/vendor/angular-ui-bootstrap/ui-bootstrap-tpls-2.5.0.min.js', array('angularjs'), Plugin::version);
188
 
189
  \wp_enqueue_script('angular-sortable', \ContentEgg\PLUGIN_RES . '/app/vendor/angular-sortable.js', array('angularjs', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-sortable'), Plugin::version);
190
+ \wp_register_script('contentegg-metabox-app', \ContentEgg\PLUGIN_RES . '/app/app.js', array('angularjs'), Plugin::version());
191
+ \wp_enqueue_script('contentegg-metabox-service', \ContentEgg\PLUGIN_RES . '/app/ModuleService.js', array('contentegg-metabox-app'), Plugin::version());
192
 
193
  // Bootstrap
194
+ \wp_enqueue_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.min.css', array(), Plugin::version());
195
+ \wp_enqueue_style('egg-glyphicons', \ContentEgg\PLUGIN_RES . '/bootstrap/css/glyphicons.css', array(), Plugin::version());
196
+ \wp_enqueue_script('bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/js/bootstrap.min.js', array('jquery'), Plugin::version());
197
 
198
  // ContentEgg application params
199
  $this->addAppParam('active_modules', ModuleManager::getInstance()->getModulesIdList(true));
application/admin/GeneralConfig.php CHANGED
@@ -16,7 +16,7 @@ use ContentEgg\application\helpers\TextHelper;
16
  *
17
  * @author keywordrush.com <support@keywordrush.com>
18
  * @link https://www.keywordrush.com
19
- * @copyright Copyright &copy; 2020 keywordrush.com
20
  */
21
  class GeneralConfig extends Config {
22
 
@@ -37,6 +37,49 @@ class GeneralConfig extends Config {
37
  \add_submenu_page(Plugin::slug, __('Settings', 'content-egg') . ' &lsaquo; Content Egg', __('Settings', 'content-egg'), 'manage_options', $this->page_slug, array($this, 'settings_page'));
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  public static function langs()
41
  {
42
  return array(
@@ -114,7 +157,7 @@ class GeneralConfig extends Config {
114
  'description' => __('What post types do you want to use for Content Egg?', 'content-egg'),
115
  'checkbox_options' => $post_types,
116
  'callback' => array($this, 'render_checkbox_list'),
117
- 'default' => array('post', 'page'),
118
  'section' => __('General settings', 'content-egg'),
119
  ),
120
  'cashback_integration' => array(
@@ -142,7 +185,21 @@ class GeneralConfig extends Config {
142
  'default' => 'disabled',
143
  'section' => __('General settings', 'content-egg'),
144
  ),
145
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  'woocommerce_modules' => array(
147
  'title' => __('Modules for synchronization', 'content-egg'),
148
  'description' => __('Select modules for automatic synchronization with WooCommerce.', 'content-egg'),
@@ -165,8 +222,8 @@ class GeneralConfig extends Config {
165
  'section' => __('WooCommerce', 'content-egg'),
166
  ),
167
  'woocommerce_attributes_sync' => array(
168
- 'title' => __('Attributes synchronization', 'content-egg'),
169
- 'description' => __('Also synchronize attributes automatically for synchronized product.', 'content-egg'),
170
  'callback' => array($this, 'render_checkbox'),
171
  'default' => false,
172
  'section' => __('WooCommerce', 'content-egg'),
@@ -180,7 +237,7 @@ class GeneralConfig extends Config {
180
  'whitelist' => __('Whitelist attribute names', 'content-egg'),
181
  'blacklist' => __('Blacklist attribute names', 'content-egg'),
182
  ),
183
- 'default' => '',
184
  'section' => __('WooCommerce', 'content-egg'),
185
  ),
186
  'woocommerce_attributes_list' => array(
@@ -221,22 +278,6 @@ class GeneralConfig extends Config {
221
  'strip_tags',
222
  ),
223
  'section' => __('WooCommerce', 'content-egg'),
224
- ),
225
-
226
- 'rel_attribute' => array(
227
- 'title' => 'Rel attribute for affiliate links',
228
- 'description' => sprintf(__('<a target="_blank" href="%s">Qualify</a> your affiliate links to Google.', 'content-egg'), 'https://support.google.com/webmasters/answer/96569'),
229
- 'checkbox_options' => array(
230
- 'nofollow' => 'nofollow',
231
- 'sponsored' => 'sponsored',
232
- 'external' => 'external',
233
- 'noopener' => 'noopener',
234
- 'noreferrer' => 'noreferrer',
235
- 'ugc' => 'ugc',
236
- ),
237
- 'callback' => array($this, 'render_checkbox_list'),
238
- 'default' => array('nofollow'),
239
- 'section' => __('Templates', 'content-egg'),
240
  ),
241
  'filter_bots' => array(
242
  'title' => __('Filter bots', 'content-egg'),
@@ -246,9 +287,6 @@ class GeneralConfig extends Config {
246
  'default' => true,
247
  'section' => __('General settings', 'content-egg'),
248
  ),
249
-
250
-
251
-
252
  'price_history_days' => array(
253
  'title' => __('Price history', 'content-egg'),
254
  'description' => __('How long save price history. 0 - deactivate price history.', 'content-egg'),
@@ -300,6 +338,76 @@ class GeneralConfig extends Config {
300
  'default' => true,
301
  'section' => __('Price alerts', 'content-egg'),
302
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  'button_color' => array(
304
  'title' => __('Button color', 'content-egg'),
305
  'description' => __('Button color for default templates.', 'content-egg'),
@@ -308,7 +416,7 @@ class GeneralConfig extends Config {
308
  'validator' => array(
309
  'trim',
310
  ),
311
- 'section' => __('Templates', 'content-egg'),
312
  ),
313
  'price_color' => array(
314
  'title' => __('Price color', 'content-egg'),
@@ -318,8 +426,8 @@ class GeneralConfig extends Config {
318
  'validator' => array(
319
  'trim',
320
  ),
321
- 'section' => __('Templates', 'content-egg'),
322
- ),
323
  'btn_text_buy_now' => array(
324
  'title' => __('Buy now button text', 'content-egg'),
325
  'description' => sprintf(__('It will be used instead of "%s".', 'content-egg'), __('Buy Now', 'content-egg-tpl')) . ' ' . __('You can use tags: %MERCHANT%, %DOMAIN%, %PRICE%, %STOCK_STATUS%.', 'content-egg'),
@@ -328,7 +436,7 @@ class GeneralConfig extends Config {
328
  'validator' => array(
329
  'strip_tags',
330
  ),
331
- 'section' => __('Templates', 'content-egg'),
332
  ),
333
  'btn_text_coupon' => array(
334
  'title' => __('Coupon button text', 'content-egg'),
@@ -338,7 +446,7 @@ class GeneralConfig extends Config {
338
  'validator' => array(
339
  'strip_tags',
340
  ),
341
- 'section' => __('Templates', 'content-egg'),
342
  ),
343
  'show_stock_status' => array(
344
  'title' => __('Stock status', 'content-egg'),
@@ -350,9 +458,8 @@ class GeneralConfig extends Config {
350
  'show_instock' => __('Show InStock status only', 'content-egg'),
351
  ),
352
  'default' => 'show_status',
353
- 'section' => __('Templates', 'content-egg'),
354
- ),
355
-
356
  'redirect_prefix' => array(
357
  'title' => __('Redirect prefix', 'content-egg'),
358
  'description' => __('Custom prefix for local redirect links.', 'content-egg'),
@@ -366,7 +473,7 @@ class GeneralConfig extends Config {
366
  'message' => sprintf(__('The field "%s" can contain only Latin letters and digits.', 'content-egg'), __('Redirect prefix', 'content-egg')),
367
  ),
368
  ),
369
- 'section' => __('General settings', 'content-egg'),
370
  ),
371
  'outofstock_product' => array(
372
  'title' => __('Out of Stock products', 'content-egg'),
@@ -378,33 +485,7 @@ class GeneralConfig extends Config {
378
  'hide_product' => __('Hide product', 'content-egg'),
379
  ),
380
  'default' => '',
381
- 'section' => __('General settings', 'content-egg'),
382
- ),
383
- 'from_name' => array(
384
- 'title' => __('From Name', 'content-egg'),
385
- 'description' => __('This name will appear in the From Name column of emails sent from CE plugin.', 'content-egg'),
386
- 'callback' => array($this, 'render_input'),
387
- 'default' => '',
388
- 'validator' => array(
389
- 'trim',
390
- 'allow_empty',
391
- ),
392
- 'section' => __('Price alerts', 'content-egg'),
393
- ),
394
- 'from_email' => array(
395
- 'title' => __('From Email', 'content-egg'),
396
- 'description' => __('Customize the From Email address.', 'content-egg') . ' ' . __('To avoid your email being marked as spam, it is recommended your "from" match your website.', 'content-egg'),
397
- 'callback' => array($this, 'render_input'),
398
- 'default' => '',
399
- 'validator' => array(
400
- 'trim',
401
- 'allow_empty',
402
- array(
403
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'valid_email'),
404
- 'message' => sprintf(__('Field "%s" filled with wrong data.', 'content-egg'), 'Email'),
405
- ),
406
- ),
407
- 'section' => __('Price alerts', 'content-egg'),
408
  ),
409
  'search_modules' => array(
410
  'title' => __('Search modules', 'content-egg'),
@@ -425,10 +506,9 @@ class GeneralConfig extends Config {
425
  'default' => '',
426
  'section' => __('Frontend search', 'content-egg'),
427
  ),
428
-
429
  'logos' => array(
430
- 'title' => __('Merchant logos', 'external-importer'),
431
- 'description' => __('You can add your own custom merchant logos.', 'external-importer'),
432
  'callback' => array($this, 'render_logo_fields_block'),
433
  'validator' => array(
434
  array(
@@ -437,7 +517,41 @@ class GeneralConfig extends Config {
437
  ),
438
  ),
439
  'default' => array(),
440
- 'section' => __('Templates', 'content-egg'),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
441
  ),
442
  );
443
  }
@@ -464,7 +578,7 @@ class GeneralConfig extends Config {
464
  {
465
  if (self::$affiliate_modules === null)
466
  {
467
- self::$affiliate_modules = ModuleManager::getInstance()->getAffiliteModulesList(false);
468
  }
469
  return self::$affiliate_modules;
470
  }
@@ -477,10 +591,10 @@ class GeneralConfig extends Config {
477
 
478
  echo '<input name="' . \esc_attr($args['option_name']) . '['
479
  . \esc_attr($args['name']) . '][' . $i . '][name]" value="'
480
- . \esc_attr($name) . '" class="text" placeholder="' . \esc_attr(__('Domain name', 'external-importer')) . '" type="text"/>';
481
  echo '<input name="' . \esc_attr($args['option_name']) . '['
482
  . \esc_attr($args['name']) . '][' . $i . '][value]" value="'
483
- . \esc_attr($value) . '" class="regular-text ltr" placeholder="' . \esc_attr(__('Logo URL', 'external-importer')) . '" type="text"/>';
484
  }
485
 
486
  public function render_logo_fields_block($args)
@@ -528,4 +642,114 @@ class GeneralConfig extends Config {
528
  return $results;
529
  }
530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
  }
16
  *
17
  * @author keywordrush.com <support@keywordrush.com>
18
  * @link https://www.keywordrush.com
19
+ * @copyright Copyright &copy; 2021 keywordrush.com
20
  */
21
  class GeneralConfig extends Config {
22
 
37
  \add_submenu_page(Plugin::slug, __('Settings', 'content-egg') . ' &lsaquo; Content Egg', __('Settings', 'content-egg'), 'manage_options', $this->page_slug, array($this, 'settings_page'));
38
  }
39
 
40
+ private static function frontendTexts()
41
+ {
42
+ return array(
43
+ 'in stock' => __('in stock', 'content-egg-tpl'),
44
+ 'out of stock' => __('out of stock', 'content-egg-tpl'),
45
+ 'Last updated on %s' => __('Last updated on %s', 'content-egg-tpl'),
46
+ 'Last Amazon price update was: %s' => __('Last Amazon price update was: %s', 'content-egg-tpl'),
47
+ 'as of %s' => __('as of %s', 'content-egg-tpl'),
48
+ '%d new from %s' => __('%d new from %s', 'content-egg-tpl'),
49
+ '%d used from %s' => __('%d used from %s', 'content-egg-tpl'),
50
+ 'Free shipping' => __('Free shipping', 'content-egg-tpl'),
51
+ 'OFF' => __('OFF', 'content-egg-tpl'),
52
+ 'Plus %s Cash Back' => __('Plus %s Cash Back', 'content-egg-tpl'),
53
+ 'Price' => __('Price', 'content-egg-tpl'),
54
+ 'Features' => __('Features', 'content-egg-tpl'),
55
+ 'Specifications' => __('Specifications', 'content-egg-tpl'),
56
+ 'Statistics' => __('Statistics', 'content-egg-tpl'),
57
+ 'Current Price' => __('Current Price', 'content-egg-tpl'),
58
+ 'Highest Price' => __('Highest Price', 'content-egg-tpl'),
59
+ 'Lowest Price' => __('Lowest Price', 'content-egg-tpl'),
60
+ 'Since %s' => __('Since %s', 'content-egg-tpl'),
61
+ 'Last price changes' => __('Last price changes', 'content-egg-tpl'),
62
+ 'Start date: %s' => __('Start date: %s', 'content-egg-tpl'),
63
+ 'End date: %s' => __('End date: %s', 'content-egg-tpl'),
64
+ 'Set Alert for' => __('Set Alert for', 'content-egg-tpl'),
65
+ 'Price History for' => __('Price History for', 'content-egg-tpl'),
66
+ 'Create Your Free Price Drop Alert!' => __('Create Your Free Price Drop Alert!', 'content-egg-tpl'),
67
+ 'Wait For A Price Drop' => __('Wait For A Price Drop', 'content-egg-tpl'),
68
+ 'Your Email' => __('Your Email', 'content-egg-tpl'),
69
+ 'Desired Price' => __('Desired Price', 'content-egg-tpl'),
70
+ 'SET ALERT' => __('SET ALERT', 'content-egg-tpl'),
71
+ 'You will receive a notification when the price drops.' => __('You will receive a notification when the price drops.', 'content-egg-tpl'),
72
+ 'I agree to the %s.' => __('I agree to the %s.', 'content-egg-tpl'),
73
+ 'Privacy Policy' => __('Privacy Policy', 'content-egg-tpl'),
74
+ 'Sorry. No products found.' => __('Sorry. No products found.', 'content-egg-tpl'),
75
+ 'Search Results for "%s"' => __('Search Results for "%s"', 'content-egg-tpl'),
76
+ 'Price per unit: %s' => __('Price per unit: %s', 'content-egg-tpl'),
77
+ 'today' => __('today', 'content-egg-tpl'),
78
+ '%d day ago' => __('%d day ago', 'content-egg-tpl'),
79
+ '%d days ago' => __('%d days ago', 'content-egg-tpl'),
80
+ );
81
+ }
82
+
83
  public static function langs()
84
  {
85
  return array(
157
  'description' => __('What post types do you want to use for Content Egg?', 'content-egg'),
158
  'checkbox_options' => $post_types,
159
  'callback' => array($this, 'render_checkbox_list'),
160
+ 'default' => array('post', 'page', 'product'),
161
  'section' => __('General settings', 'content-egg'),
162
  ),
163
  'cashback_integration' => array(
185
  'default' => 'disabled',
186
  'section' => __('General settings', 'content-egg'),
187
  ),
188
+ 'rel_attribute' => array(
189
+ 'title' => 'Rel attribute for affiliate links',
190
+ 'description' => sprintf(__('<a target="_blank" href="%s">Qualify</a> your affiliate links to Google.', 'content-egg'), 'https://support.google.com/webmasters/answer/96569'),
191
+ 'checkbox_options' => array(
192
+ 'nofollow' => 'nofollow',
193
+ 'sponsored' => 'sponsored',
194
+ 'external' => 'external',
195
+ 'noopener' => 'noopener',
196
+ 'noreferrer' => 'noreferrer',
197
+ 'ugc' => 'ugc',
198
+ ),
199
+ 'callback' => array($this, 'render_checkbox_list'),
200
+ 'default' => array('nofollow'),
201
+ 'section' => __('Frontend', 'content-egg'),
202
+ ),
203
  'woocommerce_modules' => array(
204
  'title' => __('Modules for synchronization', 'content-egg'),
205
  'description' => __('Select modules for automatic synchronization with WooCommerce.', 'content-egg'),
222
  'section' => __('WooCommerce', 'content-egg'),
223
  ),
224
  'woocommerce_attributes_sync' => array(
225
+ 'title' => __('Import product attributes', 'content-egg'),
226
+ 'description' => __('Import attributes automatically for synchronized product.', 'content-egg'),
227
  'callback' => array($this, 'render_checkbox'),
228
  'default' => false,
229
  'section' => __('WooCommerce', 'content-egg'),
237
  'whitelist' => __('Whitelist attribute names', 'content-egg'),
238
  'blacklist' => __('Blacklist attribute names', 'content-egg'),
239
  ),
240
+ 'default' => 'whitelist',
241
  'section' => __('WooCommerce', 'content-egg'),
242
  ),
243
  'woocommerce_attributes_list' => array(
278
  'strip_tags',
279
  ),
280
  'section' => __('WooCommerce', 'content-egg'),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
  ),
282
  'filter_bots' => array(
283
  'title' => __('Filter bots', 'content-egg'),
287
  'default' => true,
288
  'section' => __('General settings', 'content-egg'),
289
  ),
 
 
 
290
  'price_history_days' => array(
291
  'title' => __('Price history', 'content-egg'),
292
  'description' => __('How long save price history. 0 - deactivate price history.', 'content-egg'),
338
  'default' => true,
339
  'section' => __('Price alerts', 'content-egg'),
340
  ),
341
+ 'price_alert_mode' => array(
342
+ 'title' => __('Price alert mode', 'content-egg'),
343
+ 'callback' => array($this, 'render_dropdown'),
344
+ 'dropdown_options' => array(
345
+ 'product' => __('Separate alerts for each product', 'content-egg'),
346
+ 'post' => __('General alert for all products in a post', 'content-egg'),
347
+ ),
348
+ 'default' => '',
349
+ 'section' => __('Price alerts', 'content-egg'),
350
+ ),
351
+ 'from_name' => array(
352
+ 'title' => __('From Name', 'content-egg'),
353
+ 'description' => __('This name will appear in the From Name column of emails sent from CE plugin.', 'content-egg'),
354
+ 'callback' => array($this, 'render_input'),
355
+ 'default' => '',
356
+ 'validator' => array(
357
+ 'trim',
358
+ 'allow_empty',
359
+ ),
360
+ 'section' => __('Price alerts', 'content-egg'),
361
+ ),
362
+ 'from_email' => array(
363
+ 'title' => __('From Email', 'content-egg'),
364
+ 'description' => __('Customize the From Email address.', 'content-egg') . ' ' . __('To avoid your email being marked as spam, it is recommended your "from" match your website.', 'content-egg'),
365
+ 'callback' => array($this, 'render_input'),
366
+ 'default' => '',
367
+ 'validator' => array(
368
+ 'trim',
369
+ 'allow_empty',
370
+ array(
371
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'valid_email'),
372
+ 'message' => sprintf(__('Field "%s" filled with wrong data.', 'content-egg'), 'Email'),
373
+ ),
374
+ ),
375
+ 'section' => __('Price alerts', 'content-egg'),
376
+ ),
377
+ 'email_template_activation' => array(
378
+ 'title' => __('Activation email template', 'content-egg'),
379
+ 'description' => sprintf(__('Use the following tags: %s.', 'content-egg'), '%POST_ID%, %POST_URL%, %POST_TITLE%, %PRODUCT_TITLE%, %VALIDATE_URL%, %UNSUBSCRIBE_URL%') .
380
+ '<br>' . sprintf(__('%s is required tag.', 'content-egg'), '%VALIDATE_URL%') . ' ' .
381
+ sprintf(__('Use like %s.', 'content-egg'), \esc_html('<a href="%VALIDATE_URL%">%VALIDATE_URL%</a>')),
382
+ 'callback' => array($this, 'render_textarea'),
383
+ 'default' => '',
384
+ 'section' => __('Price alerts', 'content-egg'),
385
+ 'validator' => array(
386
+ '\wp_kses_post',
387
+ 'trim',
388
+ ),
389
+ ),
390
+ 'email_template_alert' => array(
391
+ 'title' => __('Price alert email template', 'content-egg'),
392
+ 'description' => sprintf(__('Use the following tags: %s.', 'content-egg'), '%POST_ID%, %POST_URL%, %POST_TITLE%, %PRODUCT_TITLE%, %START_PRICE%, %DESIRED_PRICE%, %CURRENT_PRICE%, %SAVED_AMOUNT%, %SAVED_PERCENTAGE%, %UPDATE_DATE%, %UNSUBSCRIBE_URL%'),
393
+ 'callback' => array($this, 'render_textarea'),
394
+ 'default' => '',
395
+ 'section' => __('Price alerts', 'content-egg'),
396
+ 'validator' => array(
397
+ '\wp_kses_post',
398
+ 'trim',
399
+ ),
400
+ ),
401
+ 'email_signature' => array(
402
+ 'title' => __('Email signature', 'content-egg'),
403
+ 'callback' => array($this, 'render_textarea'),
404
+ 'default' => '',
405
+ 'section' => __('Price alerts', 'content-egg'),
406
+ 'validator' => array(
407
+ '\wp_kses_post',
408
+ 'trim',
409
+ ),
410
+ ),
411
  'button_color' => array(
412
  'title' => __('Button color', 'content-egg'),
413
  'description' => __('Button color for default templates.', 'content-egg'),
416
  'validator' => array(
417
  'trim',
418
  ),
419
+ 'section' => __('Frontend', 'content-egg'),
420
  ),
421
  'price_color' => array(
422
  'title' => __('Price color', 'content-egg'),
426
  'validator' => array(
427
  'trim',
428
  ),
429
+ 'section' => __('Frontend', 'content-egg'),
430
+ ),
431
  'btn_text_buy_now' => array(
432
  'title' => __('Buy now button text', 'content-egg'),
433
  'description' => sprintf(__('It will be used instead of "%s".', 'content-egg'), __('Buy Now', 'content-egg-tpl')) . ' ' . __('You can use tags: %MERCHANT%, %DOMAIN%, %PRICE%, %STOCK_STATUS%.', 'content-egg'),
436
  'validator' => array(
437
  'strip_tags',
438
  ),
439
+ 'section' => __('Frontend', 'content-egg'),
440
  ),
441
  'btn_text_coupon' => array(
442
  'title' => __('Coupon button text', 'content-egg'),
446
  'validator' => array(
447
  'strip_tags',
448
  ),
449
+ 'section' => __('Frontend', 'content-egg'),
450
  ),
451
  'show_stock_status' => array(
452
  'title' => __('Stock status', 'content-egg'),
458
  'show_instock' => __('Show InStock status only', 'content-egg'),
459
  ),
460
  'default' => 'show_status',
461
+ 'section' => __('Frontend', 'content-egg'),
462
+ ),
 
463
  'redirect_prefix' => array(
464
  'title' => __('Redirect prefix', 'content-egg'),
465
  'description' => __('Custom prefix for local redirect links.', 'content-egg'),
473
  'message' => sprintf(__('The field "%s" can contain only Latin letters and digits.', 'content-egg'), __('Redirect prefix', 'content-egg')),
474
  ),
475
  ),
476
+ 'section' => __('General settings', 'content-egg'),
477
  ),
478
  'outofstock_product' => array(
479
  'title' => __('Out of Stock products', 'content-egg'),
485
  'hide_product' => __('Hide product', 'content-egg'),
486
  ),
487
  'default' => '',
488
+ 'section' => __('General settings', 'content-egg'),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
  ),
490
  'search_modules' => array(
491
  'title' => __('Search modules', 'content-egg'),
506
  'default' => '',
507
  'section' => __('Frontend search', 'content-egg'),
508
  ),
 
509
  'logos' => array(
510
+ 'title' => __('Merchant logos', 'content-egg'),
511
+ 'description' => __('You can add your own custom merchant logos.', 'content-egg'),
512
  'callback' => array($this, 'render_logo_fields_block'),
513
  'validator' => array(
514
  array(
517
  ),
518
  ),
519
  'default' => array(),
520
+ 'section' => __('Frontend', 'content-egg'),
521
+ ),
522
+ 'disclaimer_text' => array(
523
+ 'title' => __('Amazon disclaimer', 'content-egg'),
524
+ 'callback' => array($this, 'render_textarea'),
525
+ 'default' => '',
526
+ 'validator' => array(
527
+ 'strip_tags',
528
+ ),
529
+ 'section' => __('Frontend', 'content-egg'),
530
+ ),
531
+ 'frontend_texts' => array(
532
+ 'title' => __('Frontend texts', 'content-egg'),
533
+ 'description' => '',
534
+ 'callback' => array($this, 'render_translation_block'),
535
+ 'section' => __('Translation', 'content-egg'),
536
+ 'validator' => array(
537
+ array(
538
+ 'call' => array($this, 'frontendTextsSanitize'),
539
+ 'type' => 'filter',
540
+ ),
541
+ ),
542
+ 'section' => __('Frontend', 'content-egg'),
543
+ ),
544
+ 'merchants' => array(
545
+ 'title' => __('Merchant settings', 'content-egg'),
546
+ 'callback' => array($this, 'render_merchants_block'),
547
+ 'validator' => array(
548
+ array(
549
+ 'call' => array($this, 'formatMerchantFields'),
550
+ 'type' => 'filter',
551
+ ),
552
+ ),
553
+ 'default' => array(),
554
+ 'section' => __('Merchants', 'content-egg'),
555
  ),
556
  );
557
  }
578
  {
579
  if (self::$affiliate_modules === null)
580
  {
581
+ self::$affiliate_modules = ModuleManager::getInstance()->getAffiliteModulesList(true);
582
  }
583
  return self::$affiliate_modules;
584
  }
591
 
592
  echo '<input name="' . \esc_attr($args['option_name']) . '['
593
  . \esc_attr($args['name']) . '][' . $i . '][name]" value="'
594
+ . \esc_attr($name) . '" class="text" placeholder="' . \esc_attr(__('Domain name', 'content-egg')) . '" type="text"/>';
595
  echo '<input name="' . \esc_attr($args['option_name']) . '['
596
  . \esc_attr($args['name']) . '][' . $i . '][value]" value="'
597
+ . \esc_attr($value) . '" class="regular-text ltr" placeholder="' . \esc_attr(__('Logo URL', 'content-egg')) . '" type="text"/>';
598
  }
599
 
600
  public function render_logo_fields_block($args)
642
  return $results;
643
  }
644
 
645
+ public function render_translation_row($args)
646
+ {
647
+ $field_name = $args['_field_name'];
648
+ $value = isset($args['value'][$field_name]) ? $args['value'][$field_name] : '';
649
+
650
+ echo '<input value="' . \esc_attr($field_name) . '" class="regular-text ltr" type="text" readonly />';
651
+ echo ' &#x203A; ';
652
+ echo '<input name="' . \esc_attr($args['option_name']) . '['
653
+ . \esc_attr($args['name']) . '][' . \esc_attr($field_name) . ']" value="'
654
+ . \esc_attr($value) . '" class="regular-text ltr" placeholder="' . \esc_attr(__('Translated string', 'content-egg')) . '" type="text"/>';
655
+ }
656
+
657
+ public function render_translation_block($args)
658
+ {
659
+ if (!$args['value'])
660
+ $args['value'] = array();
661
+
662
+ foreach (array_keys(self::frontendTexts()) as $str)
663
+ {
664
+ echo '<div style="padding-bottom: 5px;">';
665
+ $args['_field_name'] = $str;
666
+ $this->render_translation_row($args);
667
+ echo '</div>';
668
+ }
669
+ if ($args['description'])
670
+ echo '<p class="description">' . $args['description'] . '</p>';
671
+ }
672
+
673
+ public function frontendTextsSanitize($values)
674
+ {
675
+ foreach ($values as $k => $value)
676
+ {
677
+ $values[$k] = trim(\sanitize_text_field($value));
678
+ }
679
+
680
+ return $values;
681
+ }
682
+
683
+ public function render_merchant_line($args)
684
+ {
685
+ $i = isset($args['_field']) ? $args['_field'] : 0;
686
+ $name = isset($args['value'][$i]['name']) ? $args['value'][$i]['name'] : '';
687
+ $value = isset($args['value'][$i]['shop_info']) ? $args['value'][$i]['shop_info'] : '';
688
+
689
+ echo '<input style="margin-bottom: 5px;" name="' . \esc_attr($args['option_name']) . '['
690
+ . \esc_attr($args['name']) . '][' . $i . '][name]" value="'
691
+ . \esc_attr($name) . '" class="regular-text ltr" placeholder="' . \esc_attr(__('Domain name', 'content-egg')) . '" type="text"/>';
692
+
693
+ echo '<textarea rows="2" name="' . \esc_attr($args['option_name']) . '['
694
+ . \esc_attr($args['name']) . '][' . $i . '][shop_info]" value="'
695
+ . \esc_attr($value) . '" class="large-text code" placeholder="' . \esc_attr(__('Shop info', 'content-egg')) . '" type="text">' . \esc_html($value) . '</textarea>';
696
+ }
697
+
698
+ public function render_merchants_block($args)
699
+ {
700
+ if (is_array($args['value']))
701
+ $total = count($args['value']) + 3;
702
+ else
703
+ $total = 3;
704
+
705
+ for ($i = 0; $i < $total; $i++)
706
+ {
707
+ echo '<div style="padding-bottom: 20px;">';
708
+ $args['_field'] = $i;
709
+ $this->render_merchant_line($args);
710
+ echo '</div>';
711
+ }
712
+ if ($args['description'])
713
+ echo '<p class="description">' . $args['description'] . '</p>';
714
+ }
715
+
716
+ public function formatMerchantFields($values)
717
+ {
718
+ $results = array();
719
+ foreach ($values as $k => $value)
720
+ {
721
+ $name = strtolower(trim(\sanitize_text_field($value['name'])));
722
+ if ($host = TextHelper::getHostName($values[$k]['name']))
723
+ $name = $host;
724
+
725
+ if (!$name)
726
+ continue;
727
+
728
+ if (in_array($name, array_column($results, 'name')))
729
+ continue;
730
+
731
+ $shop_info = TextHelper::nl2br(trim(TextHelper::sanitizeHtml($value['shop_info'])));
732
+
733
+ $result = array('name' => $name, 'shop_info' => $shop_info);
734
+ $results[] = $result;
735
+ }
736
+
737
+ return $results;
738
+ }
739
+
740
+ public static function isShopInfoAvailable()
741
+ {
742
+ $merchants = GeneralConfig::getInstance()->option('merchants');
743
+ if (!$merchants)
744
+ return false;
745
+
746
+ foreach ($merchants as $merchant)
747
+ {
748
+ if ($merchant['shop_info'])
749
+ return true;
750
+ }
751
+
752
+ return false;
753
+ }
754
+
755
  }
application/admin/ModuleSettingsContoller.php CHANGED
@@ -29,7 +29,7 @@ class ModuleSettingsContoller {
29
 
30
  public function actionIndex()
31
  {
32
- \wp_enqueue_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.css');
33
  PluginAdmin::getInstance()->render('module_index', array('modules' => ModuleManager::getInstance()->getConfigurableModules()));
34
  }
35
 
29
 
30
  public function actionIndex()
31
  {
32
+ \wp_enqueue_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.min.css', array(), Plugin::version());
33
  PluginAdmin::getInstance()->render('module_index', array('modules' => ModuleManager::getInstance()->getConfigurableModules()));
34
  }
35
 
application/admin/PluginAdmin.php CHANGED
@@ -9,14 +9,16 @@ use ContentEgg\application\helpers\TextHelper;
9
  use ContentEgg\application\admin\GeneralConfig;
10
  use ContentEgg\application\components\ModuleManager;
11
  use ContentEgg\application\components\ModuleApi;
 
12
  use ContentEgg\application\components\FeaturedImage;
 
13
 
14
  /**
15
  * PluginAdmin class file
16
  *
17
  * @author keywordrush.com <support@keywordrush.com>
18
  * @link https://www.keywordrush.com
19
- * @copyright Copyright &copy; 2020 keywordrush.com
20
  */
21
  class PluginAdmin {
22
 
@@ -43,13 +45,17 @@ class PluginAdmin {
43
  {
44
  \add_filter('plugin_row_meta', array($this, 'add_plugin_row_meta'), 10, 2);
45
  }
 
 
 
 
 
46
  if (Plugin::isFree() || (Plugin::isPro() && Plugin::isActivated()) || Plugin::isEnvato())
47
  {
48
  GeneralConfig::getInstance()->adminInit();
49
  ModuleManager::getInstance()->adminInit();
50
  new ModuleSettingsContoller;
51
  new ProductController;
52
- AdminNotice::getInstance()->adminInit();
53
  new EggMetabox;
54
  new ModuleApi;
55
  new FeaturedImage;
@@ -58,15 +64,19 @@ class PluginAdmin {
58
  new ToolsController;
59
  new ImportExportController;
60
  AeIntegrationConfig::getInstance()->adminInit();
 
61
  }
 
62
  if (Plugin::isEnvato() && !Plugin::isActivated() && !\get_option(Plugin::slug . '_env_install'))
63
  EnvatoConfig::getInstance()->adminInit();
64
  elseif (Plugin::isPro())
65
  LicConfig::getInstance()->adminInit();
 
66
  if (Plugin::isPro() && Plugin::isActivated())
67
  {
68
  new \ContentEgg\application\Autoupdate(Plugin::version(), plugin_basename(\ContentEgg\PLUGIN_FILE), Plugin::getApiBase(), Plugin::slug);
69
  }
 
70
  }
71
 
72
  function admin_load_scripts()
@@ -84,8 +94,9 @@ class PluginAdmin {
84
  'are_you_shure' => __('Are you sure?', 'content-egg'),
85
  'sitelang' => GeneralConfig::getInstance()->option('lang'),
86
  ));
 
 
87
 
88
- \wp_enqueue_style('contentegg-admin', \ContentEgg\PLUGIN_RES . '/css/admin.css', null, 'vaa' . Plugin::version());
89
  }
90
 
91
  public function add_plugin_row_meta(array $links, $file)
@@ -108,7 +119,6 @@ class PluginAdmin {
108
  if (Plugin::isPro())
109
  $title .= ' Pro';
110
  \add_menu_page($title, $title, 'publish_posts', Plugin::slug, null, $icon_svg);
111
-
112
  }
113
 
114
  public static function render($view_name, $_data = null)
9
  use ContentEgg\application\admin\GeneralConfig;
10
  use ContentEgg\application\components\ModuleManager;
11
  use ContentEgg\application\components\ModuleApi;
12
+ use ContentEgg\application\components\LManager;
13
  use ContentEgg\application\components\FeaturedImage;
14
+ use ContentEgg\application\ModuleUpdateScheduler;
15
 
16
  /**
17
  * PluginAdmin class file
18
  *
19
  * @author keywordrush.com <support@keywordrush.com>
20
  * @link https://www.keywordrush.com
21
+ * @copyright Copyright &copy; 2021 keywordrush.com
22
  */
23
  class PluginAdmin {
24
 
45
  {
46
  \add_filter('plugin_row_meta', array($this, 'add_plugin_row_meta'), 10, 2);
47
  }
48
+
49
+ AdminNotice::getInstance()->adminInit();
50
+ if (!Plugin::isFree())
51
+ LManager::getInstance()->adminInit();
52
+
53
  if (Plugin::isFree() || (Plugin::isPro() && Plugin::isActivated()) || Plugin::isEnvato())
54
  {
55
  GeneralConfig::getInstance()->adminInit();
56
  ModuleManager::getInstance()->adminInit();
57
  new ModuleSettingsContoller;
58
  new ProductController;
 
59
  new EggMetabox;
60
  new ModuleApi;
61
  new FeaturedImage;
64
  new ToolsController;
65
  new ImportExportController;
66
  AeIntegrationConfig::getInstance()->adminInit();
67
+ ModuleUpdateScheduler::addScheduleEvent();
68
  }
69
+
70
  if (Plugin::isEnvato() && !Plugin::isActivated() && !\get_option(Plugin::slug . '_env_install'))
71
  EnvatoConfig::getInstance()->adminInit();
72
  elseif (Plugin::isPro())
73
  LicConfig::getInstance()->adminInit();
74
+
75
  if (Plugin::isPro() && Plugin::isActivated())
76
  {
77
  new \ContentEgg\application\Autoupdate(Plugin::version(), plugin_basename(\ContentEgg\PLUGIN_FILE), Plugin::getApiBase(), Plugin::slug);
78
  }
79
+
80
  }
81
 
82
  function admin_load_scripts()
94
  'are_you_shure' => __('Are you sure?', 'content-egg'),
95
  'sitelang' => GeneralConfig::getInstance()->option('lang'),
96
  ));
97
+
98
+ \wp_enqueue_style('contentegg-admin', \ContentEgg\PLUGIN_RES . '/css/admin.css', null, '' . Plugin::version());
99
 
 
100
  }
101
 
102
  public function add_plugin_row_meta(array $links, $file)
119
  if (Plugin::isPro())
120
  $title .= ' Pro';
121
  \add_menu_page($title, $title, 'publish_posts', Plugin::slug, null, $icon_svg);
 
122
  }
123
 
124
  public static function render($view_name, $_data = null)
application/admin/PrefillController.php CHANGED
@@ -17,7 +17,7 @@ use ContentEgg\application\models\AutoblogModel;
17
  *
18
  * @author keywordrush.com <support@keywordrush.com>
19
  * @link https://www.keywordrush.com
20
- * @copyright Copyright &copy; 2020 keywordrush.com
21
  */
22
  class PrefillController {
23
 
@@ -129,7 +129,7 @@ class PrefillController {
129
  }
130
 
131
  if (!$keyword)
132
- $this->printResult($log . ' - ' . __('Impossible to determine a keyword', 'content-egg'));
133
 
134
  $log .= ' Keyword: "' . $keyword . '"';
135
 
@@ -220,9 +220,32 @@ class PrefillController {
220
  if (!$meta_name)
221
  return '';
222
  $keyword = \get_post_meta($post_id, $meta_name, true);
223
- } elseif (ModuleManager::getInstance()->moduleExists($keyword_source))
224
  {
225
- $keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $keyword_source, true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  }
227
 
228
  if (!filter_var($keyword, FILTER_VALIDATE_URL))
17
  *
18
  * @author keywordrush.com <support@keywordrush.com>
19
  * @link https://www.keywordrush.com
20
+ * @copyright Copyright &copy; 2021 keywordrush.com
21
  */
22
  class PrefillController {
23
 
129
  }
130
 
131
  if (!$keyword)
132
+ $this->printResult($log . ' - ' . __('Unable to find keyword.', 'content-egg'));
133
 
134
  $log .= ' Keyword: "' . $keyword . '"';
135
 
220
  if (!$meta_name)
221
  return '';
222
  $keyword = \get_post_meta($post_id, $meta_name, true);
223
+ } elseif (substr($keyword_source, 0, 9) == '_keyword_')
224
  {
225
+ $module_id = substr($keyword_source, 9);
226
+ if (!ModuleManager::getInstance()->moduleExists($module_id))
227
+ return '';
228
+
229
+ $keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, true);
230
+
231
+ } elseif (substr($keyword_source, 0, 5) == '_ean_')
232
+ {
233
+ $module_id = substr($keyword_source, 5);
234
+ if (!ModuleManager::getInstance()->moduleExists($module_id))
235
+ return '';
236
+
237
+ if (!$data = ContentManager::getViewData($module_id, $post_id))
238
+ return '';
239
+
240
+ foreach ($data as $d)
241
+ {
242
+ if (!empty($d['ean']))
243
+ {
244
+ $keyword = $d['ean'];
245
+ break;
246
+ }
247
+
248
+ }
249
  }
250
 
251
  if (!filter_var($keyword, FILTER_VALIDATE_URL))
application/admin/ProductController.php CHANGED
@@ -12,8 +12,8 @@ use ContentEgg\application\helpers\TemplateHelper;
12
  * ProductController class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2018 keywordrush.com
17
  */
18
  class ProductController {
19
 
12
  * ProductController class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
+ * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
  */
18
  class ProductController {
19
 
application/admin/ProductTable.php CHANGED
@@ -153,7 +153,7 @@ class ProductTable extends MyListTable {
153
 
154
  private function print_modules_dropdown()
155
  {
156
- $modules = ModuleManager::getInstance()->getAffiliteModulesList();
157
  $selected_module_id = !empty($_GET['module_id']) ? TextHelper::clear(\wp_unslash($_GET['module_id'])) : '';
158
 
159
  echo '<select name="module_id" id="dropdown_module_id"><option value="">' . \esc_html__('Filter by module', 'content-egg') . '</option>';
153
 
154
  private function print_modules_dropdown()
155
  {
156
+ $modules = ModuleManager::getInstance()->getAffiliteModulesList(true);
157
  $selected_module_id = !empty($_GET['module_id']) ? TextHelper::clear(\wp_unslash($_GET['module_id'])) : '';
158
 
159
  echo '<select name="module_id" id="dropdown_module_id"><option value="">' . \esc_html__('Filter by module', 'content-egg') . '</option>';
application/admin/ToolsController.php CHANGED
@@ -9,13 +9,14 @@ use ContentEgg\application\helpers\FileHelper;
9
  use ContentEgg\application\helpers\TextHelper;
10
  use ContentEgg\application\components\ContentManager;
11
  use ContentEgg\application\components\ModuleManager;
 
12
 
13
  /**
14
  * ToolsController class file
15
  *
16
  * @author keywordrush.com <support@keywordrush.com>
17
- * @link http://www.keywordrush.com/
18
- * @copyright Copyright &copy; 2017 keywordrush.com
19
  */
20
  class ToolsController {
21
 
@@ -35,14 +36,13 @@ class ToolsController {
35
  return;
36
 
37
  if (!empty($_GET['action']) && $_GET['action'] == 'subscribers-export')
38
- {
39
  $this->actionSubscribersExport();
40
- }
41
 
42
  if (!empty($_GET['action']) && $_GET['action'] == 'offer-urls-export')
43
- {
44
  $this->actionOfferUrlsExport();
45
- }
 
 
46
  }
47
 
48
  public function actionSubscribersExport()
@@ -137,4 +137,35 @@ class ToolsController {
137
  exit;
138
  }
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  }
9
  use ContentEgg\application\helpers\TextHelper;
10
  use ContentEgg\application\components\ContentManager;
11
  use ContentEgg\application\components\ModuleManager;
12
+ use ContentEgg\application\helpers\InputHelper;
13
 
14
  /**
15
  * ToolsController class file
16
  *
17
  * @author keywordrush.com <support@keywordrush.com>
18
+ * @link httsp://www.keywordrush.com
19
+ * @copyright Copyright &copy; 2021 keywordrush.com
20
  */
21
  class ToolsController {
22
 
36
  return;
37
 
38
  if (!empty($_GET['action']) && $_GET['action'] == 'subscribers-export')
 
39
  $this->actionSubscribersExport();
 
40
 
41
  if (!empty($_GET['action']) && $_GET['action'] == 'offer-urls-export')
 
42
  $this->actionOfferUrlsExport();
43
+
44
+ if (!empty($_GET['action']) && $_GET['action'] == 'feed-export')
45
+ $this->actionFeedDataExport();
46
  }
47
 
48
  public function actionSubscribersExport()
137
  exit;
138
  }
139
 
140
+ public function actionFeedDataExport()
141
+ {
142
+ if (!\current_user_can('administrator'))
143
+ die('You do not have permission to view this page.');
144
+
145
+ if (isset($_GET['module']))
146
+ $module_id = TextHelper::clear($_GET['module']);
147
+ else
148
+ die('Module param can not be empty.');
149
+
150
+ if (!ModuleManager::getInstance()->moduleExists($module_id))
151
+ die('The module does not exist.');
152
+
153
+ $field = InputHelper::get('field', 'url');
154
+
155
+ $module = ModuleManager::getInstance()->factory($module_id);
156
+ $model = $module->getProductModel();
157
+
158
+ if ($field == 'ean')
159
+ $results = $model->getEans();
160
+ elseif ($field == 'ean_dublicate')
161
+ $results = $model->getDublicateEans();
162
+ else
163
+ $results = $model->getAllUrls();
164
+
165
+ $filename = $module->getName() . '-' . $field . '-' . date('d-m-Y') . '.txt';
166
+ FileHelper::sendDownloadHeaders($filename);
167
+ echo join("\r\n", $results);
168
+ exit;
169
+ }
170
+
171
  }
application/admin/views/_metabox_autoblog.php CHANGED
@@ -23,16 +23,15 @@ use ContentEgg\application\helpers\AdminHelper;
23
  </th>
24
  <td>
25
  <select id="status" name="item[status]">
26
- <option value="1"<?php if ($item['status']) echo ' selected="selected"'; ?>><?php _e('Works', 'content-egg'); ?></option>
27
- <option value="0"<?php if (!$item['status']) echo ' selected="selected"'; ?>><?php _e('Stoped', 'content-egg'); ?></option>
28
  </select>
29
- <p class="description"><?php _e('You can stop autoblogging.', 'content-egg'); ?></p>
30
  </td>
31
  </tr>
32
 
33
  <tr class="form-field">
34
  <th valign="top" scope="row">
35
- <label for="run_frequency"><?php _e('Work frequency', 'content-egg'); ?></label>
36
  </th>
37
  <td>
38
  <select id="run_frequency" name="item[run_frequency]">
@@ -44,7 +43,7 @@ use ContentEgg\application\helpers\AdminHelper;
44
  <option value="604800"<?php if ($item['run_frequency'] == 604800) echo ' selected="selected"'; ?>><?php _e('Once a week', 'content-egg'); ?></option>
45
  <option value="1209600"<?php if ($item['run_frequency'] == 1209600) echo ' selected="selected"'; ?>><?php _e('Once in 2 weeks', 'content-egg'); ?></option>
46
  </select>
47
- <p class="description"><?php _e('How often autoblogging will run this task', 'content-egg'); ?></p>
48
  </td>
49
  </tr>
50
  <?php if (!$batch): ?>
@@ -189,44 +188,42 @@ use ContentEgg\application\helpers\AdminHelper;
189
 
190
  <tr class="form-field">
191
  <th valign="top" scope="row">
192
- <label for="keywords_per_run"><?php _e('Keywords for handle', 'content-egg'); ?></label>
193
  </th>
194
  <td>
195
  <input id="keywords_per_run" name="item[keywords_per_run]" value="<?php echo esc_attr($item['keywords_per_run']) ?>"
196
  type="number" class="small-text">
197
- <p class="description"><?php _e('How many keywords to process at once. We don\'t recommend to use more than 5 keywords.', 'content-egg'); ?></p>
198
  </td>
199
  </tr>
200
  <tr class="form-field">
201
  <th valign="top" scope="row">
202
- <label for="template_title"><?php _e('Title template', 'content-egg'); ?></label>
203
  </th>
204
  <td>
205
 
206
  <input id="template_title" name="item[template_title]" value="<?php echo esc_attr($item['template_title']) ?>"
207
  type="text" class="regular-text ltr">
208
  <p class="description">
209
- <?php _e('Template for title of post', 'content-egg'); ?>
210
  <?php _e('Use tags:', 'content-egg'); ?> %KEYWORD%, %KEYWORD.ModuleID%, %PRODUCT.title%, %PRODUCT.price%, %PRODUCT.merchant%, %PRODUCT.domain%, %PRODUCT.manufacturer%,...<br>
211
  <?php _e('For display data of plugin use special tags, for example:', 'content-egg'); ?> %Amazon.title%.<br>
212
  <?php _e('You also can set index number for access to data of plugin', 'content-egg'); ?> %Amazon.0.price%.<br>
213
- <?php _e('You can use "formulas" with synonyms, of which one will be selected with a random option, for example, {Discount|Sale|Cheap}.', 'content-egg'); ?>
214
  </p>
215
  </td>
216
  </tr>
217
 
218
  <tr class="form-field">
219
  <th valign="top" scope="row">
220
- <label for="template_body"><?php _e('Template for post.', 'content-egg'); ?></label>
221
  </th>
222
  <td>
223
 
224
  <textarea rows="4" id="template_body" name="item[template_body]"><?php echo esc_html($item['template_body']) ?></textarea>
225
  <p class="description">
226
- <?php _e('Template for body of post.', 'content-egg'); ?><br>
227
- <?php _e('You can use shortcodes, for example:', 'content-egg'); ?>
228
  [content-egg module=Amazon template=grid]<br>
229
- <?php _e('"Formulas", and also all tags from title template, will also work here.', 'content-egg'); ?><br>
230
 
231
  </p>
232
  </td>
@@ -237,7 +234,7 @@ use ContentEgg\application\helpers\AdminHelper;
237
  </th>
238
  <td>
239
  <div class="cegg-checkboxgroup">
240
- <?php foreach (ModuleManager::getInstance()->getParserModules(false) as $module): ?>
241
  <div class="cegg-checkbox">
242
  <label><input <?php if (in_array($module->getId(), $item['include_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[include_modules][]" /><?php echo $module->getName(); ?></label>
243
  </div>
@@ -256,7 +253,7 @@ use ContentEgg\application\helpers\AdminHelper;
256
  </th>
257
  <td>
258
  <div class="cegg-checkboxgroup">
259
- <?php foreach (ModuleManager::getInstance()->getParserModules(false) as $module): ?>
260
  <div class="cegg-checkbox">
261
  <label><input <?php if (in_array($module->getId(), $item['exclude_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[exclude_modules][]" /><?php echo $module->getName(); ?></label>
262
  </div>
@@ -298,19 +295,6 @@ use ContentEgg\application\helpers\AdminHelper;
298
  </td>
299
  </tr>
300
 
301
- <tr class="form-field">
302
- <th valign="top" scope="row">
303
- <label for="user_id"><?php _e('User', 'content-egg'); ?></label>
304
- </th>
305
- <td>
306
- <?php
307
- \wp_dropdown_users(array('name' => 'item[user_id]',
308
- 'who' => 'authors', 'id' => 'user_id', 'selected' => $item['user_id']));
309
- ?>
310
- <p class="description"><?php _e('This user will be author of posts.', 'content-egg'); ?></p>
311
- </td>
312
- </tr>
313
-
314
  <tr class="form-field">
315
  <th valign="top" scope="row">
316
  <label for="category"><?php _e('Category ', 'content-egg'); ?></label>
@@ -331,7 +315,7 @@ use ContentEgg\application\helpers\AdminHelper;
331
 
332
 
333
  <p class="description">
334
- <?php _e('Default category for posts.', 'content-egg'); ?>
335
  <?php if ($batch): ?>
336
  <?php _e('"Create Automatically" means, that categories will be created based on data of CSV file with keywords and categories.', 'content-egg'); ?>
337
  <?php endif; ?>
@@ -339,6 +323,18 @@ use ContentEgg\application\helpers\AdminHelper;
339
  </td>
340
  </tr>
341
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  <tr class="form-field">
343
  <th valign="top" scope="row">
344
  <label for="dynamic_categories"><?php _e('Dynamic categories', 'content-egg'); ?></label>
@@ -381,7 +377,7 @@ use ContentEgg\application\helpers\AdminHelper;
381
  </th>
382
  <td>
383
  <div class="cegg-checkboxgroup">
384
- <?php foreach (ModuleManager::getInstance()->getAffiliateParsers(false) as $module): ?>
385
  <div class="cegg-checkbox">
386
  <label><input <?php if (in_array($module->getId(), $item['autoupdate_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[autoupdate_modules][]" /><?php echo $module->getName(); ?></label>
387
  </div>
@@ -398,7 +394,7 @@ use ContentEgg\application\helpers\AdminHelper;
398
  </th>
399
  <td>
400
  <div class="cegg-checkboxgroup">
401
- <?php foreach (ModuleManager::getInstance()->getParserModules(false) as $module): ?>
402
  <div class="cegg-checkbox">
403
  <label><input <?php if (in_array($module->getId(), $item['required_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[required_modules][]" /><?php echo $module->getName(); ?></label>
404
  </div>
@@ -437,7 +433,7 @@ use ContentEgg\application\helpers\AdminHelper;
437
  type="text" class="regular-text ltr">
438
  <p class="description">
439
  <?php _e('Comma separated list of tags.', 'content-egg'); ?>
440
- <?php _e('"Formulas", and also all tags from title template, will also work here.', 'content-egg'); ?><br>
441
  </p>
442
  </td>
443
  </tr>
@@ -479,7 +475,7 @@ use ContentEgg\application\helpers\AdminHelper;
479
  <?php endfor; ?>
480
  </div>
481
  <p class="description">
482
- <?php _e('"Formulas", and also all tags from title template, will also work here.', 'content-egg'); ?><br>
483
  </p>
484
  </td>
485
  </tr>
23
  </th>
24
  <td>
25
  <select id="status" name="item[status]">
26
+ <option value="1"<?php if ($item['status']) echo ' selected="selected"'; ?>><?php _e('Enabled', 'content-egg'); ?></option>
27
+ <option value="0"<?php if (!$item['status']) echo ' selected="selected"'; ?>><?php _e('Disabled', 'content-egg'); ?></option>
28
  </select>
 
29
  </td>
30
  </tr>
31
 
32
  <tr class="form-field">
33
  <th valign="top" scope="row">
34
+ <label for="run_frequency"><?php _e('Recurrency', 'content-egg'); ?></label>
35
  </th>
36
  <td>
37
  <select id="run_frequency" name="item[run_frequency]">
43
  <option value="604800"<?php if ($item['run_frequency'] == 604800) echo ' selected="selected"'; ?>><?php _e('Once a week', 'content-egg'); ?></option>
44
  <option value="1209600"<?php if ($item['run_frequency'] == 1209600) echo ' selected="selected"'; ?>><?php _e('Once in 2 weeks', 'content-egg'); ?></option>
45
  </select>
46
+ <p class="description"><?php _e('How often autoblogging will run this task.', 'content-egg'); ?></p>
47
  </td>
48
  </tr>
49
  <?php if (!$batch): ?>
188
 
189
  <tr class="form-field">
190
  <th valign="top" scope="row">
191
+ <label for="keywords_per_run"><?php _e('Process keywords', 'content-egg'); ?></label>
192
  </th>
193
  <td>
194
  <input id="keywords_per_run" name="item[keywords_per_run]" value="<?php echo esc_attr($item['keywords_per_run']) ?>"
195
  type="number" class="small-text">
196
+ <p class="description"><?php _e('How many keywords to process at a time.', 'content-egg'); ?></p>
197
  </td>
198
  </tr>
199
  <tr class="form-field">
200
  <th valign="top" scope="row">
201
+ <label for="template_title"><?php _e('Post title template ', 'content-egg'); ?></label>
202
  </th>
203
  <td>
204
 
205
  <input id="template_title" name="item[template_title]" value="<?php echo esc_attr($item['template_title']) ?>"
206
  type="text" class="regular-text ltr">
207
  <p class="description">
 
208
  <?php _e('Use tags:', 'content-egg'); ?> %KEYWORD%, %KEYWORD.ModuleID%, %PRODUCT.title%, %PRODUCT.price%, %PRODUCT.merchant%, %PRODUCT.domain%, %PRODUCT.manufacturer%,...<br>
209
  <?php _e('For display data of plugin use special tags, for example:', 'content-egg'); ?> %Amazon.title%.<br>
210
  <?php _e('You also can set index number for access to data of plugin', 'content-egg'); ?> %Amazon.0.price%.<br>
211
+ <?php _e('You can use spin syntax with synonyms, for example, {Discount|Sale|Cheap}.', 'content-egg'); ?>
212
  </p>
213
  </td>
214
  </tr>
215
 
216
  <tr class="form-field">
217
  <th valign="top" scope="row">
218
+ <label for="template_body"><?php _e('Post body template ', 'content-egg'); ?></label>
219
  </th>
220
  <td>
221
 
222
  <textarea rows="4" id="template_body" name="item[template_body]"><?php echo esc_html($item['template_body']) ?></textarea>
223
  <p class="description">
224
+ <?php _e('You can use CE shortcodes like:', 'content-egg'); ?>
 
225
  [content-egg module=Amazon template=grid]<br>
226
+ <?php _e('Spin syntax and all tags from title template, will also work here.', 'content-egg'); ?><br>
227
 
228
  </p>
229
  </td>
234
  </th>
235
  <td>
236
  <div class="cegg-checkboxgroup">
237
+ <?php foreach (ModuleManager::getInstance()->getParserModules(true) as $module): ?>
238
  <div class="cegg-checkbox">
239
  <label><input <?php if (in_array($module->getId(), $item['include_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[include_modules][]" /><?php echo $module->getName(); ?></label>
240
  </div>
253
  </th>
254
  <td>
255
  <div class="cegg-checkboxgroup">
256
+ <?php foreach (ModuleManager::getInstance()->getParserModules(true) as $module): ?>
257
  <div class="cegg-checkbox">
258
  <label><input <?php if (in_array($module->getId(), $item['exclude_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[exclude_modules][]" /><?php echo $module->getName(); ?></label>
259
  </div>
295
  </td>
296
  </tr>
297
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  <tr class="form-field">
299
  <th valign="top" scope="row">
300
  <label for="category"><?php _e('Category ', 'content-egg'); ?></label>
315
 
316
 
317
  <p class="description">
318
+ <?php _e('Default category.', 'content-egg'); ?>
319
  <?php if ($batch): ?>
320
  <?php _e('"Create Automatically" means, that categories will be created based on data of CSV file with keywords and categories.', 'content-egg'); ?>
321
  <?php endif; ?>
323
  </td>
324
  </tr>
325
 
326
+ <tr class="form-field">
327
+ <th valign="top" scope="row">
328
+ <label for="user_id"><?php _e('User', 'content-egg'); ?></label>
329
+ </th>
330
+ <td>
331
+ <?php
332
+ \wp_dropdown_users(array('name' => 'item[user_id]',
333
+ 'who' => 'authors', 'id' => 'user_id', 'selected' => $item['user_id']));
334
+ ?>
335
+ <p class="description"><?php _e('This user will be author of posts.', 'content-egg'); ?></p>
336
+ </td>
337
+ </tr>
338
  <tr class="form-field">
339
  <th valign="top" scope="row">
340
  <label for="dynamic_categories"><?php _e('Dynamic categories', 'content-egg'); ?></label>
377
  </th>
378
  <td>
379
  <div class="cegg-checkboxgroup">
380
+ <?php foreach (ModuleManager::getInstance()->getAffiliateParsers(true) as $module): ?>
381
  <div class="cegg-checkbox">
382
  <label><input <?php if (in_array($module->getId(), $item['autoupdate_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[autoupdate_modules][]" /><?php echo $module->getName(); ?></label>
383
  </div>
394
  </th>
395
  <td>
396
  <div class="cegg-checkboxgroup">
397
+ <?php foreach (ModuleManager::getInstance()->getParserModules(true) as $module): ?>
398
  <div class="cegg-checkbox">
399
  <label><input <?php if (in_array($module->getId(), $item['required_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[required_modules][]" /><?php echo $module->getName(); ?></label>
400
  </div>
433
  type="text" class="regular-text ltr">
434
  <p class="description">
435
  <?php _e('Comma separated list of tags.', 'content-egg'); ?>
436
+ <?php _e('Spin syntax and also all tags from title template, will also work here.', 'content-egg'); ?><br>
437
  </p>
438
  </td>
439
  </tr>
475
  <?php endfor; ?>
476
  </div>
477
  <p class="description">
478
+ <?php _e('Spin syntax and also all tags from title template, will also work here.', 'content-egg'); ?><br>
479
  </p>
480
  </td>
481
  </tr>
application/admin/views/_metabox_results.php CHANGED
@@ -82,8 +82,7 @@ $isAffiliateParser = $module->isAffiliateParser();
82
  <div style="padding:4px 0 8px 0;margin:0;">
83
  <span class="text-muted">
84
  <span ng-show="data.last_update"><i class="glyphicon glyphicon-time"></i> <abbr title="<?php _e('Last updated:', 'content-egg'); ?> {{data.last_update * 1000| date:'medium'}}">{{data.last_update * 1000| date:'shortDate'}}</abbr></span>
85
- <mark ng-show="data.stock_status" ng-class="{
86
- 'outofstock': data.stock_status == - 1, 'instock': data.stock_status == 1}">{{data.stock_status| stockStatus}}</mark>
87
  </span>
88
  </div>
89
  <?php endif; ?>
82
  <div style="padding:4px 0 8px 0;margin:0;">
83
  <span class="text-muted">
84
  <span ng-show="data.last_update"><i class="glyphicon glyphicon-time"></i> <abbr title="<?php _e('Last updated:', 'content-egg'); ?> {{data.last_update * 1000| date:'medium'}}">{{data.last_update * 1000| date:'shortDate'}}</abbr></span>
85
+ <mark ng-show="data.stock_status == -1 || data.stock_status == 1" ng-class="{'outofstock': data.stock_status == -1, 'instock': data.stock_status == 1}">{{data.stock_status| stockStatus}}</mark>
 
86
  </span>
87
  </div>
88
  <?php endif; ?>
application/admin/views/_promo_box.php CHANGED
@@ -19,7 +19,7 @@
19
  <li>No work with CSV data feeds</li>
20
  </ul>
21
  <p>
22
- <a target="_blank" class="button-cegg-banner" href="https://www.keywordrush.com/externalimporter">View...</a>
23
  </p>
24
 
25
 
19
  <li>No work with CSV data feeds</li>
20
  </ul>
21
  <p>
22
+ <a target="_blank" class="button-cegg-banner" href="https://www.keywordrush.com/externalimporter?utm_source=cegg&utm_medium=referral&utm_campaign=plugin">View...</a>
23
  </p>
24
 
25
 
application/admin/views/ae_integration.php CHANGED
@@ -6,20 +6,27 @@
6
  <h2><?php _e('Integration with Affiliate Egg', 'content-egg') ?></h2>
7
  <?php settings_errors(); ?>
8
 
9
- <p>
10
- <?php _e('You <a href="https://ce-docs.keywordrush.com/integrations/affiliateeggintegration">can activate</a> parsers of <a href="http://www.keywordrush.com/en/affiliateegg">Affiliate Egg</a> as modules of Content Egg.', 'content-egg'); ?>
11
- </p>
12
-
13
  <?php if (!ContentEgg\application\admin\AeIntegrationConfig::isAEIntegrationPosible()): ?>
 
 
 
 
 
 
 
 
 
14
  <p>
15
- <?php _e('Here is the <a href="http://www.keywordrush.com/res/ae_supported_shops.txt">full list</a> of Affiliate Egg supported shops.', 'content-egg'); ?>
16
  </p>
 
 
17
 
 
18
  <p>
19
- <b><?php _e('For first step make next actions:', 'content-egg'); ?></b>
20
  <ol>
21
- <li><?php _e('Install and activate <a href="https://www.keywordrush.com/affiliateegg">Affiliate Egg</a>', 'content-egg'); ?></li>
22
- </li>
23
  </ol>
24
  </p>
25
  <?php else: ?>
6
  <h2><?php _e('Integration with Affiliate Egg', 'content-egg') ?></h2>
7
  <?php settings_errors(); ?>
8
 
 
 
 
 
9
  <?php if (!ContentEgg\application\admin\AeIntegrationConfig::isAEIntegrationPosible()): ?>
10
+
11
+ <p>
12
+ <a target="_blank" href="https://www.keywordrush.com/affiliateegg">Affiliate Egg</a> is another plugin our team offers for adding affiliate products to your website. The biggest advantages of Affiliate Egg:
13
+ </p>
14
+ <ul>
15
+ <ol>No API access required. Extracts data directly from store websites.</ol>
16
+ <ol>Can create custom parsers for almost any store.</ol>
17
+ <ol>Affiliate Egg parsers can be connected as separate Content Egg plugin modules. This will allow for product price updates, price comparisons, all templates, and other Content Egg features.</ol>
18
+ </ul>
19
  <p>
20
+ You can activate AE parsers as separate modules for Content Egg.
21
  </p>
22
+ <a target="_blank" href="https://ce-docs.keywordrush.com/modules/affiliate-egg-integration"><?php _e('Read more...', 'content-egg'); ?></a>
23
+ <?php endif; ?>
24
 
25
+ <?php if (!ContentEgg\application\admin\AeIntegrationConfig::isAEIntegrationPosible()): ?>
26
  <p>
27
+ <b><?php _e('Follow these steps to get started', 'content-egg'); ?>:</b>
28
  <ol>
29
+ <li><?php echo sprintf(__('Install and activate <a target="_blank" href="%s">Affiliate Egg Pro</a>', 'content-egg'), 'https://www.keywordrush.com/affiliateegg'); ?></li>
 
30
  </ol>
31
  </p>
32
  <?php else: ?>
application/admin/views/autoblog_edit.php CHANGED
@@ -13,9 +13,9 @@
13
  <?php endif; ?>
14
  <?php endif; ?>
15
  <?php if (!$batch && !$item['id']): ?>
16
- <a class="add-new-h2 button-primary" href="<?php echo get_admin_url(get_current_blog_id(), 'admin.php?page=content-egg-autoblog-edit--batch'); ?>"><?php _e('Bulk adding', 'content-egg'); ?></a>
17
  <?php endif; ?>
18
- <a class="add-new-h2" href="<?php echo get_admin_url(get_current_blog_id(), 'admin.php?page=content-egg-autoblog'); ?>"><?php _e('Back to list', 'content-egg'); ?></a>
19
  </h2>
20
 
21
  <?php if (!empty($notice)): ?>
13
  <?php endif; ?>
14
  <?php endif; ?>
15
  <?php if (!$batch && !$item['id']): ?>
16
+ <a class="add-new-h2 button-primary" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-autoblog-edit--batch'); ?>"><?php _e('Bulk adding', 'content-egg'); ?></a>
17
  <?php endif; ?>
18
+ <a class="add-new-h2" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-autoblog'); ?>"><?php _e('Back to list', 'content-egg'); ?></a>
19
  </h2>
20
 
21
  <?php if (!empty($notice)): ?>
application/admin/views/autoblog_index.php CHANGED
@@ -16,7 +16,13 @@
16
  <?php
17
  $message = '';
18
  if ($table->current_action() == 'delete' && !empty($_GET['id']))
19
- $message = '<div class="updated below-h2" id="message"><p>' . sprintf(__('Deleted tasks for autoblogging: ', 'content-egg') . ' %d', count($_GET['id'])) . '</p></div>';
 
 
 
 
 
 
20
  if ($table->current_action() == 'run')
21
  $message = '<div class="updated below-h2" id="message"><p>' . __('Autoblogging finished tasks', 'content-egg') . '</p></div>';
22
  ?>
16
  <?php
17
  $message = '';
18
  if ($table->current_action() == 'delete' && !empty($_GET['id']))
19
+ {
20
+ if (is_array($_GET['id']))
21
+ $count = count($_GET['id']);
22
+ else
23
+ $count = 1;
24
+ $message = '<div class="updated below-h2" id="message"><p>' . sprintf(__('Deleted tasks for autoblogging: ', 'content-egg') . ' %d', $count) . '</p></div>';
25
+ }
26
  if ($table->current_action() == 'run')
27
  $message = '<div class="updated below-h2" id="message"><p>' . __('Autoblogging finished tasks', 'content-egg') . '</p></div>';
28
  ?>
application/admin/views/module_index.php CHANGED
@@ -12,7 +12,7 @@ function _cegg_print_module_item(array $modules)
12
  echo '<span class="label label-success">' . __('Active', 'content-egg') . '</span>';
13
  if ($module->isDeprecated())
14
  echo '<span class="label label-warning">' . __('Deprecated', 'content-egg') . '</span>';
15
- if ($module->isNew())
16
  echo '<span class="label label-info">' . __('New', 'content-egg') . '</span>';
17
  echo '</a>';
18
  }
@@ -26,7 +26,10 @@ function _cegg_print_module_item(array $modules)
26
 
27
  <div class="wrap">
28
 
29
- <h2><?php _e('Module Settings', 'content-egg'); ?></h2>
 
 
 
30
 
31
 
32
  <h2 class="nav-tab-wrapper">
@@ -43,7 +46,7 @@ function _cegg_print_module_item(array $modules)
43
  </a>
44
  <?php endforeach; ?>
45
  </h2>
46
-
47
  <br />
48
  <div class="egg-container">
49
  <div class="row">
@@ -68,6 +71,13 @@ function _cegg_print_module_item(array $modules)
68
  </div>
69
  <?php endif; ?>
70
 
 
 
 
 
 
 
 
71
  <div class="panel panel-default">
72
  <div class="panel-heading"><h3 class="panel-title"><?php _e('Coupon modules', 'content-egg'); ?></h3></div>
73
  <div class="list-group">
12
  echo '<span class="label label-success">' . __('Active', 'content-egg') . '</span>';
13
  if ($module->isDeprecated())
14
  echo '<span class="label label-warning">' . __('Deprecated', 'content-egg') . '</span>';
15
+ if ($module->isNew() && !$module->isFeedParser())
16
  echo '<span class="label label-info">' . __('New', 'content-egg') . '</span>';
17
  echo '</a>';
18
  }
26
 
27
  <div class="wrap">
28
 
29
+ <h2>
30
+ <?php _e('Module Settings', 'content-egg'); ?>
31
+ <span class="egg-label egg-label-pro">pro <small>v<?php echo \ContentEgg\application\Plugin::version(); ?></small></span>
32
+ </h2>
33
 
34
 
35
  <h2 class="nav-tab-wrapper">
46
  </a>
47
  <?php endforeach; ?>
48
  </h2>
49
+
50
  <br />
51
  <div class="egg-container">
52
  <div class="row">
71
  </div>
72
  <?php endif; ?>
73
 
74
+ <div class="panel panel-default">
75
+ <div class="panel-heading"><h3 class="panel-title"><?php _e('Feed modules', 'content-egg'); ?></h3></div>
76
+ <div class="list-group">
77
+ <?php _cegg_print_module_item(\ContentEgg\application\helpers\AdminHelper::getFeedProductModules()); ?>
78
+ </div>
79
+ </div>
80
+
81
  <div class="panel panel-default">
82
  <div class="panel-heading"><h3 class="panel-title"><?php _e('Coupon modules', 'content-egg'); ?></h3></div>
83
  <div class="list-group">
application/admin/views/module_settings.php CHANGED
@@ -4,8 +4,10 @@
4
  <div class="cegg-maincol">
5
  <?php endif; ?>
6
  <div class="wrap">
7
- <h2><?php _e('Module Settings', 'content-egg'); ?></h2>
8
-
 
 
9
 
10
  <h2 class="nav-tab-wrapper">
11
  <a href="?page=content-egg-modules" class="nav-tab<?php if (!empty($_GET['page']) && $_GET['page'] == 'content-egg-modules') echo ' nav-tab-active'; ?>">
@@ -26,7 +28,11 @@
26
  <div class="cegg-maincol">
27
 
28
  <h3>
29
- <?php echo \esc_html(sprintf(__('%s Settings', 'content-egg'), $module->getName())); ?>
 
 
 
 
30
  <?php if ($docs_uri = $module->getDocsUri()) echo sprintf('<a target="_blank" class="page-title-action" href="%s">' . __('Documentation', 'content-egg') . '</a>', $docs_uri); ?>
31
  </h3>
32
 
@@ -84,16 +90,28 @@
84
 
85
  <?php if (!empty($module) && $module->isFeedModule()): ?>
86
  <?php if ($last_date = $module->getLastImportDateReadable()): ?>
87
- <li><?php echo sprintf(__('Last feed import: %s.'), $last_date); ?></li>
88
- <li><?php echo sprintf(__('Total products: %d.'), $module->getProductCount()); ?></li>
 
89
  <?php endif; ?>
90
- <li title="<?php echo \esc_attr(__('Your unzipped feed must be smaller than this.', 'content-egg')); ?>"><?php echo sprintf(__('WordPress memory limit: %s'), WP_MAX_MEMORY_LIMIT); ?>
91
  (<a href="https://wordpress.org/support/article/editing-wp-config-php/#increasing-memory-allocated-to-php" target="_blank">?</a>)
92
  </li>
93
  <?php if ($last_error = $module->getLastImportError()): ?>
94
- <li style="color: red;"><?php echo sprintf(__('Last error: %s'), $last_error); ?></li>
95
- <?php endif; ?>
 
 
 
 
 
 
 
 
96
  <?php endif; ?>
 
 
 
97
  </div>
98
  </div>
99
  </div>
4
  <div class="cegg-maincol">
5
  <?php endif; ?>
6
  <div class="wrap">
7
+ <h2>
8
+ <?php _e('Module Settings', 'content-egg'); ?>
9
+ <span class="egg-label egg-label-pro">pro <small>v<?php echo \ContentEgg\application\Plugin::version(); ?></small></span>
10
+ </h2>
11
 
12
  <h2 class="nav-tab-wrapper">
13
  <a href="?page=content-egg-modules" class="nav-tab<?php if (!empty($_GET['page']) && $_GET['page'] == 'content-egg-modules') echo ' nav-tab-active'; ?>">
28
  <div class="cegg-maincol">
29
 
30
  <h3>
31
+ <?php if ($module->isFeedParser() && !$module->isActive()): ?>
32
+ <?php _e('Add new feed module', 'content-egg'); ?>
33
+ <?php else: ?>
34
+ <?php echo \esc_html(sprintf(__('%s Settings', 'content-egg'), $module->getName())); ?>
35
+ <?php endif; ?>
36
  <?php if ($docs_uri = $module->getDocsUri()) echo sprintf('<a target="_blank" class="page-title-action" href="%s">' . __('Documentation', 'content-egg') . '</a>', $docs_uri); ?>
37
  </h3>
38
 
90
 
91
  <?php if (!empty($module) && $module->isFeedModule()): ?>
92
  <?php if ($last_date = $module->getLastImportDateReadable()): ?>
93
+ <?php $prod_count = $module->getProductCount(); ?>
94
+ <li><?php echo sprintf(__('Last feed import: %s.', 'content-egg'), $last_date); ?></li>
95
+ <li><?php echo sprintf(__('Total products: %d.', 'content-egg'), $prod_count); ?></li>
96
  <?php endif; ?>
97
+ <li title="<?php echo \esc_attr(__('Your unzipped feed must be smaller than this.', 'content-egg')); ?>"><?php echo sprintf(__('WordPress memory limit: %s', 'content-egg'), \WP_MAX_MEMORY_LIMIT); ?>
98
  (<a href="https://wordpress.org/support/article/editing-wp-config-php/#increasing-memory-allocated-to-php" target="_blank">?</a>)
99
  </li>
100
  <?php if ($last_error = $module->getLastImportError()): ?>
101
+ <li style="color: red;"><?php echo sprintf(__('Last error: %s', 'content-egg'), $last_error); ?></li>
102
+ <?php endif; ?>
103
+
104
+ <?php if ($last_date && $prod_count): ?>
105
+ <hr /><br />
106
+ <div><a target="_blank" class="page-title-action" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=feed-export&field=url&module=' . urlencode($module->getId())); ?>"><?php _e('Export product URLs', 'content-egg') ?></a></div>
107
+ <br />
108
+ <div><a target="_blank" class="page-title-action" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=feed-export&field=ean&module=' . urlencode($module->getId())); ?>"><?php _e('Export product EANs', 'content-egg') ?></a></div>
109
+ <br />
110
+ <div><a target="_blank" class="page-title-action" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=feed-export&field=ean_dublicate&module=' . urlencode($module->getId())); ?>"><?php _e('Export dublicate EANs', 'content-egg') ?></a></div>
111
  <?php endif; ?>
112
+
113
+ <?php endif; ?>
114
+
115
  </div>
116
  </div>
117
  </div>
application/admin/views/prefill.php CHANGED
@@ -33,6 +33,8 @@ use ContentEgg\application\admin\GeneralConfig;
33
  <option value="15000">15</option>
34
  <option value="20000">20</option>
35
  <option value="30000">30</option>
 
 
36
  </select>
37
  <p class="description"><?php _e('Delay in seconds between each post prefill.', 'content-egg'); ?></p>
38
 
@@ -42,7 +44,7 @@ use ContentEgg\application\admin\GeneralConfig;
42
  <th scope="row"><label for="module_id"><?php _e('Add data for module', 'content-egg'); ?></label></th>
43
  <td>
44
  <select id="module_id">
45
- <?php foreach (ModuleManager::getInstance()->getParserModules() as $module): ?>
46
  <option value="<?php echo $module->getId(); ?>"><?php echo esc_html($module->getName()); ?></option>
47
  <?php endforeach; ?>
48
  </select>
@@ -52,12 +54,15 @@ use ContentEgg\application\admin\GeneralConfig;
52
  <th scope="row"><label for="keyword_source"><?php _e('Keyword source', 'content-egg'); ?></label></th>
53
  <td>
54
  <select id="keyword_source">
55
- <option value="_density"><?php _e('Calculate as base of the density of keywords inside post', 'content-egg'); ?></option>
56
- <option value="_title"><?php _e('Title for post', 'content-egg'); ?></option>
57
  <option value="_tags"><?php _e('Post tags', 'content-egg'); ?></option>
58
  <option value="_custom_field"><?php _e('Arbitrary custom field', 'content-egg'); ?></option>
59
- <?php foreach (ModuleManager::getInstance()->getAffiliateParsers() as $module): ?>
60
- <option value="<?php echo $module->getId(); ?>"><?php _e('Copy from', 'content-egg'); ?> <?php echo esc_html($module->getName()); ?></option>
 
 
 
61
  <?php endforeach; ?>
62
  </select>
63
  <input style="display: none;" id="custom_field" type="text" class="regular-text" placeholder="<?php _e('Set the name of a custom field', 'content-egg'); ?>">
@@ -142,7 +147,7 @@ use ContentEgg\application\admin\GeneralConfig;
142
  <div>
143
  <br>
144
  <button class="button-primary" type="button" id="start_prefill"><?php _e('Start', 'content-egg'); ?></button>
145
- <button class="button-primary" type="button" id="start_prefill_begin"><?php _e('Start over', 'content-egg'); ?></button>
146
  <button class="button-secondary" type="button" id="stop_prefill" disabled><?php _e('Stop', 'content-egg'); ?></button>
147
 
148
  <span id="ajaxWaiting__" style="display:none;"><img src="<?php echo \ContentEgg\PLUGIN_RES . '/img/ajax-loader.gif' ?>" /></span>
33
  <option value="15000">15</option>
34
  <option value="20000">20</option>
35
  <option value="30000">30</option>
36
+ <option value="0">0</option>
37
+
38
  </select>
39
  <p class="description"><?php _e('Delay in seconds between each post prefill.', 'content-egg'); ?></p>
40
 
44
  <th scope="row"><label for="module_id"><?php _e('Add data for module', 'content-egg'); ?></label></th>
45
  <td>
46
  <select id="module_id">
47
+ <?php foreach (ModuleManager::getInstance()->getParserModules(true) as $module): ?>
48
  <option value="<?php echo $module->getId(); ?>"><?php echo esc_html($module->getName()); ?></option>
49
  <?php endforeach; ?>
50
  </select>
54
  <th scope="row"><label for="keyword_source"><?php _e('Keyword source', 'content-egg'); ?></label></th>
55
  <td>
56
  <select id="keyword_source">
57
+ <option value="_title"><?php _e('Post title', 'content-egg'); ?></option>
58
+ <option value="_density"><?php _e('Keyword density', 'content-egg'); ?></option>
59
  <option value="_tags"><?php _e('Post tags', 'content-egg'); ?></option>
60
  <option value="_custom_field"><?php _e('Arbitrary custom field', 'content-egg'); ?></option>
61
+ <?php foreach (ModuleManager::getInstance()->getAffiliateParsers(true) as $module): ?>
62
+ <option value="_keyword_<?php echo $module->getId(); ?>"><?php echo \esc_html($module->getName() . ': ' . __('autoupdate keyword', 'content-egg')); ?> </option>
63
+ <?php endforeach; ?>
64
+ <?php foreach (ModuleManager::getInstance()->getAffiliateParsers(true) as $module): ?>
65
+ <option value="_ean_<?php echo $module->getId(); ?>"><?php echo \esc_html($module->getName() . ': ' . __('EAN', 'content-egg')); ?> </option>
66
  <?php endforeach; ?>
67
  </select>
68
  <input style="display: none;" id="custom_field" type="text" class="regular-text" placeholder="<?php _e('Set the name of a custom field', 'content-egg'); ?>">
147
  <div>
148
  <br>
149
  <button class="button-primary" type="button" id="start_prefill"><?php _e('Start', 'content-egg'); ?></button>
150
+ <button class="button-primary" type="button" id="start_prefill_begin"><?php _e('Restart', 'content-egg'); ?></button>
151
  <button class="button-secondary" type="button" id="stop_prefill" disabled><?php _e('Stop', 'content-egg'); ?></button>
152
 
153
  <span id="ajaxWaiting__" style="display:none;"><img src="<?php echo \ContentEgg\PLUGIN_RES . '/img/ajax-loader.gif' ?>" /></span>
application/admin/views/settings.php CHANGED
@@ -7,7 +7,7 @@
7
  <h2>
8
  <?php _e('Content Egg Settings', 'content-egg'); ?>
9
  <?php if (\ContentEgg\application\Plugin::isPro()): ?>
10
- <span class="cegg-pro-label">pro</span>
11
  <?php else: ?>
12
  <a target="_blank" class="page-title-action" href="<?php echo \ContentEgg\application\Plugin::pluginSiteUrl(); ?>">Go PRO</a>
13
  <?php endif; ?>
7
  <h2>
8
  <?php _e('Content Egg Settings', 'content-egg'); ?>
9
  <?php if (\ContentEgg\application\Plugin::isPro()): ?>
10
+ <span class="egg-label egg-label-pro">pro <small>v<?php echo \ContentEgg\application\Plugin::version(); ?></small></span>
11
  <?php else: ?>
12
  <a target="_blank" class="page-title-action" href="<?php echo \ContentEgg\application\Plugin::pluginSiteUrl(); ?>">Go PRO</a>
13
  <?php endif; ?>
application/components/AffiliateFeedParserModule.php CHANGED
@@ -39,12 +39,12 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
39
  $this->product_model = $this->getProductModel();
40
 
41
  // download feed in background
42
- \add_action('cegg_' . $this->getId() . '_init_products', array(get_called_class(), 'initProducts'));
43
  }
44
 
45
- public static function initProducts()
46
  {
47
- $m = ModuleManager::factory(static::getIdStatic());
48
 
49
  try
50
  {
@@ -227,6 +227,8 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
227
 
228
  protected function processFeed($file)
229
  {
 
 
230
  $handle = fopen($file, "r");
231
  $fields = array();
232
  $products = array();
@@ -236,6 +238,9 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
236
  $i = 0;
237
  while (($data = fgetcsv($handle, 0, $delimer)) !== false)
238
  {
 
 
 
239
  if (!$fields)
240
  {
241
  $fields = $data;
@@ -245,8 +250,19 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
245
  continue;
246
  $data = array_combine($fields, $data);
247
 
248
- if (!$product = $this->feedProductPrepare($data))
 
 
 
 
 
 
 
 
 
 
249
  continue;
 
250
  if (!empty($product['ean']))
251
  $product['ean'] = TextHelper::fixEan($product['ean']);
252
  if ($in_stock_only && $product['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
@@ -273,7 +289,7 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
273
  return '';
274
 
275
  if ($last_import < 0)
276
- return __('Product import is in progress.', 'content-egg');
277
 
278
  if (time() - $last_import <= 43200)
279
  return sprintf(__('%s ago', '%s = human-readable time difference', 'content-egg'), \human_time_diff($last_import, time()));
39
  $this->product_model = $this->getProductModel();
40
 
41
  // download feed in background
42
+ \add_action('cegg_' . $this->getId() . '_init_products', array(get_called_class(), 'initProducts'), 10, 1);
43
  }
44
 
45
+ public static function initProducts($module_id)
46
  {
47
+ $m = ModuleManager::factory($module_id);
48
 
49
  try
50
  {
227
 
228
  protected function processFeed($file)
229
  {
230
+ $encoding = $this->config('encoding', 'UTF-8');
231
+
232
  $handle = fopen($file, "r");
233
  $fields = array();
234
  $products = array();
238
  $i = 0;
239
  while (($data = fgetcsv($handle, 0, $delimer)) !== false)
240
  {
241
+ if ($encoding == 'ISO-8859-1')
242
+ $data = array_map('utf8_encode', $data);
243
+
244
  if (!$fields)
245
  {
246
  $fields = $data;
250
  continue;
251
  $data = array_combine($fields, $data);
252
 
253
+ try
254
+ {
255
+ $product = $this->feedProductPrepare($data);
256
+ } catch (\Exception $e)
257
+ {
258
+ $this->setLastImportError($e->getMessage());
259
+ fclose($handle);
260
+ return;
261
+ }
262
+
263
+ if (!$product)
264
  continue;
265
+
266
  if (!empty($product['ean']))
267
  $product['ean'] = TextHelper::fixEan($product['ean']);
268
  if ($in_stock_only && $product['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
289
  return '';
290
 
291
  if ($last_import < 0)
292
+ return __('Product import is in progress', 'content-egg');
293
 
294
  if (time() - $last_import <= 43200)
295
  return sprintf(__('%s ago', '%s = human-readable time difference', 'content-egg'), \human_time_diff($last_import, time()));
application/components/AffiliateFeedParserModuleConfig.php CHANGED
@@ -51,7 +51,7 @@ abstract class AffiliateFeedParserModuleConfig extends AffiliateParserModuleConf
51
  'description' => __('Partial URL match', 'content-egg')
52
  . '<p class="description">' . __('You can use part of a URL to search for products by URL.', 'content-egg') . '</p>',
53
  'callback' => array($this, 'render_checkbox'),
54
- 'default' => false,
55
  'section' => 'default',
56
  ),
57
  'save_img' => array(
@@ -61,8 +61,8 @@ abstract class AffiliateFeedParserModuleConfig extends AffiliateParserModuleConf
61
  'default' => false,
62
  'section' => 'default',
63
  )));
64
-
65
- $options['update_mode']['dropdown_options'] = array('cron' => __('By schedule (WP cron)', 'content-egg'));
66
  $options['update_mode']['default'] = 'cron';
67
  $options['update_mode']['validator'][] = array(
68
  'call' => array($this, 'emptyLastImportDate'),
@@ -78,8 +78,11 @@ abstract class AffiliateFeedParserModuleConfig extends AffiliateParserModuleConf
78
 
79
  // download feed in background
80
  $hook = 'cegg_' . $this->getModuleId() . '_init_products';
 
81
  if ($this->option('is_active') && !\wp_next_scheduled($hook))
82
- \wp_schedule_single_event(time(), $hook);
 
 
83
 
84
  return true;
85
  }
51
  'description' => __('Partial URL match', 'content-egg')
52
  . '<p class="description">' . __('You can use part of a URL to search for products by URL.', 'content-egg') . '</p>',
53
  'callback' => array($this, 'render_checkbox'),
54
+ 'default' => true,
55
  'section' => 'default',
56
  ),
57
  'save_img' => array(
61
  'default' => false,
62
  'section' => 'default',
63
  )));
64
+
65
+ $options['update_mode']['dropdown_options'] = array('cron' => __('Cron', 'content-egg'));
66
  $options['update_mode']['default'] = 'cron';
67
  $options['update_mode']['validator'][] = array(
68
  'call' => array($this, 'emptyLastImportDate'),
78
 
79
  // download feed in background
80
  $hook = 'cegg_' . $this->getModuleId() . '_init_products';
81
+
82
  if ($this->option('is_active') && !\wp_next_scheduled($hook))
83
+ {
84
+ \wp_schedule_single_event(time() + 1, $hook, array('module_id' => $this->getModuleId()));
85
+ }
86
 
87
  return true;
88
  }
application/components/AffiliateParserModule.php CHANGED
@@ -11,7 +11,7 @@ use ContentEgg\application\helpers\TextHelper;
11
  *
12
  * @author keywordrush.com <support@keywordrush.com>
13
  * @link https://www.keywordrush.com
14
- * @copyright Copyright &copy; 2020 keywordrush.com
15
  */
16
  abstract class AffiliateParserModule extends ParserModule {
17
 
@@ -40,7 +40,7 @@ abstract class AffiliateParserModule extends ParserModule {
40
  else
41
  return false;
42
  }
43
-
44
  public function isItemsUpdateAvailable()
45
  {
46
  return false;
11
  *
12
  * @author keywordrush.com <support@keywordrush.com>
13
  * @link https://www.keywordrush.com
14
+ * @copyright Copyright &copy; 2021 keywordrush.com
15
  */
16
  abstract class AffiliateParserModule extends ParserModule {
17
 
40
  else
41
  return false;
42
  }
43
+
44
  public function isItemsUpdateAvailable()
45
  {
46
  return false;
application/components/AffiliateParserModuleConfig.php CHANGED
@@ -48,9 +48,9 @@ abstract class AffiliateParserModuleConfig extends ParserModuleConfig {
48
  'description' => '',
49
  'callback' => array($this, 'render_dropdown'),
50
  'dropdown_options' => array(
51
- 'visit' => __('By page view', 'content-egg'),
52
- 'cron' => __('By schedule (WP cron)', 'content-egg'),
53
- 'visit_cron' => __('By page view and by schedule', 'content-egg'),
54
  ),
55
  'default' => 'visit',
56
  );
48
  'description' => '',
49
  'callback' => array($this, 'render_dropdown'),
50
  'dropdown_options' => array(
51
+ 'visit' => __('Page view', 'content-egg'),
52
+ 'cron' => __('Cron', 'content-egg'),
53
+ 'visit_cron' => __('Page view + Cron', 'content-egg'),
54
  ),
55
  'default' => 'visit',
56
  );
application/components/Config.php CHANGED
@@ -181,7 +181,7 @@ abstract class Config {
181
  {
182
  echo '<textarea name="' . esc_attr($args['option_name']) . '['
183
  . esc_attr($args['name']) . ']" id="'
184
- . esc_attr($args['label_for']) . '" rows="4" class="large-text code">' . esc_html($args['value']) . '</textarea>';
185
  if (!empty($args['render_after']))
186
  echo $args['render_after'];
187
  if ($args['description'])
181
  {
182
  echo '<textarea name="' . esc_attr($args['option_name']) . '['
183
  . esc_attr($args['name']) . ']" id="'
184
+ . esc_attr($args['label_for']) . '" rows="2" class="large-text code">' . esc_html($args['value']) . '</textarea>';
185
  if (!empty($args['render_after']))
186
  echo $args['render_after'];
187
  if ($args['description'])
application/components/ContentManager.php CHANGED
@@ -17,8 +17,8 @@ use ContentEgg\application\helpers\TextHelper;
17
  * ContentManager class file
18
  *
19
  * @author keywordrush.com <support@keywordrush.com>
20
- * @link http://www.keywordrush.com/
21
- * @copyright Copyright &copy; 2015 keywordrush.com
22
  */
23
  class ContentManager {
24
 
@@ -160,8 +160,10 @@ class ContentManager {
160
  if ($key == 'img')
161
  $data = \esc_url_raw($data);
162
  else
 
163
  $data = \wp_sanitize_redirect($data);
164
- $data = filter_var($data, FILTER_SANITIZE_URL);
 
165
  } elseif ($key === 'description')
166
  $data = TextHelper::sanitizeHtml($data);
167
  elseif ($key === 'linkHtml')
@@ -210,6 +212,13 @@ class ContentManager {
210
 
211
  $data = self::$_view_data[$data_id];
212
 
 
 
 
 
 
 
 
213
  // out of stock products
214
  $outofstock_product = GeneralConfig::getInstance()->option('outofstock_product');
215
  //@see: ModuleViewer::getData for hide_product filter
@@ -273,7 +282,7 @@ class ContentManager {
273
  public static function dataPreviewPrepare(array $data, $module_id, $post_id, $params = array())
274
  {
275
  $is_ssl = \is_ssl();
276
- $http_home_url = str_replace('https://', 'http://', \home_url('/'));
277
  foreach ($data as $key => $d)
278
  {
279
  if (empty($data[$key]['extra']) || !is_array($data[$key]['extra']))
@@ -289,8 +298,8 @@ class ContentManager {
289
  elseif (empty($d['logo']) && isset($d['extra']['logo']))
290
  $data[$key]['logo'] = $d['extra']['logo'];
291
 
292
- // https fix for local images
293
- if ($is_ssl && strstr($d['img'], $http_home_url))
294
  $data[$key]['img'] = str_replace('http://', '//', $d['img']);
295
 
296
  if (isset($d['percentageSaved']))
@@ -303,15 +312,15 @@ class ContentManager {
303
 
304
  if (empty($d['rating']) && isset($d['extra']['data']['rating']))
305
  $data[$key]['rating'] = $d['extra']['data']['rating'];
306
-
307
  if (isset($data[$key]['rating']))
308
  {
309
- $data[$key]['rating'] = (float) $data[$key]['rating'];
310
  if ($data[$key]['rating'] < 0 || $data[$key]['rating'] > 5)
311
  $data[$key]['rating'] = 0;
312
- $data[$key]['rating'] = round(($data[$key]['rating'] * 2) / 2);
313
  }
314
-
315
  $data[$key]['post_id'] = $post_id;
316
  $data[$key]['module_id'] = $module_id;
317
  }
@@ -336,6 +345,8 @@ class ContentManager {
336
  public static function updateByKeyword($post_id, $module_id)
337
  {
338
  $keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, true);
 
 
339
  if (!$keyword)
340
  return;
341
 
@@ -521,8 +532,10 @@ class ContentManager {
521
  $is_review_post_type = false;
522
 
523
  if (\get_post_type($post_id) == 'product')
 
524
  $is_woo_product = true;
525
- else
 
526
  $is_woo_product = false;
527
 
528
  $comments_keys_map = array();
@@ -580,11 +593,11 @@ class ContentManager {
580
  }
581
  }
582
 
 
 
 
583
  if ($is_woo_product && class_exists('\WC_Comments'))
584
- {
585
- // Ensure product average rating and review count is kept up to date.
586
  \WC_Comments::clear_transients($post_id);
587
- }
588
  }
589
 
590
  public static function getMainProduct($modules_data, $main_product_selector = 'min_price')
17
  * ContentManager class file
18
  *
19
  * @author keywordrush.com <support@keywordrush.com>
20
+ * @link https://www.keywordrush.com
21
+ * @copyright Copyright &copy; 2021 keywordrush.com
22
  */
23
  class ContentManager {
24
 
160
  if ($key == 'img')
161
  $data = \esc_url_raw($data);
162
  else
163
+ {
164
  $data = \wp_sanitize_redirect($data);
165
+ $data = filter_var($data, FILTER_SANITIZE_URL);
166
+ }
167
  } elseif ($key === 'description')
168
  $data = TextHelper::sanitizeHtml($data);
169
  elseif ($key === 'linkHtml')
212
 
213
  $data = self::$_view_data[$data_id];
214
 
215
+
216
+ foreach ($data as $key => $d)
217
+ {
218
+ if (!$key)
219
+ unset($data[$key]);
220
+ }
221
+
222
  // out of stock products
223
  $outofstock_product = GeneralConfig::getInstance()->option('outofstock_product');
224
  //@see: ModuleViewer::getData for hide_product filter
282
  public static function dataPreviewPrepare(array $data, $module_id, $post_id, $params = array())
283
  {
284
  $is_ssl = \is_ssl();
285
+ //$http_home_url = str_replace('https://', 'http://', \home_url('/'));
286
  foreach ($data as $key => $d)
287
  {
288
  if (empty($data[$key]['extra']) || !is_array($data[$key]['extra']))
298
  elseif (empty($d['logo']) && isset($d['extra']['logo']))
299
  $data[$key]['logo'] = $d['extra']['logo'];
300
 
301
+ // https fix for all images
302
+ if ($is_ssl && isset($data[$key]['img']))
303
  $data[$key]['img'] = str_replace('http://', '//', $d['img']);
304
 
305
  if (isset($d['percentageSaved']))
312
 
313
  if (empty($d['rating']) && isset($d['extra']['data']['rating']))
314
  $data[$key]['rating'] = $d['extra']['data']['rating'];
315
+
316
  if (isset($data[$key]['rating']))
317
  {
318
+ $data[$key]['rating'] = (float) $data[$key]['rating'];
319
  if ($data[$key]['rating'] < 0 || $data[$key]['rating'] > 5)
320
  $data[$key]['rating'] = 0;
321
+ $data[$key]['rating'] = round(($data[$key]['rating'] * 2) / 2);
322
  }
323
+
324
  $data[$key]['post_id'] = $post_id;
325
  $data[$key]['module_id'] = $module_id;
326
  }
345
  public static function updateByKeyword($post_id, $module_id)
346
  {
347
  $keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, true);
348
+ $keyword = \apply_filters('cegg_keyword_update', $keyword, $post_id, $module_id);
349
+
350
  if (!$keyword)
351
  return;
352
 
532
  $is_review_post_type = false;
533
 
534
  if (\get_post_type($post_id) == 'product')
535
+ {
536
  $is_woo_product = true;
537
+ $comment_data['comment_type'] = 'review';
538
+ } else
539
  $is_woo_product = false;
540
 
541
  $comments_keys_map = array();
593
  }
594
  }
595
 
596
+ if ($is_woo_product)
597
+ \update_post_meta($post_id, '_wc_review_count', count($normalized_comments));
598
+
599
  if ($is_woo_product && class_exists('\WC_Comments'))
 
 
600
  \WC_Comments::clear_transients($post_id);
 
601
  }
602
 
603
  public static function getMainProduct($modules_data, $main_product_selector = 'min_price')
application/components/LinkHandler.php CHANGED
@@ -156,7 +156,7 @@ class LinkHandler {
156
  $replacement = substr($parts[2], 0, -1);
157
 
158
  // null character allows a premature regex end and "/../e" injection
159
- if (strpos($pattern, 0) !== false || !trim($pattern))
160
  return $url;
161
 
162
  if ($result = @preg_replace($pattern, $replacement, $url))
156
  $replacement = substr($parts[2], 0, -1);
157
 
158
  // null character allows a premature regex end and "/../e" injection
159
+ if (strpos($pattern, chr(0)) !== false || !trim($pattern))
160
  return $url;
161
 
162
  if ($result = @preg_replace($pattern, $replacement, $url))
application/components/Module.php CHANGED
@@ -210,14 +210,14 @@ abstract class Module {
210
 
211
  public static function getPathId($module_id)
212
  {
213
- // AE module?
214
  $parts = explode('__', $module_id);
215
  return $parts[0];
216
  }
217
 
218
  public function getShortId($module_id)
219
  {
220
- // AE module?
221
  $parts = explode('__', $module_id);
222
  if (count($parts) == 2)
223
  return $parts[1];
210
 
211
  public static function getPathId($module_id)
212
  {
213
+ // AE or Feed module?
214
  $parts = explode('__', $module_id);
215
  return $parts[0];
216
  }
217
 
218
  public function getShortId($module_id)
219
  {
220
+ // AE or Feed module?
221
  $parts = explode('__', $module_id);
222
  if (count($parts) == 2)
223
  return $parts[1];
application/components/ModuleConfig.php CHANGED
@@ -58,7 +58,7 @@ abstract class ModuleConfig extends Config {
58
 
59
  public function add_admin_menu()
60
  {
61
- \add_submenu_page('options.php', $this->getModuleId() . ' ' . __('settings', 'content-egg') . ' &lsaquo; Content Egg', '', 'manage_options', $this->page_slug(), array($this, 'settings_page'));
62
  }
63
 
64
  public function settings_page()
58
 
59
  public function add_admin_menu()
60
  {
61
+ \add_submenu_page('options.php', $this->getModuleName() . ' ' . __('settings', 'content-egg') . ' &lsaquo; Content Egg', '', 'manage_options', $this->page_slug(), array($this, 'settings_page'));
62
  }
63
 
64
  public function settings_page()
application/components/ModuleManager.php CHANGED
@@ -12,21 +12,23 @@ use \ContentEgg\application\admin\AeIntegrationConfig;
12
  * ModuleManager class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2016 keywordrush.com
17
  */
18
  class ModuleManager {
19
 
20
  const DEFAULT_MODULES_DIR = 'application/modules';
21
  const AE_MODULES_PREFIX = 'AE';
 
 
22
 
23
  private static $modules = array();
24
  private static $active_modules = array();
25
  private static $configs = array();
26
  private static $instance = null;
27
  // hidden system modules
28
- private static $hidden_modules = array('AE');
29
- private static $custom_modules = array('AE');
30
 
31
  public static function getInstance()
32
  {
@@ -43,7 +45,6 @@ class ModuleManager {
43
 
44
  public function adminInit()
45
  {
46
- //\add_action('parent_file', array($this, 'highlightAdminMenu'));
47
  foreach ($this->getConfigurableModules() as $module)
48
  {
49
  $config = self::configFactory($module->getId());
@@ -60,12 +61,10 @@ class ModuleManager {
60
 
61
  if (substr($plugin_page, 0, strlen(Plugin::slug())) !== Plugin::slug())
62
  return $parent_file;
63
- //\ContentEgg\prn($parent_file);
64
- //\ContentEgg\prnx($plugin_page);
65
 
66
  if ($parent_file == 'options.php' && $plugin_page == 'content-egg-settings-affiliate')
67
  $plugin_page = 'content-egg-settings-affiliate';
68
-
69
  return $parent_file;
70
  }
71
 
@@ -78,12 +77,15 @@ class ModuleManager {
78
 
79
  sort($modules_ids);
80
 
 
 
 
81
  $ae_modules_ids = $this->getAffEggModules();
82
  sort($ae_modules_ids);
83
 
84
- $modules_ids = array_merge($modules_ids, $ae_modules_ids);
85
  $modules_ids = \apply_filters('content_egg_modules', $modules_ids);
86
-
87
  // create modules
88
  foreach ($modules_ids as $module_id)
89
  {
@@ -157,6 +159,27 @@ class ModuleManager {
157
  return $result;
158
  }
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  public static function isCustomModule($module_id)
161
  {
162
  if (in_array($module_id, self::$custom_modules))
@@ -188,7 +211,7 @@ class ModuleManager {
188
 
189
  self::$modules[$module_id] = $module;
190
  }
191
-
192
  return self::$modules[$module_id];
193
  }
194
 
@@ -316,7 +339,7 @@ class ModuleManager {
316
  }
317
  return $result;
318
  }
319
-
320
  public function moduleExists($module_id)
321
  {
322
  if (isset(self::$modules[$module_id]))
@@ -341,7 +364,7 @@ class ModuleManager {
341
  $config = $module->getConfigInstance();
342
  $options[$config->option_name()] = $config->getOptionValues();
343
  //$opt_name = $module->getConfigInstance()->option_name();
344
- //$options[$opt_name] = \get_option($opt_name);
345
  }
346
  return $options;
347
  }
@@ -378,10 +401,27 @@ class ModuleManager {
378
  {
379
  $results = array();
380
  $modules = ModuleManager::getInstance()->getAffiliateParsers($only_active);
 
381
  foreach ($modules as $module_id => $module)
382
  {
383
- $results[$module_id] = $module->getName();
 
 
 
 
 
 
 
 
 
 
 
 
 
384
  }
 
 
 
385
  return $results;
386
  }
387
 
12
  * ModuleManager class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
+ * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
  */
18
  class ModuleManager {
19
 
20
  const DEFAULT_MODULES_DIR = 'application/modules';
21
  const AE_MODULES_PREFIX = 'AE';
22
+ const FEED_MODULES_PREFIX = 'Feed';
23
+ const MAX_NUM_FEED_MODULES = 25;
24
 
25
  private static $modules = array();
26
  private static $active_modules = array();
27
  private static $configs = array();
28
  private static $instance = null;
29
  // hidden system modules
30
+ private static $hidden_modules = array('AE', 'Feed');
31
+ private static $custom_modules = array();
32
 
33
  public static function getInstance()
34
  {
45
 
46
  public function adminInit()
47
  {
 
48
  foreach ($this->getConfigurableModules() as $module)
49
  {
50
  $config = self::configFactory($module->getId());
61
 
62
  if (substr($plugin_page, 0, strlen(Plugin::slug())) !== Plugin::slug())
63
  return $parent_file;
 
 
64
 
65
  if ($parent_file == 'options.php' && $plugin_page == 'content-egg-settings-affiliate')
66
  $plugin_page = 'content-egg-settings-affiliate';
67
+
68
  return $parent_file;
69
  }
70
 
77
 
78
  sort($modules_ids);
79
 
80
+ $feed_modules_ids = $this->getFeedModules();
81
+ natsort($feed_modules_ids);
82
+
83
  $ae_modules_ids = $this->getAffEggModules();
84
  sort($ae_modules_ids);
85
 
86
+ $modules_ids = array_merge($modules_ids, $feed_modules_ids, $ae_modules_ids);
87
  $modules_ids = \apply_filters('content_egg_modules', $modules_ids);
88
+
89
  // create modules
90
  foreach ($modules_ids as $module_id)
91
  {
159
  return $result;
160
  }
161
 
162
+ private function getFeedModules()
163
+ {
164
+ $result = array();
165
+
166
+ for ($i = 1; $i <= self::MAX_NUM_FEED_MODULES; $i++)
167
+ {
168
+ if (get_option('content-egg_Feed__' . $i))
169
+ $result[] = self::FEED_MODULES_PREFIX . '__' . $i;
170
+ else
171
+ break;
172
+ }
173
+
174
+ if (count($result) < self::MAX_NUM_FEED_MODULES)
175
+ {
176
+ $num = count($result) + 1;
177
+ $result[] = self::FEED_MODULES_PREFIX . '__' . $num;
178
+ }
179
+
180
+ return $result;
181
+ }
182
+
183
  public static function isCustomModule($module_id)
184
  {
185
  if (in_array($module_id, self::$custom_modules))
211
 
212
  self::$modules[$module_id] = $module;
213
  }
214
+
215
  return self::$modules[$module_id];
216
  }
217
 
339
  }
340
  return $result;
341
  }
342
+
343
  public function moduleExists($module_id)
344
  {
345
  if (isset(self::$modules[$module_id]))
364
  $config = $module->getConfigInstance();
365
  $options[$config->option_name()] = $config->getOptionValues();
366
  //$opt_name = $module->getConfigInstance()->option_name();
367
+ //$options[$opt_name] = \get_option($opt_name);
368
  }
369
  return $options;
370
  }
401
  {
402
  $results = array();
403
  $modules = ModuleManager::getInstance()->getAffiliateParsers($only_active);
404
+ $feeds = array();
405
  foreach ($modules as $module_id => $module)
406
  {
407
+ /*
408
+ if ($module->isFeedParser())
409
+ $feeds[$module_id] = $module->getName();
410
+ else
411
+ *
412
+ */
413
+ $results[$module_id] = $module->getName();
414
+ }
415
+
416
+ /*
417
+ if ($feeds)
418
+ {
419
+ array_pop($feeds);
420
+ $results = array_merge($results, $feeds);
421
  }
422
+ *
423
+ */
424
+
425
  return $results;
426
  }
427
 
application/components/ModuleTemplateManager.php CHANGED
@@ -11,8 +11,8 @@ use ContentEgg\application\components\ModuleManager;
11
  * ModuleTemplateManager class file
12
  *
13
  * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
  */
17
  class ModuleTemplateManager extends TemplateManager {
18
 
11
  * ModuleTemplateManager class file
12
  *
13
  * @author keywordrush.com <support@keywordrush.com>
14
+ * @link https://www.keywordrush.com
15
+ * @copyright Copyright &copy; 2021 keywordrush.com
16
  */
17
  class ModuleTemplateManager extends TemplateManager {
18
 
application/components/ParserModule.php CHANGED
@@ -8,13 +8,14 @@ use ContentEgg\application\helpers\ImageHelper;
8
  use ContentEgg\application\helpers\TextHelper;
9
  use ContentEgg\application\LocalRedirect;
10
  use ContentEgg\application\admin\GeneralConfig;
 
11
 
12
  /**
13
  * ParserModule abstract class file
14
  *
15
  * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
  */
19
  abstract class ParserModule extends Module {
20
 
@@ -133,11 +134,39 @@ abstract class ParserModule extends Module {
133
  {
134
  foreach ($data as $key => $d)
135
  {
136
- $data[$key]['aff_url'] = $d['url']; // url without redirect
 
 
137
  $data[$key]['url'] = LocalRedirect::createRedirectUrl($d);
138
  }
139
  }
140
  return $data;
141
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
 
143
  }
8
  use ContentEgg\application\helpers\TextHelper;
9
  use ContentEgg\application\LocalRedirect;
10
  use ContentEgg\application\admin\GeneralConfig;
11
+ use ContentEgg\application\Plugin;
12
 
13
  /**
14
  * ParserModule abstract class file
15
  *
16
  * @author keywordrush.com <support@keywordrush.com>
17
+ * @link https://www.keywordrush.com
18
+ * @copyright Copyright &copy; 2021 keywordrush.com
19
  */
20
  abstract class ParserModule extends Module {
21
 
134
  {
135
  foreach ($data as $key => $d)
136
  {
137
+ if (isset($d['url']))
138
+ $data[$key]['aff_url'] = $d['url']; // url without redirect
139
+
140
  $data[$key]['url'] = LocalRedirect::createRedirectUrl($d);
141
  }
142
  }
143
  return $data;
144
  }
145
+
146
+ public function getAccessToken($force = false)
147
+ {
148
+ $transient_name = Plugin::slug() . '-' . $this->getId() . '-access_token';
149
+ $token = \get_transient($transient_name);
150
+ if (!$token || $force)
151
+ {
152
+ try
153
+ {
154
+ list($token, $expires_in) = $this->requestAccessToken();
155
+ } catch (\Exception $e)
156
+ {
157
+ return false;
158
+ }
159
+ \set_transient($transient_name, $token, (int) $expires_in);
160
+ }
161
+ return $token;
162
+ }
163
+
164
+ public function isFeedParser()
165
+ {
166
+ if ($this->getIdStatic() == ModuleManager::FEED_MODULES_PREFIX)
167
+ return true;
168
+ else
169
+ return false;
170
+ }
171
 
172
  }
application/components/ParserModuleConfig.php CHANGED
@@ -31,15 +31,14 @@ abstract class ParserModuleConfig extends ModuleConfig {
31
  ),
32
  ),
33
  'embed_at' => array(
34
- 'title' => __('Add', 'content-egg'),
35
- 'description' => __('The place for content of module. Shortcodes will work in any place regardless of the setting.', 'content-egg'),
36
  'callback' => array($this, 'render_dropdown'),
37
  'dropdown_options' => array(
 
38
  'post_bottom' => __('At the end of the post', 'content-egg'),
39
  'post_top' => __('At the beginning of the post', 'content-egg'),
40
- 'shortcode' => __('Shortcodes only', 'content-egg'),
41
  ),
42
- 'default' => 'post_bottom',
43
  'section' => 'default',
44
  ),
45
  'priority' => array(
31
  ),
32
  ),
33
  'embed_at' => array(
34
+ 'title' => __('Auto-embedding', 'content-egg'),
 
35
  'callback' => array($this, 'render_dropdown'),
36
  'dropdown_options' => array(
37
+ 'shortcode' => __('Shortcodes only', 'content-egg'),
38
  'post_bottom' => __('At the end of the post', 'content-egg'),
39
  'post_top' => __('At the beginning of the post', 'content-egg'),
 
40
  ),
41
+ 'default' => 'shortcode',
42
  'section' => 'default',
43
  ),
44
  'priority' => array(
application/components/Scheduler.php CHANGED
@@ -8,8 +8,8 @@ defined('\ABSPATH') || exit;
8
  * Scheduler class file
9
  *
10
  * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
  */
14
  abstract class Scheduler implements iScheduler {
15
 
@@ -20,17 +20,19 @@ abstract class Scheduler implements iScheduler {
20
 
21
  public static function addScheduleEvent($recurrence = 'hourly', $timestamp = null)
22
  {
23
- if (!$timestamp)
24
- $timestamp = time();
25
-
26
  if (!\wp_next_scheduled(static::getCronTag()))
 
 
 
 
27
  \wp_schedule_event($timestamp, $recurrence, static::getCronTag());
 
28
  }
29
 
30
  public static function clearScheduleEvent()
31
  {
32
  if (\wp_next_scheduled(static::getCronTag()))
33
  \wp_clear_scheduled_hook(static::getCronTag());
34
- }
35
 
36
  }
8
  * Scheduler class file
9
  *
10
  * @author keywordrush.com <support@keywordrush.com>
11
+ * @link https://www.keywordrush.com
12
+ * @copyright Copyright &copy; 2021 keywordrush.com
13
  */
14
  abstract class Scheduler implements iScheduler {
15
 
20
 
21
  public static function addScheduleEvent($recurrence = 'hourly', $timestamp = null)
22
  {
 
 
 
23
  if (!\wp_next_scheduled(static::getCronTag()))
24
+ {
25
+ if (!$timestamp)
26
+ $timestamp = time();
27
+
28
  \wp_schedule_event($timestamp, $recurrence, static::getCronTag());
29
+ }
30
  }
31
 
32
  public static function clearScheduleEvent()
33
  {
34
  if (\wp_next_scheduled(static::getCronTag()))
35
  \wp_clear_scheduled_hook(static::getCronTag());
36
+ }
37
 
38
  }
application/components/TemplateManager.php CHANGED
@@ -12,8 +12,8 @@ use ContentEgg\application\helpers\TemplateHelper;
12
  * TemplateManager class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2015 keywordrush.com
17
  */
18
  abstract class TemplateManager {
19
 
@@ -231,6 +231,9 @@ abstract class TemplateManager {
231
 
232
  \wp_enqueue_style('egg-bootstrap');
233
  \wp_enqueue_style('egg-products');
 
 
 
234
 
235
  if (!$background = \wp_strip_all_tags(GeneralConfig::getInstance()->option('button_color')))
236
  $background = '#dc3545';
12
  * TemplateManager class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
+ * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
  */
18
  abstract class TemplateManager {
19
 
231
 
232
  \wp_enqueue_style('egg-bootstrap');
233
  \wp_enqueue_style('egg-products');
234
+
235
+ if (GeneralConfig::isShopInfoAvailable())
236
+ \wp_enqueue_script('bootstrap-popover');
237
 
238
  if (!$background = \wp_strip_all_tags(GeneralConfig::getInstance()->option('button_color')))
239
  $background = '#dc3545';
application/helpers/AdminHelper.php CHANGED
@@ -82,7 +82,7 @@ class AdminHelper {
82
  if ($module->isDeprecated() && !$module->isActive())
83
  continue;
84
 
85
- if ($module->isAffiliateParser() && $module->isProductParser() && !$module->isAeParser())
86
  $results[] = $module;
87
  }
88
 
@@ -104,6 +104,22 @@ class AdminHelper {
104
 
105
  return $results;
106
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
  public static function getCouponModules()
109
  {
82
  if ($module->isDeprecated() && !$module->isActive())
83
  continue;
84
 
85
+ if ($module->isAffiliateParser() && $module->isProductParser() && !$module->isAeParser() && !$module->isFeedParser())
86
  $results[] = $module;
87
  }
88
 
104
 
105
  return $results;
106
  }
107
+
108
+ public static function getFeedProductModules()
109
+ {
110
+ $modules = ModuleManager::getInstance()->getConfigurableModules();
111
+ $results = array();
112
+ foreach ($modules as $module)
113
+ {
114
+ if ($module->isDeprecated() && !$module->isActive())
115
+ continue;
116
+
117
+ if ($module->isAffiliateParser() && $module->isProductParser() && $module->isFeedParser())
118
+ $results[] = $module;
119
+ }
120
+
121
+ return $results;
122
+ }
123
 
124
  public static function getCouponModules()
125
  {
application/helpers/CurrencyHelper.php CHANGED
@@ -267,8 +267,8 @@ class CurrencyHelper {
267
  'TRY' => array(
268
  'currency_symbol' => 'TL',
269
  'currency_pos' => 'right_space',
270
- 'thousand_sep' => ',',
271
- 'decimal_sep' => '.',
272
  'num_decimals' => 2,
273
  'name' => 'Turkish Lira',
274
  ),
267
  'TRY' => array(
268
  'currency_symbol' => 'TL',
269
  'currency_pos' => 'right_space',
270
+ 'thousand_sep' => '.',
271
+ 'decimal_sep' => ',',
272
  'num_decimals' => 2,
273
  'name' => 'Turkish Lira',
274
  ),
application/helpers/ImageHelper.php CHANGED
@@ -15,7 +15,7 @@ defined('\ABSPATH') || exit;
15
  class ImageHelper {
16
 
17
  const DOWNLOAD_TIMEOUT = 5;
18
- const USERAGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.15';
19
 
20
  public static function saveImgLocaly($img_uri, $title = '', $check_image_type = true)
21
  {
15
  class ImageHelper {
16
 
17
  const DOWNLOAD_TIMEOUT = 5;
18
+ const USERAGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15';
19
 
20
  public static function saveImgLocaly($img_uri, $title = '', $check_image_type = true)
21
  {
application/helpers/TemplateHelper.php CHANGED
@@ -13,21 +13,27 @@ use ContentEgg\application\components\ContentProduct;
13
  use ContentEgg\application\helpers\TextHelper;
14
  use ContentEgg\application\libs\amazon\AmazonLocales;
15
  use ContentEgg\application\modules\Amazon\AmazonConfig;
 
16
 
17
  /**
18
  * TemplateHelper class file
19
  *
20
  * @author keywordrush.com <support@keywordrush.com>
21
  * @link https://www.keywordrush.com
22
- * @copyright Copyright &copy; 2020 keywordrush.com
23
  *
24
  */
25
  class TemplateHelper {
26
 
27
  const MERHANT_LOGO_DIR = 'ce-logos';
 
 
 
 
28
 
29
  static $global_id = 0;
30
  static $logos = null;
 
31
 
32
  public static function formatPriceCurrency($price, $currencyCode, $before_symbol = '', $after_symbol = '')
33
  {
@@ -359,7 +365,7 @@ class TemplateHelper {
359
  'data' => $prices,
360
  'xkey' => 'date',
361
  'ykeys' => array('price'),
362
- 'labels' => array(__('Price', 'content-egg-tpl')),
363
  );
364
  $options = array_merge($data, $options);
365
 
@@ -523,6 +529,11 @@ class TemplateHelper {
523
  return self::getMerchantImageUrl($item, $prefix, $remote_url, $blank_on_error);
524
  }
525
 
 
 
 
 
 
526
  public static function getMerhantName(array $item, $print = false)
527
  {
528
  if (!empty($item['domain']))
@@ -534,9 +545,9 @@ class TemplateHelper {
534
  elseif ($name == 'Flipkart.com')
535
  $name = 'Flipkart';
536
  elseif ($name == 'Ebay.com')
537
- $name = 'eBay.com';
538
  elseif (strstr($name, 'Ebay.'))
539
- $name = str_replace('Ebay.', 'eBay.', $name);
540
  } elseif (!empty($item['merchant']))
541
  $name = $item['merchant'];
542
  else
@@ -632,6 +643,7 @@ class TemplateHelper {
632
  {
633
  if (!$order)
634
  $order = 'asc';
 
635
  if (!in_array($order, array('asc', 'desc')))
636
  $order = 'asc';
637
 
@@ -659,8 +671,13 @@ class TemplateHelper {
659
  if (!$rate)
660
  $rate = 1;
661
  $data[$key]['converted_price'] = (float) $d['price'] * $rate;
662
- } else
663
  $data[$key]['converted_price'] = (float) $d['price'];
 
 
 
 
 
664
  }
665
 
666
  // modules priority
@@ -679,42 +696,42 @@ class TemplateHelper {
679
  }
680
 
681
  // sort by price and priority
682
- if ($order == 'asc')
683
- {
684
- usort($data, function($a, $b) use($modules_priority) {
685
- if (!$a['price'] && !$b['price'])
686
- return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
687
 
688
- if (!$a['converted_price'])
689
- return 1;
690
- if (!$b['converted_price'])
691
- return -1;
692
 
693
- if ($a['converted_price'] == $b['converted_price'])
694
- return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
695
 
696
- return ($a['converted_price'] < $b['converted_price']) ? -1 : 1;
697
- });
698
- } else
699
- {
700
- usort($data, function($a, $b) use($modules_priority) {
701
- if (!$a['price'] && !$b['price'])
702
- return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
703
 
704
- if (!$a['converted_price'])
705
- return 1;
706
- if (!$b['converted_price'])
707
- return -1;
708
- if ($a['converted_price'] == $b['converted_price'])
 
 
709
  return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
 
 
 
 
 
 
 
710
 
711
- return ($a['converted_price'] < $b['converted_price']) ? 1 : -1;
712
- });
713
- }
714
  return $data;
715
  }
716
 
717
  public static function sortAllByPrice(array $data, $order = 'asc')
 
 
 
 
 
718
  {
719
  $all_items = array();
720
  foreach ($data as $module_id => $items)
@@ -725,7 +742,7 @@ class TemplateHelper {
725
  $all_items[] = $item_ar;
726
  }
727
  }
728
- return TemplateHelper::sortByPrice($all_items, $order);
729
  }
730
 
731
  public static function buyNowBtnText($print = true, array $item = array(), $forced_text = '')
@@ -753,23 +770,26 @@ class TemplateHelper {
753
  $d = $etime / (24 * 60 * 60);
754
 
755
  if ($d < 1)
756
- return __('today', 'content-egg-tpl');
757
  $d = ceil($d);
758
 
759
  if ($d > 1)
760
- return sprintf(__('%d days ago', 'content-egg-tpl'), $d);
761
  else
762
- return sprintf(__('%d day ago', 'content-egg-tpl'), $d);
763
  }
764
 
765
  public static function getAmazonDisclaimer()
766
  {
767
- return __('Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply to the purchase of this product.', 'content-egg-tpl');
 
 
 
768
  }
769
 
770
  public static function printAmazonDisclaimer()
771
  {
772
- echo '<i class="cegg-disclaimer glyphicon glyphicon-info-sign" title="' . \esc_attr(self::getAmazonDisclaimer()) . '"></i>';
773
  }
774
 
775
  public static function btnText($option_name, $default, $print = true, array $item = array(), $forced_text = '')
@@ -863,9 +883,9 @@ class TemplateHelper {
863
  return '';
864
 
865
  if ($item['stock_status'] == ContentProduct::STOCK_STATUS_IN_STOCK)
866
- return __('in stock', 'content-egg-tpl');
867
  elseif ($item['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
868
- return __('out of stock', 'content-egg-tpl');
869
  else
870
  return '';
871
  }
@@ -885,6 +905,7 @@ class TemplateHelper {
885
 
886
  $groups = array_unique(array_column($all_items, 'group'));
887
  $groups = array_filter($groups);
 
888
 
889
  if ($sort_groups)
890
  {
@@ -1056,8 +1077,6 @@ class TemplateHelper {
1056
  {
1057
  $url = 'https://www.' . AmazonLocales::getDomain($locale) . '/gp/aws/cart/add.html?';
1058
 
1059
-
1060
-
1061
  $i = 1;
1062
  foreach ($items as $item)
1063
  {
@@ -1066,7 +1085,7 @@ class TemplateHelper {
1066
 
1067
  if ($i > 1)
1068
  $url .= '&';
1069
-
1070
  $url .= 'ASIN.' . $i . '=' . $item['extra']['ASIN'] . '&Quantity.' . $i . '=1';
1071
  $i++;
1072
  }
@@ -1083,4 +1102,193 @@ class TemplateHelper {
1083
  return AmazonConfig::getInstance()->option('associate_tag_' . $locale);
1084
  }
1085
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1086
  }
13
  use ContentEgg\application\helpers\TextHelper;
14
  use ContentEgg\application\libs\amazon\AmazonLocales;
15
  use ContentEgg\application\modules\Amazon\AmazonConfig;
16
+ use ContentEgg\application\Translator;
17
 
18
  /**
19
  * TemplateHelper class file
20
  *
21
  * @author keywordrush.com <support@keywordrush.com>
22
  * @link https://www.keywordrush.com
23
+ * @copyright Copyright &copy; 2021 keywordrush.com
24
  *
25
  */
26
  class TemplateHelper {
27
 
28
  const MERHANT_LOGO_DIR = 'ce-logos';
29
+ const IMG_SMALL = 'small';
30
+ const IMG_MEDIUM = 'medium';
31
+ const IMG_LARGE = 'large';
32
+ const IMG_ORIGINAL = 'original';
33
 
34
  static $global_id = 0;
35
  static $logos = null;
36
+ static $shop_info = null;
37
 
38
  public static function formatPriceCurrency($price, $currencyCode, $before_symbol = '', $after_symbol = '')
39
  {
365
  'data' => $prices,
366
  'xkey' => 'date',
367
  'ykeys' => array('price'),
368
+ 'labels' => array(Translator::__('Price')),
369
  );
370
  $options = array_merge($data, $options);
371
 
529
  return self::getMerchantImageUrl($item, $prefix, $remote_url, $blank_on_error);
530
  }
531
 
532
+ public static function getMerchantName(array $item, $print = false)
533
+ {
534
+ return self::getMerhantName($item, $print);
535
+ }
536
+
537
  public static function getMerhantName(array $item, $print = false)
538
  {
539
  if (!empty($item['domain']))
545
  elseif ($name == 'Flipkart.com')
546
  $name = 'Flipkart';
547
  elseif ($name == 'Ebay.com')
548
+ $name = 'eBay'; //it's should be ONLY "eBay" without ".com"
549
  elseif (strstr($name, 'Ebay.'))
550
+ $name = $name = 'eBay';
551
  } elseif (!empty($item['merchant']))
552
  $name = $item['merchant'];
553
  else
643
  {
644
  if (!$order)
645
  $order = 'asc';
646
+
647
  if (!in_array($order, array('asc', 'desc')))
648
  $order = 'asc';
649
 
671
  if (!$rate)
672
  $rate = 1;
673
  $data[$key]['converted_price'] = (float) $d['price'] * $rate;
674
+ } elseif (isset($d['price']))
675
  $data[$key]['converted_price'] = (float) $d['price'];
676
+ else
677
+ {
678
+ $data[$key]['converted_price'] = 0;
679
+ $data[$key]['price'] = 0;
680
+ }
681
  }
682
 
683
  // modules priority
696
  }
697
 
698
  // sort by price and priority
699
+ usort($data, function($a, $b) use($modules_priority) {
 
 
 
 
700
 
701
+ if (!$a['price'] && !$b['price'])
702
+ return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
 
 
703
 
704
+ if (!$a['converted_price'])
705
+ return 1;
706
 
707
+ if (!$b['converted_price'])
708
+ return -1;
 
 
 
 
 
709
 
710
+ if ($a['converted_price'] == $b['converted_price'])
711
+ return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
712
+
713
+ if ($modules_priority[$a['module_id']] != $modules_priority[$b['module_id']])
714
+ {
715
+ if ($a['converted_price'] >= 30 && $b['converted_price'] >= 30 && abs($a['converted_price'] - $b['converted_price']) < 1)
716
+ {
717
  return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
718
+ }
719
+ }
720
+ return ($a['converted_price'] < $b['converted_price']) ? -1 : 1;
721
+ });
722
+
723
+ if ($order == 'desc')
724
+ array_reverse($data);
725
 
 
 
 
726
  return $data;
727
  }
728
 
729
  public static function sortAllByPrice(array $data, $order = 'asc')
730
+ {
731
+ return TemplateHelper::sortByPrice(self::mergeAll($data), $order);
732
+ }
733
+
734
+ public static function mergeAll(array $data)
735
  {
736
  $all_items = array();
737
  foreach ($data as $module_id => $items)
742
  $all_items[] = $item_ar;
743
  }
744
  }
745
+ return $all_items;
746
  }
747
 
748
  public static function buyNowBtnText($print = true, array $item = array(), $forced_text = '')
770
  $d = $etime / (24 * 60 * 60);
771
 
772
  if ($d < 1)
773
+ return Translator::__('today');
774
  $d = ceil($d);
775
 
776
  if ($d > 1)
777
+ return sprintf(Translator::__('%d days ago'), $d);
778
  else
779
+ return sprintf(Translator::__('%d day ago'), $d);
780
  }
781
 
782
  public static function getAmazonDisclaimer()
783
  {
784
+ if ($d = GeneralConfig::getInstance()->option('disclaimer_text'))
785
+ return $d;
786
+ else
787
+ return __('As an Amazon associate I earn from qualifying purchases.', 'content-egg-tpl') . ' ' . __('Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply to the purchase of this product.', 'content-egg-tpl');
788
  }
789
 
790
  public static function printAmazonDisclaimer()
791
  {
792
+ echo '<i class="egg-ico-info-circle cegg-disclaimer" ' . self::buildTagParams(array('title' => self::getAmazonDisclaimer())) . '></i>';
793
  }
794
 
795
  public static function btnText($option_name, $default, $print = true, array $item = array(), $forced_text = '')
883
  return '';
884
 
885
  if ($item['stock_status'] == ContentProduct::STOCK_STATUS_IN_STOCK)
886
+ return TemplateHelper::__('in stock');
887
  elseif ($item['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
888
+ return TemplateHelper::__('out of stock');
889
  else
890
  return '';
891
  }
905
 
906
  $groups = array_unique(array_column($all_items, 'group'));
907
  $groups = array_filter($groups);
908
+ $groups = array_values($groups);
909
 
910
  if ($sort_groups)
911
  {
1077
  {
1078
  $url = 'https://www.' . AmazonLocales::getDomain($locale) . '/gp/aws/cart/add.html?';
1079
 
 
 
1080
  $i = 1;
1081
  foreach ($items as $item)
1082
  {
1085
 
1086
  if ($i > 1)
1087
  $url .= '&';
1088
+
1089
  $url .= 'ASIN.' . $i . '=' . $item['extra']['ASIN'] . '&Quantity.' . $i . '=1';
1090
  $i++;
1091
  }
1102
  return AmazonConfig::getInstance()->option('associate_tag_' . $locale);
1103
  }
1104
 
1105
+ public static function __($str)
1106
+ {
1107
+ return Translator::translate($str);
1108
+ }
1109
+
1110
+ public static function _e($str)
1111
+ {
1112
+ echo Translator::translate($str);
1113
+ }
1114
+
1115
+ public static function displayImage(array $item, $max_width, $max_height, array $params = array())
1116
+ {
1117
+ if (!isset($item['img']))
1118
+ return;
1119
+
1120
+ $params['src'] = self::getOptimizedImage($item, $max_width, $max_height);
1121
+
1122
+ if (isset($item['title']))
1123
+ $params['alt'] = $item['title'];
1124
+
1125
+ if ($sizes = self::getImageSizesRatio($item, $max_width, $max_height))
1126
+ $params = array_merge($params, $sizes);
1127
+
1128
+ echo '<img ' . self::buildTagParams($params) . ' />';
1129
+ }
1130
+
1131
+ public static function buildTagParams($params = array())
1132
+ {
1133
+ $res = '';
1134
+ $i = 0;
1135
+ foreach ($params as $key => $value)
1136
+ {
1137
+ if ($i > 0)
1138
+ $res .= ' ';
1139
+ $res .= \esc_attr($key) . '="' . \esc_attr($value) . '"';
1140
+ $i++;
1141
+ }
1142
+ return $res;
1143
+ }
1144
+
1145
+ public static function getImageSizesRatio(array $item, $max_width, $max_height)
1146
+ {
1147
+ if ($item['module_id'] == 'Amazon' && strpos($item['img'], 'https://m.media-amazon.com') !== false)
1148
+ {
1149
+ if (!isset($item['extra']['primaryImages']))
1150
+ return array();
1151
+
1152
+ $width = $item['extra']['primaryImages']['Large']['Width'];
1153
+ $height = $item['extra']['primaryImages']['Large']['Height'];
1154
+
1155
+ if (!$max_width)
1156
+ $max_width = $width;
1157
+ if (!$max_height)
1158
+ $max_height = $height;
1159
+
1160
+ $ratio = $width / $height;
1161
+
1162
+ if ($ratio > 1 && $width > $max_width)
1163
+ return array('width' => round($max_width), 'height' => round($max_width / $ratio));
1164
+ else
1165
+ return array('width' => round($max_height * $ratio), 'height' => round($max_height));
1166
+ }
1167
+
1168
+ return array();
1169
+ }
1170
+
1171
+ public static function getOptimizedImage(array $item, $max_width, $max_height)
1172
+ {
1173
+
1174
+ if ($item['module_id'] == 'Amazon' && strpos($item['img'], 'https://m.media-amazon.com') !== false)
1175
+ {
1176
+ if (!isset($item['extra']['primaryImages']))
1177
+ return $item['img'];
1178
+
1179
+ if ($max_height <= 160)
1180
+ return $item['extra']['primaryImages']['Medium']['URL'];
1181
+ elseif ($max_height <= 75)
1182
+ return $item['extra']['primaryImages']['Small']['URL'];
1183
+ else
1184
+ return $item['img'];
1185
+ }
1186
+
1187
+ return $item['img'];
1188
+ }
1189
+
1190
+ public static function generateStaticRatings($count, $post_id = null)
1191
+ {
1192
+ if (!$post_id)
1193
+ {
1194
+ global $post;
1195
+ if (!empty($post->ID))
1196
+ $post_id = $post->ID;
1197
+ else
1198
+ $post_id = $count;
1199
+ }
1200
+
1201
+ $ratings = array();
1202
+ mt_srand($post_id);
1203
+ $rating = 10;
1204
+ for ($i = 0; $i < $count; $i++)
1205
+ {
1206
+ if ($i <= 3)
1207
+ $rand = mt_rand(0, 6) / 10;
1208
+ elseif ($count > 9 && $i > 4)
1209
+ $rand = mt_rand(0, 3) / 10;
1210
+ elseif ($i > 8)
1211
+ $rand = mt_rand(0, 4) / 10;
1212
+ else
1213
+ $rand = mt_rand(0, 10) / 10;
1214
+
1215
+ $rating = round($rating - $rand, 2);
1216
+ $ratings[] = $rating;
1217
+ }
1218
+
1219
+ return $ratings;
1220
+ }
1221
+
1222
+ public static function printProgressRing($value)
1223
+ {
1224
+ if ($value <= 0)
1225
+ return;
1226
+
1227
+ $p = round($value * 100 / 10);
1228
+ $r1 = round($p * 314 / 100);
1229
+ $r2 = 314 - $r1;
1230
+
1231
+ echo '<svg width="75" height="75" viewBox="0 0 120 120"><circle cx="60" cy="60" r="50" fill="none" stroke="#E1E1E1" stroke-width="12"/><circle cx="60" cy="60" r="50" transform="rotate(-90 60 60)" fill="none" stroke-dashoffset="314" stroke-dasharray="314" stroke="dodgerblue" stroke-width="12" ><animate attributeName="stroke-dasharray" dur="3s" values="0,314;' . $r1 . ',' . $r2 . '" fill="freeze" /></circle><text x="60" y="63" fill="black" text-anchor="middle" dy="7" font-size="27">' . $value . '</text></svg>';
1232
+ }
1233
+
1234
+ public static function getChance($position, $max = 1)
1235
+ {
1236
+ global $post;
1237
+ if (!empty($post->ID))
1238
+ $post_id = $post->ID;
1239
+ else
1240
+ $post_id = time();
1241
+ mt_srand($post_id + $position);
1242
+ return mt_rand(0, 1);
1243
+ }
1244
+
1245
+ public static function getShopInfo(array $item)
1246
+ {
1247
+ if (!isset($item['domain']))
1248
+ return;
1249
+
1250
+ $domain = $item['domain'];
1251
+
1252
+ if (self::$shop_info === null)
1253
+ {
1254
+ $merchants = GeneralConfig::getInstance()->option('merchants');
1255
+ if (!$merchants)
1256
+ $merchants = array();
1257
+ foreach ($merchants as $merchant)
1258
+ {
1259
+ self::$shop_info[$merchant['name']] = $merchant['shop_info'];
1260
+ }
1261
+ }
1262
+
1263
+ if (isset(self::$shop_info[$domain]))
1264
+ return self::$shop_info[$domain];
1265
+ else
1266
+ return '';
1267
+ }
1268
+
1269
+ public static function printShopInfo(array $item, array $p = array())
1270
+ {
1271
+ if (!$shop_info = self::getShopInfo($item))
1272
+ return;
1273
+
1274
+ $params = array(
1275
+ 'data-toggle' => 'cegg-popover',
1276
+ 'data-html' => 'true',
1277
+ 'data-placement' => 'left',
1278
+ 'data-title' => self::getMerhantName($item),
1279
+ 'data-content' => $shop_info,
1280
+ 'tabindex' => '0',
1281
+ 'data-trigger' => 'focus',
1282
+ );
1283
+
1284
+ $params = array_merge($params, $p);
1285
+
1286
+ self::displayInfoIcon($params);
1287
+ }
1288
+
1289
+ public static function displayInfoIcon($params = array())
1290
+ {
1291
+ echo '<i class="egg-ico-info-circle" ' . self::buildTagParams($params) . '></i>';
1292
+ }
1293
+
1294
  }
application/helpers/TextHelper.php CHANGED
@@ -148,12 +148,12 @@ class TextHelper {
148
  }
149
  if (!$exact)
150
  {
151
- $spacepos = mb_strrpos($truncate, ' ', 'UTF-8');
152
  if ($html)
153
  {
154
  $truncateCheck = mb_substr($truncate, 0, $spacepos, 'UTF-8');
155
- $lastOpenTag = mb_strrpos($truncateCheck, '<', 'UTF-8');
156
- $lastCloseTag = mb_strrpos($truncateCheck, '>', 'UTF-8');
157
  if ($lastOpenTag > $lastCloseTag)
158
  {
159
  preg_match_all('/<[\w]+[^>]*>/s', $truncate, $lastTagMatches);
@@ -453,6 +453,7 @@ class TextHelper {
453
 
454
  public static function parseOriginalUrl($url, $go_param)
455
  {
 
456
  if (!$query = parse_url($url, PHP_URL_QUERY))
457
  return '';
458
  parse_str($query, $arr);
@@ -535,8 +536,22 @@ class TextHelper {
535
  return false;
536
  }
537
 
 
 
 
 
 
 
 
 
 
 
 
 
 
538
  public static function ratingPrepare($rating, $min_rating = 1, $max_rating = 5)
539
  {
 
540
  $rating = abs(round($rating));
541
  if ($rating < $min_rating || $rating > $max_rating)
542
  return null;
@@ -666,4 +681,19 @@ class TextHelper {
666
  return false;
667
  }
668
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
669
  }
148
  }
149
  if (!$exact)
150
  {
151
+ $spacepos = mb_strrpos($truncate, ' ', 0, 'UTF-8');
152
  if ($html)
153
  {
154
  $truncateCheck = mb_substr($truncate, 0, $spacepos, 'UTF-8');
155
+ $lastOpenTag = mb_strrpos($truncateCheck, '<', 0, 'UTF-8');
156
+ $lastCloseTag = mb_strrpos($truncateCheck, '>', 0, 'UTF-8');
157
  if ($lastOpenTag > $lastCloseTag)
158
  {
159
  preg_match_all('/<[\w]+[^>]*>/s', $truncate, $lastTagMatches);
453
 
454
  public static function parseOriginalUrl($url, $go_param)
455
  {
456
+ $url = html_entity_decode($url);
457
  if (!$query = parse_url($url, PHP_URL_QUERY))
458
  return '';
459
  parse_str($query, $arr);
536
  return false;
537
  }
538
 
539
+ public static function splitAsins($str)
540
+ {
541
+ $asins = explode(',', TextHelper::commaList($str, ' ', ','));
542
+ $res = array();
543
+ foreach ($asins as $asin)
544
+ {
545
+ if (self::isAsin($asin))
546
+ $res[] = $asin;
547
+ }
548
+
549
+ return $res;
550
+ }
551
+
552
  public static function ratingPrepare($rating, $min_rating = 1, $max_rating = 5)
553
  {
554
+ $rating = (int) $rating;
555
  $rating = abs(round($rating));
556
  if ($rating < $min_rating || $rating > $max_rating)
557
  return null;
681
  return false;
682
  }
683
 
684
+ public static function findOriginalUrl($url)
685
+ {
686
+ if (!$query = parse_url($url, PHP_URL_QUERY))
687
+ return '';
688
+
689
+ parse_str($query, $params);
690
+ foreach ($params as $param)
691
+ {
692
+ if (filter_var($param, FILTER_VALIDATE_URL))
693
+ return $param;
694
+ }
695
+
696
+ return false;
697
+ }
698
+
699
  }
application/libs/ParserClient.php CHANGED
@@ -51,7 +51,7 @@ class ParserClient {
51
  'sslverify' => false,
52
  'redirection' => 3,
53
  'timeout' => 10,
54
- 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:83.0) Gecko/20100101 Firefox/83.0',
55
  );
56
  if ($opts)
57
  $_opts = $opts + $_opts;
@@ -61,7 +61,6 @@ class ParserClient {
61
  //Get WP http client
62
  self::$_httpClient = new WpHttpClient();
63
  self::$_httpClient->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
64
-
65
  self::$_httpClient->setUserAgent($_opts['user-agent']);
66
  self::$_httpClient->setRedirection($_opts['redirection']);
67
  self::$_httpClient->setTimeout($_opts['timeout']);
51
  'sslverify' => false,
52
  'redirection' => 3,
53
  'timeout' => 10,
54
+ 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:86.0) Gecko/20100101 Firefox/86.0',
55
  );
56
  if ($opts)
57
  $_opts = $opts + $_opts;
61
  //Get WP http client
62
  self::$_httpClient = new WpHttpClient();
63
  self::$_httpClient->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
 
64
  self::$_httpClient->setUserAgent($_opts['user-agent']);
65
  self::$_httpClient->setRedirection($_opts['redirection']);
66
  self::$_httpClient->setTimeout($_opts['timeout']);
application/libs/RestClient.php CHANGED
@@ -82,7 +82,7 @@ class RestClient {
82
  'sslverify' => false,
83
  'redirection' => 5,
84
  'timeout' => static::$timeout,
85
- 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:82.0) Gecko/20100101 Firefox/82.0',
86
  );
87
  if ($opts)
88
  $_opts = $opts + $_opts;
82
  'sslverify' => false,
83
  'redirection' => 5,
84
  'timeout' => static::$timeout,
85
+ 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0',
86
  );
87
  if ($opts)
88
  $_opts = $opts + $_opts;
application/libs/WpHttpClient.php CHANGED
@@ -132,10 +132,13 @@ class WpHttpClient {
132
  list($name, $value) = explode(':', $name, 2);
133
 
134
  // Make sure the name is valid if we are in strict mode
 
135
  if (!preg_match('/^[a-zA-Z0-9-]+$/', $name))
136
  {
137
  throw new \Exception("{$name} is not a valid HTTP header name");
138
  }
 
 
139
 
140
  $normalized_name = strtolower($name);
141
 
132
  list($name, $value) = explode(':', $name, 2);
133
 
134
  // Make sure the name is valid if we are in strict mode
135
+ /*
136
  if (!preg_match('/^[a-zA-Z0-9-]+$/', $name))
137
  {
138
  throw new \Exception("{$name} is not a valid HTTP header name");
139
  }
140
+ *
141
+ */
142
 
143
  $normalized_name = strtolower($name);
144
 
application/libs/viglink/ViglinkApi.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\libs\viglink;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\libs\RestClient;
8
+
9
+ /**
10
+ * ViglinkApi class file
11
+ *
12
+ * @author keywordrush.com <support@keywordrush.com>
13
+ * @link http://www.keywordrush.com/
14
+ * @copyright Copyright &copy; 2017 keywordrush.com
15
+ *
16
+ * @link: https://viglink-developer-center.readme.io/
17
+ *
18
+ */
19
+ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
20
+
21
+ class ViglinkApi extends RestClient {
22
+
23
+ protected static $timeout = 40; //sec
24
+
25
+ const API_URI_BASE = 'https://rest.viglink.com/api';
26
+
27
+ protected $apiKey;
28
+ protected $secretKey;
29
+ protected $_responseTypes = array(
30
+ 'json',
31
+ 'xml'
32
+ );
33
+
34
+ public function __construct($apiKey, $secretKey, $response_type = 'json')
35
+ {
36
+ $this->apiKey = $apiKey;
37
+ $this->secretKey = $secretKey;
38
+ $this->setResponseType($response_type);
39
+ $this->setUri(self::API_URI_BASE);
40
+ }
41
+
42
+ /**
43
+ * Product Search
44
+ * @link: https://viglink-developer-center.readme.io/docs/product-search
45
+ */
46
+ public function search($keyword, array $options)
47
+ {
48
+ $options['query'] = $keyword;
49
+ $response = $this->restGet('/product/search', $options);
50
+ return $this->_decodeResponse($response);
51
+ }
52
+
53
+ /**
54
+ * Get back the metadata about an product (Product URL) with this endpoint.
55
+ * @link: https://viglink-developer-center.readme.io/docs/metadata
56
+ */
57
+ public function getMetadata($url)
58
+ {
59
+ $options['url'] = $url;
60
+ $response = $this->restGet('/product/metadata', $options);
61
+ return $this->_decodeResponse($response);
62
+ }
63
+
64
+ public function restGet($path, array $query = null)
65
+ {
66
+ if (!$query)
67
+ $query = array();
68
+ $query['apiKey'] = $this->apiKey;
69
+ $this->setCustomHeaders(array('Authorization' => 'secret ' . $this->secretKey));
70
+ return parent::restGet($path, $query);
71
+ }
72
+
73
+ }
application/models/AutoblogModel.php CHANGED
@@ -15,8 +15,8 @@ use ContentEgg\application\admin\GeneralConfig;
15
  * AutoblogModel class file
16
  *
17
  * @author keywordrush.com <support@keywordrush.com>
18
- * @link http://www.keywordrush.com/
19
- * @copyright Copyright &copy; 2015 keywordrush.com
20
  */
21
  class AutoblogModel extends Model {
22
 
@@ -142,6 +142,7 @@ class AutoblogModel extends Model {
142
  $this->save($autoblog_save);
143
  return false;
144
  }
 
145
  // pre save autoblog
146
  $this->save($autoblog_save);
147
 
@@ -163,7 +164,10 @@ class AutoblogModel extends Model {
163
  $post_id = $this->createPost($keyword, $autoblog);
164
  } catch (\Exception $e)
165
  {
166
- $error_mess = TemplateHelper::formatDatetime(time(), 'timestamp') . ' [' . $keyword . '] - ';
 
 
 
167
  $autoblog['last_error'] = $error_mess . $e->getMessage();
168
  }
169
 
@@ -356,14 +360,12 @@ class AutoblogModel extends Model {
356
  $categ_id = self::createWooNestedCategories($main_product['categoryPath']);
357
  else
358
  $categ_id = self::createNestedCategories($main_product['categoryPath']);
359
-
360
  } elseif (!empty($autoblog['config']['dynamic_categories']) && $autoblog['config']['dynamic_categories'] && $main_product['category'])
361
  {
362
  if ($autoblog['post_type'] == 'product')
363
  $categ_id = self::createWooCategory($main_product['category']);
364
  else
365
  $categ_id = self::createCategory($main_product['category']);
366
-
367
  } else
368
  $categ_id = $autoblog['category'];
369
 
@@ -391,7 +393,10 @@ class AutoblogModel extends Model {
391
  if (\get_post_type($post_id) == 'product')
392
  {
393
  // external by default
394
- \wp_set_object_terms($post_id, 'external', 'product_type');
 
 
 
395
 
396
  if (\term_exists($categ_id, 'product_cat'))
397
  \wp_set_object_terms($post_id, (int) $categ_id, 'product_cat');
@@ -442,7 +447,7 @@ class AutoblogModel extends Model {
442
  if (stristr($pattern, '%RANDOM'))
443
  {
444
  preg_match('/%RANDOM\((\d+),(\d+)\)%/', $pattern, $rmatches);
445
- if ($matches)
446
  $replace[$pattern] = rand((int) $rmatches[1], (int) $rmatches[2]);
447
  else
448
  $replace[$pattern] = rand(0, 9999999);
15
  * AutoblogModel class file
16
  *
17
  * @author keywordrush.com <support@keywordrush.com>
18
+ * @link https://www.keywordrush.com
19
+ * @copyright Copyright &copy; 2020 keywordrush.com
20
  */
21
  class AutoblogModel extends Model {
22
 
142
  $this->save($autoblog_save);
143
  return false;
144
  }
145
+
146
  // pre save autoblog
147
  $this->save($autoblog_save);
148
 
164
  $post_id = $this->createPost($keyword, $autoblog);
165
  } catch (\Exception $e)
166
  {
167
+ $error_mess = TemplateHelper::formatDatetime(time(), 'timestamp');
168
+ if (strlen($keyword) < 100)
169
+ $error_mess .= ' [' . $keyword . ']';
170
+ $error_mess .= ' - ';
171
  $autoblog['last_error'] = $error_mess . $e->getMessage();
172
  }
173
 
360
  $categ_id = self::createWooNestedCategories($main_product['categoryPath']);
361
  else
362
  $categ_id = self::createNestedCategories($main_product['categoryPath']);
 
363
  } elseif (!empty($autoblog['config']['dynamic_categories']) && $autoblog['config']['dynamic_categories'] && $main_product['category'])
364
  {
365
  if ($autoblog['post_type'] == 'product')
366
  $categ_id = self::createWooCategory($main_product['category']);
367
  else
368
  $categ_id = self::createCategory($main_product['category']);
 
369
  } else
370
  $categ_id = $autoblog['category'];
371
 
393
  if (\get_post_type($post_id) == 'product')
394
  {
395
  // external by default
396
+ //\wp_set_object_terms($post_id, 'external', 'product_type');
397
+ $classname = \WC_Product_Factory::get_product_classname($post_id, 'external');
398
+ $product = new $classname($post_id);
399
+ $product->save();
400
 
401
  if (\term_exists($categ_id, 'product_cat'))
402
  \wp_set_object_terms($post_id, (int) $categ_id, 'product_cat');
447
  if (stristr($pattern, '%RANDOM'))
448
  {
449
  preg_match('/%RANDOM\((\d+),(\d+)\)%/', $pattern, $rmatches);
450
+ if ($rmatches)
451
  $replace[$pattern] = rand((int) $rmatches[1], (int) $rmatches[2]);
452
  else
453
  $replace[$pattern] = rand(0, 9999999);
application/models/FeedProductModel.php CHANGED
@@ -11,7 +11,7 @@ use ContentEgg\application\helpers\TextHelper;
11
  *
12
  * @author keywordrush.com <support@keywordrush.com>
13
  * @link https://www.keywordrush.com
14
- * @copyright Copyright &copy; 2019 keywordrush.com
15
  */
16
  abstract class FeedProductModel extends Model {
17
 
@@ -79,4 +79,19 @@ abstract class FeedProductModel extends Model {
79
  return $this->getDb()->get_row($sql, \ARRAY_A);
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  }
11
  *
12
  * @author keywordrush.com <support@keywordrush.com>
13
  * @link https://www.keywordrush.com
14
+ * @copyright Copyright &copy; 2021 keywordrush.com
15
  */
16
  abstract class FeedProductModel extends Model {
17
 
79
  return $this->getDb()->get_row($sql, \ARRAY_A);
80
  }
81
 
82
+ public function getAllUrls()
83
+ {
84
+ return $this->getDb()->get_col('SELECT orig_url FROM ' . $this->tableName());
85
+ }
86
+
87
+ public function getEans()
88
+ {
89
+ return $this->getDb()->get_col('SELECT ean FROM ' . $this->tableName() . ' WHERE ean != ""');
90
+ }
91
+
92
+ public function getDublicateEans()
93
+ {
94
+ return $this->getDb()->get_col('SELECT ean, COUNT(*) c FROM ' . $this->tableName() . ' WHERE ean != "" GROUP BY ean HAVING c > 1');
95
+ }
96
+
97
  }
application/models/Model.php CHANGED
@@ -268,5 +268,6 @@ abstract class Model {
268
  $this->getDb()->query($query);
269
  }
270
  }
 
271
 
272
  }
268
  $this->getDb()->query($query);
269
  }
270
  }
271
+
272
 
273
  }
application/models/ProductModel.php CHANGED
@@ -12,8 +12,8 @@ use ContentEgg\application\components\ContentProduct;
12
  * ProductModel class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2018 keywordrush.com
17
  */
18
  class ProductModel extends Model {
19
 
@@ -129,6 +129,9 @@ class ProductModel extends Model {
129
  $products = array();
130
  foreach ($data as $unique_id => $d)
131
  {
 
 
 
132
  $product = array(
133
  'last_update' => '',
134
  'stock_status' => ContentProduct::STOCK_STATUS_UNKNOWN,
12
  * ProductModel class file
13
  *
14
  * @author keywordrush.com <support@keywordrush.com>
15
+ * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
  */
18
  class ProductModel extends Model {
19
 
129
  $products = array();
130
  foreach ($data as $unique_id => $d)
131
  {
132
+ if (!$unique_id)
133
+ continue;
134
+
135
  $product = array(
136
  'last_update' => '',
137
  'stock_status' => ContentProduct::STOCK_STATUS_UNKNOWN,
application/modules/AE/AEConfig.php CHANGED
@@ -45,7 +45,7 @@ class AEConfig extends AffiliateParserModuleConfig {
45
  'section' => 'default',
46
  ),
47
  'entries_per_page_update' => array(
48
- 'title' => __('Results for updates ', 'content-egg'),
49
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
50
  'callback' => array($this, 'render_input'),
51
  'default' => 3,
45
  'section' => 'default',
46
  ),
47
  'entries_per_page_update' => array(
48
+ 'title' => __('Results for updates and autoblogging', 'content-egg'),
49
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
50
  'callback' => array($this, 'render_input'),
51
  'default' => 3,
application/modules/AE/AEModule.php CHANGED
@@ -17,8 +17,8 @@ use \Keywordrush\AffiliateEgg\ParserManager;
17
  * AEModule class file
18
  *
19
  * @author keywordrush.com <support@keywordrush.com>
20
- * @link http://www.keywordrush.com/
21
- * @copyright Copyright &copy; 2016 keywordrush.com
22
  */
23
  class AEModule extends AffiliateParserModule {
24
 
@@ -40,7 +40,7 @@ class AEModule extends AffiliateParserModule {
40
  return array(
41
  'name' => 'AE:' . $name,
42
  'description' => sprintf(__('Affiliate Egg parser for %s', 'content-egg'), $uri),
43
- 'docs_uri' => 'https://ce-docs.keywordrush.com/integrations/affiliateeggintegration#avoid-getting-blocked',
44
  );
45
  }
46
 
17
  * AEModule class file
18
  *
19
  * @author keywordrush.com <support@keywordrush.com>
20
+ * @link https://www.keywordrush.com
21
+ * @copyright Copyright &copy; 2021 keywordrush.com
22
  */
23
  class AEModule extends AffiliateParserModule {
24
 
40
  return array(
41
  'name' => 'AE:' . $name,
42
  'description' => sprintf(__('Affiliate Egg parser for %s', 'content-egg'), $uri),
43
+ 'docs_uri' => 'https://ce-docs.keywordrush.com/modules/affiliate-egg-integration#avoid-getting-blocked',
44
  );
45
  }
46
 
application/modules/AdmitadProducts/AdmitadProductsConfig.php CHANGED
@@ -71,7 +71,7 @@ class AdmitadProductsConfig extends AffiliateParserModuleConfig {
71
  'section' => 'default',
72
  ),
73
  'entries_per_page_update' => array(
74
- 'title' => __('Results for updates ', 'content-egg'),
75
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
76
  'callback' => array($this, 'render_input'),
77
  'default' => 6,
71
  'section' => 'default',
72
  ),
73
  'entries_per_page_update' => array(
74
+ 'title' => __('Results for updates and autoblogging', 'content-egg'),
75
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
76
  'callback' => array($this, 'render_input'),
77
  'default' => 6,
application/modules/AffilinetCoupons/AffilinetCouponsConfig.php CHANGED
@@ -60,7 +60,7 @@ class AffilinetCouponsConfig extends AffiliateParserModuleConfig {
60
  'section' => 'default',
61
  ),
62
  'entries_per_page_update' => array(
63
- 'title' => __('Results for updates ', 'content-egg'),
64
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
65
  'callback' => array($this, 'render_input'),
66
  'default' => 3,
60
  'section' => 'default',
61
  ),
62
  'entries_per_page_update' => array(
63
+ 'title' => __('Results for updates and autoblogging', 'content-egg'),
64
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
65
  'callback' => array($this, 'render_input'),
66
  'default' => 3,
application/modules/Amazon/AmazonConfig.php CHANGED
@@ -98,7 +98,7 @@ class AmazonConfig extends AffiliateParserModuleConfig {
98
  'section' => 'default',
99
  ),
100
  'entries_per_page_update' => array(
101
- 'title' => __('Results for updates ', 'content-egg'),
102
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg') . ' ' .
103
  __('It needs a bit more time to get more than 10 results in one request', 'content-egg'),
104
  'callback' => array($this, 'render_input'),
98
  'section' => 'default',
99
  ),
100
  'entries_per_page_update' => array(
101
+ 'title' => __('Results for updates and autoblogging', 'content-egg'),
102
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg') . ' ' .
103
  __('It needs a bit more time to get more than 10 results in one request', 'content-egg'),
104
  'callback' => array($this, 'render_input'),
application/modules/Amazon/templates/data_compare.php CHANGED
@@ -95,7 +95,7 @@ $barcodes = array(
95
  <?php endif; ?>
96
  </span>
97
  <span class="text-muted">
98
- <br><?php _e('as of', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted('Amazon', $post_id); ?>
99
  </span>
100
  </div>
101
  <?php endforeach; ?>
95
  <?php endif; ?>
96
  </span>
97
  <span class="text-muted">
98
+ <br /><?php echo sprintf(TemplateHelper::__('as of %s'), TemplateHelper::getLastUpdateFormatted('Amazon', $post_id)); ?>
99
  </span>
100
  </div>
101
  <?php endforeach; ?>
application/modules/CjLinks/CjLinksConfig.php CHANGED
@@ -70,7 +70,7 @@ class CjLinksConfig extends AffiliateParserModuleConfig {
70
  'section' => 'default',
71
  ),
72
  'entries_per_page_update' => array(
73
- 'title' => __('Results for updates ', 'content-egg'),
74
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
75
  'callback' => array($this, 'render_input'),
76
  'default' => 3,
70
  'section' => 'default',
71
  ),
72
  'entries_per_page_update' => array(
73
+ 'title' => __('Results for updates and autoblogging', 'content-egg'),
74
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
75
  'callback' => array($this, 'render_input'),
76
  'default' => 3,
application/modules/Coupon/CouponModule.php CHANGED
@@ -108,9 +108,9 @@ class CouponModule extends AffiliateParserModule {
108
  $hide_future = $this->config('hide_future');
109
  foreach ($data as $key => $d)
110
  {
111
- if ($hide_expired && $d['endDate'] && time() > $d['endDate'])
112
  unset($data[$key]);
113
- elseif ($hide_future && $d['startDate'] && $d['startDate'] > time())
114
  unset($data[$key]);
115
  }
116
 
108
  $hide_future = $this->config('hide_future');
109
  foreach ($data as $key => $d)
110
  {
111
+ if (isset($d['endDate']) && $hide_expired && $d['endDate'] && time() > $d['endDate'])
112
  unset($data[$key]);
113
+ elseif (isset($d['startDate']) && $hide_future && $d['startDate'] && $d['startDate'] > time())
114
  unset($data[$key]);
115
  }
116
 
application/modules/Feed/ExtraDataAE.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\AE;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\components\ExtraData;
8
+
9
+ /**
10
+ * ExtraDataAE class file
11
+ *
12
+ * @author keywordrush.com <support@keywordrush.com>
13
+ * @link http://www.keywordrush.com/
14
+ * @copyright Copyright &copy; 2016 keywordrush.com
15
+ */
16
+ class ExtraDataAE extends ExtraData {
17
+
18
+ public $features = array();
19
+ public $comments = array();
20
+ public $images = array();
21
+ public $data = array();
22
+
23
+ }
application/modules/Feed/FeedConfig.php ADDED
@@ -0,0 +1,247 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\components\AffiliateFeedParserModuleConfig;
8
+ use ContentEgg\application\helpers\CurrencyHelper;
9
+ use ContentEgg\application\helpers\TextHelper;
10
+
11
+ /**
12
+ * FeedConfig class file
13
+ *
14
+ * @author keywordrush.com <support@keywordrush.com>
15
+ * @link https://www.keywordrush.com
16
+ * @copyright Copyright &copy; 2021 keywordrush.com
17
+ */
18
+ class FeedConfig extends AffiliateFeedParserModuleConfig {
19
+
20
+ public function options()
21
+ {
22
+ $currencies = CurrencyHelper::getCurrenciesList();
23
+
24
+ $options = array(
25
+ 'feed_name' => array(
26
+ 'title' => __('Feed name', 'content-egg') . ' <span class="cegg_required">*</span>',
27
+ 'description' => sprintf(__('For example: %s', 'content-egg'), 'Saturn.de'),
28
+ 'callback' => array($this, 'render_input'),
29
+ 'default' => '',
30
+ 'validator' => array(
31
+ 'trim',
32
+ '\sanitize_text_field',
33
+ array(
34
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
35
+ 'message' => sprintf(__('The field "%s" can not be empty.', 'content-egg'), __('Feed name', 'content-egg')),
36
+ ),
37
+ array(
38
+ 'call' => array($this, 'saveFeedName'),
39
+ 'type' => 'filter',
40
+ ),
41
+ ),
42
+ ),
43
+ 'feed_url' => array(
44
+ 'title' => __('Feed download URL', 'content-egg') . ' <span class="cegg_required">*</span>',
45
+ 'description' => __('CSV format only.', 'content-egg') . ' ' .
46
+ sprintf(__('Make sure your unzipped feed size is less than %s.', 'content-egg'), \WP_MAX_MEMORY_LIMIT),
47
+ 'callback' => array($this, 'render_input'),
48
+ 'default' => '',
49
+ 'validator' => array(
50
+ 'trim',
51
+ array(
52
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
53
+ 'when' => 'is_active',
54
+ 'message' => sprintf(__('The field "%s" can not be empty.', 'content-egg'), 'Datafeed Download URL'),
55
+ ),
56
+ array(
57
+ 'call' => array($this, 'validateFeedUrl'),
58
+ 'when' => 'is_active',
59
+ 'message' => sprintf(__('Field "%s" filled with wrong data.', 'content-egg'), 'Feed download URL'),
60
+ ),
61
+ ),
62
+ ),
63
+ 'archive_format' => array(
64
+ 'title' => __('Archive format', 'content-egg') . ' <span class="cegg_required">*</span>',
65
+ 'callback' => array($this, 'render_dropdown'),
66
+ 'dropdown_options' => array(
67
+ 'none' => __('None', 'content-egg'),
68
+ 'zip' => 'ZIP',
69
+ ),
70
+ 'default' => 'none',
71
+ ),
72
+ 'encoding' => array(
73
+ 'title' => __('Feed encoding', 'content-egg') . ' <span class="cegg_required">*</span>',
74
+ 'callback' => array($this, 'render_dropdown'),
75
+ 'dropdown_options' => array(
76
+ 'UTF-8' => 'UTF-8',
77
+ 'ISO-8859-1' => 'ISO-8859-1',
78
+ ),
79
+ 'default' => 'UTF-8',
80
+ ),
81
+ 'currency' => array(
82
+ 'title' => __('Default currency', 'content-egg') . ' <span class="cegg_required">*</span>',
83
+ 'callback' => array($this, 'render_dropdown'),
84
+ 'dropdown_options' => array_combine($currencies, $currencies),
85
+ 'default' => 'USD',
86
+ ),
87
+ 'domain' => array(
88
+ 'title' => __('Default merchant domain', 'content-egg') . ' <span class="cegg_required">*</span>',
89
+ 'description' => sprintf(__('For example: %s', 'content-egg'), 'saturn.de'),
90
+ 'callback' => array($this, 'render_input'),
91
+ 'default' => '',
92
+ 'validator' => array(
93
+ array(
94
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
95
+ 'when' => 'is_active',
96
+ 'message' => sprintf(__('The field "%s" can not be empty.', 'content-egg'), 'Default merchant domain'),
97
+ ),
98
+ array(
99
+ 'call' => array($this, 'sanitizeDomain'),
100
+ 'type' => 'filter',
101
+ ),
102
+ ),
103
+ ),
104
+ 'mapping' => array(
105
+ 'title' => __('Field mapping', 'content-egg') . ' <span class="cegg_required">*</span>',
106
+ 'description' => '',
107
+ 'callback' => array($this, 'render_mapping_block'),
108
+ 'validator' => array(
109
+ array(
110
+ 'call' => array($this, 'mappingSanitize'),
111
+ 'type' => 'filter',
112
+ ),
113
+ array(
114
+ 'call' => array($this, 'mappingValidate'),
115
+ 'when' => 'is_active',
116
+ 'message' => __('Please fill out all required mapping fields.', 'content-egg'),
117
+ ),
118
+ ),
119
+ ),
120
+
121
+ 'deeplink' => array(
122
+ 'title' => __('Deeplink', 'content-egg'),
123
+ 'description' => __('Set this option only if your feed does not contain affiliate links.', 'content-egg'),
124
+ 'callback' => array($this, 'render_input'),
125
+ 'default' => '',
126
+ 'validator' => array(
127
+ 'trim',
128
+ ),
129
+ 'section' => 'default',
130
+ ),
131
+ );
132
+ $options = array_merge(parent::options(), $options);
133
+ return self::moveRequiredUp($options);
134
+ }
135
+
136
+ public function render_mapping_row($args)
137
+ {
138
+ $field_name = $args['_field_name'];
139
+ $value = isset($args['value'][$field_name]) ? $args['value'][$field_name] : '';
140
+
141
+ $display_name = $field_name;
142
+ if (self::isMappingFieldRequared($field_name))
143
+ $display_name .= ' ' . __('(required)', 'content-egg');
144
+ else
145
+ $display_name .= ' ' . __('(optional)', 'content-egg');
146
+
147
+
148
+ echo '<input value="' . \esc_attr($display_name) . '" class="regular-text ltr" type="text" readonly />';
149
+ echo ' &#x203A; ';
150
+ echo '<input name="' . \esc_attr($args['option_name']) . '['
151
+ . \esc_attr($args['name']) . '][' . \esc_attr($field_name) . ']" value="'
152
+ . \esc_attr($value) . '" class="regular-text ltr" placeholder="' . \esc_attr(__('In your feed', 'content-egg')) . '" type="text"/>';
153
+ }
154
+
155
+ public function render_mapping_block($args)
156
+ {
157
+ if (!$args['value'])
158
+ $args['value'] = array();
159
+
160
+ foreach (array_keys(self::mappingFields()) as $str)
161
+ {
162
+ echo '<div style="padding-bottom: 5px;">';
163
+ $args['_field_name'] = $str;
164
+ $this->render_mapping_row($args);
165
+ echo '</div>';
166
+ }
167
+ if ($args['description'])
168
+ echo '<p class="description">' . $args['description'] . '</p>';
169
+ }
170
+
171
+ public static function mappingFields()
172
+ {
173
+ return array(
174
+ 'id' => true,
175
+ 'title' => true,
176
+ 'description' => true,
177
+ 'affiliate link' => true,
178
+ 'image ​​link' => true,
179
+ 'price' => true,
180
+ 'sale price' => false,
181
+ 'currency' => false,
182
+ 'availability' => false,
183
+ 'is in stock' => false,
184
+ 'direct link' => false,
185
+ 'brand' => false,
186
+ 'category' => false,
187
+ 'gtin' => false,
188
+ );
189
+ }
190
+
191
+ public static function isMappingFieldRequared($field)
192
+ {
193
+ $fields = self::mappingFields();
194
+ if (isset($fields[$field]) && $fields[$field])
195
+ return true;
196
+ else
197
+ return false;
198
+ }
199
+
200
+ public function mappingSanitize($values)
201
+ {
202
+ foreach ($values as $k => $value)
203
+ {
204
+ $values[$k] = trim(\sanitize_text_field($value));
205
+ }
206
+
207
+ return $values;
208
+ }
209
+
210
+ public function mappingValidate($values)
211
+ {
212
+ foreach ($values as $field => $value)
213
+ {
214
+ if (self::isMappingFieldRequared($field) && !$value)
215
+ return false;
216
+ }
217
+
218
+ return true;
219
+ }
220
+
221
+ public function saveFeedName($value)
222
+ {
223
+ FeedName::getInstance()->saveName($this->getModuleId(), $value);
224
+ return $value;
225
+ }
226
+
227
+ public function sanitizeDomain($value)
228
+ {
229
+ $value = trim(\sanitize_text_field($value));
230
+ if ($host = TextHelper::getHostName($value))
231
+ $value = $host;
232
+
233
+ $value = strtolower($value);
234
+ $value = str_replace('www.', '', $value);
235
+ $value = trim($value, "/");
236
+ return $value;
237
+ }
238
+
239
+ public function validateFeedUrl($value)
240
+ {
241
+ if (filter_var($value, FILTER_VALIDATE_URL) === false)
242
+ return false;
243
+ else
244
+ return true;
245
+ }
246
+
247
+ }
application/modules/Feed/FeedModule.php ADDED
@@ -0,0 +1,334 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\admin\PluginAdmin;
8
+ use ContentEgg\application\components\AffiliateFeedParserModule;
9
+ use ContentEgg\application\modules\Feed\FeedName;
10
+ use ContentEgg\application\helpers\TextHelper;
11
+ use ContentEgg\application\components\ContentProduct;
12
+ use ContentEgg\application\components\LinkHandler;
13
+
14
+ /**
15
+ * FeedModule class file
16
+ *
17
+ * @author keywordrush.com <support@keywordrush.com>
18
+ * @link https://www.keywordrush.com
19
+ * @copyright Copyright &copy; 2021 keywordrush.com
20
+ */
21
+ class FeedModule extends AffiliateFeedParserModule {
22
+
23
+ public function info()
24
+ {
25
+ if (!$name = FeedName::getInstance()->getName($this->getId()))
26
+ $name = __('Add new', 'content-egg');
27
+
28
+ return array(
29
+ 'name' => 'Feed:' . $name,
30
+ 'docs_uri' => 'https://ce-docs.keywordrush.com/modules/feed-modules',
31
+ );
32
+ }
33
+
34
+ public function releaseVersion()
35
+ {
36
+ return '5.2.0';
37
+ }
38
+
39
+ public function isFree()
40
+ {
41
+ return true;
42
+ }
43
+
44
+ public function getParserType()
45
+ {
46
+ return self::PARSER_TYPE_PRODUCT;
47
+ }
48
+
49
+ public function defaultTemplateName()
50
+ {
51
+ return 'data_grid';
52
+ }
53
+
54
+ public function isItemsUpdateAvailable()
55
+ {
56
+ return true;
57
+ }
58
+
59
+ public function isUrlSearchAllowed()
60
+ {
61
+ return true;
62
+ }
63
+
64
+ public function getProductModel()
65
+ {
66
+ $parts = explode('__', strtolower($this->getId()));
67
+ $id = end($parts);
68
+ $classname = '\\ContentEgg\\application\\modules\\Feed\\models\\MyFeed' . $id . 'ProductModel';
69
+
70
+ if (!class_exists($classname, true))
71
+ throw new \Exception('Model class does not exist.');
72
+
73
+ return $classname::model();
74
+ }
75
+
76
+ public function isZippedFeed()
77
+ {
78
+ if ($this->config('archive_format') == 'zip')
79
+ return true;
80
+ else
81
+ return false;
82
+ }
83
+
84
+ public function getFeedUrl()
85
+ {
86
+ $url = $this->config('feed_url');
87
+
88
+ if (!filter_var($url, FILTER_VALIDATE_URL))
89
+ throw new \Exception('Invalid Feed URL');
90
+
91
+ return $url;
92
+ }
93
+
94
+ protected function feedProductPrepare(array $data)
95
+ {
96
+ $mapped_data = $this->mapProduct($data);
97
+ $missed = array();
98
+ foreach (array_keys(FeedConfig::mappingFields()) as $field)
99
+ {
100
+ if (FeedConfig::isMappingFieldRequared($field) && !isset($mapped_data[$field]))
101
+ $missed[] = $field;
102
+ }
103
+ if ($missed)
104
+ throw new \Exception(sprintf('Required mapping fields are missing in the feed: %s.', join(', ', $missed)));
105
+
106
+ $product = array();
107
+ $product['id'] = sanitize_text_field($mapped_data['id']);
108
+ $product['title'] = \sanitize_text_field($mapped_data['title']);
109
+
110
+ if (!$product['id'] || !$product['title'])
111
+ return false;
112
+
113
+ if (isset($mapped_data['sale price']) && (float) $mapped_data['sale price'])
114
+ $product['price'] = (float) $mapped_data['sale price'];
115
+ else
116
+ $product['price'] = (float) $mapped_data['price'];
117
+
118
+ $product['stock_status'] = ContentProduct::STOCK_STATUS_UNKNOWN;
119
+ if (!empty($mapped_data['availability']))
120
+ {
121
+ $availability = strtolower($mapped_data['availability']);
122
+ if (strstr($availability, 'out of stock') || strstr($availability, 'outofstock'))
123
+ $product['stock_status'] = ContentProduct::STOCK_STATUS_OUT_OF_STOCK;
124
+ else
125
+ $product['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
126
+ } elseif (!empty($mapped_data['is in stock']))
127
+ {
128
+ if (filter_var($mapped_data['is in stock'], FILTER_VALIDATE_BOOLEAN))
129
+ $product['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
130
+ else
131
+ $product['stock_status'] = ContentProduct::STOCK_STATUS_OUT_OF_STOCK;
132
+ }
133
+
134
+ if (isset($mapped_data['gtin']) && TextHelper::isEan($mapped_data['gtin']))
135
+ $product['ean'] = $mapped_data['gtin'];
136
+ else
137
+ $product['ean'] = '';
138
+
139
+ if (!empty($mapped_data['direct link']))
140
+ $product['orig_url'] = $mapped_data['direct link'];
141
+ elseif ($orig_url = TextHelper::findOriginalUrl($mapped_data['affiliate link']))
142
+ $product['orig_url'] = $orig_url;
143
+ else
144
+ $product['orig_url'] = $mapped_data['affiliate link'];
145
+ $product['product'] = serialize($data);
146
+
147
+ return $product;
148
+ }
149
+
150
+ public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
151
+ {
152
+ $this->maybeImportProducts();
153
+
154
+ if ($is_autoupdate)
155
+ $limit = $this->config('entries_per_page_update');
156
+ else
157
+ $limit = $this->config('entries_per_page');
158
+
159
+ if (TextHelper::isEan($keyword))
160
+ $results = $this->product_model->searchByEan($keyword, $limit);
161
+ elseif (filter_var($keyword, FILTER_VALIDATE_URL))
162
+ $results = $this->product_model->searchByUrl($keyword, $this->config('partial_url_match'), $limit);
163
+ else
164
+ {
165
+ $options = array();
166
+ if (!empty($query_params['price_min']))
167
+ $options['price_min'] = (float) $query_params['price_min'];
168
+ if (!empty($query_params['price_min']))
169
+ $options['price_max'] = (float) $query_params['price_max'];
170
+
171
+ $results = $this->product_model->searchByKeyword($keyword, $limit, $options);
172
+
173
+ }
174
+ if (!$results)
175
+ return array();
176
+
177
+ return $this->prepareResults($results);
178
+ }
179
+
180
+ public function doRequestItems(array $items)
181
+ {
182
+ $this->maybeImportProducts();
183
+ $deeplink = $this->config('deeplink');
184
+ foreach ($items as $key => $item)
185
+ {
186
+ // fix
187
+ if (!$key)
188
+ {
189
+ unset($items[$key]);
190
+ continue;
191
+ }
192
+
193
+ $product = $this->product_model->searchById($item['unique_id']);
194
+ if (!$product)
195
+ {
196
+ if ($this->product_model->count())
197
+ $items[$key]['stock_status'] = ContentProduct::STOCK_STATUS_OUT_OF_STOCK;
198
+ continue;
199
+ }
200
+ if (!$r = unserialize($product['product']))
201
+ continue;
202
+
203
+ $r = $this->mapProduct($r);
204
+
205
+ if (isset($r['availability']))
206
+ $items[$key]['availability'] = $r['availability'];
207
+
208
+ $items[$key]['stock_status'] = $product['stock_status'];
209
+
210
+ if (!empty($r['sale price']))
211
+ {
212
+ $items[$key]['price'] = (float) $r['sale price'];
213
+ if (isset($r['price']) && (float) $r['price'] > $items[$key]['price'])
214
+ $items[$key]['priceOld'] = (float) $r['price'];
215
+ } else
216
+ {
217
+ $items[$key]['price'] = (float) $r['price'];
218
+ $items[$key]['priceOld'] = 0;
219
+ }
220
+
221
+ if ($deeplink)
222
+ $items[$key]['url'] = LinkHandler::createAffUrl($items[$key]['orig_url'], $deeplink, $item);
223
+ }
224
+
225
+ return $items;
226
+ }
227
+
228
+ private function prepareResults($results)
229
+ {
230
+ $data = array();
231
+ $deeplink = $this->config('deeplink');
232
+
233
+ foreach ($results as $product)
234
+ {
235
+ if (!$r = unserialize($product['product']))
236
+ continue;
237
+
238
+ $r = $this->mapProduct($r);
239
+
240
+ $content = new ContentProduct;
241
+
242
+ $content->unique_id = $r['id'];
243
+ $content->title = $r['title'];
244
+ $content->url = $r['affiliate link'];
245
+
246
+ if (!empty($r['sale price']))
247
+ {
248
+ $content->price = (float) $r['sale price'];
249
+ if (isset($r['price']) && (float) $r['price'] > $content->price)
250
+ $content->priceOld = (float) $r['price'];
251
+ } else
252
+ $content->price = (float) $r['price'];
253
+
254
+
255
+ if (isset($r['currency']) && strlen($r['currency']))
256
+ $content->currencyCode = $r['currency'];
257
+ else
258
+ $content->currencyCode = $this->config('currency');
259
+
260
+ if (!empty($r['description']) && $r['title'] != $r['description'])
261
+ $content->description = $r['description'];
262
+
263
+ if (isset($r['brand']))
264
+ $content->manufacturer = $r['brand'];
265
+ if (isset($r['category']))
266
+ $content->category = $r['category'];
267
+ if (isset($r['availability']))
268
+ $content->availability = $r['availability'];
269
+ if (isset($r['image ​​link']) && filter_var($r['image ​​link'], FILTER_VALIDATE_URL))
270
+ $content->img = $r['image ​​link'];
271
+
272
+ $content->orig_url = $product['orig_url'];
273
+ $content->stock_status = $product['stock_status'];
274
+ $content->ean = $product['ean'];
275
+
276
+ if ($content->orig_url != $content->url)
277
+ $content->domain = TextHelper::getHostName($content->orig_url);
278
+ else
279
+ $content->domain = $this->config('domain');
280
+
281
+ if ($deeplink)
282
+ $content->url = LinkHandler::createAffUrl($content->orig_url, $deeplink, (array) $content);
283
+
284
+ $data[] = $content;
285
+ }
286
+ return $data;
287
+ }
288
+
289
+ public function renderSearchPanel()
290
+ {
291
+ $this->render('search_panel', array('module_id' => $this->getId()));
292
+ }
293
+
294
+ public function renderResults()
295
+ {
296
+ PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
297
+ }
298
+
299
+ public function renderSearchResults()
300
+ {
301
+ PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
302
+ }
303
+
304
+ public function renderUpdatePanel()
305
+ {
306
+ $this->render('update_panel', array('module_id' => $this->getId()));
307
+ }
308
+
309
+ public function viewDataPrepare($data)
310
+ {
311
+ if (!$deeplink = $this->config('deeplink'))
312
+ return $data;
313
+
314
+ foreach ($data as $key => $d)
315
+ {
316
+ $data[$key]['url'] = LinkHandler::createAffUrl($d['orig_url'], $deeplink, $d);
317
+ }
318
+ return parent::viewDataPrepare($data);
319
+ }
320
+
321
+ public function mapProduct(array $data)
322
+ {
323
+ $mapped_data = array();
324
+ $mapping = $this->config('mapping');
325
+ foreach ($mapping as $field => $feed_field)
326
+ {
327
+ if (isset($data[$feed_field]))
328
+ $mapped_data[$field] = $data[$feed_field];
329
+ }
330
+
331
+ return $mapped_data;
332
+ }
333
+
334
+ }
application/modules/Feed/FeedName.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ /**
8
+ * FeedName class file
9
+ *
10
+ * @author keywordrush.com <support@keywordrush.com>
11
+ * @link https://www.keywordrush.com
12
+ * @copyright Copyright &copy; 2021 keywordrush.com
13
+ */
14
+ class FeedName {
15
+
16
+ const OPTION_NAME = 'cegg_feed_names';
17
+
18
+ private static $instance;
19
+ protected static $feeds = array();
20
+
21
+ private function __construct()
22
+ {
23
+ $this->init();
24
+ }
25
+
26
+ public static function getInstance()
27
+ {
28
+ if (self::$instance === null)
29
+ self::$instance = new self;
30
+ return self::$instance;
31
+ }
32
+
33
+ private function init()
34
+ {
35
+ self::$feeds = \get_option(self::OPTION_NAME, array());
36
+ }
37
+
38
+ public function getName($module_id)
39
+ {
40
+ if (isset(self::$feeds[$module_id]))
41
+ return self::$feeds[$module_id];
42
+ else
43
+ return false;
44
+ }
45
+
46
+ public function saveName($module_id, $name)
47
+ {
48
+ self::$feeds[$module_id] = $name;
49
+ \update_option(self::OPTION_NAME, self::$feeds);
50
+ }
51
+
52
+ }
application/modules/Feed/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ // Silence is golden.
application/modules/Feed/models/MyFeed10ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed10ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed10ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed10_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed11ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed11ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed11ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed11_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed12ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed12ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed12ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed12_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed13ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed13ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed13ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed13_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed14ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed14ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed14ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed14_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed15ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed15ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed15ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed15_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed16ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed16ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed16ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed16_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed17ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed17ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed17ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed17_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed18ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed18ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed18ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed18_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed19ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed19ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed19ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed19_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed1ProductModel.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ /**
8
+ * MyFeed1ProductModel class file
9
+ *
10
+ * @author keywordrush.com <support@keywordrush.com>
11
+ * @link https://www.keywordrush.com
12
+ * @copyright Copyright &copy; 2021 keywordrush.com
13
+ */
14
+ class MyFeed1ProductModel extends MyFeedProductModel {
15
+
16
+ public function tableName()
17
+ {
18
+ return $this->getDb()->prefix . 'cegg_feed1_product';
19
+ }
20
+
21
+ public static function model($className = __CLASS__)
22
+ {
23
+ return parent::model($className);
24
+ }
25
+
26
+ }
application/modules/Feed/models/MyFeed20ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed20ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed20ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed20_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed21ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed21ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed21ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed21_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed22ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed22ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed22ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed22_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed23ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed23ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed23ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed23_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed24ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed24ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed24ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed24_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed25ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed25ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed25ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed25_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed2ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed2ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed2ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed2_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed3ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed3ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed3ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed3_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed4ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed4ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed4ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed4_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed5ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed5ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed5ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed5_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed6ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed6ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed6ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed6_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed7ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed7ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed7ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed7_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed8ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed8ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed8ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed8_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeed9ProductModel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+
8
+ /**
9
+ * MyFeed9ProductModel class file
10
+ *
11
+ * @author keywordrush.com <support@keywordrush.com>
12
+ * @link https://www.keywordrush.com
13
+ * @copyright Copyright &copy; 2021 keywordrush.com
14
+ */
15
+ class MyFeed9ProductModel extends MyFeedProductModel {
16
+
17
+ public function tableName()
18
+ {
19
+ return $this->getDb()->prefix . 'cegg_feed9_product';
20
+ }
21
+
22
+ public static function model($className = __CLASS__)
23
+ {
24
+ return parent::model($className);
25
+ }
26
+
27
+ }
application/modules/Feed/models/MyFeedProductModel.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Feed\models;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\models\FeedProductModel;
8
+
9
+ /**
10
+ * FeedProductModel class file
11
+ *
12
+ * @author keywordrush.com <support@keywordrush.com>
13
+ * @link https://www.keywordrush.com
14
+ * @copyright Copyright &copy; 2021 keywordrush.com
15
+ */
16
+ abstract class MyFeedProductModel extends FeedProductModel {
17
+
18
+ public function getDump()
19
+ {
20
+ return "CREATE TABLE " . $this->tableName() . " (
21
+ id varchar(255) NOT NULL,
22
+ stock_status tinyint(1) DEFAULT 0,
23
+ price float(12,2) DEFAULT NULL,
24
+ title text,
25
+ ean varchar(13) DEFAULT NULL,
26
+ orig_url text,
27
+ product text,
28
+ KEY id (id(32)),
29
+ KEY uid (stock_status),
30
+ KEY orig_url (orig_url(60)),
31
+ KEY ean (ean(13)),
32
+ KEY price (price),
33
+ FULLTEXT (title)
34
+ ) $this->charset_collate;";
35
+ }
36
+ }
application/modules/Feed/templates/data_grid.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+ /*
5
+ Name: Grid
6
+ */
7
+
8
+ __('Grid', 'content-egg-tpl');
9
+
10
+ $this->renderPartial('grid');
application/modules/Feed/templates/data_item.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+ /*
5
+ Name: Product card
6
+ */
7
+
8
+ __('Product card', 'content-egg-tpl');
9
+
10
+ $this->renderPartial('item');
application/modules/Feed/templates/data_item_simple.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+
5
+ /*
6
+ Name: Product card (no features)
7
+ */
8
+
9
+ __('Product card (no features)', 'content-egg');
10
+ $this->renderPartial('item_simple');
application/modules/Feed/templates/data_list.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+ /*
5
+ Name: List
6
+ */
7
+ __('List', 'content-egg-tpl');
8
+
9
+ $this->renderPartial('list');
application/modules/Feed/templates/data_price_tracker_alert.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+ /*
5
+ Name: Price tracker & alert
6
+ */
7
+
8
+ __('Price tracker & alert', 'content-egg-tpl');
9
+
10
+ $this->renderPartial('price_tracker_alert');
application/modules/Feed/views/search_panel.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php defined('\ABSPATH') || exit; ?>
2
+ <input type="text" class="input-sm col-md-4" ng-model="query_params.<?php echo $module_id; ?>.price_min" ng-init="query_params.<?php echo $module_id; ?>.price_max = ''" placeholder="<?php _e('Min. price', 'content-egg'); ?>" />
3
+ <input type="text" class="input-sm col-md-4" ng-model="query_params.<?php echo $module_id; ?>.price_max" ng-init="query_params.<?php echo $module_id; ?>.price_max = ''" placeholder="<?php _e('Max. price', 'content-egg'); ?>" />
application/modules/Feed/views/update_panel.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php defined('\ABSPATH') || exit; ?>
2
+ <input type="text" class="input-sm col-md-4" ng-model="updateParams.<?php echo $module_id; ?>.price_min" placeholder="<?php _e('Min. price', 'content-egg') ?>" title="<?php _e('Min. price for automatic update', 'content-egg') ?>" />
3
+ <input type="text" class="input-sm col-md-4" ng-model="updateParams.<?php echo $module_id; ?>.price_max" placeholder="<?php _e('Max. price', 'content-egg') ?>" title="<?php _e('Max. price for automatic update', 'content-egg') ?>" />
application/modules/GdeSlon/GdeSlonConfig.php CHANGED
@@ -60,7 +60,7 @@ class GdeSlonConfig extends AffiliateParserModuleConfig {
60
  'section' => 'default',
61
  ),
62
  'entries_per_page_update' => array(
63
- 'title' => __('Results for updates ', 'content-egg'),
64
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
65
  'callback' => array($this, 'render_input'),
66
  'default' => 6,
60
  'section' => 'default',
61
  ),
62
  'entries_per_page_update' => array(
63
+ 'title' => __('Results for updates and autoblogging', 'content-egg'),
64
  'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
65
  'callback' => array($this, 'render_input'),
66
  'default' => 6,
application/modules/GdeSlon/GdeSlonModule.php CHANGED
@@ -14,8 +14,8 @@ use ContentEgg\application\helpers\TextHelper;
14
  * GdeSlonModule class file
15
  *
16
  * @author keywordrush.com <support@keywordrush.com>
17
- * @link http://www.keywordrush.com/
18
- * @copyright Copyright &copy; 2016 keywordrush.com
19
  */
20
  class GdeSlonModule extends AffiliateParserModule {
21
 
14
  * GdeSlonModule class file
15
  *
16
  * @author keywordrush.com <support@keywordrush.com>
17
+ * @link https://www.keywordrush.com
18
+ * @copyright Copyright &copy; 2021 keywordrush.com
19
  */
20
  class GdeSlonModule extends AffiliateParserModule {
21
 
application/modules/Viglink/ExtraDataViglink.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Viglink;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\components\ExtraData;
8
+
9
+ /**
10
+ * ExtraDataViglink class file
11
+ *
12
+ * @author keywordrush.com <support@keywordrush.com>
13
+ * @link http://www.keywordrush.com/
14
+ * @copyright Copyright &copy; 2017 keywordrush.com
15
+ */
16
+ class ExtraDataViglink extends ExtraData {
17
+
18
+ public $country;
19
+
20
+ }
application/modules/Viglink/ViglinkConfig.php ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Viglink;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\components\AffiliateParserModuleConfig;
8
+
9
+ /**
10
+ * AffiliatewindowConfig class file
11
+ *
12
+ * @author keywordrush.com <support@keywordrush.com>
13
+ * @link http://www.keywordrush.com/
14
+ * @copyright Copyright &copy; 2017 keywordrush.com
15
+ */
16
+ class ViglinkConfig extends AffiliateParserModuleConfig {
17
+
18
+ public function options()
19
+ {
20
+ $optiosn = array(
21
+ 'apiKey' => array(
22
+ 'title' => 'API Key <span class="cegg_required">*</span>',
23
+ 'description' => __('To track clicks by campaign, use your campaign-specific API Key.', 'content-egg') . ' ' .
24
+ sprintf(__('You can find your API key in your <a target="_blank" href="%s">VigLink</a> account.', 'content-egg'), 'http://www.keywordrush.com/go/viglink') . ' ' .
25
+ __('When logged into your dashboard, go to Account > Sites > your domain name > "key" icon under Actions.', 'content-egg'),
26
+ 'callback' => array($this, 'render_input'),
27
+ 'default' => '',
28
+ 'validator' => array(
29
+ 'trim',
30
+ array(
31
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
32
+ 'when' => 'is_active',
33
+ 'message' => sprintf(__('The field "%s" can not be empty.', 'content-egg'), 'Password'),
34
+ ),
35
+ ),
36
+ ),
37
+ 'secretKey' => array(
38
+ 'title' => 'Secret Key <span class="cegg_required">*</span>',
39
+ 'description' => __('When logged into your dashboard, go to Account > Sites > your domain name > "key" icon under Actions.', 'content-egg'),
40
+ 'callback' => array($this, 'render_input'),
41
+ 'default' => '',
42
+ 'validator' => array(
43
+ 'trim',
44
+ array(
45
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
46
+ 'when' => 'is_active',
47
+ 'message' => sprintf(__('The field "%s" can not be empty.', 'content-egg'), 'Username'),
48
+ ),
49
+ ),
50
+ ),
51
+ 'entries_per_page' => array(
52
+ 'title' => __('Results', 'content-egg'),
53
+ 'description' => __('Number of results for one search query.', 'content-egg'),
54
+ 'callback' => array($this, 'render_input'),
55
+ 'default' => 10,
56
+ 'validator' => array(
57
+ 'trim',
58
+ 'absint',
59
+ ),
60
+ ),
61
+ 'entries_per_page_update' => array(
62
+ 'title' => __('Results for updates and autoblogging', 'content-egg'),
63
+ 'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
64
+ 'callback' => array($this, 'render_input'),
65
+ 'default' => 6,
66
+ 'validator' => array(
67
+ 'trim',
68
+ 'absint',
69
+ ),
70
+ ),
71
+ 'deeplink' => array(
72
+ 'title' => 'Deeplink',
73
+ 'description' => __('Used only for search by URL feature! Set <a target="_blank" href="https://ce-docs.keywordrush.com/set-up-products/deeplinksettings">Deeplink</a> for one of CPA-networks.', 'content-egg'),
74
+ 'callback' => array($this, 'render_input'),
75
+ 'default' => '',
76
+ 'validator' => array(
77
+ 'trim',
78
+ ),
79
+ 'section' => 'default',
80
+ ),
81
+ 'country' => array(
82
+ 'title' => __('Country', 'content-egg'),
83
+ 'description' => __('Filter results to only include offers from a specific country. Please use ISO Alpha-2 country codes like "us" for United States. You can specify multiple countries separated by commas.', 'content-egg'),
84
+ 'callback' => array($this, 'render_input'),
85
+ 'default' => '',
86
+ ),
87
+ 'category' => array(
88
+ 'title' => __('Category ', 'content-egg'),
89
+ 'description' => __('Filter your query by a specific category.', 'content-egg'),
90
+ 'callback' => array($this, 'render_dropdown'),
91
+ 'dropdown_options' => self::getCategoriesList(),
92
+ 'default' => '',
93
+ ),
94
+ 'sortBy' => array(
95
+ 'title' => __('Sort order', 'content-egg'),
96
+ 'callback' => array($this, 'render_dropdown'),
97
+ 'dropdown_options' => array(
98
+ '' => __('Relevance', 'content-egg'),
99
+ 'price' => __('Price low to high', 'content-egg'),
100
+ '-price' => __('Price high to low', 'content-egg'),
101
+ ),
102
+ 'default' => '',
103
+ ),
104
+ 'priceFrom' => array(
105
+ 'title' => __('Price From', 'content-egg'),
106
+ 'callback' => array($this, 'render_input'),
107
+ 'default' => '',
108
+ 'validator' => array(
109
+ 'trim',
110
+ ),
111
+ 'metaboxInit' => true,
112
+ ),
113
+ 'priceTo' => array(
114
+ 'title' => __('Price To', 'content-egg'),
115
+ 'callback' => array($this, 'render_input'),
116
+ 'default' => '',
117
+ 'validator' => array(
118
+ 'trim',
119
+ ),
120
+ 'metaboxInit' => true,
121
+ ),
122
+ 'merchant' => array(
123
+ 'title' => __('Merchant', 'content-egg'),
124
+ 'description' => sprintf(__('Filter your query by a specific merchant. Currently this filter is case-sensitive. The best way to ensure that it will return accurate results is to filter with a value <a target="_blank" href="%s">already discovered</a>. You can specify multiple merchants separated by commas.', 'content-egg'), 'https://viglink-developer-center.readme.io/docs/product-search#section-faceting'),
125
+ 'callback' => array($this, 'render_input'),
126
+ 'default' => '',
127
+ ),
128
+ 'filterImages' => array(
129
+ 'title' => __('Images filter', 'content-egg'),
130
+ 'description' => __('Products with images', 'content-egg') . '<p class="description">' . __('Some merchants do not supply an image in their feeds. As such, you have the option here to filter out items that do not have a merchant-supplied image, or correctly structured image URL.', 'content-egg') . '</p>',
131
+ 'callback' => array($this, 'render_checkbox'),
132
+ 'default' => true,
133
+ ),
134
+ 'default_currency' => array(
135
+ 'title' => __('Default currency', 'content-egg'),
136
+ 'description' => __('Expects the three-letter ISO 4217 currency code. Used only for search by URL feature.', 'content-egg'),
137
+ 'callback' => array($this, 'render_input'),
138
+ 'default' => '',
139
+ ),
140
+ 'save_img' => array(
141
+ 'title' => __('Save images', 'content-egg'),
142
+ 'description' => __('Save images on server', 'content-egg'),
143
+ 'callback' => array($this, 'render_checkbox'),
144
+ 'default' => false,
145
+ ),
146
+ );
147
+ $optiosn = array_merge(parent::options(), $optiosn);
148
+ $optiosn['ttl_items']['description'] = __('Please note: Price update is only available for products added by direct URL (not by keyword search).', 'content-egg');
149
+ $optiosn['update_mode']['default'] = 'cron';
150
+ return $optiosn;
151
+ }
152
+
153
+ public static function getCategoriesList()
154
+ {
155
+ return array('' => __('[ All ]', 'content-egg'), 'Adult and Gambling' => 'Adult and Gambling', 'Adult and Gambling > Adult' => 'Adult and Gambling > Adult', 'Adult and Gambling > Gambling' => 'Adult and Gambling > Gambling', 'Adult and Gambling > Other Adult and Gambling' => 'Adult and Gambling > Other Adult and Gambling', 'Art and Entertainment' => 'Art and Entertainment', 'Art and Entertainment > DVDs and Videos' => 'Art and Entertainment > DVDs and Videos', 'Art and Entertainment > Music' => 'Art and Entertainment > Music', 'Art and Entertainment > Art' => 'Art and Entertainment > Art', 'Art and Entertainment > Event Tickets' => 'Art and Entertainment > Event Tickets', 'Art and Entertainment > Other Art and Entertainment' => 'Art and Entertainment > Other Art and Entertainment', 'Automotive' => 'Automotive', 'Automotive > Automotive Vehicles' => 'Automotive > Automotive Vehicles', 'Automotive > Auto Electronics' => 'Automotive > Auto Electronics', 'Automotive > Auto Parts and Tools' => 'Automotive > Auto Parts and Tools', 'Automotive > Other Auto' => 'Automotive > Other Auto', 'Cameras and Photo' => 'Cameras and Photo', 'Cameras and Photo > Camera Hardware and Accessories' => 'Cameras and Photo > Camera Hardware and Accessories', 'Cameras and Photo > Video Hardware and Accessories' => 'Cameras and Photo > Video Hardware and Accessories', 'Cameras and Photo > Other Camera' => 'Cameras and Photo > Other Camera', 'Career and Employment' => 'Career and Employment', 'Cell Phones and Mobile' => 'Cell Phones and Mobile', 'Cell Phones and Mobile > Mobile Devices' => 'Cell Phones and Mobile > Mobile Devices', 'Cell Phones and Mobile > Mobile Device Accessories' => 'Cell Phones and Mobile > Mobile Device Accessories', 'Cell Phones and Mobile > Mobile Device Software' => 'Cell Phones and Mobile > Mobile Device Software', 'Cell Phones and Mobile > Other Mobile' => 'Cell Phones and Mobile > Other Mobile', 'Collectibles' => 'Collectibles', 'Collectibles > Sports Memorabilia' => 'Collectibles > Sports Memorabilia', 'Collectibles > Stamps' => 'Collectibles > Stamps', 'Collectibles > Coins and Paper Money' => 'Collectibles > Coins and Paper Money', 'Collectibles > Other Collectibles' => 'Collectibles > Other Collectibles', 'Computing' => 'Computing', 'Computing > Computing, Hardware and Accessories' => 'Computing > Computing, Hardware and Accessories', 'Computing > Computing Software' => 'Computing > Computing Software', 'Computing > Other Computing' => 'Computing > Other Computing', 'Consumer Electronics' => 'Consumer Electronics', 'Consumer Electronics > Home Electronics' => 'Consumer Electronics > Home Electronics', 'Consumer Electronics > Portable Electronics' => 'Consumer Electronics > Portable Electronics', 'Consumer Electronics > Other Electronics' => 'Consumer Electronics > Other Electronics', 'Dating' => 'Dating', 'Education' => 'Education', 'Family and Baby' => 'Family and Baby', 'Family and Baby > Baby and Maternity Clothing' => 'Family and Baby > Baby and Maternity Clothing', 'Family and Baby > Baby Other' => 'Family and Baby > Baby Other', 'Fashion' => 'Fashion', 'Fashion > Clothing' => 'Fashion > Clothing', 'Fashion > Clothing > Men\'s Clothing' => 'Fashion > Clothing > Men\'s Clothing', 'Fashion > Clothing > Women\'s Clothing' => 'Fashion > Clothing > Women\'s Clothing', 'Fashion > Clothing > Kid\'s Clothing' => 'Fashion > Clothing > Kid\'s Clothing', 'Fashion > Clothing > Other Clothing' => 'Fashion > Clothing > Other Clothing', 'Fashion > Shoes' => 'Fashion > Shoes', 'Fashion > Shoes > Men\'s Shoes' => 'Fashion > Shoes > Men\'s Shoes', 'Fashion > Shoes > Women\'s Shoes' => 'Fashion > Shoes > Women\'s Shoes', 'Fashion > Shoes > Kid\'s Shoes' => 'Fashion > Shoes > Kid\'s Shoes', 'Fashion > Shoes > Other Shoes' => 'Fashion > Shoes > Other Shoes', 'Fashion > Luggage and Bags' => 'Fashion > Luggage and Bags', 'Fashion > Luggage and Bags > Women\'s Luggage and Bags' => 'Fashion > Luggage and Bags > Women\'s Luggage and Bags', 'Fashion > Luggage and Bags > Other Luggage' => 'Fashion > Luggage and Bags > Other Luggage', 'Fashion > Fashion Accessories' => 'Fashion > Fashion Accessories', 'Fashion > Fashion Accessories > Men\'s Fashion Accessories' => 'Fashion > Fashion Accessories > Men\'s Fashion Accessories', 'Fashion > Fashion Accessories > Women\'s Fashion Accessories' => 'Fashion > Fashion Accessories > Women\'s Fashion Accessories', 'Fashion > Fashion Accessories > Kid\'s Fashion Accessories' => 'Fashion > Fashion Accessories > Kid\'s Fashion Accessories', 'Fashion > Fashion Accessories > Other Fashion Accessories' => 'Fashion > Fashion Accessories > Other Fashion Accessories', 'Fashion > Other Fashion' => 'Fashion > Other Fashion', 'Financial Services' => 'Financial Services', 'Firearms and Hunting' => 'Firearms and Hunting', 'Firearms and Hunting > Firearms' => 'Firearms and Hunting > Firearms', 'Firearms and Hunting > Knives' => 'Firearms and Hunting > Knives', 'Firearms and Hunting > Fishing' => 'Firearms and Hunting > Fishing', 'Firearms and Hunting > Bow Hunting' => 'Firearms and Hunting > Bow Hunting', 'Firearms and Hunting > Survival Gear' => 'Firearms and Hunting > Survival Gear', 'Firearms and Hunting > Other Hunting' => 'Firearms and Hunting > Other Hunting', 'Food and Drink' => 'Food and Drink', 'Food and Drink > Standard Food' => 'Food and Drink > Standard Food', 'Food and Drink > Gourmet Food' => 'Food and Drink > Gourmet Food', 'Food and Drink > Other Food and Drink' => 'Food and Drink > Other Food and Drink', 'Health and Beauty' => 'Health and Beauty', 'Health and Beauty > Health' => 'Health and Beauty > Health', 'Health and Beauty > Beauty' => 'Health and Beauty > Beauty', 'Health and Beauty > Other Health and Beauty' => 'Health and Beauty > Other Health and Beauty', 'Home and Garden' => 'Home and Garden', 'Home and Garden > Home Decor' => 'Home and Garden > Home Decor', 'Home and Garden > Appliances' => 'Home and Garden > Appliances', 'Home and Garden > Home Improvement' => 'Home and Garden > Home Improvement', 'Home and Garden > Kitchen, Dining and Bar' => 'Home and Garden > Kitchen, Dining and Bar', 'Home and Garden > Gardening' => 'Home and Garden > Gardening', 'Home and Garden > Gift' => 'Home and Garden > Gift', 'Home and Garden > Flowers' => 'Home and Garden > Flowers', 'Home and Garden > Cleaning Supplies' => 'Home and Garden > Cleaning Supplies', 'Home and Garden > Other Home and Garden' => 'Home and Garden > Other Home and Garden', 'Industrial and Supply' => 'Industrial and Supply', 'Industrial and Supply > Office Supplies' => 'Industrial and Supply > Office Supplies', 'Industrial and Supply > Office Electronics' => 'Industrial and Supply > Office Electronics', 'Industrial and Supply > Industrial' => 'Industrial and Supply > Industrial', 'Industrial and Supply > Other Industrial and Supply' => 'Industrial and Supply > Other Industrial and Supply', 'Jewelry and Watches' => 'Jewelry and Watches', 'Jewelry and Watches > Jewelry' => 'Jewelry and Watches > Jewelry', 'Jewelry and Watches > Watches' => 'Jewelry and Watches > Watches', 'Jewelry and Watches > Other Jewelry' => 'Jewelry and Watches > Other Jewelry', 'Lifestyle' => 'Lifestyle', 'Motorcycles and Powersports' => 'Motorcycles and Powersports', 'Motorcycles and Powersports > Motorcycling' => 'Motorcycles and Powersports > Motorcycling', 'Motorcycles and Powersports > ATVs' => 'Motorcycles and Powersports > ATVs', 'Motorcycles and Powersports > Boating' => 'Motorcycles and Powersports > Boating', 'Motorcycles and Powersports > Other Motorcycles and Powersports' => 'Motorcycles and Powersports > Other Motorcycles and Powersports', 'Music and Musicians' => 'Music and Musicians', 'Music and Musicians > Musical Instruments' => 'Music and Musicians > Musical Instruments', 'Music and Musicians > Musical Accessories' => 'Music and Musicians > Musical Accessories', 'Music and Musicians > Other Musical' => 'Music and Musicians > Other Musical', 'News, Books and Magazines' => 'News, Books and Magazines', 'News, Books and Magazines > Books and eBooks' => 'News, Books and Magazines > Books and eBooks', 'News, Books and Magazines > Magazines and Newspaper' => 'News, Books and Magazines > Magazines and Newspaper', 'News, Books and Magazines > Other Books' => 'News, Books and Magazines > Other Books', 'Online Services' => 'Online Services', 'Other' => 'Other', 'Pets' => 'Pets', 'Pets > Dogs' => 'Pets > Dogs', 'Pets > Fish' => 'Pets > Fish', 'Pets > Cat' => 'Pets > Cat', 'Pets > Birds' => 'Pets > Birds', 'Pets > Other Pets' => 'Pets > Other Pets', 'Real Estate' => 'Real Estate', 'Religious and Ceremonial' => 'Religious and Ceremonial', 'Self-Help' => 'Self-Help', 'Shopping and Coupons' => 'Shopping and Coupons', 'Sports and Fitness' => 'Sports and Fitness', 'Sports and Fitness > Bicycling' => 'Sports and Fitness > Bicycling', 'Sports and Fitness > Water Sports' => 'Sports and Fitness > Water Sports', 'Sports and Fitness > Golfing' => 'Sports and Fitness > Golfing', 'Sports and Fitness > Winter Sports' => 'Sports and Fitness > Winter Sports', 'Sports and Fitness > Outdoor Apparel' => 'Sports and Fitness > Outdoor Apparel', 'Sports and Fitness > Camping' => 'Sports and Fitness > Camping', 'Sports and Fitness > Other Sports and Fitness' => 'Sports and Fitness > Other Sports and Fitness', 'Toys and Hobbies' => 'Toys and Hobbies', 'Toys and Hobbies > Toys' => 'Toys and Hobbies > Toys', 'Toys and Hobbies > Games' => 'Toys and Hobbies > Games', 'Toys and Hobbies > Crafts' => 'Toys and Hobbies > Crafts', 'Toys and Hobbies > Hobbies' => 'Toys and Hobbies > Hobbies', 'Toys and Hobbies > Costumes' => 'Toys and Hobbies > Costumes', 'Toys and Hobbies > Other Toys and Hobbies' => 'Toys and Hobbies > Other Toys and Hobbies', 'Travel' => 'Travel', 'Travel > Other Travel' => 'Travel > Other Travel', 'Video Gaming' => 'Video Gaming', 'Video Gaming > Video Games' => 'Video Gaming > Video Games', 'Video Gaming > Gaming Hardware' => 'Video Gaming > Gaming Hardware', 'Video Gaming > Other Gaming' => 'Video Gaming > Other Gaming');
156
+ }
157
+
158
+ }
application/modules/Viglink/ViglinkModule.php ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\Viglink;
4
+
5
+ defined('\ABSPATH') || exit;
6
+
7
+ use ContentEgg\application\components\AffiliateParserModule;
8
+ use ContentEgg\application\libs\viglink\ViglinkApi;
9
+ use ContentEgg\application\components\ContentProduct;
10
+ use ContentEgg\application\admin\PluginAdmin;
11
+ use ContentEgg\application\helpers\TextHelper;
12
+ use ContentEgg\application\components\LinkHandler;
13
+
14
+ /**
15
+ * ViglinkModule class file
16
+ *
17
+ * @author keywordrush.com <support@keywordrush.com>
18
+ * @link http://www.keywordrush.com/
19
+ * @copyright Copyright &copy; 2017 keywordrush.com
20
+ */
21
+ class ViglinkModule extends AffiliateParserModule {
22
+
23
+ private $api_client = null;
24
+
25
+ public function info()
26
+ {
27
+ return array(
28
+ 'name' => 'Viglink',
29
+ 'description' => sprintf(__('Module adds products from <a target="_blank" href="%s">VigLink</a>.', 'content-egg'), 'http://www.keywordrush.com/go/viglink') . ' ' .
30
+ __('Search for specific products from a vast catalog of over 350 million products.', 'content-egg') . ' ' .
31
+ __('You can search by keyword or product URL.', 'content-egg'),
32
+ 'docs_uri' => 'https://ce-docs.keywordrush.com/modules/affiliate/viglink',
33
+ );
34
+ }
35
+
36
+ public function releaseVersion()
37
+ {
38
+ return '5.2.0';
39
+ }
40
+
41
+ public function isFree()
42
+ {
43
+ return true;
44
+ }
45
+
46
+ public function getParserType()
47
+ {
48
+ return self::PARSER_TYPE_PRODUCT;
49
+ }
50
+
51
+ public function defaultTemplateName()
52
+ {
53
+ return 'grid';
54
+ }
55
+
56
+ public function isItemsUpdateAvailable()
57
+ {
58
+ return true;
59
+ }
60
+
61
+ public function isUrlSearchAllowed()
62
+ {
63
+ return true;
64
+ }
65
+
66
+ public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
67
+ {
68
+ $options = array();
69
+ if (filter_var($keyword, FILTER_VALIDATE_URL))
70
+ {
71
+ $url = filter_var($keyword, FILTER_SANITIZE_URL);
72
+ return $this->searchByUrl($url);
73
+ } else
74
+ {
75
+ return $this->searchByKeyword($keyword, $query_params, $is_autoupdate);
76
+ }
77
+ }
78
+
79
+ public function doRequestItems(array $items)
80
+ {
81
+ foreach ($items as $key => $item)
82
+ {
83
+ if (!$item['orig_url'])
84
+ continue;
85
+
86
+ try
87
+ {
88
+ $product = $this->searchByUrl($item['orig_url']);
89
+ } catch (\Exception $ex)
90
+ {
91
+ continue;
92
+ }
93
+
94
+ if (!$product || !is_array($product))
95
+ continue;
96
+ $product = $product[0];
97
+ // assign new data
98
+ $items[$key]['price'] = $product->price;
99
+ $items[$key]['currencyCode'] = $product->currencyCode;
100
+ }
101
+ return $items;
102
+ }
103
+
104
+ private function searchByUrl($url)
105
+ {
106
+ if (!$result = $this->getApiClient()->getMetadata($url))
107
+ return array();
108
+ return array($this->prepareByUrlResults($result));
109
+ }
110
+
111
+ private function searchByKeyword($keyword, $query_params = array(), $is_autoupdate = false)
112
+ {
113
+ if ($is_autoupdate)
114
+ $options['itemsPerPage'] = $this->config('entries_per_page_update');
115
+ else
116
+ $options['itemsPerPage'] = $this->config('entries_per_page');
117
+
118
+ if ($this->config('country'))
119
+ $options['country'] = TextHelper::getArrayFromCommaList($this->config('country'));
120
+ if ($this->config('merchant'))
121
+ $options['merchant'] = TextHelper::getArrayFromCommaList($this->config('merchant'));
122
+
123
+ if ($this->config('sortBy'))
124
+ $options['sortBy'] = $this->config('sortBy');
125
+ if ($this->config('category'))
126
+ $options['category'] = $this->config('category');
127
+ if ($this->config('filterImages'))
128
+ $options['filterImages'] = true;
129
+
130
+ // price filter
131
+ if (!empty($query_params['priceFrom']))
132
+ $priceFrom = (float) $query_params['priceFrom'];
133
+ elseif ($this->config('priceFrom'))
134
+ $priceFrom = (float) $this->config('priceFrom');
135
+ else
136
+ $priceFrom = 0;
137
+ if (!empty($query_params['priceTo']))
138
+ $priceTo = (float) $query_params['priceTo'];
139
+ elseif ($this->config('priceTo'))
140
+ $priceTo = (float) $this->config('priceTo');
141
+ else
142
+ $priceTo = 0;
143
+ if ($priceFrom)
144
+ $options['price'] = $priceFrom . ',';
145
+ if ($priceTo)
146
+ {
147
+ if (!$options['price'])
148
+ $options['price'] = ',';
149
+ $options['price'] .= $priceTo;
150
+ }
151
+
152
+ $results = $this->getApiClient()->search($keyword, $options);
153
+
154
+ if (!isset($results['items']) || !is_array($results['items']))
155
+ return array();
156
+ $results = $results['items'];
157
+ if (!isset($results[0]) && isset($results['name']))
158
+ $results = array($results);
159
+ return $this->prepareByKeywordResults($results);
160
+ }
161
+
162
+ private function prepareByUrlResults($r)
163
+ {
164
+ $content = new ContentProduct;
165
+ $content->unique_id = md5($r['url']);
166
+ $content->title = $r['title'];
167
+ $content->orig_url = $r['url'];
168
+
169
+ $deeplink = $this->config('deeplink');
170
+ if ($deeplink)
171
+ $content->url = LinkHandler::createAffUrl($content->orig_url, $deeplink, (array) $content);
172
+ else
173
+ $content->url = $this->buildMonetizedUrl($r['url']);
174
+
175
+ if (!strstr($r['imageUrl'], 'data:image'))
176
+ $content->img = $r['imageUrl'];
177
+
178
+ $content->price = TextHelper::parsePriceAmount($r['price']);
179
+ if ($currency_code = TextHelper::parseCurrencyCode($r['price']))
180
+ $content->currencyCode = $currency_code;
181
+ else
182
+ $content->currencyCode = $this->config('default_currency');
183
+
184
+ if (strstr($content->orig_url, 'amazon.com.br/'))
185
+ $content->currencyCode = 'BRL';
186
+
187
+ $content->manufacturer = $r['brandName'];
188
+ $content->upc = $r['upc'];
189
+ $content->sku = $r['sku'];
190
+ $content->description = $r['description'];
191
+ $content->merchant = $r['merchantName'];
192
+ $content->domain = TextHelper::getHostName($content->orig_url);
193
+
194
+ return $content;
195
+ }
196
+
197
+ private function prepareByKeywordResults($results)
198
+ {
199
+ $data = array();
200
+ foreach ($results as $key => $r)
201
+ {
202
+ $content = new ContentProduct;
203
+
204
+ $content->unique_id = md5($r['url']);
205
+ $content->title = $r['name'];
206
+ $content->url = $r['url'];
207
+ $content->img = $r['imageUrl'];
208
+ $content->category = $r['category'];
209
+ $content->price = (float) $r['price'];
210
+ $content->currencyCode = 'USD';
211
+ $content->manufacturer = $r['brand'];
212
+ $content->upc = $r['upc'];
213
+ $content->merchant = $r['merchant'];
214
+
215
+ $domain = TextHelper::parseDomain($r['url'], 'u');
216
+ if ($domain == 'bizrate.com')
217
+ {
218
+ if ($d = TextHelper::parseDomain(TextHelper::parseOriginalUrl($r['url'], 'u'), 't'))
219
+ $domain = $d;
220
+ } else
221
+ {
222
+ if ($d = TextHelper::parseDomain(TextHelper::parseOriginalUrl($r['url'], 'u'), 'url'))
223
+ $domain = $d;
224
+ }
225
+
226
+ if ($domain)
227
+ {
228
+ $content->domain = $domain;
229
+ } else
230
+ {
231
+ $merchant = strtolower($r['merchant']);
232
+ if (TextHelper::isValidDomainName($merchant))
233
+ $content->domain = $merchant;
234
+ }
235
+
236
+ $content->extra = new ExtraDataViglink;
237
+ $content->extra->country = $r['country'];
238
+ $data[] = $content;
239
+ }
240
+ return $data;
241
+ }
242
+
243
+ /**
244
+ * Building Monetized URL
245
+ * @link: https://viglink-developer-center.readme.io/docs/building-monetized-urls
246
+ */
247
+ private function buildMonetizedUrl($url)
248
+ {
249
+ $filtered = \apply_filters('cegg_viglink_affiliate_link', $url);
250
+ if ($filtered != $url)
251
+ return $filtered;
252
+
253
+ $params = array(
254
+ 'key' => $this->config('apiKey'),
255
+ 'u' => $url,
256
+ );
257
+ return 'https://redirect.viglink.com?' . http_build_query($params);
258
+ }
259
+
260
+ public function viewDataPrepare($data)
261
+ {
262
+ $deeplink = $this->config('deeplink');
263
+ foreach ($data as $key => $d)
264
+ {
265
+ if (empty($d['orig_url']))
266
+ continue;
267
+ if ($deeplink)
268
+ $data[$key]['url'] = LinkHandler::createAffUrl($d['orig_url'], $deeplink, $d);
269
+ else
270
+ $data[$key]['url'] = $this->buildMonetizedUrl($d['orig_url']);
271
+ }
272
+
273
+ return parent::viewDataPrepare($data);
274
+ }
275
+
276
+ private function getApiClient()
277
+ {
278
+ if ($this->api_client === null)
279
+ {
280
+ $this->api_client = new ViglinkApi($this->config('apiKey'), $this->config('secretKey'));
281
+ }
282
+ return $this->api_client;
283
+ }
284
+
285
+ public function renderResults()
286
+ {
287
+ PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
288
+ }
289
+
290
+ public function renderSearchResults()
291
+ {
292
+ PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
293
+ }
294
+
295
+ public function renderSearchPanel()
296
+ {
297
+ $this->render('search_panel', array('module_id' => $this->getId()));
298
+ }
299
+
300
+ public function renderUpdatePanel()
301
+ {
302
+ $this->render('update_panel', array('module_id' => $this->getId()));
303
+ }
304
+
305
+ }
application/modules/Viglink/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ // Silence is golden.
application/modules/Viglink/templates/data_grid.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+
5
+ /*
6
+ Name: Grid
7
+ */
8
+
9
+ __('Grid', 'content-egg-tpl');
10
+
11
+ $this->renderPartial('grid');
application/modules/Viglink/templates/data_item.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+
5
+ /*
6
+ Name: Product card
7
+ */
8
+
9
+ __('Product card', 'content-egg-tpl');
10
+
11
+ $this->renderPartial('item');
application/modules/Viglink/templates/data_item_simple.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+
5
+ /*
6
+ Name: Product card (no features)
7
+ */
8
+
9
+ __('Product card (no features)', 'content-egg');
10
+ $this->renderPartial('item_simple');
application/modules/Viglink/templates/data_list.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+
5
+ /*
6
+ Name: List
7
+ */
8
+ __('List', 'content-egg-tpl');
9
+
10
+ $this->renderPartial('list');
application/modules/Viglink/templates/data_price_tracker_alert.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined('\ABSPATH') || exit;
4
+
5
+ /*
6
+ Name: Price tracker & alert
7
+ */
8
+
9
+ __('Price tracker & alert', 'content-egg-tpl');
10
+
11
+ $this->renderPartial('price_tracker_alert');
application/modules/Viglink/views/search_panel.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php defined('\ABSPATH') || exit; ?>
2
+ <input type="text" class="input-sm col-md-4" ng-model="query_params.<?php echo $module_id; ?>.priceFrom" ng-init="query_params.<?php echo $module_id; ?>.priceFrom = ''" placeholder="<?php _e('Min. price', 'content-egg'); ?>" />
3
+ <input type="text" class="input-sm col-md-4" ng-model="query_params.<?php echo $module_id; ?>.priceTo" ng-init="query_params.<?php echo $module_id; ?>.priceTo = ''" placeholder="<?php _e('Max. price', 'content-egg'); ?>" />
application/modules/Viglink/views/update_panel.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php defined('\ABSPATH') || exit; ?>
2
+ <input type="text" class="input-sm col-md-4" ng-model="updateParams.<?php echo $module_id; ?>.priceFrom" placeholder="<?php _e('Min. price', 'content-egg') ?>" title="<?php _e('Min. price for automatic update', 'content-egg') ?>" />
3
+ <input type="text" class="input-sm col-md-4" ng-model="updateParams.<?php echo $module_id; ?>.priceTo" placeholder="<?php _e('Max. price', 'content-egg') ?>" title="<?php _e('Max. price for automatic update', 'content-egg') ?>" />
application/templates/blocks/grid_row.php CHANGED
@@ -14,7 +14,7 @@ use ContentEgg\application\helpers\TemplateHelper;
14
  <?php endif; ?>
15
 
16
  <?php if ($item['img']): ?>
17
- <img src="<?php echo \esc_attr($item['img']) ?>" alt="<?php echo \esc_attr($item['title']); ?>" />
18
  <?php endif; ?>
19
  </div>
20
 
@@ -40,7 +40,7 @@ use ContentEgg\application\helpers\TemplateHelper;
40
  <?php endif; ?>
41
 
42
  <?php if ($item['stock_status'] == -1): ?>
43
- <div title="<?php echo \esc_attr(sprintf(__('Last updated on %s', 'content-egg-tpl'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
44
  <?php echo \esc_html(TemplateHelper::getStockStatusStr($item)); ?>
45
  </div>
46
  <?php endif; ?>
14
  <?php endif; ?>
15
 
16
  <?php if ($item['img']): ?>
17
+ <?php TemplateHelper::displayImage($item, 190, 170); ?>
18
  <?php endif; ?>
19
  </div>
20
 
40
  <?php endif; ?>
41
 
42
  <?php if ($item['stock_status'] == -1): ?>
43
+ <div title="<?php echo \esc_attr(sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
44
  <?php echo \esc_html(TemplateHelper::getStockStatusStr($item)); ?>
45
  </div>
46
  <?php endif; ?>
application/templates/blocks/item_after_price_row.php CHANGED
@@ -8,20 +8,14 @@ use ContentEgg\application\helpers\TemplateHelper;
8
 
9
  <div class="after-price-row cegg-lineh-20 cegg-mb15">
10
  <small class="text-muted">
11
- <?php if (!empty($item['extra']['totalNew'])): ?>
12
- <?php echo $item['extra']['totalNew']; ?>
13
- <?php _e('new', 'content-egg-tpl'); ?>
14
- <?php if ($item['extra']['lowestNewPrice']): ?>
15
- <?php _e('from', 'content-egg-tpl'); ?> <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode']); ?>
16
- <?php endif; ?>
17
  <?php endif; ?>
18
  <?php if (!empty($item['extra']['totalUsed'])): ?>
19
- <br><?php echo $item['extra']['totalUsed']; ?>
20
- <?php _e('used', 'content-egg-tpl'); ?> <?php _e('from', 'content-egg-tpl'); ?>
21
- <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode']); ?>
22
  <?php endif; ?>
23
  <?php if (!empty($item['extra']['IsEligibleForSuperSaverShipping'])): ?>
24
- <div class="text-success"><?php _e('Free shipping', 'content-egg-tpl'); ?></div>
25
  <?php endif; ?>
26
  </small>
27
  </div>
@@ -58,7 +52,7 @@ use ContentEgg\application\helpers\TemplateHelper;
58
  <?php endif; ?>
59
 
60
  <?php if ($item['extra']['shippingInfo']['shippingType'] == 'Free'): ?>
61
- <div class="text-success"><?php _e('Free shipping', 'content-egg-tpl'); ?></div>
62
  <?php endif; ?>
63
 
64
  <?php if ($item['extra']['eekStatus']): ?>
8
 
9
  <div class="after-price-row cegg-lineh-20 cegg-mb15">
10
  <small class="text-muted">
11
+ <?php if (!empty($item['extra']['totalNew']) && $item['extra']['totalNew'] > 1): ?>
12
+ <?php echo sprintf(TemplateHelper::__('%d new from %s'), $item['extra']['totalNew'], TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode'])); ?><br />
 
 
 
 
13
  <?php endif; ?>
14
  <?php if (!empty($item['extra']['totalUsed'])): ?>
15
+ <?php echo sprintf(TemplateHelper::__('%d used from %s'), $item['extra']['totalUsed'], TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode'])); ?><br />
 
 
16
  <?php endif; ?>
17
  <?php if (!empty($item['extra']['IsEligibleForSuperSaverShipping'])): ?>
18
+ <div class="text-success"><?php TemplateHelper::_e('Free shipping'); ?></div>
19
  <?php endif; ?>
20
  </small>
21
  </div>
52
  <?php endif; ?>
53
 
54
  <?php if ($item['extra']['shippingInfo']['shippingType'] == 'Free'): ?>
55
+ <div class="text-success"><?php TemplateHelper::_e('Free shipping'); ?></div>
56
  <?php endif; ?>
57
 
58
  <?php if ($item['extra']['eekStatus']): ?>
application/templates/blocks/item_features.php CHANGED
@@ -1,11 +1,14 @@
1
- <?php defined('\ABSPATH') || exit; ?>
2
- <?php use ContentEgg\application\admin\GeneralConfig; ?>
 
 
 
3
 
4
  <?php if ($disable_features) return; ?>
5
 
6
  <?php if (!empty($item['extra']['specificationList'])): ?>
7
 
8
- <h4 class="cegg-no-top-margin"><?php _e('Specifications', 'content-egg-tpl'); ?></h4>
9
  <table class='table table-condensed cegg-features-table'>
10
  <tbody>
11
 
@@ -14,92 +17,92 @@
14
  if (!empty($specificationList['key']))
15
  echo '<tr><td colspan="2"><b>' . esc_html($specificationList['key']) . '</b></td></tr>';
16
  ?>
17
- <?php foreach ($specificationList['values'] as $feature): ?>
18
  <tr>
19
  <td class='text-muted'><?php echo esc_html($feature['key']) ?></td><td><?php echo esc_html(join('; ', $feature['value'])); ?></td>
20
  </tr>
21
- <?php endforeach; ?>
22
- <?php endforeach; ?>
23
  </tbody>
24
  </table>
25
  <?php elseif (!empty($item['extra']['itemAttributes']['Feature'])): ?>
26
  <div class="cegg-features-box">
27
- <h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
28
  <ul class="cegg-feature-list">
29
  <?php foreach ($item['extra']['itemAttributes']['Feature'] as $k => $feature): ?>
30
  <li><?php echo $feature; ?></li>
31
- <?php if ($k >= 4) break; ?>
32
- <?php endforeach; ?>
33
  </ul>
34
  </div>
35
 
36
  <?php elseif (!empty($item['features'])): ?>
37
- <h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
38
  <table class='table table-condensed cegg-features-table'>
39
  <tbody>
40
- <?php foreach ($item['features'] as $feature): ?>
41
  <tr>
42
  <td class='text-muted'><?php echo esc_html(__($feature['name'], 'content-egg-tpl')) ?></td><td><?php echo esc_html($feature['value']); ?></td>
43
  </tr>
44
- <?php endforeach; ?>
45
  </tbody>
46
  </table>
47
  <?php elseif (!empty($item['extra']['param'])): ?>
48
 
49
- <h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
50
  <table class='table table-condensed cegg-features-table'>
51
  <tbody>
52
- <?php foreach ($item['extra']['param'] as $fname => $fvalue): ?>
53
  <tr>
54
  <td class='text-muted'><?php echo esc_html($fname) ?></td><td><?php echo esc_html($fvalue); ?></td>
55
  </tr>
56
- <?php endforeach; ?>
57
  </tbody>
58
  </table>
59
  <?php elseif (!empty($item['extra']['features'])): ?>
60
 
61
- <h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
62
  <table class='table table-condensed cegg-features-table'>
63
  <tbody>
64
- <?php foreach ($item['extra']['features'] as $feature): ?>
65
  <tr>
66
  <td class='text-muted'><?php echo esc_html(__($feature['name'], 'content-egg-tpl')) ?></td><td><?php echo esc_html($feature['value']); ?></td>
67
  </tr>
68
- <?php endforeach; ?>
69
  </tbody>
70
  </table>
71
  <?php elseif (!empty($item['extra']['properties'])): ?>
72
 
73
- <h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
74
  <table class='table table-condensed cegg-features-table'>
75
  <tbody>
76
- <?php foreach ($item['extra']['properties'] as $property): ?>
77
  <tr>
78
  <td class='text-muted'><?php echo esc_html(__($feature['name'], 'content-egg-tpl')) ?></td><td><?php echo esc_html($property['value']); ?></td>
79
  </tr>
80
- <?php endforeach; ?>
81
  </tbody>
82
  </table>
83
 
84
  <?php elseif (!empty($item['extra']['keySpecs'])): ?>
85
  <div class="cegg-features-box">
86
- <h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
87
  <ul class="cegg-feature-list">
88
  <?php foreach ($item['extra']['keySpecs'] as $feature): ?>
89
  <li><?php echo esc_html($feature); ?></li>
90
- <?php endforeach; ?>
91
  </ul>
92
  </div>
93
  <?php elseif (!empty($item['extra']['Detail'])): ?>
94
 
95
- <h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
96
  <table class='table table-condensed cegg-features-table'>
97
  <tbody>
98
- <?php foreach ($item['extra']['Detail'] as $name => $value): ?>
99
  <tr>
100
  <td class='text-muted'><?php echo esc_html($name) ?></td><td><?php echo esc_html($value); ?></td>
101
  </tr>
102
- <?php endforeach; ?>
103
  </tbody>
104
  </table>
105
 
1
+ <?php
2
+ defined('\ABSPATH') || exit;
3
+
4
+ use ContentEgg\application\helpers\TemplateHelper;
5
+ ?>
6
 
7
  <?php if ($disable_features) return; ?>
8
 
9
  <?php if (!empty($item['extra']['specificationList'])): ?>
10
 
11
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Specifications'); ?></h4>
12
  <table class='table table-condensed cegg-features-table'>
13
  <tbody>
14
 
17
  if (!empty($specificationList['key']))
18
  echo '<tr><td colspan="2"><b>' . esc_html($specificationList['key']) . '</b></td></tr>';
19
  ?>
20
+ <?php foreach ($specificationList['values'] as $feature): ?>
21
  <tr>
22
  <td class='text-muted'><?php echo esc_html($feature['key']) ?></td><td><?php echo esc_html(join('; ', $feature['value'])); ?></td>
23
  </tr>
24
+ <?php endforeach; ?>
25
+ <?php endforeach; ?>
26
  </tbody>
27
  </table>
28
  <?php elseif (!empty($item['extra']['itemAttributes']['Feature'])): ?>
29
  <div class="cegg-features-box">
30
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Features'); ?></h4>
31
  <ul class="cegg-feature-list">
32
  <?php foreach ($item['extra']['itemAttributes']['Feature'] as $k => $feature): ?>
33
  <li><?php echo $feature; ?></li>
34
+ <?php if ($k >= 4) break; ?>
35
+ <?php endforeach; ?>
36
  </ul>
37
  </div>
38
 
39
  <?php elseif (!empty($item['features'])): ?>
40
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Features'); ?></h4>
41
  <table class='table table-condensed cegg-features-table'>
42
  <tbody>
43
+ <?php foreach ($item['features'] as $feature): ?>
44
  <tr>
45
  <td class='text-muted'><?php echo esc_html(__($feature['name'], 'content-egg-tpl')) ?></td><td><?php echo esc_html($feature['value']); ?></td>
46
  </tr>
47
+ <?php endforeach; ?>
48
  </tbody>
49
  </table>
50
  <?php elseif (!empty($item['extra']['param'])): ?>
51
 
52
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Features'); ?></h4>
53
  <table class='table table-condensed cegg-features-table'>
54
  <tbody>
55
+ <?php foreach ($item['extra']['param'] as $fname => $fvalue): ?>
56
  <tr>
57
  <td class='text-muted'><?php echo esc_html($fname) ?></td><td><?php echo esc_html($fvalue); ?></td>
58
  </tr>
59
+ <?php endforeach; ?>
60
  </tbody>
61
  </table>
62
  <?php elseif (!empty($item['extra']['features'])): ?>
63
 
64
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Features'); ?></h4>
65
  <table class='table table-condensed cegg-features-table'>
66
  <tbody>
67
+ <?php foreach ($item['extra']['features'] as $feature): ?>
68
  <tr>
69
  <td class='text-muted'><?php echo esc_html(__($feature['name'], 'content-egg-tpl')) ?></td><td><?php echo esc_html($feature['value']); ?></td>
70
  </tr>
71
+ <?php endforeach; ?>
72
  </tbody>
73
  </table>
74
  <?php elseif (!empty($item['extra']['properties'])): ?>
75
 
76
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Features'); ?></h4>
77
  <table class='table table-condensed cegg-features-table'>
78
  <tbody>
79
+ <?php foreach ($item['extra']['properties'] as $property): ?>
80
  <tr>
81
  <td class='text-muted'><?php echo esc_html(__($feature['name'], 'content-egg-tpl')) ?></td><td><?php echo esc_html($property['value']); ?></td>
82
  </tr>
83
+ <?php endforeach; ?>
84
  </tbody>
85
  </table>
86
 
87
  <?php elseif (!empty($item['extra']['keySpecs'])): ?>
88
  <div class="cegg-features-box">
89
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Features'); ?></h4>
90
  <ul class="cegg-feature-list">
91
  <?php foreach ($item['extra']['keySpecs'] as $feature): ?>
92
  <li><?php echo esc_html($feature); ?></li>
93
+ <?php endforeach; ?>
94
  </ul>
95
  </div>
96
  <?php elseif (!empty($item['extra']['Detail'])): ?>
97
 
98
+ <h4 class="cegg-no-top-margin"><?php TemplateHelper::_e('Features'); ?></h4>
99
  <table class='table table-condensed cegg-features-table'>
100
  <tbody>
101
+ <?php foreach ($item['extra']['Detail'] as $name => $value): ?>
102
  <tr>
103
  <td class='text-muted'><?php echo esc_html($name) ?></td><td><?php echo esc_html($value); ?></td>
104
  </tr>
105
+ <?php endforeach; ?>
106
  </tbody>
107
  </table>
108
 
application/templates/blocks/item_row.php CHANGED
@@ -7,13 +7,15 @@ use ContentEgg\application\helpers\TemplateHelper;
7
  <div class="row">
8
  <div class="col-md-6 text-center cegg-image-container cegg-mb20">
9
  <?php if ($item['img']): ?>
10
- <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
11
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" />
12
  </a>
13
  <?php endif; ?>
14
  </div>
15
  <div class="col-md-6">
16
- <h3 class="cegg-item-title"><?php echo $item['title']; ?></h3>
 
 
17
  <?php if ($item['rating']): ?>
18
  <div class="cegg-mb5">
19
  <?php echo TemplateHelper::printRating($item, 'default'); ?>
@@ -27,17 +29,17 @@ use ContentEgg\application\helpers\TemplateHelper;
27
  <?php if ($item['priceOld']): ?>
28
  <span class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode'], '<small>', '</small>'); ?></strike></span><br>
29
  <?php endif; ?>
30
- <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode'], '<span class="cegg-currency">', '</span>'); ?></span>
31
- <?php endif; ?>
32
 
33
 
34
  <?php if ($stock_status = TemplateHelper::getStockStatusStr($item)): ?>
35
- <mark title="<?php echo \esc_attr(sprintf(__('Last updated on %s', 'content-egg-tpl'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id))); ?>" class="stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
36
  &nbsp;<?php echo \esc_html($stock_status); ?>
37
  </mark>
38
  <?php endif; ?>
39
  <?php if ($cashback_str = TemplateHelper::getCashbackStr($item)): ?>
40
- <div class="cegg-cashback"><?php echo sprintf(__('Plus %s Cash Back', 'content-egg-tpl'), $cashback_str); ?></div>
41
  <?php endif; ?>
42
  </div>
43
 
@@ -45,12 +47,16 @@ use ContentEgg\application\helpers\TemplateHelper;
45
 
46
  <div class="cegg-btn-row cegg-mb5">
47
  <div><a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger cegg-btn-big"><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></a></div>
48
- <span class="title-case text-muted"><?php TemplateHelper::getMerhantName($item, true); ?></span>
 
 
 
 
49
  </div>
50
  <div class="cegg-last-update-row cegg-mb15">
51
  <span class="text-muted">
52
  <small>
53
- <?php _e('as of', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted($module_id, $post_id); ?>
54
  <?php if ($module_id == 'Amazon') TemplateHelper::printAmazonDisclaimer(); ?>
55
  </small>
56
  </span>
7
  <div class="row">
8
  <div class="col-md-6 text-center cegg-image-container cegg-mb20">
9
  <?php if ($item['img']): ?>
10
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
11
+ <?php TemplateHelper::displayImage($item, 350, 350); ?>
12
  </a>
13
  <?php endif; ?>
14
  </div>
15
  <div class="col-md-6">
16
+ <?php if ($item['title']): ?>
17
+ <h3 class="cegg-item-title"><?php echo $item['title']; ?></h3>
18
+ <?php endif; ?>
19
  <?php if ($item['rating']): ?>
20
  <div class="cegg-mb5">
21
  <?php echo TemplateHelper::printRating($item, 'default'); ?>
29
  <?php if ($item['priceOld']): ?>
30
  <span class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode'], '<small>', '</small>'); ?></strike></span><br>
31
  <?php endif; ?>
32
+ <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode'], '<span class="cegg-currency">', '</span>'); ?></span>
33
+ <?php endif; ?>
34
 
35
 
36
  <?php if ($stock_status = TemplateHelper::getStockStatusStr($item)): ?>
37
+ <mark title="<?php echo \esc_attr(sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id))); ?>" class="stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
38
  &nbsp;<?php echo \esc_html($stock_status); ?>
39
  </mark>
40
  <?php endif; ?>
41
  <?php if ($cashback_str = TemplateHelper::getCashbackStr($item)): ?>
42
+ <div class="cegg-cashback"><?php echo sprintf(TemplateHelper::__('Plus %s Cash Back'), $cashback_str); ?></div>
43
  <?php endif; ?>
44
  </div>
45
 
47
 
48
  <div class="cegg-btn-row cegg-mb5">
49
  <div><a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger cegg-btn-big"><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></a></div>
50
+ <span class="title-case text-muted">
51
+ <?php TemplateHelper::getMerhantName($item, true); ?>
52
+ <?php TemplateHelper::printShopInfo($item, array('data-placement' => 'bottom')); ?>
53
+
54
+ </span>
55
  </div>
56
  <div class="cegg-last-update-row cegg-mb15">
57
  <span class="text-muted">
58
  <small>
59
+ <?php echo sprintf(TemplateHelper::__('as of %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id)); ?>
60
  <?php if ($module_id == 'Amazon') TemplateHelper::printAmazonDisclaimer(); ?>
61
  </small>
62
  </span>
application/templates/blocks/list_row.php CHANGED
@@ -3,20 +3,23 @@ defined('\ABSPATH') || exit;
3
 
4
  use ContentEgg\application\helpers\TemplateHelper;
5
  ?>
6
- <div class="cegg-list-logo-title cegg-mt5 cegg-mb5 visible-xs text-center">
 
7
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
8
  </div>
9
  <div class="row-products">
10
  <div class="col-md-2 col-sm-2 col-xs-12 cegg-image-cell">
11
  <?php if ($item['img']): ?>
12
- <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><img src="<?php echo $item['img']; ?>" alt="<?php echo \esc_attr($item['title']); ?>" /></a>
 
 
13
  <?php endif; ?>
14
  </div>
15
  <div class="col-md-5 col-sm-5 col-xs-12 cegg-desc-cell hidden-xs">
16
  <div class="cegg-no-top-margin cegg-list-logo-title">
17
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
18
  </div>
19
-
20
  </div>
21
  <div class="col-md-3 col-sm-3 col-xs-12 cegg-price-cell text-center">
22
  <div class="cegg-price-row">
@@ -28,32 +31,27 @@ use ContentEgg\application\helpers\TemplateHelper;
28
  <div class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?></strike></div>
29
  <?php endif; ?>
30
  <?php if ($stock_status = TemplateHelper::getStockStatusStr($item)): ?>
31
- <div title="<?php echo \esc_attr(sprintf(__('Last updated on %s', 'content-egg-tpl'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
32
  <?php echo \esc_html($stock_status); ?>
33
  </div>
34
  <?php endif; ?>
35
 
36
  <?php if ($item['module_id'] == 'Amazon'): ?>
 
37
  <?php if (!empty($item['extra']['totalNew']) && $item['extra']['totalNew'] > 1): ?>
38
  <div class="cegg-font60 cegg-lineheight15">
39
- <?php echo $item['extra']['totalNew']; ?>
40
- <?php _e('new', 'content-egg-tpl'); ?>
41
- <?php if ($item['extra']['lowestNewPrice']): ?>
42
- <?php _e('from', 'content-egg-tpl'); ?> <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode']); ?>
43
- <?php endif; ?>
44
  </div>
45
  <?php endif; ?>
46
  <?php if (!empty($item['extra']['totalUsed'])): ?>
47
  <div class="cegg-font60 cegg-lineheight15">
48
- <?php echo $item['extra']['totalUsed']; ?>
49
- <?php _e('used', 'content-egg-tpl'); ?> <?php _e('from', 'content-egg-tpl'); ?>
50
- <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode']); ?>
51
  </div>
52
  <?php endif; ?>
53
 
54
  <?php if (!empty($amazon_last_updated)): ?>
55
  <div class="cegg-font60 cegg-lineheight15">
56
- <?php _e('as of', 'content-egg-tpl'); ?> <?php echo $amazon_last_updated; ?>
57
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
58
  </div>
59
  <?php endif; ?>
@@ -65,11 +63,16 @@ use ContentEgg\application\helpers\TemplateHelper;
65
  <div class="cegg-btn-row">
66
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
67
  </div>
68
- <?php if ($merchant = TemplateHelper::getMerhantName($item)): ?>
69
  <div class="text-center">
70
- <small class="text-muted title-case"><?php echo \esc_html($merchant); ?></small>
 
 
 
71
  </div>
72
  <?php endif; ?>
 
73
 
74
  </div>
75
- </div>
 
3
 
4
  use ContentEgg\application\helpers\TemplateHelper;
5
  ?>
6
+
7
+ <div class="cegg-list-logo-title cegg-mt5 cegg-mb15 visible-xs text-center">
8
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
9
  </div>
10
  <div class="row-products">
11
  <div class="col-md-2 col-sm-2 col-xs-12 cegg-image-cell">
12
  <?php if ($item['img']): ?>
13
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
14
+ <?php TemplateHelper::displayImage($item, 130, 100); ?>
15
+ </a>
16
  <?php endif; ?>
17
  </div>
18
  <div class="col-md-5 col-sm-5 col-xs-12 cegg-desc-cell hidden-xs">
19
  <div class="cegg-no-top-margin cegg-list-logo-title">
20
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
21
  </div>
22
+
23
  </div>
24
  <div class="col-md-3 col-sm-3 col-xs-12 cegg-price-cell text-center">
25
  <div class="cegg-price-row">
31
  <div class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?></strike></div>
32
  <?php endif; ?>
33
  <?php if ($stock_status = TemplateHelper::getStockStatusStr($item)): ?>
34
+ <div title="<?php echo \esc_attr(sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
35
  <?php echo \esc_html($stock_status); ?>
36
  </div>
37
  <?php endif; ?>
38
 
39
  <?php if ($item['module_id'] == 'Amazon'): ?>
40
+
41
  <?php if (!empty($item['extra']['totalNew']) && $item['extra']['totalNew'] > 1): ?>
42
  <div class="cegg-font60 cegg-lineheight15">
43
+ <?php echo sprintf(TemplateHelper::__('%d new from %s'), $item['extra']['totalNew'], TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode'])); ?>
 
 
 
 
44
  </div>
45
  <?php endif; ?>
46
  <?php if (!empty($item['extra']['totalUsed'])): ?>
47
  <div class="cegg-font60 cegg-lineheight15">
48
+ <?php echo sprintf(TemplateHelper::__('%d used from %s'), $item['extra']['totalUsed'], TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode'])); ?>
 
 
49
  </div>
50
  <?php endif; ?>
51
 
52
  <?php if (!empty($amazon_last_updated)): ?>
53
  <div class="cegg-font60 cegg-lineheight15">
54
+ <?php echo sprintf(TemplateHelper::__('as of %s'), $amazon_last_updated); ?>
55
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
56
  </div>
57
  <?php endif; ?>
63
  <div class="cegg-btn-row">
64
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
65
  </div>
66
+ <?php if ($merchant = TemplateHelper::getMerchantName($item)): ?>
67
  <div class="text-center">
68
+ <small class="text-muted title-case">
69
+ <?php echo \esc_html($merchant); ?>
70
+ <?php TemplateHelper::printShopInfo($item); ?>
71
+ </small>
72
  </div>
73
  <?php endif; ?>
74
+
75
 
76
  </div>
77
+ </div>
78
+
application/templates/blocks/list_row_no_price.php CHANGED
@@ -12,31 +12,39 @@ use ContentEgg\application\helpers\TemplateHelper;
12
  </div>
13
 
14
  <?php if ($item['img']): ?>
15
- <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><img src="<?php echo $item['img']; ?>" alt="<?php echo \esc_attr($item['title']); ?>" /></a>
 
 
16
  <?php endif; ?>
17
  </div>
18
  <div class="col-md-8 col-sm-8 col-xs-9 cegg-desc-cell" >
19
  <div class="cegg-no-top-margin cegg-list-logo-title">
20
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo \esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
21
  </div>
22
- <?php if ($item['description'] && strip_tags($item['description']) < 80): ?>
23
  <div class="cegg-no-prices-desc cegg-mb5"><?php echo TemplateHelper::truncate($item['description'], 300); ?></div>
24
  <?php endif; ?>
25
 
26
  <div class="text-center cegg-mt10 visible-xs">
27
- <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
28
  <?php if ($merchant = TemplateHelper::getMerhantName($item)): ?>
29
- <small class="text-muted title-case"><?php echo \esc_html($merchant); ?></small>
 
 
 
30
  <?php endif; ?>
31
- </div>
32
  </div>
33
- <div class="col-md-2 col-sm-2 col-xs-12 cegg-btn-cell hidden-xs">
34
  <div class="cegg-btn-row">
35
- <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
36
- </div>
37
  <?php if ($merchant = TemplateHelper::getMerhantName($item)): ?>
38
  <div class="text-center">
39
- <small class="text-muted title-case"><?php echo \esc_html($merchant); ?></small>
 
 
 
40
  </div>
41
  <?php endif; ?>
42
 
12
  </div>
13
 
14
  <?php if ($item['img']): ?>
15
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
16
+ <?php TemplateHelper::displayImage($item, 130, 100); ?>
17
+ </a>
18
  <?php endif; ?>
19
  </div>
20
  <div class="col-md-8 col-sm-8 col-xs-9 cegg-desc-cell" >
21
  <div class="cegg-no-top-margin cegg-list-logo-title">
22
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo \esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
23
  </div>
24
+ <?php if ($item['description'] && strlen(strip_tags($item['description'])) < 100): ?>
25
  <div class="cegg-no-prices-desc cegg-mb5"><?php echo TemplateHelper::truncate($item['description'], 300); ?></div>
26
  <?php endif; ?>
27
 
28
  <div class="text-center cegg-mt10 visible-xs">
29
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
30
  <?php if ($merchant = TemplateHelper::getMerhantName($item)): ?>
31
+ <small class="text-muted title-case">
32
+ <?php echo \esc_html($merchant); ?>
33
+ <?php TemplateHelper::printShopInfo($item); ?>
34
+ </small>
35
  <?php endif; ?>
36
+ </div>
37
  </div>
38
+ <div class="col-md-2 col-sm-2 col-xs-12 cegg-btn-cell hidden-xs">
39
  <div class="cegg-btn-row">
40
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
41
+ </div>
42
  <?php if ($merchant = TemplateHelper::getMerhantName($item)): ?>
43
  <div class="text-center">
44
+ <small class="text-muted title-case">
45
+ <?php echo \esc_html($merchant); ?>
46
+ <?php TemplateHelper::printShopInfo($item); ?>
47
+ </small>
48
  </div>
49
  <?php endif; ?>
50
 
application/templates/blocks/price_alert_inline.php CHANGED
@@ -22,7 +22,7 @@ $privacy_url = TemplateHelper::getPrivacyUrl();
22
  <?php if ($title): ?>
23
  <div class="price-alert-title cegg-mb10"><?php echo \esc_html($title); ?></div>
24
  <?php else: ?>
25
- <div class="price-alert-title cegg-mb5"><?php _e('Wait For A Price Drop', 'content-egg-tpl'); ?></div>
26
  <?php endif; ?>
27
  <div class="row cegg-no-bottom-margin">
28
  <form class="navbar-form">
@@ -30,22 +30,22 @@ $privacy_url = TemplateHelper::getPrivacyUrl();
30
  <input type="hidden" name="unique_id" value="<?php echo \esc_attr($item['unique_id']); ?>">
31
  <input type="hidden" name="post_id" value="<?php echo \esc_attr(get_the_ID()); ?>">
32
  <div class="col-md-6">
33
- <label class="sr-only" for="cegg-email-<?php echo \esc_attr($item['unique_id']); ?>"><?php _e('Your Email', 'content-egg-tpl'); ?></label>
34
- <input value="<?php echo \esc_attr(TemplateHelper::getCurrentUserEmail()); ?>" type="email" class="<?php echo esc_attr($input_class); ?> form-control" name="email" id="cegg-email-<?php echo \esc_attr($item['unique_id']); ?>" placeholder="<?php _e('Your Email', 'content-egg-tpl'); ?>" required>
35
  </div>
36
  <div class="col-md-6">
37
- <label class="sr-only" for="cegg-price-<?php echo \esc_attr($item['unique_id']); ?>"><?php _e('Desired Price', 'content-egg-tpl'); ?></label>
38
  <div class="input-group">
39
  <?php $cur_position = TemplateHelper::getCurrencyPos($item['currencyCode']); ?>
40
  <?php if ($cur_position == 'left' || $cur_position == 'left_space'): ?>
41
  <div class="input-group-addon"><?php echo TemplateHelper::getCurrencySymbol($item['currencyCode']); ?></div>
42
  <?php endif; ?>
43
- <input value="<?php echo $desired_price; ?>" type="number" class="<?php echo \esc_attr($input_class); ?> form-control" name="price" id="cegg-price-<?php echo \esc_attr($item['unique_id']); ?>" placeholder="<?php _e('Desired Price', 'content-egg-tpl'); ?>" step="any" required>
44
  <?php if ($cur_position == 'right' || $cur_position == 'right_space'): ?>
45
  <div class="input-group-addon"><?php echo TemplateHelper::getCurrencySymbol($item['currencyCode']); ?></div>
46
  <?php endif; ?>
47
  <span class="input-group-btn">
48
- <button class="btn btn-warning <?php echo \esc_attr($btn_class); ?>" type="submit"><?php _e('SET ALERT', 'content-egg-tpl'); ?></button>
49
  </span>
50
 
51
  </div>
@@ -55,11 +55,12 @@ $privacy_url = TemplateHelper::getPrivacyUrl();
55
  <div style="display: none;" class="price-alert-agree-wrap">
56
  <label class="price-alert-agree-label">
57
  <input type="checkbox" name="accepted" value="1" id="cegg_alert_accepted" required />
58
- <?php echo sprintf(__('I agree to the <a target="_blank" href="%s">Privacy Policy</a>.', 'content-egg-tpl'), esc_attr($privacy_url)); ?>
 
59
  </label>
60
  </div>
61
  <?php endif; ?>
62
- <div class="text-muted small cegg-mt5"><?php _e('You will receive a notification when the price drops.', 'content-egg-tpl'); ?></div>
63
  </div>
64
  </form>
65
  </div>
22
  <?php if ($title): ?>
23
  <div class="price-alert-title cegg-mb10"><?php echo \esc_html($title); ?></div>
24
  <?php else: ?>
25
+ <div class="price-alert-title cegg-mb5"><?php TemplateHelper::_e('Wait For A Price Drop'); ?></div>
26
  <?php endif; ?>
27
  <div class="row cegg-no-bottom-margin">
28
  <form class="navbar-form">
30
  <input type="hidden" name="unique_id" value="<?php echo \esc_attr($item['unique_id']); ?>">
31
  <input type="hidden" name="post_id" value="<?php echo \esc_attr(get_the_ID()); ?>">
32
  <div class="col-md-6">
33
+ <label class="sr-only" for="cegg-email-<?php echo \esc_attr($item['unique_id']); ?>"><?php TemplateHelper::_e('Your Email'); ?></label>
34
+ <input value="<?php echo \esc_attr(TemplateHelper::getCurrentUserEmail()); ?>" type="email" class="<?php echo esc_attr($input_class); ?> form-control" name="email" id="cegg-email-<?php echo \esc_attr($item['unique_id']); ?>" placeholder="<?php TemplateHelper::_e('Your Email'); ?>" required>
35
  </div>
36
  <div class="col-md-6">
37
+ <label class="sr-only" for="cegg-price-<?php echo \esc_attr($item['unique_id']); ?>"><?php TemplateHelper::_e('Desired Price'); ?></label>
38
  <div class="input-group">
39
  <?php $cur_position = TemplateHelper::getCurrencyPos($item['currencyCode']); ?>
40
  <?php if ($cur_position == 'left' || $cur_position == 'left_space'): ?>
41
  <div class="input-group-addon"><?php echo TemplateHelper::getCurrencySymbol($item['currencyCode']); ?></div>
42
  <?php endif; ?>
43
+ <input value="<?php echo $desired_price; ?>" type="number" class="<?php echo \esc_attr($input_class); ?> form-control" name="price" id="cegg-price-<?php echo \esc_attr($item['unique_id']); ?>" placeholder="<?php TemplateHelper::_e('Desired Price'); ?>" step="any" required>
44
  <?php if ($cur_position == 'right' || $cur_position == 'right_space'): ?>
45
  <div class="input-group-addon"><?php echo TemplateHelper::getCurrencySymbol($item['currencyCode']); ?></div>
46
  <?php endif; ?>
47
  <span class="input-group-btn">
48
+ <button class="btn btn-warning <?php echo \esc_attr($btn_class); ?>" type="submit"><?php TemplateHelper::_e('SET ALERT'); ?></button>
49
  </span>
50
 
51
  </div>
55
  <div style="display: none;" class="price-alert-agree-wrap">
56
  <label class="price-alert-agree-label">
57
  <input type="checkbox" name="accepted" value="1" id="cegg_alert_accepted" required />
58
+ <?php $privacy_link = '<a target="_blank" href="' . \esc_attr($privacy_url) . '">' . TemplateHelper::__('Privacy Policy') . '</a>'; ?>
59
+ <?php echo sprintf(TemplateHelper::__('I agree to the %s.'), $privacy_link); ?>
60
  </label>
61
  </div>
62
  <?php endif; ?>
63
+ <div class="text-muted small cegg-mt5"><?php TemplateHelper::_e('You will receive a notification when the price drops.'); ?></div>
64
  </div>
65
  </form>
66
  </div>
application/templates/blocks/price_history.php CHANGED
@@ -16,10 +16,10 @@ use ContentEgg\application\helpers\TemplateHelper;
16
  <?php if (!$prices) return; ?>
17
  <div class="row">
18
  <div class='col-md-7'>
19
- <h4><?php _e('Statistics', 'content-egg-tpl'); ?></h4>
20
  <table class="table table-hover">
21
  <tr>
22
- <td><?php _e('Current Price', 'content-egg-tpl'); ?></td>
23
  <td >
24
  <?php if ($item['price']): ?>
25
  <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
@@ -31,22 +31,22 @@ use ContentEgg\application\helpers\TemplateHelper;
31
  </tr>
32
  <?php $price = TemplateHelper::priceHistoryMax($item['unique_id'], $module_id); ?>
33
  <tr>
34
- <td class="text-danger"><?php _e('Highest Price', 'content-egg-tpl'); ?></td>
35
  <td><?php echo TemplateHelper::formatPriceCurrency($price['price'], $item['currencyCode']); ?></td>
36
  <td><?php echo TemplateHelper::formatDate($price['date']); ?></td>
37
  </tr>
38
  <?php $price = TemplateHelper::priceHistoryMin($item['unique_id'], $module_id); ?>
39
  <tr>
40
- <td class="text-success"><?php _e('Lowest Price', 'content-egg-tpl'); ?></td>
41
  <td><?php echo TemplateHelper::formatPriceCurrency($price['price'], $item['currencyCode']); ?></td>
42
  <td><?php echo TemplateHelper::formatDate($price['date']); ?></td>
43
  </tr>
44
  </table>
45
  <?php $since = TemplateHelper::priceHistorySinceDate($item['unique_id'], $module_id); ?>
46
- <div class='text-right text-muted'><?php _e('Since', 'content-egg-tpl'); ?> <?php echo TemplateHelper::formatDate($since); ?></div>
47
  </div>
48
  <div class='col-md-5'>
49
- <h4><?php _e('Last price changes', 'content-egg-tpl'); ?></h4>
50
  <table class="table table-hover table-condensed">
51
  <?php foreach ($prices as $price): ?>
52
  <tr>
16
  <?php if (!$prices) return; ?>
17
  <div class="row">
18
  <div class='col-md-7'>
19
+ <h4><?php TemplateHelper::_e('Statistics'); ?></h4>
20
  <table class="table table-hover">
21
  <tr>
22
+ <td><?php TemplateHelper::_e('Current Price'); ?></td>
23
  <td >
24
  <?php if ($item['price']): ?>
25
  <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
31
  </tr>
32
  <?php $price = TemplateHelper::priceHistoryMax($item['unique_id'], $module_id); ?>
33
  <tr>
34
+ <td class="text-danger"><?php TemplateHelper::_e('Highest Price'); ?></td>
35
  <td><?php echo TemplateHelper::formatPriceCurrency($price['price'], $item['currencyCode']); ?></td>
36
  <td><?php echo TemplateHelper::formatDate($price['date']); ?></td>
37
  </tr>
38
  <?php $price = TemplateHelper::priceHistoryMin($item['unique_id'], $module_id); ?>
39
  <tr>
40
+ <td class="text-success"><?php TemplateHelper::_e('Lowest Price'); ?></td>
41
  <td><?php echo TemplateHelper::formatPriceCurrency($price['price'], $item['currencyCode']); ?></td>
42
  <td><?php echo TemplateHelper::formatDate($price['date']); ?></td>
43
  </tr>
44
  </table>
45
  <?php $since = TemplateHelper::priceHistorySinceDate($item['unique_id'], $module_id); ?>
46
+ <div class='text-right text-muted'><?php echo sprintf(__('Since %s'), TemplateHelper::formatDate($since)); ?></div>
47
  </div>
48
  <div class='col-md-5'>
49
+ <h4><?php TemplateHelper::_e('Last price changes'); ?></h4>
50
  <table class="table table-hover table-condensed">
51
  <?php foreach ($prices as $price): ?>
52
  <tr>
application/templates/data_coupon.php CHANGED
@@ -23,22 +23,22 @@ use ContentEgg\application\helpers\TemplateHelper;
23
  <?php endif; ?>
24
  <?php if (!empty($item['extra']['discount'])): ?>
25
  <span class="label label-danger">
26
- <?php echo esc_html($item['extra']['discount']); ?> <?php _e('OFF', 'content-egg-tpl') ?>
27
  </span>&nbsp;
28
  <?php endif; ?>
29
 
30
  <?php if ($module_id == 'TradedoublerCoupons' && $item['extra']['discountAmount']): ?>
31
  <span class="label label-danger">
32
  <?php if (!(bool) $item['extra']['isPercentage']) echo TemplateHelper::currencyTyping($item['extra']['currencyId']); ?><?php echo esc_html($item['extra']['discountAmount']); ?><?php if ((bool) $item['extra']['isPercentage']) echo '%'; ?>
33
- <?php _e('OFF', 'content-egg-tpl') ?>
34
  </span>
35
  <?php endif; ?>
36
 
37
  <?php if ($item['startDate']): ?>
38
- <span class="text-muted small text-center"><em><?php _e('Start date:', 'content-egg-tpl'); ?> <?php echo TemplateHelper::formatDate($item['startDate']); ?></em></span>
39
  <?php endif; ?>
40
  <?php if ($item['endDate']): ?>
41
- <span class="text-muted small text-center"><em><?php _e('End date:', 'content-egg-tpl'); ?> <?php echo TemplateHelper::formatDate($item['endDate']); ?></em></span>
42
  <?php endif; ?>
43
  </div>
44
  <div class="col-md-3 col-sm-3 col-xs-12 offer_price cegg-price-cell">
23
  <?php endif; ?>
24
  <?php if (!empty($item['extra']['discount'])): ?>
25
  <span class="label label-danger">
26
+ <?php echo esc_html($item['extra']['discount']); ?> <?php TemplateHelper::_e('OFF') ?>
27
  </span>&nbsp;
28
  <?php endif; ?>
29
 
30
  <?php if ($module_id == 'TradedoublerCoupons' && $item['extra']['discountAmount']): ?>
31
  <span class="label label-danger">
32
  <?php if (!(bool) $item['extra']['isPercentage']) echo TemplateHelper::currencyTyping($item['extra']['currencyId']); ?><?php echo esc_html($item['extra']['discountAmount']); ?><?php if ((bool) $item['extra']['isPercentage']) echo '%'; ?>
33
+ <?php TemplateHelper::_e('OFF') ?>
34
  </span>
35
  <?php endif; ?>
36
 
37
  <?php if ($item['startDate']): ?>
38
+ <span class="text-muted small text-center"><em><?php echo sprintf(TemplateHelper::__('Start date: %s'), TemplateHelper::formatDate($item['startDate'])); ?></em></span>
39
  <?php endif; ?>
40
  <?php if ($item['endDate']): ?>
41
+ <span class="text-muted small text-center"><em><?php echo sprintf(TemplateHelper::__('End date: %s'), TemplateHelper::formatDate($item['endDate'])); ?></em></span>
42
  <?php endif; ?>
43
  </div>
44
  <div class="col-md-3 col-sm-3 col-xs-12 offer_price cegg-price-cell">
application/templates/data_item.php CHANGED
@@ -8,7 +8,7 @@ if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
8
  ?>
9
 
10
  <?php if ($title): ?>
11
- <h3 class="cegg-shortcode-title"><?php echo esc_html($title); ?></h3>
12
  <?php endif; ?>
13
  <?php foreach ($items as $item): ?>
14
 
8
  ?>
9
 
10
  <?php if ($title): ?>
11
+ <h3 class="cegg-shortcode-title"><?php echo \esc_html($title); ?></h3>
12
  <?php endif; ?>
13
  <?php foreach ($items as $item): ?>
14
 
application/templates/data_list.php CHANGED
@@ -5,11 +5,14 @@ use ContentEgg\application\helpers\TemplateHelper;
5
 
6
  if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
7
  \wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
 
 
8
  ?>
9
 
10
  <div class="egg-container egg-list">
 
11
  <?php if ($title): ?>
12
- <h3><?php echo esc_html($title); ?></h3>
13
  <?php endif; ?>
14
 
15
  <div class="egg-listcontainer">
@@ -22,11 +25,11 @@ if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
22
  <div class="row cegg-no-top-margin">
23
  <div class="col-md-12 text-right text-muted">
24
  <small>
25
- <?php _e('Last updated on', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted($module_id, $post_id); ?>
26
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
27
  </small>
28
  </div>
29
  </div>
30
  <?php endif; ?>
31
 
32
- </div>
5
 
6
  if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
7
  \wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
8
+
9
+ \wp_enqueue_script('bootstrap-popover');
10
  ?>
11
 
12
  <div class="egg-container egg-list">
13
+
14
  <?php if ($title): ?>
15
+ <h3><?php echo \esc_html($title); ?></h3>
16
  <?php endif; ?>
17
 
18
  <div class="egg-listcontainer">
25
  <div class="row cegg-no-top-margin">
26
  <div class="col-md-12 text-right text-muted">
27
  <small>
28
+ <?php echo sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id)); ?>
29
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
30
  </small>
31
  </div>
32
  </div>
33
  <?php endif; ?>
34
 
35
+ </div>
application/templates/data_price_tracker_alert.php CHANGED
@@ -36,16 +36,16 @@ defined('\ABSPATH') || exit;
36
 
37
  <?php if ($item['price']): ?>
38
  <span class="cegg-price">
39
- <small><?php _e('Price', 'content-egg-tpl'); ?>:</small> <span class="cegg-price-color"><?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode'], '<span class="cegg-currency">', '</span>'); ?></span>
40
  </span>
41
  <?php endif; ?>
42
  <?php if (isset($item['stock_status']) && $item['stock_status'] == \ContentEgg\application\components\ContentProduct::STOCK_STATUS_OUT_OF_STOCK): ?>
43
- <mark title="<?php echo \esc_attr(sprintf(__('Last updated on %s', 'content-egg-tpl'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id))); ?>" class="stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
44
  <?php echo \esc_html(TemplateHelper::getStockStatusStr($item)); ?>
45
  </mark>
46
  <?php endif; ?>
47
  <?php if ($item['price']): ?>
48
- <br><small class="text-muted"><?php _e('as of', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted($module_id, $post_id); ?></small>
49
  <?php endif; ?>
50
  </div>
51
  <div class="col-md-5 col-sm-5 col-xs-12 text-muted">
36
 
37
  <?php if ($item['price']): ?>
38
  <span class="cegg-price">
39
+ <small><?php TemplateHelper::_e('Price'); ?>:</small> <span class="cegg-price-color"><?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode'], '<span class="cegg-currency">', '</span>'); ?></span>
40
  </span>
41
  <?php endif; ?>
42
  <?php if (isset($item['stock_status']) && $item['stock_status'] == \ContentEgg\application\components\ContentProduct::STOCK_STATUS_OUT_OF_STOCK): ?>
43
+ <mark title="<?php echo \esc_attr(sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id))); ?>" class="stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
44
  <?php echo \esc_html(TemplateHelper::getStockStatusStr($item)); ?>
45
  </mark>
46
  <?php endif; ?>
47
  <?php if ($item['price']): ?>
48
+ <br><small class="text-muted"><?php echo sprintf(TemplateHelper::__('as of %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id)); ?></small>
49
  <?php endif; ?>
50
  </div>
51
  <div class="col-md-5 col-sm-5 col-xs-12 text-muted">
content-egg.php CHANGED
@@ -6,7 +6,7 @@ namespace ContentEgg;
6
  Plugin Name: Content Egg
7
  Plugin URI: https://www.keywordrush.com/contentegg
8
  Description: All in one solution for creating affiliate websites.
9
- Version: 5.1.0
10
  Author: keywordrush.com
11
  Author URI: https://www.keywordrush.com
12
  Text Domain: content-egg
6
  Plugin Name: Content Egg
7
  Plugin URI: https://www.keywordrush.com/contentegg
8
  Description: All in one solution for creating affiliate websites.
9
+ Version: 5.2.0
10
  Author: keywordrush.com
11
  Author URI: https://www.keywordrush.com
12
  Text Domain: content-egg
languages/content-egg.pot CHANGED
@@ -1,22 +1,22 @@
1
- # Copyright (C) 2020 Content Egg<stripfree> Pro</stripfree>
2
  # This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Content Egg<stripfree> Pro</stripfree> 7.3.1\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
7
- "POT-Creation-Date: 2020-12-17 07:17:34+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
- #: application/Autoupdate.php:85
16
  msgid "New version of %s plugin."
17
  msgstr ""
18
 
19
- #: application/Autoupdate.php:86
20
  msgid ""
21
  "Please <a target=\"_blank\" href=\"%s\">find here</a> the releases notes."
22
  msgstr ""
@@ -31,11 +31,11 @@ msgstr ""
31
 
32
  #: application/PriceMoversWidget.php:63 application/ProductSearchWidget.php:45
33
  #: application/admin/views/_metabox_results.php:29
34
- #: application/components/ParserModuleConfig.php:66
35
  #: application/models/ProductModel.php:62
36
  #: application/modules/Coupon/views/metabox_module.php:52
37
  #: application/modules/Offer/views/metabox_module.php:59
38
- #: application/modules/Walmart/WalmartConfig.php:101
39
  #: application/modules/Youtube/YoutubeConfig.php:66
40
  #: application/modules/Youtube/views/search_panel.php:11
41
  msgid "Title"
@@ -81,11 +81,12 @@ msgstr ""
81
  #: application/PriceMoversWidget.php:99 application/PriceMoversWidget.php:100
82
  #: application/PriceMoversWidget.php:101 application/PriceMoversWidget.php:102
83
  #: application/PriceMoversWidget.php:103 application/PriceMoversWidget.php:104
 
84
  msgid "%d days ago"
85
  msgstr ""
86
 
87
  #: application/PriceMoversWidget.php:110
88
- #: application/components/ParserModuleConfig.php:58
89
  msgid "Template"
90
  msgstr ""
91
 
@@ -97,6 +98,20 @@ msgstr ""
97
  msgid "CE: Product Search"
98
  msgstr ""
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  #: application/admin/AdminNotice.php:25
101
  msgid "Task for autoblogging is saved."
102
  msgstr ""
@@ -121,28 +136,32 @@ msgstr ""
121
  msgid "License can't be deactivated. Write to support of plugin."
122
  msgstr ""
123
 
 
 
 
 
124
  #: application/admin/AdminNotice.php:30
125
  msgid ""
126
- "License was deactivated. You must deactivate and delete plugin from current "
127
- "domain to enable it on another one."
128
  msgstr ""
129
 
130
  #: application/admin/AeIntegrationConfig.php:33
131
  msgid "Affiliate Egg integration"
132
  msgstr ""
133
 
134
- #: application/admin/AeIntegrationConfig.php:44
135
  msgid "Activate modules"
136
  msgstr ""
137
 
138
  #: application/admin/AutoblogController.php:77
139
- #: application/admin/views/autoblog_index.php:32
140
  msgid "Autoblogging"
141
  msgstr ""
142
 
143
  #: application/admin/AutoblogController.php:78
144
  #: application/admin/views/autoblog_edit.php:10
145
- #: application/admin/views/autoblog_index.php:33
146
  msgid "Add autoblogging"
147
  msgstr ""
148
 
@@ -172,13 +191,17 @@ msgid "Delete"
172
  msgstr ""
173
 
174
  #: application/admin/AutoblogTable.php:67
 
175
  #: application/admin/views/_metabox_autoblog.php:26
176
- msgid "Works"
177
  msgstr ""
178
 
179
  #: application/admin/AutoblogTable.php:69
 
 
180
  #: application/admin/views/_metabox_autoblog.php:27
181
- msgid "Stoped"
 
182
  msgstr ""
183
 
184
  #: application/admin/AutoblogTable.php:83
@@ -217,7 +240,8 @@ msgid "The field \"%s\" can not be empty"
217
  msgstr ""
218
 
219
  #: application/admin/EnvatoConfig.php:40 application/admin/EnvatoConfig.php:58
220
- #: application/admin/GeneralConfig.php:404
 
221
  msgid "Field \"%s\" filled with wrong data."
222
  msgstr ""
223
 
@@ -241,454 +265,519 @@ msgstr ""
241
  msgid "Error."
242
  msgstr ""
243
 
244
- #: application/admin/GeneralConfig.php:37 application/admin/PluginAdmin.php:97
245
  msgid "Settings"
246
  msgstr ""
247
 
248
- #: application/admin/GeneralConfig.php:105
249
  msgid "Website language"
250
  msgstr ""
251
 
252
- #: application/admin/GeneralConfig.php:106
253
  msgid "The frontend language."
254
  msgstr ""
255
 
256
- #: application/admin/GeneralConfig.php:110
257
- #: application/admin/GeneralConfig.php:118
258
- #: application/admin/GeneralConfig.php:130
259
- #: application/admin/GeneralConfig.php:143
260
- #: application/admin/GeneralConfig.php:247
261
- #: application/admin/GeneralConfig.php:369
262
- #: application/admin/GeneralConfig.php:381
263
  msgid "General settings"
264
  msgstr ""
265
 
266
- #: application/admin/GeneralConfig.php:114
267
  msgid "What post types do you want to use for Content Egg?"
268
  msgstr ""
269
 
270
- #: application/admin/GeneralConfig.php:121
271
  msgid "Cashback Tracker integration"
272
  msgstr ""
273
 
274
- #: application/admin/GeneralConfig.php:122
275
  msgid "Integration with %s plugin."
276
  msgstr ""
277
 
278
- #: application/admin/GeneralConfig.php:123
279
  msgid "Convert all affiliate links to trackable cashback links if possible."
280
  msgstr ""
281
 
282
- #: application/admin/GeneralConfig.php:126
283
- msgid "Enabled"
284
- msgstr ""
285
-
286
- #: application/admin/GeneralConfig.php:127
287
- #: application/admin/GeneralConfig.php:198
288
- #: application/modules/GoogleImages/GoogleImagesConfig.php:171
289
- msgid "Disabled"
290
- msgstr ""
291
-
292
- #: application/admin/GeneralConfig.php:133
293
  msgid "External featured images"
294
  msgstr ""
295
 
296
- #: application/admin/GeneralConfig.php:134
297
  msgid "Featured images from URL"
298
  msgstr ""
299
 
300
- #: application/admin/GeneralConfig.php:138
301
  msgid "Disabled - internal image is used"
302
  msgstr ""
303
 
304
- #: application/admin/GeneralConfig.php:139
305
  msgid "Enabled - internal image has priority"
306
  msgstr ""
307
 
308
- #: application/admin/GeneralConfig.php:140
309
  msgid "Enabled - external image has priority"
310
  msgstr ""
311
 
312
- #: application/admin/GeneralConfig.php:147
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  msgid "Modules for synchronization"
314
  msgstr ""
315
 
316
- #: application/admin/GeneralConfig.php:148
317
  msgid "Select modules for automatic synchronization with WooCommerce."
318
  msgstr ""
319
 
320
- #: application/admin/GeneralConfig.php:152
321
- #: application/admin/GeneralConfig.php:165
322
- #: application/admin/GeneralConfig.php:172
323
- #: application/admin/GeneralConfig.php:184
324
- #: application/admin/GeneralConfig.php:191
325
- #: application/admin/GeneralConfig.php:203
326
- #: application/admin/GeneralConfig.php:213
327
- #: application/admin/GeneralConfig.php:223
328
  msgid "WooCommerce"
329
  msgstr ""
330
 
331
- #: application/admin/GeneralConfig.php:155
332
  msgid "Automatic synchronization"
333
  msgstr ""
334
 
335
- #: application/admin/GeneralConfig.php:156
336
  msgid "How to choose product for automatic synchronization with WooCommerce."
337
  msgstr ""
338
 
339
- #: application/admin/GeneralConfig.php:159
340
- #: application/admin/views/_metabox_autoblog.php:419
341
- #: application/modules/Aliexpress2/Aliexpress2Config.php:153
342
  msgid "Minimum price"
343
  msgstr ""
344
 
345
- #: application/admin/GeneralConfig.php:160
346
- #: application/admin/views/_metabox_autoblog.php:420
347
- #: application/modules/Aliexpress2/Aliexpress2Config.php:143
348
  msgid "Maximum price"
349
  msgstr ""
350
 
351
- #: application/admin/GeneralConfig.php:161
352
- #: application/admin/views/_metabox_autoblog.php:421
353
  msgid "Random"
354
  msgstr ""
355
 
356
- #: application/admin/GeneralConfig.php:162
357
  msgid "Manually only"
358
  msgstr ""
359
 
360
- #: application/admin/GeneralConfig.php:168
361
- msgid "Attributes synchronization"
362
  msgstr ""
363
 
364
- #: application/admin/GeneralConfig.php:169
365
- msgid "Also synchronize attributes automatically for synchronized product."
366
  msgstr ""
367
 
368
- #: application/admin/GeneralConfig.php:175
369
  msgid "Global attributes filter"
370
  msgstr ""
371
 
372
- #: application/admin/GeneralConfig.php:176
373
  msgid ""
374
  "How to create wocommerce attributes when synchronizing. Please, read "
375
  "documentation about them in our docs."
376
  msgstr ""
377
 
378
- #: application/admin/GeneralConfig.php:179
379
  msgid "Default filter"
380
  msgstr ""
381
 
382
- #: application/admin/GeneralConfig.php:180
383
  msgid "Whitelist attribute names"
384
  msgstr ""
385
 
386
- #: application/admin/GeneralConfig.php:181
387
  msgid "Blacklist attribute names"
388
  msgstr ""
389
 
390
- #: application/admin/GeneralConfig.php:187
391
  msgid "Attributes list"
392
  msgstr ""
393
 
394
- #: application/admin/GeneralConfig.php:188
395
  msgid ""
396
  "Black / white list of woocommerce global (filterable) attributes. Enter a "
397
  "comma separated list."
398
  msgstr ""
399
 
400
- #: application/admin/GeneralConfig.php:194
401
  msgid "Update date"
402
  msgstr ""
403
 
404
- #: application/admin/GeneralConfig.php:195
405
  msgid "Show price update date for WooCommerce products."
406
  msgstr ""
407
 
408
- #: application/admin/GeneralConfig.php:199
409
  msgid "Amazon only"
410
  msgstr ""
411
 
412
- #: application/admin/GeneralConfig.php:200
413
  msgid "All modules"
414
  msgstr ""
415
 
416
- #: application/admin/GeneralConfig.php:206
417
  msgid "Price per unit"
418
  msgstr ""
419
 
420
- #: application/admin/GeneralConfig.php:207
421
  msgid "Show price per unit"
422
  msgstr ""
423
 
424
- #: application/admin/GeneralConfig.php:209
425
  msgid "This option is available for Amazon and Ebay modules only."
426
  msgstr ""
427
 
428
- #: application/admin/GeneralConfig.php:216
429
  msgid "Buy button text"
430
  msgstr ""
431
 
432
- #: application/admin/GeneralConfig.php:217
433
  msgid "Overwrite the button text for external products."
434
  msgstr ""
435
 
436
- #: application/admin/GeneralConfig.php:217
437
- #: application/admin/GeneralConfig.php:325
438
  msgid "You can use tags: %MERCHANT%, %DOMAIN%, %PRICE%, %STOCK_STATUS%."
439
  msgstr ""
440
 
441
- #: application/admin/GeneralConfig.php:228
442
- msgid ""
443
- "<a target=\"_blank\" href=\"%s\">Qualify</a> your affiliate links to Google."
444
- msgstr ""
445
-
446
- #: application/admin/GeneralConfig.php:239
447
- #: application/admin/GeneralConfig.php:311
448
- #: application/admin/GeneralConfig.php:321
449
- #: application/admin/GeneralConfig.php:331
450
- #: application/admin/GeneralConfig.php:341
451
- #: application/admin/GeneralConfig.php:353
452
- #: application/admin/GeneralConfig.php:440
453
- msgid "Templates"
454
- msgstr ""
455
-
456
- #: application/admin/GeneralConfig.php:242
457
  msgid "Filter bots"
458
  msgstr ""
459
 
460
- #: application/admin/GeneralConfig.php:243
461
  msgid "Bots can't activate parsers."
462
  msgstr ""
463
 
464
- #: application/admin/GeneralConfig.php:244
465
  msgid ""
466
  "Updating price and keyword updating is made with page opening. If we "
467
  "determine update by useragent, and page is opened by one of known bots, no "
468
  "parsers will work in this case."
469
  msgstr ""
470
 
471
- #: application/admin/GeneralConfig.php:253
472
- #: application/admin/GeneralConfig.php:263
473
  msgid "Price history"
474
  msgstr ""
475
 
476
- #: application/admin/GeneralConfig.php:254
477
  msgid "How long save price history. 0 - deactivate price history."
478
  msgstr ""
479
 
480
- #: application/admin/GeneralConfig.php:263
481
  #: application/modules/Kelkoo/KelkooConfig.php:257
482
  msgid "The field \"%s\" can't be more than %d."
483
  msgstr ""
484
 
485
- #: application/admin/GeneralConfig.php:266
486
- #: application/admin/GeneralConfig.php:287
487
- #: application/admin/GeneralConfig.php:301
488
- #: application/admin/GeneralConfig.php:392
489
- #: application/admin/GeneralConfig.php:407
 
 
 
 
490
  msgid "Price alerts"
491
  msgstr ""
492
 
493
- #: application/admin/GeneralConfig.php:269
494
  msgid "Price drops period"
495
  msgstr ""
496
 
497
- #: application/admin/GeneralConfig.php:270
498
  msgid "Used for Price Movers widget."
499
  msgstr ""
500
 
501
- #: application/admin/GeneralConfig.php:273
502
  msgid "The last 1 day"
503
  msgstr ""
504
 
505
- #: application/admin/GeneralConfig.php:274
506
- #: application/admin/GeneralConfig.php:275
507
- #: application/admin/GeneralConfig.php:276
508
- #: application/admin/GeneralConfig.php:277
509
- #: application/admin/GeneralConfig.php:278
510
- #: application/admin/GeneralConfig.php:279
511
- #: application/admin/GeneralConfig.php:280
512
- #: application/admin/GeneralConfig.php:281
513
- #: application/admin/GeneralConfig.php:282
514
- #: application/admin/GeneralConfig.php:283
515
- #: application/admin/GeneralConfig.php:284
516
  msgid "The last %d days"
517
  msgstr ""
518
 
519
- #: application/admin/GeneralConfig.php:291
520
  msgid "Allow visitors to subscribe for price drop alert on email."
521
  msgstr ""
522
 
523
- #: application/admin/GeneralConfig.php:292
524
  msgid "Active subscriptions now: <b>%d</b>"
525
  msgstr ""
526
 
527
- #: application/admin/GeneralConfig.php:293
528
  msgid "Messages are sent for last %d days: <b>%d</b>"
529
  msgstr ""
530
 
531
- #: application/admin/GeneralConfig.php:294
532
  msgid "Export: [ <a href=\"%s\">All</a> | <a href=\"%s\">Active</a> ]"
533
  msgstr ""
534
 
535
- #: application/admin/GeneralConfig.php:296
536
  msgid "\"Price history\" option must be enabled."
537
  msgstr ""
538
 
539
- #: application/admin/GeneralConfig.php:297
540
  msgid ""
541
  "Recommendation: Go to Settings - Privacy and select Privacy Policy page."
542
  msgstr ""
543
 
544
- #: application/admin/GeneralConfig.php:304
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
545
  msgid "Button color"
546
  msgstr ""
547
 
548
- #: application/admin/GeneralConfig.php:305
549
  msgid "Button color for default templates."
550
  msgstr ""
551
 
552
- #: application/admin/GeneralConfig.php:314
553
  msgid "Price color"
554
  msgstr ""
555
 
556
- #: application/admin/GeneralConfig.php:315
557
  msgid "Price color for default templates."
558
  msgstr ""
559
 
560
- #: application/admin/GeneralConfig.php:324
561
  msgid "Buy now button text"
562
  msgstr ""
563
 
564
- #: application/admin/GeneralConfig.php:325
565
- #: application/admin/GeneralConfig.php:335
566
  msgid "It will be used instead of \"%s\"."
567
  msgstr ""
568
 
569
- #: application/admin/GeneralConfig.php:334
570
  msgid "Coupon button text"
571
  msgstr ""
572
 
573
- #: application/admin/GeneralConfig.php:344
574
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:200
575
  msgid "Stock status"
576
  msgstr ""
577
 
578
- #: application/admin/GeneralConfig.php:347
579
  msgid "Show stock status"
580
  msgstr ""
581
 
582
- #: application/admin/GeneralConfig.php:348
583
  msgid "Hide stock status"
584
  msgstr ""
585
 
586
- #: application/admin/GeneralConfig.php:349
587
  msgid "Show OutOfStock status only"
588
  msgstr ""
589
 
590
- #: application/admin/GeneralConfig.php:350
591
  msgid "Show InStock status only"
592
  msgstr ""
593
 
594
- #: application/admin/GeneralConfig.php:357
595
- #: application/admin/GeneralConfig.php:366
596
  msgid "Redirect prefix"
597
  msgstr ""
598
 
599
- #: application/admin/GeneralConfig.php:358
600
  msgid "Custom prefix for local redirect links."
601
  msgstr ""
602
 
603
- #: application/admin/GeneralConfig.php:366
604
  msgid "The field \"%s\" can contain only Latin letters and digits."
605
  msgstr ""
606
 
607
- #: application/admin/GeneralConfig.php:372
608
  msgid "Out of Stock products"
609
  msgstr ""
610
 
611
- #: application/admin/GeneralConfig.php:373
612
  msgid "How to deal with Out of Stock products."
613
  msgstr ""
614
 
615
- #: application/admin/GeneralConfig.php:376
616
  msgid "Do nothing"
617
  msgstr ""
618
 
619
- #: application/admin/GeneralConfig.php:377
620
  msgid "Hide price"
621
  msgstr ""
622
 
623
- #: application/admin/GeneralConfig.php:378
624
  msgid "Hide product"
625
  msgstr ""
626
 
627
- #: application/admin/GeneralConfig.php:384
628
- msgid "From Name"
629
- msgstr ""
630
-
631
- #: application/admin/GeneralConfig.php:385
632
- msgid ""
633
- "This name will appear in the From Name column of emails sent from CE plugin."
634
- msgstr ""
635
-
636
- #: application/admin/GeneralConfig.php:395
637
- msgid "From Email"
638
- msgstr ""
639
-
640
- #: application/admin/GeneralConfig.php:396
641
- msgid "Customize the From Email address."
642
- msgstr ""
643
-
644
- #: application/admin/GeneralConfig.php:396
645
- msgid ""
646
- "To avoid your email being marked as spam, it is recommended your \"from\" "
647
- "match your website."
648
- msgstr ""
649
-
650
- #: application/admin/GeneralConfig.php:410
651
  msgid "Search modules"
652
  msgstr ""
653
 
654
- #: application/admin/GeneralConfig.php:411
655
  msgid "Select modules to search on frontend."
656
  msgstr ""
657
 
658
- #: application/admin/GeneralConfig.php:412
659
  msgid "Do not select more than 1-2 modules."
660
  msgstr ""
661
 
662
- #: application/admin/GeneralConfig.php:413
663
  msgid ""
664
  "Please note, AE modules work slowly and are not recommended for use as "
665
  "search modules."
666
  msgstr ""
667
 
668
- #: application/admin/GeneralConfig.php:414
669
  msgid ""
670
  "Do not forget to add search widget or shorcode [content-egg-search-form]."
671
  msgstr ""
672
 
673
- #: application/admin/GeneralConfig.php:418
674
- #: application/admin/GeneralConfig.php:426
675
  msgid "Frontend search"
676
  msgstr ""
677
 
678
- #: application/admin/GeneralConfig.php:421
679
  msgid "Search page template"
680
  msgstr ""
681
 
682
- #: application/admin/GeneralConfig.php:422
683
  msgid "Template for body of search page."
684
  msgstr ""
685
 
686
- #: application/admin/GeneralConfig.php:423
687
  msgid ""
688
  "You can use shortcodes, for example: [content-egg module=Amazon "
689
  "template=grid]"
690
  msgstr ""
691
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
692
  #: application/admin/ImportExportController.php:28
693
  msgid "Import/Export"
694
  msgstr ""
@@ -705,48 +794,44 @@ msgstr ""
705
  msgid "Invalid format."
706
  msgstr ""
707
 
708
- #: application/admin/LicConfig.php:35
709
  #: application/admin/views/lic_settings.php:4
710
  #: application/modules/BingImages/BingImagesConfig.php:88
711
  msgid "License"
712
  msgstr ""
713
 
714
- #: application/admin/LicConfig.php:42
715
  msgid "License key"
716
  msgstr ""
717
 
718
- #: application/admin/LicConfig.php:43
719
- msgid ""
720
- "Here you must enter a valid license key. You can find key in your <a href="
721
- "\"http://www.keywordrush.com/en/panel\">user panel</a>. If you don't have a "
722
- "key you can buy it on <a href=\"http://www.keywordrush.com/en/contentegg"
723
- "\">the official website</a> of the plugin."
724
  msgstr ""
725
 
726
- #: application/admin/LicConfig.php:50
727
  msgid "The \"License key\" can not be empty"
728
  msgstr ""
729
 
730
- #: application/admin/LicConfig.php:54
731
  msgid "Invalid license key"
732
  msgstr ""
733
 
734
- #: application/admin/LicConfig.php:59
735
  msgid "License key is not accepted. Make sure that you use actual key."
736
  msgstr ""
737
 
738
- #: application/admin/LicConfig.php:61
739
  msgid ""
740
  "If you have correct key, but it's not accepted, this means that your server "
741
  "blocks external connections or there is any other reason that your server "
742
  "doesn't allow to connect to keywordrush.com site."
743
  msgstr ""
744
 
745
- #: application/admin/LicConfig.php:63
746
  msgid "Please, write about this to your hosting provider."
747
  msgstr ""
748
 
749
- #: application/admin/LicConfig.php:65
750
  msgid ""
751
  "If you need our help, write to <a href=\"http://www.keywordrush.com/en/"
752
  "contact\">our support</a>."
@@ -760,12 +845,12 @@ msgstr ""
760
  msgid " ago"
761
  msgstr ""
762
 
763
- #: application/admin/PluginAdmin.php:84
764
  msgid "Are you sure?"
765
  msgstr ""
766
 
767
  #: application/admin/PrefillController.php:37
768
- #: application/admin/views/prefill.php:111
769
  msgid "Future"
770
  msgstr ""
771
 
@@ -779,7 +864,7 @@ msgid "Data already exist."
779
  msgstr ""
780
 
781
  #: application/admin/PrefillController.php:132
782
- msgid "Impossible to determine a keyword"
783
  msgstr ""
784
 
785
  #: application/admin/PrefillController.php:141
@@ -841,7 +926,7 @@ msgid "Filter by module"
841
  msgstr ""
842
 
843
  #: application/admin/ProductTable.php:222
844
- #: application/modules/Aliexpress2/Aliexpress2Config.php:166
845
  #: application/modules/BingImages/BingImagesConfig.php:92
846
  #: application/modules/BingImages/BingImagesConfig.php:108
847
  #: application/modules/BingImages/BingImagesConfig.php:121
@@ -883,245 +968,223 @@ msgstr ""
883
  msgid "Task status"
884
  msgstr ""
885
 
886
- #: application/admin/views/_metabox_autoblog.php:29
887
- msgid "You can stop autoblogging."
888
  msgstr ""
889
 
890
- #: application/admin/views/_metabox_autoblog.php:35
891
- msgid "Work frequency"
892
- msgstr ""
893
-
894
- #: application/admin/views/_metabox_autoblog.php:39
895
  msgid "Every hour"
896
  msgstr ""
897
 
898
- #: application/admin/views/_metabox_autoblog.php:40
899
  msgid "5 times in a day"
900
  msgstr ""
901
 
902
- #: application/admin/views/_metabox_autoblog.php:41
903
  msgid "Twice daily"
904
  msgstr ""
905
 
906
- #: application/admin/views/_metabox_autoblog.php:42
907
  msgid "Once a day"
908
  msgstr ""
909
 
910
- #: application/admin/views/_metabox_autoblog.php:43
911
  msgid "Each three days"
912
  msgstr ""
913
 
914
- #: application/admin/views/_metabox_autoblog.php:44
915
  msgid "Once a week"
916
  msgstr ""
917
 
918
- #: application/admin/views/_metabox_autoblog.php:45
919
  msgid "Once in 2 weeks"
920
  msgstr ""
921
 
922
- #: application/admin/views/_metabox_autoblog.php:47
923
- msgid "How often autoblogging will run this task"
924
  msgstr ""
925
 
926
- #: application/admin/views/_metabox_autoblog.php:53
927
- #: application/admin/views/_metabox_autoblog.php:153
928
  #: application/models/AutoblogModel.php:81
929
  msgid "Keywords"
930
  msgstr ""
931
 
932
- #: application/admin/views/_metabox_autoblog.php:61
933
  msgid "Uppercase First Letter for Each Word"
934
  msgstr ""
935
 
936
- #: application/admin/views/_metabox_autoblog.php:62
937
  msgid "Uppercase first letter"
938
  msgstr ""
939
 
940
- #: application/admin/views/_metabox_autoblog.php:63
941
  msgid "Sort with alpha order"
942
  msgstr ""
943
 
944
- #: application/admin/views/_metabox_autoblog.php:64
945
  msgid "All words are inactive"
946
  msgstr ""
947
 
948
- #: application/admin/views/_metabox_autoblog.php:65
949
  msgid "All words are active"
950
  msgstr ""
951
 
952
- #: application/admin/views/_metabox_autoblog.php:66
953
  msgid "Clear list"
954
  msgstr ""
955
 
956
- #: application/admin/views/_metabox_autoblog.php:70
957
  msgid "Total"
958
  msgstr ""
959
 
960
- #: application/admin/views/_metabox_autoblog.php:76
961
  msgid "Hints"
962
  msgstr ""
963
 
964
- #: application/admin/views/_metabox_autoblog.php:91
965
  msgid "Yandex"
966
  msgstr ""
967
 
968
- #: application/admin/views/_metabox_autoblog.php:92
969
  msgid "Yandex.Market"
970
  msgstr ""
971
 
972
- #: application/admin/views/_metabox_autoblog.php:95
973
  msgid "Start enter keyword"
974
  msgstr ""
975
 
976
- #: application/admin/views/_metabox_autoblog.php:137
977
  msgid "Each keyword from separate line."
978
  msgstr ""
979
 
980
- #: application/admin/views/_metabox_autoblog.php:138
981
  msgid "One keyword is one post."
982
  msgstr ""
983
 
984
- #: application/admin/views/_metabox_autoblog.php:139
985
  msgid "Handled keywords are marked by [brackets]."
986
  msgstr ""
987
 
988
- #: application/admin/views/_metabox_autoblog.php:140
989
  msgid "When all keywords will be processed, task will stop."
990
  msgstr ""
991
 
992
- #: application/admin/views/_metabox_autoblog.php:143
993
- #: application/admin/views/_metabox_autoblog.php:181
994
  msgid "You can also use separate keywords for some modules:"
995
  msgstr ""
996
 
997
- #: application/admin/views/_metabox_autoblog.php:161
998
  msgid "Two format are supported: "
999
  msgstr ""
1000
 
1001
- #: application/admin/views/_metabox_autoblog.php:164
1002
  msgid "CSV files in format:"
1003
  msgstr ""
1004
 
1005
- #: application/admin/views/_metabox_autoblog.php:173
1006
  msgid "Divider - \";\""
1007
  msgstr ""
1008
 
1009
- #: application/admin/views/_metabox_autoblog.php:174
1010
  msgid "For each category will be created separate task for autoblog."
1011
  msgstr ""
1012
 
1013
- #: application/admin/views/_metabox_autoblog.php:176
1014
  msgid "TXT files:"
1015
  msgstr ""
1016
 
1017
- #: application/admin/views/_metabox_autoblog.php:177
1018
  msgid "Simple text file with list of keywords (each word from separate line)."
1019
  msgstr ""
1020
 
1021
- #: application/admin/views/_metabox_autoblog.php:179
1022
  msgid "File must be in UTF-8"
1023
  msgstr ""
1024
 
1025
- #: application/admin/views/_metabox_autoblog.php:192
1026
- msgid "Keywords for handle"
1027
  msgstr ""
1028
 
1029
- #: application/admin/views/_metabox_autoblog.php:197
1030
- msgid ""
1031
- "How many keywords to process at once. We don't recommend to use more than 5 "
1032
- "keywords."
1033
  msgstr ""
1034
 
1035
- #: application/admin/views/_metabox_autoblog.php:202
1036
- msgid "Title template"
1037
  msgstr ""
1038
 
1039
- #: application/admin/views/_metabox_autoblog.php:209
1040
- msgid "Template for title of post"
1041
- msgstr ""
1042
-
1043
- #: application/admin/views/_metabox_autoblog.php:210
1044
  msgid "Use tags:"
1045
  msgstr ""
1046
 
1047
- #: application/admin/views/_metabox_autoblog.php:211
1048
  msgid "For display data of plugin use special tags, for example:"
1049
  msgstr ""
1050
 
1051
- #: application/admin/views/_metabox_autoblog.php:212
1052
  msgid "You also can set index number for access to data of plugin"
1053
  msgstr ""
1054
 
1055
- #: application/admin/views/_metabox_autoblog.php:213
1056
  msgid ""
1057
  "You can use \"formulas\" with synonyms, of which one will be selected with a "
1058
  "random option, for example, {Discount|Sale|Cheap}."
1059
  msgstr ""
1060
 
1061
- #: application/admin/views/_metabox_autoblog.php:220
1062
- msgid "Template for post."
1063
  msgstr ""
1064
 
1065
- #: application/admin/views/_metabox_autoblog.php:226
1066
- msgid "Template for body of post."
1067
  msgstr ""
1068
 
1069
- #: application/admin/views/_metabox_autoblog.php:227
1070
- msgid "You can use shortcodes, for example:"
1071
- msgstr ""
1072
-
1073
- #: application/admin/views/_metabox_autoblog.php:229
1074
- #: application/admin/views/_metabox_autoblog.php:440
1075
- #: application/admin/views/_metabox_autoblog.php:482
1076
  msgid ""
1077
  "\"Formulas\", and also all tags from title template, will also work here."
1078
  msgstr ""
1079
 
1080
- #: application/admin/views/_metabox_autoblog.php:236
1081
  msgid "Only selected modules"
1082
  msgstr ""
1083
 
1084
- #: application/admin/views/_metabox_autoblog.php:247
1085
  msgid "Run only selected modules for this task."
1086
  msgstr ""
1087
 
1088
- #: application/admin/views/_metabox_autoblog.php:248
1089
  msgid "If you don't select any modules, all active modules will be used."
1090
  msgstr ""
1091
 
1092
- #: application/admin/views/_metabox_autoblog.php:255
1093
  msgid "Exclude modules"
1094
  msgstr ""
1095
 
1096
- #: application/admin/views/_metabox_autoblog.php:266
1097
  msgid "Chosen modules will not run in this configuration. "
1098
  msgstr ""
1099
 
1100
- #: application/admin/views/_metabox_autoblog.php:273
1101
- #: application/admin/views/prefill.php:108
1102
  msgid "Post status"
1103
  msgstr ""
1104
 
1105
- #: application/admin/views/_metabox_autoblog.php:285
1106
- #: application/admin/views/prefill.php:96
1107
  msgid "Post type"
1108
  msgstr ""
1109
 
1110
- #: application/admin/views/_metabox_autoblog.php:303
1111
- msgid "User"
1112
- msgstr ""
1113
-
1114
- #: application/admin/views/_metabox_autoblog.php:310
1115
- msgid "This user will be author of posts."
1116
- msgstr ""
1117
-
1118
- #: application/admin/views/_metabox_autoblog.php:316
1119
  #: application/modules/Aliexpress/AliexpressConfig.php:89
1120
- #: application/modules/Aliexpress2/Aliexpress2Config.php:134
1121
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:89
1122
  #: application/modules/CjLinks/CjLinksConfig.php:135
1123
  #: application/modules/Clickbank/ClickbankConfig.php:69
1124
- #: application/modules/Ebay/EbayConfig.php:159
1125
  #: application/modules/Linkshare/LinkshareConfig.php:106
1126
  #: application/modules/Ozon/OzonConfig.php:93
1127
  #: application/modules/Pepperjam/PepperjamConfig.php:97
@@ -1131,105 +1194,113 @@ msgstr ""
1131
  msgid "Category "
1132
  msgstr ""
1133
 
1134
- #: application/admin/views/_metabox_autoblog.php:323
1135
  msgid "Create Automatically"
1136
  msgstr ""
1137
 
1138
- #: application/admin/views/_metabox_autoblog.php:334
1139
- msgid "Default category for posts."
1140
  msgstr ""
1141
 
1142
- #: application/admin/views/_metabox_autoblog.php:336
1143
  msgid ""
1144
  "\"Create Automatically\" means, that categories will be created based on "
1145
  "data of CSV file with keywords and categories."
1146
  msgstr ""
1147
 
1148
- #: application/admin/views/_metabox_autoblog.php:344
 
 
 
 
 
 
 
 
1149
  msgid "Dynamic categories"
1150
  msgstr ""
1151
 
1152
- #: application/admin/views/_metabox_autoblog.php:348
1153
  msgid "Do not create"
1154
  msgstr ""
1155
 
1156
- #: application/admin/views/_metabox_autoblog.php:349
1157
  msgid "Create category"
1158
  msgstr ""
1159
 
1160
- #: application/admin/views/_metabox_autoblog.php:350
1161
  msgid "Create nested categories"
1162
  msgstr ""
1163
 
1164
- #: application/admin/views/_metabox_autoblog.php:352
1165
  msgid ""
1166
  "Create a category automatically, if the main product has a category data."
1167
  msgstr ""
1168
 
1169
- #: application/admin/views/_metabox_autoblog.php:358
1170
  msgid "Minimum modules required"
1171
  msgstr ""
1172
 
1173
- #: application/admin/views/_metabox_autoblog.php:363
1174
  msgid "Post will not be published if no content for such number of modules."
1175
  msgstr ""
1176
 
1177
- #: application/admin/views/_metabox_autoblog.php:369
1178
  msgid "Minimum reviews required"
1179
  msgstr ""
1180
 
1181
- #: application/admin/views/_metabox_autoblog.php:374
1182
  msgid ""
1183
  "Post will not be published if there are no user reviews. This option works "
1184
  "only for AE modules."
1185
  msgstr ""
1186
 
1187
- #: application/admin/views/_metabox_autoblog.php:380
1188
  #: application/components/AffiliateParserModuleConfig.php:20
1189
  msgid "Update by keyword"
1190
  msgstr ""
1191
 
1192
- #: application/admin/views/_metabox_autoblog.php:391
1193
  msgid ""
1194
  "For selected modules, the current keyword will be used as a keyword for "
1195
  "autoupdate. Data of the module will be updated periodically In accordance "
1196
  "with the configuration of the lifetime of the cache."
1197
  msgstr ""
1198
 
1199
- #: application/admin/views/_metabox_autoblog.php:397
1200
  msgid "Required modules"
1201
  msgstr ""
1202
 
1203
- #: application/admin/views/_metabox_autoblog.php:408
1204
  msgid "Post will not be publicized if no results for these modules."
1205
  msgstr ""
1206
 
1207
- #: application/admin/views/_metabox_autoblog.php:415
1208
  msgid "Main product"
1209
  msgstr ""
1210
 
1211
- #: application/admin/views/_metabox_autoblog.php:424
1212
  msgid "How to choose \"main\" product?"
1213
  msgstr ""
1214
 
1215
- #: application/admin/views/_metabox_autoblog.php:425
1216
  msgid "Then you can use tags:"
1217
  msgstr ""
1218
 
1219
- #: application/admin/views/_metabox_autoblog.php:432
1220
  msgid "Tags"
1221
  msgstr ""
1222
 
1223
- #: application/admin/views/_metabox_autoblog.php:439
1224
  msgid "Comma separated list of tags."
1225
  msgstr ""
1226
 
1227
- #: application/admin/views/_metabox_autoblog.php:447
1228
- #: application/modules/Ebay/EbayConfig.php:183
1229
  msgid "Product condition"
1230
  msgstr ""
1231
 
1232
- #: application/admin/views/_metabox_autoblog.php:451
1233
  #: application/modules/Amazon/AmazonConfig.php:208
1234
  #: application/modules/Amazon/AmazonConfig.php:233
1235
  #: application/modules/Amazon/AmazonConfig.php:294
@@ -1250,51 +1321,51 @@ msgstr ""
1250
  msgid "Any"
1251
  msgstr ""
1252
 
1253
- #: application/admin/views/_metabox_autoblog.php:452
1254
  #: application/admin/views/module_index.php:16
1255
  #: application/modules/Amazon/AmazonConfig.php:234
1256
  #: application/modules/Twitter/TwitterConfig.php:118
1257
  #: application/modules/Twitter/views/search_panel.php:3
1258
- #: application/modules/Walmart/WalmartConfig.php:104
1259
  msgid "New"
1260
  msgstr ""
1261
 
1262
- #: application/admin/views/_metabox_autoblog.php:453
1263
  #: application/modules/Amazon/AmazonConfig.php:235
1264
  msgid "Used"
1265
  msgstr ""
1266
 
1267
- #: application/admin/views/_metabox_autoblog.php:454
1268
  #: application/modules/Amazon/AmazonConfig.php:237
1269
  msgid "Refurbished"
1270
  msgstr ""
1271
 
1272
- #: application/admin/views/_metabox_autoblog.php:455
1273
  msgid "Open box, no signs (Ebay only)"
1274
  msgstr ""
1275
 
1276
- #: application/admin/views/_metabox_autoblog.php:456
1277
  msgid "Seller refurbished (Ebay only)"
1278
  msgstr ""
1279
 
1280
- #: application/admin/views/_metabox_autoblog.php:457
1281
  msgid "For parts or not working (Ebay only)"
1282
  msgstr ""
1283
 
1284
- #: application/admin/views/_metabox_autoblog.php:460
1285
  msgid "This parameter is supported only by the following modules: Amazon, Ebay"
1286
  msgstr ""
1287
 
1288
- #: application/admin/views/_metabox_autoblog.php:468
1289
- #: application/admin/views/prefill.php:126
1290
  msgid "Add custom fields"
1291
  msgstr ""
1292
 
1293
- #: application/admin/views/_metabox_autoblog.php:473
1294
  msgid "Custom Field"
1295
  msgstr ""
1296
 
1297
- #: application/admin/views/_metabox_autoblog.php:478
1298
  msgid "Value"
1299
  msgstr ""
1300
 
@@ -1308,12 +1379,14 @@ msgid "Domain"
1308
  msgstr ""
1309
 
1310
  #: application/admin/views/_metabox_results.php:33
 
1311
  #: application/models/ProductModel.php:64
1312
  #: application/modules/GdeSlon/GdeSlonConfig.php:84
1313
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:90
1314
  #: application/modules/Offer/views/metabox_module.php:91
1315
  #: application/modules/Udemy/UdemyConfig.php:155
1316
- #: application/modules/Walmart/WalmartConfig.php:100
 
1317
  msgid "Price"
1318
  msgstr ""
1319
 
@@ -1343,7 +1416,7 @@ msgid "Product group"
1343
  msgstr ""
1344
 
1345
  #: application/admin/views/_metabox_results.php:77
1346
- #: application/admin/views/_promo_box.php:43
1347
  #: application/modules/Coupon/views/metabox_module.php:111
1348
  #: application/modules/Offer/views/metabox_module.php:124
1349
  msgid "Go to "
@@ -1354,7 +1427,7 @@ msgstr ""
1354
  msgid "Last updated:"
1355
  msgstr ""
1356
 
1357
- #: application/admin/views/_metabox_results.php:90
1358
  #: application/modules/Coupon/views/metabox_module.php:112
1359
  #: application/modules/Offer/views/metabox_module.php:136
1360
  msgid "Remove"
@@ -1369,26 +1442,18 @@ msgstr ""
1369
  msgid "Coupon code:"
1370
  msgstr ""
1371
 
1372
- #: application/admin/views/_promo_box.php:5
1373
- msgid "Maximum profit with minimum efforts"
1374
- msgstr ""
1375
-
1376
- #: application/admin/views/_promo_box.php:18
1377
- msgid "Many additional modules and extended functions."
1378
- msgstr ""
1379
-
1380
- #: application/admin/views/_promo_box.php:39
1381
  msgid "Activate plugin"
1382
  msgstr ""
1383
 
1384
- #: application/admin/views/_promo_box.php:40
1385
  #: application/admin/views/envato_activation.php:5
1386
  msgid ""
1387
  "In order to receive all benefits of Contennt Egg, you need to activate your "
1388
  "copy of the plugin."
1389
  msgstr ""
1390
 
1391
- #: application/admin/views/_promo_box.php:41
1392
  #: application/admin/views/envato_activation.php:6
1393
  msgid ""
1394
  "By activating Contennt Egg license you will unlock premium options - direct "
@@ -1409,7 +1474,7 @@ msgstr ""
1409
 
1410
  #: application/admin/views/ae_integration.php:15
1411
  msgid ""
1412
- "Here are the <a href=\"http://www.keywordrush.com/res/ae_supported_shops.txt"
1413
  "\">full list</a> of Affiliate Egg supported shops."
1414
  msgstr ""
1415
 
@@ -1452,15 +1517,15 @@ msgstr ""
1452
  msgid "Working... Please wait..."
1453
  msgstr ""
1454
 
1455
- #: application/admin/views/autoblog_index.php:19
1456
  msgid "Deleted tasks for autoblogging: "
1457
  msgstr ""
1458
 
1459
- #: application/admin/views/autoblog_index.php:21
1460
  msgid "Autoblogging finished tasks"
1461
  msgstr ""
1462
 
1463
- #: application/admin/views/autoblog_index.php:39
1464
  msgid "You can create automatic creating of posts with autoblogging"
1465
  msgstr ""
1466
 
@@ -1494,23 +1559,23 @@ msgstr ""
1494
  msgid "Import"
1495
  msgstr ""
1496
 
1497
- #: application/admin/views/lic_settings.php:8
1498
- msgid "Plugin is activated"
1499
  msgstr ""
1500
 
1501
- #: application/admin/views/lic_settings.php:22
1502
- #: application/admin/views/lic_settings.php:30
1503
  msgid "Deactivate license"
1504
  msgstr ""
1505
 
1506
- #: application/admin/views/lic_settings.php:23
1507
- msgid "You can transfer your license to another domain."
1508
  msgstr ""
1509
 
1510
- #: application/admin/views/lic_settings.php:24
1511
  msgid ""
1512
  "After deactivating license, you must deactivate and delete Content Egg from "
1513
- "current domain to use plugin on other domain."
1514
  msgstr ""
1515
 
1516
  #: application/admin/views/metabox_general.php:9
@@ -1603,95 +1668,115 @@ msgstr ""
1603
  msgid "Deprecated"
1604
  msgstr ""
1605
 
1606
- #: application/admin/views/module_index.php:29
1607
- #: application/admin/views/module_settings.php:7
1608
  msgid "Module Settings"
1609
  msgstr ""
1610
 
1611
- #: application/admin/views/module_index.php:53
1612
  msgid "Product modules"
1613
  msgstr ""
1614
 
1615
- #: application/admin/views/module_index.php:64
1616
  msgid "Affiliate Egg modules"
1617
  msgstr ""
1618
 
1619
- #: application/admin/views/module_index.php:72
 
 
 
 
1620
  msgid "Coupon modules"
1621
  msgstr ""
1622
 
1623
- #: application/admin/views/module_index.php:83
1624
  msgid "Content modules"
1625
  msgstr ""
1626
 
1627
- #: application/admin/views/module_settings.php:29
 
 
 
 
1628
  msgid "%s Settings"
1629
  msgstr ""
1630
 
1631
- #: application/admin/views/module_settings.php:30
1632
- msgid "User guide"
1633
  msgstr ""
1634
 
1635
- #: application/admin/views/module_settings.php:37
1636
- #: application/admin/views/module_settings.php:45
1637
- #: application/admin/views/module_settings.php:56
1638
  msgid "WARNING:"
1639
  msgstr ""
1640
 
1641
- #: application/admin/views/module_settings.php:38
1642
  msgid "Amazon PA-API v4 <a target=\"_blank\" href=\"%s\"> is deprecated</a>."
1643
  msgstr ""
1644
 
1645
- #: application/admin/views/module_settings.php:39
1646
  msgid ""
1647
  "Only <a target=\"_blank\" href=\"%s\">Content Egg Pro</a> has support for "
1648
  "the new PA-API v5."
1649
  msgstr ""
1650
 
1651
- #: application/admin/views/module_settings.php:40
1652
  msgid "Please"
1653
  msgstr ""
1654
 
1655
- #: application/admin/views/module_settings.php:40
1656
  msgid "read more..."
1657
  msgstr ""
1658
 
1659
- #: application/admin/views/module_settings.php:46
1660
  msgid "This module is deprecated"
1661
  msgstr ""
1662
 
1663
- #: application/admin/views/module_settings.php:47
1664
  msgid "what does this mean"
1665
  msgstr ""
1666
 
1667
- #: application/admin/views/module_settings.php:57
1668
  msgid "This module cannot be activated!"
1669
  msgstr ""
1670
 
1671
- #: application/admin/views/module_settings.php:58
1672
  msgid "Please fix the following error(s):"
1673
  msgstr ""
1674
 
1675
- #: application/admin/views/module_settings.php:87
1676
  msgid "Last feed import: %s."
1677
  msgstr ""
1678
 
1679
- #: application/admin/views/module_settings.php:88
1680
  msgid "Total products: %d."
1681
  msgstr ""
1682
 
1683
- #: application/admin/views/module_settings.php:90
1684
  msgid "Your unzipped feed must be smaller than this."
1685
  msgstr ""
1686
 
1687
- #: application/admin/views/module_settings.php:90
1688
  msgid "WordPress memory limit: %s"
1689
  msgstr ""
1690
 
1691
- #: application/admin/views/module_settings.php:94
1692
  msgid "Last error: %s"
1693
  msgstr ""
1694
 
 
 
 
 
 
 
 
 
 
 
 
 
1695
  #: application/admin/views/prefill.php:15
1696
  msgid "This extension will fill module's data for all existed posts."
1697
  msgstr ""
@@ -1704,102 +1789,106 @@ msgstr ""
1704
  msgid "Delay"
1705
  msgstr ""
1706
 
1707
- #: application/admin/views/prefill.php:37
1708
  msgid "Delay in seconds between each post prefill."
1709
  msgstr ""
1710
 
1711
- #: application/admin/views/prefill.php:42
1712
  msgid "Add data for module"
1713
  msgstr ""
1714
 
1715
- #: application/admin/views/prefill.php:52
1716
  msgid "Keyword source"
1717
  msgstr ""
1718
 
1719
- #: application/admin/views/prefill.php:55
1720
- msgid "Calculate as base of the density of keywords inside post"
1721
  msgstr ""
1722
 
1723
- #: application/admin/views/prefill.php:56
1724
- msgid "Title for post"
1725
  msgstr ""
1726
 
1727
- #: application/admin/views/prefill.php:57
1728
  msgid "Post tags"
1729
  msgstr ""
1730
 
1731
- #: application/admin/views/prefill.php:58
1732
  msgid "Arbitrary custom field"
1733
  msgstr ""
1734
 
1735
- #: application/admin/views/prefill.php:60
1736
- msgid "Copy from"
1737
  msgstr ""
1738
 
1739
- #: application/admin/views/prefill.php:63
1740
- msgid "Set the name of a custom field"
1741
  msgstr ""
1742
 
1743
  #: application/admin/views/prefill.php:68
 
 
 
 
1744
  msgid "Autoupdate"
1745
  msgstr ""
1746
 
1747
- #: application/admin/views/prefill.php:70
1748
  msgid "Add Keyword for the automatic update"
1749
  msgstr ""
1750
 
1751
- #: application/admin/views/prefill.php:71
1752
  msgid "Only for those modules, which have autoupdate function."
1753
  msgstr ""
1754
 
1755
- #: application/admin/views/prefill.php:76
1756
  msgid "Number of words"
1757
  msgstr ""
1758
 
1759
- #: application/admin/views/prefill.php:83
1760
  msgid "Maximum words for one search query."
1761
  msgstr ""
1762
 
1763
- #: application/admin/views/prefill.php:88
1764
  msgid "\"Minus\" words"
1765
  msgstr ""
1766
 
1767
- #: application/admin/views/prefill.php:91
1768
  msgid ""
1769
  "Remove these words from keyword. You can set several minus words/phrases "
1770
  "with commas."
1771
  msgstr ""
1772
 
1773
- #: application/admin/views/prefill.php:103
1774
  msgid "You can set all supported post types in General settings -> Post Types."
1775
  msgstr ""
1776
 
1777
- #: application/admin/views/prefill.php:129
1778
  msgid "Custom Field %d"
1779
  msgstr ""
1780
 
1781
- #: application/admin/views/prefill.php:130
1782
  msgid "Value %d"
1783
  msgstr ""
1784
 
1785
- #: application/admin/views/prefill.php:133
1786
  msgid "You can use tags: %s."
1787
  msgstr ""
1788
 
1789
- #: application/admin/views/prefill.php:140
1790
  #: application/models/AutoblogModel.php:79
1791
  msgid "Total posts"
1792
  msgstr ""
1793
 
1794
- #: application/admin/views/prefill.php:144
1795
  msgid "Start"
1796
  msgstr ""
1797
 
1798
- #: application/admin/views/prefill.php:145
1799
- msgid "Start over"
1800
  msgstr ""
1801
 
1802
- #: application/admin/views/prefill.php:146
1803
  msgid "Stop"
1804
  msgstr ""
1805
 
@@ -1823,11 +1912,11 @@ msgstr ""
1823
  msgid "Content Egg Settings"
1824
  msgstr ""
1825
 
1826
- #: application/components/AffiliateFeedParserModule.php:276
1827
- msgid "Product import is in progress."
1828
  msgstr ""
1829
 
1830
- #: application/components/AffiliateFeedParserModule.php:356
1831
  msgid ""
1832
  "Your data feed is too large and cannot be imported. Use a smaller feed or "
1833
  "increase <a target=\"_blank\" href=\"%s\">WP_MAX_MEMORY_LIMIT</a>."
@@ -1855,7 +1944,7 @@ msgstr ""
1855
  #: application/modules/CjProducts/CjProductsConfig.php:64
1856
  #: application/modules/Clickbank/ClickbankConfig.php:37
1857
  #: application/modules/Daisycon/DaisyconConfig.php:64
1858
- #: application/modules/Ebay/EbayConfig.php:109
1859
  #: application/modules/Envato/EnvatoConfig.php:58
1860
  #: application/modules/Flickr/FlickrConfig.php:37
1861
  #: application/modules/Flipkart/FlipkartConfig.php:72
@@ -1888,13 +1977,13 @@ msgstr ""
1888
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:85
1889
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:37
1890
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:37
1891
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:97
1892
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:106
1893
  #: application/modules/Twitter/TwitterConfig.php:82
1894
  #: application/modules/Udemy/UdemyConfig.php:66
1895
  #: application/modules/Viglink/ViglinkConfig.php:52
1896
  #: application/modules/VkNews/VkNewsConfig.php:22
1897
- #: application/modules/Walmart/WalmartConfig.php:45
1898
  #: application/modules/Youtube/YoutubeConfig.php:37
1899
  #: application/modules/Zanox/ZanoxConfig.php:47
1900
  msgid "Results"
@@ -1919,7 +2008,7 @@ msgstr ""
1919
  #: application/modules/CjProducts/CjProductsConfig.php:65
1920
  #: application/modules/Clickbank/ClickbankConfig.php:38
1921
  #: application/modules/Daisycon/DaisyconConfig.php:65
1922
- #: application/modules/Ebay/EbayConfig.php:110
1923
  #: application/modules/Envato/EnvatoConfig.php:59
1924
  #: application/modules/Flipkart/FlipkartConfig.php:73
1925
  #: application/modules/GdeSlon/GdeSlonConfig.php:48
@@ -1937,11 +2026,11 @@ msgstr ""
1937
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:86
1938
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:38
1939
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:38
1940
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:98
1941
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:107
1942
  #: application/modules/Udemy/UdemyConfig.php:67
1943
  #: application/modules/Viglink/ViglinkConfig.php:53
1944
- #: application/modules/Walmart/WalmartConfig.php:46
1945
  #: application/modules/Zanox/ZanoxConfig.php:48
1946
  msgid "Number of results for one search query."
1947
  msgstr ""
@@ -1983,8 +2072,8 @@ msgstr ""
1983
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:111
1984
  #: application/modules/Udemy/UdemyConfig.php:76
1985
  #: application/modules/Udemy/UdemyConfig.php:91
1986
- #: application/modules/Walmart/WalmartConfig.php:55
1987
- #: application/modules/Walmart/WalmartConfig.php:70
1988
  msgid "The field \"%s\" can not be more than %d."
1989
  msgstr ""
1990
 
@@ -2022,7 +2111,7 @@ msgstr ""
2022
  #: application/modules/CjProducts/CjProductsConfig.php:75
2023
  #: application/modules/Clickbank/ClickbankConfig.php:54
2024
  #: application/modules/Daisycon/DaisyconConfig.php:80
2025
- #: application/modules/Ebay/EbayConfig.php:126
2026
  #: application/modules/Envato/EnvatoConfig.php:74
2027
  #: application/modules/Flipkart/FlipkartConfig.php:89
2028
  #: application/modules/GdeSlon/GdeSlonConfig.php:64
@@ -2040,11 +2129,11 @@ msgstr ""
2040
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:102
2041
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:49
2042
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:49
2043
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:109
2044
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:118
2045
  #: application/modules/Udemy/UdemyConfig.php:82
2046
  #: application/modules/Viglink/ViglinkConfig.php:63
2047
- #: application/modules/Walmart/WalmartConfig.php:61
2048
  #: application/modules/Zanox/ZanoxConfig.php:64
2049
  msgid "Number of results for automatic updates and autoblogging."
2050
  msgstr ""
@@ -2070,7 +2159,7 @@ msgstr ""
2070
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:130
2071
  #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:167
2072
  #: application/modules/Aliexpress/AliexpressConfig.php:260
2073
- #: application/modules/Aliexpress2/Aliexpress2Config.php:215
2074
  #: application/modules/Amazon/AmazonConfig.php:303
2075
  #: application/modules/Amazon/AmazonConfig_FREE.php:274
2076
  #: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:218
@@ -2081,7 +2170,7 @@ msgstr ""
2081
  #: application/modules/CjProducts/CjProductsConfig.php:113
2082
  #: application/modules/Coupon/CouponConfig.php:22
2083
  #: application/modules/Daisycon/DaisyconConfig.php:101
2084
- #: application/modules/Ebay/EbayConfig.php:370
2085
  #: application/modules/Envato/EnvatoConfig.php:219
2086
  #: application/modules/Flickr/FlickrConfig.php:106
2087
  #: application/modules/Flipkart/FlipkartConfig.php:104
@@ -2105,13 +2194,13 @@ msgstr ""
2105
  #: application/modules/QwantImages/QwantImagesConfig.php:64
2106
  #: application/modules/Shareasale/ShareasaleConfig.php:109
2107
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:159
2108
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:173
2109
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:182
2110
  #: application/modules/Twitter/TwitterConfig.php:127
2111
  #: application/modules/Udemy/UdemyConfig.php:215
2112
  #: application/modules/Viglink/ViglinkConfig.php:141
2113
  #: application/modules/VkNews/VkNewsConfig.php:44
2114
- #: application/modules/Walmart/WalmartConfig.php:164
2115
  #: application/modules/Zanox/ZanoxConfig.php:154
2116
  msgid "Save images"
2117
  msgstr ""
@@ -2130,7 +2219,7 @@ msgstr ""
2130
  #: application/modules/CjProducts/CjProductsConfig.php:114
2131
  #: application/modules/Coupon/CouponConfig.php:23
2132
  #: application/modules/Daisycon/DaisyconConfig.php:102
2133
- #: application/modules/Ebay/EbayConfig.php:371
2134
  #: application/modules/Envato/EnvatoConfig.php:220
2135
  #: application/modules/Flickr/FlickrConfig.php:107
2136
  #: application/modules/Flipkart/FlipkartConfig.php:105
@@ -2153,20 +2242,20 @@ msgstr ""
2153
  #: application/modules/QwantImages/QwantImagesConfig.php:65
2154
  #: application/modules/Shareasale/ShareasaleConfig.php:110
2155
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:160
2156
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:174
2157
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:183
2158
  #: application/modules/Twitter/TwitterConfig.php:128
2159
  #: application/modules/Udemy/UdemyConfig.php:216
2160
  #: application/modules/Viglink/ViglinkConfig.php:142
2161
  #: application/modules/VkNews/VkNewsConfig.php:45
2162
- #: application/modules/Walmart/WalmartConfig.php:165
2163
  #: application/modules/Zanox/ZanoxConfig.php:155
2164
  msgid "Save images on server"
2165
  msgstr ""
2166
 
2167
- #: application/components/AffiliateFeedParserModuleConfig.php:65
2168
  #: application/components/AffiliateParserModuleConfig.php:52
2169
- msgid "By schedule (WP cron)"
2170
  msgstr ""
2171
 
2172
  #: application/components/AffiliateParserModuleConfig.php:21
@@ -2190,17 +2279,93 @@ msgid "Update mode"
2190
  msgstr ""
2191
 
2192
  #: application/components/AffiliateParserModuleConfig.php:51
2193
- msgid "By page view"
2194
  msgstr ""
2195
 
2196
  #: application/components/AffiliateParserModuleConfig.php:53
2197
- msgid "By page view and by schedule"
2198
  msgstr ""
2199
 
2200
  #: application/components/ExternalFeaturedImage.php:120
2201
  msgid "External featured image"
2202
  msgstr ""
2203
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2204
  #: application/components/ModuleConfig.php:61
2205
  msgid "settings"
2206
  msgstr ""
@@ -2214,13 +2379,11 @@ msgid "Could not activate."
2214
  msgstr ""
2215
 
2216
  #: application/components/ParserModuleConfig.php:34
2217
- msgid "Add"
2218
  msgstr ""
2219
 
2220
- #: application/components/ParserModuleConfig.php:35
2221
- msgid ""
2222
- "The place for content of module. Shortcodes will work in any place "
2223
- "regardless of the setting."
2224
  msgstr ""
2225
 
2226
  #: application/components/ParserModuleConfig.php:38
@@ -2231,63 +2394,75 @@ msgstr ""
2231
  msgid "At the beginning of the post"
2232
  msgstr ""
2233
 
2234
- #: application/components/ParserModuleConfig.php:40
2235
- msgid "Shortcodes only"
2236
- msgstr ""
2237
-
2238
- #: application/components/ParserModuleConfig.php:46
2239
  msgid "Priority"
2240
  msgstr ""
2241
 
2242
- #: application/components/ParserModuleConfig.php:47
2243
  msgid ""
2244
  "Priority sets order of modules in post. 0 - is the most highest priority."
2245
  msgstr ""
2246
 
2247
- #: application/components/ParserModuleConfig.php:48
2248
  msgid "Also it applied to price sorting."
2249
  msgstr ""
2250
 
2251
- #: application/components/ParserModuleConfig.php:59
2252
  msgid "Default template"
2253
  msgstr ""
2254
 
2255
- #: application/components/ParserModuleConfig.php:67
2256
  msgid "Templates may use title on data output."
2257
  msgstr ""
2258
 
2259
- #: application/components/ParserModuleConfig.php:77
2260
  msgid "Automatically set Featured image for post"
2261
  msgstr ""
2262
 
2263
- #: application/components/ParserModuleConfig.php:80
2264
  msgid "Don't set"
2265
  msgstr ""
2266
 
2267
- #: application/components/ParserModuleConfig.php:81
2268
  msgid "First image"
2269
  msgstr ""
2270
 
2271
- #: application/components/ParserModuleConfig.php:82
2272
  msgid "Second image"
2273
  msgstr ""
2274
 
2275
- #: application/components/ParserModuleConfig.php:83
2276
  msgid "Random image"
2277
  msgstr ""
2278
 
2279
- #: application/components/ParserModuleConfig.php:84
2280
  msgid "Last image"
2281
  msgstr ""
2282
 
2283
- #: application/components/ParserModuleConfig.php:90
2284
  msgid "Redirect"
2285
  msgstr ""
2286
 
2287
- #: application/components/ParserModuleConfig.php:91
2288
  msgid "Make links with local 301 redirect"
2289
  msgstr ""
2290
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2291
  #: application/models/AutoblogModel.php:76
2292
  msgid "Date of creation"
2293
  msgstr ""
@@ -2304,25 +2479,25 @@ msgstr ""
2304
  msgid "Last error"
2305
  msgstr ""
2306
 
2307
- #: application/models/AutoblogModel.php:206
2308
  msgid ""
2309
  "Required module %s will not run. The module is not configured or deleted."
2310
  msgstr ""
2311
 
2312
- #: application/models/AutoblogModel.php:273
2313
  msgid "Data was not found for required module %s."
2314
  msgstr ""
2315
 
2316
- #: application/models/AutoblogModel.php:280
2317
  msgid ""
2318
  "It does not reach the desired amount of data. Minimum required modules: %d."
2319
  msgstr ""
2320
 
2321
- #: application/models/AutoblogModel.php:296
2322
  msgid "Total reviews found: %d. Minimum reviews required: %d."
2323
  msgstr ""
2324
 
2325
- #: application/models/AutoblogModel.php:388
2326
  msgid "Post can't be created. Unknown error."
2327
  msgstr ""
2328
 
@@ -2375,7 +2550,7 @@ msgstr ""
2375
  #: application/modules/CjLinks/CjLinksConfig.php:73
2376
  #: application/modules/CjProducts/CjProductsConfig.php:74
2377
  #: application/modules/Clickbank/ClickbankConfig.php:53
2378
- #: application/modules/Ebay/EbayConfig.php:125
2379
  #: application/modules/Envato/EnvatoConfig.php:73
2380
  #: application/modules/Flipkart/FlipkartConfig.php:88
2381
  #: application/modules/GdeSlon/GdeSlonConfig.php:63
@@ -2388,22 +2563,22 @@ msgstr ""
2388
  #: application/modules/Shareasale/ShareasaleConfig.php:78
2389
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:48
2390
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:48
2391
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:108
2392
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:117
2393
  #: application/modules/Udemy/UdemyConfig.php:81
2394
  #: application/modules/Viglink/ViglinkConfig.php:62
2395
- #: application/modules/Walmart/WalmartConfig.php:60
2396
  #: application/modules/Zanox/ZanoxConfig.php:63
2397
- msgid "Results for updates "
2398
  msgstr ""
2399
 
2400
  #: application/modules/AE/AEConfig.php:64
2401
- #: application/modules/Walmart/WalmartConfig.php:157
2402
  msgid "Reviews as post comments"
2403
  msgstr ""
2404
 
2405
  #: application/modules/AE/AEConfig.php:65
2406
- #: application/modules/Walmart/WalmartConfig.php:158
2407
  msgid "Save user reviews as post comments."
2408
  msgstr ""
2409
 
@@ -2456,6 +2631,7 @@ msgstr ""
2456
  #: application/modules/Bolcom/templates/data_item_simple.php:9
2457
  #: application/modules/CjProducts/templates/data_item_simple.php:9
2458
  #: application/modules/Daisycon/templates/data_item_simple.php:9
 
2459
  #: application/modules/Flipkart/templates/data_item_simple.php:9
2460
  #: application/modules/GdeSlon/templates/data_item_simple.php:9
2461
  #: application/modules/Impactradius/templates/data_item_simple.php:9
@@ -2557,7 +2733,7 @@ msgstr ""
2557
  #: application/modules/Amazon/AmazonConfig_FREE.php:172
2558
  #: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:169
2559
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:130
2560
- #: application/modules/Ebay/EbayConfig.php:305
2561
  #: application/modules/Impactradius/ImpactradiusConfig.php:81
2562
  #: application/modules/Kelkoo/KelkooConfig.php:163
2563
  #: application/modules/Linkwise/LinkwiseConfig.php:143
@@ -2574,7 +2750,7 @@ msgstr ""
2574
  #: application/modules/Amazon/AmazonConfig_FREE.php:182
2575
  #: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:179
2576
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:140
2577
- #: application/modules/Ebay/EbayConfig.php:295
2578
  #: application/modules/Impactradius/ImpactradiusConfig.php:91
2579
  #: application/modules/Kelkoo/KelkooConfig.php:173
2580
  #: application/modules/Linkwise/LinkwiseConfig.php:153
@@ -2612,7 +2788,7 @@ msgstr ""
2612
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:166
2613
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:189
2614
  #: application/modules/VkNews/VkNewsConfig.php:51
2615
- #: application/modules/Walmart/WalmartConfig.php:139
2616
  #: application/modules/Youtube/YoutubeConfig.php:87
2617
  #: application/modules/Zanox/ZanoxConfig.php:161
2618
  msgid "Trim description"
@@ -2645,7 +2821,7 @@ msgstr ""
2645
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:167
2646
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:190
2647
  #: application/modules/VkNews/VkNewsConfig.php:52
2648
- #: application/modules/Walmart/WalmartConfig.php:140
2649
  #: application/modules/Youtube/YoutubeConfig.php:88
2650
  #: application/modules/Zanox/ZanoxConfig.php:162
2651
  msgid "Description size in characters (0 - do not cut)"
@@ -2688,6 +2864,8 @@ msgstr ""
2688
  #: application/modules/Daisycon/views/update_panel.php:2
2689
  #: application/modules/Ebay/views/search_panel.php:2
2690
  #: application/modules/Ebay/views/update_panel.php:2
 
 
2691
  #: application/modules/Impactradius/views/search_panel.php:2
2692
  #: application/modules/Kelkoo/views/search_panel.php:2
2693
  #: application/modules/Kelkoo/views/update_panel.php:2
@@ -2726,6 +2904,8 @@ msgstr ""
2726
  #: application/modules/Daisycon/views/update_panel.php:3
2727
  #: application/modules/Ebay/views/search_panel.php:3
2728
  #: application/modules/Ebay/views/update_panel.php:3
 
 
2729
  #: application/modules/Impactradius/views/search_panel.php:3
2730
  #: application/modules/Kelkoo/views/search_panel.php:3
2731
  #: application/modules/Kelkoo/views/update_panel.php:3
@@ -2765,10 +2945,10 @@ msgstr ""
2765
 
2766
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:61
2767
  #: application/modules/Aliexpress/AliexpressConfig.php:232
2768
- #: application/modules/Aliexpress2/Aliexpress2Config.php:173
2769
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:190
2770
  #: application/modules/Clickbank/ClickbankConfig.php:102
2771
- #: application/modules/Ebay/EbayConfig.php:141
2772
  #: application/modules/Flickr/FlickrConfig.php:59
2773
  #: application/modules/GdeSlon/GdeSlonConfig.php:79
2774
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:97
@@ -2786,7 +2966,7 @@ msgstr ""
2786
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:65
2787
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:105
2788
  #: application/modules/Aliexpress/AliexpressConfig.php:236
2789
- #: application/modules/Aliexpress2/Aliexpress2Config.php:177
2790
  #: application/modules/Bolcom/BolcomConfig.php:149
2791
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:194
2792
  #: application/modules/Envato/EnvatoConfig.php:157
@@ -2887,12 +3067,12 @@ msgid "The \"Results\" can not be more than 40."
2887
  msgstr ""
2888
 
2889
  #: application/modules/Aliexpress/AliexpressConfig.php:90
2890
- #: application/modules/Aliexpress2/Aliexpress2Config.php:135
2891
  msgid "Limit the search of goods by this category."
2892
  msgstr ""
2893
 
2894
  #: application/modules/Aliexpress/AliexpressConfig.php:93
2895
- #: application/modules/Aliexpress2/Aliexpress2Config.php:138
2896
  #: application/modules/Pepperjam/PepperjamConfig.php:101
2897
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:63
2898
  #: application/modules/Udemy/UdemyConfig.php:125
@@ -2915,7 +3095,7 @@ msgid "Currency"
2915
  msgstr ""
2916
 
2917
  #: application/modules/Aliexpress/AliexpressConfig.php:157
2918
- #: application/modules/Aliexpress2/Aliexpress2Config.php:125
2919
  #: application/modules/Clickbank/ClickbankConfig.php:129
2920
  #: application/modules/Udemy/UdemyConfig.php:96
2921
  msgid "Language"
@@ -3003,6 +3183,7 @@ msgstr ""
3003
  #: application/modules/Bolcom/views/update_panel.php:2
3004
  #: application/modules/Daisycon/views/update_panel.php:2
3005
  #: application/modules/Ebay/views/update_panel.php:2
 
3006
  #: application/modules/Kelkoo/views/update_panel.php:2
3007
  #: application/modules/Linkwise/views/update_panel.php:2
3008
  #: application/modules/Viglink/views/update_panel.php:2
@@ -3020,6 +3201,7 @@ msgstr ""
3020
  #: application/modules/Bolcom/views/update_panel.php:3
3021
  #: application/modules/Daisycon/views/update_panel.php:3
3022
  #: application/modules/Ebay/views/update_panel.php:3
 
3023
  #: application/modules/Kelkoo/views/update_panel.php:3
3024
  #: application/modules/Linkwise/views/update_panel.php:3
3025
  #: application/modules/Viglink/views/update_panel.php:3
@@ -3053,35 +3235,35 @@ msgid ""
3053
  "target=\"_blank\" href=\"%s\">here</a>."
3054
  msgstr ""
3055
 
3056
- #: application/modules/Aliexpress2/Aliexpress2Config.php:144
3057
  msgid "The price must be set in USD. Example: 99"
3058
  msgstr ""
3059
 
3060
- #: application/modules/Aliexpress2/Aliexpress2Config.php:154
3061
  msgid "The price must be set in USD. Example: 10"
3062
  msgstr ""
3063
 
3064
- #: application/modules/Aliexpress2/Aliexpress2Config.php:163
3065
  msgid "Platform"
3066
  msgstr ""
3067
 
3068
- #: application/modules/Aliexpress2/Aliexpress2Config.php:178
3069
  msgid "Price ASC"
3070
  msgstr ""
3071
 
3072
- #: application/modules/Aliexpress2/Aliexpress2Config.php:179
3073
  msgid "Price DESC"
3074
  msgstr ""
3075
 
3076
- #: application/modules/Aliexpress2/Aliexpress2Config.php:180
3077
  msgid "Volume ASC"
3078
  msgstr ""
3079
 
3080
- #: application/modules/Aliexpress2/Aliexpress2Config.php:181
3081
  msgid "Volume DESC"
3082
  msgstr ""
3083
 
3084
- #: application/modules/Aliexpress2/Aliexpress2Config.php:216
3085
  msgid "Save images locally"
3086
  msgstr ""
3087
 
@@ -3188,7 +3370,7 @@ msgstr ""
3188
  #: application/modules/Amazon/AmazonConfig.php:142
3189
  #: application/modules/Bolcom/BolcomConfig.php:145
3190
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:85
3191
- #: application/modules/Walmart/WalmartConfig.php:95
3192
  msgid "Sort"
3193
  msgstr ""
3194
 
@@ -3322,7 +3504,7 @@ msgid ""
3322
  msgstr ""
3323
 
3324
  #: application/modules/Amazon/AmazonConfig.php:269
3325
- #: application/modules/Ebay/EbayConfig.php:227
3326
  msgid "Free Shipping"
3327
  msgstr ""
3328
 
@@ -3395,6 +3577,16 @@ msgid ""
3395
  "parsing"
3396
  msgstr ""
3397
 
 
 
 
 
 
 
 
 
 
 
3398
  #: application/modules/Amazon/AmazonConfig_FREE.php:24
3399
  msgid "Your Access Key ID which uniquely identifies you."
3400
  msgstr ""
@@ -3515,7 +3707,7 @@ msgstr ""
3515
 
3516
  #: application/modules/Amazon/AmazonConfig_FREE.php:218
3517
  #: application/modules/Ozon/OzonConfig.php:123
3518
- #: application/modules/Walmart/WalmartConfig.php:150
3519
  msgid "Customer reviews"
3520
  msgstr ""
3521
 
@@ -3566,12 +3758,12 @@ msgid "Text only"
3566
  msgstr ""
3567
 
3568
  #: application/modules/Amazon/AmazonConfig_FREE.php:256
3569
- #: application/modules/Ebay/EbayConfig.php:359
3570
  msgid "Size of description"
3571
  msgstr ""
3572
 
3573
  #: application/modules/Amazon/AmazonConfig_FREE.php:257
3574
- #: application/modules/Ebay/EbayConfig.php:360
3575
  msgid "The maximum size of the item description. 0 - do not cut."
3576
  msgstr ""
3577
 
@@ -3592,6 +3784,16 @@ msgstr ""
3592
  msgid "Adds products from Amazon."
3593
  msgstr ""
3594
 
 
 
 
 
 
 
 
 
 
 
3595
  #: application/modules/Amazon/views/search_panel.php:19
3596
  msgid "Min. saving"
3597
  msgstr ""
@@ -3688,7 +3890,12 @@ msgstr ""
3688
  #: application/modules/Bolcom/BolcomConfig.php:45
3689
  #: application/modules/CjLinks/CjLinksConfig.php:31
3690
  #: application/modules/Daisycon/DaisyconConfig.php:32
 
 
3691
  #: application/modules/Envato/EnvatoConfig.php:31
 
 
 
3692
  #: application/modules/GoogleImages/GoogleImagesConfig.php:31
3693
  #: application/modules/GoogleImages/GoogleImagesConfig.php:45
3694
  #: application/modules/Impactradius/ImpactradiusConfig.php:32
@@ -3704,9 +3911,9 @@ msgstr ""
3704
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:33
3705
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:64
3706
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:79
3707
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:33
3708
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:47
3709
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:62
3710
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:33
3711
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:47
3712
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:62
@@ -3892,7 +4099,7 @@ msgstr ""
3892
  #: application/modules/Kelkoo/KelkooModule.php:30
3893
  #: application/modules/Pepperjam/PepperjamModule.php:29
3894
  #: application/modules/TradetrackerProducts/TradetrackerProductsModule.php:28
3895
- #: application/modules/Walmart/WalmartModule.php:31
3896
  msgid "Adds products from %s."
3897
  msgstr ""
3898
 
@@ -4288,7 +4495,7 @@ msgstr ""
4288
  #: application/modules/Bolcom/BolcomConfig.php:99
4289
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:141
4290
  #: application/modules/Udemy/UdemyConfig.php:121
4291
- #: application/modules/Walmart/WalmartConfig.php:85
4292
  msgid "Category"
4293
  msgstr ""
4294
 
@@ -4353,13 +4560,13 @@ msgid "The field \"Remote_auth\" can not be empty."
4353
  msgstr ""
4354
 
4355
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:47
4356
- #: application/modules/Ebay/EbayConfig.php:119
4357
  #: application/modules/GdeSlon/GdeSlonConfig.php:57
4358
  msgid "Field \"Results\" can not be more than 100."
4359
  msgstr ""
4360
 
4361
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:63
4362
- #: application/modules/Ebay/EbayConfig.php:135
4363
  #: application/modules/GdeSlon/GdeSlonConfig.php:73
4364
  msgid "Field \"Results for autoupdating\" can not be more than 100."
4365
  msgstr ""
@@ -4568,13 +4775,13 @@ msgid ""
4568
  "Restrict search results based on the type of currency (for example: EUR)."
4569
  msgstr ""
4570
 
4571
- #: application/modules/CjProducts/CjProductsModule.php:32
4572
  msgid ""
4573
  "Adds products from CJ.com. You must have approval from each program "
4574
  "separately."
4575
  msgstr ""
4576
 
4577
- #: application/modules/CjProducts/CjProductsModule.php:46
4578
  msgid ""
4579
  "CJ launched a new Product Search API. Please visit <a href=\"%s\">CJ Product "
4580
  "settings</a> to get started with the new API."
@@ -4687,72 +4894,74 @@ msgstr ""
4687
  msgid "Your Daisycon password."
4688
  msgstr ""
4689
 
4690
- #: application/modules/Ebay/EbayConfig.php:24
4691
- msgid ""
4692
- "API access key to Ebay. You can get it in <a href=\"http://developer.ebay."
4693
- "com/join\">eBay Developers Program</a>."
4694
  msgstr ""
4695
 
4696
- #: application/modules/Ebay/EbayConfig.php:32
4697
- msgid "Field \"Application ID (AppID)\" can't be empty"
 
 
 
4698
  msgstr ""
4699
 
4700
- #: application/modules/Ebay/EbayConfig.php:39
4701
  msgid ""
4702
  "This is connection with partner program EPN. Campaign ID is valid for all "
4703
  "programs which were approved for you on EPN. If you leave this field blank - "
4704
  "you will not get commissions from sales."
4705
  msgstr ""
4706
 
4707
- #: application/modules/Ebay/EbayConfig.php:48
4708
  msgid "EPN Custom ID (chanel)"
4709
  msgstr ""
4710
 
4711
- #: application/modules/Ebay/EbayConfig.php:49
4712
  msgid ""
4713
  "Any word, for example, name of domain. Custom ID will be included in sale "
4714
  "report on EPN, so, you can additionally check your traffic. "
4715
  msgstr ""
4716
 
4717
- #: application/modules/Ebay/EbayConfig.php:58
4718
  msgid "Ebay.in Affilite ID"
4719
  msgstr ""
4720
 
4721
- #: application/modules/Ebay/EbayConfig.php:59
4722
  msgid ""
4723
  "For eBay India's Affiliate program only. Go to <a href=\"https://ebayindia."
4724
  "hasoffers.com/publisher/#!/account\">Ebay Hasoffers Dashboard</a> and find "
4725
  "your Affiliate ID."
4726
  msgstr ""
4727
 
4728
- #: application/modules/Ebay/EbayConfig.php:70
4729
  msgid "Skimlinks Site ID"
4730
  msgstr ""
4731
 
4732
- #: application/modules/Ebay/EbayConfig.php:71
4733
  msgid ""
4734
  "Set this if you want to direct traffic over <a href=\"http://www.keywordrush."
4735
  "com/go/skimlinks\">Skimlinks</a>. Id for domain you can find <a href="
4736
  "\"https://hub.skimlinks.com/account\">here</a>."
4737
  msgstr ""
4738
 
4739
- #: application/modules/Ebay/EbayConfig.php:81
4740
  msgid "Viglink ID"
4741
  msgstr ""
4742
 
4743
- #: application/modules/Ebay/EbayConfig.php:82
4744
  msgid ""
4745
  "Set this if you want to direct traffic over <a href=\"http://www.keywordrush."
4746
  "com/go/viglink\">Viglink</a>. Id for domain you can find <a href=\"http://"
4747
  "www.viglink.com/install\">here</a>. Id is the same for all domains"
4748
  msgstr ""
4749
 
4750
- #: application/modules/Ebay/EbayConfig.php:91
4751
  #: application/modules/Ozon/OzonConfig.php:32
4752
  msgid "Deeplink"
4753
  msgstr ""
4754
 
4755
- #: application/modules/Ebay/EbayConfig.php:92
4756
  msgid ""
4757
  "Set Deeplink for one of CPA-networks. You can use parameter as "
4758
  "<em>partner_id=12345</em>, or make link as template, for example, "
@@ -4762,29 +4971,29 @@ msgid ""
4762
  "{{url_encoded}}"
4763
  msgstr ""
4764
 
4765
- #: application/modules/Ebay/EbayConfig.php:101
4766
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:69
4767
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:77
4768
  msgid "Locale"
4769
  msgstr ""
4770
 
4771
- #: application/modules/Ebay/EbayConfig.php:102
4772
  msgid ""
4773
  "Local site of Ebay. For each local site you must have separate registration "
4774
  "in affiliate program."
4775
  msgstr ""
4776
 
4777
- #: application/modules/Ebay/EbayConfig.php:149
4778
  msgid "Ending time"
4779
  msgstr ""
4780
 
4781
- #: application/modules/Ebay/EbayConfig.php:150
4782
  msgid ""
4783
  "Lifetime of lots in seconds. Only lots which will be closed not later than "
4784
  "the specified time will be chosen."
4785
  msgstr ""
4786
 
4787
- #: application/modules/Ebay/EbayConfig.php:160
4788
  msgid ""
4789
  "Id of category for searching. Id of categories you can find in URL of "
4790
  "category on <a href=\"http://www.ebay.com/sch/allcategories/all-categories"
@@ -4792,26 +5001,26 @@ msgid ""
4792
  "Example, \"2195,2218,20094\"."
4793
  msgstr ""
4794
 
4795
- #: application/modules/Ebay/EbayConfig.php:169
4796
  msgid "Search in description"
4797
  msgstr ""
4798
 
4799
- #: application/modules/Ebay/EbayConfig.php:170
4800
  msgid ""
4801
  "Include description of product in searching. This will take more time, than "
4802
  "searching only by title."
4803
  msgstr ""
4804
 
4805
- #: application/modules/Ebay/EbayConfig.php:176
4806
  #: application/modules/Linkshare/LinkshareConfig.php:69
4807
  msgid "Searching logic"
4808
  msgstr ""
4809
 
4810
- #: application/modules/Ebay/EbayConfig.php:195
4811
  msgid "Exclude category"
4812
  msgstr ""
4813
 
4814
- #: application/modules/Ebay/EbayConfig.php:196
4815
  msgid ""
4816
  "Id of category, which must be excluded while searching. Id of categories you "
4817
  "can find in URL of category on <a href=\"http://www.ebay.com/sch/"
@@ -4819,136 +5028,144 @@ msgid ""
4819
  "categories separated with comma. Example, \"2195,2218,20094\"."
4820
  msgstr ""
4821
 
4822
- #: application/modules/Ebay/EbayConfig.php:205
4823
  msgid "Minimal seller rating"
4824
  msgstr ""
4825
 
4826
- #: application/modules/Ebay/EbayConfig.php:213
4827
  msgid "Best Offer"
4828
  msgstr ""
4829
 
4830
- #: application/modules/Ebay/EbayConfig.php:214
4831
  msgid "Only \"Best Offer\" lots."
4832
  msgstr ""
4833
 
4834
- #: application/modules/Ebay/EbayConfig.php:220
4835
  msgid "Featured"
4836
  msgstr ""
4837
 
4838
- #: application/modules/Ebay/EbayConfig.php:221
4839
  msgid "Only \"Featured\" lots."
4840
  msgstr ""
4841
 
4842
- #: application/modules/Ebay/EbayConfig.php:228
4843
  msgid "Only lots with free delivery"
4844
  msgstr ""
4845
 
4846
- #: application/modules/Ebay/EbayConfig.php:234
4847
  msgid "Local Pickup"
4848
  msgstr ""
4849
 
4850
- #: application/modules/Ebay/EbayConfig.php:235
4851
  msgid "Only lots with \"local pickup\" option."
4852
  msgstr ""
4853
 
4854
- #: application/modules/Ebay/EbayConfig.php:241
4855
  msgid "Get It Fast"
4856
  msgstr ""
4857
 
4858
- #: application/modules/Ebay/EbayConfig.php:242
4859
  msgid "Only \"Get It Fast\" lots."
4860
  msgstr ""
4861
 
4862
- #: application/modules/Ebay/EbayConfig.php:248
4863
  msgid "Top-rated seller"
4864
  msgstr ""
4865
 
4866
- #: application/modules/Ebay/EbayConfig.php:249
4867
  msgid "Only products from Top-rated \"Top-rated\" vendors."
4868
  msgstr ""
4869
 
4870
- #: application/modules/Ebay/EbayConfig.php:255
4871
  msgid "Hide dublicates"
4872
  msgstr ""
4873
 
4874
- #: application/modules/Ebay/EbayConfig.php:256
4875
  msgid "Filter similar lots"
4876
  msgstr ""
4877
 
4878
- #: application/modules/Ebay/EbayConfig.php:262
4879
  msgid "Type of auction"
4880
  msgstr ""
4881
 
4882
- #: application/modules/Ebay/EbayConfig.php:275
4883
  msgid "Maximum bids"
4884
  msgstr ""
4885
 
4886
- #: application/modules/Ebay/EbayConfig.php:276
4887
  msgid "Example, 10"
4888
  msgstr ""
4889
 
4890
- #: application/modules/Ebay/EbayConfig.php:285
4891
  msgid "Minimum bids"
4892
  msgstr ""
4893
 
4894
- #: application/modules/Ebay/EbayConfig.php:286
4895
  msgid "Example, 3"
4896
  msgstr ""
4897
 
4898
- #: application/modules/Ebay/EbayConfig.php:296
4899
  msgid "Example, 300.50"
4900
  msgstr ""
4901
 
4902
- #: application/modules/Ebay/EbayConfig.php:306
4903
  msgid "Example, 10.98"
4904
  msgstr ""
4905
 
4906
- #: application/modules/Ebay/EbayConfig.php:315
4907
  msgid "Payment options"
4908
  msgstr ""
4909
 
4910
- #: application/modules/Ebay/EbayConfig.php:323
4911
  msgid "Available to"
4912
  msgstr ""
4913
 
4914
- #: application/modules/Ebay/EbayConfig.php:324
4915
  msgid ""
4916
  "Limits items to those available to the specified country only. Expects the "
4917
  "two-letter ISO 3166 country code."
4918
  msgstr ""
4919
 
4920
- #: application/modules/Ebay/EbayConfig.php:333
4921
  msgid "Located In"
4922
  msgstr ""
4923
 
4924
- #: application/modules/Ebay/EbayConfig.php:334
4925
  msgid ""
4926
  "Expects the two-letter ISO 3166 country code to indicate the country where "
4927
  "the item is located. Item filter AvailableTo cannot be used together with "
4928
  "item filter LocatedIn."
4929
  msgstr ""
4930
 
4931
- #: application/modules/Ebay/EbayConfig.php:343
4932
  msgid "Seller"
4933
  msgstr ""
4934
 
4935
- #: application/modules/Ebay/EbayConfig.php:344
4936
  msgid ""
4937
  "Specify one or more seller names separated by comma. Search results will "
4938
  "include items from the specified sellers only."
4939
  msgstr ""
4940
 
4941
- #: application/modules/Ebay/EbayConfig.php:352
4942
  msgid "Get description"
4943
  msgstr ""
4944
 
4945
- #: application/modules/Ebay/EbayConfig.php:353
4946
  msgid ""
4947
  "Get description of product. This takes more requests for Ebay API and slow "
4948
  "down searching. Description will be requested only for 20 first products for "
4949
  "one searching"
4950
  msgstr ""
4951
 
 
 
 
 
 
 
 
 
4952
  #: application/modules/Envato/EnvatoConfig.php:23
4953
  msgid ""
4954
  "You can <a href=\"https://build.envato.com/create-token/\">generate a "
@@ -4986,22 +5203,22 @@ msgid "Minimum rating to filter by."
4986
  msgstr ""
4987
 
4988
  #: application/modules/Envato/EnvatoConfig.php:113
4989
- #: application/modules/Walmart/WalmartConfig.php:119
4990
  msgid "Price min"
4991
  msgstr ""
4992
 
4993
  #: application/modules/Envato/EnvatoConfig.php:114
4994
- #: application/modules/Walmart/WalmartConfig.php:120
4995
  msgid "Minimum price to include."
4996
  msgstr ""
4997
 
4998
  #: application/modules/Envato/EnvatoConfig.php:122
4999
- #: application/modules/Walmart/WalmartConfig.php:129
5000
  msgid "Price max"
5001
  msgstr ""
5002
 
5003
  #: application/modules/Envato/EnvatoConfig.php:123
5004
- #: application/modules/Walmart/WalmartConfig.php:130
5005
  msgid "Maximum price to include."
5006
  msgstr ""
5007
 
@@ -5025,7 +5242,7 @@ msgstr ""
5025
 
5026
  #: application/modules/Envato/EnvatoConfig.php:153
5027
  #: application/modules/Udemy/UdemyConfig.php:106
5028
- #: application/modules/Walmart/WalmartConfig.php:109
5029
  msgid "Order"
5030
  msgstr ""
5031
 
@@ -5055,6 +5272,73 @@ msgid ""
5055
  "Market</a>."
5056
  msgstr ""
5057
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5058
  #: application/modules/Flickr/FlickrConfig.php:23
5059
  msgid ""
5060
  "The key for use Flickr API. You can get <a href=\"http://www.flickr.com/"
@@ -5078,7 +5362,7 @@ msgstr ""
5078
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:101
5079
  #: application/modules/Ozon/OzonConfig.php:68
5080
  #: application/modules/Viglink/ViglinkConfig.php:98
5081
- #: application/modules/Walmart/WalmartConfig.php:99
5082
  #: application/modules/Youtube/YoutubeConfig.php:65
5083
  #: application/modules/Youtube/views/search_panel.php:10
5084
  msgid "Relevance"
@@ -5816,7 +6100,7 @@ msgid "Belarus"
5816
  msgstr ""
5817
 
5818
  #: application/modules/Market/MarketConfig.php:82
5819
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:123
5820
  #: application/modules/TradetrackerCoupons/views/search_panel.php:4
5821
  msgid "Offers"
5822
  msgstr ""
@@ -5892,7 +6176,7 @@ msgstr ""
5892
  msgid "override custom settings"
5893
  msgstr ""
5894
 
5895
- #: application/modules/Offer/OfferModule.php:27
5896
  msgid "Manually create offer from any site with price update."
5897
  msgstr ""
5898
 
@@ -6069,6 +6353,13 @@ msgid "Antiques, vintage, art"
6069
  msgstr ""
6070
 
6071
  #: application/modules/Ozon/OzonConfig.php:116
 
 
 
 
 
 
 
6072
  msgid "Features"
6073
  msgstr ""
6074
 
@@ -6333,6 +6624,8 @@ msgstr ""
6333
 
6334
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:156
6335
  #: application/modules/SkimlinksCoupons/views/search_panel.php:8
 
 
6336
  msgid "Free shipping"
6337
  msgstr ""
6338
 
@@ -6387,12 +6680,12 @@ msgid "Sort order"
6387
  msgstr ""
6388
 
6389
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:189
6390
- #: application/modules/Walmart/WalmartConfig.php:113
6391
  msgid "Asc"
6392
  msgstr ""
6393
 
6394
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:190
6395
- #: application/modules/Walmart/WalmartConfig.php:114
6396
  msgid "Desc"
6397
  msgstr ""
6398
 
@@ -6442,7 +6735,7 @@ msgid ""
6442
  "program separately."
6443
  msgstr ""
6444
 
6445
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:25
6446
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:25
6447
  msgid ""
6448
  "You can find your Customer ID and Passphrase by logging onto your "
@@ -6451,7 +6744,7 @@ msgid ""
6451
  "need to request access first by clicking the \"request access\" link."
6452
  msgstr ""
6453
 
6454
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:54
6455
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:54
6456
  msgid ""
6457
  "Login into your TradeTracker control panel. Click on \"<a href=\"https://"
@@ -6460,45 +6753,45 @@ msgid ""
6460
  "Site ID."
6461
  msgstr ""
6462
 
6463
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:70
6464
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:78
6465
  msgid "Your TradeTracker locale."
6466
  msgstr ""
6467
 
6468
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:119
6469
  msgid "Items type"
6470
  msgstr ""
6471
 
6472
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:122
6473
  #: application/modules/TradetrackerCoupons/views/search_panel.php:3
6474
  msgid "Vouchers"
6475
  msgstr ""
6476
 
6477
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:124
6478
  #: application/modules/TradetrackerCoupons/views/search_panel.php:5
6479
  msgid "Text Links"
6480
  msgstr ""
6481
 
6482
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:130
6483
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:164
6484
  msgid "Banner Dimension ID"
6485
  msgstr ""
6486
 
6487
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:139
6488
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:146
6489
  msgid "Campaign ID"
6490
  msgstr ""
6491
 
6492
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:148
6493
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:155
6494
  msgid "Campaign Category ID"
6495
  msgstr ""
6496
 
6497
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:157
6498
  msgid "Unsubscribed campaigns"
6499
  msgstr ""
6500
 
6501
- #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:158
6502
  msgid "Include unsubscribed campaigns."
6503
  msgstr ""
6504
 
@@ -6730,10 +7023,6 @@ msgid ""
6730
  "or correctly structured image URL."
6731
  msgstr ""
6732
 
6733
- #: application/modules/Viglink/ViglinkConfig.php:135
6734
- msgid "Default currency"
6735
- msgstr ""
6736
-
6737
  #: application/modules/Viglink/ViglinkConfig.php:136
6738
  msgid ""
6739
  "Expects the three-letter ISO 4217 currency code. Used only for search by URL "
@@ -6747,7 +7036,7 @@ msgid ""
6747
  msgstr ""
6748
 
6749
  #: application/modules/Viglink/ViglinkConfig.php:155
6750
- #: application/modules/Walmart/WalmartConfig.php:89
6751
  msgid "[ All ]"
6752
  msgstr ""
6753
 
@@ -6773,40 +7062,40 @@ msgstr ""
6773
  msgid "Your Impact Radius Publisher ID."
6774
  msgstr ""
6775
 
6776
- #: application/modules/Walmart/WalmartConfig.php:37
6777
- msgid "If you do not have your API key, leave this field empty."
6778
- msgstr ""
6779
-
6780
- #: application/modules/Walmart/WalmartConfig.php:76
6781
  msgid ""
6782
  "Set this option if you want to send traffic through one of affiliate network "
6783
  "with Walmart support."
6784
  msgstr ""
6785
 
6786
- #: application/modules/Walmart/WalmartConfig.php:86
6787
- #: application/modules/Walmart/WalmartConfig.php:96
6788
  msgid "Sorting criteria."
6789
  msgstr ""
6790
 
6791
- #: application/modules/Walmart/WalmartConfig.php:102
6792
  msgid "Bestseller"
6793
  msgstr ""
6794
 
6795
- #: application/modules/Walmart/WalmartConfig.php:103
6796
  msgid "Customer Rating"
6797
  msgstr ""
6798
 
6799
- #: application/modules/Walmart/WalmartConfig.php:110
6800
  msgid ""
6801
  "Sort ordering criteria. This parameter is needed only for the sort types: "
6802
  "Price, Title, Customer Rating."
6803
  msgstr ""
6804
 
6805
- #: application/modules/Walmart/WalmartConfig.php:151
6806
  msgid ""
6807
  "Parse customer reviews. It takes more time. Don't check if you don't need it."
6808
  msgstr ""
6809
 
 
 
 
 
6810
  #: application/modules/Webgains/WebgainsConfig.php:23
6811
  msgid ""
6812
  "Check <a target=\"_blank\" href=\"%s\">how to create</a> a Product Feed."
@@ -6911,6 +7200,113 @@ msgid ""
6911
  "separately."
6912
  msgstr ""
6913
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6914
  #. Plugin Name of the plugin/theme
6915
  msgid "Content Egg<stripfree> Pro</stripfree>"
6916
  msgstr ""
1
+ # Copyright (C) 2021 Content Egg<stripfree> Pro</stripfree>
2
  # This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Content Egg<stripfree> Pro</stripfree> 8.9.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
7
+ "POT-Creation-Date: 2021-05-07 08:37:55+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2021-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
+ #: application/Autoupdate.php:86
16
  msgid "New version of %s plugin."
17
  msgstr ""
18
 
19
+ #: application/Autoupdate.php:87
20
  msgid ""
21
  "Please <a target=\"_blank\" href=\"%s\">find here</a> the releases notes."
22
  msgstr ""
31
 
32
  #: application/PriceMoversWidget.php:63 application/ProductSearchWidget.php:45
33
  #: application/admin/views/_metabox_results.php:29
34
+ #: application/components/ParserModuleConfig.php:65
35
  #: application/models/ProductModel.php:62
36
  #: application/modules/Coupon/views/metabox_module.php:52
37
  #: application/modules/Offer/views/metabox_module.php:59
38
+ #: application/modules/Walmart/WalmartConfig.php:104
39
  #: application/modules/Youtube/YoutubeConfig.php:66
40
  #: application/modules/Youtube/views/search_panel.php:11
41
  msgid "Title"
81
  #: application/PriceMoversWidget.php:99 application/PriceMoversWidget.php:100
82
  #: application/PriceMoversWidget.php:101 application/PriceMoversWidget.php:102
83
  #: application/PriceMoversWidget.php:103 application/PriceMoversWidget.php:104
84
+ #: application/helpers/TemplateHelper.php:775
85
  msgid "%d days ago"
86
  msgstr ""
87
 
88
  #: application/PriceMoversWidget.php:110
89
+ #: application/components/ParserModuleConfig.php:57
90
  msgid "Template"
91
  msgstr ""
92
 
98
  msgid "CE: Product Search"
99
  msgstr ""
100
 
101
+ #: application/WooIntegrator.php:544
102
+ #: application/templates/blocks/grid_row.php:43
103
+ #: application/templates/blocks/item_row.php:37
104
+ #: application/templates/blocks/list_row.php:33
105
+ #: application/templates/data_list.php:25
106
+ #: application/templates/data_price_tracker_alert.php:43
107
+ #: templates/block_offers_logo.php:55 templates/block_price_comparison.php:44
108
+ msgid "Last updated on %s"
109
+ msgstr ""
110
+
111
+ #: application/WooIntegrator.php:563
112
+ msgid "Price per unit: %s"
113
+ msgstr ""
114
+
115
  #: application/admin/AdminNotice.php:25
116
  msgid "Task for autoblogging is saved."
117
  msgstr ""
136
  msgid "License can't be deactivated. Write to support of plugin."
137
  msgstr ""
138
 
139
+ #: application/admin/AdminNotice.php:30
140
+ msgid "The license has been deactivated."
141
+ msgstr ""
142
+
143
  #: application/admin/AdminNotice.php:30
144
  msgid ""
145
+ "You must deactivate and delete Content Egg from your current domain to use "
146
+ "plugin on a new domain."
147
  msgstr ""
148
 
149
  #: application/admin/AeIntegrationConfig.php:33
150
  msgid "Affiliate Egg integration"
151
  msgstr ""
152
 
153
+ #: application/admin/AeIntegrationConfig.php:51
154
  msgid "Activate modules"
155
  msgstr ""
156
 
157
  #: application/admin/AutoblogController.php:77
158
+ #: application/admin/views/autoblog_index.php:38
159
  msgid "Autoblogging"
160
  msgstr ""
161
 
162
  #: application/admin/AutoblogController.php:78
163
  #: application/admin/views/autoblog_edit.php:10
164
+ #: application/admin/views/autoblog_index.php:39
165
  msgid "Add autoblogging"
166
  msgstr ""
167
 
191
  msgstr ""
192
 
193
  #: application/admin/AutoblogTable.php:67
194
+ #: application/admin/GeneralConfig.php:169
195
  #: application/admin/views/_metabox_autoblog.php:26
196
+ msgid "Enabled"
197
  msgstr ""
198
 
199
  #: application/admin/AutoblogTable.php:69
200
+ #: application/admin/GeneralConfig.php:170
201
+ #: application/admin/GeneralConfig.php:255
202
  #: application/admin/views/_metabox_autoblog.php:27
203
+ #: application/modules/GoogleImages/GoogleImagesConfig.php:171
204
+ msgid "Disabled"
205
  msgstr ""
206
 
207
  #: application/admin/AutoblogTable.php:83
240
  msgstr ""
241
 
242
  #: application/admin/EnvatoConfig.php:40 application/admin/EnvatoConfig.php:58
243
+ #: application/admin/GeneralConfig.php:372
244
+ #: application/modules/Feed/FeedConfig.php:59
245
  msgid "Field \"%s\" filled with wrong data."
246
  msgstr ""
247
 
265
  msgid "Error."
266
  msgstr ""
267
 
268
+ #: application/admin/GeneralConfig.php:37 application/admin/PluginAdmin.php:106
269
  msgid "Settings"
270
  msgstr ""
271
 
272
+ #: application/admin/GeneralConfig.php:148
273
  msgid "Website language"
274
  msgstr ""
275
 
276
+ #: application/admin/GeneralConfig.php:149
277
  msgid "The frontend language."
278
  msgstr ""
279
 
280
+ #: application/admin/GeneralConfig.php:153
281
+ #: application/admin/GeneralConfig.php:161
282
+ #: application/admin/GeneralConfig.php:173
283
+ #: application/admin/GeneralConfig.php:186
284
+ #: application/admin/GeneralConfig.php:288
285
+ #: application/admin/GeneralConfig.php:476
286
+ #: application/admin/GeneralConfig.php:488
287
  msgid "General settings"
288
  msgstr ""
289
 
290
+ #: application/admin/GeneralConfig.php:157
291
  msgid "What post types do you want to use for Content Egg?"
292
  msgstr ""
293
 
294
+ #: application/admin/GeneralConfig.php:164
295
  msgid "Cashback Tracker integration"
296
  msgstr ""
297
 
298
+ #: application/admin/GeneralConfig.php:165
299
  msgid "Integration with %s plugin."
300
  msgstr ""
301
 
302
+ #: application/admin/GeneralConfig.php:166
303
  msgid "Convert all affiliate links to trackable cashback links if possible."
304
  msgstr ""
305
 
306
+ #: application/admin/GeneralConfig.php:176
 
 
 
 
 
 
 
 
 
 
307
  msgid "External featured images"
308
  msgstr ""
309
 
310
+ #: application/admin/GeneralConfig.php:177
311
  msgid "Featured images from URL"
312
  msgstr ""
313
 
314
+ #: application/admin/GeneralConfig.php:181
315
  msgid "Disabled - internal image is used"
316
  msgstr ""
317
 
318
+ #: application/admin/GeneralConfig.php:182
319
  msgid "Enabled - internal image has priority"
320
  msgstr ""
321
 
322
+ #: application/admin/GeneralConfig.php:183
323
  msgid "Enabled - external image has priority"
324
  msgstr ""
325
 
326
+ #: application/admin/GeneralConfig.php:190
327
+ msgid ""
328
+ "<a target=\"_blank\" href=\"%s\">Qualify</a> your affiliate links to Google."
329
+ msgstr ""
330
+
331
+ #: application/admin/GeneralConfig.php:201
332
+ #: application/admin/GeneralConfig.php:419
333
+ #: application/admin/GeneralConfig.php:429
334
+ #: application/admin/GeneralConfig.php:439
335
+ #: application/admin/GeneralConfig.php:449
336
+ #: application/admin/GeneralConfig.php:461
337
+ #: application/admin/GeneralConfig.php:520
338
+ #: application/admin/GeneralConfig.php:529
339
+ #: application/admin/GeneralConfig.php:542
340
+ msgid "Frontend"
341
+ msgstr ""
342
+
343
+ #: application/admin/GeneralConfig.php:204
344
  msgid "Modules for synchronization"
345
  msgstr ""
346
 
347
+ #: application/admin/GeneralConfig.php:205
348
  msgid "Select modules for automatic synchronization with WooCommerce."
349
  msgstr ""
350
 
351
+ #: application/admin/GeneralConfig.php:209
352
+ #: application/admin/GeneralConfig.php:222
353
+ #: application/admin/GeneralConfig.php:229
354
+ #: application/admin/GeneralConfig.php:241
355
+ #: application/admin/GeneralConfig.php:248
356
+ #: application/admin/GeneralConfig.php:260
357
+ #: application/admin/GeneralConfig.php:270
358
+ #: application/admin/GeneralConfig.php:280
359
  msgid "WooCommerce"
360
  msgstr ""
361
 
362
+ #: application/admin/GeneralConfig.php:212
363
  msgid "Automatic synchronization"
364
  msgstr ""
365
 
366
+ #: application/admin/GeneralConfig.php:213
367
  msgid "How to choose product for automatic synchronization with WooCommerce."
368
  msgstr ""
369
 
370
+ #: application/admin/GeneralConfig.php:216
371
+ #: application/admin/views/_metabox_autoblog.php:415
372
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:152
373
  msgid "Minimum price"
374
  msgstr ""
375
 
376
+ #: application/admin/GeneralConfig.php:217
377
+ #: application/admin/views/_metabox_autoblog.php:416
378
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:142
379
  msgid "Maximum price"
380
  msgstr ""
381
 
382
+ #: application/admin/GeneralConfig.php:218
383
+ #: application/admin/views/_metabox_autoblog.php:417
384
  msgid "Random"
385
  msgstr ""
386
 
387
+ #: application/admin/GeneralConfig.php:219
388
  msgid "Manually only"
389
  msgstr ""
390
 
391
+ #: application/admin/GeneralConfig.php:225
392
+ msgid "Import product attributes"
393
  msgstr ""
394
 
395
+ #: application/admin/GeneralConfig.php:226
396
+ msgid "Import attributes automatically for synchronized product."
397
  msgstr ""
398
 
399
+ #: application/admin/GeneralConfig.php:232
400
  msgid "Global attributes filter"
401
  msgstr ""
402
 
403
+ #: application/admin/GeneralConfig.php:233
404
  msgid ""
405
  "How to create wocommerce attributes when synchronizing. Please, read "
406
  "documentation about them in our docs."
407
  msgstr ""
408
 
409
+ #: application/admin/GeneralConfig.php:236
410
  msgid "Default filter"
411
  msgstr ""
412
 
413
+ #: application/admin/GeneralConfig.php:237
414
  msgid "Whitelist attribute names"
415
  msgstr ""
416
 
417
+ #: application/admin/GeneralConfig.php:238
418
  msgid "Blacklist attribute names"
419
  msgstr ""
420
 
421
+ #: application/admin/GeneralConfig.php:244
422
  msgid "Attributes list"
423
  msgstr ""
424
 
425
+ #: application/admin/GeneralConfig.php:245
426
  msgid ""
427
  "Black / white list of woocommerce global (filterable) attributes. Enter a "
428
  "comma separated list."
429
  msgstr ""
430
 
431
+ #: application/admin/GeneralConfig.php:251
432
  msgid "Update date"
433
  msgstr ""
434
 
435
+ #: application/admin/GeneralConfig.php:252
436
  msgid "Show price update date for WooCommerce products."
437
  msgstr ""
438
 
439
+ #: application/admin/GeneralConfig.php:256
440
  msgid "Amazon only"
441
  msgstr ""
442
 
443
+ #: application/admin/GeneralConfig.php:257
444
  msgid "All modules"
445
  msgstr ""
446
 
447
+ #: application/admin/GeneralConfig.php:263
448
  msgid "Price per unit"
449
  msgstr ""
450
 
451
+ #: application/admin/GeneralConfig.php:264
452
  msgid "Show price per unit"
453
  msgstr ""
454
 
455
+ #: application/admin/GeneralConfig.php:266
456
  msgid "This option is available for Amazon and Ebay modules only."
457
  msgstr ""
458
 
459
+ #: application/admin/GeneralConfig.php:273
460
  msgid "Buy button text"
461
  msgstr ""
462
 
463
+ #: application/admin/GeneralConfig.php:274
464
  msgid "Overwrite the button text for external products."
465
  msgstr ""
466
 
467
+ #: application/admin/GeneralConfig.php:274
468
+ #: application/admin/GeneralConfig.php:433
469
  msgid "You can use tags: %MERCHANT%, %DOMAIN%, %PRICE%, %STOCK_STATUS%."
470
  msgstr ""
471
 
472
+ #: application/admin/GeneralConfig.php:283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
473
  msgid "Filter bots"
474
  msgstr ""
475
 
476
+ #: application/admin/GeneralConfig.php:284
477
  msgid "Bots can't activate parsers."
478
  msgstr ""
479
 
480
+ #: application/admin/GeneralConfig.php:285
481
  msgid ""
482
  "Updating price and keyword updating is made with page opening. If we "
483
  "determine update by useragent, and page is opened by one of known bots, no "
484
  "parsers will work in this case."
485
  msgstr ""
486
 
487
+ #: application/admin/GeneralConfig.php:291
488
+ #: application/admin/GeneralConfig.php:301
489
  msgid "Price history"
490
  msgstr ""
491
 
492
+ #: application/admin/GeneralConfig.php:292
493
  msgid "How long save price history. 0 - deactivate price history."
494
  msgstr ""
495
 
496
+ #: application/admin/GeneralConfig.php:301
497
  #: application/modules/Kelkoo/KelkooConfig.php:257
498
  msgid "The field \"%s\" can't be more than %d."
499
  msgstr ""
500
 
501
+ #: application/admin/GeneralConfig.php:304
502
+ #: application/admin/GeneralConfig.php:325
503
+ #: application/admin/GeneralConfig.php:339
504
+ #: application/admin/GeneralConfig.php:349
505
+ #: application/admin/GeneralConfig.php:360
506
+ #: application/admin/GeneralConfig.php:375
507
+ #: application/admin/GeneralConfig.php:384
508
+ #: application/admin/GeneralConfig.php:395
509
+ #: application/admin/GeneralConfig.php:405
510
  msgid "Price alerts"
511
  msgstr ""
512
 
513
+ #: application/admin/GeneralConfig.php:307
514
  msgid "Price drops period"
515
  msgstr ""
516
 
517
+ #: application/admin/GeneralConfig.php:308
518
  msgid "Used for Price Movers widget."
519
  msgstr ""
520
 
521
+ #: application/admin/GeneralConfig.php:311
522
  msgid "The last 1 day"
523
  msgstr ""
524
 
525
+ #: application/admin/GeneralConfig.php:312
526
+ #: application/admin/GeneralConfig.php:313
527
+ #: application/admin/GeneralConfig.php:314
528
+ #: application/admin/GeneralConfig.php:315
529
+ #: application/admin/GeneralConfig.php:316
530
+ #: application/admin/GeneralConfig.php:317
531
+ #: application/admin/GeneralConfig.php:318
532
+ #: application/admin/GeneralConfig.php:319
533
+ #: application/admin/GeneralConfig.php:320
534
+ #: application/admin/GeneralConfig.php:321
535
+ #: application/admin/GeneralConfig.php:322
536
  msgid "The last %d days"
537
  msgstr ""
538
 
539
+ #: application/admin/GeneralConfig.php:329
540
  msgid "Allow visitors to subscribe for price drop alert on email."
541
  msgstr ""
542
 
543
+ #: application/admin/GeneralConfig.php:330
544
  msgid "Active subscriptions now: <b>%d</b>"
545
  msgstr ""
546
 
547
+ #: application/admin/GeneralConfig.php:331
548
  msgid "Messages are sent for last %d days: <b>%d</b>"
549
  msgstr ""
550
 
551
+ #: application/admin/GeneralConfig.php:332
552
  msgid "Export: [ <a href=\"%s\">All</a> | <a href=\"%s\">Active</a> ]"
553
  msgstr ""
554
 
555
+ #: application/admin/GeneralConfig.php:334
556
  msgid "\"Price history\" option must be enabled."
557
  msgstr ""
558
 
559
+ #: application/admin/GeneralConfig.php:335
560
  msgid ""
561
  "Recommendation: Go to Settings - Privacy and select Privacy Policy page."
562
  msgstr ""
563
 
564
+ #: application/admin/GeneralConfig.php:342
565
+ msgid "Price alert mode"
566
+ msgstr ""
567
+
568
+ #: application/admin/GeneralConfig.php:345
569
+ msgid "Separate alerts for each product"
570
+ msgstr ""
571
+
572
+ #: application/admin/GeneralConfig.php:346
573
+ msgid "General alert for all products in a post"
574
+ msgstr ""
575
+
576
+ #: application/admin/GeneralConfig.php:352
577
+ msgid "From Name"
578
+ msgstr ""
579
+
580
+ #: application/admin/GeneralConfig.php:353
581
+ msgid ""
582
+ "This name will appear in the From Name column of emails sent from CE plugin."
583
+ msgstr ""
584
+
585
+ #: application/admin/GeneralConfig.php:363
586
+ msgid "From Email"
587
+ msgstr ""
588
+
589
+ #: application/admin/GeneralConfig.php:364
590
+ msgid "Customize the From Email address."
591
+ msgstr ""
592
+
593
+ #: application/admin/GeneralConfig.php:364
594
+ msgid ""
595
+ "To avoid your email being marked as spam, it is recommended your \"from\" "
596
+ "match your website."
597
+ msgstr ""
598
+
599
+ #: application/admin/GeneralConfig.php:378
600
+ msgid "Activation email template"
601
+ msgstr ""
602
+
603
+ #: application/admin/GeneralConfig.php:379
604
+ #: application/admin/GeneralConfig.php:392
605
+ msgid "Use the following tags: %s."
606
+ msgstr ""
607
+
608
+ #: application/admin/GeneralConfig.php:380
609
+ msgid "%s is required tag."
610
+ msgstr ""
611
+
612
+ #: application/admin/GeneralConfig.php:381
613
+ msgid "Use like %s."
614
+ msgstr ""
615
+
616
+ #: application/admin/GeneralConfig.php:391
617
+ msgid "Price alert email template"
618
+ msgstr ""
619
+
620
+ #: application/admin/GeneralConfig.php:402
621
+ msgid "Email signature"
622
+ msgstr ""
623
+
624
+ #: application/admin/GeneralConfig.php:412
625
  msgid "Button color"
626
  msgstr ""
627
 
628
+ #: application/admin/GeneralConfig.php:413
629
  msgid "Button color for default templates."
630
  msgstr ""
631
 
632
+ #: application/admin/GeneralConfig.php:422
633
  msgid "Price color"
634
  msgstr ""
635
 
636
+ #: application/admin/GeneralConfig.php:423
637
  msgid "Price color for default templates."
638
  msgstr ""
639
 
640
+ #: application/admin/GeneralConfig.php:432
641
  msgid "Buy now button text"
642
  msgstr ""
643
 
644
+ #: application/admin/GeneralConfig.php:433
645
+ #: application/admin/GeneralConfig.php:443
646
  msgid "It will be used instead of \"%s\"."
647
  msgstr ""
648
 
649
+ #: application/admin/GeneralConfig.php:442
650
  msgid "Coupon button text"
651
  msgstr ""
652
 
653
+ #: application/admin/GeneralConfig.php:452
654
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:200
655
  msgid "Stock status"
656
  msgstr ""
657
 
658
+ #: application/admin/GeneralConfig.php:455
659
  msgid "Show stock status"
660
  msgstr ""
661
 
662
+ #: application/admin/GeneralConfig.php:456
663
  msgid "Hide stock status"
664
  msgstr ""
665
 
666
+ #: application/admin/GeneralConfig.php:457
667
  msgid "Show OutOfStock status only"
668
  msgstr ""
669
 
670
+ #: application/admin/GeneralConfig.php:458
671
  msgid "Show InStock status only"
672
  msgstr ""
673
 
674
+ #: application/admin/GeneralConfig.php:464
675
+ #: application/admin/GeneralConfig.php:473
676
  msgid "Redirect prefix"
677
  msgstr ""
678
 
679
+ #: application/admin/GeneralConfig.php:465
680
  msgid "Custom prefix for local redirect links."
681
  msgstr ""
682
 
683
+ #: application/admin/GeneralConfig.php:473
684
  msgid "The field \"%s\" can contain only Latin letters and digits."
685
  msgstr ""
686
 
687
+ #: application/admin/GeneralConfig.php:479
688
  msgid "Out of Stock products"
689
  msgstr ""
690
 
691
+ #: application/admin/GeneralConfig.php:480
692
  msgid "How to deal with Out of Stock products."
693
  msgstr ""
694
 
695
+ #: application/admin/GeneralConfig.php:483
696
  msgid "Do nothing"
697
  msgstr ""
698
 
699
+ #: application/admin/GeneralConfig.php:484
700
  msgid "Hide price"
701
  msgstr ""
702
 
703
+ #: application/admin/GeneralConfig.php:485
704
  msgid "Hide product"
705
  msgstr ""
706
 
707
+ #: application/admin/GeneralConfig.php:491
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
708
  msgid "Search modules"
709
  msgstr ""
710
 
711
+ #: application/admin/GeneralConfig.php:492
712
  msgid "Select modules to search on frontend."
713
  msgstr ""
714
 
715
+ #: application/admin/GeneralConfig.php:493
716
  msgid "Do not select more than 1-2 modules."
717
  msgstr ""
718
 
719
+ #: application/admin/GeneralConfig.php:494
720
  msgid ""
721
  "Please note, AE modules work slowly and are not recommended for use as "
722
  "search modules."
723
  msgstr ""
724
 
725
+ #: application/admin/GeneralConfig.php:495
726
  msgid ""
727
  "Do not forget to add search widget or shorcode [content-egg-search-form]."
728
  msgstr ""
729
 
730
+ #: application/admin/GeneralConfig.php:499
731
+ #: application/admin/GeneralConfig.php:507
732
  msgid "Frontend search"
733
  msgstr ""
734
 
735
+ #: application/admin/GeneralConfig.php:502
736
  msgid "Search page template"
737
  msgstr ""
738
 
739
+ #: application/admin/GeneralConfig.php:503
740
  msgid "Template for body of search page."
741
  msgstr ""
742
 
743
+ #: application/admin/GeneralConfig.php:504
744
  msgid ""
745
  "You can use shortcodes, for example: [content-egg module=Amazon "
746
  "template=grid]"
747
  msgstr ""
748
 
749
+ #: application/admin/GeneralConfig.php:510
750
+ msgid "Merchant logos"
751
+ msgstr ""
752
+
753
+ #: application/admin/GeneralConfig.php:511
754
+ msgid "You can add your own custom merchant logos."
755
+ msgstr ""
756
+
757
+ #: application/admin/GeneralConfig.php:523
758
+ msgid "Amazon disclaimer"
759
+ msgstr ""
760
+
761
+ #: application/admin/GeneralConfig.php:532
762
+ msgid "Frontend texts"
763
+ msgstr ""
764
+
765
+ #: application/admin/GeneralConfig.php:535
766
+ msgid "Translation"
767
+ msgstr ""
768
+
769
+ #: application/admin/GeneralConfig.php:582
770
+ msgid "Domain name"
771
+ msgstr ""
772
+
773
+ #: application/admin/GeneralConfig.php:585
774
+ msgid "Logo URL"
775
+ msgstr ""
776
+
777
+ #: application/admin/GeneralConfig.php:642
778
+ msgid "Translated string"
779
+ msgstr ""
780
+
781
  #: application/admin/ImportExportController.php:28
782
  msgid "Import/Export"
783
  msgstr ""
794
  msgid "Invalid format."
795
  msgstr ""
796
 
797
+ #: application/admin/LicConfig.php:38
798
  #: application/admin/views/lic_settings.php:4
799
  #: application/modules/BingImages/BingImagesConfig.php:88
800
  msgid "License"
801
  msgstr ""
802
 
803
+ #: application/admin/LicConfig.php:45
804
  msgid "License key"
805
  msgstr ""
806
 
807
+ #: application/admin/LicConfig.php:46
808
+ msgid "Please enter your license key."
 
 
 
 
809
  msgstr ""
810
 
811
+ #: application/admin/LicConfig.php:53
812
  msgid "The \"License key\" can not be empty"
813
  msgstr ""
814
 
815
+ #: application/admin/LicConfig.php:57
816
  msgid "Invalid license key"
817
  msgstr ""
818
 
819
+ #: application/admin/LicConfig.php:62
820
  msgid "License key is not accepted. Make sure that you use actual key."
821
  msgstr ""
822
 
823
+ #: application/admin/LicConfig.php:64
824
  msgid ""
825
  "If you have correct key, but it's not accepted, this means that your server "
826
  "blocks external connections or there is any other reason that your server "
827
  "doesn't allow to connect to keywordrush.com site."
828
  msgstr ""
829
 
830
+ #: application/admin/LicConfig.php:66
831
  msgid "Please, write about this to your hosting provider."
832
  msgstr ""
833
 
834
+ #: application/admin/LicConfig.php:68
835
  msgid ""
836
  "If you need our help, write to <a href=\"http://www.keywordrush.com/en/"
837
  "contact\">our support</a>."
845
  msgid " ago"
846
  msgstr ""
847
 
848
+ #: application/admin/PluginAdmin.php:92
849
  msgid "Are you sure?"
850
  msgstr ""
851
 
852
  #: application/admin/PrefillController.php:37
853
+ #: application/admin/views/prefill.php:116
854
  msgid "Future"
855
  msgstr ""
856
 
864
  msgstr ""
865
 
866
  #: application/admin/PrefillController.php:132
867
+ msgid "Unable to find keyword."
868
  msgstr ""
869
 
870
  #: application/admin/PrefillController.php:141
926
  msgstr ""
927
 
928
  #: application/admin/ProductTable.php:222
929
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:165
930
  #: application/modules/BingImages/BingImagesConfig.php:92
931
  #: application/modules/BingImages/BingImagesConfig.php:108
932
  #: application/modules/BingImages/BingImagesConfig.php:121
968
  msgid "Task status"
969
  msgstr ""
970
 
971
+ #: application/admin/views/_metabox_autoblog.php:34
972
+ msgid "Recurrency"
973
  msgstr ""
974
 
975
+ #: application/admin/views/_metabox_autoblog.php:38
 
 
 
 
976
  msgid "Every hour"
977
  msgstr ""
978
 
979
+ #: application/admin/views/_metabox_autoblog.php:39
980
  msgid "5 times in a day"
981
  msgstr ""
982
 
983
+ #: application/admin/views/_metabox_autoblog.php:40
984
  msgid "Twice daily"
985
  msgstr ""
986
 
987
+ #: application/admin/views/_metabox_autoblog.php:41
988
  msgid "Once a day"
989
  msgstr ""
990
 
991
+ #: application/admin/views/_metabox_autoblog.php:42
992
  msgid "Each three days"
993
  msgstr ""
994
 
995
+ #: application/admin/views/_metabox_autoblog.php:43
996
  msgid "Once a week"
997
  msgstr ""
998
 
999
+ #: application/admin/views/_metabox_autoblog.php:44
1000
  msgid "Once in 2 weeks"
1001
  msgstr ""
1002
 
1003
+ #: application/admin/views/_metabox_autoblog.php:46
1004
+ msgid "How often autoblogging will run this task."
1005
  msgstr ""
1006
 
1007
+ #: application/admin/views/_metabox_autoblog.php:52
1008
+ #: application/admin/views/_metabox_autoblog.php:152
1009
  #: application/models/AutoblogModel.php:81
1010
  msgid "Keywords"
1011
  msgstr ""
1012
 
1013
+ #: application/admin/views/_metabox_autoblog.php:60
1014
  msgid "Uppercase First Letter for Each Word"
1015
  msgstr ""
1016
 
1017
+ #: application/admin/views/_metabox_autoblog.php:61
1018
  msgid "Uppercase first letter"
1019
  msgstr ""
1020
 
1021
+ #: application/admin/views/_metabox_autoblog.php:62
1022
  msgid "Sort with alpha order"
1023
  msgstr ""
1024
 
1025
+ #: application/admin/views/_metabox_autoblog.php:63
1026
  msgid "All words are inactive"
1027
  msgstr ""
1028
 
1029
+ #: application/admin/views/_metabox_autoblog.php:64
1030
  msgid "All words are active"
1031
  msgstr ""
1032
 
1033
+ #: application/admin/views/_metabox_autoblog.php:65
1034
  msgid "Clear list"
1035
  msgstr ""
1036
 
1037
+ #: application/admin/views/_metabox_autoblog.php:69
1038
  msgid "Total"
1039
  msgstr ""
1040
 
1041
+ #: application/admin/views/_metabox_autoblog.php:75
1042
  msgid "Hints"
1043
  msgstr ""
1044
 
1045
+ #: application/admin/views/_metabox_autoblog.php:90
1046
  msgid "Yandex"
1047
  msgstr ""
1048
 
1049
+ #: application/admin/views/_metabox_autoblog.php:91
1050
  msgid "Yandex.Market"
1051
  msgstr ""
1052
 
1053
+ #: application/admin/views/_metabox_autoblog.php:94
1054
  msgid "Start enter keyword"
1055
  msgstr ""
1056
 
1057
+ #: application/admin/views/_metabox_autoblog.php:136
1058
  msgid "Each keyword from separate line."
1059
  msgstr ""
1060
 
1061
+ #: application/admin/views/_metabox_autoblog.php:137
1062
  msgid "One keyword is one post."
1063
  msgstr ""
1064
 
1065
+ #: application/admin/views/_metabox_autoblog.php:138
1066
  msgid "Handled keywords are marked by [brackets]."
1067
  msgstr ""
1068
 
1069
+ #: application/admin/views/_metabox_autoblog.php:139
1070
  msgid "When all keywords will be processed, task will stop."
1071
  msgstr ""
1072
 
1073
+ #: application/admin/views/_metabox_autoblog.php:142
1074
+ #: application/admin/views/_metabox_autoblog.php:180
1075
  msgid "You can also use separate keywords for some modules:"
1076
  msgstr ""
1077
 
1078
+ #: application/admin/views/_metabox_autoblog.php:160
1079
  msgid "Two format are supported: "
1080
  msgstr ""
1081
 
1082
+ #: application/admin/views/_metabox_autoblog.php:163
1083
  msgid "CSV files in format:"
1084
  msgstr ""
1085
 
1086
+ #: application/admin/views/_metabox_autoblog.php:172
1087
  msgid "Divider - \";\""
1088
  msgstr ""
1089
 
1090
+ #: application/admin/views/_metabox_autoblog.php:173
1091
  msgid "For each category will be created separate task for autoblog."
1092
  msgstr ""
1093
 
1094
+ #: application/admin/views/_metabox_autoblog.php:175
1095
  msgid "TXT files:"
1096
  msgstr ""
1097
 
1098
+ #: application/admin/views/_metabox_autoblog.php:176
1099
  msgid "Simple text file with list of keywords (each word from separate line)."
1100
  msgstr ""
1101
 
1102
+ #: application/admin/views/_metabox_autoblog.php:178
1103
  msgid "File must be in UTF-8"
1104
  msgstr ""
1105
 
1106
+ #: application/admin/views/_metabox_autoblog.php:191
1107
+ msgid "Process keywords"
1108
  msgstr ""
1109
 
1110
+ #: application/admin/views/_metabox_autoblog.php:196
1111
+ msgid "How many keywords to process at a time."
 
 
1112
  msgstr ""
1113
 
1114
+ #: application/admin/views/_metabox_autoblog.php:201
1115
+ msgid "Post title template "
1116
  msgstr ""
1117
 
1118
+ #: application/admin/views/_metabox_autoblog.php:208
 
 
 
 
1119
  msgid "Use tags:"
1120
  msgstr ""
1121
 
1122
+ #: application/admin/views/_metabox_autoblog.php:209
1123
  msgid "For display data of plugin use special tags, for example:"
1124
  msgstr ""
1125
 
1126
+ #: application/admin/views/_metabox_autoblog.php:210
1127
  msgid "You also can set index number for access to data of plugin"
1128
  msgstr ""
1129
 
1130
+ #: application/admin/views/_metabox_autoblog.php:211
1131
  msgid ""
1132
  "You can use \"formulas\" with synonyms, of which one will be selected with a "
1133
  "random option, for example, {Discount|Sale|Cheap}."
1134
  msgstr ""
1135
 
1136
+ #: application/admin/views/_metabox_autoblog.php:218
1137
+ msgid "Post body template "
1138
  msgstr ""
1139
 
1140
+ #: application/admin/views/_metabox_autoblog.php:224
1141
+ msgid "You can use CE shortcodes like:"
1142
  msgstr ""
1143
 
1144
+ #: application/admin/views/_metabox_autoblog.php:226
1145
+ #: application/admin/views/_metabox_autoblog.php:436
1146
+ #: application/admin/views/_metabox_autoblog.php:478
 
 
 
 
1147
  msgid ""
1148
  "\"Formulas\", and also all tags from title template, will also work here."
1149
  msgstr ""
1150
 
1151
+ #: application/admin/views/_metabox_autoblog.php:233
1152
  msgid "Only selected modules"
1153
  msgstr ""
1154
 
1155
+ #: application/admin/views/_metabox_autoblog.php:244
1156
  msgid "Run only selected modules for this task."
1157
  msgstr ""
1158
 
1159
+ #: application/admin/views/_metabox_autoblog.php:245
1160
  msgid "If you don't select any modules, all active modules will be used."
1161
  msgstr ""
1162
 
1163
+ #: application/admin/views/_metabox_autoblog.php:252
1164
  msgid "Exclude modules"
1165
  msgstr ""
1166
 
1167
+ #: application/admin/views/_metabox_autoblog.php:263
1168
  msgid "Chosen modules will not run in this configuration. "
1169
  msgstr ""
1170
 
1171
+ #: application/admin/views/_metabox_autoblog.php:270
1172
+ #: application/admin/views/prefill.php:113
1173
  msgid "Post status"
1174
  msgstr ""
1175
 
1176
+ #: application/admin/views/_metabox_autoblog.php:282
1177
+ #: application/admin/views/prefill.php:101
1178
  msgid "Post type"
1179
  msgstr ""
1180
 
1181
+ #: application/admin/views/_metabox_autoblog.php:300
 
 
 
 
 
 
 
 
1182
  #: application/modules/Aliexpress/AliexpressConfig.php:89
1183
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:133
1184
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:89
1185
  #: application/modules/CjLinks/CjLinksConfig.php:135
1186
  #: application/modules/Clickbank/ClickbankConfig.php:69
1187
+ #: application/modules/Ebay/EbayConfig.php:170
1188
  #: application/modules/Linkshare/LinkshareConfig.php:106
1189
  #: application/modules/Ozon/OzonConfig.php:93
1190
  #: application/modules/Pepperjam/PepperjamConfig.php:97
1194
  msgid "Category "
1195
  msgstr ""
1196
 
1197
+ #: application/admin/views/_metabox_autoblog.php:307
1198
  msgid "Create Automatically"
1199
  msgstr ""
1200
 
1201
+ #: application/admin/views/_metabox_autoblog.php:318
1202
+ msgid "Default category."
1203
  msgstr ""
1204
 
1205
+ #: application/admin/views/_metabox_autoblog.php:320
1206
  msgid ""
1207
  "\"Create Automatically\" means, that categories will be created based on "
1208
  "data of CSV file with keywords and categories."
1209
  msgstr ""
1210
 
1211
+ #: application/admin/views/_metabox_autoblog.php:328
1212
+ msgid "User"
1213
+ msgstr ""
1214
+
1215
+ #: application/admin/views/_metabox_autoblog.php:335
1216
+ msgid "This user will be author of posts."
1217
+ msgstr ""
1218
+
1219
+ #: application/admin/views/_metabox_autoblog.php:340
1220
  msgid "Dynamic categories"
1221
  msgstr ""
1222
 
1223
+ #: application/admin/views/_metabox_autoblog.php:344
1224
  msgid "Do not create"
1225
  msgstr ""
1226
 
1227
+ #: application/admin/views/_metabox_autoblog.php:345
1228
  msgid "Create category"
1229
  msgstr ""
1230
 
1231
+ #: application/admin/views/_metabox_autoblog.php:346
1232
  msgid "Create nested categories"
1233
  msgstr ""
1234
 
1235
+ #: application/admin/views/_metabox_autoblog.php:348
1236
  msgid ""
1237
  "Create a category automatically, if the main product has a category data."
1238
  msgstr ""
1239
 
1240
+ #: application/admin/views/_metabox_autoblog.php:354
1241
  msgid "Minimum modules required"
1242
  msgstr ""
1243
 
1244
+ #: application/admin/views/_metabox_autoblog.php:359
1245
  msgid "Post will not be published if no content for such number of modules."
1246
  msgstr ""
1247
 
1248
+ #: application/admin/views/_metabox_autoblog.php:365
1249
  msgid "Minimum reviews required"
1250
  msgstr ""
1251
 
1252
+ #: application/admin/views/_metabox_autoblog.php:370
1253
  msgid ""
1254
  "Post will not be published if there are no user reviews. This option works "
1255
  "only for AE modules."
1256
  msgstr ""
1257
 
1258
+ #: application/admin/views/_metabox_autoblog.php:376
1259
  #: application/components/AffiliateParserModuleConfig.php:20
1260
  msgid "Update by keyword"
1261
  msgstr ""
1262
 
1263
+ #: application/admin/views/_metabox_autoblog.php:387
1264
  msgid ""
1265
  "For selected modules, the current keyword will be used as a keyword for "
1266
  "autoupdate. Data of the module will be updated periodically In accordance "
1267
  "with the configuration of the lifetime of the cache."
1268
  msgstr ""
1269
 
1270
+ #: application/admin/views/_metabox_autoblog.php:393
1271
  msgid "Required modules"
1272
  msgstr ""
1273
 
1274
+ #: application/admin/views/_metabox_autoblog.php:404
1275
  msgid "Post will not be publicized if no results for these modules."
1276
  msgstr ""
1277
 
1278
+ #: application/admin/views/_metabox_autoblog.php:411
1279
  msgid "Main product"
1280
  msgstr ""
1281
 
1282
+ #: application/admin/views/_metabox_autoblog.php:420
1283
  msgid "How to choose \"main\" product?"
1284
  msgstr ""
1285
 
1286
+ #: application/admin/views/_metabox_autoblog.php:421
1287
  msgid "Then you can use tags:"
1288
  msgstr ""
1289
 
1290
+ #: application/admin/views/_metabox_autoblog.php:428
1291
  msgid "Tags"
1292
  msgstr ""
1293
 
1294
+ #: application/admin/views/_metabox_autoblog.php:435
1295
  msgid "Comma separated list of tags."
1296
  msgstr ""
1297
 
1298
+ #: application/admin/views/_metabox_autoblog.php:443
1299
+ #: application/modules/Ebay/EbayConfig.php:194
1300
  msgid "Product condition"
1301
  msgstr ""
1302
 
1303
+ #: application/admin/views/_metabox_autoblog.php:447
1304
  #: application/modules/Amazon/AmazonConfig.php:208
1305
  #: application/modules/Amazon/AmazonConfig.php:233
1306
  #: application/modules/Amazon/AmazonConfig.php:294
1321
  msgid "Any"
1322
  msgstr ""
1323
 
1324
+ #: application/admin/views/_metabox_autoblog.php:448
1325
  #: application/admin/views/module_index.php:16
1326
  #: application/modules/Amazon/AmazonConfig.php:234
1327
  #: application/modules/Twitter/TwitterConfig.php:118
1328
  #: application/modules/Twitter/views/search_panel.php:3
1329
+ #: application/modules/Walmart/WalmartConfig.php:107
1330
  msgid "New"
1331
  msgstr ""
1332
 
1333
+ #: application/admin/views/_metabox_autoblog.php:449
1334
  #: application/modules/Amazon/AmazonConfig.php:235
1335
  msgid "Used"
1336
  msgstr ""
1337
 
1338
+ #: application/admin/views/_metabox_autoblog.php:450
1339
  #: application/modules/Amazon/AmazonConfig.php:237
1340
  msgid "Refurbished"
1341
  msgstr ""
1342
 
1343
+ #: application/admin/views/_metabox_autoblog.php:451
1344
  msgid "Open box, no signs (Ebay only)"
1345
  msgstr ""
1346
 
1347
+ #: application/admin/views/_metabox_autoblog.php:452
1348
  msgid "Seller refurbished (Ebay only)"
1349
  msgstr ""
1350
 
1351
+ #: application/admin/views/_metabox_autoblog.php:453
1352
  msgid "For parts or not working (Ebay only)"
1353
  msgstr ""
1354
 
1355
+ #: application/admin/views/_metabox_autoblog.php:456
1356
  msgid "This parameter is supported only by the following modules: Amazon, Ebay"
1357
  msgstr ""
1358
 
1359
+ #: application/admin/views/_metabox_autoblog.php:464
1360
+ #: application/admin/views/prefill.php:131
1361
  msgid "Add custom fields"
1362
  msgstr ""
1363
 
1364
+ #: application/admin/views/_metabox_autoblog.php:469
1365
  msgid "Custom Field"
1366
  msgstr ""
1367
 
1368
+ #: application/admin/views/_metabox_autoblog.php:474
1369
  msgid "Value"
1370
  msgstr ""
1371
 
1379
  msgstr ""
1380
 
1381
  #: application/admin/views/_metabox_results.php:33
1382
+ #: application/helpers/TemplateHelper.php:367
1383
  #: application/models/ProductModel.php:64
1384
  #: application/modules/GdeSlon/GdeSlonConfig.php:84
1385
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:90
1386
  #: application/modules/Offer/views/metabox_module.php:91
1387
  #: application/modules/Udemy/UdemyConfig.php:155
1388
+ #: application/modules/Walmart/WalmartConfig.php:103
1389
+ #: application/templates/data_price_tracker_alert.php:39
1390
  msgid "Price"
1391
  msgstr ""
1392
 
1416
  msgstr ""
1417
 
1418
  #: application/admin/views/_metabox_results.php:77
1419
+ #: application/admin/views/_promo_box.php:71
1420
  #: application/modules/Coupon/views/metabox_module.php:111
1421
  #: application/modules/Offer/views/metabox_module.php:124
1422
  msgid "Go to "
1427
  msgid "Last updated:"
1428
  msgstr ""
1429
 
1430
+ #: application/admin/views/_metabox_results.php:89
1431
  #: application/modules/Coupon/views/metabox_module.php:112
1432
  #: application/modules/Offer/views/metabox_module.php:136
1433
  msgid "Remove"
1442
  msgid "Coupon code:"
1443
  msgstr ""
1444
 
1445
+ #: application/admin/views/_promo_box.php:67
 
 
 
 
 
 
 
 
1446
  msgid "Activate plugin"
1447
  msgstr ""
1448
 
1449
+ #: application/admin/views/_promo_box.php:68
1450
  #: application/admin/views/envato_activation.php:5
1451
  msgid ""
1452
  "In order to receive all benefits of Contennt Egg, you need to activate your "
1453
  "copy of the plugin."
1454
  msgstr ""
1455
 
1456
+ #: application/admin/views/_promo_box.php:69
1457
  #: application/admin/views/envato_activation.php:6
1458
  msgid ""
1459
  "By activating Contennt Egg license you will unlock premium options - direct "
1474
 
1475
  #: application/admin/views/ae_integration.php:15
1476
  msgid ""
1477
+ "Here is the <a href=\"http://www.keywordrush.com/res/ae_supported_shops.txt"
1478
  "\">full list</a> of Affiliate Egg supported shops."
1479
  msgstr ""
1480
 
1517
  msgid "Working... Please wait..."
1518
  msgstr ""
1519
 
1520
+ #: application/admin/views/autoblog_index.php:24
1521
  msgid "Deleted tasks for autoblogging: "
1522
  msgstr ""
1523
 
1524
+ #: application/admin/views/autoblog_index.php:27
1525
  msgid "Autoblogging finished tasks"
1526
  msgstr ""
1527
 
1528
+ #: application/admin/views/autoblog_index.php:45
1529
  msgid "You can create automatic creating of posts with autoblogging"
1530
  msgstr ""
1531
 
1559
  msgid "Import"
1560
  msgstr ""
1561
 
1562
+ #: application/admin/views/lic_settings.php:13
1563
+ msgid "Activate license"
1564
  msgstr ""
1565
 
1566
+ #: application/admin/views/lic_settings.php:17
1567
+ #: application/admin/views/lic_settings.php:25
1568
  msgid "Deactivate license"
1569
  msgstr ""
1570
 
1571
+ #: application/admin/views/lic_settings.php:18
1572
+ msgid "You can transfer your license to a new domain."
1573
  msgstr ""
1574
 
1575
+ #: application/admin/views/lic_settings.php:19
1576
  msgid ""
1577
  "After deactivating license, you must deactivate and delete Content Egg from "
1578
+ "your current domain."
1579
  msgstr ""
1580
 
1581
  #: application/admin/views/metabox_general.php:9
1668
  msgid "Deprecated"
1669
  msgstr ""
1670
 
1671
+ #: application/admin/views/module_index.php:30
1672
+ #: application/admin/views/module_settings.php:8
1673
  msgid "Module Settings"
1674
  msgstr ""
1675
 
1676
+ #: application/admin/views/module_index.php:56
1677
  msgid "Product modules"
1678
  msgstr ""
1679
 
1680
+ #: application/admin/views/module_index.php:67
1681
  msgid "Affiliate Egg modules"
1682
  msgstr ""
1683
 
1684
+ #: application/admin/views/module_index.php:75
1685
+ msgid "Feed modules"
1686
+ msgstr ""
1687
+
1688
+ #: application/admin/views/module_index.php:82
1689
  msgid "Coupon modules"
1690
  msgstr ""
1691
 
1692
+ #: application/admin/views/module_index.php:93
1693
  msgid "Content modules"
1694
  msgstr ""
1695
 
1696
+ #: application/admin/views/module_settings.php:32
1697
+ msgid "Add new feed module"
1698
+ msgstr ""
1699
+
1700
+ #: application/admin/views/module_settings.php:34
1701
  msgid "%s Settings"
1702
  msgstr ""
1703
 
1704
+ #: application/admin/views/module_settings.php:36
1705
+ msgid "Documentation"
1706
  msgstr ""
1707
 
1708
+ #: application/admin/views/module_settings.php:43
1709
+ #: application/admin/views/module_settings.php:51
1710
+ #: application/admin/views/module_settings.php:62
1711
  msgid "WARNING:"
1712
  msgstr ""
1713
 
1714
+ #: application/admin/views/module_settings.php:44
1715
  msgid "Amazon PA-API v4 <a target=\"_blank\" href=\"%s\"> is deprecated</a>."
1716
  msgstr ""
1717
 
1718
+ #: application/admin/views/module_settings.php:45
1719
  msgid ""
1720
  "Only <a target=\"_blank\" href=\"%s\">Content Egg Pro</a> has support for "
1721
  "the new PA-API v5."
1722
  msgstr ""
1723
 
1724
+ #: application/admin/views/module_settings.php:46
1725
  msgid "Please"
1726
  msgstr ""
1727
 
1728
+ #: application/admin/views/module_settings.php:46
1729
  msgid "read more..."
1730
  msgstr ""
1731
 
1732
+ #: application/admin/views/module_settings.php:52
1733
  msgid "This module is deprecated"
1734
  msgstr ""
1735
 
1736
+ #: application/admin/views/module_settings.php:53
1737
  msgid "what does this mean"
1738
  msgstr ""
1739
 
1740
+ #: application/admin/views/module_settings.php:63
1741
  msgid "This module cannot be activated!"
1742
  msgstr ""
1743
 
1744
+ #: application/admin/views/module_settings.php:64
1745
  msgid "Please fix the following error(s):"
1746
  msgstr ""
1747
 
1748
+ #: application/admin/views/module_settings.php:94
1749
  msgid "Last feed import: %s."
1750
  msgstr ""
1751
 
1752
+ #: application/admin/views/module_settings.php:95
1753
  msgid "Total products: %d."
1754
  msgstr ""
1755
 
1756
+ #: application/admin/views/module_settings.php:97
1757
  msgid "Your unzipped feed must be smaller than this."
1758
  msgstr ""
1759
 
1760
+ #: application/admin/views/module_settings.php:97
1761
  msgid "WordPress memory limit: %s"
1762
  msgstr ""
1763
 
1764
+ #: application/admin/views/module_settings.php:101
1765
  msgid "Last error: %s"
1766
  msgstr ""
1767
 
1768
+ #: application/admin/views/module_settings.php:106
1769
+ msgid "Export product URLs"
1770
+ msgstr ""
1771
+
1772
+ #: application/admin/views/module_settings.php:108
1773
+ msgid "Export product EANs"
1774
+ msgstr ""
1775
+
1776
+ #: application/admin/views/module_settings.php:110
1777
+ msgid "Export dublicate EANs"
1778
+ msgstr ""
1779
+
1780
  #: application/admin/views/prefill.php:15
1781
  msgid "This extension will fill module's data for all existed posts."
1782
  msgstr ""
1789
  msgid "Delay"
1790
  msgstr ""
1791
 
1792
+ #: application/admin/views/prefill.php:39
1793
  msgid "Delay in seconds between each post prefill."
1794
  msgstr ""
1795
 
1796
+ #: application/admin/views/prefill.php:44
1797
  msgid "Add data for module"
1798
  msgstr ""
1799
 
1800
+ #: application/admin/views/prefill.php:54
1801
  msgid "Keyword source"
1802
  msgstr ""
1803
 
1804
+ #: application/admin/views/prefill.php:57
1805
+ msgid "Post title"
1806
  msgstr ""
1807
 
1808
+ #: application/admin/views/prefill.php:58
1809
+ msgid "Keyword density"
1810
  msgstr ""
1811
 
1812
+ #: application/admin/views/prefill.php:59
1813
  msgid "Post tags"
1814
  msgstr ""
1815
 
1816
+ #: application/admin/views/prefill.php:60
1817
  msgid "Arbitrary custom field"
1818
  msgstr ""
1819
 
1820
+ #: application/admin/views/prefill.php:62
1821
+ msgid "autoupdate keyword"
1822
  msgstr ""
1823
 
1824
+ #: application/admin/views/prefill.php:65
1825
+ msgid "EAN"
1826
  msgstr ""
1827
 
1828
  #: application/admin/views/prefill.php:68
1829
+ msgid "Set the name of a custom field"
1830
+ msgstr ""
1831
+
1832
+ #: application/admin/views/prefill.php:73
1833
  msgid "Autoupdate"
1834
  msgstr ""
1835
 
1836
+ #: application/admin/views/prefill.php:75
1837
  msgid "Add Keyword for the automatic update"
1838
  msgstr ""
1839
 
1840
+ #: application/admin/views/prefill.php:76
1841
  msgid "Only for those modules, which have autoupdate function."
1842
  msgstr ""
1843
 
1844
+ #: application/admin/views/prefill.php:81
1845
  msgid "Number of words"
1846
  msgstr ""
1847
 
1848
+ #: application/admin/views/prefill.php:88
1849
  msgid "Maximum words for one search query."
1850
  msgstr ""
1851
 
1852
+ #: application/admin/views/prefill.php:93
1853
  msgid "\"Minus\" words"
1854
  msgstr ""
1855
 
1856
+ #: application/admin/views/prefill.php:96
1857
  msgid ""
1858
  "Remove these words from keyword. You can set several minus words/phrases "
1859
  "with commas."
1860
  msgstr ""
1861
 
1862
+ #: application/admin/views/prefill.php:108
1863
  msgid "You can set all supported post types in General settings -> Post Types."
1864
  msgstr ""
1865
 
1866
+ #: application/admin/views/prefill.php:134
1867
  msgid "Custom Field %d"
1868
  msgstr ""
1869
 
1870
+ #: application/admin/views/prefill.php:135
1871
  msgid "Value %d"
1872
  msgstr ""
1873
 
1874
+ #: application/admin/views/prefill.php:138
1875
  msgid "You can use tags: %s."
1876
  msgstr ""
1877
 
1878
+ #: application/admin/views/prefill.php:145
1879
  #: application/models/AutoblogModel.php:79
1880
  msgid "Total posts"
1881
  msgstr ""
1882
 
1883
+ #: application/admin/views/prefill.php:149
1884
  msgid "Start"
1885
  msgstr ""
1886
 
1887
+ #: application/admin/views/prefill.php:150
1888
+ msgid "Restart"
1889
  msgstr ""
1890
 
1891
+ #: application/admin/views/prefill.php:151
1892
  msgid "Stop"
1893
  msgstr ""
1894
 
1912
  msgid "Content Egg Settings"
1913
  msgstr ""
1914
 
1915
+ #: application/components/AffiliateFeedParserModule.php:292
1916
+ msgid "Product import is in progress"
1917
  msgstr ""
1918
 
1919
+ #: application/components/AffiliateFeedParserModule.php:372
1920
  msgid ""
1921
  "Your data feed is too large and cannot be imported. Use a smaller feed or "
1922
  "increase <a target=\"_blank\" href=\"%s\">WP_MAX_MEMORY_LIMIT</a>."
1944
  #: application/modules/CjProducts/CjProductsConfig.php:64
1945
  #: application/modules/Clickbank/ClickbankConfig.php:37
1946
  #: application/modules/Daisycon/DaisyconConfig.php:64
1947
+ #: application/modules/Ebay/EbayConfig.php:120
1948
  #: application/modules/Envato/EnvatoConfig.php:58
1949
  #: application/modules/Flickr/FlickrConfig.php:37
1950
  #: application/modules/Flipkart/FlipkartConfig.php:72
1977
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:85
1978
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:37
1979
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:37
1980
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:95
1981
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:106
1982
  #: application/modules/Twitter/TwitterConfig.php:82
1983
  #: application/modules/Udemy/UdemyConfig.php:66
1984
  #: application/modules/Viglink/ViglinkConfig.php:52
1985
  #: application/modules/VkNews/VkNewsConfig.php:22
1986
+ #: application/modules/Walmart/WalmartConfig.php:48
1987
  #: application/modules/Youtube/YoutubeConfig.php:37
1988
  #: application/modules/Zanox/ZanoxConfig.php:47
1989
  msgid "Results"
2008
  #: application/modules/CjProducts/CjProductsConfig.php:65
2009
  #: application/modules/Clickbank/ClickbankConfig.php:38
2010
  #: application/modules/Daisycon/DaisyconConfig.php:65
2011
+ #: application/modules/Ebay/EbayConfig.php:121
2012
  #: application/modules/Envato/EnvatoConfig.php:59
2013
  #: application/modules/Flipkart/FlipkartConfig.php:73
2014
  #: application/modules/GdeSlon/GdeSlonConfig.php:48
2026
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:86
2027
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:38
2028
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:38
2029
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:96
2030
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:107
2031
  #: application/modules/Udemy/UdemyConfig.php:67
2032
  #: application/modules/Viglink/ViglinkConfig.php:53
2033
+ #: application/modules/Walmart/WalmartConfig.php:49
2034
  #: application/modules/Zanox/ZanoxConfig.php:48
2035
  msgid "Number of results for one search query."
2036
  msgstr ""
2072
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:111
2073
  #: application/modules/Udemy/UdemyConfig.php:76
2074
  #: application/modules/Udemy/UdemyConfig.php:91
2075
+ #: application/modules/Walmart/WalmartConfig.php:58
2076
+ #: application/modules/Walmart/WalmartConfig.php:73
2077
  msgid "The field \"%s\" can not be more than %d."
2078
  msgstr ""
2079
 
2111
  #: application/modules/CjProducts/CjProductsConfig.php:75
2112
  #: application/modules/Clickbank/ClickbankConfig.php:54
2113
  #: application/modules/Daisycon/DaisyconConfig.php:80
2114
+ #: application/modules/Ebay/EbayConfig.php:137
2115
  #: application/modules/Envato/EnvatoConfig.php:74
2116
  #: application/modules/Flipkart/FlipkartConfig.php:89
2117
  #: application/modules/GdeSlon/GdeSlonConfig.php:64
2129
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:102
2130
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:49
2131
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:49
2132
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:107
2133
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:118
2134
  #: application/modules/Udemy/UdemyConfig.php:82
2135
  #: application/modules/Viglink/ViglinkConfig.php:63
2136
+ #: application/modules/Walmart/WalmartConfig.php:64
2137
  #: application/modules/Zanox/ZanoxConfig.php:64
2138
  msgid "Number of results for automatic updates and autoblogging."
2139
  msgstr ""
2159
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:130
2160
  #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:167
2161
  #: application/modules/Aliexpress/AliexpressConfig.php:260
2162
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:214
2163
  #: application/modules/Amazon/AmazonConfig.php:303
2164
  #: application/modules/Amazon/AmazonConfig_FREE.php:274
2165
  #: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:218
2170
  #: application/modules/CjProducts/CjProductsConfig.php:113
2171
  #: application/modules/Coupon/CouponConfig.php:22
2172
  #: application/modules/Daisycon/DaisyconConfig.php:101
2173
+ #: application/modules/Ebay/EbayConfig.php:381
2174
  #: application/modules/Envato/EnvatoConfig.php:219
2175
  #: application/modules/Flickr/FlickrConfig.php:106
2176
  #: application/modules/Flipkart/FlipkartConfig.php:104
2194
  #: application/modules/QwantImages/QwantImagesConfig.php:64
2195
  #: application/modules/Shareasale/ShareasaleConfig.php:109
2196
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:159
2197
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:171
2198
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:182
2199
  #: application/modules/Twitter/TwitterConfig.php:127
2200
  #: application/modules/Udemy/UdemyConfig.php:215
2201
  #: application/modules/Viglink/ViglinkConfig.php:141
2202
  #: application/modules/VkNews/VkNewsConfig.php:44
2203
+ #: application/modules/Walmart/WalmartConfig.php:167
2204
  #: application/modules/Zanox/ZanoxConfig.php:154
2205
  msgid "Save images"
2206
  msgstr ""
2219
  #: application/modules/CjProducts/CjProductsConfig.php:114
2220
  #: application/modules/Coupon/CouponConfig.php:23
2221
  #: application/modules/Daisycon/DaisyconConfig.php:102
2222
+ #: application/modules/Ebay/EbayConfig.php:382
2223
  #: application/modules/Envato/EnvatoConfig.php:220
2224
  #: application/modules/Flickr/FlickrConfig.php:107
2225
  #: application/modules/Flipkart/FlipkartConfig.php:105
2242
  #: application/modules/QwantImages/QwantImagesConfig.php:65
2243
  #: application/modules/Shareasale/ShareasaleConfig.php:110
2244
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:160
2245
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:172
2246
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:183
2247
  #: application/modules/Twitter/TwitterConfig.php:128
2248
  #: application/modules/Udemy/UdemyConfig.php:216
2249
  #: application/modules/Viglink/ViglinkConfig.php:142
2250
  #: application/modules/VkNews/VkNewsConfig.php:45
2251
+ #: application/modules/Walmart/WalmartConfig.php:168
2252
  #: application/modules/Zanox/ZanoxConfig.php:155
2253
  msgid "Save images on server"
2254
  msgstr ""
2255
 
2256
+ #: application/components/AffiliateFeedParserModuleConfig.php:66
2257
  #: application/components/AffiliateParserModuleConfig.php:52
2258
+ msgid "Cron"
2259
  msgstr ""
2260
 
2261
  #: application/components/AffiliateParserModuleConfig.php:21
2279
  msgstr ""
2280
 
2281
  #: application/components/AffiliateParserModuleConfig.php:51
2282
+ msgid "Page view"
2283
  msgstr ""
2284
 
2285
  #: application/components/AffiliateParserModuleConfig.php:53
2286
+ msgid "Page view + Cron"
2287
  msgstr ""
2288
 
2289
  #: application/components/ExternalFeaturedImage.php:120
2290
  msgid "External featured image"
2291
  msgstr ""
2292
 
2293
+ #: application/components/LManager.php:138
2294
+ msgid "License status: <span class=\"egg-label egg-label-%s\">%s</span>."
2295
+ msgstr ""
2296
+
2297
+ #: application/components/LManager.php:140
2298
+ msgid "You are receiving automatic updates."
2299
+ msgstr ""
2300
+
2301
+ #: application/components/LManager.php:141
2302
+ msgid "Expires at %s (%d days left)."
2303
+ msgstr ""
2304
+
2305
+ #: application/components/LManager.php:146
2306
+ #: application/components/LManager.php:174
2307
+ msgid "Extend now"
2308
+ msgstr ""
2309
+
2310
+ #: application/components/LManager.php:148
2311
+ #: application/components/LManager.php:176
2312
+ msgid "with a %d%% discount"
2313
+ msgstr ""
2314
+
2315
+ #: application/components/LManager.php:166
2316
+ #: application/components/LManager.php:194
2317
+ msgid "Dismiss"
2318
+ msgstr ""
2319
+
2320
+ #: application/components/LManager.php:168
2321
+ msgid "License expires soon"
2322
+ msgstr ""
2323
+
2324
+ #: application/components/LManager.php:169
2325
+ msgid "Your %s license expires at %s (%d days left)."
2326
+ msgstr ""
2327
+
2328
+ #: application/components/LManager.php:170
2329
+ msgid ""
2330
+ "You will not receive automatic updates, bug fixes, and technical support."
2331
+ msgstr ""
2332
+
2333
+ #: application/components/LManager.php:197
2334
+ msgid "License expired"
2335
+ msgstr ""
2336
+
2337
+ #: application/components/LManager.php:198
2338
+ msgid "Your %s license expired on %s."
2339
+ msgstr ""
2340
+
2341
+ #: application/components/LManager.php:199
2342
+ msgid ""
2343
+ "You are not receiving automatic updates, bug fixes, and technical support."
2344
+ msgstr ""
2345
+
2346
+ #: application/components/LManager.php:203
2347
+ msgid "Renew now"
2348
+ msgstr ""
2349
+
2350
+ #: application/components/LManager.php:212
2351
+ msgid "License mismatch"
2352
+ msgstr ""
2353
+
2354
+ #: application/components/LManager.php:213
2355
+ msgid "Your %s license doesn't match your current domain."
2356
+ msgstr ""
2357
+
2358
+ #: application/components/LManager.php:214
2359
+ msgid ""
2360
+ "If you wish to continue using the plugin then you must <a target=\"_blank\" "
2361
+ "href=\"%s\">revoke</a> the license and then <a href=\"%s\">reactivate</a> it "
2362
+ "again or <a target=\"_blank\" href=\"%s\">buy a new license</a>."
2363
+ msgstr ""
2364
+
2365
+ #: application/components/LManager.php:223
2366
+ msgid "Check again"
2367
+ msgstr ""
2368
+
2369
  #: application/components/ModuleConfig.php:61
2370
  msgid "settings"
2371
  msgstr ""
2379
  msgstr ""
2380
 
2381
  #: application/components/ParserModuleConfig.php:34
2382
+ msgid "Auto-embedding"
2383
  msgstr ""
2384
 
2385
+ #: application/components/ParserModuleConfig.php:37
2386
+ msgid "Shortcodes only"
 
 
2387
  msgstr ""
2388
 
2389
  #: application/components/ParserModuleConfig.php:38
2394
  msgid "At the beginning of the post"
2395
  msgstr ""
2396
 
2397
+ #: application/components/ParserModuleConfig.php:45
 
 
 
 
2398
  msgid "Priority"
2399
  msgstr ""
2400
 
2401
+ #: application/components/ParserModuleConfig.php:46
2402
  msgid ""
2403
  "Priority sets order of modules in post. 0 - is the most highest priority."
2404
  msgstr ""
2405
 
2406
+ #: application/components/ParserModuleConfig.php:47
2407
  msgid "Also it applied to price sorting."
2408
  msgstr ""
2409
 
2410
+ #: application/components/ParserModuleConfig.php:58
2411
  msgid "Default template"
2412
  msgstr ""
2413
 
2414
+ #: application/components/ParserModuleConfig.php:66
2415
  msgid "Templates may use title on data output."
2416
  msgstr ""
2417
 
2418
+ #: application/components/ParserModuleConfig.php:76
2419
  msgid "Automatically set Featured image for post"
2420
  msgstr ""
2421
 
2422
+ #: application/components/ParserModuleConfig.php:79
2423
  msgid "Don't set"
2424
  msgstr ""
2425
 
2426
+ #: application/components/ParserModuleConfig.php:80
2427
  msgid "First image"
2428
  msgstr ""
2429
 
2430
+ #: application/components/ParserModuleConfig.php:81
2431
  msgid "Second image"
2432
  msgstr ""
2433
 
2434
+ #: application/components/ParserModuleConfig.php:82
2435
  msgid "Random image"
2436
  msgstr ""
2437
 
2438
+ #: application/components/ParserModuleConfig.php:83
2439
  msgid "Last image"
2440
  msgstr ""
2441
 
2442
+ #: application/components/ParserModuleConfig.php:89
2443
  msgid "Redirect"
2444
  msgstr ""
2445
 
2446
+ #: application/components/ParserModuleConfig.php:90
2447
  msgid "Make links with local 301 redirect"
2448
  msgstr ""
2449
 
2450
+ #: application/helpers/TemplateHelper.php:771
2451
+ msgid "today"
2452
+ msgstr ""
2453
+
2454
+ #: application/helpers/TemplateHelper.php:777
2455
+ msgid "%d day ago"
2456
+ msgstr ""
2457
+
2458
+ #: application/helpers/TemplateHelper.php:884
2459
+ msgid "in stock"
2460
+ msgstr ""
2461
+
2462
+ #: application/helpers/TemplateHelper.php:886
2463
+ msgid "out of stock"
2464
+ msgstr ""
2465
+
2466
  #: application/models/AutoblogModel.php:76
2467
  msgid "Date of creation"
2468
  msgstr ""
2479
  msgid "Last error"
2480
  msgstr ""
2481
 
2482
+ #: application/models/AutoblogModel.php:210
2483
  msgid ""
2484
  "Required module %s will not run. The module is not configured or deleted."
2485
  msgstr ""
2486
 
2487
+ #: application/models/AutoblogModel.php:277
2488
  msgid "Data was not found for required module %s."
2489
  msgstr ""
2490
 
2491
+ #: application/models/AutoblogModel.php:284
2492
  msgid ""
2493
  "It does not reach the desired amount of data. Minimum required modules: %d."
2494
  msgstr ""
2495
 
2496
+ #: application/models/AutoblogModel.php:300
2497
  msgid "Total reviews found: %d. Minimum reviews required: %d."
2498
  msgstr ""
2499
 
2500
+ #: application/models/AutoblogModel.php:390
2501
  msgid "Post can't be created. Unknown error."
2502
  msgstr ""
2503
 
2550
  #: application/modules/CjLinks/CjLinksConfig.php:73
2551
  #: application/modules/CjProducts/CjProductsConfig.php:74
2552
  #: application/modules/Clickbank/ClickbankConfig.php:53
2553
+ #: application/modules/Ebay/EbayConfig.php:136
2554
  #: application/modules/Envato/EnvatoConfig.php:73
2555
  #: application/modules/Flipkart/FlipkartConfig.php:88
2556
  #: application/modules/GdeSlon/GdeSlonConfig.php:63
2563
  #: application/modules/Shareasale/ShareasaleConfig.php:78
2564
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:48
2565
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:48
2566
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:106
2567
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:117
2568
  #: application/modules/Udemy/UdemyConfig.php:81
2569
  #: application/modules/Viglink/ViglinkConfig.php:62
2570
+ #: application/modules/Walmart/WalmartConfig.php:63
2571
  #: application/modules/Zanox/ZanoxConfig.php:63
2572
+ msgid "Results for updates and autoblogging"
2573
  msgstr ""
2574
 
2575
  #: application/modules/AE/AEConfig.php:64
2576
+ #: application/modules/Walmart/WalmartConfig.php:160
2577
  msgid "Reviews as post comments"
2578
  msgstr ""
2579
 
2580
  #: application/modules/AE/AEConfig.php:65
2581
+ #: application/modules/Walmart/WalmartConfig.php:161
2582
  msgid "Save user reviews as post comments."
2583
  msgstr ""
2584
 
2631
  #: application/modules/Bolcom/templates/data_item_simple.php:9
2632
  #: application/modules/CjProducts/templates/data_item_simple.php:9
2633
  #: application/modules/Daisycon/templates/data_item_simple.php:9
2634
+ #: application/modules/Feed/templates/data_item_simple.php:9
2635
  #: application/modules/Flipkart/templates/data_item_simple.php:9
2636
  #: application/modules/GdeSlon/templates/data_item_simple.php:9
2637
  #: application/modules/Impactradius/templates/data_item_simple.php:9
2733
  #: application/modules/Amazon/AmazonConfig_FREE.php:172
2734
  #: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:169
2735
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:130
2736
+ #: application/modules/Ebay/EbayConfig.php:316
2737
  #: application/modules/Impactradius/ImpactradiusConfig.php:81
2738
  #: application/modules/Kelkoo/KelkooConfig.php:163
2739
  #: application/modules/Linkwise/LinkwiseConfig.php:143
2750
  #: application/modules/Amazon/AmazonConfig_FREE.php:182
2751
  #: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:179
2752
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:140
2753
+ #: application/modules/Ebay/EbayConfig.php:306
2754
  #: application/modules/Impactradius/ImpactradiusConfig.php:91
2755
  #: application/modules/Kelkoo/KelkooConfig.php:173
2756
  #: application/modules/Linkwise/LinkwiseConfig.php:153
2788
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:166
2789
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:189
2790
  #: application/modules/VkNews/VkNewsConfig.php:51
2791
+ #: application/modules/Walmart/WalmartConfig.php:142
2792
  #: application/modules/Youtube/YoutubeConfig.php:87
2793
  #: application/modules/Zanox/ZanoxConfig.php:161
2794
  msgid "Trim description"
2821
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:167
2822
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:190
2823
  #: application/modules/VkNews/VkNewsConfig.php:52
2824
+ #: application/modules/Walmart/WalmartConfig.php:143
2825
  #: application/modules/Youtube/YoutubeConfig.php:88
2826
  #: application/modules/Zanox/ZanoxConfig.php:162
2827
  msgid "Description size in characters (0 - do not cut)"
2864
  #: application/modules/Daisycon/views/update_panel.php:2
2865
  #: application/modules/Ebay/views/search_panel.php:2
2866
  #: application/modules/Ebay/views/update_panel.php:2
2867
+ #: application/modules/Feed/views/search_panel.php:2
2868
+ #: application/modules/Feed/views/update_panel.php:2
2869
  #: application/modules/Impactradius/views/search_panel.php:2
2870
  #: application/modules/Kelkoo/views/search_panel.php:2
2871
  #: application/modules/Kelkoo/views/update_panel.php:2
2904
  #: application/modules/Daisycon/views/update_panel.php:3
2905
  #: application/modules/Ebay/views/search_panel.php:3
2906
  #: application/modules/Ebay/views/update_panel.php:3
2907
+ #: application/modules/Feed/views/search_panel.php:3
2908
+ #: application/modules/Feed/views/update_panel.php:3
2909
  #: application/modules/Impactradius/views/search_panel.php:3
2910
  #: application/modules/Kelkoo/views/search_panel.php:3
2911
  #: application/modules/Kelkoo/views/update_panel.php:3
2945
 
2946
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:61
2947
  #: application/modules/Aliexpress/AliexpressConfig.php:232
2948
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:172
2949
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:190
2950
  #: application/modules/Clickbank/ClickbankConfig.php:102
2951
+ #: application/modules/Ebay/EbayConfig.php:152
2952
  #: application/modules/Flickr/FlickrConfig.php:59
2953
  #: application/modules/GdeSlon/GdeSlonConfig.php:79
2954
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:97
2966
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:65
2967
  #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:105
2968
  #: application/modules/Aliexpress/AliexpressConfig.php:236
2969
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:176
2970
  #: application/modules/Bolcom/BolcomConfig.php:149
2971
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:194
2972
  #: application/modules/Envato/EnvatoConfig.php:157
3067
  msgstr ""
3068
 
3069
  #: application/modules/Aliexpress/AliexpressConfig.php:90
3070
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:134
3071
  msgid "Limit the search of goods by this category."
3072
  msgstr ""
3073
 
3074
  #: application/modules/Aliexpress/AliexpressConfig.php:93
3075
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:137
3076
  #: application/modules/Pepperjam/PepperjamConfig.php:101
3077
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:63
3078
  #: application/modules/Udemy/UdemyConfig.php:125
3095
  msgstr ""
3096
 
3097
  #: application/modules/Aliexpress/AliexpressConfig.php:157
3098
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:124
3099
  #: application/modules/Clickbank/ClickbankConfig.php:129
3100
  #: application/modules/Udemy/UdemyConfig.php:96
3101
  msgid "Language"
3183
  #: application/modules/Bolcom/views/update_panel.php:2
3184
  #: application/modules/Daisycon/views/update_panel.php:2
3185
  #: application/modules/Ebay/views/update_panel.php:2
3186
+ #: application/modules/Feed/views/update_panel.php:2
3187
  #: application/modules/Kelkoo/views/update_panel.php:2
3188
  #: application/modules/Linkwise/views/update_panel.php:2
3189
  #: application/modules/Viglink/views/update_panel.php:2
3201
  #: application/modules/Bolcom/views/update_panel.php:3
3202
  #: application/modules/Daisycon/views/update_panel.php:3
3203
  #: application/modules/Ebay/views/update_panel.php:3
3204
+ #: application/modules/Feed/views/update_panel.php:3
3205
  #: application/modules/Kelkoo/views/update_panel.php:3
3206
  #: application/modules/Linkwise/views/update_panel.php:3
3207
  #: application/modules/Viglink/views/update_panel.php:3
3235
  "target=\"_blank\" href=\"%s\">here</a>."
3236
  msgstr ""
3237
 
3238
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:143
3239
  msgid "The price must be set in USD. Example: 99"
3240
  msgstr ""
3241
 
3242
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:153
3243
  msgid "The price must be set in USD. Example: 10"
3244
  msgstr ""
3245
 
3246
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:162
3247
  msgid "Platform"
3248
  msgstr ""
3249
 
3250
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:177
3251
  msgid "Price ASC"
3252
  msgstr ""
3253
 
3254
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:178
3255
  msgid "Price DESC"
3256
  msgstr ""
3257
 
3258
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:179
3259
  msgid "Volume ASC"
3260
  msgstr ""
3261
 
3262
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:180
3263
  msgid "Volume DESC"
3264
  msgstr ""
3265
 
3266
+ #: application/modules/Aliexpress2/Aliexpress2Config.php:215
3267
  msgid "Save images locally"
3268
  msgstr ""
3269
 
3370
  #: application/modules/Amazon/AmazonConfig.php:142
3371
  #: application/modules/Bolcom/BolcomConfig.php:145
3372
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:85
3373
+ #: application/modules/Walmart/WalmartConfig.php:98
3374
  msgid "Sort"
3375
  msgstr ""
3376
 
3504
  msgstr ""
3505
 
3506
  #: application/modules/Amazon/AmazonConfig.php:269
3507
+ #: application/modules/Ebay/EbayConfig.php:238
3508
  msgid "Free Shipping"
3509
  msgstr ""
3510
 
3577
  "parsing"
3578
  msgstr ""
3579
 
3580
+ #: application/modules/Amazon/AmazonConfig.php:350
3581
+ msgid "Forced Associate Tag"
3582
+ msgstr ""
3583
+
3584
+ #: application/modules/Amazon/AmazonConfig.php:351
3585
+ msgid ""
3586
+ "Forced replacement of tag parameter in all links. Usually you should leave "
3587
+ "this field blank!"
3588
+ msgstr ""
3589
+
3590
  #: application/modules/Amazon/AmazonConfig_FREE.php:24
3591
  msgid "Your Access Key ID which uniquely identifies you."
3592
  msgstr ""
3707
 
3708
  #: application/modules/Amazon/AmazonConfig_FREE.php:218
3709
  #: application/modules/Ozon/OzonConfig.php:123
3710
+ #: application/modules/Walmart/WalmartConfig.php:153
3711
  msgid "Customer reviews"
3712
  msgstr ""
3713
 
3758
  msgstr ""
3759
 
3760
  #: application/modules/Amazon/AmazonConfig_FREE.php:256
3761
+ #: application/modules/Ebay/EbayConfig.php:370
3762
  msgid "Size of description"
3763
  msgstr ""
3764
 
3765
  #: application/modules/Amazon/AmazonConfig_FREE.php:257
3766
+ #: application/modules/Ebay/EbayConfig.php:371
3767
  msgid "The maximum size of the item description. 0 - do not cut."
3768
  msgstr ""
3769
 
3784
  msgid "Adds products from Amazon."
3785
  msgstr ""
3786
 
3787
+ #: application/modules/Amazon/templates/data_compare.php:98
3788
+ #: application/modules/Ozon/templates/data_compare.php:78
3789
+ #: application/templates/blocks/item_row.php:55
3790
+ #: application/templates/blocks/list_row.php:53
3791
+ #: application/templates/data_price_tracker_alert.php:48
3792
+ #: templates/block_offers_logo.php:75 templates/wdgt_price_movers_grid.php:72
3793
+ #: templates/wdgt_price_movers_list.php:48
3794
+ msgid "as of %s"
3795
+ msgstr ""
3796
+
3797
  #: application/modules/Amazon/views/search_panel.php:19
3798
  msgid "Min. saving"
3799
  msgstr ""
3890
  #: application/modules/Bolcom/BolcomConfig.php:45
3891
  #: application/modules/CjLinks/CjLinksConfig.php:31
3892
  #: application/modules/Daisycon/DaisyconConfig.php:32
3893
+ #: application/modules/Ebay/EbayConfig.php:31
3894
+ #: application/modules/Ebay/EbayConfig.php:46
3895
  #: application/modules/Envato/EnvatoConfig.php:31
3896
+ #: application/modules/Feed/FeedConfig.php:35
3897
+ #: application/modules/Feed/FeedConfig.php:54
3898
+ #: application/modules/Feed/FeedConfig.php:96
3899
  #: application/modules/GoogleImages/GoogleImagesConfig.php:31
3900
  #: application/modules/GoogleImages/GoogleImagesConfig.php:45
3901
  #: application/modules/Impactradius/ImpactradiusConfig.php:32
3911
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:33
3912
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:64
3913
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:79
3914
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:31
3915
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:45
3916
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:60
3917
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:33
3918
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:47
3919
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:62
4099
  #: application/modules/Kelkoo/KelkooModule.php:30
4100
  #: application/modules/Pepperjam/PepperjamModule.php:29
4101
  #: application/modules/TradetrackerProducts/TradetrackerProductsModule.php:28
4102
+ #: application/modules/Walmart/WalmartModule.php:35
4103
  msgid "Adds products from %s."
4104
  msgstr ""
4105
 
4495
  #: application/modules/Bolcom/BolcomConfig.php:99
4496
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:141
4497
  #: application/modules/Udemy/UdemyConfig.php:121
4498
+ #: application/modules/Walmart/WalmartConfig.php:88
4499
  msgid "Category"
4500
  msgstr ""
4501
 
4560
  msgstr ""
4561
 
4562
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:47
4563
+ #: application/modules/Ebay/EbayConfig.php:130
4564
  #: application/modules/GdeSlon/GdeSlonConfig.php:57
4565
  msgid "Field \"Results\" can not be more than 100."
4566
  msgstr ""
4567
 
4568
  #: application/modules/CityadsProducts/CityadsProductsConfig.php:63
4569
+ #: application/modules/Ebay/EbayConfig.php:146
4570
  #: application/modules/GdeSlon/GdeSlonConfig.php:73
4571
  msgid "Field \"Results for autoupdating\" can not be more than 100."
4572
  msgstr ""
4775
  "Restrict search results based on the type of currency (for example: EUR)."
4776
  msgstr ""
4777
 
4778
+ #: application/modules/CjProducts/CjProductsModule.php:35
4779
  msgid ""
4780
  "Adds products from CJ.com. You must have approval from each program "
4781
  "separately."
4782
  msgstr ""
4783
 
4784
+ #: application/modules/CjProducts/CjProductsModule.php:49
4785
  msgid ""
4786
  "CJ launched a new Product Search API. Please visit <a href=\"%s\">CJ Product "
4787
  "settings</a> to get started with the new API."
4894
  msgid "Your Daisycon password."
4895
  msgstr ""
4896
 
4897
+ #: application/modules/Ebay/EbayConfig.php:23
4898
+ #: application/modules/Ebay/EbayConfig.php:38
4899
+ msgid "Your application's OAuth credentials."
 
4900
  msgstr ""
4901
 
4902
+ #: application/modules/Ebay/EbayConfig.php:23
4903
+ #: application/modules/Ebay/EbayConfig.php:38
4904
+ msgid ""
4905
+ "You can get it in <a target=\"_blank\" href=\"%s\">eBay Developers Program</"
4906
+ "a>."
4907
  msgstr ""
4908
 
4909
+ #: application/modules/Ebay/EbayConfig.php:53
4910
  msgid ""
4911
  "This is connection with partner program EPN. Campaign ID is valid for all "
4912
  "programs which were approved for you on EPN. If you leave this field blank - "
4913
  "you will not get commissions from sales."
4914
  msgstr ""
4915
 
4916
+ #: application/modules/Ebay/EbayConfig.php:62
4917
  msgid "EPN Custom ID (chanel)"
4918
  msgstr ""
4919
 
4920
+ #: application/modules/Ebay/EbayConfig.php:63
4921
  msgid ""
4922
  "Any word, for example, name of domain. Custom ID will be included in sale "
4923
  "report on EPN, so, you can additionally check your traffic. "
4924
  msgstr ""
4925
 
4926
+ #: application/modules/Ebay/EbayConfig.php:72
4927
  msgid "Ebay.in Affilite ID"
4928
  msgstr ""
4929
 
4930
+ #: application/modules/Ebay/EbayConfig.php:73
4931
  msgid ""
4932
  "For eBay India's Affiliate program only. Go to <a href=\"https://ebayindia."
4933
  "hasoffers.com/publisher/#!/account\">Ebay Hasoffers Dashboard</a> and find "
4934
  "your Affiliate ID."
4935
  msgstr ""
4936
 
4937
+ #: application/modules/Ebay/EbayConfig.php:82
4938
  msgid "Skimlinks Site ID"
4939
  msgstr ""
4940
 
4941
+ #: application/modules/Ebay/EbayConfig.php:83
4942
  msgid ""
4943
  "Set this if you want to direct traffic over <a href=\"http://www.keywordrush."
4944
  "com/go/skimlinks\">Skimlinks</a>. Id for domain you can find <a href="
4945
  "\"https://hub.skimlinks.com/account\">here</a>."
4946
  msgstr ""
4947
 
4948
+ #: application/modules/Ebay/EbayConfig.php:92
4949
  msgid "Viglink ID"
4950
  msgstr ""
4951
 
4952
+ #: application/modules/Ebay/EbayConfig.php:93
4953
  msgid ""
4954
  "Set this if you want to direct traffic over <a href=\"http://www.keywordrush."
4955
  "com/go/viglink\">Viglink</a>. Id for domain you can find <a href=\"http://"
4956
  "www.viglink.com/install\">here</a>. Id is the same for all domains"
4957
  msgstr ""
4958
 
4959
+ #: application/modules/Ebay/EbayConfig.php:102
4960
  #: application/modules/Ozon/OzonConfig.php:32
4961
  msgid "Deeplink"
4962
  msgstr ""
4963
 
4964
+ #: application/modules/Ebay/EbayConfig.php:103
4965
  msgid ""
4966
  "Set Deeplink for one of CPA-networks. You can use parameter as "
4967
  "<em>partner_id=12345</em>, or make link as template, for example, "
4971
  "{{url_encoded}}"
4972
  msgstr ""
4973
 
4974
+ #: application/modules/Ebay/EbayConfig.php:112
4975
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:67
4976
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:77
4977
  msgid "Locale"
4978
  msgstr ""
4979
 
4980
+ #: application/modules/Ebay/EbayConfig.php:113
4981
  msgid ""
4982
  "Local site of Ebay. For each local site you must have separate registration "
4983
  "in affiliate program."
4984
  msgstr ""
4985
 
4986
+ #: application/modules/Ebay/EbayConfig.php:160
4987
  msgid "Ending time"
4988
  msgstr ""
4989
 
4990
+ #: application/modules/Ebay/EbayConfig.php:161
4991
  msgid ""
4992
  "Lifetime of lots in seconds. Only lots which will be closed not later than "
4993
  "the specified time will be chosen."
4994
  msgstr ""
4995
 
4996
+ #: application/modules/Ebay/EbayConfig.php:171
4997
  msgid ""
4998
  "Id of category for searching. Id of categories you can find in URL of "
4999
  "category on <a href=\"http://www.ebay.com/sch/allcategories/all-categories"
5001
  "Example, \"2195,2218,20094\"."
5002
  msgstr ""
5003
 
5004
+ #: application/modules/Ebay/EbayConfig.php:180
5005
  msgid "Search in description"
5006
  msgstr ""
5007
 
5008
+ #: application/modules/Ebay/EbayConfig.php:181
5009
  msgid ""
5010
  "Include description of product in searching. This will take more time, than "
5011
  "searching only by title."
5012
  msgstr ""
5013
 
5014
+ #: application/modules/Ebay/EbayConfig.php:187
5015
  #: application/modules/Linkshare/LinkshareConfig.php:69
5016
  msgid "Searching logic"
5017
  msgstr ""
5018
 
5019
+ #: application/modules/Ebay/EbayConfig.php:206
5020
  msgid "Exclude category"
5021
  msgstr ""
5022
 
5023
+ #: application/modules/Ebay/EbayConfig.php:207
5024
  msgid ""
5025
  "Id of category, which must be excluded while searching. Id of categories you "
5026
  "can find in URL of category on <a href=\"http://www.ebay.com/sch/"
5028
  "categories separated with comma. Example, \"2195,2218,20094\"."
5029
  msgstr ""
5030
 
5031
+ #: application/modules/Ebay/EbayConfig.php:216
5032
  msgid "Minimal seller rating"
5033
  msgstr ""
5034
 
5035
+ #: application/modules/Ebay/EbayConfig.php:224
5036
  msgid "Best Offer"
5037
  msgstr ""
5038
 
5039
+ #: application/modules/Ebay/EbayConfig.php:225
5040
  msgid "Only \"Best Offer\" lots."
5041
  msgstr ""
5042
 
5043
+ #: application/modules/Ebay/EbayConfig.php:231
5044
  msgid "Featured"
5045
  msgstr ""
5046
 
5047
+ #: application/modules/Ebay/EbayConfig.php:232
5048
  msgid "Only \"Featured\" lots."
5049
  msgstr ""
5050
 
5051
+ #: application/modules/Ebay/EbayConfig.php:239
5052
  msgid "Only lots with free delivery"
5053
  msgstr ""
5054
 
5055
+ #: application/modules/Ebay/EbayConfig.php:245
5056
  msgid "Local Pickup"
5057
  msgstr ""
5058
 
5059
+ #: application/modules/Ebay/EbayConfig.php:246
5060
  msgid "Only lots with \"local pickup\" option."
5061
  msgstr ""
5062
 
5063
+ #: application/modules/Ebay/EbayConfig.php:252
5064
  msgid "Get It Fast"
5065
  msgstr ""
5066
 
5067
+ #: application/modules/Ebay/EbayConfig.php:253
5068
  msgid "Only \"Get It Fast\" lots."
5069
  msgstr ""
5070
 
5071
+ #: application/modules/Ebay/EbayConfig.php:259
5072
  msgid "Top-rated seller"
5073
  msgstr ""
5074
 
5075
+ #: application/modules/Ebay/EbayConfig.php:260
5076
  msgid "Only products from Top-rated \"Top-rated\" vendors."
5077
  msgstr ""
5078
 
5079
+ #: application/modules/Ebay/EbayConfig.php:266
5080
  msgid "Hide dublicates"
5081
  msgstr ""
5082
 
5083
+ #: application/modules/Ebay/EbayConfig.php:267
5084
  msgid "Filter similar lots"
5085
  msgstr ""
5086
 
5087
+ #: application/modules/Ebay/EbayConfig.php:273
5088
  msgid "Type of auction"
5089
  msgstr ""
5090
 
5091
+ #: application/modules/Ebay/EbayConfig.php:286
5092
  msgid "Maximum bids"
5093
  msgstr ""
5094
 
5095
+ #: application/modules/Ebay/EbayConfig.php:287
5096
  msgid "Example, 10"
5097
  msgstr ""
5098
 
5099
+ #: application/modules/Ebay/EbayConfig.php:296
5100
  msgid "Minimum bids"
5101
  msgstr ""
5102
 
5103
+ #: application/modules/Ebay/EbayConfig.php:297
5104
  msgid "Example, 3"
5105
  msgstr ""
5106
 
5107
+ #: application/modules/Ebay/EbayConfig.php:307
5108
  msgid "Example, 300.50"
5109
  msgstr ""
5110
 
5111
+ #: application/modules/Ebay/EbayConfig.php:317
5112
  msgid "Example, 10.98"
5113
  msgstr ""
5114
 
5115
+ #: application/modules/Ebay/EbayConfig.php:326
5116
  msgid "Payment options"
5117
  msgstr ""
5118
 
5119
+ #: application/modules/Ebay/EbayConfig.php:334
5120
  msgid "Available to"
5121
  msgstr ""
5122
 
5123
+ #: application/modules/Ebay/EbayConfig.php:335
5124
  msgid ""
5125
  "Limits items to those available to the specified country only. Expects the "
5126
  "two-letter ISO 3166 country code."
5127
  msgstr ""
5128
 
5129
+ #: application/modules/Ebay/EbayConfig.php:344
5130
  msgid "Located In"
5131
  msgstr ""
5132
 
5133
+ #: application/modules/Ebay/EbayConfig.php:345
5134
  msgid ""
5135
  "Expects the two-letter ISO 3166 country code to indicate the country where "
5136
  "the item is located. Item filter AvailableTo cannot be used together with "
5137
  "item filter LocatedIn."
5138
  msgstr ""
5139
 
5140
+ #: application/modules/Ebay/EbayConfig.php:354
5141
  msgid "Seller"
5142
  msgstr ""
5143
 
5144
+ #: application/modules/Ebay/EbayConfig.php:355
5145
  msgid ""
5146
  "Specify one or more seller names separated by comma. Search results will "
5147
  "include items from the specified sellers only."
5148
  msgstr ""
5149
 
5150
+ #: application/modules/Ebay/EbayConfig.php:363
5151
  msgid "Get description"
5152
  msgstr ""
5153
 
5154
+ #: application/modules/Ebay/EbayConfig.php:364
5155
  msgid ""
5156
  "Get description of product. This takes more requests for Ebay API and slow "
5157
  "down searching. Description will be requested only for 20 first products for "
5158
  "one searching"
5159
  msgstr ""
5160
 
5161
+ #: application/modules/Ebay/EbayModule.php:49
5162
+ msgid ""
5163
+ "Starting on July 1, 2021, applications using Shopping API calls must "
5164
+ "authenticate with an OAuth application access token. Please visit <a href="
5165
+ "\"%s\">Ebay module settings</a> to get started with the new API "
5166
+ "authentication."
5167
+ msgstr ""
5168
+
5169
  #: application/modules/Envato/EnvatoConfig.php:23
5170
  msgid ""
5171
  "You can <a href=\"https://build.envato.com/create-token/\">generate a "
5203
  msgstr ""
5204
 
5205
  #: application/modules/Envato/EnvatoConfig.php:113
5206
+ #: application/modules/Walmart/WalmartConfig.php:122
5207
  msgid "Price min"
5208
  msgstr ""
5209
 
5210
  #: application/modules/Envato/EnvatoConfig.php:114
5211
+ #: application/modules/Walmart/WalmartConfig.php:123
5212
  msgid "Minimum price to include."
5213
  msgstr ""
5214
 
5215
  #: application/modules/Envato/EnvatoConfig.php:122
5216
+ #: application/modules/Walmart/WalmartConfig.php:132
5217
  msgid "Price max"
5218
  msgstr ""
5219
 
5220
  #: application/modules/Envato/EnvatoConfig.php:123
5221
+ #: application/modules/Walmart/WalmartConfig.php:133
5222
  msgid "Maximum price to include."
5223
  msgstr ""
5224
 
5242
 
5243
  #: application/modules/Envato/EnvatoConfig.php:153
5244
  #: application/modules/Udemy/UdemyConfig.php:106
5245
+ #: application/modules/Walmart/WalmartConfig.php:112
5246
  msgid "Order"
5247
  msgstr ""
5248
 
5272
  "Market</a>."
5273
  msgstr ""
5274
 
5275
+ #: application/modules/Feed/FeedConfig.php:26
5276
+ #: application/modules/Feed/FeedConfig.php:35
5277
+ msgid "Feed name"
5278
+ msgstr ""
5279
+
5280
+ #: application/modules/Feed/FeedConfig.php:27
5281
+ #: application/modules/Feed/FeedConfig.php:89
5282
+ msgid "For example: %s"
5283
+ msgstr ""
5284
+
5285
+ #: application/modules/Feed/FeedConfig.php:44
5286
+ msgid "Feed download URL"
5287
+ msgstr ""
5288
+
5289
+ #: application/modules/Feed/FeedConfig.php:45
5290
+ msgid "CSV format only."
5291
+ msgstr ""
5292
+
5293
+ #: application/modules/Feed/FeedConfig.php:46
5294
+ msgid "Make sure your unzipped feed size is less than %s."
5295
+ msgstr ""
5296
+
5297
+ #: application/modules/Feed/FeedConfig.php:64
5298
+ msgid "Archive format"
5299
+ msgstr ""
5300
+
5301
+ #: application/modules/Feed/FeedConfig.php:67
5302
+ msgid "None"
5303
+ msgstr ""
5304
+
5305
+ #: application/modules/Feed/FeedConfig.php:73
5306
+ msgid "Feed encoding"
5307
+ msgstr ""
5308
+
5309
+ #: application/modules/Feed/FeedConfig.php:82
5310
+ #: application/modules/Viglink/ViglinkConfig.php:135
5311
+ msgid "Default currency"
5312
+ msgstr ""
5313
+
5314
+ #: application/modules/Feed/FeedConfig.php:88
5315
+ msgid "Default merchant domain"
5316
+ msgstr ""
5317
+
5318
+ #: application/modules/Feed/FeedConfig.php:105
5319
+ msgid "Field mapping"
5320
+ msgstr ""
5321
+
5322
+ #: application/modules/Feed/FeedConfig.php:116
5323
+ msgid "Please fill out all required mapping fields."
5324
+ msgstr ""
5325
+
5326
+ #: application/modules/Feed/FeedConfig.php:132
5327
+ msgid "(required)"
5328
+ msgstr ""
5329
+
5330
+ #: application/modules/Feed/FeedConfig.php:134
5331
+ msgid "(optional)"
5332
+ msgstr ""
5333
+
5334
+ #: application/modules/Feed/FeedConfig.php:141
5335
+ msgid "In your feed"
5336
+ msgstr ""
5337
+
5338
+ #: application/modules/Feed/FeedModule.php:25
5339
+ msgid "Add new"
5340
+ msgstr ""
5341
+
5342
  #: application/modules/Flickr/FlickrConfig.php:23
5343
  msgid ""
5344
  "The key for use Flickr API. You can get <a href=\"http://www.flickr.com/"
5362
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:101
5363
  #: application/modules/Ozon/OzonConfig.php:68
5364
  #: application/modules/Viglink/ViglinkConfig.php:98
5365
+ #: application/modules/Walmart/WalmartConfig.php:102
5366
  #: application/modules/Youtube/YoutubeConfig.php:65
5367
  #: application/modules/Youtube/views/search_panel.php:10
5368
  msgid "Relevance"
6100
  msgstr ""
6101
 
6102
  #: application/modules/Market/MarketConfig.php:82
6103
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:121
6104
  #: application/modules/TradetrackerCoupons/views/search_panel.php:4
6105
  msgid "Offers"
6106
  msgstr ""
6176
  msgid "override custom settings"
6177
  msgstr ""
6178
 
6179
+ #: application/modules/Offer/OfferModule.php:28
6180
  msgid "Manually create offer from any site with price update."
6181
  msgstr ""
6182
 
6353
  msgstr ""
6354
 
6355
  #: application/modules/Ozon/OzonConfig.php:116
6356
+ #: application/templates/blocks/item_features.php:30
6357
+ #: application/templates/blocks/item_features.php:40
6358
+ #: application/templates/blocks/item_features.php:52
6359
+ #: application/templates/blocks/item_features.php:64
6360
+ #: application/templates/blocks/item_features.php:76
6361
+ #: application/templates/blocks/item_features.php:89
6362
+ #: application/templates/blocks/item_features.php:98
6363
  msgid "Features"
6364
  msgstr ""
6365
 
6624
 
6625
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:156
6626
  #: application/modules/SkimlinksCoupons/views/search_panel.php:8
6627
+ #: application/templates/blocks/item_after_price_row.php:18
6628
+ #: application/templates/blocks/item_after_price_row.php:55
6629
  msgid "Free shipping"
6630
  msgstr ""
6631
 
6680
  msgstr ""
6681
 
6682
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:189
6683
+ #: application/modules/Walmart/WalmartConfig.php:116
6684
  msgid "Asc"
6685
  msgstr ""
6686
 
6687
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:190
6688
+ #: application/modules/Walmart/WalmartConfig.php:117
6689
  msgid "Desc"
6690
  msgstr ""
6691
 
6735
  "program separately."
6736
  msgstr ""
6737
 
6738
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:23
6739
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:25
6740
  msgid ""
6741
  "You can find your Customer ID and Passphrase by logging onto your "
6744
  "need to request access first by clicking the \"request access\" link."
6745
  msgstr ""
6746
 
6747
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:52
6748
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:54
6749
  msgid ""
6750
  "Login into your TradeTracker control panel. Click on \"<a href=\"https://"
6753
  "Site ID."
6754
  msgstr ""
6755
 
6756
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:68
6757
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:78
6758
  msgid "Your TradeTracker locale."
6759
  msgstr ""
6760
 
6761
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:117
6762
  msgid "Items type"
6763
  msgstr ""
6764
 
6765
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:120
6766
  #: application/modules/TradetrackerCoupons/views/search_panel.php:3
6767
  msgid "Vouchers"
6768
  msgstr ""
6769
 
6770
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:122
6771
  #: application/modules/TradetrackerCoupons/views/search_panel.php:5
6772
  msgid "Text Links"
6773
  msgstr ""
6774
 
6775
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:128
6776
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:162
6777
  msgid "Banner Dimension ID"
6778
  msgstr ""
6779
 
6780
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:137
6781
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:146
6782
  msgid "Campaign ID"
6783
  msgstr ""
6784
 
6785
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:146
6786
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:155
6787
  msgid "Campaign Category ID"
6788
  msgstr ""
6789
 
6790
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:155
6791
  msgid "Unsubscribed campaigns"
6792
  msgstr ""
6793
 
6794
+ #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:156
6795
  msgid "Include unsubscribed campaigns."
6796
  msgstr ""
6797
 
7023
  "or correctly structured image URL."
7024
  msgstr ""
7025
 
 
 
 
 
7026
  #: application/modules/Viglink/ViglinkConfig.php:136
7027
  msgid ""
7028
  "Expects the three-letter ISO 4217 currency code. Used only for search by URL "
7036
  msgstr ""
7037
 
7038
  #: application/modules/Viglink/ViglinkConfig.php:155
7039
+ #: application/modules/Walmart/WalmartConfig.php:92
7040
  msgid "[ All ]"
7041
  msgstr ""
7042
 
7062
  msgid "Your Impact Radius Publisher ID."
7063
  msgstr ""
7064
 
7065
+ #: application/modules/Walmart/WalmartConfig.php:79
 
 
 
 
7066
  msgid ""
7067
  "Set this option if you want to send traffic through one of affiliate network "
7068
  "with Walmart support."
7069
  msgstr ""
7070
 
7071
+ #: application/modules/Walmart/WalmartConfig.php:89
7072
+ #: application/modules/Walmart/WalmartConfig.php:99
7073
  msgid "Sorting criteria."
7074
  msgstr ""
7075
 
7076
+ #: application/modules/Walmart/WalmartConfig.php:105
7077
  msgid "Bestseller"
7078
  msgstr ""
7079
 
7080
+ #: application/modules/Walmart/WalmartConfig.php:106
7081
  msgid "Customer Rating"
7082
  msgstr ""
7083
 
7084
+ #: application/modules/Walmart/WalmartConfig.php:113
7085
  msgid ""
7086
  "Sort ordering criteria. This parameter is needed only for the sort types: "
7087
  "Price, Title, Customer Rating."
7088
  msgstr ""
7089
 
7090
+ #: application/modules/Walmart/WalmartConfig.php:154
7091
  msgid ""
7092
  "Parse customer reviews. It takes more time. Don't check if you don't need it."
7093
  msgstr ""
7094
 
7095
+ #: application/modules/Walmart/WalmartModule.php:49
7096
+ msgid "<a href=\"%s\">Walmart module</a> requires the OpenSSL PHP extension!"
7097
+ msgstr ""
7098
+
7099
  #: application/modules/Webgains/WebgainsConfig.php:23
7100
  msgid ""
7101
  "Check <a target=\"_blank\" href=\"%s\">how to create</a> a Product Feed."
7200
  "separately."
7201
  msgstr ""
7202
 
7203
+ #: application/templates/blocks/item_after_price_row.php:12
7204
+ #: application/templates/blocks/list_row.php:42
7205
+ #: templates/block_offers_logo.php:64 templates/block_price_comparison.php:51
7206
+ msgid "%d new from %s"
7207
+ msgstr ""
7208
+
7209
+ #: application/templates/blocks/item_after_price_row.php:15
7210
+ #: application/templates/blocks/list_row.php:47
7211
+ #: templates/block_offers_logo.php:69 templates/block_price_comparison.php:56
7212
+ msgid "%d used from %s"
7213
+ msgstr ""
7214
+
7215
+ #: application/templates/blocks/item_features.php:11
7216
+ msgid "Specifications"
7217
+ msgstr ""
7218
+
7219
+ #: application/templates/blocks/item_row.php:42
7220
+ msgid "Plus %s Cash Back"
7221
+ msgstr ""
7222
+
7223
+ #: application/templates/blocks/price_alert_inline.php:25
7224
+ msgid "Wait For A Price Drop"
7225
+ msgstr ""
7226
+
7227
+ #: application/templates/blocks/price_alert_inline.php:33
7228
+ #: application/templates/blocks/price_alert_inline.php:34
7229
+ msgid "Your Email"
7230
+ msgstr ""
7231
+
7232
+ #: application/templates/blocks/price_alert_inline.php:37
7233
+ #: application/templates/blocks/price_alert_inline.php:43
7234
+ msgid "Desired Price"
7235
+ msgstr ""
7236
+
7237
+ #: application/templates/blocks/price_alert_inline.php:48
7238
+ msgid "SET ALERT"
7239
+ msgstr ""
7240
+
7241
+ #: application/templates/blocks/price_alert_inline.php:58
7242
+ msgid "Privacy Policy"
7243
+ msgstr ""
7244
+
7245
+ #: application/templates/blocks/price_alert_inline.php:59
7246
+ msgid "I agree to the %s."
7247
+ msgstr ""
7248
+
7249
+ #: application/templates/blocks/price_alert_inline.php:63
7250
+ msgid "You will receive a notification when the price drops."
7251
+ msgstr ""
7252
+
7253
+ #: application/templates/blocks/price_history.php:19
7254
+ msgid "Statistics"
7255
+ msgstr ""
7256
+
7257
+ #: application/templates/blocks/price_history.php:22
7258
+ msgid "Current Price"
7259
+ msgstr ""
7260
+
7261
+ #: application/templates/blocks/price_history.php:34
7262
+ msgid "Highest Price"
7263
+ msgstr ""
7264
+
7265
+ #: application/templates/blocks/price_history.php:40
7266
+ msgid "Lowest Price"
7267
+ msgstr ""
7268
+
7269
+ #: application/templates/blocks/price_history.php:46
7270
+ msgid "Since %s"
7271
+ msgstr ""
7272
+
7273
+ #: application/templates/blocks/price_history.php:49
7274
+ msgid "Last price changes"
7275
+ msgstr ""
7276
+
7277
+ #: application/templates/data_coupon.php:26
7278
+ #: application/templates/data_coupon.php:33
7279
+ #: templates/wdgt_price_movers_grid.php:60
7280
+ #: templates/wdgt_price_movers_list.php:62
7281
+ msgid "OFF"
7282
+ msgstr ""
7283
+
7284
+ #: application/templates/data_coupon.php:38
7285
+ msgid "Start date: %s"
7286
+ msgstr ""
7287
+
7288
+ #: application/templates/data_coupon.php:41
7289
+ msgid "End date: %s"
7290
+ msgstr ""
7291
+
7292
+ #: templates/block_price_alert.php:20
7293
+ msgid "Set Alert for"
7294
+ msgstr ""
7295
+
7296
+ #: templates/block_price_alert.php:25
7297
+ msgid "Create Your Free Price Drop Alert!"
7298
+ msgstr ""
7299
+
7300
+ #: templates/block_price_comparison.php:76
7301
+ #: templates/block_price_comparison_card.php:55
7302
+ #: templates/block_text_links.php:39
7303
+ msgid "Last Amazon price update was: %s"
7304
+ msgstr ""
7305
+
7306
+ #: templates/block_price_history.php:20
7307
+ msgid "Price History for"
7308
+ msgstr ""
7309
+
7310
  #. Plugin Name of the plugin/theme
7311
  msgid "Content Egg<stripfree> Pro</stripfree>"
7312
  msgstr ""
languages/tpl/content-egg-tpl.pot CHANGED
@@ -1,14 +1,14 @@
1
- # Copyright (C) 2020 Content Egg<stripfree> Pro</stripfree>
2
  # This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Content Egg<stripfree> Pro</stripfree> 8.1.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
7
- "POT-Creation-Date: 2020-12-20 09:02:35+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
@@ -46,109 +46,102 @@ msgstr ""
46
  msgid "Welcome to %s"
47
  msgstr ""
48
 
49
- #: application/PriceAlert.php:151
50
  msgid "Hello,"
51
  msgstr ""
52
 
53
- #: application/PriceAlert.php:152
54
  msgid "You have successfully set a price drop alert for %s."
55
  msgstr ""
56
 
57
- #: application/PriceAlert.php:153
58
  msgid ""
59
  "We will not send you any price alerts until you verified your email address."
60
  msgstr ""
61
 
62
- #: application/PriceAlert.php:154
63
  msgid ""
64
  "Please open this link to validate your email address:<br> <a href=\"%s\">%s</"
65
  "a>"
66
  msgstr ""
67
 
68
- #: application/PriceAlert.php:155 application/PriceAlert.php:372
69
  msgid ""
70
  "If you don't want to receive any price alerts from us in the future, <a href="
71
  "\"%s\">please click here</a>."
72
  msgstr ""
73
 
74
- #: application/PriceAlert.php:164
75
  msgid "Thank You,"
76
  msgstr ""
77
 
78
- #: application/PriceAlert.php:164
79
  msgid "The %s Team"
80
  msgstr ""
81
 
82
- #: application/PriceAlert.php:220
83
  msgid ""
84
  "Your email has been verified. We will let you know by email when the Price "
85
  "Drops."
86
  msgstr ""
87
 
88
- #: application/PriceAlert.php:220 application/PriceAlert.php:255
89
  msgid "Success!"
90
  msgstr ""
91
 
92
- #: application/PriceAlert.php:237
93
  msgid "You are now unsubscribed from our Price Alerts via email."
94
  msgstr ""
95
 
96
- #: application/PriceAlert.php:237
97
  msgid "Unsubscribed!"
98
  msgstr ""
99
 
100
- #: application/PriceAlert.php:255
101
  msgid "Your subscription has been deleted from our database."
102
  msgstr ""
103
 
104
- #: application/PriceAlert.php:271
105
  msgid " Ok "
106
  msgstr ""
107
 
108
- #: application/PriceAlert.php:343
109
  msgid "Price alert: \"%s\""
110
  msgstr ""
111
 
112
- #: application/PriceAlert.php:359
113
  msgid "Good news!"
114
  msgstr ""
115
 
116
- #: application/PriceAlert.php:360
117
  msgid "The price target you set for the item has been reached."
118
  msgstr ""
119
 
120
- #: application/PriceAlert.php:361
121
  msgid "<a href=\"%s\">Save %s (%s%%) on %s</a>"
122
  msgstr ""
123
 
124
- #: application/PriceAlert.php:363
125
  msgid "Desired Price: %s"
126
  msgstr ""
127
 
128
- #: application/PriceAlert.php:364
129
  msgid "Current Price: <strong>%s</strong>"
130
  msgstr ""
131
 
132
- #: application/PriceAlert.php:365
133
- #: application/modules/Amazon/templates/data_compare.php:98
134
- #: application/modules/Ozon/templates/data_compare.php:78
135
- #: application/templates/blocks/item_row.php:53
136
- #: application/templates/blocks/list_row.php:56
137
- #: application/templates/data_price_tracker_alert.php:48
138
- #: templates/block_offers_logo.php:81 templates/wdgt_price_movers_grid.php:72
139
- #: templates/wdgt_price_movers_list.php:49
140
  msgid "as of"
141
  msgstr ""
142
 
143
- #: application/PriceAlert.php:366
144
  msgid "Price dropped from %s to %s"
145
  msgstr ""
146
 
147
- #: application/PriceAlert.php:368
148
  msgid "<a href=\"%s\">More info...</a>"
149
  msgstr ""
150
 
151
- #: application/PriceAlert.php:371
152
  msgid ""
153
  "This present alert has now expired. You may <a href=\"%s\">create a new "
154
  "alert</a> for this item."
@@ -158,137 +151,290 @@ msgstr ""
158
  msgid "Price Drops"
159
  msgstr ""
160
 
161
- #: application/ProductSearch.php:74
162
- msgid "Sorry. No products found."
163
- msgstr ""
164
-
165
- #: application/ProductSearch.php:119
166
- msgid "Search Results for \"%s\""
167
- msgstr ""
168
-
169
  #: application/ProductSearchWidget.php:81
170
  msgid "Product Search..."
171
  msgstr ""
172
 
173
- #: application/WooIntegrator.php:541
174
  #: application/templates/blocks/grid_row.php:43
175
- #: application/templates/blocks/item_row.php:35
176
- #: application/templates/blocks/list_row.php:31
 
177
  #: application/templates/data_price_tracker_alert.php:43
178
  #: templates/block_offers_logo.php:55 templates/block_price_comparison.php:44
179
  msgid "Last updated on %s"
180
  msgstr ""
181
 
182
- #: application/WooIntegrator.php:560
183
  msgid "Price per unit: %s"
184
  msgstr ""
185
 
186
- #: application/admin/GeneralConfig.php:325
187
- msgid "Buy Now"
 
188
  msgstr ""
189
 
190
- #: application/admin/GeneralConfig.php:335
191
- #: application/helpers/TemplateHelper.php:738
192
- msgid "Shop Sale"
193
  msgstr ""
194
 
195
- #: application/admin/PrefillController.php:37
196
- #: application/admin/views/prefill.php:111
197
- msgid "Future"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  msgstr ""
199
 
200
- #: application/admin/views/module_settings.php:87
201
- msgid "Last feed import: %s."
 
202
  msgstr ""
203
 
204
- #: application/admin/views/module_settings.php:88
205
- msgid "Total products: %d."
 
206
  msgstr ""
207
 
208
- #: application/admin/views/module_settings.php:90
209
- msgid "WordPress memory limit: %s"
 
210
  msgstr ""
211
 
212
- #: application/admin/views/module_settings.php:94
213
- msgid "Last error: %s"
214
  msgstr ""
215
 
216
- #: application/components/ContentManager.php:481
 
 
 
 
 
 
 
 
 
 
217
  #: application/modules/Market/templates/data_item.php:128
218
  msgid "Pros:"
219
  msgstr ""
220
 
221
- #: application/components/ContentManager.php:483
222
  #: application/modules/Market/templates/data_item.php:129
223
  msgid "Cons:"
224
  msgstr ""
225
 
226
- #: application/components/ContentManager.php:569
227
  msgid "Rating"
228
  msgstr ""
229
 
230
- #: application/helpers/TemplateHelper.php:34
231
- #: application/helpers/TemplateHelper.php:55
232
  msgid "number_format_decimal_point"
233
  msgstr ""
234
 
235
- #: application/helpers/TemplateHelper.php:35
236
- #: application/helpers/TemplateHelper.php:56
237
  msgid "number_format_thousands_sep"
238
  msgstr ""
239
 
240
- #: application/helpers/TemplateHelper.php:118
241
  msgid "d"
242
  msgstr ""
243
 
244
- #: application/helpers/TemplateHelper.php:120
245
  msgid "h"
246
  msgstr ""
247
 
248
- #: application/helpers/TemplateHelper.php:122
249
- #: application/helpers/TemplateHelper.php:124
250
- #: application/templates/blocks/item_after_price_row.php:51
251
  msgid "m"
252
  msgstr ""
253
 
254
- #: application/helpers/TemplateHelper.php:362
255
- #: application/modules/Amazon/templates/data_compare.php:65
256
- #: application/modules/Ozon/templates/data_compare.php:68
257
- #: application/templates/data_price_tracker_alert.php:39
258
- msgid "Price"
259
- msgstr ""
260
-
261
- #: application/helpers/TemplateHelper.php:733
262
  msgid "BUY NOW"
263
  msgstr ""
264
 
265
- #: application/helpers/TemplateHelper.php:756
266
- msgid "today"
267
- msgstr ""
268
-
269
- #: application/helpers/TemplateHelper.php:760
270
- msgid "%d days ago"
271
- msgstr ""
272
-
273
- #: application/helpers/TemplateHelper.php:762
274
- msgid "%d day ago"
275
  msgstr ""
276
 
277
- #: application/helpers/TemplateHelper.php:767
278
  msgid ""
279
  "Product prices and availability are accurate as of the date/time indicated "
280
  "and are subject to change. Any price and availability information displayed "
281
  "on Amazon at the time of purchase will apply to the purchase of this product."
282
  msgstr ""
283
 
284
- #: application/helpers/TemplateHelper.php:866
285
- msgid "in stock"
286
- msgstr ""
287
-
288
- #: application/helpers/TemplateHelper.php:868
289
- msgid "out of stock"
290
- msgstr ""
291
-
292
  #: application/modules/AE/templates/data_grid.php:8
293
  #: application/modules/AdmitadProducts/templates/data_grid.php:8
294
  #: application/modules/Affiliatewindow/templates/data_grid.php:8
@@ -304,6 +450,7 @@ msgstr ""
304
  #: application/modules/Daisycon/templates/data_grid.php:9
305
  #: application/modules/Ebay/templates/data_grid.php:9
306
  #: application/modules/Envato/templates/data_grid.php:9
 
307
  #: application/modules/Flipkart/templates/data_grid.php:9
308
  #: application/modules/GdeSlon/templates/data_grid.php:9
309
  #: application/modules/Impactradius/templates/data_grid.php:9
@@ -342,6 +489,7 @@ msgstr ""
342
  #: application/modules/Daisycon/templates/data_item.php:9
343
  #: application/modules/Ebay/templates/data_item.php:9
344
  #: application/modules/Envato/templates/data_item.php:9
 
345
  #: application/modules/Flipkart/templates/data_item.php:9
346
  #: application/modules/GdeSlon/templates/data_item.php:9
347
  #: application/modules/Impactradius/templates/data_item.php:9
@@ -381,6 +529,7 @@ msgstr ""
381
  #: application/modules/Daisycon/templates/data_list.php:8
382
  #: application/modules/Ebay/templates/data_list.php:8
383
  #: application/modules/Envato/templates/data_list.php:8
 
384
  #: application/modules/Flipkart/templates/data_list.php:8
385
  #: application/modules/GdeSlon/templates/data_list.php:8
386
  #: application/modules/Impactradius/templates/data_list.php:8
@@ -418,6 +567,7 @@ msgstr ""
418
  #: application/modules/CjProducts/templates/data_price_tracker_alert.php:9
419
  #: application/modules/Daisycon/templates/data_price_tracker_alert.php:9
420
  #: application/modules/Ebay/templates/data_price_tracker_alert.php:9
 
421
  #: application/modules/Flipkart/templates/data_price_tracker_alert.php:9
422
  #: application/modules/GdeSlon/templates/data_price_tracker_alert.php:9
423
  #: application/modules/Impactradius/templates/data_price_tracker_alert.php:9
@@ -466,35 +616,16 @@ msgstr ""
466
  msgid "Too low to display"
467
  msgstr ""
468
 
469
- #: application/modules/Amazon/templates/data_compare.php:80
470
- #: application/templates/blocks/item_after_price_row.php:24
471
- #: application/templates/blocks/item_after_price_row.php:61
472
- msgid "Free shipping"
473
- msgstr ""
474
-
475
  #: application/modules/Amazon/templates/data_compare.php:86
476
- #: application/templates/blocks/item_after_price_row.php:13
477
- #: application/templates/blocks/list_row.php:40
478
- #: templates/block_offers_logo.php:65 templates/block_price_comparison.php:52
479
  msgid "new"
480
  msgstr ""
481
 
482
  #: application/modules/Amazon/templates/data_compare.php:88
483
  #: application/modules/Amazon/templates/data_compare.php:93
484
- #: application/templates/blocks/item_after_price_row.php:15
485
- #: application/templates/blocks/item_after_price_row.php:20
486
- #: application/templates/blocks/list_row.php:42
487
- #: application/templates/blocks/list_row.php:49
488
- #: templates/block_offers_logo.php:67 templates/block_offers_logo.php:74
489
- #: templates/block_price_comparison.php:54
490
- #: templates/block_price_comparison.php:61
491
  msgid "from"
492
  msgstr ""
493
 
494
  #: application/modules/Amazon/templates/data_compare.php:93
495
- #: application/templates/blocks/item_after_price_row.php:20
496
- #: application/templates/blocks/list_row.php:49
497
- #: templates/block_offers_logo.php:74 templates/block_price_comparison.php:61
498
  msgid "used"
499
  msgstr ""
500
 
@@ -505,17 +636,6 @@ msgstr ""
505
  msgid "Shop Now"
506
  msgstr ""
507
 
508
- #: application/modules/Amazon/templates/data_compare.php:119
509
- #: application/templates/blocks/item_features.php:27
510
- #: application/templates/blocks/item_features.php:37
511
- #: application/templates/blocks/item_features.php:49
512
- #: application/templates/blocks/item_features.php:61
513
- #: application/templates/blocks/item_features.php:73
514
- #: application/templates/blocks/item_features.php:86
515
- #: application/templates/blocks/item_features.php:95
516
- msgid "Features"
517
- msgstr ""
518
-
519
  #: application/modules/Amazon/templates/data_compare.php:169
520
  #: application/modules/Ozon/templates/data_compare.php:140
521
  msgid "User Reviews"
@@ -685,30 +805,26 @@ msgstr ""
685
  msgid "Tile"
686
  msgstr ""
687
 
688
- #: application/templates/blocks/item_after_price_row.php:38
689
  msgid "Bids:"
690
  msgstr ""
691
 
692
- #: application/templates/blocks/item_after_price_row.php:43
693
  msgid "Item condition:"
694
  msgstr ""
695
 
696
- #: application/templates/blocks/item_after_price_row.php:50
697
  msgid "Time left:"
698
  msgstr ""
699
 
700
- #: application/templates/blocks/item_after_price_row.php:55
701
  msgid "Ended:"
702
  msgstr ""
703
 
704
- #: application/templates/blocks/item_after_price_row.php:65
705
  msgid "EEK:"
706
  msgstr ""
707
 
708
- #: application/templates/blocks/item_features.php:8
709
- msgid "Specifications"
710
- msgstr ""
711
-
712
  #: application/templates/blocks/item_reviews.php:29
713
  msgid "User reviews"
714
  msgstr ""
@@ -717,83 +833,10 @@ msgstr ""
717
  msgid "View all reviews"
718
  msgstr ""
719
 
720
- #: application/templates/blocks/item_row.php:40
721
- msgid "Plus %s Cash Back"
722
- msgstr ""
723
-
724
- #: application/templates/blocks/price_alert_inline.php:25
725
- msgid "Wait For A Price Drop"
726
- msgstr ""
727
-
728
- #: application/templates/blocks/price_alert_inline.php:33
729
- #: application/templates/blocks/price_alert_inline.php:34
730
- msgid "Your Email"
731
- msgstr ""
732
-
733
- #: application/templates/blocks/price_alert_inline.php:37
734
- #: application/templates/blocks/price_alert_inline.php:43
735
- msgid "Desired Price"
736
- msgstr ""
737
-
738
- #: application/templates/blocks/price_alert_inline.php:48
739
- msgid "SET ALERT"
740
- msgstr ""
741
-
742
- #: application/templates/blocks/price_alert_inline.php:58
743
- msgid "I agree to the <a target=\"_blank\" href=\"%s\">Privacy Policy</a>."
744
- msgstr ""
745
-
746
- #: application/templates/blocks/price_alert_inline.php:62
747
- msgid "You will receive a notification when the price drops."
748
- msgstr ""
749
-
750
  #: application/templates/blocks/price_history.php:10
751
  msgid "Price History"
752
  msgstr ""
753
 
754
- #: application/templates/blocks/price_history.php:19
755
- msgid "Statistics"
756
- msgstr ""
757
-
758
- #: application/templates/blocks/price_history.php:22
759
- msgid "Current Price"
760
- msgstr ""
761
-
762
- #: application/templates/blocks/price_history.php:34
763
- msgid "Highest Price"
764
- msgstr ""
765
-
766
- #: application/templates/blocks/price_history.php:40
767
- msgid "Lowest Price"
768
- msgstr ""
769
-
770
- #: application/templates/blocks/price_history.php:46
771
- msgid "Since"
772
- msgstr ""
773
-
774
- #: application/templates/blocks/price_history.php:49
775
- msgid "Last price changes"
776
- msgstr ""
777
-
778
- #: application/templates/data_coupon.php:26
779
- #: application/templates/data_coupon.php:33
780
- #: templates/wdgt_price_movers_grid.php:60
781
- #: templates/wdgt_price_movers_list.php:63
782
- msgid "OFF"
783
- msgstr ""
784
-
785
- #: application/templates/data_coupon.php:38
786
- msgid "Start date:"
787
- msgstr ""
788
-
789
- #: application/templates/data_coupon.php:41
790
- msgid "End date:"
791
- msgstr ""
792
-
793
- #: application/templates/data_list.php:25
794
- msgid "Last updated on"
795
- msgstr ""
796
-
797
  #: templates/block_buttons_row.php:16
798
  msgid "%s at %s"
799
  msgstr ""
@@ -830,32 +873,14 @@ msgstr ""
830
  msgid "Price alert for lowest price product"
831
  msgstr ""
832
 
833
- #: templates/block_price_alert.php:20
834
- msgid "Set Alert for"
835
- msgstr ""
836
-
837
- #: templates/block_price_alert.php:25
838
- msgid "Create Your Free Price Drop Alert!"
839
- msgstr ""
840
-
841
  #: templates/block_price_comparison.php:9
842
  msgid "Price comparison widget"
843
  msgstr ""
844
 
845
- #: templates/block_price_comparison.php:80
846
- #: templates/block_price_comparison_card.php:55
847
- #: templates/block_text_links.php:39
848
- msgid "Last Amazon price update was:"
849
- msgstr ""
850
-
851
  #: templates/block_price_history.php:9
852
  msgid "Price history for lowest price product"
853
  msgstr ""
854
 
855
- #: templates/block_price_history.php:20
856
- msgid "Price History for"
857
- msgstr ""
858
-
859
  #: templates/block_price_statistics.php:10
860
  msgid "Price statistics"
861
  msgstr ""
@@ -880,6 +905,18 @@ msgstr ""
880
  msgid "The lowest price of %s was obtained on %s."
881
  msgstr ""
882
 
 
 
 
 
 
 
 
 
 
 
 
 
883
  #. Plugin Name of the plugin/theme
884
  msgid "Content Egg<stripfree> Pro</stripfree>"
885
  msgstr ""
1
+ # Copyright (C) 2021 Content Egg<stripfree> Pro</stripfree>
2
  # This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Content Egg<stripfree> Pro</stripfree> 8.9.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
7
+ "POT-Creation-Date: 2021-05-07 08:37:39+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2021-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
46
  msgid "Welcome to %s"
47
  msgstr ""
48
 
49
+ #: application/PriceAlert.php:164
50
  msgid "Hello,"
51
  msgstr ""
52
 
53
+ #: application/PriceAlert.php:165
54
  msgid "You have successfully set a price drop alert for %s."
55
  msgstr ""
56
 
57
+ #: application/PriceAlert.php:166
58
  msgid ""
59
  "We will not send you any price alerts until you verified your email address."
60
  msgstr ""
61
 
62
+ #: application/PriceAlert.php:167
63
  msgid ""
64
  "Please open this link to validate your email address:<br> <a href=\"%s\">%s</"
65
  "a>"
66
  msgstr ""
67
 
68
+ #: application/PriceAlert.php:168 application/PriceAlert.php:409
69
  msgid ""
70
  "If you don't want to receive any price alerts from us in the future, <a href="
71
  "\"%s\">please click here</a>."
72
  msgstr ""
73
 
74
+ #: application/PriceAlert.php:181
75
  msgid "Thank You,"
76
  msgstr ""
77
 
78
+ #: application/PriceAlert.php:181
79
  msgid "The %s Team"
80
  msgstr ""
81
 
82
+ #: application/PriceAlert.php:237
83
  msgid ""
84
  "Your email has been verified. We will let you know by email when the Price "
85
  "Drops."
86
  msgstr ""
87
 
88
+ #: application/PriceAlert.php:237 application/PriceAlert.php:272
89
  msgid "Success!"
90
  msgstr ""
91
 
92
+ #: application/PriceAlert.php:254
93
  msgid "You are now unsubscribed from our Price Alerts via email."
94
  msgstr ""
95
 
96
+ #: application/PriceAlert.php:254
97
  msgid "Unsubscribed!"
98
  msgstr ""
99
 
100
+ #: application/PriceAlert.php:272
101
  msgid "Your subscription has been deleted from our database."
102
  msgstr ""
103
 
104
+ #: application/PriceAlert.php:288
105
  msgid " Ok "
106
  msgstr ""
107
 
108
+ #: application/PriceAlert.php:362
109
  msgid "Price alert: \"%s\""
110
  msgstr ""
111
 
112
+ #: application/PriceAlert.php:396
113
  msgid "Good news!"
114
  msgstr ""
115
 
116
+ #: application/PriceAlert.php:397
117
  msgid "The price target you set for the item has been reached."
118
  msgstr ""
119
 
120
+ #: application/PriceAlert.php:398
121
  msgid "<a href=\"%s\">Save %s (%s%%) on %s</a>"
122
  msgstr ""
123
 
124
+ #: application/PriceAlert.php:400
125
  msgid "Desired Price: %s"
126
  msgstr ""
127
 
128
+ #: application/PriceAlert.php:401
129
  msgid "Current Price: <strong>%s</strong>"
130
  msgstr ""
131
 
132
+ #: application/PriceAlert.php:402
 
 
 
 
 
 
 
133
  msgid "as of"
134
  msgstr ""
135
 
136
+ #: application/PriceAlert.php:403
137
  msgid "Price dropped from %s to %s"
138
  msgstr ""
139
 
140
+ #: application/PriceAlert.php:405
141
  msgid "<a href=\"%s\">More info...</a>"
142
  msgstr ""
143
 
144
+ #: application/PriceAlert.php:408
145
  msgid ""
146
  "This present alert has now expired. You may <a href=\"%s\">create a new "
147
  "alert</a> for this item."
151
  msgid "Price Drops"
152
  msgstr ""
153
 
 
 
 
 
 
 
 
 
154
  #: application/ProductSearchWidget.php:81
155
  msgid "Product Search..."
156
  msgstr ""
157
 
158
+ #: application/WooIntegrator.php:544 application/admin/GeneralConfig.php:45
159
  #: application/templates/blocks/grid_row.php:43
160
+ #: application/templates/blocks/item_row.php:37
161
+ #: application/templates/blocks/list_row.php:33
162
+ #: application/templates/data_list.php:25
163
  #: application/templates/data_price_tracker_alert.php:43
164
  #: templates/block_offers_logo.php:55 templates/block_price_comparison.php:44
165
  msgid "Last updated on %s"
166
  msgstr ""
167
 
168
+ #: application/WooIntegrator.php:563 application/admin/GeneralConfig.php:76
169
  msgid "Price per unit: %s"
170
  msgstr ""
171
 
172
+ #: application/admin/GeneralConfig.php:43
173
+ #: application/helpers/TemplateHelper.php:884
174
+ msgid "in stock"
175
  msgstr ""
176
 
177
+ #: application/admin/GeneralConfig.php:44
178
+ #: application/helpers/TemplateHelper.php:886
179
+ msgid "out of stock"
180
  msgstr ""
181
 
182
+ #: application/admin/GeneralConfig.php:46
183
+ #: templates/block_price_comparison.php:76
184
+ #: templates/block_price_comparison_card.php:55
185
+ #: templates/block_text_links.php:39
186
+ msgid "Last Amazon price update was: %s"
187
+ msgstr ""
188
+
189
+ #: application/admin/GeneralConfig.php:47
190
+ #: application/modules/Amazon/templates/data_compare.php:98
191
+ #: application/modules/Ozon/templates/data_compare.php:78
192
+ #: application/templates/blocks/item_row.php:55
193
+ #: application/templates/blocks/list_row.php:53
194
+ #: application/templates/data_price_tracker_alert.php:48
195
+ #: templates/block_offers_logo.php:75 templates/wdgt_price_movers_grid.php:72
196
+ #: templates/wdgt_price_movers_list.php:48
197
+ msgid "as of %s"
198
+ msgstr ""
199
+
200
+ #: application/admin/GeneralConfig.php:48
201
+ #: application/templates/blocks/item_after_price_row.php:12
202
+ #: application/templates/blocks/list_row.php:42
203
+ #: templates/block_offers_logo.php:64 templates/block_price_comparison.php:51
204
+ msgid "%d new from %s"
205
+ msgstr ""
206
+
207
+ #: application/admin/GeneralConfig.php:49
208
+ #: application/templates/blocks/item_after_price_row.php:15
209
+ #: application/templates/blocks/list_row.php:47
210
+ #: templates/block_offers_logo.php:69 templates/block_price_comparison.php:56
211
+ msgid "%d used from %s"
212
+ msgstr ""
213
+
214
+ #: application/admin/GeneralConfig.php:50
215
+ #: application/modules/Amazon/templates/data_compare.php:80
216
+ #: application/templates/blocks/item_after_price_row.php:18
217
+ #: application/templates/blocks/item_after_price_row.php:55
218
+ msgid "Free shipping"
219
+ msgstr ""
220
+
221
+ #: application/admin/GeneralConfig.php:51
222
+ #: application/templates/data_coupon.php:26
223
+ #: application/templates/data_coupon.php:33
224
+ #: templates/wdgt_price_movers_grid.php:60
225
+ #: templates/wdgt_price_movers_list.php:62
226
+ msgid "OFF"
227
+ msgstr ""
228
+
229
+ #: application/admin/GeneralConfig.php:52
230
+ #: application/templates/blocks/item_row.php:42
231
+ msgid "Plus %s Cash Back"
232
+ msgstr ""
233
+
234
+ #: application/admin/GeneralConfig.php:53
235
+ #: application/helpers/TemplateHelper.php:367
236
+ #: application/modules/Amazon/templates/data_compare.php:65
237
+ #: application/modules/Ozon/templates/data_compare.php:68
238
+ #: application/templates/data_price_tracker_alert.php:39
239
+ msgid "Price"
240
+ msgstr ""
241
+
242
+ #: application/admin/GeneralConfig.php:54
243
+ #: application/modules/Amazon/templates/data_compare.php:119
244
+ #: application/templates/blocks/item_features.php:30
245
+ #: application/templates/blocks/item_features.php:40
246
+ #: application/templates/blocks/item_features.php:52
247
+ #: application/templates/blocks/item_features.php:64
248
+ #: application/templates/blocks/item_features.php:76
249
+ #: application/templates/blocks/item_features.php:89
250
+ #: application/templates/blocks/item_features.php:98
251
+ msgid "Features"
252
+ msgstr ""
253
+
254
+ #: application/admin/GeneralConfig.php:55
255
+ #: application/templates/blocks/item_features.php:11
256
+ msgid "Specifications"
257
+ msgstr ""
258
+
259
+ #: application/admin/GeneralConfig.php:56
260
+ #: application/templates/blocks/price_history.php:19
261
+ msgid "Statistics"
262
+ msgstr ""
263
+
264
+ #: application/admin/GeneralConfig.php:57
265
+ #: application/templates/blocks/price_history.php:22
266
+ msgid "Current Price"
267
+ msgstr ""
268
+
269
+ #: application/admin/GeneralConfig.php:58
270
+ #: application/templates/blocks/price_history.php:34
271
+ msgid "Highest Price"
272
+ msgstr ""
273
+
274
+ #: application/admin/GeneralConfig.php:59
275
+ #: application/templates/blocks/price_history.php:40
276
+ msgid "Lowest Price"
277
+ msgstr ""
278
+
279
+ #: application/admin/GeneralConfig.php:60
280
+ #: application/templates/blocks/price_history.php:46
281
+ msgid "Since %s"
282
+ msgstr ""
283
+
284
+ #: application/admin/GeneralConfig.php:61
285
+ #: application/templates/blocks/price_history.php:49
286
+ msgid "Last price changes"
287
+ msgstr ""
288
+
289
+ #: application/admin/GeneralConfig.php:62
290
+ #: application/templates/data_coupon.php:38
291
+ msgid "Start date: %s"
292
+ msgstr ""
293
+
294
+ #: application/admin/GeneralConfig.php:63
295
+ #: application/templates/data_coupon.php:41
296
+ msgid "End date: %s"
297
+ msgstr ""
298
+
299
+ #: application/admin/GeneralConfig.php:64 templates/block_price_alert.php:20
300
+ msgid "Set Alert for"
301
+ msgstr ""
302
+
303
+ #: application/admin/GeneralConfig.php:65 templates/block_price_history.php:20
304
+ msgid "Price History for"
305
+ msgstr ""
306
+
307
+ #: application/admin/GeneralConfig.php:66 templates/block_price_alert.php:25
308
+ msgid "Create Your Free Price Drop Alert!"
309
+ msgstr ""
310
+
311
+ #: application/admin/GeneralConfig.php:67
312
+ #: application/templates/blocks/price_alert_inline.php:25
313
+ msgid "Wait For A Price Drop"
314
+ msgstr ""
315
+
316
+ #: application/admin/GeneralConfig.php:68
317
+ #: application/templates/blocks/price_alert_inline.php:33
318
+ #: application/templates/blocks/price_alert_inline.php:34
319
+ msgid "Your Email"
320
+ msgstr ""
321
+
322
+ #: application/admin/GeneralConfig.php:69
323
+ #: application/templates/blocks/price_alert_inline.php:37
324
+ #: application/templates/blocks/price_alert_inline.php:43
325
+ msgid "Desired Price"
326
+ msgstr ""
327
+
328
+ #: application/admin/GeneralConfig.php:70
329
+ #: application/templates/blocks/price_alert_inline.php:48
330
+ msgid "SET ALERT"
331
+ msgstr ""
332
+
333
+ #: application/admin/GeneralConfig.php:71
334
+ #: application/templates/blocks/price_alert_inline.php:63
335
+ msgid "You will receive a notification when the price drops."
336
+ msgstr ""
337
+
338
+ #: application/admin/GeneralConfig.php:72
339
+ #: application/templates/blocks/price_alert_inline.php:59
340
+ msgid "I agree to the %s."
341
+ msgstr ""
342
+
343
+ #: application/admin/GeneralConfig.php:73
344
+ #: application/templates/blocks/price_alert_inline.php:58
345
+ msgid "Privacy Policy"
346
+ msgstr ""
347
+
348
+ #: application/admin/GeneralConfig.php:74
349
+ msgid "Sorry. No products found."
350
+ msgstr ""
351
+
352
+ #: application/admin/GeneralConfig.php:75
353
+ msgid "Search Results for \"%s\""
354
  msgstr ""
355
 
356
+ #: application/admin/GeneralConfig.php:77
357
+ #: application/helpers/TemplateHelper.php:771
358
+ msgid "today"
359
  msgstr ""
360
 
361
+ #: application/admin/GeneralConfig.php:78
362
+ #: application/helpers/TemplateHelper.php:777
363
+ msgid "%d day ago"
364
  msgstr ""
365
 
366
+ #: application/admin/GeneralConfig.php:79
367
+ #: application/helpers/TemplateHelper.php:775
368
+ msgid "%d days ago"
369
  msgstr ""
370
 
371
+ #: application/admin/GeneralConfig.php:433
372
+ msgid "Buy Now"
373
  msgstr ""
374
 
375
+ #: application/admin/GeneralConfig.php:443
376
+ #: application/helpers/TemplateHelper.php:753
377
+ msgid "Shop Sale"
378
+ msgstr ""
379
+
380
+ #: application/admin/PrefillController.php:37
381
+ #: application/admin/views/prefill.php:116
382
+ msgid "Future"
383
+ msgstr ""
384
+
385
+ #: application/components/ContentManager.php:483
386
  #: application/modules/Market/templates/data_item.php:128
387
  msgid "Pros:"
388
  msgstr ""
389
 
390
+ #: application/components/ContentManager.php:485
391
  #: application/modules/Market/templates/data_item.php:129
392
  msgid "Cons:"
393
  msgstr ""
394
 
395
+ #: application/components/ContentManager.php:573
396
  msgid "Rating"
397
  msgstr ""
398
 
399
+ #: application/helpers/TemplateHelper.php:39
400
+ #: application/helpers/TemplateHelper.php:60
401
  msgid "number_format_decimal_point"
402
  msgstr ""
403
 
404
+ #: application/helpers/TemplateHelper.php:40
405
+ #: application/helpers/TemplateHelper.php:61
406
  msgid "number_format_thousands_sep"
407
  msgstr ""
408
 
409
+ #: application/helpers/TemplateHelper.php:123
410
  msgid "d"
411
  msgstr ""
412
 
413
+ #: application/helpers/TemplateHelper.php:125
414
  msgid "h"
415
  msgstr ""
416
 
417
+ #: application/helpers/TemplateHelper.php:127
418
+ #: application/helpers/TemplateHelper.php:129
419
+ #: application/templates/blocks/item_after_price_row.php:45
420
  msgid "m"
421
  msgstr ""
422
 
423
+ #: application/helpers/TemplateHelper.php:748
 
 
 
 
 
 
 
424
  msgid "BUY NOW"
425
  msgstr ""
426
 
427
+ #: application/helpers/TemplateHelper.php:785
428
+ msgid "As an Amazon associate I earn from qualifying purchases."
 
 
 
 
 
 
 
 
429
  msgstr ""
430
 
431
+ #: application/helpers/TemplateHelper.php:785
432
  msgid ""
433
  "Product prices and availability are accurate as of the date/time indicated "
434
  "and are subject to change. Any price and availability information displayed "
435
  "on Amazon at the time of purchase will apply to the purchase of this product."
436
  msgstr ""
437
 
 
 
 
 
 
 
 
 
438
  #: application/modules/AE/templates/data_grid.php:8
439
  #: application/modules/AdmitadProducts/templates/data_grid.php:8
440
  #: application/modules/Affiliatewindow/templates/data_grid.php:8
450
  #: application/modules/Daisycon/templates/data_grid.php:9
451
  #: application/modules/Ebay/templates/data_grid.php:9
452
  #: application/modules/Envato/templates/data_grid.php:9
453
+ #: application/modules/Feed/templates/data_grid.php:8
454
  #: application/modules/Flipkart/templates/data_grid.php:9
455
  #: application/modules/GdeSlon/templates/data_grid.php:9
456
  #: application/modules/Impactradius/templates/data_grid.php:9
489
  #: application/modules/Daisycon/templates/data_item.php:9
490
  #: application/modules/Ebay/templates/data_item.php:9
491
  #: application/modules/Envato/templates/data_item.php:9
492
+ #: application/modules/Feed/templates/data_item.php:8
493
  #: application/modules/Flipkart/templates/data_item.php:9
494
  #: application/modules/GdeSlon/templates/data_item.php:9
495
  #: application/modules/Impactradius/templates/data_item.php:9
529
  #: application/modules/Daisycon/templates/data_list.php:8
530
  #: application/modules/Ebay/templates/data_list.php:8
531
  #: application/modules/Envato/templates/data_list.php:8
532
+ #: application/modules/Feed/templates/data_list.php:7
533
  #: application/modules/Flipkart/templates/data_list.php:8
534
  #: application/modules/GdeSlon/templates/data_list.php:8
535
  #: application/modules/Impactradius/templates/data_list.php:8
567
  #: application/modules/CjProducts/templates/data_price_tracker_alert.php:9
568
  #: application/modules/Daisycon/templates/data_price_tracker_alert.php:9
569
  #: application/modules/Ebay/templates/data_price_tracker_alert.php:9
570
+ #: application/modules/Feed/templates/data_price_tracker_alert.php:8
571
  #: application/modules/Flipkart/templates/data_price_tracker_alert.php:9
572
  #: application/modules/GdeSlon/templates/data_price_tracker_alert.php:9
573
  #: application/modules/Impactradius/templates/data_price_tracker_alert.php:9
616
  msgid "Too low to display"
617
  msgstr ""
618
 
 
 
 
 
 
 
619
  #: application/modules/Amazon/templates/data_compare.php:86
 
 
 
620
  msgid "new"
621
  msgstr ""
622
 
623
  #: application/modules/Amazon/templates/data_compare.php:88
624
  #: application/modules/Amazon/templates/data_compare.php:93
 
 
 
 
 
 
 
625
  msgid "from"
626
  msgstr ""
627
 
628
  #: application/modules/Amazon/templates/data_compare.php:93
 
 
 
629
  msgid "used"
630
  msgstr ""
631
 
636
  msgid "Shop Now"
637
  msgstr ""
638
 
 
 
 
 
 
 
 
 
 
 
 
639
  #: application/modules/Amazon/templates/data_compare.php:169
640
  #: application/modules/Ozon/templates/data_compare.php:140
641
  msgid "User Reviews"
805
  msgid "Tile"
806
  msgstr ""
807
 
808
+ #: application/templates/blocks/item_after_price_row.php:32
809
  msgid "Bids:"
810
  msgstr ""
811
 
812
+ #: application/templates/blocks/item_after_price_row.php:37
813
  msgid "Item condition:"
814
  msgstr ""
815
 
816
+ #: application/templates/blocks/item_after_price_row.php:44
817
  msgid "Time left:"
818
  msgstr ""
819
 
820
+ #: application/templates/blocks/item_after_price_row.php:49
821
  msgid "Ended:"
822
  msgstr ""
823
 
824
+ #: application/templates/blocks/item_after_price_row.php:59
825
  msgid "EEK:"
826
  msgstr ""
827
 
 
 
 
 
828
  #: application/templates/blocks/item_reviews.php:29
829
  msgid "User reviews"
830
  msgstr ""
833
  msgid "View all reviews"
834
  msgstr ""
835
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
836
  #: application/templates/blocks/price_history.php:10
837
  msgid "Price History"
838
  msgstr ""
839
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
840
  #: templates/block_buttons_row.php:16
841
  msgid "%s at %s"
842
  msgstr ""
873
  msgid "Price alert for lowest price product"
874
  msgstr ""
875
 
 
 
 
 
 
 
 
 
876
  #: templates/block_price_comparison.php:9
877
  msgid "Price comparison widget"
878
  msgstr ""
879
 
 
 
 
 
 
 
880
  #: templates/block_price_history.php:9
881
  msgid "Price history for lowest price product"
882
  msgstr ""
883
 
 
 
 
 
884
  #: templates/block_price_statistics.php:10
885
  msgid "Price statistics"
886
  msgstr ""
905
  msgid "The lowest price of %s was obtained on %s."
906
  msgstr ""
907
 
908
+ #: templates/block_top_listing.php:42
909
+ msgid "Best choice"
910
+ msgstr ""
911
+
912
+ #: templates/block_top_listing.php:44
913
+ msgid "Recommended"
914
+ msgstr ""
915
+
916
+ #: templates/block_top_listing.php:46
917
+ msgid "High quality"
918
+ msgstr ""
919
+
920
  #. Plugin Name of the plugin/theme
921
  msgid "Content Egg<stripfree> Pro</stripfree>"
922
  msgstr ""
loader.php CHANGED
@@ -10,8 +10,8 @@ defined( '\ABSPATH' ) || exit;
10
  * AutoLoader class file
11
  *
12
  * @author keywordrush.com <support@keywordrush.com>
13
- * @link http://www.keywordrush.com/
14
- * @copyright Copyright &copy; 2015 keywordrush.com
15
  */
16
  class AutoLoader {
17
 
10
  * AutoLoader class file
11
  *
12
  * @author keywordrush.com <support@keywordrush.com>
13
+ * @link https://www.keywordrush.com
14
+ * @copyright Copyright &copy; 2021 keywordrush.com
15
  */
16
  class AutoLoader {
17
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Content Egg ===
2
  Contributors: keywordrush
3
- Tags: content, affiliate, autoblogging, affilinet, coupons, linkshare, shareasale, amazon, flickr, youtube, commission junction, aliexpress, cj, images, wikipedia, freebase, ecommerce, links, shortcode, monetize, search engine optimization, ebay, zanox, moneymaking, price comparison, google images, timesaving, clickbank, linkshare, pixabay, admitad, affilitewindow, optimisemedia, tradedoubler, flipkart, paytm, price alert, tracker, impactradius, pepperjam, pepperjamnetwork, udemy, envato, tradetracker, viglink, skimlinks
4
  Requires at least: 4.6.1
5
- Tested up to: 5.6
6
  Requires PHP: 5.4
7
- Stable tag: 5.1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -12,11 +12,32 @@ All in one solution for creating affiliate websites.
12
 
13
  == Description ==
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  = Plugin features =
16
 
17
  * Easily adding offers from different affiliate systems by keyword.
 
18
  * Search and add to post additional relevant content: videos, images, news, etc.
19
- * Autoblogging - monetizing and content auto pilot.
20
  * Multilanguage: make site on any language.
21
  * Automatic updating prices and offers.
22
  * WooCommerce products synchronization.
@@ -27,40 +48,38 @@ All in one solution for creating affiliate websites.
27
  * Price tracker and price alert.
28
  * Easy interface: add all content from post admin page.
29
  * Custom output templates.
 
30
  * Works with any theme.
31
  * Works through official API.
32
  * Works with Wordpress shortcodes.
33
 
34
- [youtube https://www.youtube.com/watch?v=SdDfdJaVRlg]
35
 
36
- = How it works? =
37
 
38
- * You just enter a keyword and click "Search"
39
- * Plugin searches and displays the results to you.
40
- * Now you can choose what to add to the post and edit the results.
41
- * It's very simple and fast: multiple search and add data directly to the post editing page without reloading the page.
42
- * You can also setup autoblogging and plugin will create posts with relevant content by your schedule.
43
 
44
- > <strong>CE PRO version</strong><br>
45
  >Do you want to get even more? Pro version offers tons of additional modules and extended features.
46
  >
47
- >Modules of free version: CJ Links, Coupon, GdeSlon, GoogleImages, Offer, Pixabay, Related Keywords, RSS Fetcher, Skimlinks Coupons, Youtube.
48
  >
49
- >Additional modules of PRO version: Admitad Coupons, Aliexpress, Amazon (all locales), Avantlink, Bol.com, CJ.com products, Daisycon, Ebay, Envato, Flipkart, Impactradius, Kelkoogroup, Rakuten LinkShare, Linkwise, Lomadee.com, Optimisemedia, Paytm.com, Pepperjam, Shareasale, Tradedoubler, Tradetracker, Udemy, Viglink, Walmart, Bing Images, Flickr Images, Google Books, Google Images, Google News, Qwant Images, Twitter and more...
50
  >
51
- >Visit us at [www.keywordrush.com/contentegg](https://www.keywordrush.com/contentegg "Content Egg Pro").
52
 
53
  = Autoblogging =
54
 
55
  Content Egg plugin can create sites on autopilot! Everything you need - it's just setup once autoblogging, type keywords and plugin will find products, images, videos and other content based on your schedule.
56
- [youtube https://www.youtube.com/watch?v=i0vLXnLOB3I]
 
57
 
58
  == Installation ==
59
 
60
  **Requirements**
61
 
62
- * PHP 5.4+ (note, Wordpress without plugin needs PHP 5.2.4+).
63
- * Wordpress 4.6.1+.
64
 
65
  This section describes how to install the plugin and get it working.
66
 
@@ -69,24 +88,28 @@ This section describes how to install the plugin and get it working.
69
  1. Configure plugin settings
70
  1. You can find manual how to configure each module - [Content Egg User Guide](https://ce-docs.keywordrush.com/)
71
 
72
- == Frequently Asked Questions ==
73
-
74
- = Is it difficult to make templates for the modules? =
75
-
76
- If you can do any Wordpress page templates – you can do also templates for Content Egg. It's just html code with output variables and macros.
77
-
78
  == Screenshots ==
79
 
80
- 1. Searching keywords inside post
81
- 2. Settings of modules
82
- 3. Amazon product cart output template
83
- 4. Amazon grid output template
84
- 5. CJ Links output template
85
- 6. Output template
86
- 7. Price Tracker/Alert
87
 
88
  == Changelog ==
89
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
  = 5.1.0 =
92
 
1
  === Content Egg ===
2
  Contributors: keywordrush
3
+ Tags: content, affiliate, autoblogging, affilinet, coupons, linkshare, shareasale, amazon, flickr, youtube, commission junction, aliexpress, cj, images, wikipedia, freebase, ecommerce, links, shortcode, monetize, search engine optimization, ebay, zanox, moneymaking, price comparison, google images, timesaving, clickbank, linkshare, pixabay, admitad, affilitewindow, optimisemedia, tradedoubler, flipkart, paytm, price alert, tracker, impactradius, pepperjam, udemy, envato, tradetracker, viglink, skimlinks
4
  Requires at least: 4.6.1
5
+ Tested up to: 5.7.2
6
  Requires PHP: 5.4
7
+ Stable tag: 5.2.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
12
 
13
  == Description ==
14
 
15
+ = What is this plugin for? =
16
+
17
+ * Product revews and niche blog
18
+ * Price comparison site
19
+ * Daily deals website
20
+ * WooCommerce directories
21
+ * Sites on autopilot
22
+
23
+ Official website: [www.keywordrush.com](https://www.keywordrush.com/ "KeywordRush")
24
+ Demo: [demo.keywordrush.com](https://demo.keywordrush.com/content-egg-pro-output-demo/ "Content Egg output demo")
25
+ Documentation: [ce-docs.keywordrush.com](https://ce-docs.keywordrush.com/ "Content Egg output demo")
26
+
27
+ = How it works? =
28
+
29
+ * Activate your modules
30
+ * Add offers
31
+ * Start to earn
32
+
33
+ [youtube https://www.youtube.com/watch?v=7oUazXI2-ic]
34
+
35
  = Plugin features =
36
 
37
  * Easily adding offers from different affiliate systems by keyword.
38
+ * Special module to work with CSV feeds.
39
  * Search and add to post additional relevant content: videos, images, news, etc.
40
+ * Autoblogging.
41
  * Multilanguage: make site on any language.
42
  * Automatic updating prices and offers.
43
  * WooCommerce products synchronization.
48
  * Price tracker and price alert.
49
  * Easy interface: add all content from post admin page.
50
  * Custom output templates.
51
+ * Affiliate Egg integration.
52
  * Works with any theme.
53
  * Works through official API.
54
  * Works with Wordpress shortcodes.
55
 
56
+ = Import products in Woocommerce from CSV =
57
 
58
+ Content Egg has special module to work with product feeds.
59
 
60
+ [youtube https://www.youtube.com/watch?v=dfs9ojO_OD8]
 
 
 
 
61
 
62
+ > <strong>Content Egg PRO version</strong><br>
63
  >Do you want to get even more? Pro version offers tons of additional modules and extended features.
64
  >
65
+ >Modules of free version: CSV Feed, CJ Links, Coupon, GdeSlon, GoogleImages, Offer, Pixabay, Related Keywords, RSS Fetcher, Skimlinks Coupons, Viglink, Youtube.
66
  >
67
+ >Additional modules of PRO version: Aliexpress, Amazon, Avantlink, AWIN, Bol.com, CityAds, CJ Products, Clickbank, Daisycon, eBay, Envato, Flipkart, Impactradius, Kelkoogroup, Rakuten LinkShare, Linkwise, Lomadee.com, Paytm.com, Pepperjam, Shareasale, Tradedoubler, Tradetracker, Udemy, Walmart, Webgains.
68
  >
69
+ >Visit us at [www.keywordrush.com/contentegg](https://www.keywordrush.com/contentegg "Content Egg PRO").
70
 
71
  = Autoblogging =
72
 
73
  Content Egg plugin can create sites on autopilot! Everything you need - it's just setup once autoblogging, type keywords and plugin will find products, images, videos and other content based on your schedule.
74
+
75
+ [youtube https://www.youtube.com/watch?v=-TjUgbm0Oks]
76
 
77
  == Installation ==
78
 
79
  **Requirements**
80
 
81
+ * PHP version 5.4 or higher.
82
+ * Wordpress 4.6.1 or higher.
83
 
84
  This section describes how to install the plugin and get it working.
85
 
88
  1. Configure plugin settings
89
  1. You can find manual how to configure each module - [Content Egg User Guide](https://ce-docs.keywordrush.com/)
90
 
 
 
 
 
 
 
91
  == Screenshots ==
92
 
93
+ 1. Modules
94
+ 2. Feed module settings
95
+ 3. Products search
96
+ 4. Output demo 1
97
+ 5. Output demo 2
98
+ 6. Price history
 
99
 
100
  == Changelog ==
101
 
102
+ = 5.2.0 =
103
+
104
+ * New: Feed module to work with custom CSV feeds.
105
+ * New: Viglink module.
106
+ * New: Merchant settings: Shop info.
107
+ * New: Block template: Top listing.
108
+ * New: Price alert email templates.
109
+ * New: Price alerts option: General alert for all products in a post.
110
+ * New: Frontend text settings.
111
+ * Improvement: Compatibility with WooCommerce 5.1.0.
112
+ * Improvement: Glyphicons are no longer used on frontend.
113
 
114
  = 5.1.0 =
115
 
res/app/app.js CHANGED
@@ -233,7 +233,7 @@ contentEgg.config(function ($sceDelegateProvider) {
233
  contentEgg.directive('onEnter', function () {
234
 
235
  var linkFn = function (scope, element, attrs) {
236
- element.bind("keypress", function (event) {
237
  if (event.which === 13) {
238
  scope.$apply(function () {
239
  scope.$eval(attrs.onEnter);
@@ -258,7 +258,7 @@ contentEgg.directive('imageloaded', [
258
  link: function (scope, element, attrs) {
259
  var cssClass = attrs.loadedclass;
260
 
261
- element.bind('load', function (e) {
262
  angular.element(element).addClass(cssClass);
263
  });
264
  }
@@ -301,7 +301,7 @@ contentEgg.directive('ngConfirmClick', function () {
301
  priority: -1,
302
  restrict: 'A',
303
  link: function (scope, element, attrs) {
304
- element.bind('click', function (e) {
305
  var message = attrs.ngConfirmClick;
306
  if (message && !confirm(message)) {
307
  e.stopImmediatePropagation();
233
  contentEgg.directive('onEnter', function () {
234
 
235
  var linkFn = function (scope, element, attrs) {
236
+ element.on('keypress', function (event) {
237
  if (event.which === 13) {
238
  scope.$apply(function () {
239
  scope.$eval(attrs.onEnter);
258
  link: function (scope, element, attrs) {
259
  var cssClass = attrs.loadedclass;
260
 
261
+ element.on('load', function (e) {
262
  angular.element(element).addClass(cssClass);
263
  });
264
  }
301
  priority: -1,
302
  restrict: 'A',
303
  link: function (scope, element, attrs) {
304
+ element.on('click', function (e) {
305
  var message = attrs.ngConfirmClick;
306
  if (message && !confirm(message)) {
307
  e.stopImmediatePropagation();
res/bootstrap/css/egg-bootstrap.css CHANGED
@@ -1,8 +1,8 @@
1
  /*!
2
  * Modified version of Bootstrap CSS
3
  * @author keywordrush.com <support@keywordrush.com>
4
- * @link http://www.keywordrush.com/
5
- * @copyright Copyright &copy; 2018 keywordrush.com
6
  *
7
  * Original work Copyright
8
  * Bootstrap v3.3.4 (http://getbootstrap.com)
@@ -10,811 +10,6 @@
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
  */
12
 
13
- @font-face {
14
- font-family: 'Glyphicons Halflings';
15
- src: url('../fonts/glyphicons-halflings-regular.eot');
16
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
17
- }
18
- .glyphicon {
19
- position: relative;
20
- top: 1px;
21
- display: inline-block;
22
- font-family: 'Glyphicons Halflings';
23
- font-style: normal;
24
- font-weight: normal;
25
- line-height: 1;
26
-
27
- -webkit-font-smoothing: antialiased;
28
- -moz-osx-font-smoothing: grayscale;
29
- }
30
- .glyphicon-asterisk:before {
31
- content: "\002a";
32
- }
33
- .glyphicon-plus:before {
34
- content: "\002b";
35
- }
36
- .glyphicon-euro:before,
37
- .glyphicon-eur:before {
38
- content: "\20ac";
39
- }
40
- .glyphicon-minus:before {
41
- content: "\2212";
42
- }
43
- .glyphicon-cloud:before {
44
- content: "\2601";
45
- }
46
- .glyphicon-envelope:before {
47
- content: "\2709";
48
- }
49
- .glyphicon-pencil:before {
50
- content: "\270f";
51
- }
52
- .glyphicon-glass:before {
53
- content: "\e001";
54
- }
55
- .glyphicon-music:before {
56
- content: "\e002";
57
- }
58
- .glyphicon-search:before {
59
- content: "\e003";
60
- }
61
- .glyphicon-heart:before {
62
- content: "\e005";
63
- }
64
- .glyphicon-star:before {
65
- content: "\e006";
66
- }
67
- .glyphicon-star-empty:before {
68
- content: "\e007";
69
- }
70
- .glyphicon-user:before {
71
- content: "\e008";
72
- }
73
- .glyphicon-film:before {
74
- content: "\e009";
75
- }
76
- .glyphicon-th-large:before {
77
- content: "\e010";
78
- }
79
- .glyphicon-th:before {
80
- content: "\e011";
81
- }
82
- .glyphicon-th-list:before {
83
- content: "\e012";
84
- }
85
- .glyphicon-ok:before {
86
- content: "\e013";
87
- }
88
- .glyphicon-remove:before {
89
- content: "\e014";
90
- }
91
- .glyphicon-zoom-in:before {
92
- content: "\e015";
93
- }
94
- .glyphicon-zoom-out:before {
95
- content: "\e016";
96
- }
97
- .glyphicon-off:before {
98
- content: "\e017";
99
- }
100
- .glyphicon-signal:before {
101
- content: "\e018";
102
- }
103
- .glyphicon-cog:before {
104
- content: "\e019";
105
- }
106
- .glyphicon-trash:before {
107
- content: "\e020";
108
- }
109
- .glyphicon-home:before {
110
- content: "\e021";
111
- }
112
- .glyphicon-file:before {
113
- content: "\e022";
114
- }
115
- .glyphicon-time:before {
116
- content: "\e023";
117
- }
118
- .glyphicon-road:before {
119
- content: "\e024";
120
- }
121
- .glyphicon-download-alt:before {
122
- content: "\e025";
123
- }
124
- .glyphicon-download:before {
125
- content: "\e026";
126
- }
127
- .glyphicon-upload:before {
128
- content: "\e027";
129
- }
130
- .glyphicon-inbox:before {
131
- content: "\e028";
132
- }
133
- .glyphicon-play-circle:before {
134
- content: "\e029";
135
- }
136
- .glyphicon-repeat:before {
137
- content: "\e030";
138
- }
139
- .glyphicon-refresh:before {
140
- content: "\e031";
141
- }
142
- .glyphicon-list-alt:before {
143
- content: "\e032";
144
- }
145
- .glyphicon-lock:before {
146
- content: "\e033";
147
- }
148
- .glyphicon-flag:before {
149
- content: "\e034";
150
- }
151
- .glyphicon-headphones:before {
152
- content: "\e035";
153
- }
154
- .glyphicon-volume-off:before {
155
- content: "\e036";
156
- }
157
- .glyphicon-volume-down:before {
158
- content: "\e037";
159
- }
160
- .glyphicon-volume-up:before {
161
- content: "\e038";
162
- }
163
- .glyphicon-qrcode:before {
164
- content: "\e039";
165
- }
166
- .glyphicon-barcode:before {
167
- content: "\e040";
168
- }
169
- .glyphicon-tag:before {
170
- content: "\e041";
171
- }
172
- .glyphicon-tags:before {
173
- content: "\e042";
174
- }
175
- .glyphicon-book:before {
176
- content: "\e043";
177
- }
178
- .glyphicon-bookmark:before {
179
- content: "\e044";
180
- }
181
- .glyphicon-print:before {
182
- content: "\e045";
183
- }
184
- .glyphicon-camera:before {
185
- content: "\e046";
186
- }
187
- .glyphicon-font:before {
188
- content: "\e047";
189
- }
190
- .glyphicon-bold:before {
191
- content: "\e048";
192
- }
193
- .glyphicon-italic:before {
194
- content: "\e049";
195
- }
196
- .glyphicon-text-height:before {
197
- content: "\e050";
198
- }
199
- .glyphicon-text-width:before {
200
- content: "\e051";
201
- }
202
- .glyphicon-align-left:before {
203
- content: "\e052";
204
- }
205
- .glyphicon-align-center:before {
206
- content: "\e053";
207
- }
208
- .glyphicon-align-right:before {
209
- content: "\e054";
210
- }
211
- .glyphicon-align-justify:before {
212
- content: "\e055";
213
- }
214
- .glyphicon-list:before {
215
- content: "\e056";
216
- }
217
- .glyphicon-indent-left:before {
218
- content: "\e057";
219
- }
220
- .glyphicon-indent-right:before {
221
- content: "\e058";
222
- }
223
- .glyphicon-facetime-video:before {
224
- content: "\e059";
225
- }
226
- .glyphicon-picture:before {
227
- content: "\e060";
228
- }
229
- .glyphicon-map-marker:before {
230
- content: "\e062";
231
- }
232
- .glyphicon-adjust:before {
233
- content: "\e063";
234
- }
235
- .glyphicon-tint:before {
236
- content: "\e064";
237
- }
238
- .glyphicon-edit:before {
239
- content: "\e065";
240
- }
241
- .glyphicon-share:before {
242
- content: "\e066";
243
- }
244
- .glyphicon-check:before {
245
- content: "\e067";
246
- }
247
- .glyphicon-move:before {
248
- content: "\e068";
249
- }
250
- .glyphicon-step-backward:before {
251
- content: "\e069";
252
- }
253
- .glyphicon-fast-backward:before {
254
- content: "\e070";
255
- }
256
- .glyphicon-backward:before {
257
- content: "\e071";
258
- }
259
- .glyphicon-play:before {
260
- content: "\e072";
261
- }
262
- .glyphicon-pause:before {
263
- content: "\e073";
264
- }
265
- .glyphicon-stop:before {
266
- content: "\e074";
267
- }
268
- .glyphicon-forward:before {
269
- content: "\e075";
270
- }
271
- .glyphicon-fast-forward:before {
272
- content: "\e076";
273
- }
274
- .glyphicon-step-forward:before {
275
- content: "\e077";
276
- }
277
- .glyphicon-eject:before {
278
- content: "\e078";
279
- }
280
- .glyphicon-chevron-left:before {
281
- content: "\e079";
282
- }
283
- .glyphicon-chevron-right:before {
284
- content: "\e080";
285
- }
286
- .glyphicon-plus-sign:before {
287
- content: "\e081";
288
- }
289
- .glyphicon-minus-sign:before {
290
- content: "\e082";
291
- }
292
- .glyphicon-remove-sign:before {
293
- content: "\e083";
294
- }
295
- .glyphicon-ok-sign:before {
296
- content: "\e084";
297
- }
298
- .glyphicon-question-sign:before {
299
- content: "\e085";
300
- }
301
- .glyphicon-info-sign:before {
302
- content: "\e086";
303
- }
304
- .glyphicon-screenshot:before {
305
- content: "\e087";
306
- }
307
- .glyphicon-remove-circle:before {
308
- content: "\e088";
309
- }
310
- .glyphicon-ok-circle:before {
311
- content: "\e089";
312
- }
313
- .glyphicon-ban-circle:before {
314
- content: "\e090";
315
- }
316
- .glyphicon-arrow-left:before {
317
- content: "\e091";
318
- }
319
- .glyphicon-arrow-right:before {
320
- content: "\e092";
321
- }
322
- .glyphicon-arrow-up:before {
323
- content: "\e093";
324
- }
325
- .glyphicon-arrow-down:before {
326
- content: "\e094";
327
- }
328
- .glyphicon-share-alt:before {
329
- content: "\e095";
330
- }
331
- .glyphicon-resize-full:before {
332
- content: "\e096";
333
- }
334
- .glyphicon-resize-small:before {
335
- content: "\e097";
336
- }
337
- .glyphicon-exclamation-sign:before {
338
- content: "\e101";
339
- }
340
- .glyphicon-gift:before {
341
- content: "\e102";
342
- }
343
- .glyphicon-leaf:before {
344
- content: "\e103";
345
- }
346
- .glyphicon-fire:before {
347
- content: "\e104";
348
- }
349
- .glyphicon-eye-open:before {
350
- content: "\e105";
351
- }
352
- .glyphicon-eye-close:before {
353
- content: "\e106";
354
- }
355
- .glyphicon-warning-sign:before {
356
- content: "\e107";
357
- }
358
- .glyphicon-plane:before {
359
- content: "\e108";
360
- }
361
- .glyphicon-calendar:before {
362
- content: "\e109";
363
- }
364
- .glyphicon-random:before {
365
- content: "\e110";
366
- }
367
- .glyphicon-comment:before {
368
- content: "\e111";
369
- }
370
- .glyphicon-magnet:before {
371
- content: "\e112";
372
- }
373
- .glyphicon-chevron-up:before {
374
- content: "\e113";
375
- }
376
- .glyphicon-chevron-down:before {
377
- content: "\e114";
378
- }
379
- .glyphicon-retweet:before {
380
- content: "\e115";
381
- }
382
- .glyphicon-shopping-cart:before {
383
- content: "\e116";
384
- }
385
- .glyphicon-folder-close:before {
386
- content: "\e117";
387
- }
388
- .glyphicon-folder-open:before {
389
- content: "\e118";
390
- }
391
- .glyphicon-resize-vertical:before {
392
- content: "\e119";
393
- }
394
- .glyphicon-resize-horizontal:before {
395
- content: "\e120";
396
- }
397
- .glyphicon-hdd:before {
398
- content: "\e121";
399
- }
400
- .glyphicon-bullhorn:before {
401
- content: "\e122";
402
- }
403
- .glyphicon-bell:before {
404
- content: "\e123";
405
- }
406
- .glyphicon-certificate:before {
407
- content: "\e124";
408
- }
409
- .glyphicon-thumbs-up:before {
410
- content: "\e125";
411
- }
412
- .glyphicon-thumbs-down:before {
413
- content: "\e126";
414
- }
415
- .glyphicon-hand-right:before {
416
- content: "\e127";
417
- }
418
- .glyphicon-hand-left:before {
419
- content: "\e128";
420
- }
421
- .glyphicon-hand-up:before {
422
- content: "\e129";
423
- }
424
- .glyphicon-hand-down:before {
425
- content: "\e130";
426
- }
427
- .glyphicon-circle-arrow-right:before {
428
- content: "\e131";
429
- }
430
- .glyphicon-circle-arrow-left:before {
431
- content: "\e132";
432
- }
433
- .glyphicon-circle-arrow-up:before {
434
- content: "\e133";
435
- }
436
- .glyphicon-circle-arrow-down:before {
437
- content: "\e134";
438
- }
439
- .glyphicon-globe:before {
440
- content: "\e135";
441
- }
442
- .glyphicon-wrench:before {
443
- content: "\e136";
444
- }
445
- .glyphicon-tasks:before {
446
- content: "\e137";
447
- }
448
- .glyphicon-filter:before {
449
- content: "\e138";
450
- }
451
- .glyphicon-briefcase:before {
452
- content: "\e139";
453
- }
454
- .glyphicon-fullscreen:before {
455
- content: "\e140";
456
- }
457
- .glyphicon-dashboard:before {
458
- content: "\e141";
459
- }
460
- .glyphicon-paperclip:before {
461
- content: "\e142";
462
- }
463
- .glyphicon-heart-empty:before {
464
- content: "\e143";
465
- }
466
- .glyphicon-link:before {
467
- content: "\e144";
468
- }
469
- .glyphicon-phone:before {
470
- content: "\e145";
471
- }
472
- .glyphicon-pushpin:before {
473
- content: "\e146";
474
- }
475
- .glyphicon-usd:before {
476
- content: "\e148";
477
- }
478
- .glyphicon-gbp:before {
479
- content: "\e149";
480
- }
481
- .glyphicon-sort:before {
482
- content: "\e150";
483
- }
484
- .glyphicon-sort-by-alphabet:before {
485
- content: "\e151";
486
- }
487
- .glyphicon-sort-by-alphabet-alt:before {
488
- content: "\e152";
489
- }
490
- .glyphicon-sort-by-order:before {
491
- content: "\e153";
492
- }
493
- .glyphicon-sort-by-order-alt:before {
494
- content: "\e154";
495
- }
496
- .glyphicon-sort-by-attributes:before {
497
- content: "\e155";
498
- }
499
- .glyphicon-sort-by-attributes-alt:before {
500
- content: "\e156";
501
- }
502
- .glyphicon-unchecked:before {
503
- content: "\e157";
504
- }
505
- .glyphicon-expand:before {
506
- content: "\e158";
507
- }
508
- .glyphicon-collapse-down:before {
509
- content: "\e159";
510
- }
511
- .glyphicon-collapse-up:before {
512
- content: "\e160";
513
- }
514
- .glyphicon-log-in:before {
515
- content: "\e161";
516
- }
517
- .glyphicon-flash:before {
518
- content: "\e162";
519
- }
520
- .glyphicon-log-out:before {
521
- content: "\e163";
522
- }
523
- .glyphicon-new-window:before {
524
- content: "\e164";
525
- }
526
- .glyphicon-record:before {
527
- content: "\e165";
528
- }
529
- .glyphicon-save:before {
530
- content: "\e166";
531
- }
532
- .glyphicon-open:before {
533
- content: "\e167";
534
- }
535
- .glyphicon-saved:before {
536
- content: "\e168";
537
- }
538
- .glyphicon-import:before {
539
- content: "\e169";
540
- }
541
- .glyphicon-export:before {
542
- content: "\e170";
543
- }
544
- .glyphicon-send:before {
545
- content: "\e171";
546
- }
547
- .glyphicon-floppy-disk:before {
548
- content: "\e172";
549
- }
550
- .glyphicon-floppy-saved:before {
551
- content: "\e173";
552
- }
553
- .glyphicon-floppy-remove:before {
554
- content: "\e174";
555
- }
556
- .glyphicon-floppy-save:before {
557
- content: "\e175";
558
- }
559
- .glyphicon-floppy-open:before {
560
- content: "\e176";
561
- }
562
- .glyphicon-credit-card:before {
563
- content: "\e177";
564
- }
565
- .glyphicon-transfer:before {
566
- content: "\e178";
567
- }
568
- .glyphicon-cutlery:before {
569
- content: "\e179";
570
- }
571
- .glyphicon-header:before {
572
- content: "\e180";
573
- }
574
- .glyphicon-compressed:before {
575
- content: "\e181";
576
- }
577
- .glyphicon-earphone:before {
578
- content: "\e182";
579
- }
580
- .glyphicon-phone-alt:before {
581
- content: "\e183";
582
- }
583
- .glyphicon-tower:before {
584
- content: "\e184";
585
- }
586
- .glyphicon-stats:before {
587
- content: "\e185";
588
- }
589
- .glyphicon-sd-video:before {
590
- content: "\e186";
591
- }
592
- .glyphicon-hd-video:before {
593
- content: "\e187";
594
- }
595
- .glyphicon-subtitles:before {
596
- content: "\e188";
597
- }
598
- .glyphicon-sound-stereo:before {
599
- content: "\e189";
600
- }
601
- .glyphicon-sound-dolby:before {
602
- content: "\e190";
603
- }
604
- .glyphicon-sound-5-1:before {
605
- content: "\e191";
606
- }
607
- .glyphicon-sound-6-1:before {
608
- content: "\e192";
609
- }
610
- .glyphicon-sound-7-1:before {
611
- content: "\e193";
612
- }
613
- .glyphicon-copyright-mark:before {
614
- content: "\e194";
615
- }
616
- .glyphicon-registration-mark:before {
617
- content: "\e195";
618
- }
619
- .glyphicon-cloud-download:before {
620
- content: "\e197";
621
- }
622
- .glyphicon-cloud-upload:before {
623
- content: "\e198";
624
- }
625
- .glyphicon-tree-conifer:before {
626
- content: "\e199";
627
- }
628
- .glyphicon-tree-deciduous:before {
629
- content: "\e200";
630
- }
631
- .glyphicon-cd:before {
632
- content: "\e201";
633
- }
634
- .glyphicon-save-file:before {
635
- content: "\e202";
636
- }
637
- .glyphicon-open-file:before {
638
- content: "\e203";
639
- }
640
- .glyphicon-level-up:before {
641
- content: "\e204";
642
- }
643
- .glyphicon-copy:before {
644
- content: "\e205";
645
- }
646
- .glyphicon-paste:before {
647
- content: "\e206";
648
- }
649
- .glyphicon-alert:before {
650
- content: "\e209";
651
- }
652
- .glyphicon-equalizer:before {
653
- content: "\e210";
654
- }
655
- .glyphicon-king:before {
656
- content: "\e211";
657
- }
658
- .glyphicon-queen:before {
659
- content: "\e212";
660
- }
661
- .glyphicon-pawn:before {
662
- content: "\e213";
663
- }
664
- .glyphicon-bishop:before {
665
- content: "\e214";
666
- }
667
- .glyphicon-knight:before {
668
- content: "\e215";
669
- }
670
- .glyphicon-baby-formula:before {
671
- content: "\e216";
672
- }
673
- .glyphicon-tent:before {
674
- content: "\26fa";
675
- }
676
- .glyphicon-blackboard:before {
677
- content: "\e218";
678
- }
679
- .glyphicon-bed:before {
680
- content: "\e219";
681
- }
682
- .glyphicon-apple:before {
683
- content: "\f8ff";
684
- }
685
- .glyphicon-erase:before {
686
- content: "\e221";
687
- }
688
- .glyphicon-hourglass:before {
689
- content: "\231b";
690
- }
691
- .glyphicon-lamp:before {
692
- content: "\e223";
693
- }
694
- .glyphicon-duplicate:before {
695
- content: "\e224";
696
- }
697
- .glyphicon-piggy-bank:before {
698
- content: "\e225";
699
- }
700
- .glyphicon-scissors:before {
701
- content: "\e226";
702
- }
703
- .glyphicon-bitcoin:before {
704
- content: "\e227";
705
- }
706
- .glyphicon-btc:before {
707
- content: "\e227";
708
- }
709
- .glyphicon-xbt:before {
710
- content: "\e227";
711
- }
712
- .glyphicon-yen:before {
713
- content: "\00a5";
714
- }
715
- .glyphicon-jpy:before {
716
- content: "\00a5";
717
- }
718
- .glyphicon-ruble:before {
719
- content: "\20bd";
720
- }
721
- .glyphicon-rub:before {
722
- content: "\20bd";
723
- }
724
- .glyphicon-scale:before {
725
- content: "\e230";
726
- }
727
- .glyphicon-ice-lolly:before {
728
- content: "\e231";
729
- }
730
- .glyphicon-ice-lolly-tasted:before {
731
- content: "\e232";
732
- }
733
- .glyphicon-education:before {
734
- content: "\e233";
735
- }
736
- .glyphicon-option-horizontal:before {
737
- content: "\e234";
738
- }
739
- .glyphicon-option-vertical:before {
740
- content: "\e235";
741
- }
742
- .glyphicon-menu-hamburger:before {
743
- content: "\e236";
744
- }
745
- .glyphicon-modal-window:before {
746
- content: "\e237";
747
- }
748
- .glyphicon-oil:before {
749
- content: "\e238";
750
- }
751
- .glyphicon-grain:before {
752
- content: "\e239";
753
- }
754
- .glyphicon-sunglasses:before {
755
- content: "\e240";
756
- }
757
- .glyphicon-text-size:before {
758
- content: "\e241";
759
- }
760
- .glyphicon-text-color:before {
761
- content: "\e242";
762
- }
763
- .glyphicon-text-background:before {
764
- content: "\e243";
765
- }
766
- .glyphicon-object-align-top:before {
767
- content: "\e244";
768
- }
769
- .glyphicon-object-align-bottom:before {
770
- content: "\e245";
771
- }
772
- .glyphicon-object-align-horizontal:before {
773
- content: "\e246";
774
- }
775
- .glyphicon-object-align-left:before {
776
- content: "\e247";
777
- }
778
- .glyphicon-object-align-vertical:before {
779
- content: "\e248";
780
- }
781
- .glyphicon-object-align-right:before {
782
- content: "\e249";
783
- }
784
- .glyphicon-triangle-right:before {
785
- content: "\e250";
786
- }
787
- .glyphicon-triangle-left:before {
788
- content: "\e251";
789
- }
790
- .glyphicon-triangle-bottom:before {
791
- content: "\e252";
792
- }
793
- .glyphicon-triangle-top:before {
794
- content: "\e253";
795
- }
796
- .glyphicon-console:before {
797
- content: "\e254";
798
- }
799
- .glyphicon-superscript:before {
800
- content: "\e255";
801
- }
802
- .glyphicon-subscript:before {
803
- content: "\e256";
804
- }
805
- .glyphicon-menu-left:before {
806
- content: "\e257";
807
- }
808
- .glyphicon-menu-right:before {
809
- content: "\e258";
810
- }
811
- .glyphicon-menu-down:before {
812
- content: "\e259";
813
- }
814
- .glyphicon-menu-up:before {
815
- content: "\e260";
816
- }
817
-
818
  .egg-container {
819
  /* font-family: sans-serif; */
820
  -webkit-text-size-adjust: 100%;
@@ -4965,6 +4160,152 @@ button.egg-container .close {
4965
  background: transparent;
4966
  border: 0;
4967
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4968
  .egg-container .clearfix:before,
4969
  .egg-container .clearfix:after,
4970
  .egg-container .dl-horizontal dd:before,
1
  /*!
2
  * Modified version of Bootstrap CSS
3
  * @author keywordrush.com <support@keywordrush.com>
4
+ * @link https://www.keywordrush.com
5
+ * @copyright Copyright &copy; 2021 keywordrush.com
6
  *
7
  * Original work Copyright
8
  * Bootstrap v3.3.4 (http://getbootstrap.com)
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
  */
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  .egg-container {
14
  /* font-family: sans-serif; */
15
  -webkit-text-size-adjust: 100%;
4160
  background: transparent;
4161
  border: 0;
4162
  }
4163
+ .egg-container .cegg-bi {display: inline-block;vertical-align: -.125em;}
4164
+ .egg-container .cegg-bi {width: 1em;height: 1em;}
4165
+
4166
+ .egg-container .popover {
4167
+ position: absolute;
4168
+ top: 0;
4169
+ left: 0;
4170
+ z-index: 1010;
4171
+ display: none;
4172
+ width: 276px;
4173
+ padding: 1px;
4174
+ text-align: left;
4175
+ white-space: normal;
4176
+ background-color: #ffffff;
4177
+ border: 1px solid #ccc;
4178
+ border: 1px solid rgba(0, 0, 0, 0.2);
4179
+ -webkit-border-radius: 6px;
4180
+ -moz-border-radius: 6px;
4181
+ border-radius: 6px;
4182
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
4183
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
4184
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
4185
+ -webkit-background-clip: padding-box;
4186
+ -moz-background-clip: padding;
4187
+ background-clip: padding-box;
4188
+ }
4189
+
4190
+ .egg-container .popover.top {
4191
+ margin-top: -10px;
4192
+ }
4193
+
4194
+ .egg-container .popover.right {
4195
+ margin-left: 10px;
4196
+ }
4197
+
4198
+ .egg-container .popover.bottom {
4199
+ margin-top: 10px;
4200
+ }
4201
+
4202
+ .egg-container .popover.left {
4203
+ margin-left: -10px;
4204
+ }
4205
+
4206
+ .egg-container .popover-title {
4207
+ padding: 8px 14px;
4208
+ margin: 0;
4209
+ font-size: 14px;
4210
+ font-weight: normal;
4211
+ line-height: 18px;
4212
+ background-color: #f7f7f7;
4213
+ border-bottom: 1px solid #ebebeb;
4214
+ -webkit-border-radius: 5px 5px 0 0;
4215
+ -moz-border-radius: 5px 5px 0 0;
4216
+ border-radius: 5px 5px 0 0;
4217
+ }
4218
+
4219
+ .egg-container .popover-title:empty {
4220
+ display: none;
4221
+ }
4222
+
4223
+ .egg-container .popover-content {
4224
+ padding: 9px 14px;
4225
+ }
4226
+
4227
+ .egg-container .popover .arrow,
4228
+ .egg-container .popover .arrow:after {
4229
+ position: absolute;
4230
+ display: block;
4231
+ width: 0;
4232
+ height: 0;
4233
+ border-color: transparent;
4234
+ border-style: solid;
4235
+ }
4236
+
4237
+ .egg-container .popover .arrow {
4238
+ border-width: 11px;
4239
+ }
4240
+
4241
+ .egg-container .popover .arrow:after {
4242
+ border-width: 10px;
4243
+ content: "";
4244
+ }
4245
+
4246
+ .egg-container .popover.top .arrow {
4247
+ bottom: -11px;
4248
+ left: 50%;
4249
+ margin-left: -11px;
4250
+ border-top-color: #999;
4251
+ border-top-color: rgba(0, 0, 0, 0.25);
4252
+ border-bottom-width: 0;
4253
+ }
4254
+
4255
+ .egg-container .popover.top .arrow:after {
4256
+ bottom: 1px;
4257
+ margin-left: -10px;
4258
+ border-top-color: #ffffff;
4259
+ border-bottom-width: 0;
4260
+ }
4261
+
4262
+ .egg-container .popover.right .arrow {
4263
+ top: 50%;
4264
+ left: -11px;
4265
+ margin-top: -11px;
4266
+ border-right-color: #999;
4267
+ border-right-color: rgba(0, 0, 0, 0.25);
4268
+ border-left-width: 0;
4269
+ }
4270
+
4271
+ .egg-container .popover.right .arrow:after {
4272
+ bottom: -10px;
4273
+ left: 1px;
4274
+ border-right-color: #ffffff;
4275
+ border-left-width: 0;
4276
+ }
4277
+
4278
+ .egg-container .popover.bottom .arrow {
4279
+ top: -11px;
4280
+ left: 50%;
4281
+ margin-left: -11px;
4282
+ border-bottom-color: #999;
4283
+ border-bottom-color: rgba(0, 0, 0, 0.25);
4284
+ border-top-width: 0;
4285
+ }
4286
+
4287
+ .egg-container .popover.bottom .arrow:after {
4288
+ top: 1px;
4289
+ margin-left: -10px;
4290
+ border-bottom-color: #ffffff;
4291
+ border-top-width: 0;
4292
+ }
4293
+
4294
+ .egg-container .popover.left .arrow {
4295
+ top: 50%;
4296
+ right: -11px;
4297
+ margin-top: -11px;
4298
+ border-left-color: #999;
4299
+ border-left-color: rgba(0, 0, 0, 0.25);
4300
+ border-right-width: 0;
4301
+ }
4302
+
4303
+ .egg-container .popover.left .arrow:after {
4304
+ right: 1px;
4305
+ bottom: -10px;
4306
+ border-left-color: #ffffff;
4307
+ border-right-width: 0;
4308
+ }
4309
  .egg-container .clearfix:before,
4310
  .egg-container .clearfix:after,
4311
  .egg-container .dl-horizontal dd:before,
res/bootstrap/css/egg-bootstrap.min.css CHANGED
@@ -1,13 +1,11 @@
1
  /*!
2
  * Modified version of Bootstrap CSS
3
  * @author keywordrush.com <support@keywordrush.com>
4
- * @link http://www.keywordrush.com/
5
- * @copyright Copyright &copy; 2018 keywordrush.com
6
  *
7
  * Original work Copyright
8
  * Bootstrap v3.3.4 (http://getbootstrap.com)
9
  * Copyright 2011-2015 Twitter, Inc.
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
- */
12
-
13
- @font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}.egg-container{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;margin:0}.egg-container input[type="button"],.egg-container input[disabled]{cursor:default}.egg-container .thumbnail > img,.egg-container .thumbnail a > img,.egg-container .img-responsive{display:block;max-width:100%;height:auto}.egg-container html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}.egg-container body{margin:0}.egg-container article,.egg-container aside,.egg-container details,.egg-container figcaption,.egg-container figure,.egg-container footer,.egg-container header,.egg-container hgroup,.egg-container main,.egg-container menu,.egg-container nav,.egg-container section,.egg-container summary{display:block}.egg-container audio,.egg-container canvas,.egg-container progress,.egg-container video{display:inline-block;vertical-align:baseline}.egg-container audio:not([controls]){display:none;height:0}.egg-container [hidden],.egg-container template{display:none}.egg-container a{background-color:transparent}.egg-container a:active,.egg-container a:hover{outline:0}.egg-container abbr[title]{border-bottom:1px dotted}.egg-container b,.egg-container strong{font-weight:700}.egg-container dfn{font-style:italic}.egg-container h1{margin:.67em 0;font-size:2em}.egg-container mark{color:#000;background:#ff0}.egg-container small{font-size:80%}.egg-container sub,.egg-container sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.egg-container sup{top:-.5em}.egg-container sub{bottom:-.25em}.egg-container img{border:0}.egg-container svg:not(:root){overflow:hidden}.egg-container figure{margin:1em 40px}.egg-container hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.egg-container pre{overflow:auto}.egg-container code,.egg-container kbd,.egg-container pre,.egg-container samp{font-size:1em}.egg-container button,.egg-container input,.egg-container optgroup,.egg-container select,.egg-container textarea{margin:0;font:inherit;color:inherit}.egg-container button{overflow:visible}.egg-container button,.egg-container select{text-transform:none}.egg-container button,.egg-container html input[type="button"],.egg-container input[type="reset"],.egg-container input[type="submit"]{-webkit-appearance:button;cursor:pointer}.egg-container button[disabled],.egg-container html input[disabled]{cursor:default}.egg-container button::-moz-focus-inner,.egg-container input::-moz-focus-inner{padding:0;border:0}.egg-container input{line-height:normal}.egg-container input[type="checkbox"],.egg-container input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.egg-container input[type="number"]::-webkit-inner-spin-button,.egg-container input[type="number"]::-webkit-outer-spin-button{height:auto}.egg-container input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}.egg-container input[type="search"]::-webkit-search-cancel-button,.egg-container input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}.egg-container fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}.egg-container legend{padding:0;border:0}.egg-container textarea{overflow:auto}.egg-container optgroup{font-weight:700}.egg-container table{border-spacing:0;border-collapse:collapse}.egg-container td,.egg-container th{padding:0}@media print{.egg-container *,.egg-container :before,.egg-container :after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.egg-container a,.egg-container a:visited{text-decoration:underline}.egg-container a[href]:after{content:" (" attr(href) ")"}.egg-container abbr[title]:after{content:" (" attr(title) ")"}.egg-container a[href^="#"]:after,.egg-container a[href^="javascript:"]:after{content:""}.egg-container pre,.egg-container blockquote{border:1px solid #999;page-break-inside:avoid}.egg-container thead{display:table-header-group}.egg-container tr,.egg-container img{page-break-inside:avoid}.egg-container img{max-width:100%!important}.egg-container p,.egg-container h2,.egg-container h3{orphans:3;widows:3}.egg-container h2,.egg-container h3{page-break-after:avoid}.egg-container select{background:#fff!important}.egg-container .navbar{display:none}.egg-container .btn > .caret,.egg-container .dropup > .btn > .caret{border-top-color:#000!important}.egg-container .label{border:1px solid #000}.egg-container .table{border-collapse:collapse!important}.egg-container .table td,.egg-container .table th{background-color:#fff!important}.egg-container .table-bordered th,.egg-container .table-bordered td{border:1px solid #ddd!important}}.egg-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.egg-container :before,.egg-container :after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.egg-container input,.egg-container button,.egg-container select,.egg-container textarea{font-family:inherit;font-size:inherit;line-height:inherit}.egg-container a{text-decoration:none}.egg-container a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.egg-container figure{margin:0}.egg-container img{vertical-align:middle}.egg-container .img-responsive{display:block;max-width:100%;height:auto}.egg-container .img-rounded{border-radius:6px}.egg-container .img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.egg-container .img-circle{border-radius:50%}.egg-container hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.egg-container .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.egg-container .sr-only-focusable:active,.egg-container .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.egg-container [role="button"]{cursor:pointer}.egg-container h1,.egg-container h2,.egg-container h3,.egg-container h4,.egg-container h5,.egg-container h6,.egg-container .h1,.egg-container .h2,.egg-container .h3,.egg-container .h4,.egg-container .h5,.egg-container .h6{color:inherit}.egg-container h1 small,.egg-container h2 small,.egg-container h3 small,.egg-container h4 small,.egg-container h5 small,.egg-container h6 small,.egg-container .h1 small,.egg-container .h2 small,.egg-container .h3 small,.egg-container .h4 small,.egg-container .h5 small,.egg-container .h6 small,.egg-container h1 .small,.egg-container h2 .small,.egg-container h3 .small,.egg-container h4 .small,.egg-container h5 .small,.egg-container h6 .small,.egg-container .h1 .small,.egg-container .h2 .small,.egg-container .h3 .small,.egg-container .h4 .small,.egg-container .h5 .small,.egg-container .h6 .small{font-weight:400;line-height:1;color:#777}.egg-container h1 small,.egg-container .h1 small,.egg-container h2 small,.egg-container .h2 small,.egg-container h3 small,.egg-container .h3 small,.egg-container h1 .small,.egg-container .h1 .small,.egg-container h2 .small,.egg-container .h2 .small,.egg-container h3 .small,.egg-container .h3 .small{font-size:65%}.egg-container h4,.egg-container .h4,.egg-container h5,.egg-container .h5,.egg-container h6,.egg-container .h6{margin-top:10px;margin-bottom:10px}.egg-container h4 small,.egg-container .h4 small,.egg-container h5 small,.egg-container .h5 small,.egg-container h6 small,.egg-container .h6 small,.egg-container h4 .small,.egg-container .h4 .small,.egg-container h5 .small,.egg-container .h5 .small,.egg-container h6 .small,.egg-container .h6 .small{font-size:75%}.egg-container h1,.egg-container .h1{font-size:36px}.egg-container h2,.egg-container .h2{font-size:27px}.egg-container h3,.egg-container .h3{font-size:23px}.egg-container h4,.egg-container .h4{font-size:18px}.egg-container h5,.egg-container .h5{font-size:14px}.egg-container h6,.egg-container .h6{font-size:12px}.egg-container p{margin:0 0 18px}.egg-container .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.egg-container .lead{font-size:21px}}.egg-container small,.egg-container .small{font-size:85%}.egg-container mark,.egg-container .mark{padding:.2em;background-color:#fcf8e3}.egg-container .text-left{text-align:left}.egg-container .text-right{text-align:right}.egg-container .text-center{text-align:center}.egg-container .text-justify{text-align:justify}.egg-container .text-nowrap{white-space:nowrap}.egg-container .text-lowercase{text-transform:lowercase}.egg-container .text-uppercase{text-transform:uppercase}.egg-container .text-capitalize{text-transform:capitalize}.egg-container .text-muted{color:#777}.egg-container .text-primary{color:#337ab7}a.egg-container .text-primary:hover{color:#286090}.egg-container .text-success{color:#3c763d}a.egg-container .text-success:hover{color:#2b542c}.egg-container .text-info{color:#31708f}a.egg-container .text-info:hover{color:#245269}.egg-container .text-warning{color:#8a6d3b}a.egg-container .text-warning:hover{color:#66512c}.egg-container .text-danger{color:#a94442}a.egg-container .text-danger:hover{color:#843534}.egg-container .bg-primary{color:#fff;background-color:#337ab7}a.egg-container .bg-primary:hover{background-color:#286090}.egg-container .bg-success{background-color:#dff0d8}a.egg-container .bg-success:hover{background-color:#c1e2b3}.egg-container .bg-info{background-color:#d9edf7}a.egg-container .bg-info:hover{background-color:#afd9ee}.egg-container .bg-warning{background-color:#fcf8e3}a.egg-container .bg-warning:hover{background-color:#f7ecb5}.egg-container .bg-danger{background-color:#f2dede}a.egg-container .bg-danger:hover{background-color:#e4b9b9}.egg-container .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.egg-container ul,.egg-container ol{margin-top:0;margin-bottom:10px}.egg-container ul ul,.egg-container ol ul,.egg-container ul ol,.egg-container ol ol{margin-bottom:0}.egg-container .list-unstyled{padding-left:0;list-style:none}.egg-container .list-inline{padding-left:0;margin-left:-5px;list-style:none}.egg-container .list-inline > li{display:inline-block;padding-right:5px;padding-left:5px}.egg-container dl{margin-top:0;margin-bottom:20px}.egg-container dt,.egg-container dd{line-height:1.42857143}.egg-container dt{font-weight:700}.egg-container dd{margin-left:0}@media (min-width: 768px){.egg-container .dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.egg-container .dl-horizontal dd{margin-left:180px}}.egg-container abbr[title],.egg-container abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.egg-container .initialism{font-size:90%;text-transform:uppercase}.egg-container address{margin-bottom:20px;font-style:normal;line-height:1.42857143}.egg-container code,.egg-container kbd,.egg-container pre,.egg-container samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.egg-container code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.egg-container kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}.egg-container kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}.egg-container pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.egg-container pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.egg-container .pre-scrollable{max-height:340px;overflow-y:scroll}.egg-container .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 768px){.egg-container .container{width:750px}}@media (min-width: 992px){.egg-container .container{width:970px}}@media (min-width: 1200px){.egg-container .container{width:1170px}}.egg-container .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.egg-container .row{margin-right:-15px;margin-left:-15px;margin-bottom:30px}.egg-container .col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.egg-container .col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.egg-container .col-xs-12{width:100%}.egg-container .col-xs-11{width:91.66666667%}.egg-container .col-xs-10{width:83.33333333%}.egg-container .col-xs-9{width:75%}.egg-container .col-xs-8{width:66.66666667%}.egg-container .col-xs-7{width:58.33333333%}.egg-container .col-xs-6{width:50%}.egg-container .col-xs-5{width:41.66666667%}.egg-container .col-xs-4{width:33.33333333%}.egg-container .col-xs-3{width:25%}.egg-container .col-xs-2{width:16.66666667%}.egg-container .col-xs-1{width:8.33333333%}.egg-container .col-xs-pull-12{right:100%}.egg-container .col-xs-pull-11{right:91.66666667%}.egg-container .col-xs-pull-10{right:83.33333333%}.egg-container .col-xs-pull-9{right:75%}.egg-container .col-xs-pull-8{right:66.66666667%}.egg-container .col-xs-pull-7{right:58.33333333%}.egg-container .col-xs-pull-6{right:50%}.egg-container .col-xs-pull-5{right:41.66666667%}.egg-container .col-xs-pull-4{right:33.33333333%}.egg-container .col-xs-pull-3{right:25%}.egg-container .col-xs-pull-2{right:16.66666667%}.egg-container .col-xs-pull-1{right:8.33333333%}.egg-container .col-xs-pull-0{right:auto}.egg-container .col-xs-push-12{left:100%}.egg-container .col-xs-push-11{left:91.66666667%}.egg-container .col-xs-push-10{left:83.33333333%}.egg-container .col-xs-push-9{left:75%}.egg-container .col-xs-push-8{left:66.66666667%}.egg-container .col-xs-push-7{left:58.33333333%}.egg-container .col-xs-push-6{left:50%}.egg-container .col-xs-push-5{left:41.66666667%}.egg-container .col-xs-push-4{left:33.33333333%}.egg-container .col-xs-push-3{left:25%}.egg-container .col-xs-push-2{left:16.66666667%}.egg-container .col-xs-push-1{left:8.33333333%}.egg-container .col-xs-push-0{left:auto}.egg-container .col-xs-offset-12{margin-left:100%}.egg-container .col-xs-offset-11{margin-left:91.66666667%}.egg-container .col-xs-offset-10{margin-left:83.33333333%}.egg-container .col-xs-offset-9{margin-left:75%}.egg-container .col-xs-offset-8{margin-left:66.66666667%}.egg-container .col-xs-offset-7{margin-left:58.33333333%}.egg-container .col-xs-offset-6{margin-left:50%}.egg-container .col-xs-offset-5{margin-left:41.66666667%}.egg-container .col-xs-offset-4{margin-left:33.33333333%}.egg-container .col-xs-offset-3{margin-left:25%}.egg-container .col-xs-offset-2{margin-left:16.66666667%}.egg-container .col-xs-offset-1{margin-left:8.33333333%}.egg-container .col-xs-offset-0{margin-left:0}@media (min-width: 768px){.egg-container .col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.egg-container .col-sm-12{width:100%}.egg-container .col-sm-11{width:91.66666667%}.egg-container .col-sm-10{width:83.33333333%}.egg-container .col-sm-9{width:75%}.egg-container .col-sm-8{width:66.66666667%}.egg-container .col-sm-7{width:58.33333333%}.egg-container .col-sm-6{width:50%}.egg-container .col-sm-5{width:41.66666667%}.egg-container .col-sm-4{width:33.33333333%}.egg-container .col-sm-3{width:25%}.egg-container .col-sm-2{width:16.66666667%}.egg-container .col-sm-1{width:8.33333333%}.egg-container .col-sm-pull-12{right:100%}.egg-container .col-sm-pull-11{right:91.66666667%}.egg-container .col-sm-pull-10{right:83.33333333%}.egg-container .col-sm-pull-9{right:75%}.egg-container .col-sm-pull-8{right:66.66666667%}.egg-container .col-sm-pull-7{right:58.33333333%}.egg-container .col-sm-pull-6{right:50%}.egg-container .col-sm-pull-5{right:41.66666667%}.egg-container .col-sm-pull-4{right:33.33333333%}.egg-container .col-sm-pull-3{right:25%}.egg-container .col-sm-pull-2{right:16.66666667%}.egg-container .col-sm-pull-1{right:8.33333333%}.egg-container .col-sm-pull-0{right:auto}.egg-container .col-sm-push-12{left:100%}.egg-container .col-sm-push-11{left:91.66666667%}.egg-container .col-sm-push-10{left:83.33333333%}.egg-container .col-sm-push-9{left:75%}.egg-container .col-sm-push-8{left:66.66666667%}.egg-container .col-sm-push-7{left:58.33333333%}.egg-container .col-sm-push-6{left:50%}.egg-container .col-sm-push-5{left:41.66666667%}.egg-container .col-sm-push-4{left:33.33333333%}.egg-container .col-sm-push-3{left:25%}.egg-container .col-sm-push-2{left:16.66666667%}.egg-container .col-sm-push-1{left:8.33333333%}.egg-container .col-sm-push-0{left:auto}.egg-container .col-sm-offset-12{margin-left:100%}.egg-container .col-sm-offset-11{margin-left:91.66666667%}.egg-container .col-sm-offset-10{margin-left:83.33333333%}.egg-container .col-sm-offset-9{margin-left:75%}.egg-container .col-sm-offset-8{margin-left:66.66666667%}.egg-container .col-sm-offset-7{margin-left:58.33333333%}.egg-container .col-sm-offset-6{margin-left:50%}.egg-container .col-sm-offset-5{margin-left:41.66666667%}.egg-container .col-sm-offset-4{margin-left:33.33333333%}.egg-container .col-sm-offset-3{margin-left:25%}.egg-container .col-sm-offset-2{margin-left:16.66666667%}.egg-container .col-sm-offset-1{margin-left:8.33333333%}.egg-container .col-sm-offset-0{margin-left:0}}@media (min-width: 992px){.egg-container .col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.egg-container .col-md-12{width:100%}.egg-container .col-md-11{width:91.66666667%}.egg-container .col-md-10{width:83.33333333%}.egg-container .col-md-9{width:75%}.egg-container .col-md-8{width:66.66666667%}.egg-container .col-md-7{width:58.33333333%}.egg-container .col-md-6{width:50%}.egg-container .col-md-5{width:41.66666667%}.egg-container .col-md-4{width:33.33333333%}.egg-container .col-md-3{width:25%}.egg-container .col-md-2{width:16.66666667%}.egg-container .col-md-1{width:8.33333333%}.egg-container .col-md-pull-12{right:100%}.egg-container .col-md-pull-11{right:91.66666667%}.egg-container .col-md-pull-10{right:83.33333333%}.egg-container .col-md-pull-9{right:75%}.egg-container .col-md-pull-8{right:66.66666667%}.egg-container .col-md-pull-7{right:58.33333333%}.egg-container .col-md-pull-6{right:50%}.egg-container .col-md-pull-5{right:41.66666667%}.egg-container .col-md-pull-4{right:33.33333333%}.egg-container .col-md-pull-3{right:25%}.egg-container .col-md-pull-2{right:16.66666667%}.egg-container .col-md-pull-1{right:8.33333333%}.egg-container .col-md-pull-0{right:auto}.egg-container .col-md-push-12{left:100%}.egg-container .col-md-push-11{left:91.66666667%}.egg-container .col-md-push-10{left:83.33333333%}.egg-container .col-md-push-9{left:75%}.egg-container .col-md-push-8{left:66.66666667%}.egg-container .col-md-push-7{left:58.33333333%}.egg-container .col-md-push-6{left:50%}.egg-container .col-md-push-5{left:41.66666667%}.egg-container .col-md-push-4{left:33.33333333%}.egg-container .col-md-push-3{left:25%}.egg-container .col-md-push-2{left:16.66666667%}.egg-container .col-md-push-1{left:8.33333333%}.egg-container .col-md-push-0{left:auto}.egg-container .col-md-offset-12{margin-left:100%}.egg-container .col-md-offset-11{margin-left:91.66666667%}.egg-container .col-md-offset-10{margin-left:83.33333333%}.egg-container .col-md-offset-9{margin-left:75%}.egg-container .col-md-offset-8{margin-left:66.66666667%}.egg-container .col-md-offset-7{margin-left:58.33333333%}.egg-container .col-md-offset-6{margin-left:50%}.egg-container .col-md-offset-5{margin-left:41.66666667%}.egg-container .col-md-offset-4{margin-left:33.33333333%}.egg-container .col-md-offset-3{margin-left:25%}.egg-container .col-md-offset-2{margin-left:16.66666667%}.egg-container .col-md-offset-1{margin-left:8.33333333%}.egg-container .col-md-offset-0{margin-left:0}}@media (min-width: 1200px){.egg-container .col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.egg-container .col-lg-12{width:100%}.egg-container .col-lg-11{width:91.66666667%}.egg-container .col-lg-10{width:83.33333333%}.egg-container .col-lg-9{width:75%}.egg-container .col-lg-8{width:66.66666667%}.egg-container .col-lg-7{width:58.33333333%}.egg-container .col-lg-6{width:50%}.egg-container .col-lg-5{width:41.66666667%}.egg-container .col-lg-4{width:33.33333333%}.egg-container .col-lg-3{width:25%}.egg-container .col-lg-2{width:16.66666667%}.egg-container .col-lg-1{width:8.33333333%}.egg-container .col-lg-pull-12{right:100%}.egg-container .col-lg-pull-11{right:91.66666667%}.egg-container .col-lg-pull-10{right:83.33333333%}.egg-container .col-lg-pull-9{right:75%}.egg-container .col-lg-pull-8{right:66.66666667%}.egg-container .col-lg-pull-7{right:58.33333333%}.egg-container .col-lg-pull-6{right:50%}.egg-container .col-lg-pull-5{right:41.66666667%}.egg-container .col-lg-pull-4{right:33.33333333%}.egg-container .col-lg-pull-3{right:25%}.egg-container .col-lg-pull-2{right:16.66666667%}.egg-container .col-lg-pull-1{right:8.33333333%}.egg-container .col-lg-pull-0{right:auto}.egg-container .col-lg-push-12{left:100%}.egg-container .col-lg-push-11{left:91.66666667%}.egg-container .col-lg-push-10{left:83.33333333%}.egg-container .col-lg-push-9{left:75%}.egg-container .col-lg-push-8{left:66.66666667%}.egg-container .col-lg-push-7{left:58.33333333%}.egg-container .col-lg-push-6{left:50%}.egg-container .col-lg-push-5{left:41.66666667%}.egg-container .col-lg-push-4{left:33.33333333%}.egg-container .col-lg-push-3{left:25%}.egg-container .col-lg-push-2{left:16.66666667%}.egg-container .col-lg-push-1{left:8.33333333%}.egg-container .col-lg-push-0{left:auto}.egg-container .col-lg-offset-12{margin-left:100%}.egg-container .col-lg-offset-11{margin-left:91.66666667%}.egg-container .col-lg-offset-10{margin-left:83.33333333%}.egg-container .col-lg-offset-9{margin-left:75%}.egg-container .col-lg-offset-8{margin-left:66.66666667%}.egg-container .col-lg-offset-7{margin-left:58.33333333%}.egg-container .col-lg-offset-6{margin-left:50%}.egg-container .col-lg-offset-5{margin-left:41.66666667%}.egg-container .col-lg-offset-4{margin-left:33.33333333%}.egg-container .col-lg-offset-3{margin-left:25%}.egg-container .col-lg-offset-2{margin-left:16.66666667%}.egg-container .col-lg-offset-1{margin-left:8.33333333%}.egg-container .col-lg-offset-0{margin-left:0}}.egg-container table{background-color:transparent}.egg-container caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.egg-container th{text-align:left}.egg-container .table{width:100%;max-width:100%;margin-bottom:20px}.egg-container .table > thead > tr > th,.egg-container .table > tbody > tr > th,.egg-container .table > tfoot > tr > th,.egg-container .table > thead > tr > td,.egg-container .table > tbody > tr > td,.egg-container .table > tfoot > tr > td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.egg-container .table > thead > tr > th{vertical-align:bottom;border-bottom:2px solid #ddd}.egg-container .table > caption + thead > tr:first-child > th,.egg-container .table > colgroup + thead > tr:first-child > th,.egg-container .table > thead:first-child > tr:first-child > th,.egg-container .table > caption + thead > tr:first-child > td,.egg-container .table > colgroup + thead > tr:first-child > td,.egg-container .table > thead:first-child > tr:first-child > td{border-top:0}.egg-container .table > tbody + tbody{border-top:2px solid #ddd}.egg-container .table .table{background-color:#fff}.egg-container .table-condensed > thead > tr > th,.egg-container .table-condensed > tbody > tr > th,.egg-container .table-condensed > tfoot > tr > th,.egg-container .table-condensed > thead > tr > td,.egg-container .table-condensed > tbody > tr > td,.egg-container .table-condensed > tfoot > tr > td{padding:5px}.egg-container .table-bordered{border:1px solid #ddd}.egg-container .table-bordered > thead > tr > th,.egg-container .table-bordered > tbody > tr > th,.egg-container .table-bordered > tfoot > tr > th,.egg-container .table-bordered > thead > tr > td,.egg-container .table-bordered > tbody > tr > td,.egg-container .table-bordered > tfoot > tr > td{border:1px solid #ddd}.egg-container .table-bordered > thead > tr > th,.egg-container .table-bordered > thead > tr > td{border-bottom-width:2px}.egg-container .table-striped > tbody > tr:nth-of-type(odd){background-color:#f9f9f9}.egg-container .table-hover > tbody > tr:hover{background-color:#f5f5f5}.egg-container table col[class*="col-"]{position:static;display:table-column;float:none}.egg-container table td[class*="col-"],.egg-container table th[class*="col-"]{position:static;display:table-cell;float:none}.egg-container .table > thead > tr > td.active,.egg-container .table > tbody > tr > td.active,.egg-container .table > tfoot > tr > td.active,.egg-container .table > thead > tr > th.active,.egg-container .table > tbody > tr > th.active,.egg-container .table > tfoot > tr > th.active,.egg-container .table > thead > tr.active > td,.egg-container .table > tbody > tr.active > td,.egg-container .table > tfoot > tr.active > td,.egg-container .table > thead > tr.active > th,.egg-container .table > tbody > tr.active > th,.egg-container .table > tfoot > tr.active > th{background-color:#f5f5f5}.egg-container .table-hover > tbody > tr > td.active:hover,.egg-container .table-hover > tbody > tr > th.active:hover,.egg-container .table-hover > tbody > tr.active:hover > td,.egg-container .table-hover > tbody > tr:hover > .active,.egg-container .table-hover > tbody > tr.active:hover > th{background-color:#e8e8e8}.egg-container .table > thead > tr > td.success,.egg-container .table > tbody > tr > td.success,.egg-container .table > tfoot > tr > td.success,.egg-container .table > thead > tr > th.success,.egg-container .table > tbody > tr > th.success,.egg-container .table > tfoot > tr > th.success,.egg-container .table > thead > tr.success > td,.egg-container .table > tbody > tr.success > td,.egg-container .table > tfoot > tr.success > td,.egg-container .table > thead > tr.success > th,.egg-container .table > tbody > tr.success > th,.egg-container .table > tfoot > tr.success > th{background-color:#dff0d8}.egg-container .table-hover > tbody > tr > td.success:hover,.egg-container .table-hover > tbody > tr > th.success:hover,.egg-container .table-hover > tbody > tr.success:hover > td,.egg-container .table-hover > tbody > tr:hover > .success,.egg-container .table-hover > tbody > tr.success:hover > th{background-color:#d0e9c6}.egg-container .table > thead > tr > td.info,.egg-container .table > tbody > tr > td.info,.egg-container .table > tfoot > tr > td.info,.egg-container .table > thead > tr > th.info,.egg-container .table > tbody > tr > th.info,.egg-container .table > tfoot > tr > th.info,.egg-container .table > thead > tr.info > td,.egg-container .table > tbody > tr.info > td,.egg-container .table > tfoot > tr.info > td,.egg-container .table > thead > tr.info > th,.egg-container .table > tbody > tr.info > th,.egg-container .table > tfoot > tr.info > th{background-color:#d9edf7}.egg-container .table-hover > tbody > tr > td.info:hover,.egg-container .table-hover > tbody > tr > th.info:hover,.egg-container .table-hover > tbody > tr.info:hover > td,.egg-container .table-hover > tbody > tr:hover > .info,.egg-container .table-hover > tbody > tr.info:hover > th{background-color:#c4e3f3}.egg-container .table > thead > tr > td.warning,.egg-container .table > tbody > tr > td.warning,.egg-container .table > tfoot > tr > td.warning,.egg-container .table > thead > tr > th.warning,.egg-container .table > tbody > tr > th.warning,.egg-container .table > tfoot > tr > th.warning,.egg-container .table > thead > tr.warning > td,.egg-container .table > tbody > tr.warning > td,.egg-container .table > tfoot > tr.warning > td,.egg-container .table > thead > tr.warning > th,.egg-container .table > tbody > tr.warning > th,.egg-container .table > tfoot > tr.warning > th{background-color:#fcf8e3}.egg-container .table-hover > tbody > tr > td.warning:hover,.egg-container .table-hover > tbody > tr > th.warning:hover,.egg-container .table-hover > tbody > tr.warning:hover > td,.egg-container .table-hover > tbody > tr:hover > .warning,.egg-container .table-hover > tbody > tr.warning:hover > th{background-color:#faf2cc}.egg-container .table > thead > tr > td.danger,.egg-container .table > tbody > tr > td.danger,.egg-container .table > tfoot > tr > td.danger,.egg-container .table > thead > tr > th.danger,.egg-container .table > tbody > tr > th.danger,.egg-container .table > tfoot > tr > th.danger,.egg-container .table > thead > tr.danger > td,.egg-container .table > tbody > tr.danger > td,.egg-container .table > tfoot > tr.danger > td,.egg-container .table > thead > tr.danger > th,.egg-container .table > tbody > tr.danger > th,.egg-container .table > tfoot > tr.danger > th{background-color:#f2dede}.egg-container .table-hover > tbody > tr > td.danger:hover,.egg-container .table-hover > tbody > tr > th.danger:hover,.egg-container .table-hover > tbody > tr.danger:hover > td,.egg-container .table-hover > tbody > tr:hover > .danger,.egg-container .table-hover > tbody > tr.danger:hover > th{background-color:#ebcccc}.egg-container .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width: 767px){.egg-container .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.egg-container .table-responsive > .table{margin-bottom:0}.egg-container .table-responsive > .table > thead > tr > th,.egg-container .table-responsive > .table > tbody > tr > th,.egg-container .table-responsive > .table > tfoot > tr > th,.egg-container .table-responsive > .table > thead > tr > td,.egg-container .table-responsive > .table > tbody > tr > td,.egg-container .table-responsive > .table > tfoot > tr > td{white-space:nowrap}.egg-container .table-responsive > .table-bordered{border:0}.egg-container .table-responsive > .table-bordered > thead > tr > th:first-child,.egg-container .table-responsive > .table-bordered > tbody > tr > th:first-child,.egg-container .table-responsive > .table-bordered > tfoot > tr > th:first-child,.egg-container .table-responsive > .table-bordered > thead > tr > td:first-child,.egg-container .table-responsive > .table-bordered > tbody > tr > td:first-child,.egg-container .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0}.egg-container .table-responsive > .table-bordered > thead > tr > th:last-child,.egg-container .table-responsive > .table-bordered > tbody > tr > th:last-child,.egg-container .table-responsive > .table-bordered > tfoot > tr > th:last-child,.egg-container .table-responsive > .table-bordered > thead > tr > td:last-child,.egg-container .table-responsive > .table-bordered > tbody > tr > td:last-child,.egg-container .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0}.egg-container .table-responsive > .table-bordered > tbody > tr:last-child > th,.egg-container .table-responsive > .table-bordered > tfoot > tr:last-child > th,.egg-container .table-responsive > .table-bordered > tbody > tr:last-child > td,.egg-container .table-responsive > .table-bordered > tfoot > tr:last-child > td{border-bottom:0}}.egg-container fieldset{min-width:0;padding:0;margin:0;border:0}.egg-container legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.egg-container label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}.egg-container input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.egg-container input[type="radio"],.egg-container input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.egg-container input[type="file"]{display:block}.egg-container input[type="range"]{display:block;width:100%}.egg-container select[multiple],.egg-container select[size]{height:auto}.egg-container input[type="file"]:focus,.egg-container input[type="radio"]:focus,.egg-container input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.egg-container output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.egg-container .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.egg-container .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.egg-container .form-control::-moz-placeholder{color:#999;opacity:1}.egg-container .form-control:-ms-input-placeholder{color:#999}.egg-container .form-control::-webkit-input-placeholder{color:#999}.egg-container .form-control[disabled],.egg-container .form-control[readonly],fieldset[disabled] .egg-container .form-control{background-color:#eee;opacity:1}.egg-container .form-control[disabled],fieldset[disabled] .egg-container .form-control{cursor:not-allowed}textarea.egg-container .form-control{height:auto}.egg-container input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){.egg-container input[type="date"],.egg-container input[type="time"],.egg-container input[type="datetime-local"],.egg-container input[type="month"]{line-height:34px}.egg-container input[type="date"].input-sm,.egg-container input[type="time"].input-sm,.egg-container input[type="datetime-local"].input-sm,.egg-container input[type="month"].input-sm,.input-group-sm .egg-container input[type="date"],.input-group-sm .egg-container input[type="time"],.input-group-sm .egg-container input[type="datetime-local"],.input-group-sm .egg-container input[type="month"]{line-height:30px}.egg-container input[type="date"].input-lg,.egg-container input[type="time"].input-lg,.egg-container input[type="datetime-local"].input-lg,.egg-container input[type="month"].input-lg,.input-group-lg .egg-container input[type="date"],.input-group-lg .egg-container input[type="time"],.input-group-lg .egg-container input[type="datetime-local"],.input-group-lg .egg-container input[type="month"]{line-height:46px}}.egg-container .form-group{margin-bottom:15px}.egg-container .radio,.egg-container .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.egg-container .radio label,.egg-container .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.egg-container .radio input[type="radio"],.egg-container .radio-inline input[type="radio"],.egg-container .checkbox input[type="checkbox"],.egg-container .checkbox-inline input[type="checkbox"]{position:absolute;margin-top:4px \9;margin-left:-20px}.egg-container .radio + .radio,.egg-container .checkbox + .checkbox{margin-top:-5px}.egg-container .radio-inline,.egg-container .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.egg-container .radio-inline + .radio-inline,.egg-container .checkbox-inline + .checkbox-inline{margin-top:0;margin-left:10px}.egg-container input[type="radio"][disabled],.egg-container input[type="checkbox"][disabled],.egg-container input[type="radio"].disabled,.egg-container input[type="checkbox"].disabled,fieldset[disabled] .egg-container input[type="radio"],fieldset[disabled] .egg-container input[type="checkbox"]{cursor:not-allowed}.egg-container .radio-inline.disabled,.egg-container .checkbox-inline.disabled,fieldset[disabled] .egg-container .radio-inline,fieldset[disabled] .egg-container .checkbox-inline{cursor:not-allowed}.egg-container .radio.disabled label,.egg-container .checkbox.disabled label,fieldset[disabled] .egg-container .radio label,fieldset[disabled] .egg-container .checkbox label{cursor:not-allowed}.egg-container .form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.egg-container .form-control-static.input-lg,.egg-container .form-control-static.input-sm{padding-right:0;padding-left:0}.egg-container .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.egg-container .input-sm{height:30px;line-height:30px}textarea.egg-container .input-sm,select[multiple].egg-container .input-sm{height:auto}.egg-container .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.egg-container .form-group-sm .form-control{height:30px;line-height:30px}textarea.egg-container .form-group-sm .form-control,select[multiple].egg-container .form-group-sm .form-control{height:auto}.egg-container .form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.egg-container .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.egg-container .input-lg{height:46px;line-height:46px}textarea.egg-container .input-lg,select[multiple].egg-container .input-lg{height:auto}.egg-container .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.egg-container .form-group-lg .form-control{height:46px;line-height:46px}textarea.egg-container .form-group-lg .form-control,select[multiple].egg-container .form-group-lg .form-control{height:auto}.egg-container .form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.egg-container .has-feedback{position:relative}.egg-container .has-feedback .form-control{padding-right:42.5px}.egg-container .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.egg-container .input-lg + .form-control-feedback{width:46px;height:46px;line-height:46px}.egg-container .input-sm + .form-control-feedback{width:30px;height:30px;line-height:30px}.egg-container .has-success .help-block,.egg-container .has-success .control-label,.egg-container .has-success .radio,.egg-container .has-success .checkbox,.egg-container .has-success .radio-inline,.egg-container .has-success .checkbox-inline,.egg-container .has-success.radio label,.egg-container .has-success.checkbox label,.egg-container .has-success.radio-inline label,.egg-container .has-success.checkbox-inline label{color:#3c763d}.egg-container .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.egg-container .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.egg-container .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.egg-container .has-success .form-control-feedback{color:#3c763d}.egg-container .has-warning .help-block,.egg-container .has-warning .control-label,.egg-container .has-warning .radio,.egg-container .has-warning .checkbox,.egg-container .has-warning .radio-inline,.egg-container .has-warning .checkbox-inline,.egg-container .has-warning.radio label,.egg-container .has-warning.checkbox label,.egg-container .has-warning.radio-inline label,.egg-container .has-warning.checkbox-inline label{color:#8a6d3b}.egg-container .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.egg-container .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.egg-container .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.egg-container .has-warning .form-control-feedback{color:#8a6d3b}.egg-container .has-error .help-block,.egg-container .has-error .control-label,.egg-container .has-error .radio,.egg-container .has-error .checkbox,.egg-container .has-error .radio-inline,.egg-container .has-error .checkbox-inline,.egg-container .has-error.radio label,.egg-container .has-error.checkbox label,.egg-container .has-error.radio-inline label,.egg-container .has-error.checkbox-inline label{color:#a94442}.egg-container .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.egg-container .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.egg-container .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.egg-container .has-error .form-control-feedback{color:#a94442}.egg-container .has-feedback label ~ .form-control-feedback{top:25px}.egg-container .has-feedback label.sr-only ~ .form-control-feedback{top:0}.egg-container .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.egg-container .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.egg-container .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.egg-container .form-inline .form-control-static{display:inline-block}.egg-container .form-inline .input-group{display:inline-table;vertical-align:middle}.egg-container .form-inline .input-group .input-group-addon,.egg-container .form-inline .input-group .input-group-btn,.egg-container .form-inline .input-group .form-control{width:auto}.egg-container .form-inline .input-group > .form-control{width:100%}.egg-container .form-inline .control-label{margin-bottom:0;vertical-align:middle}.egg-container .form-inline .radio,.egg-container .form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.egg-container .form-inline .radio label,.egg-container .form-inline .checkbox label{padding-left:0}.egg-container .form-inline .radio input[type="radio"],.egg-container .form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.egg-container .form-inline .has-feedback .form-control-feedback{top:0}}.egg-container .form-horizontal .radio,.egg-container .form-horizontal .checkbox,.egg-container .form-horizontal .radio-inline,.egg-container .form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.egg-container .form-horizontal .radio,.egg-container .form-horizontal .checkbox{min-height:27px}.egg-container .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.egg-container .form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.egg-container .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.egg-container .form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width: 768px){.egg-container .form-horizontal .form-group-sm .control-label{padding-top:6px}}.egg-container .btn{display:inline-block;padding:7px 14px;margin-bottom:0;font-size:14px;font-weight:700;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.egg-container .btn:focus,.egg-container .btn:active:focus,.egg-container .btn.active:focus,.egg-container .btn.focus,.egg-container .btn:active.focus,.egg-container .btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.egg-container .btn:hover,.egg-container .btn:focus,.egg-container .btn.focus{color:#333;text-decoration:none}.egg-container .btn:active,.egg-container .btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.egg-container .btn.disabled,.egg-container .btn[disabled],fieldset[disabled] .egg-container .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.egg-container .btn-default{color:#333;background-color:#fff;border-color:#ccc}.egg-container .btn-default:hover,.egg-container .btn-default:focus,.egg-container .btn-default.focus,.egg-container .btn-default:active,.egg-container .btn-default.active,.open > .dropdown-toggle.egg-container .btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.egg-container .btn-default:active,.egg-container .btn-default.active,.open > .dropdown-toggle.egg-container .btn-default{background-image:none}.egg-container .btn-default.disabled,.egg-container .btn-default[disabled],fieldset[disabled] .egg-container .btn-default,.egg-container .btn-default.disabled:hover,.egg-container .btn-default[disabled]:hover,fieldset[disabled] .egg-container .btn-default:hover,.egg-container .btn-default.disabled:focus,.egg-container .btn-default[disabled]:focus,fieldset[disabled] .egg-container .btn-default:focus,.egg-container .btn-default.disabled.focus,.egg-container .btn-default[disabled].focus,fieldset[disabled] .egg-container .btn-default.focus,.egg-container .btn-default.disabled:active,.egg-container .btn-default[disabled]:active,fieldset[disabled] .egg-container .btn-default:active,.egg-container .btn-default.disabled.active,.egg-container .btn-default[disabled].active,fieldset[disabled] .egg-container .btn-default.active{background-color:#fff;border-color:#ccc}.egg-container .btn-default .badge{color:#fff;background-color:#333}.egg-container .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.egg-container .btn-primary:hover,.egg-container .btn-primary:focus,.egg-container .btn-primary.focus,.egg-container .btn-primary:active,.egg-container .btn-primary.active,.open > .dropdown-toggle.egg-container .btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.egg-container .btn-primary:active,.egg-container .btn-primary.active,.open > .dropdown-toggle.egg-container .btn-primary{background-image:none}.egg-container .btn-primary.disabled,.egg-container .btn-primary[disabled],fieldset[disabled] .egg-container .btn-primary,.egg-container .btn-primary.disabled:hover,.egg-container .btn-primary[disabled]:hover,fieldset[disabled] .egg-container .btn-primary:hover,.egg-container .btn-primary.disabled:focus,.egg-container .btn-primary[disabled]:focus,fieldset[disabled] .egg-container .btn-primary:focus,.egg-container .btn-primary.disabled.focus,.egg-container .btn-primary[disabled].focus,fieldset[disabled] .egg-container .btn-primary.focus,.egg-container .btn-primary.disabled:active,.egg-container .btn-primary[disabled]:active,fieldset[disabled] .egg-container .btn-primary:active,.egg-container .btn-primary.disabled.active,.egg-container .btn-primary[disabled].active,fieldset[disabled] .egg-container .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.egg-container .btn-primary .badge{color:#337ab7;background-color:#fff}.egg-container .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;text-decoration:none!important}.egg-container .btn-success:hover,.egg-container .btn-success:focus,.egg-container .btn-success.focus,.egg-container .btn-success:active,.egg-container .btn-success.active,.open > .dropdown-toggle.egg-container .btn-success{color:#fff;background-color:#449d44;border-color:#398439}.egg-container .btn-success:active,.egg-container .btn-success.active,.open > .dropdown-toggle.egg-container .btn-success{background-image:none}.egg-container .btn-success.disabled,.egg-container .btn-success[disabled],fieldset[disabled] .egg-container .btn-success,.egg-container .btn-success.disabled:hover,.egg-container .btn-success[disabled]:hover,fieldset[disabled] .egg-container .btn-success:hover,.egg-container .btn-success.disabled:focus,.egg-container .btn-success[disabled]:focus,fieldset[disabled] .egg-container .btn-success:focus,.egg-container .btn-success.disabled.focus,.egg-container .btn-success[disabled].focus,fieldset[disabled] .egg-container .btn-success.focus,.egg-container .btn-success.disabled:active,.egg-container .btn-success[disabled]:active,fieldset[disabled] .egg-container .btn-success:active,.egg-container .btn-success.disabled.active,.egg-container .btn-success[disabled].active,fieldset[disabled] .egg-container .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.egg-container .btn-success .badge{color:#5cb85c;background-color:#fff}.egg-container .btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.egg-container .btn-info:hover,.egg-container .btn-info:focus,.egg-container .btn-info.focus,.egg-container .btn-info:active,.egg-container .btn-info.active,.open > .dropdown-toggle.egg-container .btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.egg-container .btn-info:active,.egg-container .btn-info.active,.open > .dropdown-toggle.egg-container .btn-info{background-image:none}.egg-container .btn-info.disabled,.egg-container .btn-info[disabled],fieldset[disabled] .egg-container .btn-info,.egg-container .btn-info.disabled:hover,.egg-container .btn-info[disabled]:hover,fieldset[disabled] .egg-container .btn-info:hover,.egg-container .btn-info.disabled:focus,.egg-container .btn-info[disabled]:focus,fieldset[disabled] .egg-container .btn-info:focus,.egg-container .btn-info.disabled.focus,.egg-container .btn-info[disabled].focus,fieldset[disabled] .egg-container .btn-info.focus,.egg-container .btn-info.disabled:active,.egg-container .btn-info[disabled]:active,fieldset[disabled] .egg-container .btn-info:active,.egg-container .btn-info.disabled.active,.egg-container .btn-info[disabled].active,fieldset[disabled] .egg-container .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.egg-container .btn-info .badge{color:#5bc0de;background-color:#fff}.egg-container .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.egg-container .btn-warning:hover,.egg-container .btn-warning:focus,.egg-container .btn-warning.focus,.egg-container .btn-warning:active,.egg-container .btn-warning.active,.open > .dropdown-toggle.egg-container .btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.egg-container .btn-warning:active,.egg-container .btn-warning.active,.open > .dropdown-toggle.egg-container .btn-warning{background-image:none}.egg-container .btn-warning.disabled,.egg-container .btn-warning[disabled],fieldset[disabled] .egg-container .btn-warning,.egg-container .btn-warning.disabled:hover,.egg-container .btn-warning[disabled]:hover,fieldset[disabled] .egg-container .btn-warning:hover,.egg-container .btn-warning.disabled:focus,.egg-container .btn-warning[disabled]:focus,fieldset[disabled] .egg-container .btn-warning:focus,.egg-container .btn-warning.disabled.focus,.egg-container .btn-warning[disabled].focus,fieldset[disabled] .egg-container .btn-warning.focus,.egg-container .btn-warning.disabled:active,.egg-container .btn-warning[disabled]:active,fieldset[disabled] .egg-container .btn-warning:active,.egg-container .btn-warning.disabled.active,.egg-container .btn-warning[disabled].active,fieldset[disabled] .egg-container .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.egg-container .btn-warning .badge{color:#f0ad4e;background-color:#fff}.egg-container .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.egg-container .btn-danger:hover,.egg-container .btn-danger:focus,.egg-container .btn-danger.focus,.egg-container .btn-danger:active,.egg-container .btn-danger.active,.open > .dropdown-toggle.egg-container .btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.egg-container .btn-danger:active,.egg-container .btn-danger.active,.open > .dropdown-toggle.egg-container .btn-danger{background-image:none}.egg-container .btn-danger.disabled,.egg-container .btn-danger[disabled],fieldset[disabled] .egg-container .btn-danger,.egg-container .btn-danger.disabled:hover,.egg-container .btn-danger[disabled]:hover,fieldset[disabled] .egg-container .btn-danger:hover,.egg-container .btn-danger.disabled:focus,.egg-container .btn-danger[disabled]:focus,fieldset[disabled] .egg-container .btn-danger:focus,.egg-container .btn-danger.disabled.focus,.egg-container .btn-danger[disabled].focus,fieldset[disabled] .egg-container .btn-danger.focus,.egg-container .btn-danger.disabled:active,.egg-container .btn-danger[disabled]:active,fieldset[disabled] .egg-container .btn-danger:active,.egg-container .btn-danger.disabled.active,.egg-container .btn-danger[disabled].active,fieldset[disabled] .egg-container .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.egg-container .btn-danger .badge{color:#d9534f;background-color:#fff}.egg-container .btn-link{font-weight:400;color:#337ab7;border-radius:0}.egg-container .btn-link,.egg-container .btn-link:active,.egg-container .btn-link.active,.egg-container .btn-link[disabled],fieldset[disabled] .egg-container .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.egg-container .btn-link,.egg-container .btn-link:hover,.egg-container .btn-link:focus,.egg-container .btn-link:active{border-color:transparent}.egg-container .btn-link:hover,.egg-container .btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.egg-container .btn-link[disabled]:hover,fieldset[disabled] .egg-container .btn-link:hover,.egg-container .btn-link[disabled]:focus,fieldset[disabled] .egg-container .btn-link:focus{color:#777;text-decoration:none}.egg-container .btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.egg-container .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.egg-container .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.egg-container .btn-block{display:block;width:100%}.egg-container .btn-block + .btn-block{margin-top:5px}.egg-container input[type="submit"].btn-block,.egg-container input[type="reset"].btn-block,.egg-container input[type="button"].btn-block{width:100%}.egg-container .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.egg-container .fade.in{opacity:1}.egg-container .collapse{display:none}.egg-container .collapse.in{display:block}tr.egg-container .collapse.in{display:table-row}tbody.egg-container .collapse.in{display:table-row-group}.egg-container .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.egg-container .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.egg-container .dropup,.egg-container .dropdown{position:relative}.egg-container .dropdown-toggle:focus{outline:0}.egg-container .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.egg-container .dropdown-menu.pull-right{right:0;left:auto}.egg-container .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.egg-container .dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.egg-container .dropdown-menu > li > a:hover,.egg-container .dropdown-menu > li > a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.egg-container .dropdown-menu > .active > a,.egg-container .dropdown-menu > .active > a:hover,.egg-container .dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.egg-container .dropdown-menu > .disabled > a,.egg-container .dropdown-menu > .disabled > a:hover,.egg-container .dropdown-menu > .disabled > a:focus{color:#777}.egg-container .dropdown-menu > .disabled > a:hover,.egg-container .dropdown-menu > .disabled > a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.egg-container .open > .dropdown-menu{display:block}.egg-container .open > a{outline:0}.egg-container .dropdown-menu-right{right:0;left:auto}.egg-container .dropdown-menu-left{right:auto;left:0}.egg-container .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.egg-container .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.egg-container .pull-right > .dropdown-menu{right:0;left:auto}.egg-container .dropup .caret,.egg-container .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.egg-container .dropup .dropdown-menu,.egg-container .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.egg-container .navbar-right .dropdown-menu{right:0;left:auto}.egg-container .navbar-right .dropdown-menu-left{right:auto;left:0}}.egg-container .btn-group,.egg-container .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.egg-container .btn-group > .btn,.egg-container .btn-group-vertical > .btn{position:relative;float:left}.egg-container .btn-group > .btn:hover,.egg-container .btn-group-vertical > .btn:hover,.egg-container .btn-group > .btn:focus,.egg-container .btn-group-vertical > .btn:focus,.egg-container .btn-group > .btn:active,.egg-container .btn-group-vertical > .btn:active,.egg-container .btn-group > .btn.active,.egg-container .btn-group-vertical > .btn.active{z-index:2}.egg-container .btn-group .btn + .btn,.egg-container .btn-group .btn + .btn-group,.egg-container .btn-group .btn-group + .btn,.egg-container .btn-group .btn-group + .btn-group{margin-left:-1px}.egg-container .btn-toolbar{margin-left:-5px}.egg-container .btn-toolbar .btn-group,.egg-container .btn-toolbar .input-group{float:left}.egg-container .btn-toolbar > .btn,.egg-container .btn-toolbar > .btn-group,.egg-container .btn-toolbar > .input-group{margin-left:5px}.egg-container .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.egg-container .btn-group > .btn:first-child{margin-left:0}.egg-container .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.egg-container .btn-group > .btn:last-child:not(:first-child),.egg-container .btn-group > .dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.egg-container .btn-group > .btn-group{float:left}.egg-container .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0}.egg-container .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.egg-container .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.egg-container .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.egg-container .btn-group .dropdown-toggle:active,.egg-container .btn-group.open .dropdown-toggle{outline:0}.egg-container .btn-group > .btn + .dropdown-toggle{padding-right:8px;padding-left:8px}.egg-container .btn-group > .btn-lg + .dropdown-toggle{padding-right:12px;padding-left:12px}.egg-container .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.egg-container .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.egg-container .btn .caret{margin-left:0}.egg-container .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.egg-container .dropup .btn-lg .caret{border-width:0 5px 5px}.egg-container .btn-group-vertical > .btn,.egg-container .btn-group-vertical > .btn-group,.egg-container .btn-group-vertical > .btn-group > .btn{display:block;float:none;width:100%;max-width:100%}.egg-container .btn-group-vertical > .btn-group > .btn{float:none}.egg-container .btn-group-vertical > .btn + .btn,.egg-container .btn-group-vertical > .btn + .btn-group,.egg-container .btn-group-vertical > .btn-group + .btn,.egg-container .btn-group-vertical > .btn-group + .btn-group{margin-top:-1px;margin-left:0}.egg-container .btn-group-vertical > .btn:not(:first-child):not(:last-child){border-radius:0}.egg-container .btn-group-vertical > .btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.egg-container .btn-group-vertical > .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.egg-container .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0}.egg-container .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,.egg-container .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.egg-container .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.egg-container .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.egg-container .btn-group-justified > .btn,.egg-container .btn-group-justified > .btn-group{display:table-cell;float:none;width:1%}.egg-container .btn-group-justified > .btn-group .btn{width:100%}.egg-container .btn-group-justified > .btn-group .dropdown-menu{left:auto}.egg-container [data-toggle="buttons"] > .btn input[type="radio"],.egg-container [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],.egg-container [data-toggle="buttons"] > .btn input[type="checkbox"],.egg-container [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.egg-container .input-group{position:relative;display:table;border-collapse:separate}.egg-container .input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.egg-container .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.egg-container .input-group-lg > .form-control,.egg-container .input-group-lg > .input-group-addon,.egg-container .input-group-lg > .input-group-btn > .btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.egg-container .input-group-lg > .form-control,select.egg-container .input-group-lg > .input-group-addon,select.egg-container .input-group-lg > .input-group-btn > .btn{height:46px;line-height:46px}textarea.egg-container .input-group-lg > .form-control,textarea.egg-container .input-group-lg > .input-group-addon,textarea.egg-container .input-group-lg > .input-group-btn > .btn,select[multiple].egg-container .input-group-lg > .form-control,select[multiple].egg-container .input-group-lg > .input-group-addon,select[multiple].egg-container .input-group-lg > .input-group-btn > .btn{height:auto}.egg-container .input-group-sm > .form-control,.egg-container .input-group-sm > .input-group-addon,.egg-container .input-group-sm > .input-group-btn > .btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.egg-container .input-group-sm > .form-control,select.egg-container .input-group-sm > .input-group-addon,select.egg-container .input-group-sm > .input-group-btn > .btn{height:30px;line-height:30px}textarea.egg-container .input-group-sm > .form-control,textarea.egg-container .input-group-sm > .input-group-addon,textarea.egg-container .input-group-sm > .input-group-btn > .btn,select[multiple].egg-container .input-group-sm > .form-control,select[multiple].egg-container .input-group-sm > .input-group-addon,select[multiple].egg-container .input-group-sm > .input-group-btn > .btn{height:auto}.egg-container .input-group-addon,.egg-container .input-group-btn,.egg-container .input-group .form-control{display:table-cell}.egg-container .input-group-addon:not(:first-child):not(:last-child),.egg-container .input-group-btn:not(:first-child):not(:last-child),.egg-container .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.egg-container .input-group-addon,.egg-container .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.egg-container .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.egg-container .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.egg-container .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.egg-container .input-group-addon input[type="radio"],.egg-container .input-group-addon input[type="checkbox"]{margin-top:0}.egg-container .input-group .form-control:first-child,.egg-container .input-group-addon:first-child,.egg-container .input-group-btn:first-child > .btn,.egg-container .input-group-btn:first-child > .btn-group > .btn,.egg-container .input-group-btn:first-child > .dropdown-toggle,.egg-container .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),.egg-container .input-group-btn:last-child > .btn-group:not(:last-child) > .btn{border-top-right-radius:0;border-bottom-right-radius:0}.egg-container .input-group-addon:first-child{border-right:0}.egg-container .input-group .form-control:last-child,.egg-container .input-group-addon:last-child,.egg-container .input-group-btn:last-child > .btn,.egg-container .input-group-btn:last-child > .btn-group > .btn,.egg-container .input-group-btn:last-child > .dropdown-toggle,.egg-container .input-group-btn:first-child > .btn:not(:first-child),.egg-container .input-group-btn:first-child > .btn-group:not(:first-child) > .btn{border-top-left-radius:0;border-bottom-left-radius:0}.egg-container .input-group-addon:last-child{border-left:0}.egg-container .input-group-btn{position:relative;font-size:0;white-space:nowrap}.egg-container .input-group-btn > .btn{position:relative}.egg-container .input-group-btn > .btn + .btn{margin-left:-1px}.egg-container .input-group-btn > .btn:hover,.egg-container .input-group-btn > .btn:focus,.egg-container .input-group-btn > .btn:active{z-index:2}.egg-container .input-group-btn:first-child > .btn,.egg-container .input-group-btn:first-child > .btn-group{margin-right:-1px}.egg-container .input-group-btn:last-child > .btn,.egg-container .input-group-btn:last-child > .btn-group{margin-left:-1px}.egg-container .nav{padding-left:0;margin-bottom:0;list-style:none}.egg-container .nav > li{position:relative;display:block}.egg-container .nav > li > a{position:relative;display:block;padding:10px 15px}.egg-container .nav > li > a:hover,.egg-container .nav > li > a:focus{text-decoration:none;background-color:#eee}.egg-container .nav > li.disabled > a{color:#777}.egg-container .nav > li.disabled > a:hover,.egg-container .nav > li.disabled > a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.egg-container .nav .open > a,.egg-container .nav .open > a:hover,.egg-container .nav .open > a:focus{background-color:#eee;border-color:#337ab7}.egg-container .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.egg-container .nav > li > a > img{max-width:none}.egg-container .nav-tabs{border-bottom:1px solid #ddd}.egg-container .nav-tabs > li{float:left;margin-bottom:-1px}.egg-container .nav-tabs > li > a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.egg-container .nav-tabs > li > a:hover{border-color:#eee #eee #ddd}.egg-container .nav-tabs > li.active > a,.egg-container .nav-tabs > li.active > a:hover,.egg-container .nav-tabs > li.active > a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.egg-container .nav-tabs.nav-justified{width:100%;border-bottom:0}.egg-container .nav-tabs.nav-justified > li{float:none}.egg-container .nav-tabs.nav-justified > li > a{margin-bottom:5px;text-align:center}.egg-container .nav-tabs.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.egg-container .nav-tabs.nav-justified > li{display:table-cell;width:1%}.egg-container .nav-tabs.nav-justified > li > a{margin-bottom:0}}.egg-container .nav-tabs.nav-justified > li > a{margin-right:0;border-radius:4px}.egg-container .nav-tabs.nav-justified > .active > a,.egg-container .nav-tabs.nav-justified > .active > a:hover,.egg-container .nav-tabs.nav-justified > .active > a:focus{border:1px solid #ddd}@media (min-width: 768px){.egg-container .nav-tabs.nav-justified > li > a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.egg-container .nav-tabs.nav-justified > .active > a,.egg-container .nav-tabs.nav-justified > .active > a:hover,.egg-container .nav-tabs.nav-justified > .active > a:focus{border-bottom-color:#fff}}.egg-container .nav-pills > li{float:left}.egg-container .nav-pills > li > a{border-radius:4px}.egg-container .nav-pills > li + li{margin-left:2px}.egg-container .nav-pills > li.active > a,.egg-container .nav-pills > li.active > a:hover,.egg-container .nav-pills > li.active > a:focus{color:#fff;background-color:#337ab7}.egg-container .nav-stacked > li{float:none}.egg-container .nav-stacked > li + li{margin-top:2px;margin-left:0}.egg-container .nav-justified{width:100%}.egg-container .nav-justified > li{float:none}.egg-container .nav-justified > li > a{margin-bottom:5px;text-align:center}.egg-container .nav-justified > .dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.egg-container .nav-justified > li{display:table-cell;width:1%}.egg-container .nav-justified > li > a{margin-bottom:0}}.egg-container .nav-tabs-justified{border-bottom:0}.egg-container .nav-tabs-justified > li > a{margin-right:0;border-radius:4px}.egg-container .nav-tabs-justified > .active > a,.egg-container .nav-tabs-justified > .active > a:hover,.egg-container .nav-tabs-justified > .active > a:focus{border:1px solid #ddd}@media (min-width: 768px){.egg-container .nav-tabs-justified > li > a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.egg-container .nav-tabs-justified > .active > a,.egg-container .nav-tabs-justified > .active > a:hover,.egg-container .nav-tabs-justified > .active > a:focus{border-bottom-color:#fff}}.egg-container .tab-content > .tab-pane{display:none}.egg-container .tab-content > .active{display:block}.egg-container .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.egg-container .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.egg-container .breadcrumb > li{display:inline-block}.egg-container .breadcrumb > li + li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.egg-container .breadcrumb > .active{color:#777}.egg-container .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.egg-container .label:hover,a.egg-container .label:focus{color:#fff;text-decoration:none;cursor:pointer}.egg-container .label:empty{display:none}.btn .egg-container .label{position:relative;top:-1px}.egg-container .label-default{background-color:#777}.egg-container .label-default[href]:hover,.egg-container .label-default[href]:focus{background-color:#5e5e5e}.egg-container .label-primary{background-color:#337ab7}.egg-container .label-primary[href]:hover,.egg-container .label-primary[href]:focus{background-color:#286090}.egg-container .label-success{background-color:#5cb85c}.egg-container .label-success[href]:hover,.egg-container .label-success[href]:focus{background-color:#449d44}.egg-container .label-info{background-color:#5bc0de}.egg-container .label-info[href]:hover,.egg-container .label-info[href]:focus{background-color:#31b0d5}.egg-container .label-warning{background-color:#f0ad4e}.egg-container .label-warning[href]:hover,.egg-container .label-warning[href]:focus{background-color:#ec971f}.egg-container .label-danger{background-color:#d9534f}.egg-container .label-danger[href]:hover,.egg-container .label-danger[href]:focus{background-color:#c9302c}.egg-container .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.egg-container .badge:empty{display:none}.btn .egg-container .badge{position:relative;top:-1px}.btn-xs .egg-container .badge,.btn-group-xs > .btn .egg-container .badge{top:0;padding:1px 5px}a.egg-container .badge:hover,a.egg-container .badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active > .egg-container .badge,.nav-pills > .active > a > .egg-container .badge{color:#337ab7;background-color:#fff}.list-group-item > .egg-container .badge{float:right}.list-group-item > .egg-container .badge + .egg-container .badge{margin-right:5px}.nav-pills > li > a > .egg-container .badge{margin-left:3px}.egg-container .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.egg-container .thumbnail > img,.egg-container .thumbnail a > img{margin-right:auto;margin-left:auto}.egg-container a.thumbnail:hover,.egg-container a.thumbnail:focus,.egg-container a.thumbnail.active{border-color:#337ab7}.egg-container .thumbnail .caption{padding:9px;color:#333}.egg-container .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.egg-container .alert h4{margin-top:0;color:inherit}.egg-container .alert .alert-link{font-weight:700}.egg-container .alert > p,.egg-container .alert > ul{margin-bottom:0}.egg-container .alert > p + p{margin-top:5px}.egg-container .alert-dismissable,.egg-container .alert-dismissible{padding-right:35px}.egg-container .alert-dismissable .close,.egg-container .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.egg-container .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.egg-container .alert-success hr{border-top-color:#c9e2b3}.egg-container .alert-success .alert-link{color:#2b542c}.egg-container .alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.egg-container .alert-info hr{border-top-color:#a6e1ec}.egg-container .alert-info .alert-link{color:#245269}.egg-container .alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.egg-container .alert-warning hr{border-top-color:#f7e1b5}.egg-container .alert-warning .alert-link{color:#66512c}.egg-container .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.egg-container .alert-danger hr{border-top-color:#e4b9c0}.egg-container .alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.egg-container .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.egg-container .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.egg-container .progress-striped .progress-bar,.egg-container .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.egg-container .progress.active .progress-bar,.egg-container .progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.egg-container .progress-bar-success{background-color:#5cb85c}.progress-striped .egg-container .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .progress-bar-info{background-color:#5bc0de}.progress-striped .egg-container .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .progress-bar-warning{background-color:#f0ad4e}.progress-striped .egg-container .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .progress-bar-danger{background-color:#d9534f}.progress-striped .egg-container .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .media{margin-top:15px}.egg-container .media:first-child{margin-top:0}.egg-container .media,.egg-container .media-body{overflow:hidden;zoom:1}.egg-container .media-body{width:10000px}.egg-container .media-object{display:block}.egg-container .media-right,.egg-container .media > .pull-right{padding-left:10px}.egg-container .media-left,.egg-container .media > .pull-left{padding-right:20px}.egg-container .media-left,.egg-container .media-right,.egg-container .media-body{display:table-cell;vertical-align:top}.egg-container .media-middle{vertical-align:middle}.egg-container .media-bottom{vertical-align:bottom}.egg-container .media-heading{margin-top:0;margin-bottom:18px}.egg-container .media-list{padding-left:0;list-style:none}.egg-container .list-group{padding-left:0;margin-bottom:20px}.egg-container .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.egg-container .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.egg-container .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.egg-container a.list-group-item{color:#555}.egg-container a.list-group-item .list-group-item-heading{color:#333}.egg-container a.list-group-item:hover,.egg-container a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.egg-container .list-group-item.disabled,.egg-container .list-group-item.disabled:hover,.egg-container .list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.egg-container .list-group-item.disabled .list-group-item-heading,.egg-container .list-group-item.disabled:hover .list-group-item-heading,.egg-container .list-group-item.disabled:focus .list-group-item-heading{color:inherit}.egg-container .list-group-item.disabled .list-group-item-text,.egg-container .list-group-item.disabled:hover .list-group-item-text,.egg-container .list-group-item.disabled:focus .list-group-item-text{color:#777}.egg-container .list-group-item.active,.egg-container .list-group-item.active:hover,.egg-container .list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.egg-container .list-group-item.active .list-group-item-heading,.egg-container .list-group-item.active:hover .list-group-item-heading,.egg-container .list-group-item.active:focus .list-group-item-heading,.egg-container .list-group-item.active .list-group-item-heading > small,.egg-container .list-group-item.active:hover .list-group-item-heading > small,.egg-container .list-group-item.active:focus .list-group-item-heading > small,.egg-container .list-group-item.active .list-group-item-heading > .small,.egg-container .list-group-item.active:hover .list-group-item-heading > .small,.egg-container .list-group-item.active:focus .list-group-item-heading > .small{color:inherit}.egg-container .list-group-item.active .list-group-item-text,.egg-container .list-group-item.active:hover .list-group-item-text,.egg-container .list-group-item.active:focus .list-group-item-text{color:#c7ddef}.egg-container .list-group-item-success{color:#3c763d;background-color:#dff0d8}a.egg-container .list-group-item-success{color:#3c763d}a.egg-container .list-group-item-success .list-group-item-heading{color:inherit}a.egg-container .list-group-item-success:hover,a.egg-container .list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.egg-container .list-group-item-success.active,a.egg-container .list-group-item-success.active:hover,a.egg-container .list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.egg-container .list-group-item-info{color:#31708f;background-color:#d9edf7}a.egg-container .list-group-item-info{color:#31708f}a.egg-container .list-group-item-info .list-group-item-heading{color:inherit}a.egg-container .list-group-item-info:hover,a.egg-container .list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.egg-container .list-group-item-info.active,a.egg-container .list-group-item-info.active:hover,a.egg-container .list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.egg-container .list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.egg-container .list-group-item-warning{color:#8a6d3b}a.egg-container .list-group-item-warning .list-group-item-heading{color:inherit}a.egg-container .list-group-item-warning:hover,a.egg-container .list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.egg-container .list-group-item-warning.active,a.egg-container .list-group-item-warning.active:hover,a.egg-container .list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.egg-container .list-group-item-danger{color:#a94442;background-color:#f2dede}a.egg-container .list-group-item-danger{color:#a94442}a.egg-container .list-group-item-danger .list-group-item-heading{color:inherit}a.egg-container .list-group-item-danger:hover,a.egg-container .list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.egg-container .list-group-item-danger.active,a.egg-container .list-group-item-danger.active:hover,a.egg-container .list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.egg-container .list-group-item-heading{margin-top:0;margin-bottom:5px}.egg-container .list-group-item-text{margin-bottom:0;line-height:1.3}.egg-container .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.egg-container .panel-body{padding:20px}.egg-container .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel-heading > .dropdown .dropdown-toggle{color:inherit}.egg-container .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.egg-container .panel-title > a,.egg-container .panel-title > small,.egg-container .panel-title > .small,.egg-container .panel-title > small > a,.egg-container .panel-title > .small > a{color:inherit}.egg-container .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel > .list-group,.egg-container .panel > .panel-collapse > .list-group{margin-bottom:0}.egg-container .panel > .list-group .list-group-item,.egg-container .panel > .panel-collapse > .list-group .list-group-item{border-width:1px 0;border-radius:0}.egg-container .panel > .list-group:first-child .list-group-item:first-child,.egg-container .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel > .list-group:last-child .list-group-item:last-child,.egg-container .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel-heading + .list-group .list-group-item:first-child{border-top-width:0}.egg-container .list-group + .panel-footer{border-top-width:0}.egg-container .panel > .table,.egg-container .panel > .table-responsive > .table,.egg-container .panel > .panel-collapse > .table{margin-bottom:0}.egg-container .panel > .table caption,.egg-container .panel > .table-responsive > .table caption,.egg-container .panel > .panel-collapse > .table caption{padding-right:15px;padding-left:15px}.egg-container .panel > .table:first-child,.egg-container .panel > .table-responsive:first-child > .table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel > .table:first-child > thead:first-child > tr:first-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,.egg-container .panel > .table:first-child > tbody:first-child > tr:first-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,.egg-container .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,.egg-container .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,.egg-container .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child{border-top-left-radius:3px}.egg-container .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,.egg-container .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,.egg-container .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,.egg-container .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,.egg-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child{border-top-right-radius:3px}.egg-container .panel > .table:last-child,.egg-container .panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel > .table:last-child > tbody:last-child > tr:last-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,.egg-container .panel > .table:last-child > tfoot:last-child > tr:last-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,.egg-container .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.egg-container .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,.egg-container .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child{border-bottom-left-radius:3px}.egg-container .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,.egg-container .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.egg-container .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,.egg-container .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,.egg-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child{border-bottom-right-radius:3px}.egg-container .panel > .panel-body + .table,.egg-container .panel > .panel-body + .table-responsive,.egg-container .panel > .table + .panel-body,.egg-container .panel > .table-responsive + .panel-body{border-top:1px solid #ddd}.egg-container .panel > .table > tbody:first-child > tr:first-child th,.egg-container .panel > .table > tbody:first-child > tr:first-child td{border-top:0}.egg-container .panel > .table-bordered,.egg-container .panel > .table-responsive > .table-bordered{border:0}.egg-container .panel > .table-bordered > thead > tr > th:first-child,.egg-container .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,.egg-container .panel > .table-bordered > tbody > tr > th:first-child,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,.egg-container .panel > .table-bordered > tfoot > tr > th:first-child,.egg-container .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,.egg-container .panel > .table-bordered > thead > tr > td:first-child,.egg-container .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,.egg-container .panel > .table-bordered > tbody > tr > td:first-child,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,.egg-container .panel > .table-bordered > tfoot > tr > td:first-child,.egg-container .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0}.egg-container .panel > .table-bordered > thead > tr > th:last-child,.egg-container .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,.egg-container .panel > .table-bordered > tbody > tr > th:last-child,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,.egg-container .panel > .table-bordered > tfoot > tr > th:last-child,.egg-container .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,.egg-container .panel > .table-bordered > thead > tr > td:last-child,.egg-container .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,.egg-container .panel > .table-bordered > tbody > tr > td:last-child,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,.egg-container .panel > .table-bordered > tfoot > tr > td:last-child,.egg-container .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0}.egg-container .panel > .table-bordered > thead > tr:first-child > td,.egg-container .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,.egg-container .panel > .table-bordered > tbody > tr:first-child > td,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,.egg-container .panel > .table-bordered > thead > tr:first-child > th,.egg-container .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,.egg-container .panel > .table-bordered > tbody > tr:first-child > th,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th{border-bottom:0}.egg-container .panel > .table-bordered > tbody > tr:last-child > td,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,.egg-container .panel > .table-bordered > tfoot > tr:last-child > td,.egg-container .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,.egg-container .panel > .table-bordered > tbody > tr:last-child > th,.egg-container .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,.egg-container .panel > .table-bordered > tfoot > tr:last-child > th,.egg-container .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th{border-bottom:0}.egg-container .panel > .table-responsive{margin-bottom:0;border:0}.egg-container .panel-group{margin-bottom:20px}.egg-container .panel-group .panel{margin-bottom:0;border-radius:4px}.egg-container .panel-group .panel + .panel{margin-top:5px}.egg-container .panel-group .panel-heading{border-bottom:0}.egg-container .panel-group .panel-heading + .panel-collapse > .panel-body,.egg-container .panel-group .panel-heading + .panel-collapse > .list-group{border-top:1px solid #ddd}.egg-container .panel-group .panel-footer{border-top:0}.egg-container .panel-group .panel-footer + .panel-collapse .panel-body{border-bottom:1px solid #ddd}.egg-container .panel-default{border-color:#ddd}.egg-container .panel-default > .panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.egg-container .panel-default > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ddd}.egg-container .panel-default > .panel-heading .badge{color:#f5f5f5;background-color:#333}.egg-container .panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ddd}.egg-container .panel-primary{border-color:#337ab7}.egg-container .panel-primary > .panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.egg-container .panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#337ab7}.egg-container .panel-primary > .panel-heading .badge{color:#337ab7;background-color:#fff}.egg-container .panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#337ab7}.egg-container .panel-success{border-color:#d6e9c6}.egg-container .panel-success > .panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.egg-container .panel-success > .panel-heading + .panel-collapse > .panel-body{border-top-color:#d6e9c6}.egg-container .panel-success > .panel-heading .badge{color:#dff0d8;background-color:#3c763d}.egg-container .panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#d6e9c6}.egg-container .panel-info{border-color:#bce8f1}.egg-container .panel-info > .panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.egg-container .panel-info > .panel-heading + .panel-collapse > .panel-body{border-top-color:#bce8f1}.egg-container .panel-info > .panel-heading .badge{color:#d9edf7;background-color:#31708f}.egg-container .panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#bce8f1}.egg-container .panel-warning{border-color:#faebcc}.egg-container .panel-warning > .panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.egg-container .panel-warning > .panel-heading + .panel-collapse > .panel-body{border-top-color:#faebcc}.egg-container .panel-warning > .panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.egg-container .panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#faebcc}.egg-container .panel-danger{border-color:#ebccd1}.egg-container .panel-danger > .panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.egg-container .panel-danger > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ebccd1}.egg-container .panel-danger > .panel-heading .badge{color:#f2dede;background-color:#a94442}.egg-container .panel-danger > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ebccd1}.egg-container .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.egg-container .embed-responsive .embed-responsive-item,.egg-container .embed-responsive iframe,.egg-container .embed-responsive embed,.egg-container .embed-responsive object,.egg-container .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.egg-container .embed-responsive-16by9{padding-bottom:56.25%}.egg-container .embed-responsive-4by3{padding-bottom:75%}.egg-container .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.egg-container .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.egg-container .well-lg{padding:24px;border-radius:6px}.egg-container .well-sm{padding:9px;border-radius:3px}.egg-container .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.egg-container .close:hover,.egg-container .close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.egg-container .close{-webkit-appearance:none;padding:0;cursor:pointer;background:transparent;border:0}.egg-container .clearfix:before,.egg-container .clearfix:after,.egg-container .dl-horizontal dd:before,.egg-container .dl-horizontal dd:after,.egg-container .container:before,.egg-container .container:after,.egg-container .container-fluid:before,.egg-container .container-fluid:after,.egg-container .row:before,.egg-container .row:after,.egg-container .form-horizontal .form-group:before,.egg-container .form-horizontal .form-group:after,.egg-container .btn-toolbar:before,.egg-container .btn-toolbar:after,.egg-container .btn-group-vertical > .btn-group:before,.egg-container .btn-group-vertical > .btn-group:after,.egg-container .nav:before,.egg-container .nav:after,.egg-container .panel-body:before,.egg-container .panel-body:after{display:table;content:" "}.egg-container .clearfix:after,.egg-container .dl-horizontal dd:after,.egg-container .container:after,.egg-container .container-fluid:after,.egg-container .row:after,.egg-container .form-horizontal .form-group:after,.egg-container .btn-toolbar:after,.egg-container .btn-group-vertical > .btn-group:after,.egg-container .nav:after,.egg-container .panel-body:after{clear:both}.egg-container .center-block{display:block;margin-right:auto;margin-left:auto}.egg-container .pull-right{float:right!important}.egg-container .pull-left{float:left!important}.egg-container .hide{display:none!important}.egg-container .show{display:block!important}.egg-container .invisible{visibility:hidden}.egg-container .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.egg-container .hidden{display:none!important}.egg-container .affix{position:fixed}.egg-container .visible-xs,.egg-container .visible-sm,.egg-container .visible-md,.egg-container .visible-lg{display:none!important}.egg-container .visible-xs-block,.egg-container .visible-xs-inline,.egg-container .visible-xs-inline-block,.egg-container .visible-sm-block,.egg-container .visible-sm-inline,.egg-container .visible-sm-inline-block,.egg-container .visible-md-block,.egg-container .visible-md-inline,.egg-container .visible-md-inline-block,.egg-container .visible-lg-block,.egg-container .visible-lg-inline,.egg-container .visible-lg-inline-block{display:none!important}@media (max-width: 767px){.egg-container .visible-xs{display:block!important}table.egg-container .visible-xs{display:table}tr.egg-container .visible-xs{display:table-row!important}th.egg-container .visible-xs,td.egg-container .visible-xs{display:table-cell!important}.egg-container .visible-xs-block{display:block!important}.egg-container .visible-xs-inline{display:inline!important}.egg-container .visible-xs-inline-block{display:inline-block!important}}@media (min-width: 768px) and (max-width: 991px){.egg-container .visible-sm{display:block!important}table.egg-container .visible-sm{display:table}tr.egg-container .visible-sm{display:table-row!important}th.egg-container .visible-sm,td.egg-container .visible-sm{display:table-cell!important}.egg-container .visible-sm-block{display:block!important}.egg-container .visible-sm-inline{display:inline!important}.egg-container .visible-sm-inline-block{display:inline-block!important}}@media (min-width: 992px) and (max-width: 1199px){.egg-container .visible-md{display:block!important}table.egg-container .visible-md{display:table}tr.egg-container .visible-md{display:table-row!important}th.egg-container .visible-md,td.egg-container .visible-md{display:table-cell!important}.egg-container .visible-md-block{display:block!important}.egg-container .visible-md-inline{display:inline!important}.egg-container .visible-md-inline-block{display:inline-block!important}}@media (min-width: 1200px){.egg-container .visible-lg{display:block!important}table.egg-container .visible-lg{display:table}tr.egg-container .visible-lg{display:table-row!important}th.egg-container .visible-lg,td.egg-container .visible-lg{display:table-cell!important}}@media (min-width: 1200px){.egg-container .visible-lg-block{display:block!important}}@media (min-width: 1200px){.egg-container .visible-lg-inline{display:inline!important}}@media (min-width: 1200px){.egg-container .visible-lg-inline-block{display:inline-block!important}}@media (max-width: 767px){.egg-container .hidden-xs{display:none!important}}@media (min-width: 768px) and (max-width: 991px){.egg-container .hidden-sm{display:none!important}}@media (min-width: 992px) and (max-width: 1199px){.egg-container .hidden-md{display:none!important}}@media (min-width: 1200px){.egg-container .hidden-lg{display:none!important}}.egg-container .visible-print{display:none!important}@media print{.egg-container .visible-print{display:block!important}table.egg-container .visible-print{display:table}tr.egg-container .visible-print{display:table-row!important}th.egg-container .visible-print,td.egg-container .visible-print{display:table-cell!important}}.egg-container .visible-print-block{display:none!important}@media print{.egg-container .visible-print-block{display:block!important}}.egg-container .visible-print-inline{display:none!important}@media print{.egg-container .visible-print-inline{display:inline!important}}.egg-container .visible-print-inline-block{display:none!important}@media print{.egg-container .visible-print-inline-block{display:inline-block!important}}@media print{.egg-container .hidden-print{display:none!important}}
1
  /*!
2
  * Modified version of Bootstrap CSS
3
  * @author keywordrush.com <support@keywordrush.com>
4
+ * @link https://www.keywordrush.com
5
+ * @copyright Copyright &copy; 2021 keywordrush.com
6
  *
7
  * Original work Copyright
8
  * Bootstrap v3.3.4 (http://getbootstrap.com)
9
  * Copyright 2011-2015 Twitter, Inc.
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
+ */.egg-container{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}.egg-container{margin:0}.egg-container input[disabled],.egg-container input[type=button]{cursor:default}.egg-container .img-responsive,.egg-container .thumbnail a>img,.egg-container .thumbnail>img{display:block;max-width:100%;height:auto}.egg-container{/*! normalize.css v3.0.2 | MIT License | git.io/normalize *//*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */}.egg-container html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}.egg-container body{margin:0}.egg-container article,.egg-container aside,.egg-container details,.egg-container figcaption,.egg-container figure,.egg-container footer,.egg-container header,.egg-container hgroup,.egg-container main,.egg-container menu,.egg-container nav,.egg-container section,.egg-container summary{display:block}.egg-container audio,.egg-container canvas,.egg-container progress,.egg-container video{display:inline-block;vertical-align:baseline}.egg-container audio:not([controls]){display:none;height:0}.egg-container [hidden],.egg-container template{display:none}.egg-container a{background-color:transparent}.egg-container a:active,.egg-container a:hover{outline:0}.egg-container abbr[title]{border-bottom:1px dotted}.egg-container b,.egg-container strong{font-weight:700}.egg-container dfn{font-style:italic}.egg-container h1{margin:.67em 0;font-size:2em}.egg-container mark{color:#000;background:#ff0}.egg-container small{font-size:80%}.egg-container sub,.egg-container sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.egg-container sup{top:-.5em}.egg-container sub{bottom:-.25em}.egg-container img{border:0}.egg-container svg:not(:root){overflow:hidden}.egg-container figure{margin:1em 40px}.egg-container hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.egg-container pre{overflow:auto}.egg-container code,.egg-container kbd,.egg-container pre,.egg-container samp{font-size:1em}.egg-container button,.egg-container input,.egg-container optgroup,.egg-container select,.egg-container textarea{margin:0;font:inherit;color:inherit}.egg-container button{overflow:visible}.egg-container button,.egg-container select{text-transform:none}.egg-container button,.egg-container html input[type=button],.egg-container input[type=reset],.egg-container input[type=submit]{-webkit-appearance:button;cursor:pointer}.egg-container button[disabled],.egg-container html input[disabled]{cursor:default}.egg-container button::-moz-focus-inner,.egg-container input::-moz-focus-inner{padding:0;border:0}.egg-container input{line-height:normal}.egg-container input[type=checkbox],.egg-container input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.egg-container input[type=number]::-webkit-inner-spin-button,.egg-container input[type=number]::-webkit-outer-spin-button{height:auto}.egg-container input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}.egg-container input[type=search]::-webkit-search-cancel-button,.egg-container input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.egg-container fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}.egg-container legend{padding:0;border:0}.egg-container textarea{overflow:auto}.egg-container optgroup{font-weight:700}.egg-container table{border-spacing:0;border-collapse:collapse}.egg-container td,.egg-container th{padding:0}@media print{.egg-container *,.egg-container :after,.egg-container :before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.egg-container a,.egg-container a:visited{text-decoration:underline}.egg-container a[href]:after{content:" (" attr(href) ")"}.egg-container abbr[title]:after{content:" (" attr(title) ")"}.egg-container a[href^="#"]:after,.egg-container a[href^="javascript:"]:after{content:""}.egg-container blockquote,.egg-container pre{border:1px solid #999;page-break-inside:avoid}.egg-container thead{display:table-header-group}.egg-container img,.egg-container tr{page-break-inside:avoid}.egg-container img{max-width:100%!important}.egg-container h2,.egg-container h3,.egg-container p{orphans:3;widows:3}.egg-container h2,.egg-container h3{page-break-after:avoid}.egg-container select{background:#fff!important}.egg-container .navbar{display:none}.egg-container .btn>.caret,.egg-container .dropup>.btn>.caret{border-top-color:#000!important}.egg-container .label{border:1px solid #000}.egg-container .table{border-collapse:collapse!important}.egg-container .table td,.egg-container .table th{background-color:#fff!important}.egg-container .table-bordered td,.egg-container .table-bordered th{border:1px solid #ddd!important}}.egg-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.egg-container :after,.egg-container :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.egg-container button,.egg-container input,.egg-container select,.egg-container textarea{font-family:inherit;font-size:inherit;line-height:inherit}.egg-container a{text-decoration:none}.egg-container a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.egg-container figure{margin:0}.egg-container img{vertical-align:middle}.egg-container .img-responsive{display:block;max-width:100%;height:auto}.egg-container .img-rounded{border-radius:6px}.egg-container .img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.egg-container .img-circle{border-radius:50%}.egg-container hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.egg-container .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.egg-container .sr-only-focusable:active,.egg-container .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.egg-container [role=button]{cursor:pointer}.egg-container .h1,.egg-container .h2,.egg-container .h3,.egg-container .h4,.egg-container .h5,.egg-container .h6,.egg-container h1,.egg-container h2,.egg-container h3,.egg-container h4,.egg-container h5,.egg-container h6{color:inherit}.egg-container .h1 .small,.egg-container .h1 small,.egg-container .h2 .small,.egg-container .h2 small,.egg-container .h3 .small,.egg-container .h3 small,.egg-container .h4 .small,.egg-container .h4 small,.egg-container .h5 .small,.egg-container .h5 small,.egg-container .h6 .small,.egg-container .h6 small,.egg-container h1 .small,.egg-container h1 small,.egg-container h2 .small,.egg-container h2 small,.egg-container h3 .small,.egg-container h3 small,.egg-container h4 .small,.egg-container h4 small,.egg-container h5 .small,.egg-container h5 small,.egg-container h6 .small,.egg-container h6 small{font-weight:400;line-height:1;color:#777}.egg-container .h1 .small,.egg-container .h1 small,.egg-container .h2 .small,.egg-container .h2 small,.egg-container .h3 .small,.egg-container .h3 small,.egg-container h1 .small,.egg-container h1 small,.egg-container h2 .small,.egg-container h2 small,.egg-container h3 .small,.egg-container h3 small{font-size:65%}.egg-container .h4,.egg-container .h5,.egg-container .h6,.egg-container h4,.egg-container h5,.egg-container h6{margin-top:10px;margin-bottom:10px}.egg-container .h4 .small,.egg-container .h4 small,.egg-container .h5 .small,.egg-container .h5 small,.egg-container .h6 .small,.egg-container .h6 small,.egg-container h4 .small,.egg-container h4 small,.egg-container h5 .small,.egg-container h5 small,.egg-container h6 .small,.egg-container h6 small{font-size:75%}.egg-container .h1,.egg-container h1{font-size:36px}.egg-container .h2,.egg-container h2{font-size:27px}.egg-container .h3,.egg-container h3{font-size:23px}.egg-container .h4,.egg-container h4{font-size:18px}.egg-container .h5,.egg-container h5{font-size:14px}.egg-container .h6,.egg-container h6{font-size:12px}.egg-container p{margin:0 0 18px}.egg-container .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.egg-container .lead{font-size:21px}}.egg-container .small,.egg-container small{font-size:85%}.egg-container .mark,.egg-container mark{padding:.2em;background-color:#fcf8e3}.egg-container .text-left{text-align:left}.egg-container .text-right{text-align:right}.egg-container .text-center{text-align:center}.egg-container .text-justify{text-align:justify}.egg-container .text-nowrap{white-space:nowrap}.egg-container .text-lowercase{text-transform:lowercase}.egg-container .text-uppercase{text-transform:uppercase}.egg-container .text-capitalize{text-transform:capitalize}.egg-container .text-muted{color:#777}.egg-container .text-primary{color:#337ab7}a.egg-container .text-primary:hover{color:#286090}.egg-container .text-success{color:#3c763d}a.egg-container .text-success:hover{color:#2b542c}.egg-container .text-info{color:#31708f}a.egg-container .text-info:hover{color:#245269}.egg-container .text-warning{color:#8a6d3b}a.egg-container .text-warning:hover{color:#66512c}.egg-container .text-danger{color:#a94442}a.egg-container .text-danger:hover{color:#843534}.egg-container .bg-primary{color:#fff;background-color:#337ab7}a.egg-container .bg-primary:hover{background-color:#286090}.egg-container .bg-success{background-color:#dff0d8}a.egg-container .bg-success:hover{background-color:#c1e2b3}.egg-container .bg-info{background-color:#d9edf7}a.egg-container .bg-info:hover{background-color:#afd9ee}.egg-container .bg-warning{background-color:#fcf8e3}a.egg-container .bg-warning:hover{background-color:#f7ecb5}.egg-container .bg-danger{background-color:#f2dede}a.egg-container .bg-danger:hover{background-color:#e4b9b9}.egg-container .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.egg-container ol,.egg-container ul{margin-top:0;margin-bottom:10px}.egg-container ol ol,.egg-container ol ul,.egg-container ul ol,.egg-container ul ul{margin-bottom:0}.egg-container .list-unstyled{padding-left:0;list-style:none}.egg-container .list-inline{padding-left:0;margin-left:-5px;list-style:none}.egg-container .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.egg-container dl{margin-top:0;margin-bottom:20px}.egg-container dd,.egg-container dt{line-height:1.42857143}.egg-container dt{font-weight:700}.egg-container dd{margin-left:0}@media (min-width:768px){.egg-container .dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.egg-container .dl-horizontal dd{margin-left:180px}}.egg-container abbr[data-original-title],.egg-container abbr[title]{cursor:help;border-bottom:1px dotted #777}.egg-container .initialism{font-size:90%;text-transform:uppercase}.egg-container address{margin-bottom:20px;font-style:normal;line-height:1.42857143}.egg-container code,.egg-container kbd,.egg-container pre,.egg-container samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.egg-container code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.egg-container kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}.egg-container kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}.egg-container pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.egg-container pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.egg-container .pre-scrollable{max-height:340px;overflow-y:scroll}.egg-container .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.egg-container .container{width:750px}}@media (min-width:992px){.egg-container .container{width:970px}}@media (min-width:1200px){.egg-container .container{width:1170px}}.egg-container .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.egg-container .row{margin-right:-15px;margin-left:-15px;margin-bottom:30px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.egg-container .col-xs-1{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.egg-container .col-xs-1{float:left}.egg-container .col-xs-12{width:100%}.egg-container .col-xs-11{width:91.66666667%}.egg-container .col-xs-10{width:83.33333333%}.egg-container .col-xs-9{width:75%}.egg-container .col-xs-8{width:66.66666667%}.egg-container .col-xs-7{width:58.33333333%}.egg-container .col-xs-6{width:50%}.egg-container .col-xs-5{width:41.66666667%}.egg-container .col-xs-4{width:33.33333333%}.egg-container .col-xs-3{width:25%}.egg-container .col-xs-2{width:16.66666667%}.egg-container .col-xs-1{width:8.33333333%}.egg-container .col-xs-pull-12{right:100%}.egg-container .col-xs-pull-11{right:91.66666667%}.egg-container .col-xs-pull-10{right:83.33333333%}.egg-container .col-xs-pull-9{right:75%}.egg-container .col-xs-pull-8{right:66.66666667%}.egg-container .col-xs-pull-7{right:58.33333333%}.egg-container .col-xs-pull-6{right:50%}.egg-container .col-xs-pull-5{right:41.66666667%}.egg-container .col-xs-pull-4{right:33.33333333%}.egg-container .col-xs-pull-3{right:25%}.egg-container .col-xs-pull-2{right:16.66666667%}.egg-container .col-xs-pull-1{right:8.33333333%}.egg-container .col-xs-pull-0{right:auto}.egg-container .col-xs-push-12{left:100%}.egg-container .col-xs-push-11{left:91.66666667%}.egg-container .col-xs-push-10{left:83.33333333%}.egg-container .col-xs-push-9{left:75%}.egg-container .col-xs-push-8{left:66.66666667%}.egg-container .col-xs-push-7{left:58.33333333%}.egg-container .col-xs-push-6{left:50%}.egg-container .col-xs-push-5{left:41.66666667%}.egg-container .col-xs-push-4{left:33.33333333%}.egg-container .col-xs-push-3{left:25%}.egg-container .col-xs-push-2{left:16.66666667%}.egg-container .col-xs-push-1{left:8.33333333%}.egg-container .col-xs-push-0{left:auto}.egg-container .col-xs-offset-12{margin-left:100%}.egg-container .col-xs-offset-11{margin-left:91.66666667%}.egg-container .col-xs-offset-10{margin-left:83.33333333%}.egg-container .col-xs-offset-9{margin-left:75%}.egg-container .col-xs-offset-8{margin-left:66.66666667%}.egg-container .col-xs-offset-7{margin-left:58.33333333%}.egg-container .col-xs-offset-6{margin-left:50%}.egg-container .col-xs-offset-5{margin-left:41.66666667%}.egg-container .col-xs-offset-4{margin-left:33.33333333%}.egg-container .col-xs-offset-3{margin-left:25%}.egg-container .col-xs-offset-2{margin-left:16.66666667%}.egg-container .col-xs-offset-1{margin-left:8.33333333%}.egg-container .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.egg-container .col-sm-1{float:left}.egg-container .col-sm-12{width:100%}.egg-container .col-sm-11{width:91.66666667%}.egg-container .col-sm-10{width:83.33333333%}.egg-container .col-sm-9{width:75%}.egg-container .col-sm-8{width:66.66666667%}.egg-container .col-sm-7{width:58.33333333%}.egg-container .col-sm-6{width:50%}.egg-container .col-sm-5{width:41.66666667%}.egg-container .col-sm-4{width:33.33333333%}.egg-container .col-sm-3{width:25%}.egg-container .col-sm-2{width:16.66666667%}.egg-container .col-sm-1{width:8.33333333%}.egg-container .col-sm-pull-12{right:100%}.egg-container .col-sm-pull-11{right:91.66666667%}.egg-container .col-sm-pull-10{right:83.33333333%}.egg-container .col-sm-pull-9{right:75%}.egg-container .col-sm-pull-8{right:66.66666667%}.egg-container .col-sm-pull-7{right:58.33333333%}.egg-container .col-sm-pull-6{right:50%}.egg-container .col-sm-pull-5{right:41.66666667%}.egg-container .col-sm-pull-4{right:33.33333333%}.egg-container .col-sm-pull-3{right:25%}.egg-container .col-sm-pull-2{right:16.66666667%}.egg-container .col-sm-pull-1{right:8.33333333%}.egg-container .col-sm-pull-0{right:auto}.egg-container .col-sm-push-12{left:100%}.egg-container .col-sm-push-11{left:91.66666667%}.egg-container .col-sm-push-10{left:83.33333333%}.egg-container .col-sm-push-9{left:75%}.egg-container .col-sm-push-8{left:66.66666667%}.egg-container .col-sm-push-7{left:58.33333333%}.egg-container .col-sm-push-6{left:50%}.egg-container .col-sm-push-5{left:41.66666667%}.egg-container .col-sm-push-4{left:33.33333333%}.egg-container .col-sm-push-3{left:25%}.egg-container .col-sm-push-2{left:16.66666667%}.egg-container .col-sm-push-1{left:8.33333333%}.egg-container .col-sm-push-0{left:auto}.egg-container .col-sm-offset-12{margin-left:100%}.egg-container .col-sm-offset-11{margin-left:91.66666667%}.egg-container .col-sm-offset-10{margin-left:83.33333333%}.egg-container .col-sm-offset-9{margin-left:75%}.egg-container .col-sm-offset-8{margin-left:66.66666667%}.egg-container .col-sm-offset-7{margin-left:58.33333333%}.egg-container .col-sm-offset-6{margin-left:50%}.egg-container .col-sm-offset-5{margin-left:41.66666667%}.egg-container .col-sm-offset-4{margin-left:33.33333333%}.egg-container .col-sm-offset-3{margin-left:25%}.egg-container .col-sm-offset-2{margin-left:16.66666667%}.egg-container .col-sm-offset-1{margin-left:8.33333333%}.egg-container .col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.egg-container .col-md-1{float:left}.egg-container .col-md-12{width:100%}.egg-container .col-md-11{width:91.66666667%}.egg-container .col-md-10{width:83.33333333%}.egg-container .col-md-9{width:75%}.egg-container .col-md-8{width:66.66666667%}.egg-container .col-md-7{width:58.33333333%}.egg-container .col-md-6{width:50%}.egg-container .col-md-5{width:41.66666667%}.egg-container .col-md-4{width:33.33333333%}.egg-container .col-md-3{width:25%}.egg-container .col-md-2{width:16.66666667%}.egg-container .col-md-1{width:8.33333333%}.egg-container .col-md-pull-12{right:100%}.egg-container .col-md-pull-11{right:91.66666667%}.egg-container .col-md-pull-10{right:83.33333333%}.egg-container .col-md-pull-9{right:75%}.egg-container .col-md-pull-8{right:66.66666667%}.egg-container .col-md-pull-7{right:58.33333333%}.egg-container .col-md-pull-6{right:50%}.egg-container .col-md-pull-5{right:41.66666667%}.egg-container .col-md-pull-4{right:33.33333333%}.egg-container .col-md-pull-3{right:25%}.egg-container .col-md-pull-2{right:16.66666667%}.egg-container .col-md-pull-1{right:8.33333333%}.egg-container .col-md-pull-0{right:auto}.egg-container .col-md-push-12{left:100%}.egg-container .col-md-push-11{left:91.66666667%}.egg-container .col-md-push-10{left:83.33333333%}.egg-container .col-md-push-9{left:75%}.egg-container .col-md-push-8{left:66.66666667%}.egg-container .col-md-push-7{left:58.33333333%}.egg-container .col-md-push-6{left:50%}.egg-container .col-md-push-5{left:41.66666667%}.egg-container .col-md-push-4{left:33.33333333%}.egg-container .col-md-push-3{left:25%}.egg-container .col-md-push-2{left:16.66666667%}.egg-container .col-md-push-1{left:8.33333333%}.egg-container .col-md-push-0{left:auto}.egg-container .col-md-offset-12{margin-left:100%}.egg-container .col-md-offset-11{margin-left:91.66666667%}.egg-container .col-md-offset-10{margin-left:83.33333333%}.egg-container .col-md-offset-9{margin-left:75%}.egg-container .col-md-offset-8{margin-left:66.66666667%}.egg-container .col-md-offset-7{margin-left:58.33333333%}.egg-container .col-md-offset-6{margin-left:50%}.egg-container .col-md-offset-5{margin-left:41.66666667%}.egg-container .col-md-offset-4{margin-left:33.33333333%}.egg-container .col-md-offset-3{margin-left:25%}.egg-container .col-md-offset-2{margin-left:16.66666667%}.egg-container .col-md-offset-1{margin-left:8.33333333%}.egg-container .col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.egg-container .col-lg-1{float:left}.egg-container .col-lg-12{width:100%}.egg-container .col-lg-11{width:91.66666667%}.egg-container .col-lg-10{width:83.33333333%}.egg-container .col-lg-9{width:75%}.egg-container .col-lg-8{width:66.66666667%}.egg-container .col-lg-7{width:58.33333333%}.egg-container .col-lg-6{width:50%}.egg-container .col-lg-5{width:41.66666667%}.egg-container .col-lg-4{width:33.33333333%}.egg-container .col-lg-3{width:25%}.egg-container .col-lg-2{width:16.66666667%}.egg-container .col-lg-1{width:8.33333333%}.egg-container .col-lg-pull-12{right:100%}.egg-container .col-lg-pull-11{right:91.66666667%}.egg-container .col-lg-pull-10{right:83.33333333%}.egg-container .col-lg-pull-9{right:75%}.egg-container .col-lg-pull-8{right:66.66666667%}.egg-container .col-lg-pull-7{right:58.33333333%}.egg-container .col-lg-pull-6{right:50%}.egg-container .col-lg-pull-5{right:41.66666667%}.egg-container .col-lg-pull-4{right:33.33333333%}.egg-container .col-lg-pull-3{right:25%}.egg-container .col-lg-pull-2{right:16.66666667%}.egg-container .col-lg-pull-1{right:8.33333333%}.egg-container .col-lg-pull-0{right:auto}.egg-container .col-lg-push-12{left:100%}.egg-container .col-lg-push-11{left:91.66666667%}.egg-container .col-lg-push-10{left:83.33333333%}.egg-container .col-lg-push-9{left:75%}.egg-container .col-lg-push-8{left:66.66666667%}.egg-container .col-lg-push-7{left:58.33333333%}.egg-container .col-lg-push-6{left:50%}.egg-container .col-lg-push-5{left:41.66666667%}.egg-container .col-lg-push-4{left:33.33333333%}.egg-container .col-lg-push-3{left:25%}.egg-container .col-lg-push-2{left:16.66666667%}.egg-container .col-lg-push-1{left:8.33333333%}.egg-container .col-lg-push-0{left:auto}.egg-container .col-lg-offset-12{margin-left:100%}.egg-container .col-lg-offset-11{margin-left:91.66666667%}.egg-container .col-lg-offset-10{margin-left:83.33333333%}.egg-container .col-lg-offset-9{margin-left:75%}.egg-container .col-lg-offset-8{margin-left:66.66666667%}.egg-container .col-lg-offset-7{margin-left:58.33333333%}.egg-container .col-lg-offset-6{margin-left:50%}.egg-container .col-lg-offset-5{margin-left:41.66666667%}.egg-container .col-lg-offset-4{margin-left:33.33333333%}.egg-container .col-lg-offset-3{margin-left:25%}.egg-container .col-lg-offset-2{margin-left:16.66666667%}.egg-container .col-lg-offset-1{margin-left:8.33333333%}.egg-container .col-lg-offset-0{margin-left:0}}.egg-container table{background-color:transparent}.egg-container caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.egg-container th{text-align:left}.egg-container .table{width:100%;max-width:100%;margin-bottom:20px}.egg-container .table>tbody>tr>td,.egg-container .table>tbody>tr>th,.egg-container .table>tfoot>tr>td,.egg-container .table>tfoot>tr>th,.egg-container .table>thead>tr>td,.egg-container .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.egg-container .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.egg-container .table>caption+thead>tr:first-child>td,.egg-container .table>caption+thead>tr:first-child>th,.egg-container .table>colgroup+thead>tr:first-child>td,.egg-container .table>colgroup+thead>tr:first-child>th,.egg-container .table>thead:first-child>tr:first-child>td,.egg-container .table>thead:first-child>tr:first-child>th{border-top:0}.egg-container .table>tbody+tbody{border-top:2px solid #ddd}.egg-container .table .table{background-color:#fff}.egg-container .table-condensed>tbody>tr>td,.egg-container .table-condensed>tbody>tr>th,.egg-container .table-condensed>tfoot>tr>td,.egg-container .table-condensed>tfoot>tr>th,.egg-container .table-condensed>thead>tr>td,.egg-container .table-condensed>thead>tr>th{padding:5px}.egg-container .table-bordered{border:1px solid #ddd}.egg-container .table-bordered>tbody>tr>td,.egg-container .table-bordered>tbody>tr>th,.egg-container .table-bordered>tfoot>tr>td,.egg-container .table-bordered>tfoot>tr>th,.egg-container .table-bordered>thead>tr>td,.egg-container .table-bordered>thead>tr>th{border:1px solid #ddd}.egg-container .table-bordered>thead>tr>td,.egg-container .table-bordered>thead>tr>th{border-bottom-width:2px}.egg-container .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.egg-container .table-hover>tbody>tr:hover{background-color:#f5f5f5}.egg-container table col[class*=col-]{position:static;display:table-column;float:none}.egg-container table td[class*=col-],.egg-container table th[class*=col-]{position:static;display:table-cell;float:none}.egg-container .table>tbody>tr.active>td,.egg-container .table>tbody>tr.active>th,.egg-container .table>tbody>tr>td.active,.egg-container .table>tbody>tr>th.active,.egg-container .table>tfoot>tr.active>td,.egg-container .table>tfoot>tr.active>th,.egg-container .table>tfoot>tr>td.active,.egg-container .table>tfoot>tr>th.active,.egg-container .table>thead>tr.active>td,.egg-container .table>thead>tr.active>th,.egg-container .table>thead>tr>td.active,.egg-container .table>thead>tr>th.active{background-color:#f5f5f5}.egg-container .table-hover>tbody>tr.active:hover>td,.egg-container .table-hover>tbody>tr.active:hover>th,.egg-container .table-hover>tbody>tr:hover>.active,.egg-container .table-hover>tbody>tr>td.active:hover,.egg-container .table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.egg-container .table>tbody>tr.success>td,.egg-container .table>tbody>tr.success>th,.egg-container .table>tbody>tr>td.success,.egg-container .table>tbody>tr>th.success,.egg-container .table>tfoot>tr.success>td,.egg-container .table>tfoot>tr.success>th,.egg-container .table>tfoot>tr>td.success,.egg-container .table>tfoot>tr>th.success,.egg-container .table>thead>tr.success>td,.egg-container .table>thead>tr.success>th,.egg-container .table>thead>tr>td.success,.egg-container .table>thead>tr>th.success{background-color:#dff0d8}.egg-container .table-hover>tbody>tr.success:hover>td,.egg-container .table-hover>tbody>tr.success:hover>th,.egg-container .table-hover>tbody>tr:hover>.success,.egg-container .table-hover>tbody>tr>td.success:hover,.egg-container .table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.egg-container .table>tbody>tr.info>td,.egg-container .table>tbody>tr.info>th,.egg-container .table>tbody>tr>td.info,.egg-container .table>tbody>tr>th.info,.egg-container .table>tfoot>tr.info>td,.egg-container .table>tfoot>tr.info>th,.egg-container .table>tfoot>tr>td.info,.egg-container .table>tfoot>tr>th.info,.egg-container .table>thead>tr.info>td,.egg-container .table>thead>tr.info>th,.egg-container .table>thead>tr>td.info,.egg-container .table>thead>tr>th.info{background-color:#d9edf7}.egg-container .table-hover>tbody>tr.info:hover>td,.egg-container .table-hover>tbody>tr.info:hover>th,.egg-container .table-hover>tbody>tr:hover>.info,.egg-container .table-hover>tbody>tr>td.info:hover,.egg-container .table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.egg-container .table>tbody>tr.warning>td,.egg-container .table>tbody>tr.warning>th,.egg-container .table>tbody>tr>td.warning,.egg-container .table>tbody>tr>th.warning,.egg-container .table>tfoot>tr.warning>td,.egg-container .table>tfoot>tr.warning>th,.egg-container .table>tfoot>tr>td.warning,.egg-container .table>tfoot>tr>th.warning,.egg-container .table>thead>tr.warning>td,.egg-container .table>thead>tr.warning>th,.egg-container .table>thead>tr>td.warning,.egg-container .table>thead>tr>th.warning{background-color:#fcf8e3}.egg-container .table-hover>tbody>tr.warning:hover>td,.egg-container .table-hover>tbody>tr.warning:hover>th,.egg-container .table-hover>tbody>tr:hover>.warning,.egg-container .table-hover>tbody>tr>td.warning:hover,.egg-container .table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.egg-container .table>tbody>tr.danger>td,.egg-container .table>tbody>tr.danger>th,.egg-container .table>tbody>tr>td.danger,.egg-container .table>tbody>tr>th.danger,.egg-container .table>tfoot>tr.danger>td,.egg-container .table>tfoot>tr.danger>th,.egg-container .table>tfoot>tr>td.danger,.egg-container .table>tfoot>tr>th.danger,.egg-container .table>thead>tr.danger>td,.egg-container .table>thead>tr.danger>th,.egg-container .table>thead>tr>td.danger,.egg-container .table>thead>tr>th.danger{background-color:#f2dede}.egg-container .table-hover>tbody>tr.danger:hover>td,.egg-container .table-hover>tbody>tr.danger:hover>th,.egg-container .table-hover>tbody>tr:hover>.danger,.egg-container .table-hover>tbody>tr>td.danger:hover,.egg-container .table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.egg-container .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.egg-container .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.egg-container .table-responsive>.table{margin-bottom:0}.egg-container .table-responsive>.table>tbody>tr>td,.egg-container .table-responsive>.table>tbody>tr>th,.egg-container .table-responsive>.table>tfoot>tr>td,.egg-container .table-responsive>.table>tfoot>tr>th,.egg-container .table-responsive>.table>thead>tr>td,.egg-container .table-responsive>.table>thead>tr>th{white-space:nowrap}.egg-container .table-responsive>.table-bordered{border:0}.egg-container .table-responsive>.table-bordered>tbody>tr>td:first-child,.egg-container .table-responsive>.table-bordered>tbody>tr>th:first-child,.egg-container .table-responsive>.table-bordered>tfoot>tr>td:first-child,.egg-container .table-responsive>.table-bordered>tfoot>tr>th:first-child,.egg-container .table-responsive>.table-bordered>thead>tr>td:first-child,.egg-container .table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.egg-container .table-responsive>.table-bordered>tbody>tr>td:last-child,.egg-container .table-responsive>.table-bordered>tbody>tr>th:last-child,.egg-container .table-responsive>.table-bordered>tfoot>tr>td:last-child,.egg-container .table-responsive>.table-bordered>tfoot>tr>th:last-child,.egg-container .table-responsive>.table-bordered>thead>tr>td:last-child,.egg-container .table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.egg-container .table-responsive>.table-bordered>tbody>tr:last-child>td,.egg-container .table-responsive>.table-bordered>tbody>tr:last-child>th,.egg-container .table-responsive>.table-bordered>tfoot>tr:last-child>td,.egg-container .table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.egg-container fieldset{min-width:0;padding:0;margin:0;border:0}.egg-container legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.egg-container label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}.egg-container input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.egg-container input[type=checkbox],.egg-container input[type=radio]{margin:4px 0 0;line-height:normal}.egg-container input[type=file]{display:block}.egg-container input[type=range]{display:block;width:100%}.egg-container select[multiple],.egg-container select[size]{height:auto}.egg-container input[type=checkbox]:focus,.egg-container input[type=file]:focus,.egg-container input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.egg-container output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.egg-container .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.egg-container .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.egg-container .form-control::-moz-placeholder{color:#999;opacity:1}.egg-container .form-control:-ms-input-placeholder{color:#999}.egg-container .form-control::-webkit-input-placeholder{color:#999}.egg-container .form-control[disabled],.egg-container .form-control[readonly],fieldset[disabled] .egg-container .form-control{background-color:#eee;opacity:1}.egg-container .form-control[disabled],fieldset[disabled] .egg-container .form-control{cursor:not-allowed}textarea.egg-container .form-control{height:auto}.egg-container input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){.egg-container input[type=date],.egg-container input[type=datetime-local],.egg-container input[type=month],.egg-container input[type=time]{line-height:34px}.egg-container input[type=date].input-sm,.egg-container input[type=datetime-local].input-sm,.egg-container input[type=month].input-sm,.egg-container input[type=time].input-sm,.input-group-sm .egg-container input[type=date],.input-group-sm .egg-container input[type=datetime-local],.input-group-sm .egg-container input[type=month],.input-group-sm .egg-container input[type=time]{line-height:30px}.egg-container input[type=date].input-lg,.egg-container input[type=datetime-local].input-lg,.egg-container input[type=month].input-lg,.egg-container input[type=time].input-lg,.input-group-lg .egg-container input[type=date],.input-group-lg .egg-container input[type=datetime-local],.input-group-lg .egg-container input[type=month],.input-group-lg .egg-container input[type=time]{line-height:46px}}.egg-container .form-group{margin-bottom:15px}.egg-container .checkbox,.egg-container .radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.egg-container .checkbox label,.egg-container .radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.egg-container .checkbox input[type=checkbox],.egg-container .checkbox-inline input[type=checkbox],.egg-container .radio input[type=radio],.egg-container .radio-inline input[type=radio]{position:absolute;margin-left:-20px}.egg-container .checkbox+.checkbox,.egg-container .radio+.radio{margin-top:-5px}.egg-container .checkbox-inline,.egg-container .radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.egg-container .checkbox-inline+.checkbox-inline,.egg-container .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.egg-container input[type=checkbox].disabled,.egg-container input[type=checkbox][disabled],.egg-container input[type=radio].disabled,.egg-container input[type=radio][disabled],fieldset[disabled] .egg-container input[type=checkbox],fieldset[disabled] .egg-container input[type=radio]{cursor:not-allowed}.egg-container .checkbox-inline.disabled,.egg-container .radio-inline.disabled,fieldset[disabled] .egg-container .checkbox-inline,fieldset[disabled] .egg-container .radio-inline{cursor:not-allowed}.egg-container .checkbox.disabled label,.egg-container .radio.disabled label,fieldset[disabled] .egg-container .checkbox label,fieldset[disabled] .egg-container .radio label{cursor:not-allowed}.egg-container .form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.egg-container .form-control-static.input-lg,.egg-container .form-control-static.input-sm{padding-right:0;padding-left:0}.egg-container .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.egg-container .input-sm{height:30px;line-height:30px}select[multiple].egg-container .input-sm,textarea.egg-container .input-sm{height:auto}.egg-container .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.egg-container .form-group-sm .form-control{height:30px;line-height:30px}select[multiple].egg-container .form-group-sm .form-control,textarea.egg-container .form-group-sm .form-control{height:auto}.egg-container .form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.egg-container .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.egg-container .input-lg{height:46px;line-height:46px}select[multiple].egg-container .input-lg,textarea.egg-container .input-lg{height:auto}.egg-container .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.egg-container .form-group-lg .form-control{height:46px;line-height:46px}select[multiple].egg-container .form-group-lg .form-control,textarea.egg-container .form-group-lg .form-control{height:auto}.egg-container .form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.egg-container .has-feedback{position:relative}.egg-container .has-feedback .form-control{padding-right:42.5px}.egg-container .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.egg-container .input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.egg-container .input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.egg-container .has-success .checkbox,.egg-container .has-success .checkbox-inline,.egg-container .has-success .control-label,.egg-container .has-success .help-block,.egg-container .has-success .radio,.egg-container .has-success .radio-inline,.egg-container .has-success.checkbox label,.egg-container .has-success.checkbox-inline label,.egg-container .has-success.radio label,.egg-container .has-success.radio-inline label{color:#3c763d}.egg-container .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.egg-container .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.egg-container .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.egg-container .has-success .form-control-feedback{color:#3c763d}.egg-container .has-warning .checkbox,.egg-container .has-warning .checkbox-inline,.egg-container .has-warning .control-label,.egg-container .has-warning .help-block,.egg-container .has-warning .radio,.egg-container .has-warning .radio-inline,.egg-container .has-warning.checkbox label,.egg-container .has-warning.checkbox-inline label,.egg-container .has-warning.radio label,.egg-container .has-warning.radio-inline label{color:#8a6d3b}.egg-container .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.egg-container .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.egg-container .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.egg-container .has-warning .form-control-feedback{color:#8a6d3b}.egg-container .has-error .checkbox,.egg-container .has-error .checkbox-inline,.egg-container .has-error .control-label,.egg-container .has-error .help-block,.egg-container .has-error .radio,.egg-container .has-error .radio-inline,.egg-container .has-error.checkbox label,.egg-container .has-error.checkbox-inline label,.egg-container .has-error.radio label,.egg-container .has-error.radio-inline label{color:#a94442}.egg-container .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.egg-container .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.egg-container .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.egg-container .has-error .form-control-feedback{color:#a94442}.egg-container .has-feedback label~.form-control-feedback{top:25px}.egg-container .has-feedback label.sr-only~.form-control-feedback{top:0}.egg-container .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.egg-container .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.egg-container .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.egg-container .form-inline .form-control-static{display:inline-block}.egg-container .form-inline .input-group{display:inline-table;vertical-align:middle}.egg-container .form-inline .input-group .form-control,.egg-container .form-inline .input-group .input-group-addon,.egg-container .form-inline .input-group .input-group-btn{width:auto}.egg-container .form-inline .input-group>.form-control{width:100%}.egg-container .form-inline .control-label{margin-bottom:0;vertical-align:middle}.egg-container .form-inline .checkbox,.egg-container .form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.egg-container .form-inline .checkbox label,.egg-container .form-inline .radio label{padding-left:0}.egg-container .form-inline .checkbox input[type=checkbox],.egg-container .form-inline .radio input[type=radio]{position:relative;margin-left:0}.egg-container .form-inline .has-feedback .form-control-feedback{top:0}}.egg-container .form-horizontal .checkbox,.egg-container .form-horizontal .checkbox-inline,.egg-container .form-horizontal .radio,.egg-container .form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.egg-container .form-horizontal .checkbox,.egg-container .form-horizontal .radio{min-height:27px}.egg-container .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.egg-container .form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.egg-container .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.egg-container .form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width:768px){.egg-container .form-horizontal .form-group-sm .control-label{padding-top:6px}}.egg-container .btn{display:inline-block;padding:7px 14px;margin-bottom:0;font-size:14px;font-weight:700;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.egg-container .btn.active.focus,.egg-container .btn.active:focus,.egg-container .btn.focus,.egg-container .btn:active.focus,.egg-container .btn:active:focus,.egg-container .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.egg-container .btn.focus,.egg-container .btn:focus,.egg-container .btn:hover{color:#333;text-decoration:none}.egg-container .btn.active,.egg-container .btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.egg-container .btn.disabled,.egg-container .btn[disabled],fieldset[disabled] .egg-container .btn{pointer-events:none;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;opacity:.65}.egg-container .btn-default{color:#333;background-color:#fff;border-color:#ccc}.egg-container .btn-default.active,.egg-container .btn-default.focus,.egg-container .btn-default:active,.egg-container .btn-default:focus,.egg-container .btn-default:hover,.open>.dropdown-toggle.egg-container .btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.egg-container .btn-default.active,.egg-container .btn-default:active,.open>.dropdown-toggle.egg-container .btn-default{background-image:none}.egg-container .btn-default.disabled,.egg-container .btn-default.disabled.active,.egg-container .btn-default.disabled.focus,.egg-container .btn-default.disabled:active,.egg-container .btn-default.disabled:focus,.egg-container .btn-default.disabled:hover,.egg-container .btn-default[disabled],.egg-container .btn-default[disabled].active,.egg-container .btn-default[disabled].focus,.egg-container .btn-default[disabled]:active,.egg-container .btn-default[disabled]:focus,.egg-container .btn-default[disabled]:hover,fieldset[disabled] .egg-container .btn-default,fieldset[disabled] .egg-container .btn-default.active,fieldset[disabled] .egg-container .btn-default.focus,fieldset[disabled] .egg-container .btn-default:active,fieldset[disabled] .egg-container .btn-default:focus,fieldset[disabled] .egg-container .btn-default:hover{background-color:#fff;border-color:#ccc}.egg-container .btn-default .badge{color:#fff;background-color:#333}.egg-container .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.egg-container .btn-primary.active,.egg-container .btn-primary.focus,.egg-container .btn-primary:active,.egg-container .btn-primary:focus,.egg-container .btn-primary:hover,.open>.dropdown-toggle.egg-container .btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.egg-container .btn-primary.active,.egg-container .btn-primary:active,.open>.dropdown-toggle.egg-container .btn-primary{background-image:none}.egg-container .btn-primary.disabled,.egg-container .btn-primary.disabled.active,.egg-container .btn-primary.disabled.focus,.egg-container .btn-primary.disabled:active,.egg-container .btn-primary.disabled:focus,.egg-container .btn-primary.disabled:hover,.egg-container .btn-primary[disabled],.egg-container .btn-primary[disabled].active,.egg-container .btn-primary[disabled].focus,.egg-container .btn-primary[disabled]:active,.egg-container .btn-primary[disabled]:focus,.egg-container .btn-primary[disabled]:hover,fieldset[disabled] .egg-container .btn-primary,fieldset[disabled] .egg-container .btn-primary.active,fieldset[disabled] .egg-container .btn-primary.focus,fieldset[disabled] .egg-container .btn-primary:active,fieldset[disabled] .egg-container .btn-primary:focus,fieldset[disabled] .egg-container .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.egg-container .btn-primary .badge{color:#337ab7;background-color:#fff}.egg-container .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;text-decoration:none!important}.egg-container .btn-success.active,.egg-container .btn-success.focus,.egg-container .btn-success:active,.egg-container .btn-success:focus,.egg-container .btn-success:hover,.open>.dropdown-toggle.egg-container .btn-success{color:#fff;background-color:#449d44;border-color:#398439}.egg-container .btn-success.active,.egg-container .btn-success:active,.open>.dropdown-toggle.egg-container .btn-success{background-image:none}.egg-container .btn-success.disabled,.egg-container .btn-success.disabled.active,.egg-container .btn-success.disabled.focus,.egg-container .btn-success.disabled:active,.egg-container .btn-success.disabled:focus,.egg-container .btn-success.disabled:hover,.egg-container .btn-success[disabled],.egg-container .btn-success[disabled].active,.egg-container .btn-success[disabled].focus,.egg-container .btn-success[disabled]:active,.egg-container .btn-success[disabled]:focus,.egg-container .btn-success[disabled]:hover,fieldset[disabled] .egg-container .btn-success,fieldset[disabled] .egg-container .btn-success.active,fieldset[disabled] .egg-container .btn-success.focus,fieldset[disabled] .egg-container .btn-success:active,fieldset[disabled] .egg-container .btn-success:focus,fieldset[disabled] .egg-container .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.egg-container .btn-success .badge{color:#5cb85c;background-color:#fff}.egg-container .btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.egg-container .btn-info.active,.egg-container .btn-info.focus,.egg-container .btn-info:active,.egg-container .btn-info:focus,.egg-container .btn-info:hover,.open>.dropdown-toggle.egg-container .btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.egg-container .btn-info.active,.egg-container .btn-info:active,.open>.dropdown-toggle.egg-container .btn-info{background-image:none}.egg-container .btn-info.disabled,.egg-container .btn-info.disabled.active,.egg-container .btn-info.disabled.focus,.egg-container .btn-info.disabled:active,.egg-container .btn-info.disabled:focus,.egg-container .btn-info.disabled:hover,.egg-container .btn-info[disabled],.egg-container .btn-info[disabled].active,.egg-container .btn-info[disabled].focus,.egg-container .btn-info[disabled]:active,.egg-container .btn-info[disabled]:focus,.egg-container .btn-info[disabled]:hover,fieldset[disabled] .egg-container .btn-info,fieldset[disabled] .egg-container .btn-info.active,fieldset[disabled] .egg-container .btn-info.focus,fieldset[disabled] .egg-container .btn-info:active,fieldset[disabled] .egg-container .btn-info:focus,fieldset[disabled] .egg-container .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.egg-container .btn-info .badge{color:#5bc0de;background-color:#fff}.egg-container .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.egg-container .btn-warning.active,.egg-container .btn-warning.focus,.egg-container .btn-warning:active,.egg-container .btn-warning:focus,.egg-container .btn-warning:hover,.open>.dropdown-toggle.egg-container .btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.egg-container .btn-warning.active,.egg-container .btn-warning:active,.open>.dropdown-toggle.egg-container .btn-warning{background-image:none}.egg-container .btn-warning.disabled,.egg-container .btn-warning.disabled.active,.egg-container .btn-warning.disabled.focus,.egg-container .btn-warning.disabled:active,.egg-container .btn-warning.disabled:focus,.egg-container .btn-warning.disabled:hover,.egg-container .btn-warning[disabled],.egg-container .btn-warning[disabled].active,.egg-container .btn-warning[disabled].focus,.egg-container .btn-warning[disabled]:active,.egg-container .btn-warning[disabled]:focus,.egg-container .btn-warning[disabled]:hover,fieldset[disabled] .egg-container .btn-warning,fieldset[disabled] .egg-container .btn-warning.active,fieldset[disabled] .egg-container .btn-warning.focus,fieldset[disabled] .egg-container .btn-warning:active,fieldset[disabled] .egg-container .btn-warning:focus,fieldset[disabled] .egg-container .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.egg-container .btn-warning .badge{color:#f0ad4e;background-color:#fff}.egg-container .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.egg-container .btn-danger.active,.egg-container .btn-danger.focus,.egg-container .btn-danger:active,.egg-container .btn-danger:focus,.egg-container .btn-danger:hover,.open>.dropdown-toggle.egg-container .btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.egg-container .btn-danger.active,.egg-container .btn-danger:active,.open>.dropdown-toggle.egg-container .btn-danger{background-image:none}.egg-container .btn-danger.disabled,.egg-container .btn-danger.disabled.active,.egg-container .btn-danger.disabled.focus,.egg-container .btn-danger.disabled:active,.egg-container .btn-danger.disabled:focus,.egg-container .btn-danger.disabled:hover,.egg-container .btn-danger[disabled],.egg-container .btn-danger[disabled].active,.egg-container .btn-danger[disabled].focus,.egg-container .btn-danger[disabled]:active,.egg-container .btn-danger[disabled]:focus,.egg-container .btn-danger[disabled]:hover,fieldset[disabled] .egg-container .btn-danger,fieldset[disabled] .egg-container .btn-danger.active,fieldset[disabled] .egg-container .btn-danger.focus,fieldset[disabled] .egg-container .btn-danger:active,fieldset[disabled] .egg-container .btn-danger:focus,fieldset[disabled] .egg-container .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.egg-container .btn-danger .badge{color:#d9534f;background-color:#fff}.egg-container .btn-link{font-weight:400;color:#337ab7;border-radius:0}.egg-container .btn-link,.egg-container .btn-link.active,.egg-container .btn-link:active,.egg-container .btn-link[disabled],fieldset[disabled] .egg-container .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.egg-container .btn-link,.egg-container .btn-link:active,.egg-container .btn-link:focus,.egg-container .btn-link:hover{border-color:transparent}.egg-container .btn-link:focus,.egg-container .btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.egg-container .btn-link[disabled]:focus,.egg-container .btn-link[disabled]:hover,fieldset[disabled] .egg-container .btn-link:focus,fieldset[disabled] .egg-container .btn-link:hover{color:#777;text-decoration:none}.egg-container .btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.egg-container .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.egg-container .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.egg-container .btn-block{display:block;width:100%}.egg-container .btn-block+.btn-block{margin-top:5px}.egg-container input[type=button].btn-block,.egg-container input[type=reset].btn-block,.egg-container input[type=submit].btn-block{width:100%}.egg-container .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.egg-container .fade.in{opacity:1}.egg-container .collapse{display:none}.egg-container .collapse.in{display:block}tr.egg-container .collapse.in{display:table-row}tbody.egg-container .collapse.in{display:table-row-group}.egg-container .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.egg-container .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.egg-container .dropdown,.egg-container .dropup{position:relative}.egg-container .dropdown-toggle:focus{outline:0}.egg-container .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.egg-container .dropdown-menu.pull-right{right:0;left:auto}.egg-container .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.egg-container .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.egg-container .dropdown-menu>li>a:focus,.egg-container .dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.egg-container .dropdown-menu>.active>a,.egg-container .dropdown-menu>.active>a:focus,.egg-container .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.egg-container .dropdown-menu>.disabled>a,.egg-container .dropdown-menu>.disabled>a:focus,.egg-container .dropdown-menu>.disabled>a:hover{color:#777}.egg-container .dropdown-menu>.disabled>a:focus,.egg-container .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}.egg-container .open>.dropdown-menu{display:block}.egg-container .open>a{outline:0}.egg-container .dropdown-menu-right{right:0;left:auto}.egg-container .dropdown-menu-left{right:auto;left:0}.egg-container .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.egg-container .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.egg-container .pull-right>.dropdown-menu{right:0;left:auto}.egg-container .dropup .caret,.egg-container .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.egg-container .dropup .dropdown-menu,.egg-container .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.egg-container .navbar-right .dropdown-menu{right:0;left:auto}.egg-container .navbar-right .dropdown-menu-left{right:auto;left:0}}.egg-container .btn-group,.egg-container .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.egg-container .btn-group-vertical>.btn,.egg-container .btn-group>.btn{position:relative;float:left}.egg-container .btn-group-vertical>.btn.active,.egg-container .btn-group-vertical>.btn:active,.egg-container .btn-group-vertical>.btn:focus,.egg-container .btn-group-vertical>.btn:hover,.egg-container .btn-group>.btn.active,.egg-container .btn-group>.btn:active,.egg-container .btn-group>.btn:focus,.egg-container .btn-group>.btn:hover{z-index:2}.egg-container .btn-group .btn+.btn,.egg-container .btn-group .btn+.btn-group,.egg-container .btn-group .btn-group+.btn,.egg-container .btn-group .btn-group+.btn-group{margin-left:-1px}.egg-container .btn-toolbar{margin-left:-5px}.egg-container .btn-toolbar .btn-group,.egg-container .btn-toolbar .input-group{float:left}.egg-container .btn-toolbar>.btn,.egg-container .btn-toolbar>.btn-group,.egg-container .btn-toolbar>.input-group{margin-left:5px}.egg-container .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.egg-container .btn-group>.btn:first-child{margin-left:0}.egg-container .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.egg-container .btn-group>.btn:last-child:not(:first-child),.egg-container .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.egg-container .btn-group>.btn-group{float:left}.egg-container .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.egg-container .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.egg-container .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.egg-container .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.egg-container .btn-group .dropdown-toggle:active,.egg-container .btn-group.open .dropdown-toggle{outline:0}.egg-container .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.egg-container .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.egg-container .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.egg-container .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.egg-container .btn .caret{margin-left:0}.egg-container .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.egg-container .dropup .btn-lg .caret{border-width:0 5px 5px}.egg-container .btn-group-vertical>.btn,.egg-container .btn-group-vertical>.btn-group,.egg-container .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.egg-container .btn-group-vertical>.btn-group>.btn{float:none}.egg-container .btn-group-vertical>.btn+.btn,.egg-container .btn-group-vertical>.btn+.btn-group,.egg-container .btn-group-vertical>.btn-group+.btn,.egg-container .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.egg-container .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.egg-container .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.egg-container .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.egg-container .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.egg-container .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.egg-container .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.egg-container .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.egg-container .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.egg-container .btn-group-justified>.btn,.egg-container .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.egg-container .btn-group-justified>.btn-group .btn{width:100%}.egg-container .btn-group-justified>.btn-group .dropdown-menu{left:auto}.egg-container [data-toggle=buttons]>.btn input[type=checkbox],.egg-container [data-toggle=buttons]>.btn input[type=radio],.egg-container [data-toggle=buttons]>.btn-group>.btn input[type=checkbox],.egg-container [data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.egg-container .input-group{position:relative;display:table;border-collapse:separate}.egg-container .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.egg-container .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.egg-container .input-group-lg>.form-control,.egg-container .input-group-lg>.input-group-addon,.egg-container .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.egg-container .input-group-lg>.form-control,select.egg-container .input-group-lg>.input-group-addon,select.egg-container .input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].egg-container .input-group-lg>.form-control,select[multiple].egg-container .input-group-lg>.input-group-addon,select[multiple].egg-container .input-group-lg>.input-group-btn>.btn,textarea.egg-container .input-group-lg>.form-control,textarea.egg-container .input-group-lg>.input-group-addon,textarea.egg-container .input-group-lg>.input-group-btn>.btn{height:auto}.egg-container .input-group-sm>.form-control,.egg-container .input-group-sm>.input-group-addon,.egg-container .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.egg-container .input-group-sm>.form-control,select.egg-container .input-group-sm>.input-group-addon,select.egg-container .input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].egg-container .input-group-sm>.form-control,select[multiple].egg-container .input-group-sm>.input-group-addon,select[multiple].egg-container .input-group-sm>.input-group-btn>.btn,textarea.egg-container .input-group-sm>.form-control,textarea.egg-container .input-group-sm>.input-group-addon,textarea.egg-container .input-group-sm>.input-group-btn>.btn{height:auto}.egg-container .input-group .form-control,.egg-container .input-group-addon,.egg-container .input-group-btn{display:table-cell}.egg-container .input-group .form-control:not(:first-child):not(:last-child),.egg-container .input-group-addon:not(:first-child):not(:last-child),.egg-container .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.egg-container .input-group-addon,.egg-container .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.egg-container .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.egg-container .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.egg-container .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.egg-container .input-group-addon input[type=checkbox],.egg-container .input-group-addon input[type=radio]{margin-top:0}.egg-container .input-group .form-control:first-child,.egg-container .input-group-addon:first-child,.egg-container .input-group-btn:first-child>.btn,.egg-container .input-group-btn:first-child>.btn-group>.btn,.egg-container .input-group-btn:first-child>.dropdown-toggle,.egg-container .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.egg-container .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.egg-container .input-group-addon:first-child{border-right:0}.egg-container .input-group .form-control:last-child,.egg-container .input-group-addon:last-child,.egg-container .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.egg-container .input-group-btn:first-child>.btn:not(:first-child),.egg-container .input-group-btn:last-child>.btn,.egg-container .input-group-btn:last-child>.btn-group>.btn,.egg-container .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.egg-container .input-group-addon:last-child{border-left:0}.egg-container .input-group-btn{position:relative;font-size:0;white-space:nowrap}.egg-container .input-group-btn>.btn{position:relative}.egg-container .input-group-btn>.btn+.btn{margin-left:-1px}.egg-container .input-group-btn>.btn:active,.egg-container .input-group-btn>.btn:focus,.egg-container .input-group-btn>.btn:hover{z-index:2}.egg-container .input-group-btn:first-child>.btn,.egg-container .input-group-btn:first-child>.btn-group{margin-right:-1px}.egg-container .input-group-btn:last-child>.btn,.egg-container .input-group-btn:last-child>.btn-group{margin-left:-1px}.egg-container .nav{padding-left:0;margin-bottom:0;list-style:none}.egg-container .nav>li{position:relative;display:block}.egg-container .nav>li>a{position:relative;display:block;padding:10px 15px}.egg-container .nav>li>a:focus,.egg-container .nav>li>a:hover{text-decoration:none;background-color:#eee}.egg-container .nav>li.disabled>a{color:#777}.egg-container .nav>li.disabled>a:focus,.egg-container .nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.egg-container .nav .open>a,.egg-container .nav .open>a:focus,.egg-container .nav .open>a:hover{background-color:#eee;border-color:#337ab7}.egg-container .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.egg-container .nav>li>a>img{max-width:none}.egg-container .nav-tabs{border-bottom:1px solid #ddd}.egg-container .nav-tabs>li{float:left;margin-bottom:-1px}.egg-container .nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.egg-container .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.egg-container .nav-tabs>li.active>a,.egg-container .nav-tabs>li.active>a:focus,.egg-container .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.egg-container .nav-tabs.nav-justified{width:100%;border-bottom:0}.egg-container .nav-tabs.nav-justified>li{float:none}.egg-container .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.egg-container .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.egg-container .nav-tabs.nav-justified>li{display:table-cell;width:1%}.egg-container .nav-tabs.nav-justified>li>a{margin-bottom:0}}.egg-container .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.egg-container .nav-tabs.nav-justified>.active>a,.egg-container .nav-tabs.nav-justified>.active>a:focus,.egg-container .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.egg-container .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.egg-container .nav-tabs.nav-justified>.active>a,.egg-container .nav-tabs.nav-justified>.active>a:focus,.egg-container .nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.egg-container .nav-pills>li{float:left}.egg-container .nav-pills>li>a{border-radius:4px}.egg-container .nav-pills>li+li{margin-left:2px}.egg-container .nav-pills>li.active>a,.egg-container .nav-pills>li.active>a:focus,.egg-container .nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.egg-container .nav-stacked>li{float:none}.egg-container .nav-stacked>li+li{margin-top:2px;margin-left:0}.egg-container .nav-justified{width:100%}.egg-container .nav-justified>li{float:none}.egg-container .nav-justified>li>a{margin-bottom:5px;text-align:center}.egg-container .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.egg-container .nav-justified>li{display:table-cell;width:1%}.egg-container .nav-justified>li>a{margin-bottom:0}}.egg-container .nav-tabs-justified{border-bottom:0}.egg-container .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.egg-container .nav-tabs-justified>.active>a,.egg-container .nav-tabs-justified>.active>a:focus,.egg-container .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.egg-container .nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.egg-container .nav-tabs-justified>.active>a,.egg-container .nav-tabs-justified>.active>a:focus,.egg-container .nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.egg-container .tab-content>.tab-pane{display:none}.egg-container .tab-content>.active{display:block}.egg-container .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.egg-container .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.egg-container .breadcrumb>li{display:inline-block}.egg-container .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.egg-container .breadcrumb>.active{color:#777}.egg-container .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.egg-container .label:focus,a.egg-container .label:hover{color:#fff;text-decoration:none;cursor:pointer}.egg-container .label:empty{display:none}.btn .egg-container .label{position:relative;top:-1px}.egg-container .label-default{background-color:#777}.egg-container .label-default[href]:focus,.egg-container .label-default[href]:hover{background-color:#5e5e5e}.egg-container .label-primary{background-color:#337ab7}.egg-container .label-primary[href]:focus,.egg-container .label-primary[href]:hover{background-color:#286090}.egg-container .label-success{background-color:#5cb85c}.egg-container .label-success[href]:focus,.egg-container .label-success[href]:hover{background-color:#449d44}.egg-container .label-info{background-color:#5bc0de}.egg-container .label-info[href]:focus,.egg-container .label-info[href]:hover{background-color:#31b0d5}.egg-container .label-warning{background-color:#f0ad4e}.egg-container .label-warning[href]:focus,.egg-container .label-warning[href]:hover{background-color:#ec971f}.egg-container .label-danger{background-color:#d9534f}.egg-container .label-danger[href]:focus,.egg-container .label-danger[href]:hover{background-color:#c9302c}.egg-container .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.egg-container .badge:empty{display:none}.btn .egg-container .badge{position:relative;top:-1px}.btn-group-xs>.btn .egg-container .badge,.btn-xs .egg-container .badge{top:0;padding:1px 5px}a.egg-container .badge:focus,a.egg-container .badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.egg-container .badge,.nav-pills>.active>a>.egg-container .badge{color:#337ab7;background-color:#fff}.list-group-item>.egg-container .badge{float:right}.list-group-item>.egg-container .badge+.egg-container .badge{margin-right:5px}.nav-pills>li>a>.egg-container .badge{margin-left:3px}.egg-container .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.egg-container .thumbnail a>img,.egg-container .thumbnail>img{margin-right:auto;margin-left:auto}.egg-container a.thumbnail.active,.egg-container a.thumbnail:focus,.egg-container a.thumbnail:hover{border-color:#337ab7}.egg-container .thumbnail .caption{padding:9px;color:#333}.egg-container .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.egg-container .alert h4{margin-top:0;color:inherit}.egg-container .alert .alert-link{font-weight:700}.egg-container .alert>p,.egg-container .alert>ul{margin-bottom:0}.egg-container .alert>p+p{margin-top:5px}.egg-container .alert-dismissable,.egg-container .alert-dismissible{padding-right:35px}.egg-container .alert-dismissable .close,.egg-container .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.egg-container .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.egg-container .alert-success hr{border-top-color:#c9e2b3}.egg-container .alert-success .alert-link{color:#2b542c}.egg-container .alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.egg-container .alert-info hr{border-top-color:#a6e1ec}.egg-container .alert-info .alert-link{color:#245269}.egg-container .alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.egg-container .alert-warning hr{border-top-color:#f7e1b5}.egg-container .alert-warning .alert-link{color:#66512c}.egg-container .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.egg-container .alert-danger hr{border-top-color:#e4b9c0}.egg-container .alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.egg-container .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.egg-container .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.egg-container .progress-bar-striped,.egg-container .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.egg-container .progress-bar.active,.egg-container .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.egg-container .progress-bar-success{background-color:#5cb85c}.progress-striped .egg-container .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .progress-bar-info{background-color:#5bc0de}.progress-striped .egg-container .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .progress-bar-warning{background-color:#f0ad4e}.progress-striped .egg-container .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .progress-bar-danger{background-color:#d9534f}.progress-striped .egg-container .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.egg-container .media{margin-top:15px}.egg-container .media:first-child{margin-top:0}.egg-container .media,.egg-container .media-body{overflow:hidden;zoom:1}.egg-container .media-body{width:10000px}.egg-container .media-object{display:block}.egg-container .media-right,.egg-container .media>.pull-right{padding-left:10px}.egg-container .media-left,.egg-container .media>.pull-left{padding-right:20px}.egg-container .media-body,.egg-container .media-left,.egg-container .media-right{display:table-cell;vertical-align:top}.egg-container .media-middle{vertical-align:middle}.egg-container .media-bottom{vertical-align:bottom}.egg-container .media-heading{margin-top:0;margin-bottom:18px}.egg-container .media-list{padding-left:0;list-style:none}.egg-container .list-group{padding-left:0;margin-bottom:20px}.egg-container .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.egg-container .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.egg-container .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.egg-container a.list-group-item{color:#555}.egg-container a.list-group-item .list-group-item-heading{color:#333}.egg-container a.list-group-item:focus,.egg-container a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.egg-container .list-group-item.disabled,.egg-container .list-group-item.disabled:focus,.egg-container .list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.egg-container .list-group-item.disabled .list-group-item-heading,.egg-container .list-group-item.disabled:focus .list-group-item-heading,.egg-container .list-group-item.disabled:hover .list-group-item-heading{color:inherit}.egg-container .list-group-item.disabled .list-group-item-text,.egg-container .list-group-item.disabled:focus .list-group-item-text,.egg-container .list-group-item.disabled:hover .list-group-item-text{color:#777}.egg-container .list-group-item.active,.egg-container .list-group-item.active:focus,.egg-container .list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.egg-container .list-group-item.active .list-group-item-heading,.egg-container .list-group-item.active .list-group-item-heading>.small,.egg-container .list-group-item.active .list-group-item-heading>small,.egg-container .list-group-item.active:focus .list-group-item-heading,.egg-container .list-group-item.active:focus .list-group-item-heading>.small,.egg-container .list-group-item.active:focus .list-group-item-heading>small,.egg-container .list-group-item.active:hover .list-group-item-heading,.egg-container .list-group-item.active:hover .list-group-item-heading>.small,.egg-container .list-group-item.active:hover .list-group-item-heading>small{color:inherit}.egg-container .list-group-item.active .list-group-item-text,.egg-container .list-group-item.active:focus .list-group-item-text,.egg-container .list-group-item.active:hover .list-group-item-text{color:#c7ddef}.egg-container .list-group-item-success{color:#3c763d;background-color:#dff0d8}a.egg-container .list-group-item-success{color:#3c763d}a.egg-container .list-group-item-success .list-group-item-heading{color:inherit}a.egg-container .list-group-item-success:focus,a.egg-container .list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.egg-container .list-group-item-success.active,a.egg-container .list-group-item-success.active:focus,a.egg-container .list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.egg-container .list-group-item-info{color:#31708f;background-color:#d9edf7}a.egg-container .list-group-item-info{color:#31708f}a.egg-container .list-group-item-info .list-group-item-heading{color:inherit}a.egg-container .list-group-item-info:focus,a.egg-container .list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.egg-container .list-group-item-info.active,a.egg-container .list-group-item-info.active:focus,a.egg-container .list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.egg-container .list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.egg-container .list-group-item-warning{color:#8a6d3b}a.egg-container .list-group-item-warning .list-group-item-heading{color:inherit}a.egg-container .list-group-item-warning:focus,a.egg-container .list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.egg-container .list-group-item-warning.active,a.egg-container .list-group-item-warning.active:focus,a.egg-container .list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.egg-container .list-group-item-danger{color:#a94442;background-color:#f2dede}a.egg-container .list-group-item-danger{color:#a94442}a.egg-container .list-group-item-danger .list-group-item-heading{color:inherit}a.egg-container .list-group-item-danger:focus,a.egg-container .list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.egg-container .list-group-item-danger.active,a.egg-container .list-group-item-danger.active:focus,a.egg-container .list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.egg-container .list-group-item-heading{margin-top:0;margin-bottom:5px}.egg-container .list-group-item-text{margin-bottom:0;line-height:1.3}.egg-container .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.egg-container .panel-body{padding:20px}.egg-container .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel-heading>.dropdown .dropdown-toggle{color:inherit}.egg-container .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.egg-container .panel-title>.small,.egg-container .panel-title>.small>a,.egg-container .panel-title>a,.egg-container .panel-title>small,.egg-container .panel-title>small>a{color:inherit}.egg-container .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel>.list-group,.egg-container .panel>.panel-collapse>.list-group{margin-bottom:0}.egg-container .panel>.list-group .list-group-item,.egg-container .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.egg-container .panel>.list-group:first-child .list-group-item:first-child,.egg-container .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel>.list-group:last-child .list-group-item:last-child,.egg-container .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.egg-container .list-group+.panel-footer{border-top-width:0}.egg-container .panel>.panel-collapse>.table,.egg-container .panel>.table,.egg-container .panel>.table-responsive>.table{margin-bottom:0}.egg-container .panel>.panel-collapse>.table caption,.egg-container .panel>.table caption,.egg-container .panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.egg-container .panel>.table-responsive:first-child>.table:first-child,.egg-container .panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.egg-container .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.egg-container .panel>.table:first-child>tbody:first-child>tr:first-child,.egg-container .panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.egg-container .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.egg-container .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.egg-container .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.egg-container .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.egg-container .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.egg-container .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.egg-container .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.egg-container .panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.egg-container .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.egg-container .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.egg-container .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.egg-container .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.egg-container .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.egg-container .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.egg-container .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.egg-container .panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.egg-container .panel>.table-responsive:last-child>.table:last-child,.egg-container .panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.egg-container .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.egg-container .panel>.table:last-child>tbody:last-child>tr:last-child,.egg-container .panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.egg-container .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.egg-container .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.egg-container .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.egg-container .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.egg-container .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.egg-container .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.egg-container .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.egg-container .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.egg-container .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.egg-container .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.egg-container .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.egg-container .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.egg-container .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.egg-container .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.egg-container .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.egg-container .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.egg-container .panel>.panel-body+.table,.egg-container .panel>.panel-body+.table-responsive,.egg-container .panel>.table+.panel-body,.egg-container .panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.egg-container .panel>.table>tbody:first-child>tr:first-child td,.egg-container .panel>.table>tbody:first-child>tr:first-child th{border-top:0}.egg-container .panel>.table-bordered,.egg-container .panel>.table-responsive>.table-bordered{border:0}.egg-container .panel>.table-bordered>tbody>tr>td:first-child,.egg-container .panel>.table-bordered>tbody>tr>th:first-child,.egg-container .panel>.table-bordered>tfoot>tr>td:first-child,.egg-container .panel>.table-bordered>tfoot>tr>th:first-child,.egg-container .panel>.table-bordered>thead>tr>td:first-child,.egg-container .panel>.table-bordered>thead>tr>th:first-child,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.egg-container .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.egg-container .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.egg-container .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.egg-container .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.egg-container .panel>.table-bordered>tbody>tr>td:last-child,.egg-container .panel>.table-bordered>tbody>tr>th:last-child,.egg-container .panel>.table-bordered>tfoot>tr>td:last-child,.egg-container .panel>.table-bordered>tfoot>tr>th:last-child,.egg-container .panel>.table-bordered>thead>tr>td:last-child,.egg-container .panel>.table-bordered>thead>tr>th:last-child,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.egg-container .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.egg-container .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.egg-container .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.egg-container .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.egg-container .panel>.table-bordered>tbody>tr:first-child>td,.egg-container .panel>.table-bordered>tbody>tr:first-child>th,.egg-container .panel>.table-bordered>thead>tr:first-child>td,.egg-container .panel>.table-bordered>thead>tr:first-child>th,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.egg-container .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.egg-container .panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.egg-container .panel>.table-bordered>tbody>tr:last-child>td,.egg-container .panel>.table-bordered>tbody>tr:last-child>th,.egg-container .panel>.table-bordered>tfoot>tr:last-child>td,.egg-container .panel>.table-bordered>tfoot>tr:last-child>th,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.egg-container .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.egg-container .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.egg-container .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.egg-container .panel>.table-responsive{margin-bottom:0;border:0}.egg-container .panel-group{margin-bottom:20px}.egg-container .panel-group .panel{margin-bottom:0;border-radius:4px}.egg-container .panel-group .panel+.panel{margin-top:5px}.egg-container .panel-group .panel-heading{border-bottom:0}.egg-container .panel-group .panel-heading+.panel-collapse>.list-group,.egg-container .panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.egg-container .panel-group .panel-footer{border-top:0}.egg-container .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.egg-container .panel-default{border-color:#ddd}.egg-container .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.egg-container .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.egg-container .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.egg-container .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.egg-container .panel-primary{border-color:#337ab7}.egg-container .panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.egg-container .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.egg-container .panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.egg-container .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.egg-container .panel-success{border-color:#d6e9c6}.egg-container .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.egg-container .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.egg-container .panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.egg-container .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.egg-container .panel-info{border-color:#bce8f1}.egg-container .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.egg-container .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.egg-container .panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.egg-container .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.egg-container .panel-warning{border-color:#faebcc}.egg-container .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.egg-container .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.egg-container .panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.egg-container .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.egg-container .panel-danger{border-color:#ebccd1}.egg-container .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.egg-container .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.egg-container .panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.egg-container .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.egg-container .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.egg-container .embed-responsive .embed-responsive-item,.egg-container .embed-responsive embed,.egg-container .embed-responsive iframe,.egg-container .embed-responsive object,.egg-container .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.egg-container .embed-responsive-16by9{padding-bottom:56.25%}.egg-container .embed-responsive-4by3{padding-bottom:75%}.egg-container .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.egg-container .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.egg-container .well-lg{padding:24px;border-radius:6px}.egg-container .well-sm{padding:9px;border-radius:3px}.egg-container .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.egg-container .close:focus,.egg-container .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.egg-container .close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.egg-container .cegg-bi{display:inline-block;vertical-align:-.125em}.egg-container .cegg-bi{width:1em;height:1em}.egg-container .popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.egg-container .popover.top{margin-top:-10px}.egg-container .popover.right{margin-left:10px}.egg-container .popover.bottom{margin-top:10px}.egg-container .popover.left{margin-left:-10px}.egg-container .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.egg-container .popover-title:empty{display:none}.egg-container .popover-content{padding:9px 14px}.egg-container .popover .arrow,.egg-container .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.egg-container .popover .arrow{border-width:11px}.egg-container .popover .arrow:after{border-width:10px;content:""}.egg-container .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.egg-container .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.egg-container .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.egg-container .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.egg-container .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.egg-container .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.egg-container .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.egg-container .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.egg-container .btn-group-vertical>.btn-group:after,.egg-container .btn-group-vertical>.btn-group:before,.egg-container .btn-toolbar:after,.egg-container .btn-toolbar:before,.egg-container .clearfix:after,.egg-container .clearfix:before,.egg-container .container-fluid:after,.egg-container .container-fluid:before,.egg-container .container:after,.egg-container .container:before,.egg-container .dl-horizontal dd:after,.egg-container .dl-horizontal dd:before,.egg-container .form-horizontal .form-group:after,.egg-container .form-horizontal .form-group:before,.egg-container .nav:after,.egg-container .nav:before,.egg-container .panel-body:after,.egg-container .panel-body:before,.egg-container .row:after,.egg-container .row:before{display:table;content:" "}.egg-container .btn-group-vertical>.btn-group:after,.egg-container .btn-toolbar:after,.egg-container .clearfix:after,.egg-container .container-fluid:after,.egg-container .container:after,.egg-container .dl-horizontal dd:after,.egg-container .form-horizontal .form-group:after,.egg-container .nav:after,.egg-container .panel-body:after,.egg-container .row:after{clear:both}.egg-container .center-block{display:block;margin-right:auto;margin-left:auto}.egg-container .pull-right{float:right!important}.egg-container .pull-left{float:left!important}.egg-container .hide{display:none!important}.egg-container .show{display:block!important}.egg-container .invisible{visibility:hidden}.egg-container .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.egg-container .hidden{display:none!important}.egg-container .affix{position:fixed}@-ms-viewport{width:device-width}.egg-container .visible-lg,.egg-container .visible-md,.egg-container .visible-sm,.egg-container .visible-xs{display:none!important}.egg-container .visible-lg-block,.egg-container .visible-lg-inline,.egg-container .visible-lg-inline-block,.egg-container .visible-md-block,.egg-container .visible-md-inline,.egg-container .visible-md-inline-block,.egg-container .visible-sm-block,.egg-container .visible-sm-inline,.egg-container .visible-sm-inline-block,.egg-container .visible-xs-block,.egg-container .visible-xs-inline,.egg-container .visible-xs-inline-block{display:none!important}@media (max-width:767px){.egg-container .visible-xs{display:block!important}table.egg-container .visible-xs{display:table}tr.egg-container .visible-xs{display:table-row!important}td.egg-container .visible-xs,th.egg-container .visible-xs{display:table-cell!important}}@media (max-width:767px){.egg-container .visible-xs-block{display:block!important}}@media (max-width:767px){.egg-container .visible-xs-inline{display:inline!important}}@media (max-width:767px){.egg-container .visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.egg-container .visible-sm{display:block!important}table.egg-container .visible-sm{display:table}tr.egg-container .visible-sm{display:table-row!important}td.egg-container .visible-sm,th.egg-container .visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.egg-container .visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.egg-container .visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.egg-container .visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.egg-container .visible-md{display:block!important}table.egg-container .visible-md{display:table}tr.egg-container .visible-md{display:table-row!important}td.egg-container .visible-md,th.egg-container .visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.egg-container .visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.egg-container .visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.egg-container .visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.egg-container .visible-lg{display:block!important}table.egg-container .visible-lg{display:table}tr.egg-container .visible-lg{display:table-row!important}td.egg-container .visible-lg,th.egg-container .visible-lg{display:table-cell!important}}@media (min-width:1200px){.egg-container .visible-lg-block{display:block!important}}@media (min-width:1200px){.egg-container .visible-lg-inline{display:inline!important}}@media (min-width:1200px){.egg-container .visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.egg-container .hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.egg-container .hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.egg-container .hidden-md{display:none!important}}@media (min-width:1200px){.egg-container .hidden-lg{display:none!important}}.egg-container .visible-print{display:none!important}@media print{.egg-container .visible-print{display:block!important}table.egg-container .visible-print{display:table}tr.egg-container .visible-print{display:table-row!important}td.egg-container .visible-print,th.egg-container .visible-print{display:table-cell!important}}.egg-container .visible-print-block{display:none!important}@media print{.egg-container .visible-print-block{display:block!important}}.egg-container .visible-print-inline{display:none!important}@media print{.egg-container .visible-print-inline{display:inline!important}}.egg-container .visible-print-inline-block{display:none!important}@media print{.egg-container .visible-print-inline-block{display:inline-block!important}}@media print{.egg-container .hidden-print{display:none!important}}
 
 
res/bootstrap/css/glyphicons.css ADDED
@@ -0,0 +1,805 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: 'Glyphicons Halflings';
3
+ src: url('../fonts/glyphicons-halflings-regular.eot');
4
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
5
+ }
6
+ .glyphicon {
7
+ position: relative;
8
+ top: 1px;
9
+ display: inline-block;
10
+ font-family: 'Glyphicons Halflings';
11
+ font-style: normal;
12
+ font-weight: normal;
13
+ line-height: 1;
14
+
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ }
18
+ .glyphicon-asterisk:before {
19
+ content: "\002a";
20
+ }
21
+ .glyphicon-plus:before {
22
+ content: "\002b";
23
+ }
24
+ .glyphicon-euro:before,
25
+ .glyphicon-eur:before {
26
+ content: "\20ac";
27
+ }
28
+ .glyphicon-minus:before {
29
+ content: "\2212";
30
+ }
31
+ .glyphicon-cloud:before {
32
+ content: "\2601";
33
+ }
34
+ .glyphicon-envelope:before {
35
+ content: "\2709";
36
+ }
37
+ .glyphicon-pencil:before {
38
+ content: "\270f";
39
+ }
40
+ .glyphicon-glass:before {
41
+ content: "\e001";
42
+ }
43
+ .glyphicon-music:before {
44
+ content: "\e002";
45
+ }
46
+ .glyphicon-search:before {
47
+ content: "\e003";
48
+ }
49
+ .glyphicon-heart:before {
50
+ content: "\e005";
51
+ }
52
+ .glyphicon-star:before {
53
+ content: "\e006";
54
+ }
55
+ .glyphicon-star-empty:before {
56
+ content: "\e007";
57
+ }
58
+ .glyphicon-user:before {
59
+ content: "\e008";
60
+ }
61
+ .glyphicon-film:before {
62
+ content: "\e009";
63
+ }
64
+ .glyphicon-th-large:before {
65
+ content: "\e010";
66
+ }
67
+ .glyphicon-th:before {
68
+ content: "\e011";
69
+ }
70
+ .glyphicon-th-list:before {
71
+ content: "\e012";
72
+ }
73
+ .glyphicon-ok:before {
74
+ content: "\e013";
75
+ }
76
+ .glyphicon-remove:before {
77
+ content: "\e014";
78
+ }
79
+ .glyphicon-zoom-in:before {
80
+ content: "\e015";
81
+ }
82
+ .glyphicon-zoom-out:before {
83
+ content: "\e016";
84
+ }
85
+ .glyphicon-off:before {
86
+ content: "\e017";
87
+ }
88
+ .glyphicon-signal:before {
89
+ content: "\e018";
90
+ }
91
+ .glyphicon-cog:before {
92
+ content: "\e019";
93
+ }
94
+ .glyphicon-trash:before {
95
+ content: "\e020";
96
+ }
97
+ .glyphicon-home:before {
98
+ content: "\e021";
99
+ }
100
+ .glyphicon-file:before {
101
+ content: "\e022";
102
+ }
103
+ .glyphicon-time:before {
104
+ content: "\e023";
105
+ }
106
+ .glyphicon-road:before {
107
+ content: "\e024";
108
+ }
109
+ .glyphicon-download-alt:before {
110
+ content: "\e025";
111
+ }
112
+ .glyphicon-download:before {
113
+ content: "\e026";
114
+ }
115
+ .glyphicon-upload:before {
116
+ content: "\e027";
117
+ }
118
+ .glyphicon-inbox:before {
119
+ content: "\e028";
120
+ }
121
+ .glyphicon-play-circle:before {
122
+ content: "\e029";
123
+ }
124
+ .glyphicon-repeat:before {
125
+ content: "\e030";
126
+ }
127
+ .glyphicon-refresh:before {
128
+ content: "\e031";
129
+ }
130
+ .glyphicon-list-alt:before {
131
+ content: "\e032";
132
+ }
133
+ .glyphicon-lock:before {
134
+ content: "\e033";
135
+ }
136
+ .glyphicon-flag:before {
137
+ content: "\e034";
138
+ }
139
+ .glyphicon-headphones:before {
140
+ content: "\e035";
141
+ }
142
+ .glyphicon-volume-off:before {
143
+ content: "\e036";
144
+ }
145
+ .glyphicon-volume-down:before {
146
+ content: "\e037";
147
+ }
148
+ .glyphicon-volume-up:before {
149
+ content: "\e038";
150
+ }
151
+ .glyphicon-qrcode:before {
152
+ content: "\e039";
153
+ }
154
+ .glyphicon-barcode:before {
155
+ content: "\e040";
156
+ }
157
+ .glyphicon-tag:before {
158
+ content: "\e041";
159
+ }
160
+ .glyphicon-tags:before {
161
+ content: "\e042";
162
+ }
163
+ .glyphicon-book:before {
164
+ content: "\e043";
165
+ }
166
+ .glyphicon-bookmark:before {
167
+ content: "\e044";
168
+ }
169
+ .glyphicon-print:before {
170
+ content: "\e045";
171
+ }
172
+ .glyphicon-camera:before {
173
+ content: "\e046";
174
+ }
175
+ .glyphicon-font:before {
176
+ content: "\e047";
177
+ }
178
+ .glyphicon-bold:before {
179
+ content: "\e048";
180
+ }
181
+ .glyphicon-italic:before {
182
+ content: "\e049";
183
+ }
184
+ .glyphicon-text-height:before {
185
+ content: "\e050";
186
+ }
187
+ .glyphicon-text-width:before {
188
+ content: "\e051";
189
+ }
190
+ .glyphicon-align-left:before {
191
+ content: "\e052";
192
+ }
193
+ .glyphicon-align-center:before {
194
+ content: "\e053";
195
+ }
196
+ .glyphicon-align-right:before {
197
+ content: "\e054";
198
+ }
199
+ .glyphicon-align-justify:before {
200
+ content: "\e055";
201
+ }
202
+ .glyphicon-list:before {
203
+ content: "\e056";
204
+ }
205
+ .glyphicon-indent-left:before {
206
+ content: "\e057";
207
+ }
208
+ .glyphicon-indent-right:before {
209
+ content: "\e058";
210
+ }
211
+ .glyphicon-facetime-video:before {
212
+ content: "\e059";
213
+ }
214
+ .glyphicon-picture:before {
215
+ content: "\e060";
216
+ }
217
+ .glyphicon-map-marker:before {
218
+ content: "\e062";
219
+ }
220
+ .glyphicon-adjust:before {
221
+ content: "\e063";
222
+ }
223
+ .glyphicon-tint:before {
224
+ content: "\e064";
225
+ }
226
+ .glyphicon-edit:before {
227
+ content: "\e065";
228
+ }
229
+ .glyphicon-share:before {
230
+ content: "\e066";
231
+ }
232
+ .glyphicon-check:before {
233
+ content: "\e067";
234
+ }
235
+ .glyphicon-move:before {
236
+ content: "\e068";
237
+ }
238
+ .glyphicon-step-backward:before {
239
+ content: "\e069";
240
+ }
241
+ .glyphicon-fast-backward:before {
242
+ content: "\e070";
243
+ }
244
+ .glyphicon-backward:before {
245
+ content: "\e071";
246
+ }
247
+ .glyphicon-play:before {
248
+ content: "\e072";
249
+ }
250
+ .glyphicon-pause:before {
251
+ content: "\e073";
252
+ }
253
+ .glyphicon-stop:before {
254
+ content: "\e074";
255
+ }
256
+ .glyphicon-forward:before {
257
+ content: "\e075";
258
+ }
259
+ .glyphicon-fast-forward:before {
260
+ content: "\e076";
261
+ }
262
+ .glyphicon-step-forward:before {
263
+ content: "\e077";
264
+ }
265
+ .glyphicon-eject:before {
266
+ content: "\e078";
267
+ }
268
+ .glyphicon-chevron-left:before {
269
+ content: "\e079";
270
+ }
271
+ .glyphicon-chevron-right:before {
272
+ content: "\e080";
273
+ }
274
+ .glyphicon-plus-sign:before {
275
+ content: "\e081";
276
+ }
277
+ .glyphicon-minus-sign:before {
278
+ content: "\e082";
279
+ }
280
+ .glyphicon-remove-sign:before {
281
+ content: "\e083";
282
+ }
283
+ .glyphicon-ok-sign:before {
284
+ content: "\e084";
285
+ }
286
+ .glyphicon-question-sign:before {
287
+ content: "\e085";
288
+ }
289
+ .glyphicon-info-sign:before {
290
+ content: "\e086";
291
+ }
292
+ .glyphicon-screenshot:before {
293
+ content: "\e087";
294
+ }
295
+ .glyphicon-remove-circle:before {
296
+ content: "\e088";
297
+ }
298
+ .glyphicon-ok-circle:before {
299
+ content: "\e089";
300
+ }
301
+ .glyphicon-ban-circle:before {
302
+ content: "\e090";
303
+ }
304
+ .glyphicon-arrow-left:before {
305
+ content: "\e091";
306
+ }
307
+ .glyphicon-arrow-right:before {
308
+ content: "\e092";
309
+ }
310
+ .glyphicon-arrow-up:before {
311
+ content: "\e093";
312
+ }
313
+ .glyphicon-arrow-down:before {
314
+ content: "\e094";
315
+ }
316
+ .glyphicon-share-alt:before {
317
+ content: "\e095";
318
+ }
319
+ .glyphicon-resize-full:before {
320
+ content: "\e096";
321
+ }
322
+ .glyphicon-resize-small:before {
323
+ content: "\e097";
324
+ }
325
+ .glyphicon-exclamation-sign:before {
326
+ content: "\e101";
327
+ }
328
+ .glyphicon-gift:before {
329
+ content: "\e102";
330
+ }
331
+ .glyphicon-leaf:before {
332
+ content: "\e103";
333
+ }
334
+ .glyphicon-fire:before {
335
+ content: "\e104";
336
+ }
337
+ .glyphicon-eye-open:before {
338
+ content: "\e105";
339
+ }
340
+ .glyphicon-eye-close:before {
341
+ content: "\e106";
342
+ }
343
+ .glyphicon-warning-sign:before {
344
+ content: "\e107";
345
+ }
346
+ .glyphicon-plane:before {
347
+ content: "\e108";
348
+ }
349
+ .glyphicon-calendar:before {
350
+ content: "\e109";
351
+ }
352
+ .glyphicon-random:before {
353
+ content: "\e110";
354
+ }
355
+ .glyphicon-comment:before {
356
+ content: "\e111";
357
+ }
358
+ .glyphicon-magnet:before {
359
+ content: "\e112";
360
+ }
361
+ .glyphicon-chevron-up:before {
362
+ content: "\e113";
363
+ }
364
+ .glyphicon-chevron-down:before {
365
+ content: "\e114";
366
+ }
367
+ .glyphicon-retweet:before {
368
+ content: "\e115";
369
+ }
370
+ .glyphicon-shopping-cart:before {
371
+ content: "\e116";
372
+ }
373
+ .glyphicon-folder-close:before {
374
+ content: "\e117";
375
+ }
376
+ .glyphicon-folder-open:before {
377
+ content: "\e118";
378
+ }
379
+ .glyphicon-resize-vertical:before {
380
+ content: "\e119";
381
+ }
382
+ .glyphicon-resize-horizontal:before {
383
+ content: "\e120";
384
+ }
385
+ .glyphicon-hdd:before {
386
+ content: "\e121";
387
+ }
388
+ .glyphicon-bullhorn:before {
389
+ content: "\e122";
390
+ }
391
+ .glyphicon-bell:before {
392
+ content: "\e123";
393
+ }
394
+ .glyphicon-certificate:before {
395
+ content: "\e124";
396
+ }
397
+ .glyphicon-thumbs-up:before {
398
+ content: "\e125";
399
+ }
400
+ .glyphicon-thumbs-down:before {
401
+ content: "\e126";
402
+ }
403
+ .glyphicon-hand-right:before {
404
+ content: "\e127";
405
+ }
406
+ .glyphicon-hand-left:before {
407
+ content: "\e128";
408
+ }
409
+ .glyphicon-hand-up:before {
410
+ content: "\e129";
411
+ }
412
+ .glyphicon-hand-down:before {
413
+ content: "\e130";
414
+ }
415
+ .glyphicon-circle-arrow-right:before {
416
+ content: "\e131";
417
+ }
418
+ .glyphicon-circle-arrow-left:before {
419
+ content: "\e132";
420
+ }
421
+ .glyphicon-circle-arrow-up:before {
422
+ content: "\e133";
423
+ }
424
+ .glyphicon-circle-arrow-down:before {
425
+ content: "\e134";
426
+ }
427
+ .glyphicon-globe:before {
428
+ content: "\e135";
429
+ }
430
+ .glyphicon-wrench:before {
431
+ content: "\e136";
432
+ }
433
+ .glyphicon-tasks:before {
434
+ content: "\e137";
435
+ }
436
+ .glyphicon-filter:before {
437
+ content: "\e138";
438
+ }
439
+ .glyphicon-briefcase:before {
440
+ content: "\e139";
441
+ }
442
+ .glyphicon-fullscreen:before {
443
+ content: "\e140";
444
+ }
445
+ .glyphicon-dashboard:before {
446
+ content: "\e141";
447
+ }
448
+ .glyphicon-paperclip:before {
449
+ content: "\e142";
450
+ }
451
+ .glyphicon-heart-empty:before {
452
+ content: "\e143";
453
+ }
454
+ .glyphicon-link:before {
455
+ content: "\e144";
456
+ }
457
+ .glyphicon-phone:before {
458
+ content: "\e145";
459
+ }
460
+ .glyphicon-pushpin:before {
461
+ content: "\e146";
462
+ }
463
+ .glyphicon-usd:before {
464
+ content: "\e148";
465
+ }
466
+ .glyphicon-gbp:before {
467
+ content: "\e149";
468
+ }
469
+ .glyphicon-sort:before {
470
+ content: "\e150";
471
+ }
472
+ .glyphicon-sort-by-alphabet:before {
473
+ content: "\e151";
474
+ }
475
+ .glyphicon-sort-by-alphabet-alt:before {
476
+ content: "\e152";
477
+ }
478
+ .glyphicon-sort-by-order:before {
479
+ content: "\e153";
480
+ }
481
+ .glyphicon-sort-by-order-alt:before {
482
+ content: "\e154";
483
+ }
484
+ .glyphicon-sort-by-attributes:before {
485
+ content: "\e155";
486
+ }
487
+ .glyphicon-sort-by-attributes-alt:before {
488
+ content: "\e156";
489
+ }
490
+ .glyphicon-unchecked:before {
491
+ content: "\e157";
492
+ }
493
+ .glyphicon-expand:before {
494
+ content: "\e158";
495
+ }
496
+ .glyphicon-collapse-down:before {
497
+ content: "\e159";
498
+ }
499
+ .glyphicon-collapse-up:before {
500
+ content: "\e160";
501
+ }
502
+ .glyphicon-log-in:before {
503
+ content: "\e161";
504
+ }
505
+ .glyphicon-flash:before {
506
+ content: "\e162";
507
+ }
508
+ .glyphicon-log-out:before {
509
+ content: "\e163";
510
+ }
511
+ .glyphicon-new-window:before {
512
+ content: "\e164";
513
+ }
514
+ .glyphicon-record:before {
515
+ content: "\e165";
516
+ }
517
+ .glyphicon-save:before {
518
+ content: "\e166";
519
+ }
520
+ .glyphicon-open:before {
521
+ content: "\e167";
522
+ }
523
+ .glyphicon-saved:before {
524
+ content: "\e168";
525
+ }
526
+ .glyphicon-import:before {
527
+ content: "\e169";
528
+ }
529
+ .glyphicon-export:before {
530
+ content: "\e170";
531
+ }
532
+ .glyphicon-send:before {
533
+ content: "\e171";
534
+ }
535
+ .glyphicon-floppy-disk:before {
536
+ content: "\e172";
537
+ }
538
+ .glyphicon-floppy-saved:before {
539
+ content: "\e173";
540
+ }
541
+ .glyphicon-floppy-remove:before {
542
+ content: "\e174";
543
+ }
544
+ .glyphicon-floppy-save:before {
545
+ content: "\e175";
546
+ }
547
+ .glyphicon-floppy-open:before {
548
+ content: "\e176";
549
+ }
550
+ .glyphicon-credit-card:before {
551
+ content: "\e177";
552
+ }
553
+ .glyphicon-transfer:before {
554
+ content: "\e178";
555
+ }
556
+ .glyphicon-cutlery:before {
557
+ content: "\e179";
558
+ }
559
+ .glyphicon-header:before {
560
+ content: "\e180";
561
+ }
562
+ .glyphicon-compressed:before {
563
+ content: "\e181";
564
+ }
565
+ .glyphicon-earphone:before {
566
+ content: "\e182";
567
+ }
568
+ .glyphicon-phone-alt:before {
569
+ content: "\e183";
570
+ }
571
+ .glyphicon-tower:before {
572
+ content: "\e184";
573
+ }
574
+ .glyphicon-stats:before {
575
+ content: "\e185";
576
+ }
577
+ .glyphicon-sd-video:before {
578
+ content: "\e186";
579
+ }
580
+ .glyphicon-hd-video:before {
581
+ content: "\e187";
582
+ }
583
+ .glyphicon-subtitles:before {
584
+ content: "\e188";
585
+ }
586
+ .glyphicon-sound-stereo:before {
587
+ content: "\e189";
588
+ }
589
+ .glyphicon-sound-dolby:before {
590
+ content: "\e190";
591
+ }
592
+ .glyphicon-sound-5-1:before {
593
+ content: "\e191";
594
+ }
595
+ .glyphicon-sound-6-1:before {
596
+ content: "\e192";
597
+ }
598
+ .glyphicon-sound-7-1:before {
599
+ content: "\e193";
600
+ }
601
+ .glyphicon-copyright-mark:before {
602
+ content: "\e194";
603
+ }
604
+ .glyphicon-registration-mark:before {
605
+ content: "\e195";
606
+ }
607
+ .glyphicon-cloud-download:before {
608
+ content: "\e197";
609
+ }
610
+ .glyphicon-cloud-upload:before {
611
+ content: "\e198";
612
+ }
613
+ .glyphicon-tree-conifer:before {
614
+ content: "\e199";
615
+ }
616
+ .glyphicon-tree-deciduous:before {
617
+ content: "\e200";
618
+ }
619
+ .glyphicon-cd:before {
620
+ content: "\e201";
621
+ }
622
+ .glyphicon-save-file:before {
623
+ content: "\e202";
624
+ }
625
+ .glyphicon-open-file:before {
626
+ content: "\e203";
627
+ }
628
+ .glyphicon-level-up:before {
629
+ content: "\e204";
630
+ }
631
+ .glyphicon-copy:before {
632
+ content: "\e205";
633
+ }
634
+ .glyphicon-paste:before {
635
+ content: "\e206";
636
+ }
637
+ .glyphicon-alert:before {
638
+ content: "\e209";
639
+ }
640
+ .glyphicon-equalizer:before {
641
+ content: "\e210";
642
+ }
643
+ .glyphicon-king:before {
644
+ content: "\e211";
645
+ }
646
+ .glyphicon-queen:before {
647
+ content: "\e212";
648
+ }
649
+ .glyphicon-pawn:before {
650
+ content: "\e213";
651
+ }
652
+ .glyphicon-bishop:before {
653
+ content: "\e214";
654
+ }
655
+ .glyphicon-knight:before {
656
+ content: "\e215";
657
+ }
658
+ .glyphicon-baby-formula:before {
659
+ content: "\e216";
660
+ }
661
+ .glyphicon-tent:before {
662
+ content: "\26fa";
663
+ }
664
+ .glyphicon-blackboard:before {
665
+ content: "\e218";
666
+ }
667
+ .glyphicon-bed:before {
668
+ content: "\e219";
669
+ }
670
+ .glyphicon-apple:before {
671
+ content: "\f8ff";
672
+ }
673
+ .glyphicon-erase:before {
674
+ content: "\e221";
675
+ }
676
+ .glyphicon-hourglass:before {
677
+ content: "\231b";
678
+ }
679
+ .glyphicon-lamp:before {
680
+ content: "\e223";
681
+ }
682
+ .glyphicon-duplicate:before {
683
+ content: "\e224";
684
+ }
685
+ .glyphicon-piggy-bank:before {
686
+ content: "\e225";
687
+ }
688
+ .glyphicon-scissors:before {
689
+ content: "\e226";
690
+ }
691
+ .glyphicon-bitcoin:before {
692
+ content: "\e227";
693
+ }
694
+ .glyphicon-btc:before {
695
+ content: "\e227";
696
+ }
697
+ .glyphicon-xbt:before {
698
+ content: "\e227";
699
+ }
700
+ .glyphicon-yen:before {
701
+ content: "\00a5";
702
+ }
703
+ .glyphicon-jpy:before {
704
+ content: "\00a5";
705
+ }
706
+ .glyphicon-ruble:before {
707
+ content: "\20bd";
708
+ }
709
+ .glyphicon-rub:before {
710
+ content: "\20bd";
711
+ }
712
+ .glyphicon-scale:before {
713
+ content: "\e230";
714
+ }
715
+ .glyphicon-ice-lolly:before {
716
+ content: "\e231";
717
+ }
718
+ .glyphicon-ice-lolly-tasted:before {
719
+ content: "\e232";
720
+ }
721
+ .glyphicon-education:before {
722
+ content: "\e233";
723
+ }
724
+ .glyphicon-option-horizontal:before {
725
+ content: "\e234";
726
+ }
727
+ .glyphicon-option-vertical:before {
728
+ content: "\e235";
729
+ }
730
+ .glyphicon-menu-hamburger:before {
731
+ content: "\e236";
732
+ }
733
+ .glyphicon-modal-window:before {
734
+ content: "\e237";
735
+ }
736
+ .glyphicon-oil:before {
737
+ content: "\e238";
738
+ }
739
+ .glyphicon-grain:before {
740
+ content: "\e239";
741
+ }
742
+ .glyphicon-sunglasses:before {
743
+ content: "\e240";
744
+ }
745
+ .glyphicon-text-size:before {
746
+ content: "\e241";
747
+ }
748
+ .glyphicon-text-color:before {
749
+ content: "\e242";
750
+ }
751
+ .glyphicon-text-background:before {
752
+ content: "\e243";
753
+ }
754
+ .glyphicon-object-align-top:before {
755
+ content: "\e244";
756
+ }
757
+ .glyphicon-object-align-bottom:before {
758
+ content: "\e245";
759
+ }
760
+ .glyphicon-object-align-horizontal:before {
761
+ content: "\e246";
762
+ }
763
+ .glyphicon-object-align-left:before {
764
+ content: "\e247";
765
+ }
766
+ .glyphicon-object-align-vertical:before {
767
+ content: "\e248";
768
+ }
769
+ .glyphicon-object-align-right:before {
770
+ content: "\e249";
771
+ }
772
+ .glyphicon-triangle-right:before {
773
+ content: "\e250";
774
+ }
775
+ .glyphicon-triangle-left:before {
776
+ content: "\e251";
777
+ }
778
+ .glyphicon-triangle-bottom:before {
779
+ content: "\e252";
780
+ }
781
+ .glyphicon-triangle-top:before {
782
+ content: "\e253";
783
+ }
784
+ .glyphicon-console:before {
785
+ content: "\e254";
786
+ }
787
+ .glyphicon-superscript:before {
788
+ content: "\e255";
789
+ }
790
+ .glyphicon-subscript:before {
791
+ content: "\e256";
792
+ }
793
+ .glyphicon-menu-left:before {
794
+ content: "\e257";
795
+ }
796
+ .glyphicon-menu-right:before {
797
+ content: "\e258";
798
+ }
799
+ .glyphicon-menu-down:before {
800
+ content: "\e259";
801
+ }
802
+ .glyphicon-menu-up:before {
803
+ content: "\e260";
804
+ }
805
+
res/bootstrap/js/popover.js ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ===========================================================
2
+ * bootstrap-popover.js v2.3.2
3
+ * http://getbootstrap.com/2.3.2/javascript.html#popovers
4
+ * ===========================================================
5
+ * Copyright 2013 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * =========================================================== */
19
+
20
+
21
+ !function ($) {
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* POPOVER PUBLIC CLASS DEFINITION
27
+ * =============================== */
28
+
29
+ var Popover = function (element, options) {
30
+ this.init('popover', element, options)
31
+ }
32
+
33
+
34
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
35
+ ========================================== */
36
+
37
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
38
+
39
+ constructor: Popover
40
+
41
+ , setContent: function () {
42
+ var $tip = this.tip()
43
+ , title = this.getTitle()
44
+ , content = this.getContent()
45
+
46
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
47
+ $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
48
+
49
+ $tip.removeClass('fade top bottom left right in')
50
+ }
51
+
52
+ , hasContent: function () {
53
+ return this.getTitle() || this.getContent()
54
+ }
55
+
56
+ , getContent: function () {
57
+ var content
58
+ , $e = this.$element
59
+ , o = this.options
60
+
61
+ content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
62
+ || $e.attr('data-content')
63
+
64
+ return content
65
+ }
66
+
67
+ , tip: function () {
68
+ if (!this.$tip) {
69
+ this.$tip = $(this.options.template)
70
+ }
71
+ return this.$tip
72
+ }
73
+
74
+ , destroy: function () {
75
+ this.hide().$element.off('.' + this.type).removeData(this.type)
76
+ }
77
+
78
+ })
79
+
80
+
81
+ /* POPOVER PLUGIN DEFINITION
82
+ * ======================= */
83
+
84
+ var old = $.fn.popover
85
+
86
+ $.fn.popover = function (option) {
87
+ return this.each(function () {
88
+ var $this = $(this)
89
+ , data = $this.data('popover')
90
+ , options = typeof option == 'object' && option
91
+ if (!data)
92
+ $this.data('popover', (data = new Popover(this, options)))
93
+ if (typeof option == 'string')
94
+ data[option]()
95
+ })
96
+ }
97
+
98
+ $.fn.popover.Constructor = Popover
99
+
100
+ $.fn.popover.defaults = $.extend({}, $.fn.tooltip.defaults, {
101
+ placement: 'right'
102
+ , trigger: 'click'
103
+ , content: ''
104
+ , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
105
+ })
106
+
107
+
108
+ /* POPOVER NO CONFLICT
109
+ * =================== */
110
+
111
+ $.fn.popover.noConflict = function () {
112
+ $.fn.popover = old
113
+ return this
114
+ }
115
+
116
+ $(document).ready(function () {
117
+ $('[data-toggle="cegg-popover"]').popover();
118
+ });
119
+
120
+ }(window.jQuery);
121
+
res/bootstrap/js/tooltip.js ADDED
@@ -0,0 +1,361 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ===========================================================
2
+ * bootstrap-tooltip.js v2.3.2
3
+ * http://getbootstrap.com/2.3.2/javascript.html#tooltips
4
+ * Inspired by the original jQuery.tipsy by Jason Frame
5
+ * ===========================================================
6
+ * Copyright 2013 Twitter, Inc.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================== */
20
+
21
+
22
+ !function ($) {
23
+
24
+ "use strict"; // jshint ;_;
25
+
26
+
27
+ /* TOOLTIP PUBLIC CLASS DEFINITION
28
+ * =============================== */
29
+
30
+ var Tooltip = function (element, options) {
31
+ this.init('tooltip', element, options)
32
+ }
33
+
34
+ Tooltip.prototype = {
35
+
36
+ constructor: Tooltip
37
+
38
+ , init: function (type, element, options) {
39
+ var eventIn
40
+ , eventOut
41
+ , triggers
42
+ , trigger
43
+ , i
44
+
45
+ this.type = type
46
+ this.$element = $(element)
47
+ this.options = this.getOptions(options)
48
+ this.enabled = true
49
+
50
+ triggers = this.options.trigger.split(' ')
51
+
52
+ for (i = triggers.length; i--;) {
53
+ trigger = triggers[i]
54
+ if (trigger == 'click') {
55
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
56
+ } else if (trigger != 'manual') {
57
+ eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
58
+ eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
59
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
60
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
61
+ }
62
+ }
63
+
64
+ this.options.selector ?
65
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
66
+ this.fixTitle()
67
+ }
68
+
69
+ , getOptions: function (options) {
70
+ options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
71
+
72
+ if (options.delay && typeof options.delay == 'number') {
73
+ options.delay = {
74
+ show: options.delay
75
+ , hide: options.delay
76
+ }
77
+ }
78
+
79
+ return options
80
+ }
81
+
82
+ , enter: function (e) {
83
+ var defaults = $.fn[this.type].defaults
84
+ , options = {}
85
+ , self
86
+
87
+ this._options && $.each(this._options, function (key, value) {
88
+ if (defaults[key] != value) options[key] = value
89
+ }, this)
90
+
91
+ self = $(e.currentTarget)[this.type](options).data(this.type)
92
+
93
+ if (!self.options.delay || !self.options.delay.show) return self.show()
94
+
95
+ clearTimeout(this.timeout)
96
+ self.hoverState = 'in'
97
+ this.timeout = setTimeout(function() {
98
+ if (self.hoverState == 'in') self.show()
99
+ }, self.options.delay.show)
100
+ }
101
+
102
+ , leave: function (e) {
103
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
104
+
105
+ if (this.timeout) clearTimeout(this.timeout)
106
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
107
+
108
+ self.hoverState = 'out'
109
+ this.timeout = setTimeout(function() {
110
+ if (self.hoverState == 'out') self.hide()
111
+ }, self.options.delay.hide)
112
+ }
113
+
114
+ , show: function () {
115
+ var $tip
116
+ , pos
117
+ , actualWidth
118
+ , actualHeight
119
+ , placement
120
+ , tp
121
+ , e = $.Event('show')
122
+
123
+ if (this.hasContent() && this.enabled) {
124
+ this.$element.trigger(e)
125
+ if (e.isDefaultPrevented()) return
126
+ $tip = this.tip()
127
+ this.setContent()
128
+
129
+ if (this.options.animation) {
130
+ $tip.addClass('fade')
131
+ }
132
+
133
+ placement = typeof this.options.placement == 'function' ?
134
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
135
+ this.options.placement
136
+
137
+ $tip
138
+ .detach()
139
+ .css({ top: 0, left: 0, display: 'block' })
140
+
141
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
142
+
143
+ pos = this.getPosition()
144
+
145
+ actualWidth = $tip[0].offsetWidth
146
+ actualHeight = $tip[0].offsetHeight
147
+
148
+ switch (placement) {
149
+ case 'bottom':
150
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
151
+ break
152
+ case 'top':
153
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
154
+ break
155
+ case 'left':
156
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
157
+ break
158
+ case 'right':
159
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
160
+ break
161
+ }
162
+
163
+ this.applyPlacement(tp, placement)
164
+ this.$element.trigger('shown')
165
+ }
166
+ }
167
+
168
+ , applyPlacement: function(offset, placement){
169
+ var $tip = this.tip()
170
+ , width = $tip[0].offsetWidth
171
+ , height = $tip[0].offsetHeight
172
+ , actualWidth
173
+ , actualHeight
174
+ , delta
175
+ , replace
176
+
177
+ $tip
178
+ .offset(offset)
179
+ .addClass(placement)
180
+ .addClass('in')
181
+
182
+ actualWidth = $tip[0].offsetWidth
183
+ actualHeight = $tip[0].offsetHeight
184
+
185
+ if (placement == 'top' && actualHeight != height) {
186
+ offset.top = offset.top + height - actualHeight
187
+ replace = true
188
+ }
189
+
190
+ if (placement == 'bottom' || placement == 'top') {
191
+ delta = 0
192
+
193
+ if (offset.left < 0){
194
+ delta = offset.left * -2
195
+ offset.left = 0
196
+ $tip.offset(offset)
197
+ actualWidth = $tip[0].offsetWidth
198
+ actualHeight = $tip[0].offsetHeight
199
+ }
200
+
201
+ this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
202
+ } else {
203
+ this.replaceArrow(actualHeight - height, actualHeight, 'top')
204
+ }
205
+
206
+ if (replace) $tip.offset(offset)
207
+ }
208
+
209
+ , replaceArrow: function(delta, dimension, position){
210
+ this
211
+ .arrow()
212
+ .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
213
+ }
214
+
215
+ , setContent: function () {
216
+ var $tip = this.tip()
217
+ , title = this.getTitle()
218
+
219
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
220
+ $tip.removeClass('fade in top bottom left right')
221
+ }
222
+
223
+ , hide: function () {
224
+ var that = this
225
+ , $tip = this.tip()
226
+ , e = $.Event('hide')
227
+
228
+ this.$element.trigger(e)
229
+ if (e.isDefaultPrevented()) return
230
+
231
+ $tip.removeClass('in')
232
+
233
+ function removeWithAnimation() {
234
+ var timeout = setTimeout(function () {
235
+ $tip.off($.support.transition.end).detach()
236
+ }, 500)
237
+
238
+ $tip.one($.support.transition.end, function () {
239
+ clearTimeout(timeout)
240
+ $tip.detach()
241
+ })
242
+ }
243
+
244
+ $.support.transition && this.$tip.hasClass('fade') ?
245
+ removeWithAnimation() :
246
+ $tip.detach()
247
+
248
+ this.$element.trigger('hidden')
249
+
250
+ return this
251
+ }
252
+
253
+ , fixTitle: function () {
254
+ var $e = this.$element
255
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
256
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
257
+ }
258
+ }
259
+
260
+ , hasContent: function () {
261
+ return this.getTitle()
262
+ }
263
+
264
+ , getPosition: function () {
265
+ var el = this.$element[0]
266
+ return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
267
+ width: el.offsetWidth
268
+ , height: el.offsetHeight
269
+ }, this.$element.offset())
270
+ }
271
+
272
+ , getTitle: function () {
273
+ var title
274
+ , $e = this.$element
275
+ , o = this.options
276
+
277
+ title = $e.attr('data-original-title')
278
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
279
+
280
+ return title
281
+ }
282
+
283
+ , tip: function () {
284
+ return this.$tip = this.$tip || $(this.options.template)
285
+ }
286
+
287
+ , arrow: function(){
288
+ return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
289
+ }
290
+
291
+ , validate: function () {
292
+ if (!this.$element[0].parentNode) {
293
+ this.hide()
294
+ this.$element = null
295
+ this.options = null
296
+ }
297
+ }
298
+
299
+ , enable: function () {
300
+ this.enabled = true
301
+ }
302
+
303
+ , disable: function () {
304
+ this.enabled = false
305
+ }
306
+
307
+ , toggleEnabled: function () {
308
+ this.enabled = !this.enabled
309
+ }
310
+
311
+ , toggle: function (e) {
312
+ var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
313
+ self.tip().hasClass('in') ? self.hide() : self.show()
314
+ }
315
+
316
+ , destroy: function () {
317
+ this.hide().$element.off('.' + this.type).removeData(this.type)
318
+ }
319
+
320
+ }
321
+
322
+
323
+ /* TOOLTIP PLUGIN DEFINITION
324
+ * ========================= */
325
+
326
+ var old = $.fn.tooltip
327
+
328
+ $.fn.tooltip = function ( option ) {
329
+ return this.each(function () {
330
+ var $this = $(this)
331
+ , data = $this.data('tooltip')
332
+ , options = typeof option == 'object' && option
333
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
334
+ if (typeof option == 'string') data[option]()
335
+ })
336
+ }
337
+
338
+ $.fn.tooltip.Constructor = Tooltip
339
+
340
+ $.fn.tooltip.defaults = {
341
+ animation: true
342
+ , placement: 'top'
343
+ , selector: false
344
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
345
+ , trigger: 'hover focus'
346
+ , title: ''
347
+ , delay: 0
348
+ , html: false
349
+ , container: false
350
+ }
351
+
352
+
353
+ /* TOOLTIP NO CONFLICT
354
+ * =================== */
355
+
356
+ $.fn.tooltip.noConflict = function () {
357
+ $.fn.tooltip = old
358
+ return this
359
+ }
360
+
361
+ }(window.jQuery);
res/css/admin.css CHANGED
@@ -157,22 +157,6 @@
157
  color: #e32;
158
  }
159
 
160
- .cegg-pro-label
161
- {
162
- display: inline;
163
- padding: .2em .6em .3em;
164
- font-size: 45%;
165
- font-weight: bold;
166
- color: #fff;
167
- text-align: center;
168
- white-space: nowrap;
169
- vertical-align: baseline;
170
- border-radius: .25em;
171
- background-color: #337ab7;
172
- position: relative;
173
- top: -15px;
174
- }
175
-
176
  @media (max-width: 768px) {
177
  .cegg-maincol{ margin: 0}
178
  .cegg-rightcol{ position: static; width: auto;}
@@ -324,3 +308,29 @@ table.wp-list-table mark.inactive{
324
  border-top: 0px;
325
  }
326
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  color: #e32;
158
  }
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  @media (max-width: 768px) {
161
  .cegg-maincol{ margin: 0}
162
  .cegg-rightcol{ position: static; width: auto;}
308
  border-top: 0px;
309
  }
310
 
311
+ .egg-label {
312
+ display: inline;
313
+ padding: .3em .6em .3em;
314
+ line-height: 1;
315
+ color: #fff;
316
+ text-align: center;
317
+ vertical-align: baseline;
318
+ border-radius: .25em;
319
+ font-size: 85%;
320
+ }
321
+
322
+ .egg-label-success, .egg-label-active {
323
+ background-color: #00ba37;
324
+ }
325
+
326
+ .egg-label-error, .egg-label-inactive {
327
+ background-color: #d63638;
328
+ }
329
+
330
+ .egg-label-pro
331
+ {
332
+ font-size: 55%;
333
+ background-color: #337ab7;
334
+ position: relative;
335
+ top: -15px;
336
+ }
res/css/products.css CHANGED
@@ -3,7 +3,7 @@
3
  .egg-container .rating_small > span {display: inline-block;position: relative;font-size: 16px;color: #4285F4;}
4
  .egg-container .rating_default > span {display: inline-block;position: relative;font-size: 22px;color: #4285F4;}
5
  span.rating_small{white-space:nowrap}
6
- .egg-container .egg-stars-container {position: relative; display: inline-block; color: transparent; font-size: 20px; word-wrap: normal !important;}
7
  .egg-container .egg-stars-container:before {position: absolute;top: 0;left: 0;content: '★★★★★';color: lightgray;}
8
  .egg-container .egg-stars-container:after {position: absolute;top: 0;left: 0;content: '★★★★★';color: #fcc10a;overflow: hidden;}
9
  .egg-stars-0:after { width: 0%; } .egg-stars-10:after { width: 10%; } .egg-stars-20:after { width: 20%; } .egg-stars-30:after { width: 30%; } .egg-stars-40:after { width: 40%; } .egg-stars-50:after { width: 50%; } .egg-stars-60:after { width: 60%; } .egg-stars-70:after { width: 70%; } .egg-stars-80:after { width: 80%; } .egg-stars-90:after { width: 90%; } .egg-stars-100:after { width: 100%; }
@@ -54,9 +54,10 @@ span.rating_small{white-space:nowrap}
54
  .egg-container .row-products:hover {background-color: #f9f9f9;}
55
  .egg-container .row-products span.no-bold {font-size: 14px;font-weight: normal;}
56
  .cegg-list-no-prices .cegg-desc-cell {vertical-align: top !important;}
57
- .egg-container, .egg-list .row-products {clear: both; overflow: hidden;}
 
58
  .egg-list .row-products{margin-bottom:15px;margin-top:0}
59
- .egg-container .cegg-image-cell img{max-height: 100px; max-width: 130px}
60
  .egg-container .cegg-image-cell{text-align:center}
61
  .cegg-image-container img{ vertical-align: top; max-width: 100%; height: auto; display: inline-block; max-height: 350px; }
62
  .egg-container .cegg-no-top-margin{margin-top:0 }
@@ -134,24 +135,39 @@ span.rating_small{white-space:nowrap}
134
  .egg-container .status-instock{color: #7ad03a;}
135
  .egg-container .status-outofstock{color: #777;}
136
  .egg-container .cegg-disclaimer .cegg-disclaimer-title {padding: 5px;cursor: default; }
137
- .egg-container .cegg-disclaimer {cursor: help;}
138
  .egg-container .cegg-cashback {color: #199402;}
139
  .cegg-features-table {word-wrap: break-word;}
140
  .cegg-btn-row {padding-right: 10px;}
141
  .cegg-price-outofstock {color: #777 !important;}
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  @media (max-width: 768px) {
144
  .cegg-list-withlogos .cegg-btn-cell{text-align: center;}
145
  .cegg-price-tracker-panel .col-md-5{text-align: left;}
146
- .egg-container .cegg-image-cell img{max-height: 80px; max-width: 80px;}
147
- .egg-container .cegg-list-withlogos .cegg-image-cell img{max-height: 60px; max-width: 60px;}
148
  .egg-container .egg-listcontainer .row-products{display:flex;}
149
  .cegg-list-no-prices .row-products{display: table-row !important;}
150
  .egg-container .egg-listcontainer .row-products > div{padding:5px 0 10px 0;}
151
  .egg-listcontainer .cegg-price, .cegg-list-withlogos .cegg-price{font-size:18px;line-height:1;}
152
  .cegg-price-row strike{font-size: 15px;}
153
  .egg-container .row-products .btn {padding: 5px 2px; font-size: 12px; line-height: 1.3; border-radius: 3;}
154
- .cegg-gridbox .cegg-thumb img {max-height: 150px; }
155
  .cegg-gridbox .producttitle, .cegg-gridbox .producttitle a {font-size: 14px;}
156
  .cegg-gridbox .cegg-price, .cegg-gridbox .cegg-price strike {font-size: 16px;}
157
  .cegg-gridbox .producttitle, .cegg-gridbox .producttitle .cegg-mb10 {margin-bottom: 5px;}
3
  .egg-container .rating_small > span {display: inline-block;position: relative;font-size: 16px;color: #4285F4;}
4
  .egg-container .rating_default > span {display: inline-block;position: relative;font-size: 22px;color: #4285F4;}
5
  span.rating_small{white-space:nowrap}
6
+ .egg-container .egg-stars-container {position: relative; display: inline-block; color: transparent; font-size: 20px; word-wrap: normal !important;overflow: hidden;}
7
  .egg-container .egg-stars-container:before {position: absolute;top: 0;left: 0;content: '★★★★★';color: lightgray;}
8
  .egg-container .egg-stars-container:after {position: absolute;top: 0;left: 0;content: '★★★★★';color: #fcc10a;overflow: hidden;}
9
  .egg-stars-0:after { width: 0%; } .egg-stars-10:after { width: 10%; } .egg-stars-20:after { width: 20%; } .egg-stars-30:after { width: 30%; } .egg-stars-40:after { width: 40%; } .egg-stars-50:after { width: 50%; } .egg-stars-60:after { width: 60%; } .egg-stars-70:after { width: 70%; } .egg-stars-80:after { width: 80%; } .egg-stars-90:after { width: 90%; } .egg-stars-100:after { width: 100%; }
54
  .egg-container .row-products:hover {background-color: #f9f9f9;}
55
  .egg-container .row-products span.no-bold {font-size: 14px;font-weight: normal;}
56
  .cegg-list-no-prices .cegg-desc-cell {vertical-align: top !important;}
57
+ .egg-container {clear: both;}
58
+ .egg-list .row-products {clear: both;}
59
  .egg-list .row-products{margin-bottom:15px;margin-top:0}
60
+ .egg-container .cegg-image-cell img{max-height: 100px; max-width: 130px;}
61
  .egg-container .cegg-image-cell{text-align:center}
62
  .cegg-image-container img{ vertical-align: top; max-width: 100%; height: auto; display: inline-block; max-height: 350px; }
63
  .egg-container .cegg-no-top-margin{margin-top:0 }
135
  .egg-container .status-instock{color: #7ad03a;}
136
  .egg-container .status-outofstock{color: #777;}
137
  .egg-container .cegg-disclaimer .cegg-disclaimer-title {padding: 5px;cursor: default; }
138
+ .egg-container .cegg-disclaimer {cursor: pointer; }
139
  .egg-container .cegg-cashback {color: #199402;}
140
  .cegg-features-table {word-wrap: break-word;}
141
  .cegg-btn-row {padding-right: 10px;}
142
  .cegg-price-outofstock {color: #777 !important;}
143
 
144
+
145
+ .egg-ico-info-circle::before {
146
+ display: inline-block;
147
+ flex-shrink: 0;
148
+ width: 1em;
149
+ height: 1em;
150
+ margin-left: .1rem;
151
+ content: "";
152
+ vertical-align: -.125em;
153
+ background-repeat: no-repeat;
154
+ background-size: 1rem 1rem;
155
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23777' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z'/%3E%3C/svg%3E") no-repeat center center / 100% auto;;
156
+ cursor: pointer;
157
+ color: #777;
158
+ }
159
+
160
  @media (max-width: 768px) {
161
  .cegg-list-withlogos .cegg-btn-cell{text-align: center;}
162
  .cegg-price-tracker-panel .col-md-5{text-align: left;}
163
+
164
+ .egg-container .cegg-list-withlogos .cegg-image-cell img{max-height: 60px; max-width: 60px;height:auto;}
165
  .egg-container .egg-listcontainer .row-products{display:flex;}
166
  .cegg-list-no-prices .row-products{display: table-row !important;}
167
  .egg-container .egg-listcontainer .row-products > div{padding:5px 0 10px 0;}
168
  .egg-listcontainer .cegg-price, .cegg-list-withlogos .cegg-price{font-size:18px;line-height:1;}
169
  .cegg-price-row strike{font-size: 15px;}
170
  .egg-container .row-products .btn {padding: 5px 2px; font-size: 12px; line-height: 1.3; border-radius: 3;}
 
171
  .cegg-gridbox .producttitle, .cegg-gridbox .producttitle a {font-size: 14px;}
172
  .cegg-gridbox .cegg-price, .cegg-gridbox .cegg-price strike {font-size: 16px;}
173
  .cegg-gridbox .producttitle, .cegg-gridbox .producttitle .cegg-mb10 {margin-bottom: 5px;}
res/img/logo.png ADDED
Binary file
res/js/common.js CHANGED
@@ -1,5 +1,5 @@
1
  jQuery(document).ready(function ($) {
2
- $(".content-egg-delete").click(function () {
3
  if (!confirm(contenteggL10n.are_you_shure)) {
4
  return false;
5
  }
1
  jQuery(document).ready(function ($) {
2
+ $(".content-egg-delete").on('click', function () {
3
  if (!confirm(contenteggL10n.are_you_shure)) {
4
  return false;
5
  }
res/js/jquery.blockUI.js CHANGED
@@ -1,6 +1,14 @@
 
 
 
 
 
 
 
 
1
  /*!
2
  * jQuery blockUI plugin
3
- * Version 2.66.0-2013.10.09
4
  * Requires jQuery v1.7 or later
5
  *
6
  * Examples at: http://malsup.com/jquery/block/
@@ -12,614 +20,610 @@
12
  * Thanks to Amir-Hossein Sobhi for some excellent contributions!
13
  */
14
 
15
- ;
16
- (function () {
17
- /*jshint eqeqeq:false curly:false latedef:false */
18
- "use strict";
19
-
20
- function setup($) {
21
- $.fn._fadeIn = $.fn.fadeIn;
22
-
23
- var noOp = $.noop || function () {};
24
-
25
- // this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
26
- // confusing userAgent strings on Vista)
27
- var msie = /MSIE/.test(navigator.userAgent);
28
- var ie6 = /MSIE 6.0/.test(navigator.userAgent) && !/MSIE 8.0/.test(navigator.userAgent);
29
- var mode = document.documentMode || 0;
30
- var setExpr = $.isFunction(document.createElement('div').style.setExpression);
31
-
32
- // global $ methods for blocking/unblocking the entire page
33
- $.blockUI = function (opts) {
34
- install(window, opts);
35
- };
36
- $.unblockUI = function (opts) {
37
- remove(window, opts);
38
- };
39
-
40
- // convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
41
- $.growlUI = function (title, message, timeout, onClose) {
42
- var $m = $('<div class="growlUI"></div>');
43
- if (title)
44
- $m.append('<h1>' + title + '</h1>');
45
- if (message)
46
- $m.append('<h2>' + message + '</h2>');
47
- if (timeout === undefined)
48
- timeout = 3000;
49
-
50
- // Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
51
- var callBlock = function (opts) {
52
- opts = opts || {};
53
-
54
- $.blockUI({
55
- message: $m,
56
- fadeIn: typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
57
- fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
58
- timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
59
- centerY: false,
60
- showOverlay: false,
61
- onUnblock: onClose,
62
- css: $.blockUI.defaults.growlCSS
63
- });
64
- };
65
-
66
- callBlock();
67
- var nonmousedOpacity = $m.css('opacity');
68
- $m.mouseover(function () {
69
- callBlock({
70
- fadeIn: 0,
71
- timeout: 30000
72
- });
73
-
74
- var displayBlock = $('.blockMsg');
75
- displayBlock.stop(); // cancel fadeout if it has started
76
- displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
77
- }).mouseout(function () {
78
- $('.blockMsg').fadeOut(1000);
79
- });
80
- // End konapun additions
81
- };
82
-
83
- // plugin method for blocking element content
84
- $.fn.block = function (opts) {
85
- if (this[0] === window) {
86
- $.blockUI(opts);
87
- return this;
88
- }
89
- var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
90
- this.each(function () {
91
- var $el = $(this);
92
- if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
93
- return;
94
- $el.unblock({fadeOut: 0});
95
- });
96
-
97
- return this.each(function () {
98
- if ($.css(this, 'position') == 'static') {
99
- this.style.position = 'relative';
100
- $(this).data('blockUI.static', true);
101
- }
102
- this.style.zoom = 1; // force 'hasLayout' in ie
103
- install(this, opts);
104
- });
105
- };
106
-
107
- // plugin method for unblocking element content
108
- $.fn.unblock = function (opts) {
109
- if (this[0] === window) {
110
- $.unblockUI(opts);
111
- return this;
112
- }
113
- return this.each(function () {
114
- remove(this, opts);
115
- });
116
- };
117
-
118
- $.blockUI.version = 2.66; // 2nd generation blocking at no extra cost!
119
-
120
- // override these in your code to change the default behavior and style
121
- $.blockUI.defaults = {
122
- // message displayed when blocking (use null for no message)
123
- message: '<h1>Please wait...</h1>',
124
-
125
- title: null, // title string; only used when theme == true
126
- draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
127
-
128
- theme: false, // set to true to use with jQuery UI themes
129
-
130
- // styles for the message when blocking; if you wish to disable
131
- // these and use an external stylesheet then do this in your code:
132
- // $.blockUI.defaults.css = {};
133
- css: {
134
- padding: 0,
135
- margin: 0,
136
- width: '30%',
137
- top: '40%',
138
- left: '35%',
139
- textAlign: 'center',
140
- color: '#000',
141
- border: '3px solid #aaa',
142
- backgroundColor: '#fff',
143
- cursor: 'wait'
144
- },
145
-
146
- // minimal style set used when themes are used
147
- themedCSS: {
148
- width: '30%',
149
- top: '40%',
150
- left: '35%'
151
- },
152
-
153
- // styles for the overlay
154
- overlayCSS: {
155
- backgroundColor: '#000',
156
- opacity: 0.6,
157
- cursor: 'wait'
158
- },
159
-
160
- // style to replace wait cursor before unblocking to correct issue
161
- // of lingering wait cursor
162
- cursorReset: 'default',
163
-
164
- // styles applied when using $.growlUI
165
- growlCSS: {
166
- width: '350px',
167
- top: '10px',
168
- left: '',
169
- right: '10px',
170
- border: 'none',
171
- padding: '5px',
172
- opacity: 0.6,
173
- cursor: 'default',
174
- color: '#fff',
175
- backgroundColor: '#000',
176
- '-webkit-border-radius': '10px',
177
- '-moz-border-radius': '10px',
178
- 'border-radius': '10px'
179
- },
180
-
181
- // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
182
- // (hat tip to Jorge H. N. de Vasconcelos)
183
- /*jshint scripturl:true */
184
- iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
185
-
186
- // force usage of iframe in non-IE browsers (handy for blocking applets)
187
- forceIframe: false,
188
-
189
- // z-index for the blocking overlay
190
- baseZ: 1000,
191
-
192
- // set these to true to have the message automatically centered
193
- centerX: true, // <-- only effects element blocking (page block controlled via css above)
194
- centerY: true,
195
-
196
- // allow body element to be stetched in ie6; this makes blocking look better
197
- // on "short" pages. disable if you wish to prevent changes to the body height
198
- allowBodyStretch: true,
199
-
200
- // enable if you want key and mouse events to be disabled for content that is blocked
201
- bindEvents: true,
202
-
203
- // be default blockUI will supress tab navigation from leaving blocking content
204
- // (if bindEvents is true)
205
- constrainTabKey: true,
206
-
207
- // fadeIn time in millis; set to 0 to disable fadeIn on block
208
- fadeIn: 200,
209
-
210
- // fadeOut time in millis; set to 0 to disable fadeOut on unblock
211
- fadeOut: 400,
212
-
213
- // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
214
- timeout: 0,
215
-
216
- // disable if you don't want to show the overlay
217
- showOverlay: true,
218
-
219
- // if true, focus will be placed in the first available input field when
220
- // page blocking
221
- focusInput: true,
222
 
223
  // elements that can receive focus
224
  focusableElements: ':input:enabled:visible',
225
 
226
- // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
227
- // no longer needed in 2012
228
- // applyPlatformOpacityRules: true,
229
-
230
- // callback method invoked when fadeIn has completed and blocking message is visible
231
- onBlock: null,
232
-
233
- // callback method invoked when unblocking has completed; the callback is
234
- // passed the element that has been unblocked (which is the window object for page
235
- // blocks) and the options that were passed to the unblock call:
236
- // onUnblock(element, options)
237
- onUnblock: null,
238
-
239
- // callback method invoked when the overlay area is clicked.
240
- // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
241
- onOverlayClick: null,
242
-
243
- // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
244
- quirksmodeOffsetHack: 4,
245
-
246
- // class name of the message block
247
- blockMsgClass: 'blockMsg',
248
-
249
- // if it is already blocked, then ignore it (don't unblock and reblock)
250
- ignoreIfBlocked: false
251
- };
252
-
253
- // private data and functions follow...
254
-
255
- var pageBlock = null;
256
- var pageBlockEls = [];
257
-
258
- function install(el, opts) {
259
- var css, themedCSS;
260
- var full = (el == window);
261
- var msg = (opts && opts.message !== undefined ? opts.message : undefined);
262
- opts = $.extend({}, $.blockUI.defaults, opts || {});
263
-
264
- if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
265
- return;
266
-
267
- opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
268
- css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
269
- if (opts.onOverlayClick)
270
- opts.overlayCSS.cursor = 'pointer';
271
-
272
- themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
273
- msg = msg === undefined ? opts.message : msg;
274
-
275
- // remove the current block (if there is one)
276
- if (full && pageBlock)
277
- remove(window, {fadeOut: 0});
278
-
279
- // if an existing element is being used as the blocking content then we capture
280
- // its current place in the DOM (and current display style) so we can restore
281
- // it when we unblock
282
- if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
283
- var node = msg.jquery ? msg[0] : msg;
284
- var data = {};
285
- $(el).data('blockUI.history', data);
286
- data.el = node;
287
- data.parent = node.parentNode;
288
- data.display = node.style.display;
289
- data.position = node.style.position;
290
- if (data.parent)
291
- data.parent.removeChild(node);
292
- }
293
-
294
- $(el).data('blockUI.onUnblock', opts.onUnblock);
295
- var z = opts.baseZ;
296
-
297
- // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
298
- // layer1 is the iframe layer which is used to supress bleed through of underlying content
299
- // layer2 is the overlay layer which has opacity and a wait cursor (by default)
300
- // layer3 is the message content that is displayed while blocking
301
- var lyr1, lyr2, lyr3, s;
302
- if (msie || opts.forceIframe)
303
- lyr1 = $('<iframe class="blockUI" style="z-index:' + (z++) + ';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="' + opts.iframeSrc + '"></iframe>');
304
- else
305
- lyr1 = $('<div class="blockUI" style="display:none"></div>');
306
-
307
- if (opts.theme)
308
- lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:' + (z++) + ';display:none"></div>');
309
- else
310
- lyr2 = $('<div class="blockUI blockOverlay" style="z-index:' + (z++) + ';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
311
-
312
- if (opts.theme && full) {
313
- s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:' + (z + 10) + ';display:none;position:fixed">';
314
- if (opts.title) {
315
- s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' + (opts.title || '&nbsp;') + '</div>';
316
- }
317
- s += '<div class="ui-widget-content ui-dialog-content"></div>';
318
- s += '</div>';
319
- } else if (opts.theme) {
320
- s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:' + (z + 10) + ';display:none;position:absolute">';
321
- if (opts.title) {
322
- s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' + (opts.title || '&nbsp;') + '</div>';
323
- }
324
- s += '<div class="ui-widget-content ui-dialog-content"></div>';
325
- s += '</div>';
326
- } else if (full) {
327
- s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:' + (z + 10) + ';display:none;position:fixed"></div>';
328
- } else {
329
- s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:' + (z + 10) + ';display:none;position:absolute"></div>';
330
- }
331
- lyr3 = $(s);
332
-
333
- // if we have a message, style it
334
- if (msg) {
335
- if (opts.theme) {
336
- lyr3.css(themedCSS);
337
- lyr3.addClass('ui-widget-content');
338
- } else
339
- lyr3.css(css);
340
- }
341
-
342
- // style the overlay
343
- if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
344
- lyr2.css(opts.overlayCSS);
345
- lyr2.css('position', full ? 'fixed' : 'absolute');
346
-
347
- // make iframe layer transparent in IE
348
- if (msie || opts.forceIframe)
349
- lyr1.css('opacity', 0.0);
350
-
351
- //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
352
- var layers = [lyr1, lyr2, lyr3], $par = full ? $('body') : $(el);
353
- $.each(layers, function () {
354
- this.appendTo($par);
355
- });
356
-
357
- if (opts.theme && opts.draggable && $.fn.draggable) {
358
- lyr3.draggable({
359
- handle: '.ui-dialog-titlebar',
360
- cancel: 'li'
361
- });
362
- }
363
-
364
- // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
365
- var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
366
- if (ie6 || expr) {
367
- // give body 100% height
368
- if (full && opts.allowBodyStretch && $.support.boxModel)
369
- $('html,body').css('height', '100%');
370
-
371
- // fix ie6 issue when blocked element has a border width
372
- if ((ie6 || !$.support.boxModel) && !full) {
373
- var t = sz(el, 'borderTopWidth'), l = sz(el, 'borderLeftWidth');
374
- var fixT = t ? '(0 - ' + t + ')' : 0;
375
- var fixL = l ? '(0 - ' + l + ')' : 0;
376
- }
377
-
378
- // simulate fixed position
379
- $.each(layers, function (i, o) {
380
- var s = o[0].style;
381
- s.position = 'absolute';
382
- if (i < 2) {
383
- if (full)
384
- s.setExpression('height', 'Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:' + opts.quirksmodeOffsetHack + ') + "px"');
385
- else
386
- s.setExpression('height', 'this.parentNode.offsetHeight + "px"');
387
- if (full)
388
- s.setExpression('width', 'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
389
- else
390
- s.setExpression('width', 'this.parentNode.offsetWidth + "px"');
391
- if (fixL)
392
- s.setExpression('left', fixL);
393
- if (fixT)
394
- s.setExpression('top', fixT);
395
- } else if (opts.centerY) {
396
- if (full)
397
- s.setExpression('top', '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
398
- s.marginTop = 0;
399
- } else if (!opts.centerY && full) {
400
- var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
401
- var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + ' + top + ') + "px"';
402
- s.setExpression('top', expression);
403
- }
404
- });
405
- }
406
-
407
- // show the message
408
- if (msg) {
409
- if (opts.theme)
410
- lyr3.find('.ui-widget-content').append(msg);
411
- else
412
- lyr3.append(msg);
413
- if (msg.jquery || msg.nodeType)
414
- $(msg).show();
415
- }
416
-
417
- if ((msie || opts.forceIframe) && opts.showOverlay)
418
- lyr1.show(); // opacity is zero
419
- if (opts.fadeIn) {
420
- var cb = opts.onBlock ? opts.onBlock : noOp;
421
- var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
422
- var cb2 = msg ? cb : noOp;
423
- if (opts.showOverlay)
424
- lyr2._fadeIn(opts.fadeIn, cb1);
425
- if (msg)
426
- lyr3._fadeIn(opts.fadeIn, cb2);
427
- } else {
428
- if (opts.showOverlay)
429
- lyr2.show();
430
- if (msg)
431
- lyr3.show();
432
- if (opts.onBlock)
433
- opts.onBlock();
434
- }
435
-
436
- // bind key and mouse events
437
- bind(1, el, opts);
438
-
439
- if (full) {
440
- pageBlock = lyr3[0];
441
- pageBlockEls = $(opts.focusableElements, pageBlock);
442
- if (opts.focusInput)
443
- setTimeout(focus, 20);
444
- } else
445
- center(lyr3[0], opts.centerX, opts.centerY);
446
-
447
- if (opts.timeout) {
448
- // auto-unblock
449
- var to = setTimeout(function () {
450
- if (full)
451
- $.unblockUI(opts);
452
- else
453
- $(el).unblock(opts);
454
- }, opts.timeout);
455
- $(el).data('blockUI.timeout', to);
456
- }
457
- }
458
-
459
- // remove the block
460
- function remove(el, opts) {
461
- var count;
462
- var full = (el == window);
463
- var $el = $(el);
464
- var data = $el.data('blockUI.history');
465
- var to = $el.data('blockUI.timeout');
466
- if (to) {
467
- clearTimeout(to);
468
- $el.removeData('blockUI.timeout');
469
- }
470
- opts = $.extend({}, $.blockUI.defaults, opts || {});
471
- bind(0, el, opts); // unbind events
472
-
473
- if (opts.onUnblock === null) {
474
- opts.onUnblock = $el.data('blockUI.onUnblock');
475
- $el.removeData('blockUI.onUnblock');
476
- }
477
-
478
- var els;
479
- if (full) // crazy selector to handle odd field errors in ie6/7
480
- els = $('body').children().filter('.blockUI').add('body > .blockUI');
481
- else
482
- els = $el.find('>.blockUI');
483
-
484
- // fix cursor issue
485
- if (opts.cursorReset) {
486
- if (els.length > 1)
487
- els[1].style.cursor = opts.cursorReset;
488
- if (els.length > 2)
489
- els[2].style.cursor = opts.cursorReset;
490
- }
491
-
492
- if (full)
493
- pageBlock = pageBlockEls = null;
494
-
495
- if (opts.fadeOut) {
496
- count = els.length;
497
- els.stop().fadeOut(opts.fadeOut, function () {
498
- if (--count === 0)
499
- reset(els, data, opts, el);
500
- });
501
- } else
502
- reset(els, data, opts, el);
503
- }
504
-
505
- // move blocking element back into the DOM where it started
506
- function reset(els, data, opts, el) {
507
- var $el = $(el);
508
- if ($el.data('blockUI.isBlocked'))
509
- return;
510
-
511
- els.each(function (i, o) {
512
- // remove via DOM calls so we don't lose event handlers
513
- if (this.parentNode)
514
- this.parentNode.removeChild(this);
515
- });
516
-
517
- if (data && data.el) {
518
- data.el.style.display = data.display;
519
- data.el.style.position = data.position;
520
- if (data.parent)
521
- data.parent.appendChild(data.el);
522
- $el.removeData('blockUI.history');
523
- }
524
-
525
- if ($el.data('blockUI.static')) {
526
- $el.css('position', 'static'); // #22
527
- }
528
-
529
- if (typeof opts.onUnblock == 'function')
530
- opts.onUnblock(el, opts);
531
-
532
- // fix issue in Safari 6 where block artifacts remain until reflow
533
- var body = $(document.body), w = body.width(), cssW = body[0].style.width;
534
- body.width(w - 1).width(w);
535
- body[0].style.width = cssW;
536
- }
537
-
538
- // bind/unbind the handler
539
- function bind(b, el, opts) {
540
- var full = el == window, $el = $(el);
541
-
542
- // don't bother unbinding if there is nothing to unbind
543
- if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
544
- return;
545
-
546
- $el.data('blockUI.isBlocked', b);
547
-
548
- // don't bind events when overlay is not in use or if bindEvents is false
549
- if (!full || !opts.bindEvents || (b && !opts.showOverlay))
550
- return;
551
-
552
- // bind anchors and inputs for mouse and key events
553
- var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
554
- if (b)
555
- $(document).bind(events, opts, handler);
556
- else
557
- $(document).unbind(events, handler);
558
-
559
- // former impl...
560
- // var $e = $('a,:input');
561
- // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
562
- }
563
-
564
- // event handler to suppress keyboard/mouse events when blocking
565
- function handler(e) {
566
- // allow tab navigation (conditionally)
567
- if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
568
- if (pageBlock && e.data.constrainTabKey) {
569
- var els = pageBlockEls;
570
- var fwd = !e.shiftKey && e.target === els[els.length - 1];
571
- var back = e.shiftKey && e.target === els[0];
572
- if (fwd || back) {
573
- setTimeout(function () {
574
- focus(back);
575
- }, 10);
576
- return false;
577
- }
578
- }
579
- }
580
- var opts = e.data;
581
- var target = $(e.target);
582
- if (target.hasClass('blockOverlay') && opts.onOverlayClick)
583
- opts.onOverlayClick(e);
584
-
585
- // allow events within the message content
586
- if (target.parents('div.' + opts.blockMsgClass).length > 0)
587
- return true;
588
-
589
- // allow events for content that is not being blocked
590
- return target.parents().children().filter('div.blockUI').length === 0;
591
- }
592
-
593
- function focus(back) {
594
- if (!pageBlockEls)
595
- return;
596
- var e = pageBlockEls[back === true ? pageBlockEls.length - 1 : 0];
597
- if (e)
598
- e.focus();
599
- }
600
-
601
- function center(el, x, y) {
602
- var p = el.parentNode, s = el.style;
603
- var l = ((p.offsetWidth - el.offsetWidth) / 2) - sz(p, 'borderLeftWidth');
604
- var t = ((p.offsetHeight - el.offsetHeight) / 2) - sz(p, 'borderTopWidth');
605
- if (x)
606
- s.left = l > 0 ? (l + 'px') : '0';
607
- if (y)
608
- s.top = t > 0 ? (t + 'px') : '0';
609
- }
610
-
611
- function sz(el, p) {
612
- return parseInt($.css(el, p), 10) || 0;
613
- }
614
-
615
- }
616
-
617
-
618
- /*global define:true */
619
- if (typeof define === 'function' && define.amd && define.amd.jQuery) {
620
- define(['jquery'], setup);
621
- } else {
622
- setup(jQuery);
623
- }
 
 
 
624
 
625
  })();
1
+ /**
2
+ * Modified version of jQuery blockUI plugin
3
+ *
4
+ * @author keywordrush.com <support@keywordrush.com>
5
+ * @link https://www.keywordrush.com
6
+ * @copyright Copyright &copy; 2020 keywordrush.com
7
+ */
8
+
9
  /*!
10
  * jQuery blockUI plugin
11
+ * Version 2.70.0-2014.11.23
12
  * Requires jQuery v1.7 or later
13
  *
14
  * Examples at: http://malsup.com/jquery/block/
20
  * Thanks to Amir-Hossein Sobhi for some excellent contributions!
21
  */
22
 
23
+ ;(function() {
24
+ /*jshint eqeqeq:false curly:false latedef:false */
25
+ "use strict";
26
+
27
+ function setup($) {
28
+ $.fn._fadeIn = $.fn.fadeIn;
29
+
30
+ var noOp = $.noop || function() {};
31
+
32
+ // this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
33
+ // confusing userAgent strings on Vista)
34
+ var msie = /MSIE/.test(navigator.userAgent);
35
+ var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
36
+ var mode = document.documentMode || 0;
37
+ //var setExpr = $.isFunction( document.createElement('div').style.setExpression );
38
+ var setExpr = typeof document.createElement('div').style.setExpression === "function";
39
+
40
+ // global $ methods for blocking/unblocking the entire page
41
+ $.blockUI = function(opts) { install(window, opts); };
42
+ $.unblockUI = function(opts) { remove(window, opts); };
43
+
44
+ // convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
45
+ $.growlUI = function(title, message, timeout, onClose) {
46
+ var $m = $('<div class="growlUI"></div>');
47
+ if (title) $m.append('<h1>'+title+'</h1>');
48
+ if (message) $m.append('<h2>'+message+'</h2>');
49
+ if (timeout === undefined) timeout = 3000;
50
+
51
+ // Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
52
+ var callBlock = function(opts) {
53
+ opts = opts || {};
54
+
55
+ $.blockUI({
56
+ message: $m,
57
+ fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
58
+ fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
59
+ timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
60
+ centerY: false,
61
+ showOverlay: false,
62
+ onUnblock: onClose,
63
+ css: $.blockUI.defaults.growlCSS
64
+ });
65
+ };
66
+
67
+ callBlock();
68
+ var nonmousedOpacity = $m.css('opacity');
69
+ $m.mouseover(function() {
70
+ callBlock({
71
+ fadeIn: 0,
72
+ timeout: 30000
73
+ });
74
+
75
+ var displayBlock = $('.blockMsg');
76
+ displayBlock.stop(); // cancel fadeout if it has started
77
+ displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
78
+ }).mouseout(function() {
79
+ $('.blockMsg').fadeOut(1000);
80
+ });
81
+ // End konapun additions
82
+ };
83
+
84
+ // plugin method for blocking element content
85
+ $.fn.block = function(opts) {
86
+ if ( this[0] === window ) {
87
+ $.blockUI( opts );
88
+ return this;
89
+ }
90
+ var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
91
+ this.each(function() {
92
+ var $el = $(this);
93
+ if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
94
+ return;
95
+ $el.unblock({ fadeOut: 0 });
96
+ });
97
+
98
+ return this.each(function() {
99
+ if ($.css(this,'position') == 'static') {
100
+ this.style.position = 'relative';
101
+ $(this).data('blockUI.static', true);
102
+ }
103
+ this.style.zoom = 1; // force 'hasLayout' in ie
104
+ install(this, opts);
105
+ });
106
+ };
107
+
108
+ // plugin method for unblocking element content
109
+ $.fn.unblock = function(opts) {
110
+ if ( this[0] === window ) {
111
+ $.unblockUI( opts );
112
+ return this;
113
+ }
114
+ return this.each(function() {
115
+ remove(this, opts);
116
+ });
117
+ };
118
+
119
+ $.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
120
+
121
+ // override these in your code to change the default behavior and style
122
+ $.blockUI.defaults = {
123
+ // message displayed when blocking (use null for no message)
124
+ message: '<h1>Please wait...</h1>',
125
+
126
+ title: null, // title string; only used when theme == true
127
+ draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
128
+
129
+ theme: false, // set to true to use with jQuery UI themes
130
+
131
+ // styles for the message when blocking; if you wish to disable
132
+ // these and use an external stylesheet then do this in your code:
133
+ // $.blockUI.defaults.css = {};
134
+ css: {
135
+ padding: 0,
136
+ margin: 0,
137
+ width: '30%',
138
+ top: '40%',
139
+ left: '35%',
140
+ textAlign: 'center',
141
+ color: '#000',
142
+ border: '3px solid #aaa',
143
+ backgroundColor:'#fff',
144
+ cursor: 'wait'
145
+ },
146
+
147
+ // minimal style set used when themes are used
148
+ themedCSS: {
149
+ width: '30%',
150
+ top: '40%',
151
+ left: '35%'
152
+ },
153
+
154
+ // styles for the overlay
155
+ overlayCSS: {
156
+ backgroundColor: '#000',
157
+ opacity: 0.6,
158
+ cursor: 'wait'
159
+ },
160
+
161
+ // style to replace wait cursor before unblocking to correct issue
162
+ // of lingering wait cursor
163
+ cursorReset: 'default',
164
+
165
+ // styles applied when using $.growlUI
166
+ growlCSS: {
167
+ width: '350px',
168
+ top: '10px',
169
+ left: '',
170
+ right: '10px',
171
+ border: 'none',
172
+ padding: '5px',
173
+ opacity: 0.6,
174
+ cursor: 'default',
175
+ color: '#fff',
176
+ backgroundColor: '#000',
177
+ '-webkit-border-radius':'10px',
178
+ '-moz-border-radius': '10px',
179
+ 'border-radius': '10px'
180
+ },
181
+
182
+ // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
183
+ // (hat tip to Jorge H. N. de Vasconcelos)
184
+ /*jshint scripturl:true */
185
+ iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
186
+
187
+ // force usage of iframe in non-IE browsers (handy for blocking applets)
188
+ forceIframe: false,
189
+
190
+ // z-index for the blocking overlay
191
+ baseZ: 1000,
192
+
193
+ // set these to true to have the message automatically centered
194
+ centerX: true, // <-- only effects element blocking (page block controlled via css above)
195
+ centerY: true,
196
+
197
+ // allow body element to be stetched in ie6; this makes blocking look better
198
+ // on "short" pages. disable if you wish to prevent changes to the body height
199
+ allowBodyStretch: true,
200
+
201
+ // enable if you want key and mouse events to be disabled for content that is blocked
202
+ bindEvents: true,
203
+
204
+ // be default blockUI will supress tab navigation from leaving blocking content
205
+ // (if bindEvents is true)
206
+ constrainTabKey: true,
207
+
208
+ // fadeIn time in millis; set to 0 to disable fadeIn on block
209
+ fadeIn: 200,
210
+
211
+ // fadeOut time in millis; set to 0 to disable fadeOut on unblock
212
+ fadeOut: 400,
213
+
214
+ // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
215
+ timeout: 0,
216
+
217
+ // disable if you don't want to show the overlay
218
+ showOverlay: true,
219
+
220
+ // if true, focus will be placed in the first available input field when
221
+ // page blocking
222
+ focusInput: true,
 
 
 
 
 
 
 
223
 
224
  // elements that can receive focus
225
  focusableElements: ':input:enabled:visible',
226
 
227
+ // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
228
+ // no longer needed in 2012
229
+ // applyPlatformOpacityRules: true,
230
+
231
+ // callback method invoked when fadeIn has completed and blocking message is visible
232
+ onBlock: null,
233
+
234
+ // callback method invoked when unblocking has completed; the callback is
235
+ // passed the element that has been unblocked (which is the window object for page
236
+ // blocks) and the options that were passed to the unblock call:
237
+ // onUnblock(element, options)
238
+ onUnblock: null,
239
+
240
+ // callback method invoked when the overlay area is clicked.
241
+ // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
242
+ onOverlayClick: null,
243
+
244
+ // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
245
+ quirksmodeOffsetHack: 4,
246
+
247
+ // class name of the message block
248
+ blockMsgClass: 'blockMsg',
249
+
250
+ // if it is already blocked, then ignore it (don't unblock and reblock)
251
+ ignoreIfBlocked: false
252
+ };
253
+
254
+ // private data and functions follow...
255
+
256
+ var pageBlock = null;
257
+ var pageBlockEls = [];
258
+
259
+ function install(el, opts) {
260
+ var css, themedCSS;
261
+ var full = (el == window);
262
+ var msg = (opts && opts.message !== undefined ? opts.message : undefined);
263
+ opts = $.extend({}, $.blockUI.defaults, opts || {});
264
+
265
+ if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
266
+ return;
267
+
268
+ opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
269
+ css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
270
+ if (opts.onOverlayClick)
271
+ opts.overlayCSS.cursor = 'pointer';
272
+
273
+ themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
274
+ msg = msg === undefined ? opts.message : msg;
275
+
276
+ // remove the current block (if there is one)
277
+ if (full && pageBlock)
278
+ remove(window, {fadeOut:0});
279
+
280
+ // if an existing element is being used as the blocking content then we capture
281
+ // its current place in the DOM (and current display style) so we can restore
282
+ // it when we unblock
283
+ if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
284
+ var node = msg.jquery ? msg[0] : msg;
285
+ var data = {};
286
+ $(el).data('blockUI.history', data);
287
+ data.el = node;
288
+ data.parent = node.parentNode;
289
+ data.display = node.style.display;
290
+ data.position = node.style.position;
291
+ if (data.parent)
292
+ data.parent.removeChild(node);
293
+ }
294
+
295
+ $(el).data('blockUI.onUnblock', opts.onUnblock);
296
+ var z = opts.baseZ;
297
+
298
+ // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
299
+ // layer1 is the iframe layer which is used to supress bleed through of underlying content
300
+ // layer2 is the overlay layer which has opacity and a wait cursor (by default)
301
+ // layer3 is the message content that is displayed while blocking
302
+ var lyr1, lyr2, lyr3, s;
303
+ if (msie || opts.forceIframe)
304
+ lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>');
305
+ else
306
+ lyr1 = $('<div class="blockUI" style="display:none"></div>');
307
+
308
+ if (opts.theme)
309
+ lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>');
310
+ else
311
+ lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
312
+
313
+ if (opts.theme && full) {
314
+ s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
315
+ if ( opts.title ) {
316
+ s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
317
+ }
318
+ s += '<div class="ui-widget-content ui-dialog-content"></div>';
319
+ s += '</div>';
320
+ }
321
+ else if (opts.theme) {
322
+ s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
323
+ if ( opts.title ) {
324
+ s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
325
+ }
326
+ s += '<div class="ui-widget-content ui-dialog-content"></div>';
327
+ s += '</div>';
328
+ }
329
+ else if (full) {
330
+ s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>';
331
+ }
332
+ else {
333
+ s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>';
334
+ }
335
+ lyr3 = $(s);
336
+
337
+ // if we have a message, style it
338
+ if (msg) {
339
+ if (opts.theme) {
340
+ lyr3.css(themedCSS);
341
+ lyr3.addClass('ui-widget-content');
342
+ }
343
+ else
344
+ lyr3.css(css);
345
+ }
346
+
347
+ // style the overlay
348
+ if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
349
+ lyr2.css(opts.overlayCSS);
350
+ lyr2.css('position', full ? 'fixed' : 'absolute');
351
+
352
+ // make iframe layer transparent in IE
353
+ if (msie || opts.forceIframe)
354
+ lyr1.css('opacity',0.0);
355
+
356
+ //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
357
+ var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
358
+ $.each(layers, function() {
359
+ this.appendTo($par);
360
+ });
361
+
362
+ if (opts.theme && opts.draggable && $.fn.draggable) {
363
+ lyr3.draggable({
364
+ handle: '.ui-dialog-titlebar',
365
+ cancel: 'li'
366
+ });
367
+ }
368
+
369
+ // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
370
+ var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
371
+ if (ie6 || expr) {
372
+ // give body 100% height
373
+ if (full && opts.allowBodyStretch && $.support.boxModel)
374
+ $('html,body').css('height','100%');
375
+
376
+ // fix ie6 issue when blocked element has a border width
377
+ if ((ie6 || !$.support.boxModel) && !full) {
378
+ var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
379
+ var fixT = t ? '(0 - '+t+')' : 0;
380
+ var fixL = l ? '(0 - '+l+')' : 0;
381
+ }
382
+
383
+ // simulate fixed position
384
+ $.each(layers, function(i,o) {
385
+ var s = o[0].style;
386
+ s.position = 'absolute';
387
+ if (i < 2) {
388
+ if (full)
389
+ s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
390
+ else
391
+ s.setExpression('height','this.parentNode.offsetHeight + "px"');
392
+ if (full)
393
+ s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
394
+ else
395
+ s.setExpression('width','this.parentNode.offsetWidth + "px"');
396
+ if (fixL) s.setExpression('left', fixL);
397
+ if (fixT) s.setExpression('top', fixT);
398
+ }
399
+ else if (opts.centerY) {
400
+ if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
401
+ s.marginTop = 0;
402
+ }
403
+ else if (!opts.centerY && full) {
404
+ var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
405
+ var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
406
+ s.setExpression('top',expression);
407
+ }
408
+ });
409
+ }
410
+
411
+ // show the message
412
+ if (msg) {
413
+ if (opts.theme)
414
+ lyr3.find('.ui-widget-content').append(msg);
415
+ else
416
+ lyr3.append(msg);
417
+ if (msg.jquery || msg.nodeType)
418
+ $(msg).show();
419
+ }
420
+
421
+ if ((msie || opts.forceIframe) && opts.showOverlay)
422
+ lyr1.show(); // opacity is zero
423
+ if (opts.fadeIn) {
424
+ var cb = opts.onBlock ? opts.onBlock : noOp;
425
+ var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
426
+ var cb2 = msg ? cb : noOp;
427
+ if (opts.showOverlay)
428
+ lyr2._fadeIn(opts.fadeIn, cb1);
429
+ if (msg)
430
+ lyr3._fadeIn(opts.fadeIn, cb2);
431
+ }
432
+ else {
433
+ if (opts.showOverlay)
434
+ lyr2.show();
435
+ if (msg)
436
+ lyr3.show();
437
+ if (opts.onBlock)
438
+ opts.onBlock.bind(lyr3)();
439
+ }
440
+
441
+ // bind key and mouse events
442
+ bind(1, el, opts);
443
+
444
+ if (full) {
445
+ pageBlock = lyr3[0];
446
+ pageBlockEls = $(opts.focusableElements,pageBlock);
447
+ if (opts.focusInput)
448
+ setTimeout(focus, 20);
449
+ }
450
+ else
451
+ center(lyr3[0], opts.centerX, opts.centerY);
452
+
453
+ if (opts.timeout) {
454
+ // auto-unblock
455
+ var to = setTimeout(function() {
456
+ if (full)
457
+ $.unblockUI(opts);
458
+ else
459
+ $(el).unblock(opts);
460
+ }, opts.timeout);
461
+ $(el).data('blockUI.timeout', to);
462
+ }
463
+ }
464
+
465
+ // remove the block
466
+ function remove(el, opts) {
467
+ var count;
468
+ var full = (el == window);
469
+ var $el = $(el);
470
+ var data = $el.data('blockUI.history');
471
+ var to = $el.data('blockUI.timeout');
472
+ if (to) {
473
+ clearTimeout(to);
474
+ $el.removeData('blockUI.timeout');
475
+ }
476
+ opts = $.extend({}, $.blockUI.defaults, opts || {});
477
+ bind(0, el, opts); // unbind events
478
+
479
+ if (opts.onUnblock === null) {
480
+ opts.onUnblock = $el.data('blockUI.onUnblock');
481
+ $el.removeData('blockUI.onUnblock');
482
+ }
483
+
484
+ var els;
485
+ if (full) // crazy selector to handle odd field errors in ie6/7
486
+ els = $('body').children().filter('.blockUI').add('body > .blockUI');
487
+ else
488
+ els = $el.find('>.blockUI');
489
+
490
+ // fix cursor issue
491
+ if ( opts.cursorReset ) {
492
+ if ( els.length > 1 )
493
+ els[1].style.cursor = opts.cursorReset;
494
+ if ( els.length > 2 )
495
+ els[2].style.cursor = opts.cursorReset;
496
+ }
497
+
498
+ if (full)
499
+ pageBlock = pageBlockEls = null;
500
+
501
+ if (opts.fadeOut) {
502
+ count = els.length;
503
+ els.stop().fadeOut(opts.fadeOut, function() {
504
+ if ( --count === 0)
505
+ reset(els,data,opts,el);
506
+ });
507
+ }
508
+ else
509
+ reset(els, data, opts, el);
510
+ }
511
+
512
+ // move blocking element back into the DOM where it started
513
+ function reset(els,data,opts,el) {
514
+ var $el = $(el);
515
+ if ( $el.data('blockUI.isBlocked') )
516
+ return;
517
+
518
+ els.each(function(i,o) {
519
+ // remove via DOM calls so we don't lose event handlers
520
+ if (this.parentNode)
521
+ this.parentNode.removeChild(this);
522
+ });
523
+
524
+ if (data && data.el) {
525
+ data.el.style.display = data.display;
526
+ data.el.style.position = data.position;
527
+ data.el.style.cursor = 'default'; // #59
528
+ if (data.parent)
529
+ data.parent.appendChild(data.el);
530
+ $el.removeData('blockUI.history');
531
+ }
532
+
533
+ if ($el.data('blockUI.static')) {
534
+ $el.css('position', 'static'); // #22
535
+ }
536
+
537
+ if (typeof opts.onUnblock == 'function')
538
+ opts.onUnblock(el,opts);
539
+
540
+ // fix issue in Safari 6 where block artifacts remain until reflow
541
+ var body = $(document.body), w = body.width(), cssW = body[0].style.width;
542
+ body.width(w-1).width(w);
543
+ body[0].style.width = cssW;
544
+ }
545
+
546
+ // bind/unbind the handler
547
+ function bind(b, el, opts) {
548
+ var full = el == window, $el = $(el);
549
+
550
+ // don't bother unbinding if there is nothing to unbind
551
+ if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
552
+ return;
553
+
554
+ $el.data('blockUI.isBlocked', b);
555
+
556
+ // don't bind events when overlay is not in use or if bindEvents is false
557
+ if (!full || !opts.bindEvents || (b && !opts.showOverlay))
558
+ return;
559
+
560
+ // bind anchors and inputs for mouse and key events
561
+ var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
562
+ if (b)
563
+ $(document).bind(events, opts, handler);
564
+ else
565
+ $(document).unbind(events, handler);
566
+
567
+ // former impl...
568
+ // var $e = $('a,:input');
569
+ // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
570
+ }
571
+
572
+ // event handler to suppress keyboard/mouse events when blocking
573
+ function handler(e) {
574
+ // allow tab navigation (conditionally)
575
+ if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
576
+ if (pageBlock && e.data.constrainTabKey) {
577
+ var els = pageBlockEls;
578
+ var fwd = !e.shiftKey && e.target === els[els.length-1];
579
+ var back = e.shiftKey && e.target === els[0];
580
+ if (fwd || back) {
581
+ setTimeout(function(){focus(back);},10);
582
+ return false;
583
+ }
584
+ }
585
+ }
586
+ var opts = e.data;
587
+ var target = $(e.target);
588
+ if (target.hasClass('blockOverlay') && opts.onOverlayClick)
589
+ opts.onOverlayClick(e);
590
+
591
+ // allow events within the message content
592
+ if (target.parents('div.' + opts.blockMsgClass).length > 0)
593
+ return true;
594
+
595
+ // allow events for content that is not being blocked
596
+ return target.parents().children().filter('div.blockUI').length === 0;
597
+ }
598
+
599
+ function focus(back) {
600
+ if (!pageBlockEls)
601
+ return;
602
+ var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
603
+ if (e)
604
+ e.focus();
605
+ }
606
+
607
+ function center(el, x, y) {
608
+ var p = el.parentNode, s = el.style;
609
+ var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
610
+ var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
611
+ if (x) s.left = l > 0 ? (l+'px') : '0';
612
+ if (y) s.top = t > 0 ? (t+'px') : '0';
613
+ }
614
+
615
+ function sz(el, p) {
616
+ return parseInt($.css(el,p),10)||0;
617
+ }
618
+
619
+ }
620
+
621
+
622
+ /*global define:true */
623
+ if (typeof define === 'function' && define.amd && define.amd.jQuery) {
624
+ define(['jquery'], setup);
625
+ } else {
626
+ setup(jQuery);
627
+ }
628
 
629
  })();
res/js/keywords.js CHANGED
@@ -10,28 +10,28 @@ jQuery(document).ready(function ($) {
10
  /** Suggestion tool */
11
  var sug_parser = 'sug_google';
12
  //sug parser source
13
- jQuery("#sug_btn_group input").click(function () {
14
  sug_parser = jQuery(this).val();
15
  if (jQuery('#sug_query').val())
16
  suggest(jQuery('#sug_query').val(), sug_parser);
17
  });
18
- jQuery('#sug_query').keyup(function () {
19
  suggest(jQuery(this).val(), sug_parser);
20
  });
21
  //--------------------------------------
22
 
23
 
24
  //add buttons
25
- jQuery('#add_selected').click(function () {
26
  add_selected()
27
  });
28
 
29
- jQuery('#add_all').click(function () {
30
  add_all();
31
  });
32
 
33
  // keywords count
34
- jQuery('#keywords').keyup(function (e) {
35
  var code = e.which;
36
  if (code == 13) {
37
  keywords_count();
@@ -39,37 +39,37 @@ jQuery(document).ready(function ($) {
39
  });
40
 
41
  //tools
42
- jQuery('#tool_capitalise').click(function (event) {
43
  event.preventDefault();
44
  var keywords = jQuery('#keywords').val();
45
  jQuery('#keywords').val(keywords.capitalize());
46
  });
47
 
48
- jQuery('#tool_sort').click(function (event) {
49
  event.preventDefault();
50
  var keywords = jQuery('#keywords').val();
51
  jQuery('#keywords').val(SortWords(keywords));
52
  });
53
 
54
- jQuery('#tool_delete').click(function (event) {
55
  event.preventDefault();
56
  jQuery('#keywords').val('');
57
  keywords_count();
58
  });
59
 
60
- jQuery('#tool_add_minus').click(function (event) {
61
  event.preventDefault();
62
  var keywords = jQuery('#keywords').val();
63
  jQuery('#keywords').val(addMinus(keywords));
64
  });
65
 
66
- jQuery('#tool_del_minus').click(function (event) {
67
  event.preventDefault();
68
  var keywords = jQuery('#keywords').val();
69
  jQuery('#keywords').val(delMinus(keywords));
70
  });
71
 
72
- jQuery('#tool_upper_first').click(function (event) {
73
  event.preventDefault();
74
  var keywords = jQuery('#keywords').val();
75
  jQuery('#keywords').val(upperFirst(keywords));
@@ -79,20 +79,20 @@ jQuery(document).ready(function ($) {
79
  /**
80
  * Hot Trends
81
  */
82
- jQuery("#trend_google").click(function () {
83
  jQuery("#trend_google").prop("disabled", true).addClass("ui-state-disabled");
84
  trend_google();
85
  jQuery('#trend_google').removeAttr('disabled').removeClass('ui-state-disabled');
86
  });
87
 
88
- jQuery("#trend_goods").click(function () {
89
  jQuery("#trend_goods").prop("disabled", true).addClass("ui-state-disabled");
90
  amazon_trends();
91
  jQuery('#trend_goods').removeAttr('disabled').removeClass('ui-state-disabled');
92
  });
93
 
94
 
95
- jQuery("#trend_keywords,#sug_keywords,#goods_keywords").change(function () {
96
  var opt = jQuery(this).children(":selected");
97
  add_keyword(opt.val());
98
  opt.remove();
10
  /** Suggestion tool */
11
  var sug_parser = 'sug_google';
12
  //sug parser source
13
+ jQuery("#sug_btn_group input").on('click', function () {
14
  sug_parser = jQuery(this).val();
15
  if (jQuery('#sug_query').val())
16
  suggest(jQuery('#sug_query').val(), sug_parser);
17
  });
18
+ jQuery('#sug_query').on('keyup', function () {
19
  suggest(jQuery(this).val(), sug_parser);
20
  });
21
  //--------------------------------------
22
 
23
 
24
  //add buttons
25
+ jQuery('#add_selected').on('click', function () {
26
  add_selected()
27
  });
28
 
29
+ jQuery('#add_all').on('click', function () {
30
  add_all();
31
  });
32
 
33
  // keywords count
34
+ jQuery('#keywords').on('keyup', function (e) {
35
  var code = e.which;
36
  if (code == 13) {
37
  keywords_count();
39
  });
40
 
41
  //tools
42
+ jQuery('#tool_capitalise').on('click', function (event) {
43
  event.preventDefault();
44
  var keywords = jQuery('#keywords').val();
45
  jQuery('#keywords').val(keywords.capitalize());
46
  });
47
 
48
+ jQuery('#tool_sort').on('click', function (event) {
49
  event.preventDefault();
50
  var keywords = jQuery('#keywords').val();
51
  jQuery('#keywords').val(SortWords(keywords));
52
  });
53
 
54
+ jQuery('#tool_delete').on('click', function (event) {
55
  event.preventDefault();
56
  jQuery('#keywords').val('');
57
  keywords_count();
58
  });
59
 
60
+ jQuery('#tool_add_minus').on('click', function (event) {
61
  event.preventDefault();
62
  var keywords = jQuery('#keywords').val();
63
  jQuery('#keywords').val(addMinus(keywords));
64
  });
65
 
66
+ jQuery('#tool_del_minus').on('click', function (event) {
67
  event.preventDefault();
68
  var keywords = jQuery('#keywords').val();
69
  jQuery('#keywords').val(delMinus(keywords));
70
  });
71
 
72
+ jQuery('#tool_upper_first').on('click', function (event) {
73
  event.preventDefault();
74
  var keywords = jQuery('#keywords').val();
75
  jQuery('#keywords').val(upperFirst(keywords));
79
  /**
80
  * Hot Trends
81
  */
82
+ jQuery("#trend_google").on('click', function () {
83
  jQuery("#trend_google").prop("disabled", true).addClass("ui-state-disabled");
84
  trend_google();
85
  jQuery('#trend_google').removeAttr('disabled').removeClass('ui-state-disabled');
86
  });
87
 
88
+ jQuery("#trend_goods").on('click', function () {
89
  jQuery("#trend_goods").prop("disabled", true).addClass("ui-state-disabled");
90
  amazon_trends();
91
  jQuery('#trend_goods').removeAttr('disabled').removeClass('ui-state-disabled');
92
  });
93
 
94
 
95
+ jQuery("#trend_keywords,#sug_keywords,#goods_keywords").on('change', function () {
96
  var opt = jQuery(this).children(":selected");
97
  add_keyword(opt.val());
98
  opt.remove();
res/js/prefill.js CHANGED
@@ -10,7 +10,7 @@ jQuery(document).ready(function ($) {
10
  updateProgress(0);
11
  getPostIds();
12
 
13
- jQuery('#start_prefill_begin').click(function () {
14
  if (cegg_in_action) {
15
  return false;
16
  }
@@ -36,7 +36,7 @@ jQuery(document).ready(function ($) {
36
  prefill();
37
  });
38
 
39
- jQuery('#start_prefill').click(function () {
40
  if (cegg_in_action) {
41
  return false;
42
  }
@@ -57,7 +57,7 @@ jQuery(document).ready(function ($) {
57
  prefill();
58
  });
59
 
60
- jQuery('#stop_prefill').click(function () {
61
  cegg_p_stop = 1;
62
  cegg_xxx.abort();
63
  jQuery('#start_prefill').prop('disabled', false);
@@ -68,7 +68,7 @@ jQuery(document).ready(function ($) {
68
  });
69
 
70
  jQuery(function () {
71
- jQuery('#keyword_source').change(function () {
72
  if (jQuery('#keyword_source').val() == '_custom_field') {
73
  jQuery('#custom_field').show();
74
  } else {
10
  updateProgress(0);
11
  getPostIds();
12
 
13
+ jQuery('#start_prefill_begin').on('click', function () {
14
  if (cegg_in_action) {
15
  return false;
16
  }
36
  prefill();
37
  });
38
 
39
+ jQuery('#start_prefill').on('click', function () {
40
  if (cegg_in_action) {
41
  return false;
42
  }
57
  prefill();
58
  });
59
 
60
+ jQuery('#stop_prefill').on('click', function () {
61
  cegg_p_stop = 1;
62
  cegg_xxx.abort();
63
  jQuery('#start_prefill').prop('disabled', false);
68
  });
69
 
70
  jQuery(function () {
71
+ jQuery('#keyword_source').on('change', function () {
72
  if (jQuery('#keyword_source').val() == '_custom_field') {
73
  jQuery('#custom_field').show();
74
  } else {
res/js/price_alert.js CHANGED
@@ -13,7 +13,7 @@ jQuery(document).ready(function ()
13
  });
14
  });
15
 
16
- jQuery(".cegg-price-alert-wrap form").submit(function (event)
17
  {
18
  event.preventDefault();
19
  var $form = jQuery(this);
13
  });
14
  });
15
 
16
+ jQuery(".cegg-price-alert-wrap form").on("submit", function (event)
17
  {
18
  event.preventDefault();
19
  var $form = jQuery(this);
res/logos/amazon-sa.png ADDED
Binary file
templates/block_offers_logo.php CHANGED
@@ -52,7 +52,7 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
52
  <div class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?></strike></div>
53
  <?php endif; ?>
54
  <?php if ($stock_status = TemplateHelper::getStockStatusStr($item)): ?>
55
- <div title="<?php echo \esc_attr(sprintf(__('Last updated on %s', 'content-egg-tpl'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
56
  <?php echo \esc_html($stock_status); ?>
57
  </div>
58
  <?php endif; ?>
@@ -61,27 +61,21 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
61
 
62
  <?php if (!empty($item['extra']['totalNew']) && $item['extra']['totalNew'] > 1): ?>
63
  <div class="cegg-font60 cegg-lineheight15">
64
- <?php echo $item['extra']['totalNew']; ?>
65
- <?php _e('new', 'content-egg-tpl'); ?>
66
- <?php if ($item['extra']['lowestNewPrice']): ?>
67
- <?php _e('from', 'content-egg-tpl'); ?> <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode']); ?>
68
- <?php endif; ?>
69
  </div>
70
  <?php endif; ?>
71
  <?php if (!empty($item['extra']['totalUsed'])): ?>
72
  <div class="cegg-font60 cegg-lineheight15">
73
- <?php echo $item['extra']['totalUsed']; ?>
74
- <?php _e('used', 'content-egg-tpl'); ?> <?php _e('from', 'content-egg-tpl'); ?>
75
- <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode']); ?>
76
  </div>
77
  <?php endif; ?>
78
 
79
  <?php if ($amazon_last_updated): ?>
80
- <div class="cegg-font60 cegg-lineheight15">
81
- <?php _e('as of', 'content-egg-tpl'); ?> <?php echo $amazon_last_updated; ?>
82
- <?php TemplateHelper::printAmazonDisclaimer(); ?>
83
- </div>
84
- <?php endif; ?>
85
  <?php endif; ?>
86
 
87
  </div>
@@ -90,6 +84,15 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
90
  <div class="cegg-btn-row">
91
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
92
  </div>
 
 
 
 
 
 
 
 
 
93
  </div>
94
  </div>
95
  <?php endforeach; ?>
52
  <div class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?></strike></div>
53
  <?php endif; ?>
54
  <?php if ($stock_status = TemplateHelper::getStockStatusStr($item)): ?>
55
+ <div title="<?php echo \esc_attr(sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
56
  <?php echo \esc_html($stock_status); ?>
57
  </div>
58
  <?php endif; ?>
61
 
62
  <?php if (!empty($item['extra']['totalNew']) && $item['extra']['totalNew'] > 1): ?>
63
  <div class="cegg-font60 cegg-lineheight15">
64
+ <?php echo sprintf(TemplateHelper::__('%d new from %s'), $item['extra']['totalNew'], TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode'])); ?>
 
 
 
 
65
  </div>
66
  <?php endif; ?>
67
  <?php if (!empty($item['extra']['totalUsed'])): ?>
68
  <div class="cegg-font60 cegg-lineheight15">
69
+ <?php echo sprintf(TemplateHelper::__('%d used from %s'), $item['extra']['totalUsed'], TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode'])); ?>
 
 
70
  </div>
71
  <?php endif; ?>
72
 
73
  <?php if ($amazon_last_updated): ?>
74
+ <div class="cegg-font60 cegg-lineheight15">
75
+ <?php echo sprintf(TemplateHelper::__('as of %s'), $amazon_last_updated); ?>
76
+ <?php TemplateHelper::printAmazonDisclaimer(); ?>
77
+ </div>
78
+ <?php endif; ?>
79
  <?php endif; ?>
80
 
81
  </div>
84
  <div class="cegg-btn-row">
85
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
86
  </div>
87
+ <?php if ($merchant = TemplateHelper::getMerchantName($item)): ?>
88
+ <div class="text-center">
89
+ <small class="text-muted title-case">
90
+ <?php echo \esc_html($merchant); ?>
91
+ <?php TemplateHelper::printShopInfo($item); ?>
92
+ </small>
93
+ </div>
94
+ <?php endif; ?>
95
+
96
  </div>
97
  </div>
98
  <?php endforeach; ?>
templates/block_offers_tile.php CHANGED
@@ -30,7 +30,7 @@ $col_size = ceil(12 / $cols);
30
 
31
  <div class="cegg-thumb">
32
  <?php if ($item['img']): ?>
33
- <img src="<?php echo \esc_attr($item['img']) ?>" alt="<?php echo \esc_attr($item['title']); ?>" />
34
  <?php endif; ?>
35
  </div>
36
 
30
 
31
  <div class="cegg-thumb">
32
  <?php if ($item['img']): ?>
33
+ <?php TemplateHelper::displayImage($item, 170, 170); ?>
34
  <?php endif; ?>
35
  </div>
36
 
templates/block_price_alert.php CHANGED
@@ -17,12 +17,12 @@ $all_items = TemplateHelper::sortAllByPrice($data);
17
  $item = $all_items[0];
18
  $module_id = $item['module_id'];
19
  if (!$title)
20
- $title = __('Set Alert for', 'content-egg-tpl') . ' ' . TextHelper::truncate($item['title'], 100) . ' - ' . TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']);
21
  ?>
22
 
23
  <div class="egg-container cegg-price-tracker-item">
24
  <div class="panel panel-default cegg-price-tracker-panel panel-warning">
25
- <div class="panel-heading"><i class="glyphicon glyphicon-bell" aria-hidden="true"></i> <?php _e('Create Your Free Price Drop Alert!', 'content-egg-tpl'); ?></div>
26
  <div class="panel-body">
27
  <?php $this->renderBlock('price_alert_inline', array('item' => $item, 'module_id' => $module_id, 'title' => $title)); ?>
28
  </div>
17
  $item = $all_items[0];
18
  $module_id = $item['module_id'];
19
  if (!$title)
20
+ $title = TemplateHelper::__('Set Alert for') . ' ' . TextHelper::truncate($item['title'], 100) . ' - ' . TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']);
21
  ?>
22
 
23
  <div class="egg-container cegg-price-tracker-item">
24
  <div class="panel panel-default cegg-price-tracker-panel panel-warning">
25
+ <div class="panel-heading"><?php TemplateHelper::_e('Create Your Free Price Drop Alert!'); ?></div>
26
  <div class="panel-body">
27
  <?php $this->renderBlock('price_alert_inline', array('item' => $item, 'module_id' => $module_id, 'title' => $title)); ?>
28
  </div>
templates/block_price_comparison.php CHANGED
@@ -26,7 +26,7 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
26
  <?php foreach ($all_items as $key => $item): ?>
27
  <tr>
28
  <td class="cegg-merhant_col">
29
- <a<?php TemplateHelper::printRel();?> target="_blank" href="<?php echo $item['url']; ?>">
30
  <?php $merhant_ico = TemplateHelper::getMerhantIconUrl($item, true); ?>
31
  <?php if ($merhant_ico): ?><img src="<?php echo esc_attr($merhant_ico); ?>" alt="<?php echo esc_attr($item['domain']); ?>" /><?php endif; ?>
32
  <?php if ($merhant = TemplateHelper::getMerhantName($item)): ?>
@@ -36,37 +36,33 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
36
  </td>
37
  <td class="cegg-price_col text-center">
38
  <?php if ($item['price']): ?>
39
- <a<?php TemplateHelper::printRel();?> target="_blank" href="<?php echo $item['url']; ?>">
40
  <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
41
  <?php endif; ?>
42
 
43
  <?php if (isset($item['stock_status']) && $item['stock_status'] == \ContentEgg\application\components\ContentProduct::STOCK_STATUS_OUT_OF_STOCK): ?>
44
- <div title="<?php echo \esc_attr(sprintf(__('Last updated on %s', 'content-egg-tpl'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-font60 cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
45
  <?php echo \esc_html(TemplateHelper::getStockStatusStr($item)); ?>
46
  </div>
47
  <?php endif; ?>
48
 
49
- <?php if (!empty($item['extra']['totalNew'])): ?>
50
  <div class="cegg-font60 cegg-lineheight15">
51
- <?php echo $item['extra']['totalNew']; ?>
52
- <?php _e('new', 'content-egg-tpl'); ?>
53
- <?php if ($item['extra']['lowestNewPrice']): ?>
54
- <?php _e('from', 'content-egg-tpl'); ?> <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode']); ?>
55
- <?php endif; ?>
56
  </div>
57
  <?php endif; ?>
58
  <?php if (!empty($item['extra']['totalUsed'])): ?>
59
  <div class="cegg-font60 cegg-lineheight15">
60
- <?php echo $item['extra']['totalUsed']; ?>
61
- <?php _e('used', 'content-egg-tpl'); ?> <?php _e('from', 'content-egg-tpl'); ?>
62
- <?php echo TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode']); ?>
63
  </div>
64
  <?php endif; ?>
 
 
65
  </a>
66
 
67
  </td>
68
- <td class="cegg-buttons_col" style="background-color:<?php echo TemplateHelper::getButtonColor();?>;">
69
- <a<?php TemplateHelper::printRel();?> target="_blank" href="<?php echo $item['url']; ?>">
70
  <?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?>
71
  </a>
72
  </td>
@@ -77,7 +73,10 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
77
  </tbody>
78
  </table>
79
  <?php if ($amazon_last_updated): ?>
80
- <div class="cegg-font60 cegg-lineheight15 text-right"><?php _e('Last Amazon price update was:', 'content-egg-tpl'); ?> <?php echo $amazon_last_updated; ?></div>
 
 
 
81
  <?php endif; ?>
82
  <div class="cegg-mb15"></div>
83
  </div>
26
  <?php foreach ($all_items as $key => $item): ?>
27
  <tr>
28
  <td class="cegg-merhant_col">
29
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
30
  <?php $merhant_ico = TemplateHelper::getMerhantIconUrl($item, true); ?>
31
  <?php if ($merhant_ico): ?><img src="<?php echo esc_attr($merhant_ico); ?>" alt="<?php echo esc_attr($item['domain']); ?>" /><?php endif; ?>
32
  <?php if ($merhant = TemplateHelper::getMerhantName($item)): ?>
36
  </td>
37
  <td class="cegg-price_col text-center">
38
  <?php if ($item['price']): ?>
39
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
40
  <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
41
  <?php endif; ?>
42
 
43
  <?php if (isset($item['stock_status']) && $item['stock_status'] == \ContentEgg\application\components\ContentProduct::STOCK_STATUS_OUT_OF_STOCK): ?>
44
+ <div title="<?php echo \esc_attr(sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($item['module_id'], $post_id))); ?>" class="cegg-font60 cegg-lineheight15 stock-status status-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>">
45
  <?php echo \esc_html(TemplateHelper::getStockStatusStr($item)); ?>
46
  </div>
47
  <?php endif; ?>
48
 
49
+ <?php if (!empty($item['extra']['totalNew']) && $item['extra']['totalNew'] > 1): ?>
50
  <div class="cegg-font60 cegg-lineheight15">
51
+ <?php echo sprintf(TemplateHelper::__('%d new from %s'), $item['extra']['totalNew'], TemplateHelper::formatPriceCurrency($item['extra']['lowestNewPrice'], $item['currencyCode'])); ?>
 
 
 
 
52
  </div>
53
  <?php endif; ?>
54
  <?php if (!empty($item['extra']['totalUsed'])): ?>
55
  <div class="cegg-font60 cegg-lineheight15">
56
+ <?php echo sprintf(TemplateHelper::__('%d used from %s'), $item['extra']['totalUsed'], TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode'])); ?>
 
 
57
  </div>
58
  <?php endif; ?>
59
+
60
+
61
  </a>
62
 
63
  </td>
64
+ <td class="cegg-buttons_col" style="background-color:<?php echo TemplateHelper::getButtonColor(); ?>;">
65
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
66
  <?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?>
67
  </a>
68
  </td>
73
  </tbody>
74
  </table>
75
  <?php if ($amazon_last_updated): ?>
76
+ <div class="cegg-font60 cegg-lineheight15 text-right">
77
+ <?php echo sprintf(TemplateHelper::__('Last Amazon price update was: %s'), $amazon_last_updated); ?>
78
+ <?php TemplateHelper::printAmazonDisclaimer(); ?>
79
+ </div>
80
  <?php endif; ?>
81
  <div class="cegg-mb15"></div>
82
  </div>
templates/block_price_comparison_card.php CHANGED
@@ -30,7 +30,7 @@ if (!$title)
30
  <div class="col-sm-6 text-center cegg-image-container cegg-mb20">
31
  <?php if ($item['img']): ?>
32
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
33
- <img src="<?php echo $item['img']; ?>" alt="<?php echo \esc_attr($item['title']); ?>" />
34
  </a>
35
  <?php endif; ?>
36
  </div>
@@ -52,7 +52,7 @@ if (!$title)
52
 
53
  <?php if ($amazon_last_updated): ?>
54
  <div class="cegg-font60 cegg-lineheight15 text-right">
55
- <?php _e('Last Amazon price update was:', 'content-egg-tpl'); ?> <?php echo $amazon_last_updated; ?>
56
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
57
  </div>
58
  <?php endif; ?>
30
  <div class="col-sm-6 text-center cegg-image-container cegg-mb20">
31
  <?php if ($item['img']): ?>
32
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
33
+ <?php TemplateHelper::displayImage($item, 350, 350); ?>
34
  </a>
35
  <?php endif; ?>
36
  </div>
52
 
53
  <?php if ($amazon_last_updated): ?>
54
  <div class="cegg-font60 cegg-lineheight15 text-right">
55
+ <?php echo sprintf(TemplateHelper::__('Last Amazon price update was: %s'), $amazon_last_updated); ?>
56
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
57
  </div>
58
  <?php endif; ?>
templates/block_price_history.php CHANGED
@@ -17,7 +17,7 @@ $all_items = TemplateHelper::sortAllByPrice($data);
17
  $item = $all_items[0];
18
  $module_id = $item['module_id'];
19
  if (!$title)
20
- $title = __('Price History for', 'content-egg-tpl') . ' ' . TextHelper::truncate($item['title'], 100);
21
  ?>
22
 
23
  <div class="egg-container">
17
  $item = $all_items[0];
18
  $module_id = $item['module_id'];
19
  if (!$title)
20
+ $title = TemplateHelper::__('Price History for') . ' ' . TextHelper::truncate($item['title'], 100);
21
  ?>
22
 
23
  <div class="egg-container">
templates/block_price_statistics.php CHANGED
@@ -28,7 +28,7 @@ else
28
 
29
  <div class="egg-container">
30
  <?php if ($title): ?>
31
- <h3><?php echo esc_html($title); ?></h3>
32
  <?php endif; ?>
33
 
34
  <div class="well-lg">
28
 
29
  <div class="egg-container">
30
  <?php if ($title): ?>
31
+ <h3><?php echo \esc_html($title); ?></h3>
32
  <?php endif; ?>
33
 
34
  <div class="well-lg">
templates/block_text_links.php CHANGED
@@ -36,7 +36,7 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
36
 
37
  <?php if ($amazon_last_updated): ?>
38
  <div class="cegg-font60 cegg-lineheight15 text-right">
39
- <?php _e('Last Amazon price update was:', 'content-egg-tpl'); ?> <?php echo $amazon_last_updated; ?>
40
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
41
  </div>
42
  <?php endif; ?>
36
 
37
  <?php if ($amazon_last_updated): ?>
38
  <div class="cegg-font60 cegg-lineheight15 text-right">
39
+ <?php echo sprintf(TemplateHelper::__('Last Amazon price update was: %s'), $amazon_last_updated); ?>
40
  <?php TemplateHelper::printAmazonDisclaimer(); ?>
41
  </div>
42
  <?php endif; ?>
templates/block_top_listing.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Name: Top listing
4
+ * Modules:
5
+ * Module Types: PRODUCT
6
+ *
7
+ */
8
+
9
+ use ContentEgg\application\helpers\TemplateHelper;
10
+
11
+ $all_items = TemplateHelper::mergeAll($data, $order);
12
+ $ratings = TemplateHelper::generateStaticRatings(count($all_items));
13
+ ?>
14
+
15
+
16
+
17
+ <div class="egg-container cegg-top-listing">
18
+ <?php if ($title): ?>
19
+ <h3><?php echo \esc_html($title); ?></h3>
20
+ <?php endif; ?>
21
+
22
+ <div class="egg-listcontainer">
23
+
24
+ <?php foreach ($all_items as $i => $item): ?>
25
+
26
+ <div class="row-products row">
27
+ <div class="col-md-2 col-sm-2 col-xs-3 cegg-image-cell">
28
+
29
+ <div class="cegg-position-container2">
30
+ <span class="cegg-position-text2"><?php echo (int) $i + 1; ?></span>
31
+ </div>
32
+
33
+ <?php if ($item['img']): ?>
34
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>">
35
+ <?php TemplateHelper::displayImage($item, 130, 100); ?>
36
+ </a>
37
+ <?php endif; ?>
38
+ </div>
39
+ <div class="col-md-6 col-sm-6 col-xs-6 cegg-desc-cell">
40
+
41
+ <?php if ($i == 0 && TemplateHelper::getChance($i)): ?>
42
+ <span class="label label-success">&check; <?php echo __('Best choice', 'content-egg-tpl'); ?></span>
43
+ <?php elseif ($i == 1 && TemplateHelper::getChance($i)): ?>
44
+ <span class="label label-success"><?php echo __('Recommended', 'content-egg-tpl'); ?></span>
45
+ <?php elseif ($i == 2 && TemplateHelper::getChance($i)): ?>
46
+ <span class="label label-success"><?php echo __('High quality', 'content-egg-tpl'); ?></span>
47
+ <?php endif; ?>
48
+ <div class="cegg-no-top-margin cegg-list-logo-title">
49
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo \esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
50
+ </div>
51
+ <div class="text-center cegg-mt10 visible-xs">
52
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
53
+ <?php if ($merchant = TemplateHelper::getMerhantName($item)): ?>
54
+ <small class="text-muted title-case"><?php echo \esc_html($merchant); ?></small>
55
+ <?php endif; ?>
56
+ </div>
57
+ </div>
58
+
59
+ <div class="col-md-2 col-sm-2 col-xs-3">
60
+ <?php TemplateHelper::printProgressRing($ratings[$i]); ?>
61
+
62
+ </div>
63
+
64
+ <div class="col-md-2 col-sm-2 col-xs-12 cegg-btn-cell hidden-xs">
65
+ <div class="cegg-btn-row">
66
+ <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
67
+ </div>
68
+ <?php if ($merchant = TemplateHelper::getMerhantName($item)): ?>
69
+ <div class="text-center">
70
+ <small class="text-muted title-case"><?php echo \esc_html($merchant); ?></small>
71
+ </div>
72
+ <?php endif; ?>
73
+
74
+ </div>
75
+ </div>
76
+
77
+
78
+
79
+ <?php endforeach; ?>
80
+
81
+ </div>
82
+ </div>
83
+
84
+
templates/wdgt_price_movers_grid.php CHANGED
@@ -57,7 +57,7 @@ $col_size = 12 / $cols;
57
  <div class="col-xs-2 cegg-product-discount">
58
  <span class="product-discount-value"><?php echo $item['_price_movers']['discount_percent']; ?><span class="product-discount-symbol">%</span></span>
59
  <div class="product-discount-off">
60
- <?php _e('OFF', 'content-egg-tpl'); ?>
61
  </div>
62
  </div>
63
  <?php endif; ?>
@@ -69,7 +69,7 @@ $col_size = 12 / $cols;
69
  <?php if ($item['_price_movers']['discount_value']): ?>
70
  <div class="text-muted"><strike title="<?php echo \esc_attr(TemplateHelper::getDaysAgo($item['_price_movers']['price_old_date'])); ?>"><?php echo TemplateHelper::formatPriceCurrency($item['_price_movers']['price_old'], $item['currencyCode']); ?></strike></div>
71
  <?php endif; ?>
72
- <span title="<?php echo \esc_attr(__('as of', 'content-egg-tpl') . ' ' . TemplateHelper::dateFormatFromGmt($item['last_update'])); ?>" class="cegg-price cegg-price-color"><?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?></span>
73
 
74
  <?php endif; ?>
75
 
57
  <div class="col-xs-2 cegg-product-discount">
58
  <span class="product-discount-value"><?php echo $item['_price_movers']['discount_percent']; ?><span class="product-discount-symbol">%</span></span>
59
  <div class="product-discount-off">
60
+ <?php TemplateHelper::_e('OFF'); ?>
61
  </div>
62
  </div>
63
  <?php endif; ?>
69
  <?php if ($item['_price_movers']['discount_value']): ?>
70
  <div class="text-muted"><strike title="<?php echo \esc_attr(TemplateHelper::getDaysAgo($item['_price_movers']['price_old_date'])); ?>"><?php echo TemplateHelper::formatPriceCurrency($item['_price_movers']['price_old'], $item['currencyCode']); ?></strike></div>
71
  <?php endif; ?>
72
+ <span title="<?php echo \esc_attr(sprintf(TemplateHelper::__('as of %s'), TemplateHelper::dateFormatFromGmt($item['last_update']))); ?>" class="cegg-price cegg-price-color"><?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?></span>
73
 
74
  <?php endif; ?>
75
 
templates/wdgt_price_movers_list.php CHANGED
@@ -5,7 +5,6 @@
5
  */
6
 
7
  use ContentEgg\application\helpers\TemplateHelper;
8
-
9
  ?>
10
 
11
 
@@ -15,7 +14,7 @@ use ContentEgg\application\helpers\TemplateHelper;
15
 
16
  <?php foreach ($items as $key => $item): ?>
17
 
18
- <div class="cegg-list-logo-title cegg-mt10<?php if ($is_shortcode) echo ' visible-xs';?> text-center">
19
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
20
  </div>
21
 
@@ -46,7 +45,7 @@ use ContentEgg\application\helpers\TemplateHelper;
46
 
47
  <?php if ($item['price']): ?>
48
 
49
- <div title="<?php echo \esc_attr(__('as of', 'content-egg-tpl') . ' ' . TemplateHelper::dateFormatFromGmt($item['last_update'])); ?>" class="cegg-price cegg-price-color cegg-price-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>"><?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?></div>
50
 
51
  <?php if ($item['_price_movers']['discount_value'] > 0): ?>
52
  <span class="text-success">
@@ -60,7 +59,7 @@ use ContentEgg\application\helpers\TemplateHelper;
60
  <div class="<?php if ($is_shortcode) echo 'col-md-2 col-sm-2 ';?>col-xs-12 cegg-btn-cell">
61
 
62
  <?php if ($item['_price_movers']['discount_percent'] > 0): ?>
63
- <div class="text-center product-discount-off"><?php echo $item['_price_movers']['discount_percent']; ?>% <?php _e('OFF', 'content-egg-tpl'); ?></div>
64
  <?php endif; ?>
65
 
66
  <div class="cegg-btn-row">
5
  */
6
 
7
  use ContentEgg\application\helpers\TemplateHelper;
 
8
  ?>
9
 
10
 
14
 
15
  <?php foreach ($items as $key => $item): ?>
16
 
17
+ <div class="cegg-list-logo-title cegg-mb5 cegg-mt10<?php if ($is_shortcode) echo ' visible-xs';?> text-center">
18
  <a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
19
  </div>
20
 
45
 
46
  <?php if ($item['price']): ?>
47
 
48
+ <div title="<?php echo \esc_attr(sprintf(TemplateHelper::__('as of %s'), TemplateHelper::dateFormatFromGmt($item['last_update']))); ?>" class="cegg-price cegg-price-color cegg-price-<?php echo \esc_attr(TemplateHelper::getStockStatusClass($item)); ?>"><?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?></div>
49
 
50
  <?php if ($item['_price_movers']['discount_value'] > 0): ?>
51
  <span class="text-success">
59
  <div class="<?php if ($is_shortcode) echo 'col-md-2 col-sm-2 ';?>col-xs-12 cegg-btn-cell">
60
 
61
  <?php if ($item['_price_movers']['discount_percent'] > 0): ?>
62
+ <div class="text-center product-discount-off"><?php echo $item['_price_movers']['discount_percent']; ?>% <?php TemplateHelper::_e('OFF'); ?></div>
63
  <?php endif; ?>
64
 
65
  <div class="cegg-btn-row">