Version Notes
Initial Release
Download this release
Release Info
Developer | joel tan |
Extension | Musho_Flipdefine |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/community/Musho/Flipdefine/Block/Monblock.php +269 -0
- app/code/community/Musho/Flipdefine/Block/Product/Abstract.php +651 -0
- app/code/community/Musho/Flipdefine/Block/Product/Compare/Abstract.php +57 -0
- app/code/community/Musho/Flipdefine/Block/Product/Compare/List.php +198 -0
- app/code/community/Musho/Flipdefine/Block/Product/Compare/Sidebar.php +124 -0
- app/code/community/Musho/Flipdefine/Block/Product/Gallery.php +150 -0
- app/code/community/Musho/Flipdefine/Block/Product/List.php +271 -0
- app/code/community/Musho/Flipdefine/Block/Product/List/Crosssell.php +101 -0
- app/code/community/Musho/Flipdefine/Block/Product/List/Promotion.php +41 -0
- app/code/community/Musho/Flipdefine/Block/Product/List/Random.php +51 -0
- app/code/community/Musho/Flipdefine/Block/Product/List/Related.php +95 -0
- app/code/community/Musho/Flipdefine/Block/Product/List/Toolbar.php +830 -0
- app/code/community/Musho/Flipdefine/Block/Product/List/Upsell.php +180 -0
- app/code/community/Musho/Flipdefine/Block/Product/New.php +162 -0
- app/code/community/Musho/Flipdefine/Block/Product/Price.php +191 -0
- app/code/community/Musho/Flipdefine/Block/Product/Price/Template.php +76 -0
- app/code/community/Musho/Flipdefine/Block/Product/Send.php +67 -0
- app/code/community/Musho/Flipdefine/Block/Product/View.php +273 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Abstract.php +50 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Additional.php +61 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Attributes.php +83 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Description.php +46 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Media.php +79 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Options.php +204 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Options/Abstract.php +177 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Date.php +231 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Default.php +39 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/File.php +53 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Select.php +153 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Text.php +48 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Price.php +47 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Tabs.php +68 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Type/Configurable.php +363 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Type/Grouped.php +61 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Type/Simple.php +36 -0
- app/code/community/Musho/Flipdefine/Block/Product/View/Type/Virtual.php +37 -0
- app/code/community/Musho/Flipdefine/Block/Product/Widget/Html/Pager.php +299 -0
- app/code/community/Musho/Flipdefine/Block/Product/Widget/Link.php +46 -0
- app/code/community/Musho/Flipdefine/Block/Product/Widget/New.php +204 -0
- app/code/community/Musho/Flipdefine/Block/Products.php +26 -0
- app/code/community/Musho/Flipdefine/controllers/Adminhtml/IndexController.php +12 -0
- app/code/community/Musho/Flipdefine/controllers/IndexController.php +1 -0
- app/code/community/Musho/Flipdefine/controllers/ProductController.php +10 -0
- app/code/community/Musho/Flipdefine/etc/config.xml +98 -0
- app/code/local/VF/EasyAjax/Controller/Varien/Router/Json.php +35 -0
- app/code/local/VF/EasyAjax/Model/Core.php +96 -0
- app/code/local/VF/EasyAjax/Model/Core/Message.php +43 -0
- app/code/local/VF/EasyAjax/Model/Core/Message/Collection.php +51 -0
- app/code/local/VF/EasyAjax/Model/Message/Storage.php +59 -0
- app/code/local/VF/EasyAjax/Model/Observer.php +55 -0
- app/code/local/VF/EasyAjax/Model/Response.php +178 -0
- app/code/local/VF/EasyAjax/etc/config.xml +86 -0
- app/design/frontend/base/default/layout/easy_ajax.xml +25 -0
- app/design/frontend/base/default/layout/flipdefine.xml +122 -0
- app/design/frontend/base/default/template/flipdefine/afficher.phtml +176 -0
- app/etc/modules/Musho_All.xml +9 -0
- app/etc/modules/VF_EasyAjax.xml +33 -0
- package.xml +18 -0
- skin/frontend/base/default/css/ajax_cart.css +1950 -0
- skin/frontend/base/default/css/local.css +4809 -0
- skin/frontend/base/default/images/ajax-loader.gif +0 -0
- skin/frontend/base/default/js/ajax_cart.js +230 -0
- skin/frontend/base/default/js/easy_ajax.js +55 -0
app/code/community/Musho/Flipdefine/Block/Monblock.php
ADDED
@@ -0,0 +1,269 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once 'Mage/Core/Block/Template.php';
|
3 |
+
class Musho_Flipdefine_Block_Monblock extends Mage_Core_Block_Template
|
4 |
+
{
|
5 |
+
protected $_finalPrice = array();
|
6 |
+
public function _prepareUrls(){
|
7 |
+
$this->_urls = array(
|
8 |
+
'base' => Mage::getBaseUrl('web'),
|
9 |
+
'baseSecure'=> Mage::getBaseUrl('web', true),
|
10 |
+
'current' => $this->getRequest()->getRequestUri()
|
11 |
+
);
|
12 |
+
|
13 |
+
$action = Mage::app()->getFrontController()->getAction();
|
14 |
+
if ($action) {
|
15 |
+
$this->addBodyClass($action->getFullActionName('-'));
|
16 |
+
}
|
17 |
+
|
18 |
+
$this->_beforeCacheUrl();
|
19 |
+
}
|
20 |
+
|
21 |
+
public function getBaseUrl()
|
22 |
+
{
|
23 |
+
return $this->_urls['base'];
|
24 |
+
}
|
25 |
+
|
26 |
+
public function getBaseSecureUrl()
|
27 |
+
{
|
28 |
+
return $this->_urls['baseSecure'];
|
29 |
+
}
|
30 |
+
|
31 |
+
public function getCurrentUrl()
|
32 |
+
{
|
33 |
+
return $this->_urls['current'];
|
34 |
+
}
|
35 |
+
|
36 |
+
|
37 |
+
|
38 |
+
public function getProduct(){
|
39 |
+
//if (!Mage::registry('product') && $this->getProductId()) {
|
40 |
+
//print_r("ProductNo: ".);
|
41 |
+
if($product = Mage::getModel('catalog/product')->load(Mage::registry('Productno'))){
|
42 |
+
Mage::register('product', $product);
|
43 |
+
return Mage::registry('product') ;
|
44 |
+
//json_encode(Mage::registry('product'));
|
45 |
+
}else{
|
46 |
+
Mage::logException($e);
|
47 |
+
$this->_forward('noRoute');
|
48 |
+
return false;
|
49 |
+
}
|
50 |
+
//}else{
|
51 |
+
//$product = Mage::getModel('catalog/product')->load(3);//->getData();
|
52 |
+
//Mage::register('product', $product);
|
53 |
+
//}
|
54 |
+
|
55 |
+
}
|
56 |
+
|
57 |
+
|
58 |
+
|
59 |
+
public function getPrice()
|
60 |
+
{
|
61 |
+
return $this->getProduct()->getPrice();
|
62 |
+
}
|
63 |
+
|
64 |
+
public function getFinalPrice()
|
65 |
+
{
|
66 |
+
if (!isset($this->_finalPrice[$this->getProduct()->getId()])) {
|
67 |
+
$this->_finalPrice[$this->getProduct()->getId()] = $this->getProduct()->getFinalPrice();
|
68 |
+
}
|
69 |
+
return $this->_finalPrice[$this->getProduct()->getId()];
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getPriceHtml($product)
|
73 |
+
{
|
74 |
+
$this->setTemplate('catalog/product/price.phtml');
|
75 |
+
$this->setProduct($product);
|
76 |
+
return $this->toHtml();
|
77 |
+
}
|
78 |
+
|
79 |
+
public function getProductDefaultQty($product = null)
|
80 |
+
{
|
81 |
+
if (!$product) {
|
82 |
+
$product = $this->getProduct();
|
83 |
+
}
|
84 |
+
|
85 |
+
$qty = $this->getMinimalQty($product);
|
86 |
+
$config = $product->getPreconfiguredValues();
|
87 |
+
$configQty = $config->getQty();
|
88 |
+
if ($configQty > $qty) {
|
89 |
+
$qty = $configQty;
|
90 |
+
}
|
91 |
+
|
92 |
+
return $qty;
|
93 |
+
}
|
94 |
+
|
95 |
+
|
96 |
+
public function getAddToCartUrl($product, $additional = array()){
|
97 |
+
if ($this->hasCustomAddToCartUrl()) {
|
98 |
+
return $this->getCustomAddToCartUrl();
|
99 |
+
}
|
100 |
+
|
101 |
+
if ($this->getRequest()->getParam('wishlist_next')) {
|
102 |
+
$additional['wishlist_next'] = 1;
|
103 |
+
}
|
104 |
+
|
105 |
+
$addUrlKey = Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED;
|
106 |
+
$addUrlValue = Mage::getUrl('*/*/*', array('_use_rewrite' => true, '_current' => true));
|
107 |
+
$additional[$addUrlKey] = Mage::helper('core')->urlEncode($addUrlValue);
|
108 |
+
|
109 |
+
return $this->helper('checkout/cart')->getAddUrl($product, $additional);
|
110 |
+
}
|
111 |
+
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Retrieves url for form submitting:
|
115 |
+
* some objects can use setSubmitRouteData() to set route and params for form submitting,
|
116 |
+
* otherwise default url will be used
|
117 |
+
*
|
118 |
+
* @param Mage_Catalog_Model_Product $product
|
119 |
+
* @param array $additional
|
120 |
+
* @return string
|
121 |
+
*/
|
122 |
+
public function getSubmitUrl($product, $additional = array())
|
123 |
+
{
|
124 |
+
$submitRouteData = $this->getData('submit_route_data');
|
125 |
+
if ($submitRouteData) {
|
126 |
+
$route = $submitRouteData['route'];
|
127 |
+
$params = isset($submitRouteData['params']) ? $submitRouteData['params'] : array();
|
128 |
+
$submitUrl = $this->getUrl($route, array_merge($params, $additional));
|
129 |
+
} else {
|
130 |
+
$submitUrl = $this->getAddToCartUrl($product, $additional);
|
131 |
+
}
|
132 |
+
return $submitUrl;
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Return link to Add to Wishlist
|
137 |
+
*
|
138 |
+
* @param Mage_Catalog_Model_Product $product
|
139 |
+
* @return string
|
140 |
+
*/
|
141 |
+
public function getAddToWishlistUrl($product)
|
142 |
+
{
|
143 |
+
return $this->helper('wishlist')->getAddUrl($product);
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Retrieve Add Product to Compare Products List URL
|
148 |
+
*
|
149 |
+
* @param Mage_Catalog_Model_Product $product
|
150 |
+
* @return string
|
151 |
+
*/
|
152 |
+
public function getAddToCompareUrl($product)
|
153 |
+
{
|
154 |
+
return $this->helper('catalog/product_compare')->getAddUrl($product);
|
155 |
+
}
|
156 |
+
|
157 |
+
public function hasOptions()
|
158 |
+
{
|
159 |
+
if ($this->getProduct()->getTypeInstance(true)->hasOptions($this->getProduct())) {
|
160 |
+
return true;
|
161 |
+
}
|
162 |
+
return false;
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Check if product has required options
|
167 |
+
*
|
168 |
+
* @return bool
|
169 |
+
*/
|
170 |
+
public function hasRequiredOptions()
|
171 |
+
{
|
172 |
+
return $this->getProduct()->getTypeInstance(true)->hasRequiredOptions($this->getProduct());
|
173 |
+
}
|
174 |
+
/**
|
175 |
+
* Gets minimal sales quantity
|
176 |
+
*
|
177 |
+
* @param Mage_Catalog_Model_Product $product
|
178 |
+
* @return int|null
|
179 |
+
*/
|
180 |
+
public function getMinimalQty($product)
|
181 |
+
{
|
182 |
+
$stockItem = $product->getStockItem();
|
183 |
+
if ($stockItem) {
|
184 |
+
return ($stockItem->getMinSaleQty()
|
185 |
+
&& $stockItem->getMinSaleQty() > 0 ? $stockItem->getMinSaleQty() * 1 : null);
|
186 |
+
}
|
187 |
+
return null;
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Get JSON encoded configuration array which can be used for JS dynamic
|
192 |
+
* price calculation depending on product options
|
193 |
+
*
|
194 |
+
* @return string
|
195 |
+
*/
|
196 |
+
public function getJsonConfig()
|
197 |
+
{
|
198 |
+
$config = array();
|
199 |
+
if (!$this->hasOptions()) {
|
200 |
+
return Mage::helper('core')->jsonEncode($config);
|
201 |
+
}
|
202 |
+
|
203 |
+
$_request = Mage::getSingleton('tax/calculation')->getRateRequest(false, false, false);
|
204 |
+
/* @var $product Mage_Catalog_Model_Product */
|
205 |
+
$product = $this->getProduct();
|
206 |
+
$_request->setProductClassId($product->getTaxClassId());
|
207 |
+
$defaultTax = Mage::getSingleton('tax/calculation')->getRate($_request);
|
208 |
+
|
209 |
+
$_request = Mage::getSingleton('tax/calculation')->getRateRequest();
|
210 |
+
$_request->setProductClassId($product->getTaxClassId());
|
211 |
+
$currentTax = Mage::getSingleton('tax/calculation')->getRate($_request);
|
212 |
+
|
213 |
+
$_regularPrice = $product->getPrice();
|
214 |
+
$_finalPrice = $product->getFinalPrice();
|
215 |
+
$_priceInclTax = Mage::helper('tax')->getPrice($product, $_finalPrice, true);
|
216 |
+
$_priceExclTax = Mage::helper('tax')->getPrice($product, $_finalPrice);
|
217 |
+
$_tierPrices = array();
|
218 |
+
$_tierPricesInclTax = array();
|
219 |
+
foreach ($product->getTierPrice() as $tierPrice) {
|
220 |
+
$_tierPrices[] = Mage::helper('core')->currency($tierPrice['website_price'], false, false);
|
221 |
+
$_tierPricesInclTax[] = Mage::helper('core')->currency(
|
222 |
+
Mage::helper('tax')->getPrice($product, (int)$tierPrice['website_price'], true),
|
223 |
+
false, false);
|
224 |
+
}
|
225 |
+
$config = array(
|
226 |
+
'productId' => $product->getId(),
|
227 |
+
'priceFormat' => Mage::app()->getLocale()->getJsPriceFormat(),
|
228 |
+
'includeTax' => Mage::helper('tax')->priceIncludesTax() ? 'true' : 'false',
|
229 |
+
'showIncludeTax' => Mage::helper('tax')->displayPriceIncludingTax(),
|
230 |
+
'showBothPrices' => Mage::helper('tax')->displayBothPrices(),
|
231 |
+
'productPrice' => Mage::helper('core')->currency($_finalPrice, false, false),
|
232 |
+
'productOldPrice' => Mage::helper('core')->currency($_regularPrice, false, false),
|
233 |
+
'priceInclTax' => Mage::helper('core')->currency($_priceInclTax, false, false),
|
234 |
+
'priceExclTax' => Mage::helper('core')->currency($_priceExclTax, false, false),
|
235 |
+
/**
|
236 |
+
* @var skipCalculate
|
237 |
+
* @deprecated after 1.5.1.0
|
238 |
+
*/
|
239 |
+
'skipCalculate' => ($_priceExclTax != $_priceInclTax ? 0 : 1),
|
240 |
+
'defaultTax' => $defaultTax,
|
241 |
+
'currentTax' => $currentTax,
|
242 |
+
'idSuffix' => '_clone',
|
243 |
+
'oldPlusDisposition' => 0,
|
244 |
+
'plusDisposition' => 0,
|
245 |
+
'plusDispositionTax' => 0,
|
246 |
+
'oldMinusDisposition' => 0,
|
247 |
+
'minusDisposition' => 0,
|
248 |
+
'tierPrices' => $_tierPrices,
|
249 |
+
'tierPricesInclTax' => $_tierPricesInclTax,
|
250 |
+
);
|
251 |
+
|
252 |
+
$responseObject = new Varien_Object();
|
253 |
+
Mage::dispatchEvent('catalog_product_view_config', array('response_object' => $responseObject));
|
254 |
+
if (is_array($responseObject->getAdditionalOptions())) {
|
255 |
+
foreach ($responseObject->getAdditionalOptions() as $option => $value) {
|
256 |
+
$config[$option] = $value;
|
257 |
+
}
|
258 |
+
}
|
259 |
+
|
260 |
+
return Mage::helper('core')->jsonEncode($config);
|
261 |
+
}
|
262 |
+
|
263 |
+
|
264 |
+
|
265 |
+
|
266 |
+
|
267 |
+
}
|
268 |
+
|
269 |
+
?>
|
app/code/community/Musho/Flipdefine/Block/Product/Abstract.php
ADDED
@@ -0,0 +1,651 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog Product Abstract Block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
abstract class Musho_Flipdefine_Block_Product_Abstract extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Price block array
|
39 |
+
*
|
40 |
+
* @var array
|
41 |
+
*/
|
42 |
+
protected $_priceBlock = array();
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Default price block
|
46 |
+
*
|
47 |
+
* @var string
|
48 |
+
*/
|
49 |
+
protected $_block = 'catalog/product_price';
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Price template
|
53 |
+
*
|
54 |
+
* @var string
|
55 |
+
*/
|
56 |
+
protected $_priceBlockDefaultTemplate = 'catalog/product/price.phtml';
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Tier price template
|
60 |
+
*
|
61 |
+
* @var string
|
62 |
+
*/
|
63 |
+
protected $_tierPriceDefaultTemplate = 'catalog/product/view/tierprices.phtml';
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Price types
|
67 |
+
*
|
68 |
+
* @var array
|
69 |
+
*/
|
70 |
+
protected $_priceBlockTypes = array();
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Flag which allow/disallow to use link for as low as price
|
74 |
+
*
|
75 |
+
* @var bool
|
76 |
+
*/
|
77 |
+
protected $_useLinkForAsLowAs = true;
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Review block instance
|
81 |
+
*
|
82 |
+
* @var null|Mage_Review_Block_Helper
|
83 |
+
*/
|
84 |
+
protected $_reviewsHelperBlock;
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Default product amount per row
|
88 |
+
*
|
89 |
+
* @var int
|
90 |
+
*/
|
91 |
+
protected $_defaultColumnCount = 3;
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Product amount per row depending on custom page layout of category
|
95 |
+
*
|
96 |
+
* @var array
|
97 |
+
*/
|
98 |
+
protected $_columnCountLayoutDepend = array();
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Default MAP renderer type
|
102 |
+
*
|
103 |
+
* @var string
|
104 |
+
*/
|
105 |
+
protected $_mapRenderer = 'msrp';
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Retrieve url for add product to cart
|
109 |
+
* Will return product view page URL if product has required options
|
110 |
+
*
|
111 |
+
* @param Mage_Catalog_Model_Product $product
|
112 |
+
* @param array $additional
|
113 |
+
* @return string
|
114 |
+
*/
|
115 |
+
public function getAddToCartUrl($product, $additional = array())
|
116 |
+
{
|
117 |
+
if (!$product->getTypeInstance(true)->hasRequiredOptions($product)) {
|
118 |
+
return $this->helper('checkout/cart')->getAddUrl($product, $additional);
|
119 |
+
}
|
120 |
+
$additional = array_merge(
|
121 |
+
$additional,
|
122 |
+
array(Mage_Core_Model_Url::FORM_KEY => $this->_getSingletonModel('core/session')->getFormKey())
|
123 |
+
);
|
124 |
+
if (!isset($additional['_escape'])) {
|
125 |
+
$additional['_escape'] = true;
|
126 |
+
}
|
127 |
+
if (!isset($additional['_query'])) {
|
128 |
+
$additional['_query'] = array();
|
129 |
+
}
|
130 |
+
$additional['_query']['options'] = 'cart';
|
131 |
+
return $this->getProductUrl($product, $additional);
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Return model instance
|
136 |
+
*
|
137 |
+
* @param string $className
|
138 |
+
* @param array $arguments
|
139 |
+
* @return Mage_Core_Model_Abstract
|
140 |
+
*/
|
141 |
+
protected function _getSingletonModel($className, $arguments = array())
|
142 |
+
{
|
143 |
+
return Mage::getSingleton($className, $arguments);
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Retrieves url for form submitting:
|
148 |
+
* some objects can use setSubmitRouteData() to set route and params for form submitting,
|
149 |
+
* otherwise default url will be used
|
150 |
+
*
|
151 |
+
* @param Mage_Catalog_Model_Product $product
|
152 |
+
* @param array $additional
|
153 |
+
* @return string
|
154 |
+
*/
|
155 |
+
public function getSubmitUrl($product, $additional = array())
|
156 |
+
{
|
157 |
+
$submitRouteData = $this->getData('submit_route_data');
|
158 |
+
if ($submitRouteData) {
|
159 |
+
$route = $submitRouteData['route'];
|
160 |
+
$params = isset($submitRouteData['params']) ? $submitRouteData['params'] : array();
|
161 |
+
$submitUrl = $this->getUrl($route, array_merge($params, $additional));
|
162 |
+
} else {
|
163 |
+
$submitUrl = $this->getAddToCartUrl($product, $additional);
|
164 |
+
}
|
165 |
+
return $submitUrl;
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Return link to Add to Wishlist
|
170 |
+
*
|
171 |
+
* @param Mage_Catalog_Model_Product $product
|
172 |
+
* @return string
|
173 |
+
*/
|
174 |
+
public function getAddToWishlistUrl($product)
|
175 |
+
{
|
176 |
+
return $this->helper('wishlist')->getAddUrl($product);
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Retrieve Add Product to Compare Products List URL
|
181 |
+
*
|
182 |
+
* @param Mage_Catalog_Model_Product $product
|
183 |
+
* @return string
|
184 |
+
*/
|
185 |
+
public function getAddToCompareUrl($product)
|
186 |
+
{
|
187 |
+
return $this->helper('catalog/product_compare')->getAddUrl($product);
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Gets minimal sales quantity
|
192 |
+
*
|
193 |
+
* @param Mage_Catalog_Model_Product $product
|
194 |
+
* @return int|null
|
195 |
+
*/
|
196 |
+
public function getMinimalQty($product)
|
197 |
+
{
|
198 |
+
$stockItem = $product->getStockItem();
|
199 |
+
if ($stockItem) {
|
200 |
+
return ($stockItem->getMinSaleQty()
|
201 |
+
&& $stockItem->getMinSaleQty() > 0 ? $stockItem->getMinSaleQty() * 1 : null);
|
202 |
+
}
|
203 |
+
return null;
|
204 |
+
}
|
205 |
+
|
206 |
+
/**
|
207 |
+
* Return price block
|
208 |
+
*
|
209 |
+
* @param string $productTypeId
|
210 |
+
* @return mixed
|
211 |
+
*/
|
212 |
+
protected function _getPriceBlock($productTypeId)
|
213 |
+
{
|
214 |
+
if (!isset($this->_priceBlock[$productTypeId])) {
|
215 |
+
$block = $this->_block;
|
216 |
+
if (isset($this->_priceBlockTypes[$productTypeId])) {
|
217 |
+
if ($this->_priceBlockTypes[$productTypeId]['block'] != '') {
|
218 |
+
$block = $this->_priceBlockTypes[$productTypeId]['block'];
|
219 |
+
}
|
220 |
+
}
|
221 |
+
$this->_priceBlock[$productTypeId] = $this->getLayout()->createBlock($block);
|
222 |
+
}
|
223 |
+
return $this->_priceBlock[$productTypeId];
|
224 |
+
}
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Return Block template
|
228 |
+
*
|
229 |
+
* @param string $productTypeId
|
230 |
+
* @return string
|
231 |
+
*/
|
232 |
+
protected function _getPriceBlockTemplate($productTypeId)
|
233 |
+
{
|
234 |
+
if (isset($this->_priceBlockTypes[$productTypeId])) {
|
235 |
+
if ($this->_priceBlockTypes[$productTypeId]['template'] != '') {
|
236 |
+
return $this->_priceBlockTypes[$productTypeId]['template'];
|
237 |
+
}
|
238 |
+
}
|
239 |
+
return $this->_priceBlockDefaultTemplate;
|
240 |
+
}
|
241 |
+
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Prepares and returns block to render some product type
|
245 |
+
*
|
246 |
+
* @param string $productType
|
247 |
+
* @return Mage_Core_Block_Template
|
248 |
+
*/
|
249 |
+
public function _preparePriceRenderer($productType)
|
250 |
+
{
|
251 |
+
return $this->_getPriceBlock($productType)
|
252 |
+
->setTemplate($this->_getPriceBlockTemplate($productType))
|
253 |
+
->setUseLinkForAsLowAs($this->_useLinkForAsLowAs);
|
254 |
+
}
|
255 |
+
|
256 |
+
/**
|
257 |
+
* Returns product price block html
|
258 |
+
*
|
259 |
+
* @param Mage_Catalog_Model_Product $product
|
260 |
+
* @param boolean $displayMinimalPrice
|
261 |
+
* @param string $idSuffix
|
262 |
+
* @return string
|
263 |
+
*/
|
264 |
+
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
|
265 |
+
{
|
266 |
+
$type_id = $product->getTypeId();
|
267 |
+
if (Mage::helper('catalog')->canApplyMsrp($product)) {
|
268 |
+
$realPriceHtml = $this->_preparePriceRenderer($type_id)
|
269 |
+
->setProduct($product)
|
270 |
+
->setDisplayMinimalPrice($displayMinimalPrice)
|
271 |
+
->setIdSuffix($idSuffix)
|
272 |
+
->toHtml();
|
273 |
+
$product->setAddToCartUrl($this->getAddToCartUrl($product));
|
274 |
+
$product->setRealPriceHtml($realPriceHtml);
|
275 |
+
$type_id = $this->_mapRenderer;
|
276 |
+
}
|
277 |
+
|
278 |
+
return $this->_preparePriceRenderer($type_id)
|
279 |
+
->setProduct($product)
|
280 |
+
->setDisplayMinimalPrice($displayMinimalPrice)
|
281 |
+
->setIdSuffix($idSuffix)
|
282 |
+
->toHtml();
|
283 |
+
}
|
284 |
+
|
285 |
+
/**
|
286 |
+
* Adding customized price template for product type
|
287 |
+
*
|
288 |
+
* @param string $type
|
289 |
+
* @param string $block
|
290 |
+
* @param string $template
|
291 |
+
*/
|
292 |
+
public function addPriceBlockType($type, $block = '', $template = '')
|
293 |
+
{
|
294 |
+
if ($type) {
|
295 |
+
$this->_priceBlockTypes[$type] = array(
|
296 |
+
'block' => $block,
|
297 |
+
'template' => $template
|
298 |
+
);
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
/**
|
303 |
+
* Get product reviews summary
|
304 |
+
*
|
305 |
+
* @param Mage_Catalog_Model_Product $product
|
306 |
+
* @param bool $templateType
|
307 |
+
* @param bool $displayIfNoReviews
|
308 |
+
* @return string
|
309 |
+
*/
|
310 |
+
public function getReviewsSummaryHtml(Mage_Catalog_Model_Product $product, $templateType = false,
|
311 |
+
$displayIfNoReviews = false)
|
312 |
+
{
|
313 |
+
if ($this->_initReviewsHelperBlock()) {
|
314 |
+
return $this->_reviewsHelperBlock->getSummaryHtml($product, $templateType, $displayIfNoReviews);
|
315 |
+
}
|
316 |
+
|
317 |
+
return '';
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Add/replace reviews summary template by type
|
322 |
+
*
|
323 |
+
* @param string $type
|
324 |
+
* @param string $template
|
325 |
+
* @return string
|
326 |
+
*/
|
327 |
+
public function addReviewSummaryTemplate($type, $template)
|
328 |
+
{
|
329 |
+
if ($this->_initReviewsHelperBlock()) {
|
330 |
+
$this->_reviewsHelperBlock->addTemplate($type, $template);
|
331 |
+
}
|
332 |
+
|
333 |
+
return '';
|
334 |
+
}
|
335 |
+
|
336 |
+
/**
|
337 |
+
* Create reviews summary helper block once
|
338 |
+
*
|
339 |
+
* @return boolean
|
340 |
+
*/
|
341 |
+
protected function _initReviewsHelperBlock()
|
342 |
+
{
|
343 |
+
if (!$this->_reviewsHelperBlock) {
|
344 |
+
if (!Mage::helper('catalog')->isModuleEnabled('Mage_Review')) {
|
345 |
+
return false;
|
346 |
+
} else {
|
347 |
+
$this->_reviewsHelperBlock = $this->getLayout()->createBlock('review/helper');
|
348 |
+
}
|
349 |
+
}
|
350 |
+
|
351 |
+
return true;
|
352 |
+
}
|
353 |
+
|
354 |
+
/**
|
355 |
+
* Retrieve currently viewed product object
|
356 |
+
*
|
357 |
+
* @return Mage_Catalog_Model_Product
|
358 |
+
*/
|
359 |
+
public function getProduct()
|
360 |
+
{
|
361 |
+
if (!$this->hasData('product')) {
|
362 |
+
$this->setData('product', Mage::registry('product'));
|
363 |
+
}
|
364 |
+
return $this->getData('product');
|
365 |
+
}
|
366 |
+
|
367 |
+
/**
|
368 |
+
* Return tier price template
|
369 |
+
*
|
370 |
+
* @return mixed|string
|
371 |
+
*/
|
372 |
+
public function getTierPriceTemplate()
|
373 |
+
{
|
374 |
+
if (!$this->hasData('tier_price_template')) {
|
375 |
+
return $this->_tierPriceDefaultTemplate;
|
376 |
+
}
|
377 |
+
|
378 |
+
return $this->getData('tier_price_template');
|
379 |
+
}
|
380 |
+
/**
|
381 |
+
* Returns product tier price block html
|
382 |
+
*
|
383 |
+
* @param Mage_Catalog_Model_Product $product
|
384 |
+
* @return string
|
385 |
+
*/
|
386 |
+
public function getTierPriceHtml($product = null)
|
387 |
+
{
|
388 |
+
if (is_null($product)) {
|
389 |
+
$product = $this->getProduct();
|
390 |
+
}
|
391 |
+
return $this->_getPriceBlock($product->getTypeId())
|
392 |
+
->setTemplate($this->getTierPriceTemplate())
|
393 |
+
->setProduct($product)
|
394 |
+
->setInGrouped($this->getProduct()->isGrouped())
|
395 |
+
->toHtml();
|
396 |
+
}
|
397 |
+
|
398 |
+
/**
|
399 |
+
* Get tier prices (formatted)
|
400 |
+
*
|
401 |
+
* @param Mage_Catalog_Model_Product $product
|
402 |
+
* @return array
|
403 |
+
*/
|
404 |
+
public function getTierPrices($product = null)
|
405 |
+
{
|
406 |
+
if (is_null($product)) {
|
407 |
+
$product = $this->getProduct();
|
408 |
+
}
|
409 |
+
$prices = $product->getFormatedTierPrice();
|
410 |
+
|
411 |
+
$res = array();
|
412 |
+
if (is_array($prices)) {
|
413 |
+
foreach ($prices as $price) {
|
414 |
+
$price['price_qty'] = $price['price_qty'] * 1;
|
415 |
+
|
416 |
+
$_productPrice = $product->getPrice();
|
417 |
+
if ($_productPrice != $product->getFinalPrice()) {
|
418 |
+
$_productPrice = $product->getFinalPrice();
|
419 |
+
}
|
420 |
+
|
421 |
+
// Group price must be used for percent calculation if it is lower
|
422 |
+
$groupPrice = $product->getGroupPrice();
|
423 |
+
if ($_productPrice > $groupPrice) {
|
424 |
+
$_productPrice = $groupPrice;
|
425 |
+
}
|
426 |
+
|
427 |
+
if ($price['price'] < $_productPrice) {
|
428 |
+
$price['savePercent'] = ceil(100 - ((100 / $_productPrice) * $price['price']));
|
429 |
+
|
430 |
+
$tierPrice = Mage::app()->getStore()->convertPrice(
|
431 |
+
Mage::helper('tax')->getPrice($product, $price['website_price'])
|
432 |
+
);
|
433 |
+
$price['formated_price'] = Mage::app()->getStore()->formatPrice($tierPrice);
|
434 |
+
$price['formated_price_incl_tax'] = Mage::app()->getStore()->formatPrice(
|
435 |
+
Mage::app()->getStore()->convertPrice(
|
436 |
+
Mage::helper('tax')->getPrice($product, $price['website_price'], true)
|
437 |
+
)
|
438 |
+
);
|
439 |
+
|
440 |
+
if (Mage::helper('catalog')->canApplyMsrp($product)) {
|
441 |
+
$oldPrice = $product->getFinalPrice();
|
442 |
+
$product->setPriceCalculation(false);
|
443 |
+
$product->setPrice($tierPrice);
|
444 |
+
$product->setFinalPrice($tierPrice);
|
445 |
+
|
446 |
+
$this->getPriceHtml($product);
|
447 |
+
$product->setPriceCalculation(true);
|
448 |
+
|
449 |
+
$price['real_price_html'] = $product->getRealPriceHtml();
|
450 |
+
$product->setFinalPrice($oldPrice);
|
451 |
+
}
|
452 |
+
|
453 |
+
$res[] = $price;
|
454 |
+
}
|
455 |
+
}
|
456 |
+
}
|
457 |
+
|
458 |
+
return $res;
|
459 |
+
}
|
460 |
+
|
461 |
+
/**
|
462 |
+
* Add all attributes and apply pricing logic to products collection
|
463 |
+
* to get correct values in different products lists.
|
464 |
+
* E.g. crosssells, upsells, new products, recently viewed
|
465 |
+
*
|
466 |
+
* @param Mage_Catalog_Model_Resource_Product_Collection $collection
|
467 |
+
* @return Mage_Catalog_Model_Resource_Product_Collection
|
468 |
+
*/
|
469 |
+
protected function _addProductAttributesAndPrices(Mage_Catalog_Model_Resource_Product_Collection $collection)
|
470 |
+
{
|
471 |
+
return $collection
|
472 |
+
->addMinimalPrice()
|
473 |
+
->addFinalPrice()
|
474 |
+
->addTaxPercents()
|
475 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
476 |
+
->addUrlRewrite();
|
477 |
+
}
|
478 |
+
|
479 |
+
/**
|
480 |
+
* Retrieve given media attribute label or product name if no label
|
481 |
+
*
|
482 |
+
* @param Mage_Catalog_Model_Product $product
|
483 |
+
* @param string $mediaAttributeCode
|
484 |
+
*
|
485 |
+
* @return string
|
486 |
+
*/
|
487 |
+
public function getImageLabel($product = null, $mediaAttributeCode = 'image')
|
488 |
+
{
|
489 |
+
if (is_null($product)) {
|
490 |
+
$product = $this->getProduct();
|
491 |
+
}
|
492 |
+
|
493 |
+
$label = $product->getData($mediaAttributeCode . '_label');
|
494 |
+
if (empty($label)) {
|
495 |
+
$label = $product->getName();
|
496 |
+
}
|
497 |
+
|
498 |
+
return $label;
|
499 |
+
}
|
500 |
+
|
501 |
+
/**
|
502 |
+
* Retrieve Product URL using UrlDataObject
|
503 |
+
*
|
504 |
+
* @param Mage_Catalog_Model_Product $product
|
505 |
+
* @param array $additional the route params
|
506 |
+
* @return string
|
507 |
+
*/
|
508 |
+
public function getProductUrl($product, $additional = array())
|
509 |
+
{
|
510 |
+
if ($this->hasProductUrl($product)) {
|
511 |
+
if (!isset($additional['_escape'])) {
|
512 |
+
$additional['_escape'] = true;
|
513 |
+
}
|
514 |
+
return $product->getUrlModel()->getUrl($product, $additional);
|
515 |
+
}
|
516 |
+
return '#';
|
517 |
+
}
|
518 |
+
|
519 |
+
/**
|
520 |
+
* Check Product has URL
|
521 |
+
*
|
522 |
+
* @param Mage_Catalog_Model_Product $product
|
523 |
+
* @return bool
|
524 |
+
*
|
525 |
+
*/
|
526 |
+
public function hasProductUrl($product)
|
527 |
+
{
|
528 |
+
if ($product->getVisibleInSiteVisibilities()) {
|
529 |
+
return true;
|
530 |
+
}
|
531 |
+
return false;
|
532 |
+
}
|
533 |
+
|
534 |
+
/**
|
535 |
+
* Retrieve product amount per row
|
536 |
+
*
|
537 |
+
* @return int
|
538 |
+
*/
|
539 |
+
public function getColumnCount()
|
540 |
+
{
|
541 |
+
if (!$this->_getData('column_count')) {
|
542 |
+
$pageLayout = $this->getPageLayout();
|
543 |
+
if ($pageLayout && $this->getColumnCountLayoutDepend($pageLayout->getCode())) {
|
544 |
+
$this->setData(
|
545 |
+
'column_count',
|
546 |
+
$this->getColumnCountLayoutDepend($pageLayout->getCode())
|
547 |
+
);
|
548 |
+
} else {
|
549 |
+
$this->setData('column_count', $this->_defaultColumnCount);
|
550 |
+
}
|
551 |
+
}
|
552 |
+
|
553 |
+
return (int) $this->_getData('column_count');
|
554 |
+
}
|
555 |
+
|
556 |
+
/**
|
557 |
+
* Add row size depends on page layout
|
558 |
+
*
|
559 |
+
* @param string $pageLayout
|
560 |
+
* @param int $columnCount
|
561 |
+
* @return Mage_Catalog_Block_Product_List
|
562 |
+
*/
|
563 |
+
public function addColumnCountLayoutDepend($pageLayout, $columnCount)
|
564 |
+
{
|
565 |
+
$this->_columnCountLayoutDepend[$pageLayout] = $columnCount;
|
566 |
+
return $this;
|
567 |
+
}
|
568 |
+
|
569 |
+
/**
|
570 |
+
* Remove row size depends on page layout
|
571 |
+
*
|
572 |
+
* @param string $pageLayout
|
573 |
+
* @return Mage_Catalog_Block_Product_List
|
574 |
+
*/
|
575 |
+
public function removeColumnCountLayoutDepend($pageLayout)
|
576 |
+
{
|
577 |
+
if (isset($this->_columnCountLayoutDepend[$pageLayout])) {
|
578 |
+
unset($this->_columnCountLayoutDepend[$pageLayout]);
|
579 |
+
}
|
580 |
+
|
581 |
+
return $this;
|
582 |
+
}
|
583 |
+
|
584 |
+
/**
|
585 |
+
* Retrieve row size depends on page layout
|
586 |
+
*
|
587 |
+
* @param string $pageLayout
|
588 |
+
* @return int|boolean
|
589 |
+
*/
|
590 |
+
public function getColumnCountLayoutDepend($pageLayout)
|
591 |
+
{
|
592 |
+
if (isset($this->_columnCountLayoutDepend[$pageLayout])) {
|
593 |
+
return $this->_columnCountLayoutDepend[$pageLayout];
|
594 |
+
}
|
595 |
+
|
596 |
+
return false;
|
597 |
+
}
|
598 |
+
|
599 |
+
/**
|
600 |
+
* Retrieve current page layout
|
601 |
+
*
|
602 |
+
* @return Varien_Object
|
603 |
+
*/
|
604 |
+
public function getPageLayout()
|
605 |
+
{
|
606 |
+
return $this->helper('page/layout')->getCurrentPageLayout();
|
607 |
+
}
|
608 |
+
|
609 |
+
/**
|
610 |
+
* Check whether the price can be shown for the specified product
|
611 |
+
*
|
612 |
+
* @param Mage_Catalog_Model_Product $product
|
613 |
+
* @return bool
|
614 |
+
*/
|
615 |
+
public function getCanShowProductPrice($product)
|
616 |
+
{
|
617 |
+
return $product->getCanShowPrice() !== false;
|
618 |
+
}
|
619 |
+
|
620 |
+
/**
|
621 |
+
* Get if it is necessary to show product stock status
|
622 |
+
*
|
623 |
+
* @return bool
|
624 |
+
*/
|
625 |
+
public function displayProductStockStatus()
|
626 |
+
{
|
627 |
+
$statusInfo = new Varien_Object(array('display_status' => true));
|
628 |
+
Mage::dispatchEvent('catalog_block_product_status_display', array('status' => $statusInfo));
|
629 |
+
return (boolean)$statusInfo->getDisplayStatus();
|
630 |
+
}
|
631 |
+
|
632 |
+
/**
|
633 |
+
* If exists price template block, retrieve price blocks from it
|
634 |
+
*
|
635 |
+
* @return Mage_Catalog_Block_Product_Abstract
|
636 |
+
*/
|
637 |
+
protected function _prepareLayout()
|
638 |
+
{
|
639 |
+
parent::_prepareLayout();
|
640 |
+
|
641 |
+
/* @var $block Mage_Catalog_Block_Product_Price_Template */
|
642 |
+
$block = $this->getLayout()->getBlock('catalog_product_price_template');
|
643 |
+
if ($block) {
|
644 |
+
foreach ($block->getPriceBlockTypes() as $type => $priceBlock) {
|
645 |
+
$this->addPriceBlockType($type, $priceBlock['block'], $priceBlock['template']);
|
646 |
+
}
|
647 |
+
}
|
648 |
+
|
649 |
+
return $this;
|
650 |
+
}
|
651 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Compare/Abstract.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog Compare Products Abstract Block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
abstract class Mage_Catalog_Block_Product_Compare_Abstract extends Mage_Catalog_Block_Product_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Retrieve Product Compare Helper
|
39 |
+
*
|
40 |
+
* @return Mage_Catalog_Helper_Product_Compare
|
41 |
+
*/
|
42 |
+
protected function _getHelper()
|
43 |
+
{
|
44 |
+
return Mage::helper('catalog/product_compare');
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Retrieve Remove Item from Compare List URL
|
49 |
+
*
|
50 |
+
* @param Mage_Catalog_Model_Product $item
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
public function getRemoveUrl($item)
|
54 |
+
{
|
55 |
+
return $this->_getHelper()->getRemoveUrl($item);
|
56 |
+
}
|
57 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Compare/List.php
ADDED
@@ -0,0 +1,198 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog products compare block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_Compare_List extends Mage_Catalog_Block_Product_Compare_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Product Compare items collection
|
39 |
+
*
|
40 |
+
* @var Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
|
41 |
+
*/
|
42 |
+
protected $_items;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Compare Products comparable attributes cache
|
46 |
+
*
|
47 |
+
* @var array
|
48 |
+
*/
|
49 |
+
protected $_attributes;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Flag which allow/disallow to use link for as low as price
|
53 |
+
*
|
54 |
+
* @var bool
|
55 |
+
*/
|
56 |
+
protected $_useLinkForAsLowAs = false;
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Customer id
|
60 |
+
*
|
61 |
+
* @var null|int
|
62 |
+
*/
|
63 |
+
protected $_customerId = null;
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Default MAP renderer type
|
67 |
+
*
|
68 |
+
* @var string
|
69 |
+
*/
|
70 |
+
protected $_mapRenderer = 'msrp_noform';
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Retrieve url for adding product to wishlist with params
|
74 |
+
*
|
75 |
+
* @param Mage_Catalog_Model_Product $product
|
76 |
+
* @return string
|
77 |
+
*/
|
78 |
+
public function getAddToWishlistUrl($product)
|
79 |
+
{
|
80 |
+
$continueUrl = Mage::helper('core')->urlEncode($this->getUrl('customer/account'));
|
81 |
+
$urlParamName = Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED;
|
82 |
+
|
83 |
+
$params = array(
|
84 |
+
$urlParamName => $continueUrl
|
85 |
+
);
|
86 |
+
|
87 |
+
return $this->helper('wishlist')->getAddUrlWithParams($product, $params);
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Preparing layout
|
92 |
+
*
|
93 |
+
* @return Mage_Catalog_Block_Product_Compare_List
|
94 |
+
*/
|
95 |
+
protected function _prepareLayout()
|
96 |
+
{
|
97 |
+
$headBlock = $this->getLayout()->getBlock('head');
|
98 |
+
if ($headBlock) {
|
99 |
+
$headBlock->setTitle(Mage::helper('catalog')->__('Products Comparison List') . ' - ' . $headBlock->getDefaultTitle());
|
100 |
+
}
|
101 |
+
return parent::_prepareLayout();
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Retrieve Product Compare items collection
|
106 |
+
*
|
107 |
+
* @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
|
108 |
+
*/
|
109 |
+
public function getItems()
|
110 |
+
{
|
111 |
+
if (is_null($this->_items)) {
|
112 |
+
Mage::helper('catalog/product_compare')->setAllowUsedFlat(false);
|
113 |
+
|
114 |
+
$this->_items = Mage::getResourceModel('catalog/product_compare_item_collection')
|
115 |
+
->useProductItem(true)
|
116 |
+
->setStoreId(Mage::app()->getStore()->getId());
|
117 |
+
|
118 |
+
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
|
119 |
+
$this->_items->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId());
|
120 |
+
} elseif ($this->_customerId) {
|
121 |
+
$this->_items->setCustomerId($this->_customerId);
|
122 |
+
} else {
|
123 |
+
$this->_items->setVisitorId(Mage::getSingleton('log/visitor')->getId());
|
124 |
+
}
|
125 |
+
|
126 |
+
$this->_items
|
127 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
128 |
+
->loadComparableAttributes()
|
129 |
+
->addMinimalPrice()
|
130 |
+
->addTaxPercents();
|
131 |
+
|
132 |
+
Mage::getSingleton('catalog/product_visibility')
|
133 |
+
->addVisibleInSiteFilterToCollection($this->_items);
|
134 |
+
}
|
135 |
+
|
136 |
+
return $this->_items;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Retrieve Product Compare Attributes
|
141 |
+
*
|
142 |
+
* @return array
|
143 |
+
*/
|
144 |
+
public function getAttributes()
|
145 |
+
{
|
146 |
+
if (is_null($this->_attributes)) {
|
147 |
+
$this->_attributes = $this->getItems()->getComparableAttributes();
|
148 |
+
}
|
149 |
+
|
150 |
+
return $this->_attributes;
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Retrieve Product Attribute Value
|
155 |
+
*
|
156 |
+
* @param Mage_Catalog_Model_Product $product
|
157 |
+
* @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
|
158 |
+
* @return string
|
159 |
+
*/
|
160 |
+
public function getProductAttributeValue($product, $attribute)
|
161 |
+
{
|
162 |
+
if (!$product->hasData($attribute->getAttributeCode())) {
|
163 |
+
return Mage::helper('catalog')->__('N/A');
|
164 |
+
}
|
165 |
+
|
166 |
+
if ($attribute->getSourceModel()
|
167 |
+
|| in_array($attribute->getFrontendInput(), array('select','boolean','multiselect'))
|
168 |
+
) {
|
169 |
+
//$value = $attribute->getSource()->getOptionText($product->getData($attribute->getAttributeCode()));
|
170 |
+
$value = $attribute->getFrontend()->getValue($product);
|
171 |
+
} else {
|
172 |
+
$value = $product->getData($attribute->getAttributeCode());
|
173 |
+
}
|
174 |
+
return ((string)$value == '') ? Mage::helper('catalog')->__('No') : $value;
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Retrieve Print URL
|
179 |
+
*
|
180 |
+
* @return string
|
181 |
+
*/
|
182 |
+
public function getPrintUrl()
|
183 |
+
{
|
184 |
+
return $this->getUrl('*/*/*', array('_current'=>true, 'print'=>1));
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Setter for customer id
|
189 |
+
*
|
190 |
+
* @param int $id
|
191 |
+
* @return Mage_Catalog_Block_Product_Compare_List
|
192 |
+
*/
|
193 |
+
public function setCustomerId($id)
|
194 |
+
{
|
195 |
+
$this->_customerId = $id;
|
196 |
+
return $this;
|
197 |
+
}
|
198 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Compare/Sidebar.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog Comapare Products Sidebar Block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_Compare_Sidebar extends Mage_Catalog_Block_Product_Compare_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Compare Products Collection
|
39 |
+
*
|
40 |
+
* @var null|Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
|
41 |
+
*/
|
42 |
+
protected $_itemsCollection = null;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Initialize block
|
46 |
+
*
|
47 |
+
*/
|
48 |
+
protected function _construct()
|
49 |
+
{
|
50 |
+
$this->setId('compare');
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Retrieve Compare Products Collection
|
55 |
+
*
|
56 |
+
* @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
|
57 |
+
*/
|
58 |
+
public function getItems()
|
59 |
+
{
|
60 |
+
if ($this->_itemsCollection) {
|
61 |
+
return $this->_itemsCollection;
|
62 |
+
}
|
63 |
+
return $this->_getHelper()->getItemCollection();
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Set Compare Products Collection
|
68 |
+
*
|
69 |
+
* @param Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection $collection
|
70 |
+
* @return Mage_Catalog_Block_Product_Compare_Sidebar
|
71 |
+
*/
|
72 |
+
public function setItems($collection)
|
73 |
+
{
|
74 |
+
$this->_itemsCollection = $collection;
|
75 |
+
return $this;
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Retrieve compare product helper
|
80 |
+
*
|
81 |
+
* @return Mage_Catalog_Helper_Product_Compare
|
82 |
+
*/
|
83 |
+
public function getCompareProductHelper()
|
84 |
+
{
|
85 |
+
return $this->_getHelper();
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Retrieve Clean Compared Items URL
|
90 |
+
*
|
91 |
+
* @return string
|
92 |
+
*/
|
93 |
+
public function getClearUrl()
|
94 |
+
{
|
95 |
+
return $this->_getHelper()->getClearListUrl();
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Retrieve Full Compare page URL
|
100 |
+
*
|
101 |
+
* @return string
|
102 |
+
*/
|
103 |
+
public function getCompareUrl()
|
104 |
+
{
|
105 |
+
return $this->_getHelper()->getListUrl();
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Retrieve block cache tags
|
110 |
+
*
|
111 |
+
* @return array
|
112 |
+
*/
|
113 |
+
public function getCacheTags()
|
114 |
+
{
|
115 |
+
$compareItem = Mage::getModel('catalog/product_compare_item');
|
116 |
+
foreach ($this->getItems() as $product) {
|
117 |
+
$this->addModelTags($product);
|
118 |
+
$this->addModelTags(
|
119 |
+
$compareItem->setId($product->getCatalogCompareItemId())
|
120 |
+
);
|
121 |
+
}
|
122 |
+
return parent::getCacheTags();
|
123 |
+
}
|
124 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Gallery.php
ADDED
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Product gallery
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Musho_Flipdefine_Block_Product_Gallery extends Mage_Core_Block_Template
|
35 |
+
{
|
36 |
+
protected function _prepareLayout()
|
37 |
+
{
|
38 |
+
if ($headBlock = $this->getLayout()->getBlock('head')) {
|
39 |
+
$headBlock->setTitle($this->getProduct()->getMetaTitle());
|
40 |
+
}
|
41 |
+
return parent::_prepareLayout();
|
42 |
+
}
|
43 |
+
public function getProduct()
|
44 |
+
{
|
45 |
+
return Mage::registry('product');
|
46 |
+
}
|
47 |
+
|
48 |
+
public function getGalleryCollection()
|
49 |
+
{
|
50 |
+
return $this->getProduct()->getMediaGalleryImages();
|
51 |
+
}
|
52 |
+
|
53 |
+
public function getCurrentImage()
|
54 |
+
{
|
55 |
+
$imageId = $this->getRequest()->getParam('image');
|
56 |
+
$image = null;
|
57 |
+
if ($imageId) {
|
58 |
+
$image = $this->getGalleryCollection()->getItemById($imageId);
|
59 |
+
}
|
60 |
+
|
61 |
+
if (!$image) {
|
62 |
+
$image = $this->getGalleryCollection()->getFirstItem();
|
63 |
+
}
|
64 |
+
return $image;
|
65 |
+
}
|
66 |
+
|
67 |
+
public function getImageUrl()
|
68 |
+
{
|
69 |
+
return $this->getCurrentImage()->getUrl();
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getImageFile()
|
73 |
+
{
|
74 |
+
return $this->getCurrentImage()->getFile();
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Retrieve image width
|
79 |
+
*
|
80 |
+
* @return bool|int
|
81 |
+
*/
|
82 |
+
public function getImageWidth()
|
83 |
+
{
|
84 |
+
$file = $this->getCurrentImage()->getPath();
|
85 |
+
if (file_exists($file)) {
|
86 |
+
$size = getimagesize($file);
|
87 |
+
if (isset($size[0])) {
|
88 |
+
if ($size[0] > 600) {
|
89 |
+
return 600;
|
90 |
+
} else {
|
91 |
+
return $size[0];
|
92 |
+
}
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
return false;
|
97 |
+
}
|
98 |
+
|
99 |
+
public function getPreviusImage()
|
100 |
+
{
|
101 |
+
$current = $this->getCurrentImage();
|
102 |
+
if (!$current) {
|
103 |
+
return false;
|
104 |
+
}
|
105 |
+
$previus = false;
|
106 |
+
foreach ($this->getGalleryCollection() as $image) {
|
107 |
+
if ($image->getValueId() == $current->getValueId()) {
|
108 |
+
return $previus;
|
109 |
+
}
|
110 |
+
$previus = $image;
|
111 |
+
}
|
112 |
+
return $previus;
|
113 |
+
}
|
114 |
+
|
115 |
+
public function getNextImage()
|
116 |
+
{
|
117 |
+
$current = $this->getCurrentImage();
|
118 |
+
if (!$current) {
|
119 |
+
return false;
|
120 |
+
}
|
121 |
+
|
122 |
+
$next = false;
|
123 |
+
$currentFind = false;
|
124 |
+
foreach ($this->getGalleryCollection() as $image) {
|
125 |
+
if ($currentFind) {
|
126 |
+
return $image;
|
127 |
+
}
|
128 |
+
if ($image->getValueId() == $current->getValueId()) {
|
129 |
+
$currentFind = true;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
return $next;
|
133 |
+
}
|
134 |
+
|
135 |
+
public function getPreviusImageUrl()
|
136 |
+
{
|
137 |
+
if ($image = $this->getPreviusImage()) {
|
138 |
+
return $this->getUrl('*/*/*', array('_current'=>true, 'image'=>$image->getValueId()));
|
139 |
+
}
|
140 |
+
return false;
|
141 |
+
}
|
142 |
+
|
143 |
+
public function getNextImageUrl()
|
144 |
+
{
|
145 |
+
if ($image = $this->getNextImage()) {
|
146 |
+
return $this->getUrl('*/*/*', array('_current'=>true, 'image'=>$image->getValueId()));
|
147 |
+
}
|
148 |
+
return false;
|
149 |
+
}
|
150 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/List.php
ADDED
@@ -0,0 +1,271 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product list
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_List extends Mage_Catalog_Block_Product_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Default toolbar block name
|
39 |
+
*
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
protected $_defaultToolbarBlock = 'catalog/product_list_toolbar';
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Product Collection
|
46 |
+
*
|
47 |
+
* @var Mage_Eav_Model_Entity_Collection_Abstract
|
48 |
+
*/
|
49 |
+
protected $_productCollection;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Retrieve loaded category collection
|
53 |
+
*
|
54 |
+
* @return Mage_Eav_Model_Entity_Collection_Abstract
|
55 |
+
*/
|
56 |
+
protected function _getProductCollection()
|
57 |
+
{
|
58 |
+
if (is_null($this->_productCollection)) {
|
59 |
+
$layer = $this->getLayer();
|
60 |
+
/* @var $layer Mage_Catalog_Model_Layer */
|
61 |
+
if ($this->getShowRootCategory()) {
|
62 |
+
$this->setCategoryId(Mage::app()->getStore()->getRootCategoryId());
|
63 |
+
}
|
64 |
+
|
65 |
+
// if this is a product view page
|
66 |
+
if (Mage::registry('product')) {
|
67 |
+
// get collection of categories this product is associated with
|
68 |
+
$categories = Mage::registry('product')->getCategoryCollection()
|
69 |
+
->setPage(1, 1)
|
70 |
+
->load();
|
71 |
+
// if the product is associated with any category
|
72 |
+
if ($categories->count()) {
|
73 |
+
// show products from this category
|
74 |
+
$this->setCategoryId(current($categories->getIterator()));
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
$origCategory = null;
|
79 |
+
if ($this->getCategoryId()) {
|
80 |
+
$category = Mage::getModel('catalog/category')->load($this->getCategoryId());
|
81 |
+
if ($category->getId()) {
|
82 |
+
$origCategory = $layer->getCurrentCategory();
|
83 |
+
$layer->setCurrentCategory($category);
|
84 |
+
$this->addModelTags($category);
|
85 |
+
}
|
86 |
+
}
|
87 |
+
$this->_productCollection = $layer->getProductCollection();
|
88 |
+
|
89 |
+
$this->prepareSortableFieldsByCategory($layer->getCurrentCategory());
|
90 |
+
|
91 |
+
if ($origCategory) {
|
92 |
+
$layer->setCurrentCategory($origCategory);
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
return $this->_productCollection;
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Get catalog layer model
|
101 |
+
*
|
102 |
+
* @return Mage_Catalog_Model_Layer
|
103 |
+
*/
|
104 |
+
public function getLayer()
|
105 |
+
{
|
106 |
+
$layer = Mage::registry('current_layer');
|
107 |
+
if ($layer) {
|
108 |
+
return $layer;
|
109 |
+
}
|
110 |
+
return Mage::getSingleton('catalog/layer');
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Retrieve loaded category collection
|
115 |
+
*
|
116 |
+
* @return Mage_Eav_Model_Entity_Collection_Abstract
|
117 |
+
*/
|
118 |
+
public function getLoadedProductCollection()
|
119 |
+
{
|
120 |
+
return $this->_getProductCollection();
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Retrieve current view mode
|
125 |
+
*
|
126 |
+
* @return string
|
127 |
+
*/
|
128 |
+
public function getMode()
|
129 |
+
{
|
130 |
+
return $this->getChild('toolbar')->getCurrentMode();
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Need use as _prepareLayout - but problem in declaring collection from
|
135 |
+
* another block (was problem with search result)
|
136 |
+
*/
|
137 |
+
protected function _beforeToHtml()
|
138 |
+
{
|
139 |
+
$toolbar = $this->getToolbarBlock();
|
140 |
+
|
141 |
+
// called prepare sortable parameters
|
142 |
+
$collection = $this->_getProductCollection();
|
143 |
+
|
144 |
+
// use sortable parameters
|
145 |
+
if ($orders = $this->getAvailableOrders()) {
|
146 |
+
$toolbar->setAvailableOrders($orders);
|
147 |
+
}
|
148 |
+
if ($sort = $this->getSortBy()) {
|
149 |
+
$toolbar->setDefaultOrder($sort);
|
150 |
+
}
|
151 |
+
if ($dir = $this->getDefaultDirection()) {
|
152 |
+
$toolbar->setDefaultDirection($dir);
|
153 |
+
}
|
154 |
+
if ($modes = $this->getModes()) {
|
155 |
+
$toolbar->setModes($modes);
|
156 |
+
}
|
157 |
+
|
158 |
+
// set collection to toolbar and apply sort
|
159 |
+
$toolbar->setCollection($collection);
|
160 |
+
|
161 |
+
$this->setChild('toolbar', $toolbar);
|
162 |
+
Mage::dispatchEvent('catalog_block_product_list_collection', array(
|
163 |
+
'collection' => $this->_getProductCollection()
|
164 |
+
));
|
165 |
+
|
166 |
+
$this->_getProductCollection()->load();
|
167 |
+
|
168 |
+
return parent::_beforeToHtml();
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Retrieve Toolbar block
|
173 |
+
*
|
174 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
175 |
+
*/
|
176 |
+
public function getToolbarBlock()
|
177 |
+
{
|
178 |
+
if ($blockName = $this->getToolbarBlockName()) {
|
179 |
+
if ($block = $this->getLayout()->getBlock($blockName)) {
|
180 |
+
return $block;
|
181 |
+
}
|
182 |
+
}
|
183 |
+
$block = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
|
184 |
+
return $block;
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Retrieve additional blocks html
|
189 |
+
*
|
190 |
+
* @return string
|
191 |
+
*/
|
192 |
+
public function getAdditionalHtml()
|
193 |
+
{
|
194 |
+
return $this->getChildHtml('additional');
|
195 |
+
}
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Retrieve list toolbar HTML
|
199 |
+
*
|
200 |
+
* @return string
|
201 |
+
*/
|
202 |
+
public function getToolbarHtml()
|
203 |
+
{
|
204 |
+
return $this->getChildHtml('toolbar');
|
205 |
+
}
|
206 |
+
|
207 |
+
public function setCollection($collection)
|
208 |
+
{
|
209 |
+
$this->_productCollection = $collection;
|
210 |
+
return $this;
|
211 |
+
}
|
212 |
+
|
213 |
+
public function addAttribute($code)
|
214 |
+
{
|
215 |
+
$this->_getProductCollection()->addAttributeToSelect($code);
|
216 |
+
return $this;
|
217 |
+
}
|
218 |
+
|
219 |
+
public function getPriceBlockTemplate()
|
220 |
+
{
|
221 |
+
return $this->_getData('price_block_template');
|
222 |
+
}
|
223 |
+
|
224 |
+
/**
|
225 |
+
* Retrieve Catalog Config object
|
226 |
+
*
|
227 |
+
* @return Mage_Catalog_Model_Config
|
228 |
+
*/
|
229 |
+
protected function _getConfig()
|
230 |
+
{
|
231 |
+
return Mage::getSingleton('catalog/config');
|
232 |
+
}
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Prepare Sort By fields from Category Data
|
236 |
+
*
|
237 |
+
* @param Mage_Catalog_Model_Category $category
|
238 |
+
* @return Mage_Catalog_Block_Product_List
|
239 |
+
*/
|
240 |
+
public function prepareSortableFieldsByCategory($category) {
|
241 |
+
if (!$this->getAvailableOrders()) {
|
242 |
+
$this->setAvailableOrders($category->getAvailableSortByOptions());
|
243 |
+
}
|
244 |
+
$availableOrders = $this->getAvailableOrders();
|
245 |
+
if (!$this->getSortBy()) {
|
246 |
+
if ($categorySortBy = $category->getDefaultSortBy()) {
|
247 |
+
if (!$availableOrders) {
|
248 |
+
$availableOrders = $this->_getConfig()->getAttributeUsedForSortByArray();
|
249 |
+
}
|
250 |
+
if (isset($availableOrders[$categorySortBy])) {
|
251 |
+
$this->setSortBy($categorySortBy);
|
252 |
+
}
|
253 |
+
}
|
254 |
+
}
|
255 |
+
|
256 |
+
return $this;
|
257 |
+
}
|
258 |
+
|
259 |
+
/**
|
260 |
+
* Retrieve block cache tags based on product collection
|
261 |
+
*
|
262 |
+
* @return array
|
263 |
+
*/
|
264 |
+
public function getCacheTags()
|
265 |
+
{
|
266 |
+
return array_merge(
|
267 |
+
parent::getCacheTags(),
|
268 |
+
$this->getItemsTags($this->_getProductCollection())
|
269 |
+
);
|
270 |
+
}
|
271 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/List/Crosssell.php
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog product related items block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
|
36 |
+
class Musho_Flipdefine_Block_Product_List_Crosssell extends Mage_Catalog_Block_Product_Abstract
|
37 |
+
{
|
38 |
+
/**
|
39 |
+
* Default MAP renderer type
|
40 |
+
*
|
41 |
+
* @var string
|
42 |
+
*/
|
43 |
+
protected $_mapRenderer = 'msrp_item';
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Crosssell item collection
|
47 |
+
*
|
48 |
+
* @var Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection
|
49 |
+
*/
|
50 |
+
protected $_itemCollection;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Prepare crosssell items data
|
54 |
+
*
|
55 |
+
* @return Mage_Catalog_Block_Product_List_Crosssell
|
56 |
+
*/
|
57 |
+
protected function _prepareData()
|
58 |
+
{
|
59 |
+
$product = Mage::registry('product');
|
60 |
+
/* @var $product Mage_Catalog_Model_Product */
|
61 |
+
|
62 |
+
$this->_itemCollection = $product->getCrossSellProductCollection()
|
63 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
64 |
+
->setPositionOrder()
|
65 |
+
->addStoreFilter();
|
66 |
+
|
67 |
+
// Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_itemCollection);
|
68 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection);
|
69 |
+
|
70 |
+
$this->_itemCollection->load();
|
71 |
+
|
72 |
+
foreach ($this->_itemCollection as $product) {
|
73 |
+
$product->setDoNotUseCategoryId(true);
|
74 |
+
}
|
75 |
+
|
76 |
+
return $this;
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Before rendering html process
|
81 |
+
* Prepare items collection
|
82 |
+
*
|
83 |
+
* @return Mage_Catalog_Block_Product_List_Crosssell
|
84 |
+
*/
|
85 |
+
protected function _beforeToHtml()
|
86 |
+
{
|
87 |
+
$this->_prepareData();
|
88 |
+
return parent::_beforeToHtml();
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Retrieve crosssell items collection
|
93 |
+
*
|
94 |
+
* @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection
|
95 |
+
*/
|
96 |
+
public function getItems()
|
97 |
+
{
|
98 |
+
return $this->_itemCollection;
|
99 |
+
}
|
100 |
+
|
101 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/List/Promotion.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
class Musho_Flipdefine_Block_Product_List_Promotion extends Mage_Catalog_Block_Product_List
|
27 |
+
{
|
28 |
+
protected function _getProductCollection()
|
29 |
+
{
|
30 |
+
if (is_null($this->_productCollection)) {
|
31 |
+
$collection = Mage::getResourceModel('catalog/product_collection');
|
32 |
+
Mage::getModel('catalog/layer')->prepareProductCollection($collection);
|
33 |
+
// your custom filter
|
34 |
+
$collection->addAttributeToFilter('promotion', 1)
|
35 |
+
->addStoreFilter();
|
36 |
+
|
37 |
+
$this->_productCollection = $collection;
|
38 |
+
}
|
39 |
+
return $this->_productCollection;
|
40 |
+
}
|
41 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/List/Random.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Catalog product random items block
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
|
35 |
+
class Musho_Flipdefine_Block_Product_List_Random extends Mage_Catalog_Block_Product_List
|
36 |
+
{
|
37 |
+
protected function _getProductCollection()
|
38 |
+
{
|
39 |
+
if (is_null($this->_productCollection)) {
|
40 |
+
$collection = Mage::getResourceModel('catalog/product_collection');
|
41 |
+
Mage::getModel('catalog/layer')->prepareProductCollection($collection);
|
42 |
+
$collection->getSelect()->order('rand()');
|
43 |
+
$collection->addStoreFilter();
|
44 |
+
$numProducts = $this->getNumProducts() ? $this->getNumProducts() : 0;
|
45 |
+
$collection->setPage(1, $numProducts);
|
46 |
+
|
47 |
+
$this->_productCollection = $collection;
|
48 |
+
}
|
49 |
+
return $this->_productCollection;
|
50 |
+
}
|
51 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/List/Related.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog product related items block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_List_Related extends Mage_Catalog_Block_Product_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Default MAP renderer type
|
39 |
+
*
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
protected $_mapRenderer = 'msrp_noform';
|
43 |
+
|
44 |
+
protected $_itemCollection;
|
45 |
+
|
46 |
+
protected function _prepareData()
|
47 |
+
{
|
48 |
+
$product = Mage::registry('product');
|
49 |
+
/* @var $product Mage_Catalog_Model_Product */
|
50 |
+
|
51 |
+
$this->_itemCollection = $product->getRelatedProductCollection()
|
52 |
+
->addAttributeToSelect('required_options')
|
53 |
+
->setPositionOrder()
|
54 |
+
->addStoreFilter()
|
55 |
+
;
|
56 |
+
|
57 |
+
if (Mage::helper('catalog')->isModuleEnabled('Mage_Checkout')) {
|
58 |
+
Mage::getResourceSingleton('checkout/cart')->addExcludeProductFilter($this->_itemCollection,
|
59 |
+
Mage::getSingleton('checkout/session')->getQuoteId()
|
60 |
+
);
|
61 |
+
$this->_addProductAttributesAndPrices($this->_itemCollection);
|
62 |
+
}
|
63 |
+
// Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_itemCollection);
|
64 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection);
|
65 |
+
|
66 |
+
$this->_itemCollection->load();
|
67 |
+
|
68 |
+
foreach ($this->_itemCollection as $product) {
|
69 |
+
$product->setDoNotUseCategoryId(true);
|
70 |
+
}
|
71 |
+
|
72 |
+
return $this;
|
73 |
+
}
|
74 |
+
|
75 |
+
protected function _beforeToHtml()
|
76 |
+
{
|
77 |
+
$this->_prepareData();
|
78 |
+
return parent::_beforeToHtml();
|
79 |
+
}
|
80 |
+
|
81 |
+
public function getItems()
|
82 |
+
{
|
83 |
+
return $this->_itemCollection;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Get tags array for saving cache
|
88 |
+
*
|
89 |
+
* @return array
|
90 |
+
*/
|
91 |
+
public function getCacheTags()
|
92 |
+
{
|
93 |
+
return array_merge(parent::getCacheTags(), $this->getItemsTags($this->getItems()));
|
94 |
+
}
|
95 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/List/Toolbar.php
ADDED
@@ -0,0 +1,830 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product list toolbar
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_List_Toolbar extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Products collection
|
39 |
+
*
|
40 |
+
* @var Mage_Core_Model_Mysql4_Collection_Abstract
|
41 |
+
*/
|
42 |
+
protected $_collection = null;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* GET parameter page variable
|
46 |
+
*
|
47 |
+
* @var string
|
48 |
+
*/
|
49 |
+
protected $_pageVarName = 'p';
|
50 |
+
|
51 |
+
/**
|
52 |
+
* GET parameter order variable
|
53 |
+
*
|
54 |
+
* @var string
|
55 |
+
*/
|
56 |
+
protected $_orderVarName = 'order';
|
57 |
+
|
58 |
+
/**
|
59 |
+
* GET parameter direction variable
|
60 |
+
*
|
61 |
+
* @var string
|
62 |
+
*/
|
63 |
+
protected $_directionVarName = 'dir';
|
64 |
+
|
65 |
+
/**
|
66 |
+
* GET parameter mode variable
|
67 |
+
*
|
68 |
+
* @var string
|
69 |
+
*/
|
70 |
+
protected $_modeVarName = 'mode';
|
71 |
+
|
72 |
+
/**
|
73 |
+
* GET parameter limit variable
|
74 |
+
*
|
75 |
+
* @var string
|
76 |
+
*/
|
77 |
+
protected $_limitVarName = 'limit';
|
78 |
+
|
79 |
+
/**
|
80 |
+
* List of available order fields
|
81 |
+
*
|
82 |
+
* @var array
|
83 |
+
*/
|
84 |
+
protected $_availableOrder = array();
|
85 |
+
|
86 |
+
/**
|
87 |
+
* List of available view types
|
88 |
+
*
|
89 |
+
* @var string
|
90 |
+
*/
|
91 |
+
protected $_availableMode = array();
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Is enable View switcher
|
95 |
+
*
|
96 |
+
* @var bool
|
97 |
+
*/
|
98 |
+
protected $_enableViewSwitcher = true;
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Is Expanded
|
102 |
+
*
|
103 |
+
* @var bool
|
104 |
+
*/
|
105 |
+
protected $_isExpanded = true;
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Default Order field
|
109 |
+
*
|
110 |
+
* @var string
|
111 |
+
*/
|
112 |
+
protected $_orderField = null;
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Default direction
|
116 |
+
*
|
117 |
+
* @var string
|
118 |
+
*/
|
119 |
+
protected $_direction = 'asc';
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Default View mode
|
123 |
+
*
|
124 |
+
* @var string
|
125 |
+
*/
|
126 |
+
protected $_viewMode = null;
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Available page limits for different list modes
|
130 |
+
*
|
131 |
+
* @var array
|
132 |
+
*/
|
133 |
+
protected $_availableLimit = array();
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Default limits per page
|
137 |
+
*
|
138 |
+
* @var array
|
139 |
+
*/
|
140 |
+
protected $_defaultAvailableLimit = array(10=>10,20=>20,50=>50);
|
141 |
+
|
142 |
+
/**
|
143 |
+
* @var bool $_paramsMemorizeAllowed
|
144 |
+
*/
|
145 |
+
protected $_paramsMemorizeAllowed = true;
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Retrieve Catalog Config object
|
149 |
+
*
|
150 |
+
* @return Mage_Catalog_Model_Config
|
151 |
+
*/
|
152 |
+
protected function _getConfig()
|
153 |
+
{
|
154 |
+
return Mage::getSingleton('catalog/config');
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Init Toolbar
|
159 |
+
*
|
160 |
+
*/
|
161 |
+
protected function _construct()
|
162 |
+
{
|
163 |
+
parent::_construct();
|
164 |
+
$this->_orderField = Mage::getStoreConfig(
|
165 |
+
Mage_Catalog_Model_Config::XML_PATH_LIST_DEFAULT_SORT_BY
|
166 |
+
);
|
167 |
+
|
168 |
+
$this->_availableOrder = $this->_getConfig()->getAttributeUsedForSortByArray();
|
169 |
+
|
170 |
+
switch (Mage::getStoreConfig('catalog/frontend/list_mode')) {
|
171 |
+
case 'grid':
|
172 |
+
$this->_availableMode = array('grid' => $this->__('Grid'));
|
173 |
+
break;
|
174 |
+
|
175 |
+
case 'list':
|
176 |
+
$this->_availableMode = array('list' => $this->__('List'));
|
177 |
+
break;
|
178 |
+
|
179 |
+
case 'grid-list':
|
180 |
+
$this->_availableMode = array('grid' => $this->__('Grid'), 'list' => $this->__('List'));
|
181 |
+
break;
|
182 |
+
|
183 |
+
case 'list-grid':
|
184 |
+
$this->_availableMode = array('list' => $this->__('List'), 'grid' => $this->__('Grid'));
|
185 |
+
break;
|
186 |
+
}
|
187 |
+
$this->setTemplate('catalog/product/list/toolbar.phtml');
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Disable list state params memorizing
|
192 |
+
*/
|
193 |
+
public function disableParamsMemorizing()
|
194 |
+
{
|
195 |
+
$this->_paramsMemorizeAllowed = false;
|
196 |
+
return $this;
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* Memorize parameter value for session
|
201 |
+
*
|
202 |
+
* @param string $param parameter name
|
203 |
+
* @param mixed $value parameter value
|
204 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
205 |
+
*/
|
206 |
+
protected function _memorizeParam($param, $value)
|
207 |
+
{
|
208 |
+
$session = Mage::getSingleton('catalog/session');
|
209 |
+
if ($this->_paramsMemorizeAllowed && !$session->getParamsMemorizeDisabled()) {
|
210 |
+
$session->setData($param, $value);
|
211 |
+
}
|
212 |
+
return $this;
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* Set collection to pager
|
217 |
+
*
|
218 |
+
* @param Varien_Data_Collection $collection
|
219 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
220 |
+
*/
|
221 |
+
public function setCollection($collection)
|
222 |
+
{
|
223 |
+
$this->_collection = $collection;
|
224 |
+
|
225 |
+
$this->_collection->setCurPage($this->getCurrentPage());
|
226 |
+
|
227 |
+
// we need to set pagination only if passed value integer and more that 0
|
228 |
+
$limit = (int)$this->getLimit();
|
229 |
+
if ($limit) {
|
230 |
+
$this->_collection->setPageSize($limit);
|
231 |
+
}
|
232 |
+
if ($this->getCurrentOrder()) {
|
233 |
+
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
|
234 |
+
}
|
235 |
+
return $this;
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* Return products collection instance
|
240 |
+
*
|
241 |
+
* @return Mage_Core_Model_Mysql4_Collection_Abstract
|
242 |
+
*/
|
243 |
+
public function getCollection()
|
244 |
+
{
|
245 |
+
return $this->_collection;
|
246 |
+
}
|
247 |
+
|
248 |
+
/**
|
249 |
+
* Getter for $_pageVarName
|
250 |
+
*
|
251 |
+
* @return string
|
252 |
+
*/
|
253 |
+
public function getPageVarName()
|
254 |
+
{
|
255 |
+
return $this->_pageVarName;
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Retrieve order field GET var name
|
260 |
+
*
|
261 |
+
* @return string
|
262 |
+
*/
|
263 |
+
public function getOrderVarName()
|
264 |
+
{
|
265 |
+
return $this->_orderVarName;
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Retrieve sort direction GET var name
|
270 |
+
*
|
271 |
+
* @return string
|
272 |
+
*/
|
273 |
+
public function getDirectionVarName()
|
274 |
+
{
|
275 |
+
return $this->_directionVarName;
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* Retrieve view mode GET var name
|
280 |
+
*
|
281 |
+
* @return string
|
282 |
+
*/
|
283 |
+
public function getModeVarName()
|
284 |
+
{
|
285 |
+
return $this->_modeVarName;
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Getter for $_limitVarName
|
290 |
+
*
|
291 |
+
* @return string
|
292 |
+
*/
|
293 |
+
public function getLimitVarName()
|
294 |
+
{
|
295 |
+
return $this->_limitVarName;
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Return current page from request
|
300 |
+
*
|
301 |
+
* @return int
|
302 |
+
*/
|
303 |
+
public function getCurrentPage()
|
304 |
+
{
|
305 |
+
if ($page = (int) $this->getRequest()->getParam($this->getPageVarName())) {
|
306 |
+
return $page;
|
307 |
+
}
|
308 |
+
return 1;
|
309 |
+
}
|
310 |
+
|
311 |
+
/**
|
312 |
+
* Get grit products sort order field
|
313 |
+
*
|
314 |
+
* @return string
|
315 |
+
*/
|
316 |
+
public function getCurrentOrder()
|
317 |
+
{
|
318 |
+
$order = $this->_getData('_current_grid_order');
|
319 |
+
if ($order) {
|
320 |
+
return $order;
|
321 |
+
}
|
322 |
+
|
323 |
+
$orders = $this->getAvailableOrders();
|
324 |
+
$defaultOrder = $this->_orderField;
|
325 |
+
|
326 |
+
if (!isset($orders[$defaultOrder])) {
|
327 |
+
$keys = array_keys($orders);
|
328 |
+
$defaultOrder = $keys[0];
|
329 |
+
}
|
330 |
+
|
331 |
+
$order = $this->getRequest()->getParam($this->getOrderVarName());
|
332 |
+
if ($order && isset($orders[$order])) {
|
333 |
+
if ($order == $defaultOrder) {
|
334 |
+
Mage::getSingleton('catalog/session')->unsSortOrder();
|
335 |
+
} else {
|
336 |
+
$this->_memorizeParam('sort_order', $order);
|
337 |
+
}
|
338 |
+
} else {
|
339 |
+
$order = Mage::getSingleton('catalog/session')->getSortOrder();
|
340 |
+
}
|
341 |
+
// validate session value
|
342 |
+
if (!$order || !isset($orders[$order])) {
|
343 |
+
$order = $defaultOrder;
|
344 |
+
}
|
345 |
+
$this->setData('_current_grid_order', $order);
|
346 |
+
return $order;
|
347 |
+
}
|
348 |
+
|
349 |
+
/**
|
350 |
+
* Retrieve current direction
|
351 |
+
*
|
352 |
+
* @return string
|
353 |
+
*/
|
354 |
+
public function getCurrentDirection()
|
355 |
+
{
|
356 |
+
$dir = $this->_getData('_current_grid_direction');
|
357 |
+
if ($dir) {
|
358 |
+
return $dir;
|
359 |
+
}
|
360 |
+
|
361 |
+
$directions = array('asc', 'desc');
|
362 |
+
$dir = strtolower($this->getRequest()->getParam($this->getDirectionVarName()));
|
363 |
+
if ($dir && in_array($dir, $directions)) {
|
364 |
+
if ($dir == $this->_direction) {
|
365 |
+
Mage::getSingleton('catalog/session')->unsSortDirection();
|
366 |
+
} else {
|
367 |
+
$this->_memorizeParam('sort_direction', $dir);
|
368 |
+
}
|
369 |
+
} else {
|
370 |
+
$dir = Mage::getSingleton('catalog/session')->getSortDirection();
|
371 |
+
}
|
372 |
+
// validate direction
|
373 |
+
if (!$dir || !in_array($dir, $directions)) {
|
374 |
+
$dir = $this->_direction;
|
375 |
+
}
|
376 |
+
$this->setData('_current_grid_direction', $dir);
|
377 |
+
return $dir;
|
378 |
+
}
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Set default Order field
|
382 |
+
*
|
383 |
+
* @param string $field
|
384 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
385 |
+
*/
|
386 |
+
public function setDefaultOrder($field)
|
387 |
+
{
|
388 |
+
if (isset($this->_availableOrder[$field])) {
|
389 |
+
$this->_orderField = $field;
|
390 |
+
}
|
391 |
+
return $this;
|
392 |
+
}
|
393 |
+
|
394 |
+
/**
|
395 |
+
* Set default sort direction
|
396 |
+
*
|
397 |
+
* @param string $dir
|
398 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
399 |
+
*/
|
400 |
+
public function setDefaultDirection($dir)
|
401 |
+
{
|
402 |
+
if (in_array(strtolower($dir), array('asc', 'desc'))) {
|
403 |
+
$this->_direction = strtolower($dir);
|
404 |
+
}
|
405 |
+
return $this;
|
406 |
+
}
|
407 |
+
|
408 |
+
/**
|
409 |
+
* Retrieve available Order fields list
|
410 |
+
*
|
411 |
+
* @return array
|
412 |
+
*/
|
413 |
+
public function getAvailableOrders()
|
414 |
+
{
|
415 |
+
return $this->_availableOrder;
|
416 |
+
}
|
417 |
+
|
418 |
+
/**
|
419 |
+
* Set Available order fields list
|
420 |
+
*
|
421 |
+
* @param array $orders
|
422 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
423 |
+
*/
|
424 |
+
public function setAvailableOrders($orders)
|
425 |
+
{
|
426 |
+
$this->_availableOrder = $orders;
|
427 |
+
return $this;
|
428 |
+
}
|
429 |
+
|
430 |
+
/**
|
431 |
+
* Add order to available orders
|
432 |
+
*
|
433 |
+
* @param string $order
|
434 |
+
* @param string $value
|
435 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
436 |
+
*/
|
437 |
+
public function addOrderToAvailableOrders($order, $value)
|
438 |
+
{
|
439 |
+
$this->_availableOrder[$order] = $value;
|
440 |
+
return $this;
|
441 |
+
}
|
442 |
+
/**
|
443 |
+
* Remove order from available orders if exists
|
444 |
+
*
|
445 |
+
* @param string $order
|
446 |
+
* @param Mage_Catalog_Block_Product_List_Toolbar
|
447 |
+
*/
|
448 |
+
public function removeOrderFromAvailableOrders($order)
|
449 |
+
{
|
450 |
+
if (isset($this->_availableOrder[$order])) {
|
451 |
+
unset($this->_availableOrder[$order]);
|
452 |
+
}
|
453 |
+
return $this;
|
454 |
+
}
|
455 |
+
|
456 |
+
/**
|
457 |
+
* Compare defined order field vith current order field
|
458 |
+
*
|
459 |
+
* @param string $order
|
460 |
+
* @return bool
|
461 |
+
*/
|
462 |
+
public function isOrderCurrent($order)
|
463 |
+
{
|
464 |
+
return ($order == $this->getCurrentOrder());
|
465 |
+
}
|
466 |
+
|
467 |
+
/**
|
468 |
+
* Retrieve Pager URL
|
469 |
+
*
|
470 |
+
* @param string $order
|
471 |
+
* @param string $direction
|
472 |
+
* @return string
|
473 |
+
*/
|
474 |
+
public function getOrderUrl($order, $direction)
|
475 |
+
{
|
476 |
+
if (is_null($order)) {
|
477 |
+
$order = $this->getCurrentOrder() ? $this->getCurrentOrder() : $this->_availableOrder[0];
|
478 |
+
}
|
479 |
+
return $this->getPagerUrl(array(
|
480 |
+
$this->getOrderVarName()=>$order,
|
481 |
+
$this->getDirectionVarName()=>$direction,
|
482 |
+
$this->getPageVarName() => null
|
483 |
+
));
|
484 |
+
}
|
485 |
+
|
486 |
+
/**
|
487 |
+
* Return current URL with rewrites and additional parameters
|
488 |
+
*
|
489 |
+
* @param array $params Query parameters
|
490 |
+
* @return string
|
491 |
+
*/
|
492 |
+
public function getPagerUrl($params=array())
|
493 |
+
{
|
494 |
+
$urlParams = array();
|
495 |
+
$urlParams['_current'] = true;
|
496 |
+
$urlParams['_escape'] = true;
|
497 |
+
$urlParams['_use_rewrite'] = true;
|
498 |
+
$urlParams['_query'] = $params;
|
499 |
+
return $this->getUrl('*/*/*', $urlParams);
|
500 |
+
}
|
501 |
+
|
502 |
+
/**
|
503 |
+
* Retrieve current View mode
|
504 |
+
*
|
505 |
+
* @return string
|
506 |
+
*/
|
507 |
+
public function getCurrentMode()
|
508 |
+
{
|
509 |
+
$mode = $this->_getData('_current_grid_mode');
|
510 |
+
if ($mode) {
|
511 |
+
return $mode;
|
512 |
+
}
|
513 |
+
$modes = array_keys($this->_availableMode);
|
514 |
+
$defaultMode = current($modes);
|
515 |
+
$mode = $this->getRequest()->getParam($this->getModeVarName());
|
516 |
+
if ($mode) {
|
517 |
+
if ($mode == $defaultMode) {
|
518 |
+
Mage::getSingleton('catalog/session')->unsDisplayMode();
|
519 |
+
} else {
|
520 |
+
$this->_memorizeParam('display_mode', $mode);
|
521 |
+
}
|
522 |
+
} else {
|
523 |
+
$mode = Mage::getSingleton('catalog/session')->getDisplayMode();
|
524 |
+
}
|
525 |
+
|
526 |
+
if (!$mode || !isset($this->_availableMode[$mode])) {
|
527 |
+
$mode = $defaultMode;
|
528 |
+
}
|
529 |
+
$this->setData('_current_grid_mode', $mode);
|
530 |
+
return $mode;
|
531 |
+
}
|
532 |
+
|
533 |
+
/**
|
534 |
+
* Compare defined view mode with current active mode
|
535 |
+
*
|
536 |
+
* @param string $mode
|
537 |
+
* @return bool
|
538 |
+
*/
|
539 |
+
public function isModeActive($mode)
|
540 |
+
{
|
541 |
+
return $this->getCurrentMode() == $mode;
|
542 |
+
}
|
543 |
+
|
544 |
+
/**
|
545 |
+
* Retrieve availables view modes
|
546 |
+
*
|
547 |
+
* @return array
|
548 |
+
*/
|
549 |
+
public function getModes()
|
550 |
+
{
|
551 |
+
return $this->_availableMode;
|
552 |
+
}
|
553 |
+
|
554 |
+
/**
|
555 |
+
* Set available view modes list
|
556 |
+
*
|
557 |
+
* @param array $modes
|
558 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
559 |
+
*/
|
560 |
+
public function setModes($modes)
|
561 |
+
{
|
562 |
+
if(!isset($this->_availableMode)){
|
563 |
+
$this->_availableMode = $modes;
|
564 |
+
}
|
565 |
+
return $this;
|
566 |
+
}
|
567 |
+
|
568 |
+
/**
|
569 |
+
* Retrive URL for view mode
|
570 |
+
*
|
571 |
+
* @param string $mode
|
572 |
+
* @return string
|
573 |
+
*/
|
574 |
+
public function getModeUrl($mode)
|
575 |
+
{
|
576 |
+
return $this->getPagerUrl( array($this->getModeVarName()=>$mode, $this->getPageVarName() => null) );
|
577 |
+
}
|
578 |
+
|
579 |
+
/**
|
580 |
+
* Disable view switcher
|
581 |
+
*
|
582 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
583 |
+
*/
|
584 |
+
public function disableViewSwitcher()
|
585 |
+
{
|
586 |
+
$this->_enableViewSwitcher = false;
|
587 |
+
return $this;
|
588 |
+
}
|
589 |
+
|
590 |
+
/**
|
591 |
+
* Enable view switcher
|
592 |
+
*
|
593 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
594 |
+
*/
|
595 |
+
public function enableViewSwitcher()
|
596 |
+
{
|
597 |
+
$this->_enableViewSwitcher = true;
|
598 |
+
return $this;
|
599 |
+
}
|
600 |
+
|
601 |
+
/**
|
602 |
+
* Is a enabled view switcher
|
603 |
+
*
|
604 |
+
* @return bool
|
605 |
+
*/
|
606 |
+
public function isEnabledViewSwitcher()
|
607 |
+
{
|
608 |
+
return $this->_enableViewSwitcher;
|
609 |
+
}
|
610 |
+
|
611 |
+
/**
|
612 |
+
* Disable Expanded
|
613 |
+
*
|
614 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
615 |
+
*/
|
616 |
+
public function disableExpanded()
|
617 |
+
{
|
618 |
+
$this->_isExpanded = false;
|
619 |
+
return $this;
|
620 |
+
}
|
621 |
+
|
622 |
+
/**
|
623 |
+
* Enable Expanded
|
624 |
+
*
|
625 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
626 |
+
*/
|
627 |
+
public function enableExpanded()
|
628 |
+
{
|
629 |
+
$this->_isExpanded = true;
|
630 |
+
return $this;
|
631 |
+
}
|
632 |
+
|
633 |
+
/**
|
634 |
+
* Check is Expanded
|
635 |
+
*
|
636 |
+
* @return bool
|
637 |
+
*/
|
638 |
+
public function isExpanded()
|
639 |
+
{
|
640 |
+
return $this->_isExpanded;
|
641 |
+
}
|
642 |
+
|
643 |
+
/**
|
644 |
+
* Retrieve default per page values
|
645 |
+
*
|
646 |
+
* @return string (comma separated)
|
647 |
+
*/
|
648 |
+
public function getDefaultPerPageValue()
|
649 |
+
{
|
650 |
+
if ($this->getCurrentMode() == 'list') {
|
651 |
+
if ($default = $this->getDefaultListPerPage()) {
|
652 |
+
return $default;
|
653 |
+
}
|
654 |
+
return Mage::getStoreConfig('catalog/frontend/list_per_page');
|
655 |
+
}
|
656 |
+
elseif ($this->getCurrentMode() == 'grid') {
|
657 |
+
if ($default = $this->getDefaultGridPerPage()) {
|
658 |
+
return $default;
|
659 |
+
}
|
660 |
+
return Mage::getStoreConfig('catalog/frontend/grid_per_page');
|
661 |
+
}
|
662 |
+
return 0;
|
663 |
+
}
|
664 |
+
|
665 |
+
/**
|
666 |
+
* Add new limit to pager for mode
|
667 |
+
*
|
668 |
+
* @param string $mode
|
669 |
+
* @param string $value
|
670 |
+
* @param string $label
|
671 |
+
* @return Mage_Catalog_Block_Product_List_Toolbar
|
672 |
+
*/
|
673 |
+
public function addPagerLimit($mode, $value, $label='')
|
674 |
+
{
|
675 |
+
if (!isset($this->_availableLimit[$mode])) {
|
676 |
+
$this->_availableLimit[$mode] = array();
|
677 |
+
}
|
678 |
+
$this->_availableLimit[$mode][$value] = empty($label) ? $value : $label;
|
679 |
+
return $this;
|
680 |
+
}
|
681 |
+
|
682 |
+
/**
|
683 |
+
* Retrieve available limits for current view mode
|
684 |
+
*
|
685 |
+
* @return array
|
686 |
+
*/
|
687 |
+
public function getAvailableLimit()
|
688 |
+
{
|
689 |
+
$currentMode = $this->getCurrentMode();
|
690 |
+
if (in_array($currentMode, array('list', 'grid'))) {
|
691 |
+
return $this->_getAvailableLimit($currentMode);
|
692 |
+
} else {
|
693 |
+
return $this->_defaultAvailableLimit;
|
694 |
+
}
|
695 |
+
}
|
696 |
+
|
697 |
+
/**
|
698 |
+
* Retrieve available limits for specified view mode
|
699 |
+
*
|
700 |
+
* @return array
|
701 |
+
*/
|
702 |
+
protected function _getAvailableLimit($mode)
|
703 |
+
{
|
704 |
+
if (isset($this->_availableLimit[$mode])) {
|
705 |
+
return $this->_availableLimit[$mode];
|
706 |
+
}
|
707 |
+
$perPageConfigKey = 'catalog/frontend/' . $mode . '_per_page_values';
|
708 |
+
$perPageValues = (string)Mage::getStoreConfig($perPageConfigKey);
|
709 |
+
$perPageValues = explode(',', $perPageValues);
|
710 |
+
$perPageValues = array_combine($perPageValues, $perPageValues);
|
711 |
+
if (Mage::getStoreConfigFlag('catalog/frontend/list_allow_all')) {
|
712 |
+
return ($perPageValues + array('all'=>$this->__('All')));
|
713 |
+
} else {
|
714 |
+
return $perPageValues;
|
715 |
+
}
|
716 |
+
}
|
717 |
+
|
718 |
+
/**
|
719 |
+
* Get specified products limit display per page
|
720 |
+
*
|
721 |
+
* @return string
|
722 |
+
*/
|
723 |
+
public function getLimit()
|
724 |
+
{
|
725 |
+
$limit = $this->_getData('_current_limit');
|
726 |
+
if ($limit) {
|
727 |
+
return $limit;
|
728 |
+
}
|
729 |
+
|
730 |
+
$limits = $this->getAvailableLimit();
|
731 |
+
$defaultLimit = $this->getDefaultPerPageValue();
|
732 |
+
if (!$defaultLimit || !isset($limits[$defaultLimit])) {
|
733 |
+
$keys = array_keys($limits);
|
734 |
+
$defaultLimit = $keys[0];
|
735 |
+
}
|
736 |
+
|
737 |
+
$limit = $this->getRequest()->getParam($this->getLimitVarName());
|
738 |
+
if ($limit && isset($limits[$limit])) {
|
739 |
+
if ($limit == $defaultLimit) {
|
740 |
+
Mage::getSingleton('catalog/session')->unsLimitPage();
|
741 |
+
} else {
|
742 |
+
$this->_memorizeParam('limit_page', $limit);
|
743 |
+
}
|
744 |
+
} else {
|
745 |
+
$limit = Mage::getSingleton('catalog/session')->getLimitPage();
|
746 |
+
}
|
747 |
+
if (!$limit || !isset($limits[$limit])) {
|
748 |
+
$limit = $defaultLimit;
|
749 |
+
}
|
750 |
+
|
751 |
+
$this->setData('_current_limit', $limit);
|
752 |
+
return $limit;
|
753 |
+
}
|
754 |
+
|
755 |
+
/**
|
756 |
+
* Retrieve Limit Pager URL
|
757 |
+
*
|
758 |
+
* @param int $limit
|
759 |
+
* @return string
|
760 |
+
*/
|
761 |
+
public function getLimitUrl($limit)
|
762 |
+
{
|
763 |
+
return $this->getPagerUrl(array(
|
764 |
+
$this->getLimitVarName() => $limit,
|
765 |
+
$this->getPageVarName() => null
|
766 |
+
));
|
767 |
+
}
|
768 |
+
|
769 |
+
public function isLimitCurrent($limit)
|
770 |
+
{
|
771 |
+
return $limit == $this->getLimit();
|
772 |
+
}
|
773 |
+
|
774 |
+
public function getFirstNum()
|
775 |
+
{
|
776 |
+
$collection = $this->getCollection();
|
777 |
+
return $collection->getPageSize()*($collection->getCurPage()-1)+1;
|
778 |
+
}
|
779 |
+
|
780 |
+
public function getLastNum()
|
781 |
+
{
|
782 |
+
$collection = $this->getCollection();
|
783 |
+
return $collection->getPageSize()*($collection->getCurPage()-1)+$collection->count();
|
784 |
+
}
|
785 |
+
|
786 |
+
public function getTotalNum()
|
787 |
+
{
|
788 |
+
return $this->getCollection()->getSize();
|
789 |
+
}
|
790 |
+
|
791 |
+
public function isFirstPage()
|
792 |
+
{
|
793 |
+
return $this->getCollection()->getCurPage() == 1;
|
794 |
+
}
|
795 |
+
|
796 |
+
public function getLastPageNum()
|
797 |
+
{
|
798 |
+
return $this->getCollection()->getLastPageNumber();
|
799 |
+
}
|
800 |
+
|
801 |
+
/**
|
802 |
+
* Render pagination HTML
|
803 |
+
*
|
804 |
+
* @return string
|
805 |
+
*/
|
806 |
+
public function getPagerHtml()
|
807 |
+
{
|
808 |
+
$pagerBlock = $this->getChild('product_list_toolbar_pager');
|
809 |
+
|
810 |
+
if ($pagerBlock instanceof Varien_Object) {
|
811 |
+
|
812 |
+
/* @var $pagerBlock Mage_Page_Block_Html_Pager */
|
813 |
+
$pagerBlock->setAvailableLimit($this->getAvailableLimit());
|
814 |
+
|
815 |
+
$pagerBlock->setUseContainer(false)
|
816 |
+
->setShowPerPage(false)
|
817 |
+
->setShowAmounts(false)
|
818 |
+
->setLimitVarName($this->getLimitVarName())
|
819 |
+
->setPageVarName($this->getPageVarName())
|
820 |
+
->setLimit($this->getLimit())
|
821 |
+
->setFrameLength(Mage::getStoreConfig('design/pagination/pagination_frame'))
|
822 |
+
->setJump(Mage::getStoreConfig('design/pagination/pagination_frame_skip'))
|
823 |
+
->setCollection($this->getCollection());
|
824 |
+
|
825 |
+
return $pagerBlock->toHtml();
|
826 |
+
}
|
827 |
+
|
828 |
+
return '';
|
829 |
+
}
|
830 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/List/Upsell.php
ADDED
@@ -0,0 +1,180 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Catalog product related items block
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
|
35 |
+
class Musho_Flipdefine_Block_Product_List_Upsell extends Mage_Catalog_Block_Product_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Default MAP renderer type
|
39 |
+
*
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
protected $_mapRenderer = 'msrp_noform';
|
43 |
+
|
44 |
+
protected $_columnCount = 4;
|
45 |
+
|
46 |
+
protected $_items;
|
47 |
+
|
48 |
+
protected $_itemCollection;
|
49 |
+
|
50 |
+
protected $_itemLimits = array();
|
51 |
+
|
52 |
+
protected function _prepareData()
|
53 |
+
{
|
54 |
+
$product = Mage::registry('product');
|
55 |
+
/* @var $product Mage_Catalog_Model_Product */
|
56 |
+
$this->_itemCollection = $product->getUpSellProductCollection()
|
57 |
+
->setPositionOrder()
|
58 |
+
->addStoreFilter()
|
59 |
+
;
|
60 |
+
if (Mage::helper('catalog')->isModuleEnabled('Mage_Checkout')) {
|
61 |
+
Mage::getResourceSingleton('checkout/cart')->addExcludeProductFilter($this->_itemCollection,
|
62 |
+
Mage::getSingleton('checkout/session')->getQuoteId()
|
63 |
+
);
|
64 |
+
|
65 |
+
$this->_addProductAttributesAndPrices($this->_itemCollection);
|
66 |
+
}
|
67 |
+
// Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_itemCollection);
|
68 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection);
|
69 |
+
|
70 |
+
if ($this->getItemLimit('upsell') > 0) {
|
71 |
+
$this->_itemCollection->setPageSize($this->getItemLimit('upsell'));
|
72 |
+
}
|
73 |
+
|
74 |
+
$this->_itemCollection->load();
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Updating collection with desired items
|
78 |
+
*/
|
79 |
+
Mage::dispatchEvent('catalog_product_upsell', array(
|
80 |
+
'product' => $product,
|
81 |
+
'collection' => $this->_itemCollection,
|
82 |
+
'limit' => $this->getItemLimit()
|
83 |
+
));
|
84 |
+
|
85 |
+
foreach ($this->_itemCollection as $product) {
|
86 |
+
$product->setDoNotUseCategoryId(true);
|
87 |
+
}
|
88 |
+
|
89 |
+
return $this;
|
90 |
+
}
|
91 |
+
|
92 |
+
protected function _beforeToHtml()
|
93 |
+
{
|
94 |
+
$this->_prepareData();
|
95 |
+
return parent::_beforeToHtml();
|
96 |
+
}
|
97 |
+
|
98 |
+
public function getItemCollection()
|
99 |
+
{
|
100 |
+
return $this->_itemCollection;
|
101 |
+
}
|
102 |
+
|
103 |
+
public function getItems()
|
104 |
+
{
|
105 |
+
if (is_null($this->_items) && $this->getItemCollection()) {
|
106 |
+
$this->_items = $this->getItemCollection()->getItems();
|
107 |
+
}
|
108 |
+
return $this->_items;
|
109 |
+
}
|
110 |
+
|
111 |
+
public function getRowCount()
|
112 |
+
{
|
113 |
+
return ceil(count($this->getItemCollection()->getItems())/$this->getColumnCount());
|
114 |
+
}
|
115 |
+
|
116 |
+
public function setColumnCount($columns)
|
117 |
+
{
|
118 |
+
if (intval($columns) > 0) {
|
119 |
+
$this->_columnCount = intval($columns);
|
120 |
+
}
|
121 |
+
return $this;
|
122 |
+
}
|
123 |
+
|
124 |
+
public function getColumnCount()
|
125 |
+
{
|
126 |
+
return $this->_columnCount;
|
127 |
+
}
|
128 |
+
|
129 |
+
public function resetItemsIterator()
|
130 |
+
{
|
131 |
+
$this->getItems();
|
132 |
+
reset($this->_items);
|
133 |
+
}
|
134 |
+
|
135 |
+
public function getIterableItem()
|
136 |
+
{
|
137 |
+
$item = current($this->_items);
|
138 |
+
next($this->_items);
|
139 |
+
return $item;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Set how many items we need to show in upsell block
|
144 |
+
* Notice: this parametr will be also applied
|
145 |
+
*
|
146 |
+
* @param string $type
|
147 |
+
* @param int $limit
|
148 |
+
* @return Mage_Catalog_Block_Product_List_Upsell
|
149 |
+
*/
|
150 |
+
public function setItemLimit($type, $limit)
|
151 |
+
{
|
152 |
+
if (intval($limit) > 0) {
|
153 |
+
$this->_itemLimits[$type] = intval($limit);
|
154 |
+
}
|
155 |
+
return $this;
|
156 |
+
}
|
157 |
+
|
158 |
+
public function getItemLimit($type = '')
|
159 |
+
{
|
160 |
+
if ($type == '') {
|
161 |
+
return $this->_itemLimits;
|
162 |
+
}
|
163 |
+
if (isset($this->_itemLimits[$type])) {
|
164 |
+
return $this->_itemLimits[$type];
|
165 |
+
}
|
166 |
+
else {
|
167 |
+
return 0;
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Get tags array for saving cache
|
173 |
+
*
|
174 |
+
* @return array
|
175 |
+
*/
|
176 |
+
public function getCacheTags()
|
177 |
+
{
|
178 |
+
return array_merge(parent::getCacheTags(), $this->getItemsTags($this->getItems()));
|
179 |
+
}
|
180 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/New.php
ADDED
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* New products block
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Musho_Flipdefine_Block_Product_New extends Mage_Catalog_Block_Product_Abstract
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* Default value for products count that will be shown
|
38 |
+
*/
|
39 |
+
const DEFAULT_PRODUCTS_COUNT = 10;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Products count
|
43 |
+
*
|
44 |
+
* @var null
|
45 |
+
*/
|
46 |
+
protected $_productsCount;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Initialize block's cache
|
50 |
+
*/
|
51 |
+
protected function _construct()
|
52 |
+
{
|
53 |
+
parent::_construct();
|
54 |
+
|
55 |
+
$this->addColumnCountLayoutDepend('empty', 6)
|
56 |
+
->addColumnCountLayoutDepend('one_column', 5)
|
57 |
+
->addColumnCountLayoutDepend('two_columns_left', 4)
|
58 |
+
->addColumnCountLayoutDepend('two_columns_right', 4)
|
59 |
+
->addColumnCountLayoutDepend('three_columns', 3);
|
60 |
+
|
61 |
+
$this->addData(array('cache_lifetime' => 86400));
|
62 |
+
$this->addCacheTag(Mage_Catalog_Model_Product::CACHE_TAG);
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Get Key pieces for caching block content
|
67 |
+
*
|
68 |
+
* @return array
|
69 |
+
*/
|
70 |
+
public function getCacheKeyInfo()
|
71 |
+
{
|
72 |
+
return array(
|
73 |
+
'CATALOG_PRODUCT_NEW',
|
74 |
+
Mage::app()->getStore()->getId(),
|
75 |
+
Mage::getDesign()->getPackageName(),
|
76 |
+
Mage::getDesign()->getTheme('template'),
|
77 |
+
Mage::getSingleton('customer/session')->getCustomerGroupId(),
|
78 |
+
'template' => $this->getTemplate(),
|
79 |
+
$this->getProductsCount()
|
80 |
+
);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Prepare and return product collection
|
85 |
+
*
|
86 |
+
* @return Mage_Catalog_Model_Resource_Product_Collection|Object|Varien_Data_Collection
|
87 |
+
*/
|
88 |
+
protected function _getProductCollection()
|
89 |
+
{
|
90 |
+
$todayStartOfDayDate = Mage::app()->getLocale()->date()
|
91 |
+
->setTime('00:00:00')
|
92 |
+
->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
|
93 |
+
|
94 |
+
$todayEndOfDayDate = Mage::app()->getLocale()->date()
|
95 |
+
->setTime('23:59:59')
|
96 |
+
->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
|
97 |
+
|
98 |
+
/** @var $collection Mage_Catalog_Model_Resource_Product_Collection */
|
99 |
+
$collection = Mage::getResourceModel('catalog/product_collection');
|
100 |
+
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
|
101 |
+
|
102 |
+
|
103 |
+
$collection = $this->_addProductAttributesAndPrices($collection)
|
104 |
+
->addStoreFilter()
|
105 |
+
->addAttributeToFilter('news_from_date', array('or'=> array(
|
106 |
+
0 => array('date' => true, 'to' => $todayEndOfDayDate),
|
107 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
108 |
+
), 'left')
|
109 |
+
->addAttributeToFilter('news_to_date', array('or'=> array(
|
110 |
+
0 => array('date' => true, 'from' => $todayStartOfDayDate),
|
111 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
112 |
+
), 'left')
|
113 |
+
->addAttributeToFilter(
|
114 |
+
array(
|
115 |
+
array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
|
116 |
+
array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
|
117 |
+
)
|
118 |
+
)
|
119 |
+
->addAttributeToSort('news_from_date', 'desc')
|
120 |
+
->setPageSize($this->getProductsCount())
|
121 |
+
->setCurPage(1)
|
122 |
+
;
|
123 |
+
|
124 |
+
return $collection;
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Prepare collection with new products
|
129 |
+
*
|
130 |
+
* @return Mage_Core_Block_Abstract
|
131 |
+
*/
|
132 |
+
protected function _beforeToHtml()
|
133 |
+
{
|
134 |
+
$this->setProductCollection($this->_getProductCollection());
|
135 |
+
return parent::_beforeToHtml();
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Set how much product should be displayed at once.
|
140 |
+
*
|
141 |
+
* @param $count
|
142 |
+
* @return Mage_Catalog_Block_Product_New
|
143 |
+
*/
|
144 |
+
public function setProductsCount($count)
|
145 |
+
{
|
146 |
+
$this->_productsCount = $count;
|
147 |
+
return $this;
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Get how much products should be displayed at once.
|
152 |
+
*
|
153 |
+
* @return int
|
154 |
+
*/
|
155 |
+
public function getProductsCount()
|
156 |
+
{
|
157 |
+
if (null === $this->_productsCount) {
|
158 |
+
$this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
|
159 |
+
}
|
160 |
+
return $this->_productsCount;
|
161 |
+
}
|
162 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Price.php
ADDED
@@ -0,0 +1,191 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product price block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
*/
|
34 |
+
class Musho_Flipdefine_Block_Product_Price extends Mage_Catalog_Block_Product_Abstract
|
35 |
+
{
|
36 |
+
protected $_priceDisplayType = null;
|
37 |
+
protected $_idSuffix = '';
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Retrieve product
|
41 |
+
*
|
42 |
+
* @return Mage_Catalog_Model_Product
|
43 |
+
*/
|
44 |
+
public function getProduct()
|
45 |
+
{
|
46 |
+
$product = $this->_getData('product');
|
47 |
+
if (!$product) {
|
48 |
+
$product = Mage::registry('product');
|
49 |
+
}
|
50 |
+
return $product;
|
51 |
+
}
|
52 |
+
|
53 |
+
public function getDisplayMinimalPrice()
|
54 |
+
{
|
55 |
+
return $this->_getData('display_minimal_price');
|
56 |
+
}
|
57 |
+
|
58 |
+
public function setIdSuffix($idSuffix)
|
59 |
+
{
|
60 |
+
$this->_idSuffix = $idSuffix;
|
61 |
+
return $this;
|
62 |
+
}
|
63 |
+
|
64 |
+
public function getIdSuffix()
|
65 |
+
{
|
66 |
+
return $this->_idSuffix;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Get tier prices (formatted)
|
71 |
+
*
|
72 |
+
* @param Mage_Catalog_Model_Product $product
|
73 |
+
* @return array
|
74 |
+
*/
|
75 |
+
public function getTierPrices($product = null)
|
76 |
+
{
|
77 |
+
if (is_null($product)) {
|
78 |
+
$product = $this->getProduct();
|
79 |
+
}
|
80 |
+
$prices = $product->getFormatedTierPrice();
|
81 |
+
|
82 |
+
$res = array();
|
83 |
+
if (is_array($prices)) {
|
84 |
+
foreach ($prices as $price) {
|
85 |
+
$price['price_qty'] = $price['price_qty'] * 1;
|
86 |
+
|
87 |
+
$productPrice = $product->getPrice();
|
88 |
+
if ($product->getPrice() != $product->getFinalPrice()) {
|
89 |
+
$productPrice = $product->getFinalPrice();
|
90 |
+
}
|
91 |
+
|
92 |
+
// Group price must be used for percent calculation if it is lower
|
93 |
+
$groupPrice = $product->getGroupPrice();
|
94 |
+
if ($productPrice > $groupPrice) {
|
95 |
+
$productPrice = $groupPrice;
|
96 |
+
}
|
97 |
+
|
98 |
+
if ($price['price'] < $productPrice) {
|
99 |
+
$price['savePercent'] = ceil(100 - ((100 / $productPrice) * $price['price']));
|
100 |
+
|
101 |
+
$tierPrice = Mage::app()->getStore()->convertPrice(
|
102 |
+
Mage::helper('tax')->getPrice($product, $price['website_price'])
|
103 |
+
);
|
104 |
+
$price['formated_price'] = Mage::app()->getStore()->formatPrice($tierPrice);
|
105 |
+
$price['formated_price_incl_tax'] = Mage::app()->getStore()->formatPrice(
|
106 |
+
Mage::app()->getStore()->convertPrice(
|
107 |
+
Mage::helper('tax')->getPrice($product, $price['website_price'], true)
|
108 |
+
)
|
109 |
+
);
|
110 |
+
|
111 |
+
if (Mage::helper('catalog')->canApplyMsrp($product)) {
|
112 |
+
$oldPrice = $product->getFinalPrice();
|
113 |
+
$product->setPriceCalculation(false);
|
114 |
+
$product->setPrice($tierPrice);
|
115 |
+
$product->setFinalPrice($tierPrice);
|
116 |
+
|
117 |
+
$this->getLayout()->getBlock('product.info')->getPriceHtml($product);
|
118 |
+
$product->setPriceCalculation(true);
|
119 |
+
|
120 |
+
$price['real_price_html'] = $product->getRealPriceHtml();
|
121 |
+
$product->setFinalPrice($oldPrice);
|
122 |
+
}
|
123 |
+
|
124 |
+
$res[] = $price;
|
125 |
+
}
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
return $res;
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Retrieve url for direct adding product to cart
|
134 |
+
*
|
135 |
+
* @param Mage_Catalog_Model_Product $product
|
136 |
+
* @param array $additional
|
137 |
+
* @return string
|
138 |
+
*/
|
139 |
+
public function getAddToCartUrl($product, $additional = array())
|
140 |
+
{
|
141 |
+
return $this->helper('checkout/cart')->getAddUrl($product, $additional);
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Prevent displaying if the price is not available
|
146 |
+
*
|
147 |
+
* @return string
|
148 |
+
*/
|
149 |
+
protected function _toHtml()
|
150 |
+
{
|
151 |
+
if (!$this->getProduct() || $this->getProduct()->getCanShowPrice() === false) {
|
152 |
+
return '';
|
153 |
+
}
|
154 |
+
return parent::_toHtml();
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Get Product Price valid JS string
|
159 |
+
*
|
160 |
+
* @param Mage_Catalog_Model_Product $product
|
161 |
+
* @return string
|
162 |
+
*/
|
163 |
+
public function getRealPriceJs($product)
|
164 |
+
{
|
165 |
+
$html = $this->hasRealPriceHtml() ? $this->getRealPriceHtml() : $product->getRealPriceHtml();
|
166 |
+
return Mage::helper('core')->jsonEncode($html);
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Retrieve block cache tags
|
171 |
+
*
|
172 |
+
* @return array
|
173 |
+
*/
|
174 |
+
public function getCacheTags()
|
175 |
+
{
|
176 |
+
return array_merge(parent::getCacheTags(), $this->getProduct()->getCacheIdTags());
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Retrieve attribute instance by name, id or config node
|
181 |
+
*
|
182 |
+
* If attribute is not found false is returned
|
183 |
+
*
|
184 |
+
* @param string|integer|Mage_Core_Model_Config_Element $attribute
|
185 |
+
* @return Mage_Eav_Model_Entity_Attribute_Abstract || false
|
186 |
+
*/
|
187 |
+
public function getProductAttribute($attribute)
|
188 |
+
{
|
189 |
+
return $this->getProduct()->getResource()->getAttribute($attribute);
|
190 |
+
}
|
191 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Price/Template.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog Product Price Template Block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_Price_Template extends Mage_Core_Block_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Product Price block types cache
|
39 |
+
*
|
40 |
+
* @var array
|
41 |
+
*/
|
42 |
+
protected $_priceBlockTypes = array();
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Retrieve array of Price Block Types
|
46 |
+
*
|
47 |
+
* Key is price block type name and value is array of
|
48 |
+
* template and block strings
|
49 |
+
*
|
50 |
+
* @return array
|
51 |
+
*/
|
52 |
+
public function getPriceBlockTypes()
|
53 |
+
{
|
54 |
+
return $this->_priceBlockTypes;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Adding customized price template for product type
|
59 |
+
*
|
60 |
+
* @param string $type
|
61 |
+
* @param string $block
|
62 |
+
* @param string $template
|
63 |
+
* @return Mage_Catalog_Block_Product_Price_Template
|
64 |
+
*/
|
65 |
+
public function addPriceBlockType($type, $block = '', $template = '')
|
66 |
+
{
|
67 |
+
if ($type) {
|
68 |
+
$this->_priceBlockTypes[$type] = array(
|
69 |
+
'block' => $block,
|
70 |
+
'template' => $template
|
71 |
+
);
|
72 |
+
}
|
73 |
+
|
74 |
+
return $this;
|
75 |
+
}
|
76 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Send.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product send to friend block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @module Catalog
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_Send extends Mage_Catalog_Block_Product_Abstract
|
36 |
+
{
|
37 |
+
public function __construct(){
|
38 |
+
parent::__construct();
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Retrieve username for form field
|
43 |
+
*
|
44 |
+
* @return string
|
45 |
+
*/
|
46 |
+
|
47 |
+
public function getUserName()
|
48 |
+
{
|
49 |
+
return Mage::getSingleton('customer/session')->getCustomer()->getName();
|
50 |
+
}
|
51 |
+
|
52 |
+
public function getEmail()
|
53 |
+
{
|
54 |
+
return (string)Mage::getSingleton('customer/session')->getCustomer()->getEmail();
|
55 |
+
}
|
56 |
+
|
57 |
+
public function getProductId()
|
58 |
+
{
|
59 |
+
return $this->getRequest()->getParam('id');
|
60 |
+
}
|
61 |
+
|
62 |
+
public function getMaxRecipients()
|
63 |
+
{
|
64 |
+
$sendToFriendModel = Mage::registry('send_to_friend_model');
|
65 |
+
return $sendToFriendModel->getMaxRecipients();
|
66 |
+
}
|
67 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View.php
ADDED
@@ -0,0 +1,273 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product View block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @module Catalog
|
34 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
35 |
+
*/
|
36 |
+
class Musho_Flipdefine_Block_Product_View extends Mage_Catalog_Block_Product_Abstract
|
37 |
+
{
|
38 |
+
/**
|
39 |
+
* Default MAP renderer type
|
40 |
+
*
|
41 |
+
* @var string
|
42 |
+
*/
|
43 |
+
protected $_mapRenderer = 'msrp_item';
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Add meta information from product to head block
|
47 |
+
*
|
48 |
+
* @return Mage_Catalog_Block_Product_View
|
49 |
+
*/
|
50 |
+
protected function _prepareLayout()
|
51 |
+
{
|
52 |
+
$this->getLayout()->createBlock('catalog/breadcrumbs');
|
53 |
+
$headBlock = $this->getLayout()->getBlock('head');
|
54 |
+
if ($headBlock) {
|
55 |
+
//$product = $this->getProduct();
|
56 |
+
$product = Mage::getModel('catalog/product')->load(Mage::registry('Productno'));
|
57 |
+
$title = $product->getMetaTitle();
|
58 |
+
if ($title) {
|
59 |
+
$headBlock->setTitle($title);
|
60 |
+
}
|
61 |
+
$keyword = $product->getMetaKeyword();
|
62 |
+
$currentCategory = Mage::registry('current_category');
|
63 |
+
if ($keyword) {
|
64 |
+
$headBlock->setKeywords($keyword);
|
65 |
+
} elseif ($currentCategory) {
|
66 |
+
$headBlock->setKeywords($product->getName());
|
67 |
+
}
|
68 |
+
$description = $product->getMetaDescription();
|
69 |
+
if ($description) {
|
70 |
+
$headBlock->setDescription( ($description) );
|
71 |
+
} else {
|
72 |
+
$headBlock->setDescription(Mage::helper('core/string')->substr($product->getDescription(), 0, 255));
|
73 |
+
}
|
74 |
+
if ($this->helper('catalog/product')->canUseCanonicalTag()) {
|
75 |
+
$params = array('_ignore_category' => true);
|
76 |
+
$headBlock->addLinkRel('canonical', $product->getUrlModel()->getUrl($product, $params));
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
return parent::_prepareLayout();
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Retrieve current product model
|
85 |
+
*
|
86 |
+
* @return Mage_Catalog_Model_Product
|
87 |
+
*/
|
88 |
+
public function getProduct()
|
89 |
+
{
|
90 |
+
if (!Mage::registry('product') && $this->getProductId()) {
|
91 |
+
$product = Mage::getModel('catalog/product')->load(Mage::registry('Productno'));
|
92 |
+
Mage::register('product', $product);
|
93 |
+
}
|
94 |
+
return Mage::registry('product');
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Check if product can be emailed to friend
|
99 |
+
*
|
100 |
+
* @return bool
|
101 |
+
*/
|
102 |
+
public function canEmailToFriend()
|
103 |
+
{
|
104 |
+
$sendToFriendModel = Mage::registry('send_to_friend_model');
|
105 |
+
return $sendToFriendModel && $sendToFriendModel->canEmailToFriend();
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Retrieve url for direct adding product to cart
|
110 |
+
*
|
111 |
+
* @param Mage_Catalog_Model_Product $product
|
112 |
+
* @param array $additional
|
113 |
+
* @return string
|
114 |
+
*/
|
115 |
+
public function getAddToCartUrl($product, $additional = array())
|
116 |
+
{
|
117 |
+
if ($this->hasCustomAddToCartUrl()) {
|
118 |
+
return $this->getCustomAddToCartUrl();
|
119 |
+
}
|
120 |
+
|
121 |
+
if ($this->getRequest()->getParam('wishlist_next')) {
|
122 |
+
$additional['wishlist_next'] = 1;
|
123 |
+
}
|
124 |
+
|
125 |
+
$addUrlKey = Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED;
|
126 |
+
$addUrlValue = Mage::getUrl('*/*/*', array('_use_rewrite' => true, '_current' => true));
|
127 |
+
$additional[$addUrlKey] = Mage::helper('core')->urlEncode($addUrlValue);
|
128 |
+
|
129 |
+
return $this->helper('checkout/cart')->getAddUrl($product, $additional);
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Get JSON encoded configuration array which can be used for JS dynamic
|
134 |
+
* price calculation depending on product options
|
135 |
+
*
|
136 |
+
* @return string
|
137 |
+
*/
|
138 |
+
public function getJsonConfig()
|
139 |
+
{
|
140 |
+
$config = array();
|
141 |
+
if (!$this->hasOptions()) {
|
142 |
+
return Mage::helper('core')->jsonEncode($config);
|
143 |
+
}
|
144 |
+
|
145 |
+
$_request = Mage::getSingleton('tax/calculation')->getRateRequest(false, false, false);
|
146 |
+
/* @var $product Mage_Catalog_Model_Product */
|
147 |
+
$product = $this->getProduct();
|
148 |
+
$_request->setProductClassId($product->getTaxClassId());
|
149 |
+
$defaultTax = Mage::getSingleton('tax/calculation')->getRate($_request);
|
150 |
+
|
151 |
+
$_request = Mage::getSingleton('tax/calculation')->getRateRequest();
|
152 |
+
$_request->setProductClassId($product->getTaxClassId());
|
153 |
+
$currentTax = Mage::getSingleton('tax/calculation')->getRate($_request);
|
154 |
+
|
155 |
+
$_regularPrice = $product->getPrice();
|
156 |
+
$_finalPrice = $product->getFinalPrice();
|
157 |
+
$_priceInclTax = Mage::helper('tax')->getPrice($product, $_finalPrice, true);
|
158 |
+
$_priceExclTax = Mage::helper('tax')->getPrice($product, $_finalPrice);
|
159 |
+
$_tierPrices = array();
|
160 |
+
$_tierPricesInclTax = array();
|
161 |
+
foreach ($product->getTierPrice() as $tierPrice) {
|
162 |
+
$_tierPrices[] = Mage::helper('core')->currency($tierPrice['website_price'], false, false);
|
163 |
+
$_tierPricesInclTax[] = Mage::helper('core')->currency(
|
164 |
+
Mage::helper('tax')->getPrice($product, (int)$tierPrice['website_price'], true),
|
165 |
+
false, false);
|
166 |
+
}
|
167 |
+
$config = array(
|
168 |
+
'productId' => $product->getId(),
|
169 |
+
'priceFormat' => Mage::app()->getLocale()->getJsPriceFormat(),
|
170 |
+
'includeTax' => Mage::helper('tax')->priceIncludesTax() ? 'true' : 'false',
|
171 |
+
'showIncludeTax' => Mage::helper('tax')->displayPriceIncludingTax(),
|
172 |
+
'showBothPrices' => Mage::helper('tax')->displayBothPrices(),
|
173 |
+
'productPrice' => Mage::helper('core')->currency($_finalPrice, false, false),
|
174 |
+
'productOldPrice' => Mage::helper('core')->currency($_regularPrice, false, false),
|
175 |
+
'priceInclTax' => Mage::helper('core')->currency($_priceInclTax, false, false),
|
176 |
+
'priceExclTax' => Mage::helper('core')->currency($_priceExclTax, false, false),
|
177 |
+
/**
|
178 |
+
* @var skipCalculate
|
179 |
+
* @deprecated after 1.5.1.0
|
180 |
+
*/
|
181 |
+
'skipCalculate' => ($_priceExclTax != $_priceInclTax ? 0 : 1),
|
182 |
+
'defaultTax' => $defaultTax,
|
183 |
+
'currentTax' => $currentTax,
|
184 |
+
'idSuffix' => '_clone',
|
185 |
+
'oldPlusDisposition' => 0,
|
186 |
+
'plusDisposition' => 0,
|
187 |
+
'plusDispositionTax' => 0,
|
188 |
+
'oldMinusDisposition' => 0,
|
189 |
+
'minusDisposition' => 0,
|
190 |
+
'tierPrices' => $_tierPrices,
|
191 |
+
'tierPricesInclTax' => $_tierPricesInclTax,
|
192 |
+
);
|
193 |
+
|
194 |
+
$responseObject = new Varien_Object();
|
195 |
+
Mage::dispatchEvent('catalog_product_view_config', array('response_object' => $responseObject));
|
196 |
+
if (is_array($responseObject->getAdditionalOptions())) {
|
197 |
+
foreach ($responseObject->getAdditionalOptions() as $option => $value) {
|
198 |
+
$config[$option] = $value;
|
199 |
+
}
|
200 |
+
}
|
201 |
+
|
202 |
+
return Mage::helper('core')->jsonEncode($config);
|
203 |
+
}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Return true if product has options
|
207 |
+
*
|
208 |
+
* @return bool
|
209 |
+
*/
|
210 |
+
public function hasOptions()
|
211 |
+
{
|
212 |
+
if ($this->getProduct()->getTypeInstance(true)->hasOptions($this->getProduct())) {
|
213 |
+
return true;
|
214 |
+
}
|
215 |
+
return false;
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Check if product has required options
|
220 |
+
*
|
221 |
+
* @return bool
|
222 |
+
*/
|
223 |
+
public function hasRequiredOptions()
|
224 |
+
{
|
225 |
+
return $this->getProduct()->getTypeInstance(true)->hasRequiredOptions($this->getProduct());
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Define if setting of product options must be shown instantly.
|
230 |
+
* Used in case when options are usually hidden and shown only when user
|
231 |
+
* presses some button or link. In editing mode we better show these options
|
232 |
+
* instantly.
|
233 |
+
*
|
234 |
+
* @return bool
|
235 |
+
*/
|
236 |
+
public function isStartCustomization()
|
237 |
+
{
|
238 |
+
return $this->getProduct()->getConfigureMode() || Mage::app()->getRequest()->getParam('startcustomization');
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* Get default qty - either as preconfigured, or as 1.
|
243 |
+
* Also restricts it by minimal qty.
|
244 |
+
*
|
245 |
+
* @param null|Mage_Catalog_Model_Product $product
|
246 |
+
* @return int|float
|
247 |
+
*/
|
248 |
+
public function getProductDefaultQty($product = null)
|
249 |
+
{
|
250 |
+
if (!$product) {
|
251 |
+
$product = $this->getProduct();
|
252 |
+
}
|
253 |
+
|
254 |
+
$qty = $this->getMinimalQty($product);
|
255 |
+
$config = $product->getPreconfiguredValues();
|
256 |
+
$configQty = $config->getQty();
|
257 |
+
if ($configQty > $qty) {
|
258 |
+
$qty = $configQty;
|
259 |
+
}
|
260 |
+
|
261 |
+
return $qty;
|
262 |
+
}
|
263 |
+
|
264 |
+
/**
|
265 |
+
* Retrieve block cache tags
|
266 |
+
*
|
267 |
+
* @return array
|
268 |
+
*/
|
269 |
+
public function getCacheTags()
|
270 |
+
{
|
271 |
+
return array_merge(parent::getCacheTags(), $this->getProduct()->getCacheIdTags());
|
272 |
+
}
|
273 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Abstract.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Product view abstract block
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
abstract class Mage_Catalog_Block_Product_View_Abstract extends Mage_Catalog_Block_Product_Abstract
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* Retrive product
|
38 |
+
*
|
39 |
+
* @return Mage_Catalog_Model_Product
|
40 |
+
*/
|
41 |
+
public function getProduct()
|
42 |
+
{
|
43 |
+
$product = parent::getProduct();
|
44 |
+
if (is_null($product->getTypeInstance(true)->getStoreFilter($product))) {
|
45 |
+
$product->getTypeInstance(true)->setStoreFilter(Mage::app()->getStore(), $product);
|
46 |
+
}
|
47 |
+
|
48 |
+
return $product;
|
49 |
+
}
|
50 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Additional.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product additional info block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_View_Additional extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
|
38 |
+
protected $_list;
|
39 |
+
|
40 |
+
public function __construct()
|
41 |
+
{
|
42 |
+
parent::__construct();
|
43 |
+
$this->setTemplate('catalog/product/view/additional.phtml');
|
44 |
+
}
|
45 |
+
|
46 |
+
public function getChildHtmlList()
|
47 |
+
{
|
48 |
+
if (is_null($this->_list)) {
|
49 |
+
$this->_list = array();
|
50 |
+
foreach ($this->getSortedChildren() as $name) {
|
51 |
+
$block = $this->getLayout()->getBlock($name);
|
52 |
+
if (!$block) {
|
53 |
+
Mage::exception(Mage::helper('catalog')->__('Invalid block: %s.', $name));
|
54 |
+
}
|
55 |
+
$this->_list[] = $block->toHtml();
|
56 |
+
}
|
57 |
+
}
|
58 |
+
return $this->_list;
|
59 |
+
}
|
60 |
+
|
61 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Attributes.php
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product description block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_View_Attributes extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
protected $_product = null;
|
38 |
+
|
39 |
+
function getProduct()
|
40 |
+
{
|
41 |
+
if (!$this->_product) {
|
42 |
+
$this->_product = Mage::registry('product');
|
43 |
+
}
|
44 |
+
return $this->_product;
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* $excludeAttr is optional array of attribute codes to
|
49 |
+
* exclude them from additional data array
|
50 |
+
*
|
51 |
+
* @param array $excludeAttr
|
52 |
+
* @return array
|
53 |
+
*/
|
54 |
+
public function getAdditionalData(array $excludeAttr = array())
|
55 |
+
{
|
56 |
+
$data = array();
|
57 |
+
$product = $this->getProduct();
|
58 |
+
$attributes = $product->getAttributes();
|
59 |
+
foreach ($attributes as $attribute) {
|
60 |
+
// if ($attribute->getIsVisibleOnFront() && $attribute->getIsUserDefined() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
|
61 |
+
if ($attribute->getIsVisibleOnFront() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
|
62 |
+
$value = $attribute->getFrontend()->getValue($product);
|
63 |
+
|
64 |
+
if (!$product->hasData($attribute->getAttributeCode())) {
|
65 |
+
$value = Mage::helper('catalog')->__('N/A');
|
66 |
+
} elseif ((string)$value == '') {
|
67 |
+
$value = Mage::helper('catalog')->__('No');
|
68 |
+
} elseif ($attribute->getFrontendInput() == 'price' && is_string($value)) {
|
69 |
+
$value = Mage::app()->getStore()->convertPrice($value, true);
|
70 |
+
}
|
71 |
+
|
72 |
+
if (is_string($value) && strlen($value)) {
|
73 |
+
$data[$attribute->getAttributeCode()] = array(
|
74 |
+
'label' => $attribute->getStoreLabel(),
|
75 |
+
'value' => $value,
|
76 |
+
'code' => $attribute->getAttributeCode()
|
77 |
+
);
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
81 |
+
return $data;
|
82 |
+
}
|
83 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Description.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product description block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_View_Description extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
protected $_product = null;
|
38 |
+
|
39 |
+
function getProduct()
|
40 |
+
{
|
41 |
+
if (!$this->_product) {
|
42 |
+
$this->_product = Mage::registry('product');
|
43 |
+
}
|
44 |
+
return $this->_product;
|
45 |
+
}
|
46 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Media.php
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Simple product data view
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Musho_Flipdefine_Block_Product_View_Media extends Mage_Catalog_Block_Product_View_Abstract
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* Flag, that defines whether gallery is disabled
|
38 |
+
*
|
39 |
+
* @var boolean
|
40 |
+
*/
|
41 |
+
protected $_isGalleryDisabled;
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Retrieve list of gallery images
|
45 |
+
*
|
46 |
+
* @return array|Varien_Data_Collection
|
47 |
+
*/
|
48 |
+
public function getGalleryImages()
|
49 |
+
{
|
50 |
+
if ($this->_isGalleryDisabled) {
|
51 |
+
return array();
|
52 |
+
}
|
53 |
+
$collection = $this->getProduct()->getMediaGalleryImages();
|
54 |
+
return $collection;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Retrieve gallery url
|
59 |
+
*
|
60 |
+
* @param null|Varien_Object $image
|
61 |
+
* @return string
|
62 |
+
*/
|
63 |
+
public function getGalleryUrl($image = null)
|
64 |
+
{
|
65 |
+
$params = array('id' => $this->getProduct()->getId());
|
66 |
+
if ($image) {
|
67 |
+
$params['image'] = $image->getValueId();
|
68 |
+
}
|
69 |
+
return $this->getUrl('catalog/product/gallery', $params);
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Disable gallery
|
74 |
+
*/
|
75 |
+
public function disableGallery()
|
76 |
+
{
|
77 |
+
$this->_isGalleryDisabled = true;
|
78 |
+
}
|
79 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Options.php
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product options block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_View_Options extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
protected $_product;
|
38 |
+
|
39 |
+
protected $_optionRenders = array();
|
40 |
+
|
41 |
+
public function __construct()
|
42 |
+
{
|
43 |
+
parent::__construct();
|
44 |
+
$this->addOptionRenderer(
|
45 |
+
'default',
|
46 |
+
'catalog/product_view_options_type_default',
|
47 |
+
'catalog/product/view/options/type/default.phtml'
|
48 |
+
);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Retrieve product object
|
53 |
+
*
|
54 |
+
* @return Mage_Catalog_Model_Product
|
55 |
+
*/
|
56 |
+
public function getProduct()
|
57 |
+
{
|
58 |
+
if (!$this->_product) {
|
59 |
+
if (Mage::registry('current_product')) {
|
60 |
+
$this->_product = Mage::registry('current_product');
|
61 |
+
} else {
|
62 |
+
$this->_product = Mage::getSingleton('catalog/product');
|
63 |
+
}
|
64 |
+
}
|
65 |
+
return $this->_product;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Set product object
|
70 |
+
*
|
71 |
+
* @param Mage_Catalog_Model_Product $product
|
72 |
+
* @return Mage_Catalog_Block_Product_View_Options
|
73 |
+
*/
|
74 |
+
public function setProduct(Mage_Catalog_Model_Product $product = null)
|
75 |
+
{
|
76 |
+
$this->_product = $product;
|
77 |
+
return $this;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Add option renderer to renderers array
|
82 |
+
*
|
83 |
+
* @param string $type
|
84 |
+
* @param string $block
|
85 |
+
* @param string $template
|
86 |
+
* @return Mage_Catalog_Block_Product_View_Options
|
87 |
+
*/
|
88 |
+
public function addOptionRenderer($type, $block, $template)
|
89 |
+
{
|
90 |
+
$this->_optionRenders[$type] = array(
|
91 |
+
'block' => $block,
|
92 |
+
'template' => $template,
|
93 |
+
'renderer' => null
|
94 |
+
);
|
95 |
+
return $this;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Get option render by given type
|
100 |
+
*
|
101 |
+
* @param string $type
|
102 |
+
* @return array
|
103 |
+
*/
|
104 |
+
public function getOptionRender($type)
|
105 |
+
{
|
106 |
+
if (isset($this->_optionRenders[$type])) {
|
107 |
+
return $this->_optionRenders[$type];
|
108 |
+
}
|
109 |
+
|
110 |
+
return $this->_optionRenders['default'];
|
111 |
+
}
|
112 |
+
|
113 |
+
public function getGroupOfOption($type)
|
114 |
+
{
|
115 |
+
$group = Mage::getSingleton('catalog/product_option')->getGroupByType($type);
|
116 |
+
|
117 |
+
return $group == '' ? 'default' : $group;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Get product options
|
122 |
+
*
|
123 |
+
* @return array
|
124 |
+
*/
|
125 |
+
public function getOptions()
|
126 |
+
{
|
127 |
+
return $this->getProduct()->getOptions();
|
128 |
+
}
|
129 |
+
|
130 |
+
public function hasOptions()
|
131 |
+
{
|
132 |
+
if ($this->getOptions()) {
|
133 |
+
return true;
|
134 |
+
}
|
135 |
+
return false;
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Get price configuration
|
140 |
+
*
|
141 |
+
* @param Mage_Catalog_Model_Product_Option_Value|Mage_Catalog_Model_Product_Option $option
|
142 |
+
* @return array
|
143 |
+
*/
|
144 |
+
protected function _getPriceConfiguration($option)
|
145 |
+
{
|
146 |
+
$data = array();
|
147 |
+
$data['price'] = Mage::helper('core')->currency($option->getPrice(true), false, false);
|
148 |
+
$data['oldPrice'] = Mage::helper('core')->currency($option->getPrice(false), false, false);
|
149 |
+
$data['priceValue'] = $option->getPrice(false);
|
150 |
+
$data['type'] = $option->getPriceType();
|
151 |
+
$data['excludeTax'] = $price = Mage::helper('tax')->getPrice($option->getProduct(), $data['price'], false);
|
152 |
+
$data['includeTax'] = $price = Mage::helper('tax')->getPrice($option->getProduct(), $data['price'], true);
|
153 |
+
return $data;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Get json representation of
|
158 |
+
*
|
159 |
+
* @return string
|
160 |
+
*/
|
161 |
+
public function getJsonConfig()
|
162 |
+
{
|
163 |
+
$config = array();
|
164 |
+
|
165 |
+
foreach ($this->getOptions() as $option) {
|
166 |
+
/* @var $option Mage_Catalog_Model_Product_Option */
|
167 |
+
$priceValue = 0;
|
168 |
+
if ($option->getGroupByType() == Mage_Catalog_Model_Product_Option::OPTION_GROUP_SELECT) {
|
169 |
+
$_tmpPriceValues = array();
|
170 |
+
foreach ($option->getValues() as $value) {
|
171 |
+
/* @var $value Mage_Catalog_Model_Product_Option_Value */
|
172 |
+
$id = $value->getId();
|
173 |
+
$_tmpPriceValues[$id] = $this->_getPriceConfiguration($value);
|
174 |
+
}
|
175 |
+
$priceValue = $_tmpPriceValues;
|
176 |
+
} else {
|
177 |
+
$priceValue = $this->_getPriceConfiguration($option);
|
178 |
+
}
|
179 |
+
$config[$option->getId()] = $priceValue;
|
180 |
+
}
|
181 |
+
|
182 |
+
return Mage::helper('core')->jsonEncode($config);
|
183 |
+
}
|
184 |
+
|
185 |
+
/**
|
186 |
+
* Get option html block
|
187 |
+
*
|
188 |
+
* @param Mage_Catalog_Model_Product_Option $option
|
189 |
+
*/
|
190 |
+
public function getOptionHtml(Mage_Catalog_Model_Product_Option $option)
|
191 |
+
{
|
192 |
+
$renderer = $this->getOptionRender(
|
193 |
+
$this->getGroupOfOption($option->getType())
|
194 |
+
);
|
195 |
+
if (is_null($renderer['renderer'])) {
|
196 |
+
$renderer['renderer'] = $this->getLayout()->createBlock($renderer['block'])
|
197 |
+
->setTemplate($renderer['template']);
|
198 |
+
}
|
199 |
+
return $renderer['renderer']
|
200 |
+
->setProduct($this->getProduct())
|
201 |
+
->setOption($option)
|
202 |
+
->toHtml();
|
203 |
+
}
|
204 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Abstract.php
ADDED
@@ -0,0 +1,177 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product options abstract type block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
abstract class Mage_Catalog_Block_Product_View_Options_Abstract extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Product object
|
39 |
+
*
|
40 |
+
* @var Mage_Catalog_Model_Product
|
41 |
+
*/
|
42 |
+
protected $_product;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Product option object
|
46 |
+
*
|
47 |
+
* @var Mage_Catalog_Model_Product_Option
|
48 |
+
*/
|
49 |
+
protected $_option;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Set Product object
|
53 |
+
*
|
54 |
+
* @param Mage_Catalog_Model_Product $product
|
55 |
+
* @return Mage_Catalog_Block_Product_View_Options_Abstract
|
56 |
+
*/
|
57 |
+
public function setProduct(Mage_Catalog_Model_Product $product = null)
|
58 |
+
{
|
59 |
+
$this->_product = $product;
|
60 |
+
return $this;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Retrieve Product object
|
65 |
+
*
|
66 |
+
* @return Mage_Catalog_Model_Product
|
67 |
+
*/
|
68 |
+
public function getProduct()
|
69 |
+
{
|
70 |
+
return $this->_product;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Set option
|
75 |
+
*
|
76 |
+
* @param Mage_Catalog_Model_Product_Option $option
|
77 |
+
* @return Mage_Catalog_Block_Product_View_Options_Abstract
|
78 |
+
*/
|
79 |
+
public function setOption(Mage_Catalog_Model_Product_Option $option)
|
80 |
+
{
|
81 |
+
$this->_option = $option;
|
82 |
+
return $this;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Get option
|
87 |
+
*
|
88 |
+
* @return Mage_Catalog_Model_Product_Option
|
89 |
+
*/
|
90 |
+
public function getOption()
|
91 |
+
{
|
92 |
+
return $this->_option;
|
93 |
+
}
|
94 |
+
|
95 |
+
public function getFormatedPrice()
|
96 |
+
{
|
97 |
+
if ($option = $this->getOption()) {
|
98 |
+
return $this->_formatPrice(array(
|
99 |
+
'is_percent' => ($option->getPriceType() == 'percent'),
|
100 |
+
'pricing_value' => $option->getPrice($option->getPriceType() == 'percent')
|
101 |
+
));
|
102 |
+
}
|
103 |
+
return '';
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Return formated price
|
108 |
+
*
|
109 |
+
* @param array $value
|
110 |
+
* @return string
|
111 |
+
*/
|
112 |
+
protected function _formatPrice($value, $flag=true)
|
113 |
+
{
|
114 |
+
if ($value['pricing_value'] == 0) {
|
115 |
+
return '';
|
116 |
+
}
|
117 |
+
|
118 |
+
$taxHelper = Mage::helper('tax');
|
119 |
+
$store = $this->getProduct()->getStore();
|
120 |
+
|
121 |
+
$sign = '+';
|
122 |
+
if ($value['pricing_value'] < 0) {
|
123 |
+
$sign = '-';
|
124 |
+
$value['pricing_value'] = 0 - $value['pricing_value'];
|
125 |
+
}
|
126 |
+
|
127 |
+
$priceStr = $sign;
|
128 |
+
$_priceInclTax = $this->getPrice($value['pricing_value'], true);
|
129 |
+
$_priceExclTax = $this->getPrice($value['pricing_value']);
|
130 |
+
if ($taxHelper->displayPriceIncludingTax()) {
|
131 |
+
$priceStr .= $this->helper('core')->currencyByStore($_priceInclTax, $store, true, $flag);
|
132 |
+
} elseif ($taxHelper->displayPriceExcludingTax()) {
|
133 |
+
$priceStr .= $this->helper('core')->currencyByStore($_priceExclTax, $store, true, $flag);
|
134 |
+
} elseif ($taxHelper->displayBothPrices()) {
|
135 |
+
$priceStr .= $this->helper('core')->currencyByStore($_priceExclTax, $store, true, $flag);
|
136 |
+
if ($_priceInclTax != $_priceExclTax) {
|
137 |
+
$priceStr .= ' ('.$sign.$this->helper('core')
|
138 |
+
->currencyByStore($_priceInclTax, $store, true, $flag).' '.$this->__('Incl. Tax').')';
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
if ($flag) {
|
143 |
+
$priceStr = '<span class="price-notice">'.$priceStr.'</span>';
|
144 |
+
}
|
145 |
+
|
146 |
+
return $priceStr;
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Get price with including/excluding tax
|
151 |
+
*
|
152 |
+
* @param decimal $price
|
153 |
+
* @param bool $includingTax
|
154 |
+
* @return decimal
|
155 |
+
*/
|
156 |
+
public function getPrice($price, $includingTax = null)
|
157 |
+
{
|
158 |
+
if (!is_null($includingTax)) {
|
159 |
+
$price = Mage::helper('tax')->getPrice($this->getProduct(), $price, true);
|
160 |
+
} else {
|
161 |
+
$price = Mage::helper('tax')->getPrice($this->getProduct(), $price);
|
162 |
+
}
|
163 |
+
return $price;
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Returns price converted to current currency rate
|
168 |
+
*
|
169 |
+
* @param float $price
|
170 |
+
* @return float
|
171 |
+
*/
|
172 |
+
public function getCurrencyPrice($price)
|
173 |
+
{
|
174 |
+
$store = $this->getProduct()->getStore();
|
175 |
+
return $this->helper('core')->currencyByStore($price, $store, false);
|
176 |
+
}
|
177 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Date.php
ADDED
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product options text type block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_View_Options_Type_Date extends Mage_Catalog_Block_Product_View_Options_Abstract
|
36 |
+
{
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Fill date and time options with leading zeros or not
|
40 |
+
*
|
41 |
+
* @var boolean
|
42 |
+
*/
|
43 |
+
protected $_fillLeadingZeros = true;
|
44 |
+
|
45 |
+
protected function _prepareLayout()
|
46 |
+
{
|
47 |
+
if ($head = $this->getLayout()->getBlock('head')) {
|
48 |
+
$head->setCanLoadCalendarJs(true);
|
49 |
+
}
|
50 |
+
return parent::_prepareLayout();
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Use JS calendar settings
|
55 |
+
*
|
56 |
+
* @return boolean
|
57 |
+
*/
|
58 |
+
public function useCalendar()
|
59 |
+
{
|
60 |
+
return Mage::getSingleton('catalog/product_option_type_date')->useCalendar();
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Date input
|
65 |
+
*
|
66 |
+
* @return string Formatted Html
|
67 |
+
*/
|
68 |
+
public function getDateHtml()
|
69 |
+
{
|
70 |
+
if ($this->useCalendar()) {
|
71 |
+
return $this->getCalendarDateHtml();
|
72 |
+
} else {
|
73 |
+
return $this->getDropDownsDateHtml();
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* JS Calendar html
|
79 |
+
*
|
80 |
+
* @return string Formatted Html
|
81 |
+
*/
|
82 |
+
public function getCalendarDateHtml()
|
83 |
+
{
|
84 |
+
$option = $this->getOption();
|
85 |
+
$value = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $option->getId() . '/date');
|
86 |
+
|
87 |
+
//$require = $this->getOption()->getIsRequire() ? ' required-entry' : '';
|
88 |
+
$require = '';
|
89 |
+
|
90 |
+
$yearStart = Mage::getSingleton('catalog/product_option_type_date')->getYearStart();
|
91 |
+
$yearEnd = Mage::getSingleton('catalog/product_option_type_date')->getYearEnd();
|
92 |
+
|
93 |
+
$calendar = $this->getLayout()
|
94 |
+
->createBlock('core/html_date')
|
95 |
+
->setId('options_'.$this->getOption()->getId().'_date')
|
96 |
+
->setName('options['.$this->getOption()->getId().'][date]')
|
97 |
+
->setClass('product-custom-option datetime-picker input-text' . $require)
|
98 |
+
->setImage($this->getSkinUrl('images/calendar.gif'))
|
99 |
+
->setFormat(Mage::app()->getLocale()->getDateStrFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT))
|
100 |
+
->setValue($value)
|
101 |
+
->setYearsRange('[' . $yearStart . ', ' . $yearEnd . ']');
|
102 |
+
if (!$this->getSkipJsReloadPrice()) {
|
103 |
+
$calendar->setExtraParams('onchange="opConfig.reloadPrice()"');
|
104 |
+
}
|
105 |
+
|
106 |
+
return $calendar->getHtml();
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Date (dd/mm/yyyy) html drop-downs
|
111 |
+
*
|
112 |
+
* @return string Formatted Html
|
113 |
+
*/
|
114 |
+
public function getDropDownsDateHtml()
|
115 |
+
{
|
116 |
+
$fieldsSeparator = ' ';
|
117 |
+
$fieldsOrder = Mage::getSingleton('catalog/product_option_type_date')->getConfigData('date_fields_order');
|
118 |
+
$fieldsOrder = str_replace(',', $fieldsSeparator, $fieldsOrder);
|
119 |
+
|
120 |
+
$monthsHtml = $this->_getSelectFromToHtml('month', 1, 12);
|
121 |
+
$daysHtml = $this->_getSelectFromToHtml('day', 1, 31);
|
122 |
+
|
123 |
+
$yearStart = Mage::getSingleton('catalog/product_option_type_date')->getYearStart();
|
124 |
+
$yearEnd = Mage::getSingleton('catalog/product_option_type_date')->getYearEnd();
|
125 |
+
$yearsHtml = $this->_getSelectFromToHtml('year', $yearStart, $yearEnd);
|
126 |
+
|
127 |
+
$translations = array(
|
128 |
+
'd' => $daysHtml,
|
129 |
+
'm' => $monthsHtml,
|
130 |
+
'y' => $yearsHtml
|
131 |
+
);
|
132 |
+
return strtr($fieldsOrder, $translations);
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Time (hh:mm am/pm) html drop-downs
|
137 |
+
*
|
138 |
+
* @return string Formatted Html
|
139 |
+
*/
|
140 |
+
public function getTimeHtml()
|
141 |
+
{
|
142 |
+
if (Mage::getSingleton('catalog/product_option_type_date')->is24hTimeFormat()) {
|
143 |
+
$hourStart = 0;
|
144 |
+
$hourEnd = 23;
|
145 |
+
$dayPartHtml = '';
|
146 |
+
} else {
|
147 |
+
$hourStart = 1;
|
148 |
+
$hourEnd = 12;
|
149 |
+
$dayPartHtml = $this->_getHtmlSelect('day_part')
|
150 |
+
->setOptions(array(
|
151 |
+
'am' => Mage::helper('catalog')->__('AM'),
|
152 |
+
'pm' => Mage::helper('catalog')->__('PM')
|
153 |
+
))
|
154 |
+
->getHtml();
|
155 |
+
}
|
156 |
+
$hoursHtml = $this->_getSelectFromToHtml('hour', $hourStart, $hourEnd);
|
157 |
+
$minutesHtml = $this->_getSelectFromToHtml('minute', 0, 59);
|
158 |
+
|
159 |
+
return $hoursHtml . ' <b>:</b> ' . $minutesHtml . ' ' . $dayPartHtml;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Return drop-down html with range of values
|
164 |
+
*
|
165 |
+
* @param string $name Id/name of html select element
|
166 |
+
* @param int $from Start position
|
167 |
+
* @param int $to End position
|
168 |
+
* @param int $value Value selected
|
169 |
+
* @return string Formatted Html
|
170 |
+
*/
|
171 |
+
protected function _getSelectFromToHtml($name, $from, $to, $value = null)
|
172 |
+
{
|
173 |
+
$options = array(
|
174 |
+
array('value' => '', 'label' => '-')
|
175 |
+
);
|
176 |
+
for ($i = $from; $i <= $to; $i++) {
|
177 |
+
$options[] = array('value' => $i, 'label' => $this->_getValueWithLeadingZeros($i));
|
178 |
+
}
|
179 |
+
return $this->_getHtmlSelect($name, $value)
|
180 |
+
->setOptions($options)
|
181 |
+
->getHtml();
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* HTML select element
|
186 |
+
*
|
187 |
+
* @param string $name Id/name of html select element
|
188 |
+
* @return Mage_Core_Block_Html_Select
|
189 |
+
*/
|
190 |
+
protected function _getHtmlSelect($name, $value = null)
|
191 |
+
{
|
192 |
+
$option = $this->getOption();
|
193 |
+
|
194 |
+
// $require = $this->getOption()->getIsRequire() ? ' required-entry' : '';
|
195 |
+
$require = '';
|
196 |
+
$select = $this->getLayout()->createBlock('core/html_select')
|
197 |
+
->setId('options_' . $this->getOption()->getId() . '_' . $name)
|
198 |
+
->setClass('product-custom-option datetime-picker' . $require)
|
199 |
+
->setExtraParams()
|
200 |
+
->setName('options[' . $option->getId() . '][' . $name . ']');
|
201 |
+
|
202 |
+
$extraParams = 'style="width:auto"';
|
203 |
+
if (!$this->getSkipJsReloadPrice()) {
|
204 |
+
$extraParams .= ' onchange="opConfig.reloadPrice()"';
|
205 |
+
}
|
206 |
+
$select->setExtraParams($extraParams);
|
207 |
+
|
208 |
+
if (is_null($value)) {
|
209 |
+
$value = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $option->getId() . '/' . $name);
|
210 |
+
}
|
211 |
+
if (!is_null($value)) {
|
212 |
+
$select->setValue($value);
|
213 |
+
}
|
214 |
+
|
215 |
+
return $select;
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Add Leading Zeros to number less than 10
|
220 |
+
*
|
221 |
+
* @param int
|
222 |
+
* @return string
|
223 |
+
*/
|
224 |
+
protected function _getValueWithLeadingZeros($value)
|
225 |
+
{
|
226 |
+
if (!$this->_fillLeadingZeros) {
|
227 |
+
return $value;
|
228 |
+
}
|
229 |
+
return $value < 10 ? '0'.$value : $value;
|
230 |
+
}
|
231 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Default.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product options default type block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_View_Options_Type_Default
|
36 |
+
extends Mage_Catalog_Block_Product_View_Options_Abstract
|
37 |
+
{
|
38 |
+
|
39 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/File.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product options text type block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_View_Options_Type_File
|
36 |
+
extends Mage_Catalog_Block_Product_View_Options_Abstract
|
37 |
+
{
|
38 |
+
/**
|
39 |
+
* Returns info of file
|
40 |
+
*
|
41 |
+
* @return string
|
42 |
+
*/
|
43 |
+
public function getFileInfo()
|
44 |
+
{
|
45 |
+
$info = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $this->getOption()->getId());
|
46 |
+
if (empty($info)) {
|
47 |
+
$info = new Varien_Object();
|
48 |
+
} else if (is_array($info)) {
|
49 |
+
$info = new Varien_Object($info);
|
50 |
+
}
|
51 |
+
return $info;
|
52 |
+
}
|
53 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Select.php
ADDED
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product options text type block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_View_Options_Type_Select
|
36 |
+
extends Mage_Catalog_Block_Product_View_Options_Abstract
|
37 |
+
{
|
38 |
+
/**
|
39 |
+
* Return html for control element
|
40 |
+
*
|
41 |
+
* @return string
|
42 |
+
*/
|
43 |
+
public function getValuesHtml()
|
44 |
+
{
|
45 |
+
$_option = $this->getOption();
|
46 |
+
$configValue = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $_option->getId());
|
47 |
+
$store = $this->getProduct()->getStore();
|
48 |
+
|
49 |
+
if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN
|
50 |
+
|| $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE) {
|
51 |
+
$require = ($_option->getIsRequire()) ? ' required-entry' : '';
|
52 |
+
$extraParams = '';
|
53 |
+
$select = $this->getLayout()->createBlock('core/html_select')
|
54 |
+
->setData(array(
|
55 |
+
'id' => 'select_'.$_option->getId(),
|
56 |
+
'class' => $require.' product-custom-option'
|
57 |
+
));
|
58 |
+
if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN) {
|
59 |
+
$select->setName('options['.$_option->getid().']')
|
60 |
+
->addOption('', $this->__('-- Please Select --'));
|
61 |
+
} else {
|
62 |
+
$select->setName('options['.$_option->getid().'][]');
|
63 |
+
$select->setClass('multiselect'.$require.' product-custom-option');
|
64 |
+
}
|
65 |
+
foreach ($_option->getValues() as $_value) {
|
66 |
+
$priceStr = $this->_formatPrice(array(
|
67 |
+
'is_percent' => ($_value->getPriceType() == 'percent'),
|
68 |
+
'pricing_value' => $_value->getPrice(($_value->getPriceType() == 'percent'))
|
69 |
+
), false);
|
70 |
+
$select->addOption(
|
71 |
+
$_value->getOptionTypeId(),
|
72 |
+
$_value->getTitle() . ' ' . $priceStr . '',
|
73 |
+
array('price' => $this->helper('core')->currencyByStore($_value->getPrice(true), $store, false))
|
74 |
+
);
|
75 |
+
}
|
76 |
+
if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE) {
|
77 |
+
$extraParams = ' multiple="multiple"';
|
78 |
+
}
|
79 |
+
if (!$this->getSkipJsReloadPrice()) {
|
80 |
+
$extraParams .= ' onchange="opConfig.reloadPrice()"';
|
81 |
+
}
|
82 |
+
$select->setExtraParams($extraParams);
|
83 |
+
|
84 |
+
if ($configValue) {
|
85 |
+
$select->setValue($configValue);
|
86 |
+
}
|
87 |
+
|
88 |
+
return $select->getHtml();
|
89 |
+
}
|
90 |
+
|
91 |
+
if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO
|
92 |
+
|| $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX
|
93 |
+
) {
|
94 |
+
$selectHtml = '<ul id="options-'.$_option->getId().'-list" class="options-list">';
|
95 |
+
$require = ($_option->getIsRequire()) ? ' validate-one-required-by-name' : '';
|
96 |
+
$arraySign = '';
|
97 |
+
switch ($_option->getType()) {
|
98 |
+
case Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO:
|
99 |
+
$type = 'radio';
|
100 |
+
$class = 'radio';
|
101 |
+
if (!$_option->getIsRequire()) {
|
102 |
+
$selectHtml .= '<li><input type="radio" id="options_' . $_option->getId() . '" class="'
|
103 |
+
. $class . ' product-custom-option" name="options[' . $_option->getId() . ']"'
|
104 |
+
. ($this->getSkipJsReloadPrice() ? '' : ' onclick="opConfig.reloadPrice()"')
|
105 |
+
. ' value="" checked="checked" /><span class="label"><label for="options_'
|
106 |
+
. $_option->getId() . '">' . $this->__('None') . '</label></span></li>';
|
107 |
+
}
|
108 |
+
break;
|
109 |
+
case Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX:
|
110 |
+
$type = 'checkbox';
|
111 |
+
$class = 'checkbox';
|
112 |
+
$arraySign = '[]';
|
113 |
+
break;
|
114 |
+
}
|
115 |
+
$count = 1;
|
116 |
+
foreach ($_option->getValues() as $_value) {
|
117 |
+
$count++;
|
118 |
+
|
119 |
+
$priceStr = $this->_formatPrice(array(
|
120 |
+
'is_percent' => ($_value->getPriceType() == 'percent'),
|
121 |
+
'pricing_value' => $_value->getPrice($_value->getPriceType() == 'percent')
|
122 |
+
));
|
123 |
+
|
124 |
+
$htmlValue = $_value->getOptionTypeId();
|
125 |
+
if ($arraySign) {
|
126 |
+
$checked = (is_array($configValue) && in_array($htmlValue, $configValue)) ? 'checked' : '';
|
127 |
+
} else {
|
128 |
+
$checked = $configValue == $htmlValue ? 'checked' : '';
|
129 |
+
}
|
130 |
+
|
131 |
+
$selectHtml .= '<li>' . '<input type="' . $type . '" class="' . $class . ' ' . $require
|
132 |
+
. ' product-custom-option"'
|
133 |
+
. ($this->getSkipJsReloadPrice() ? '' : ' onclick="opConfig.reloadPrice()"')
|
134 |
+
. ' name="options[' . $_option->getId() . ']' . $arraySign . '" id="options_' . $_option->getId()
|
135 |
+
. '_' . $count . '" value="' . $htmlValue . '" ' . $checked . ' price="'
|
136 |
+
. $this->helper('core')->currencyByStore($_value->getPrice(true), $store, false) . '" />'
|
137 |
+
. '<span class="label"><label for="options_' . $_option->getId() . '_' . $count . '">'
|
138 |
+
. $_value->getTitle() . ' ' . $priceStr . '</label></span>';
|
139 |
+
if ($_option->getIsRequire()) {
|
140 |
+
$selectHtml .= '<script type="text/javascript">' . '$(\'options_' . $_option->getId() . '_'
|
141 |
+
. $count . '\').advaiceContainer = \'options-' . $_option->getId() . '-container\';'
|
142 |
+
. '$(\'options_' . $_option->getId() . '_' . $count
|
143 |
+
. '\').callbackFunction = \'validateOptionsCallback\';' . '</script>';
|
144 |
+
}
|
145 |
+
$selectHtml .= '</li>';
|
146 |
+
}
|
147 |
+
$selectHtml .= '</ul>';
|
148 |
+
|
149 |
+
return $selectHtml;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Text.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product options text type block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_View_Options_Type_Text
|
36 |
+
extends Mage_Catalog_Block_Product_View_Options_Abstract
|
37 |
+
{
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Returns default value to show in text input
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
public function getDefaultValue()
|
45 |
+
{
|
46 |
+
return $this->getProduct()->getPreconfiguredValues()->getData('options/' . $this->getOption()->getId());
|
47 |
+
}
|
48 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Price.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog product price block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_View_Price extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
public function getPrice()
|
38 |
+
{
|
39 |
+
$product = Mage::registry('product');
|
40 |
+
/*if($product->isConfigurable()) {
|
41 |
+
$price = $product->getCalculatedPrice((array)$this->getRequest()->getParam('super_attribute', array()));
|
42 |
+
return Mage::app()->getStore()->formatPrice($price);
|
43 |
+
}*/
|
44 |
+
|
45 |
+
return $product->getFormatedPrice();
|
46 |
+
}
|
47 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Tabs.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product information tabs
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Musho_Flipdefine_Block_Product_View_Tabs extends Mage_Core_Block_Template
|
36 |
+
{
|
37 |
+
protected $_tabs = array();
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Add tab to the container
|
41 |
+
*
|
42 |
+
* @param string $title
|
43 |
+
* @param string $block
|
44 |
+
* @param string $template
|
45 |
+
*/
|
46 |
+
function addTab($alias, $title, $block, $template)
|
47 |
+
{
|
48 |
+
|
49 |
+
if (!$title || !$block || !$template) {
|
50 |
+
return false;
|
51 |
+
}
|
52 |
+
|
53 |
+
$this->_tabs[] = array(
|
54 |
+
'alias' => $alias,
|
55 |
+
'title' => $title
|
56 |
+
);
|
57 |
+
|
58 |
+
$this->setChild($alias,
|
59 |
+
$this->getLayout()->createBlock($block, $alias)
|
60 |
+
->setTemplate($template)
|
61 |
+
);
|
62 |
+
}
|
63 |
+
|
64 |
+
function getTabs()
|
65 |
+
{
|
66 |
+
return $this->_tabs;
|
67 |
+
}
|
68 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Configurable.php
ADDED
@@ -0,0 +1,363 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog super product configurable part block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_View_Type_Configurable extends Mage_Catalog_Block_Product_View_Abstract
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Prices
|
39 |
+
*
|
40 |
+
* @var array
|
41 |
+
*/
|
42 |
+
protected $_prices = array();
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Prepared prices
|
46 |
+
*
|
47 |
+
* @var array
|
48 |
+
*/
|
49 |
+
protected $_resPrices = array();
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Get allowed attributes
|
53 |
+
*
|
54 |
+
* @return array
|
55 |
+
*/
|
56 |
+
public function getAllowAttributes()
|
57 |
+
{
|
58 |
+
return $this->getProduct()->getTypeInstance(true)
|
59 |
+
->getConfigurableAttributes($this->getProduct());
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Check if allowed attributes have options
|
64 |
+
*
|
65 |
+
* @return bool
|
66 |
+
*/
|
67 |
+
public function hasOptions()
|
68 |
+
{
|
69 |
+
$attributes = $this->getAllowAttributes();
|
70 |
+
if (count($attributes)) {
|
71 |
+
foreach ($attributes as $attribute) {
|
72 |
+
/** @var Mage_Catalog_Model_Product_Type_Configurable_Attribute $attribute */
|
73 |
+
if ($attribute->getData('prices')) {
|
74 |
+
return true;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
}
|
78 |
+
return false;
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Get Allowed Products
|
83 |
+
*
|
84 |
+
* @return array
|
85 |
+
*/
|
86 |
+
public function getAllowProducts()
|
87 |
+
{
|
88 |
+
if (!$this->hasAllowProducts()) {
|
89 |
+
$products = array();
|
90 |
+
$skipSaleableCheck = Mage::helper('catalog/product')->getSkipSaleableCheck();
|
91 |
+
$allProducts = $this->getProduct()->getTypeInstance(true)
|
92 |
+
->getUsedProducts(null, $this->getProduct());
|
93 |
+
foreach ($allProducts as $product) {
|
94 |
+
if ($product->isSaleable() || $skipSaleableCheck) {
|
95 |
+
$products[] = $product;
|
96 |
+
}
|
97 |
+
}
|
98 |
+
$this->setAllowProducts($products);
|
99 |
+
}
|
100 |
+
return $this->getData('allow_products');
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* retrieve current store
|
105 |
+
*
|
106 |
+
* @return Mage_Core_Model_Store
|
107 |
+
*/
|
108 |
+
public function getCurrentStore()
|
109 |
+
{
|
110 |
+
return Mage::app()->getStore();
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Returns additional values for js config, con be overriden by descedants
|
115 |
+
*
|
116 |
+
* @return array
|
117 |
+
*/
|
118 |
+
protected function _getAdditionalConfig()
|
119 |
+
{
|
120 |
+
return array();
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Composes configuration for js
|
125 |
+
*
|
126 |
+
* @return string
|
127 |
+
*/
|
128 |
+
public function getJsonConfig()
|
129 |
+
{
|
130 |
+
$attributes = array();
|
131 |
+
$options = array();
|
132 |
+
$store = $this->getCurrentStore();
|
133 |
+
$taxHelper = Mage::helper('tax');
|
134 |
+
$currentProduct = $this->getProduct();
|
135 |
+
|
136 |
+
$preconfiguredFlag = $currentProduct->hasPreconfiguredValues();
|
137 |
+
if ($preconfiguredFlag) {
|
138 |
+
$preconfiguredValues = $currentProduct->getPreconfiguredValues();
|
139 |
+
$defaultValues = array();
|
140 |
+
}
|
141 |
+
|
142 |
+
foreach ($this->getAllowProducts() as $product) {
|
143 |
+
$productId = $product->getId();
|
144 |
+
|
145 |
+
foreach ($this->getAllowAttributes() as $attribute) {
|
146 |
+
$productAttribute = $attribute->getProductAttribute();
|
147 |
+
$productAttributeId = $productAttribute->getId();
|
148 |
+
$attributeValue = $product->getData($productAttribute->getAttributeCode());
|
149 |
+
if (!isset($options[$productAttributeId])) {
|
150 |
+
$options[$productAttributeId] = array();
|
151 |
+
}
|
152 |
+
|
153 |
+
if (!isset($options[$productAttributeId][$attributeValue])) {
|
154 |
+
$options[$productAttributeId][$attributeValue] = array();
|
155 |
+
}
|
156 |
+
$options[$productAttributeId][$attributeValue][] = $productId;
|
157 |
+
}
|
158 |
+
}
|
159 |
+
|
160 |
+
$this->_resPrices = array(
|
161 |
+
$this->_preparePrice($currentProduct->getFinalPrice())
|
162 |
+
);
|
163 |
+
|
164 |
+
foreach ($this->getAllowAttributes() as $attribute) {
|
165 |
+
$productAttribute = $attribute->getProductAttribute();
|
166 |
+
$attributeId = $productAttribute->getId();
|
167 |
+
$info = array(
|
168 |
+
'id' => $productAttribute->getId(),
|
169 |
+
'code' => $productAttribute->getAttributeCode(),
|
170 |
+
'label' => $attribute->getLabel(),
|
171 |
+
'options' => array()
|
172 |
+
);
|
173 |
+
|
174 |
+
$optionPrices = array();
|
175 |
+
$prices = $attribute->getPrices();
|
176 |
+
if (is_array($prices)) {
|
177 |
+
foreach ($prices as $value) {
|
178 |
+
if(!$this->_validateAttributeValue($attributeId, $value, $options)) {
|
179 |
+
continue;
|
180 |
+
}
|
181 |
+
$currentProduct->setConfigurablePrice(
|
182 |
+
$this->_preparePrice($value['pricing_value'], $value['is_percent'])
|
183 |
+
);
|
184 |
+
$currentProduct->setParentId(true);
|
185 |
+
Mage::dispatchEvent(
|
186 |
+
'catalog_product_type_configurable_price',
|
187 |
+
array('product' => $currentProduct)
|
188 |
+
);
|
189 |
+
$configurablePrice = $currentProduct->getConfigurablePrice();
|
190 |
+
|
191 |
+
if (isset($options[$attributeId][$value['value_index']])) {
|
192 |
+
$productsIndex = $options[$attributeId][$value['value_index']];
|
193 |
+
} else {
|
194 |
+
$productsIndex = array();
|
195 |
+
}
|
196 |
+
|
197 |
+
$info['options'][] = array(
|
198 |
+
'id' => $value['value_index'],
|
199 |
+
'label' => $value['label'],
|
200 |
+
'price' => $configurablePrice,
|
201 |
+
'oldPrice' => $this->_prepareOldPrice($value['pricing_value'], $value['is_percent']),
|
202 |
+
'products' => $productsIndex,
|
203 |
+
);
|
204 |
+
$optionPrices[] = $configurablePrice;
|
205 |
+
}
|
206 |
+
}
|
207 |
+
/**
|
208 |
+
* Prepare formated values for options choose
|
209 |
+
*/
|
210 |
+
foreach ($optionPrices as $optionPrice) {
|
211 |
+
foreach ($optionPrices as $additional) {
|
212 |
+
$this->_preparePrice(abs($additional-$optionPrice));
|
213 |
+
}
|
214 |
+
}
|
215 |
+
if($this->_validateAttributeInfo($info)) {
|
216 |
+
$attributes[$attributeId] = $info;
|
217 |
+
}
|
218 |
+
|
219 |
+
// Add attribute default value (if set)
|
220 |
+
if ($preconfiguredFlag) {
|
221 |
+
$configValue = $preconfiguredValues->getData('super_attribute/' . $attributeId);
|
222 |
+
if ($configValue) {
|
223 |
+
$defaultValues[$attributeId] = $configValue;
|
224 |
+
}
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
$taxCalculation = Mage::getSingleton('tax/calculation');
|
229 |
+
if (!$taxCalculation->getCustomer() && Mage::registry('current_customer')) {
|
230 |
+
$taxCalculation->setCustomer(Mage::registry('current_customer'));
|
231 |
+
}
|
232 |
+
|
233 |
+
$_request = $taxCalculation->getRateRequest(false, false, false);
|
234 |
+
$_request->setProductClassId($currentProduct->getTaxClassId());
|
235 |
+
$defaultTax = $taxCalculation->getRate($_request);
|
236 |
+
|
237 |
+
$_request = $taxCalculation->getRateRequest();
|
238 |
+
$_request->setProductClassId($currentProduct->getTaxClassId());
|
239 |
+
$currentTax = $taxCalculation->getRate($_request);
|
240 |
+
|
241 |
+
$taxConfig = array(
|
242 |
+
'includeTax' => $taxHelper->priceIncludesTax(),
|
243 |
+
'showIncludeTax' => $taxHelper->displayPriceIncludingTax(),
|
244 |
+
'showBothPrices' => $taxHelper->displayBothPrices(),
|
245 |
+
'defaultTax' => $defaultTax,
|
246 |
+
'currentTax' => $currentTax,
|
247 |
+
'inclTaxTitle' => Mage::helper('catalog')->__('Incl. Tax')
|
248 |
+
);
|
249 |
+
|
250 |
+
$config = array(
|
251 |
+
'attributes' => $attributes,
|
252 |
+
'template' => str_replace('%s', '#{price}', $store->getCurrentCurrency()->getOutputFormat()),
|
253 |
+
'basePrice' => $this->_registerJsPrice($this->_convertPrice($currentProduct->getFinalPrice())),
|
254 |
+
'oldPrice' => $this->_registerJsPrice($this->_convertPrice($currentProduct->getPrice())),
|
255 |
+
'productId' => $currentProduct->getId(),
|
256 |
+
'chooseText' => Mage::helper('catalog')->__('Choose an Option...'),
|
257 |
+
'taxConfig' => $taxConfig
|
258 |
+
);
|
259 |
+
|
260 |
+
if ($preconfiguredFlag && !empty($defaultValues)) {
|
261 |
+
$config['defaultValues'] = $defaultValues;
|
262 |
+
}
|
263 |
+
|
264 |
+
$config = array_merge($config, $this->_getAdditionalConfig());
|
265 |
+
|
266 |
+
return Mage::helper('core')->jsonEncode($config);
|
267 |
+
}
|
268 |
+
|
269 |
+
/**
|
270 |
+
* Validating of super product option value
|
271 |
+
*
|
272 |
+
* @param array $attributeId
|
273 |
+
* @param array $value
|
274 |
+
* @param array $options
|
275 |
+
* @return boolean
|
276 |
+
*/
|
277 |
+
protected function _validateAttributeValue($attributeId, &$value, &$options)
|
278 |
+
{
|
279 |
+
if(isset($options[$attributeId][$value['value_index']])) {
|
280 |
+
return true;
|
281 |
+
}
|
282 |
+
|
283 |
+
return false;
|
284 |
+
}
|
285 |
+
|
286 |
+
/**
|
287 |
+
* Validation of super product option
|
288 |
+
*
|
289 |
+
* @param array $info
|
290 |
+
* @return boolean
|
291 |
+
*/
|
292 |
+
protected function _validateAttributeInfo(&$info)
|
293 |
+
{
|
294 |
+
if(count($info['options']) > 0) {
|
295 |
+
return true;
|
296 |
+
}
|
297 |
+
return false;
|
298 |
+
}
|
299 |
+
|
300 |
+
/**
|
301 |
+
* Calculation real price
|
302 |
+
*
|
303 |
+
* @param float $price
|
304 |
+
* @param bool $isPercent
|
305 |
+
* @return mixed
|
306 |
+
*/
|
307 |
+
protected function _preparePrice($price, $isPercent = false)
|
308 |
+
{
|
309 |
+
if ($isPercent && !empty($price)) {
|
310 |
+
$price = $this->getProduct()->getFinalPrice() * $price / 100;
|
311 |
+
}
|
312 |
+
|
313 |
+
return $this->_registerJsPrice($this->_convertPrice($price, true));
|
314 |
+
}
|
315 |
+
|
316 |
+
/**
|
317 |
+
* Calculation price before special price
|
318 |
+
*
|
319 |
+
* @param float $price
|
320 |
+
* @param bool $isPercent
|
321 |
+
* @return mixed
|
322 |
+
*/
|
323 |
+
protected function _prepareOldPrice($price, $isPercent = false)
|
324 |
+
{
|
325 |
+
if ($isPercent && !empty($price)) {
|
326 |
+
$price = $this->getProduct()->getPrice() * $price / 100;
|
327 |
+
}
|
328 |
+
|
329 |
+
return $this->_registerJsPrice($this->_convertPrice($price, true));
|
330 |
+
}
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Replace ',' on '.' for js
|
334 |
+
*
|
335 |
+
* @param float $price
|
336 |
+
* @return string
|
337 |
+
*/
|
338 |
+
protected function _registerJsPrice($price)
|
339 |
+
{
|
340 |
+
return str_replace(',', '.', $price);
|
341 |
+
}
|
342 |
+
|
343 |
+
/**
|
344 |
+
* Convert price from default currency to current currency
|
345 |
+
*
|
346 |
+
* @param float $price
|
347 |
+
* @param boolean $round
|
348 |
+
* @return float
|
349 |
+
*/
|
350 |
+
protected function _convertPrice($price, $round = false)
|
351 |
+
{
|
352 |
+
if (empty($price)) {
|
353 |
+
return 0;
|
354 |
+
}
|
355 |
+
|
356 |
+
$price = $this->getCurrentStore()->convertPrice($price);
|
357 |
+
if ($round) {
|
358 |
+
$price = $this->getCurrentStore()->roundPrice($price);
|
359 |
+
}
|
360 |
+
|
361 |
+
return $price;
|
362 |
+
}
|
363 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Grouped.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Catalog grouped product info block
|
30 |
+
*
|
31 |
+
* @category Mage
|
32 |
+
* @package Mage_Catalog
|
33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
34 |
+
*/
|
35 |
+
class Mage_Catalog_Block_Product_View_Type_Grouped extends Mage_Catalog_Block_Product_View_Abstract
|
36 |
+
{
|
37 |
+
public function getAssociatedProducts()
|
38 |
+
{
|
39 |
+
return $this->getProduct()->getTypeInstance(true)
|
40 |
+
->getAssociatedProducts($this->getProduct());
|
41 |
+
}
|
42 |
+
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Set preconfigured values to grouped associated products
|
46 |
+
*
|
47 |
+
* @return Mage_Catalog_Block_Product_View_Type_Grouped
|
48 |
+
*/
|
49 |
+
public function setPreconfiguredValue() {
|
50 |
+
$configValues = $this->getProduct()->getPreconfiguredValues()->getSuperGroup();
|
51 |
+
if (is_array($configValues)) {
|
52 |
+
$associatedProducts = $this->getAssociatedProducts();
|
53 |
+
foreach ($associatedProducts as $item) {
|
54 |
+
if (isset($configValues[$item->getId()])) {
|
55 |
+
$item->setQty($configValues[$item->getId()]);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
return $this;
|
60 |
+
}
|
61 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Simple.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Simple product data view
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Mage_Catalog_Block_Product_View_Type_Simple extends Mage_Catalog_Block_Product_View_Abstract
|
35 |
+
{
|
36 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Virtual.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Simple product data view
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Mage_Catalog_Block_Product_View_Type_Virtual extends Mage_Catalog_Block_Product_View_Abstract
|
35 |
+
{
|
36 |
+
|
37 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Widget/Html/Pager.php
ADDED
@@ -0,0 +1,299 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* New products widget pager block
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Mage_Catalog_Block_Product_Widget_Html_Pager extends Mage_Page_Block_Html_Pager
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* Collection size
|
38 |
+
*
|
39 |
+
* Size of collection which may has a manual limitation
|
40 |
+
*
|
41 |
+
* @var int
|
42 |
+
*/
|
43 |
+
protected $_collectionSize;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Current page
|
47 |
+
*
|
48 |
+
* @var int
|
49 |
+
*/
|
50 |
+
protected $_currentPage;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Last page
|
54 |
+
*
|
55 |
+
* @var int
|
56 |
+
*/
|
57 |
+
protected $_lastPage;
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Return collection size
|
61 |
+
*
|
62 |
+
* It may be limited by manual
|
63 |
+
*
|
64 |
+
* @return int
|
65 |
+
*/
|
66 |
+
public function getCollectionSize()
|
67 |
+
{
|
68 |
+
if (null === $this->_collectionSize) {
|
69 |
+
$this->_collectionSize = $this->getCollection()->getSize();
|
70 |
+
if ($this->getTotalLimit() && $this->_collectionSize > $this->getTotalLimit()) {
|
71 |
+
$this->_collectionSize = $this->getTotalLimit();
|
72 |
+
}
|
73 |
+
}
|
74 |
+
return $this->_collectionSize;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Return number of current page
|
79 |
+
*
|
80 |
+
* If current page is grate then total count of page current page will be equals total count of page
|
81 |
+
*
|
82 |
+
* @return int
|
83 |
+
*/
|
84 |
+
public function getCurrentPage()
|
85 |
+
{
|
86 |
+
if (null === $this->_currentPage) {
|
87 |
+
$page = abs((int)$this->getRequest()->getParam($this->getPageVarName()));
|
88 |
+
if ($page > $this->getLastPageNum()) {
|
89 |
+
$this->_currentPage = $this->getLastPageNum();
|
90 |
+
} elseif ($page > 0) {
|
91 |
+
$this->_currentPage = $page;
|
92 |
+
} else {
|
93 |
+
$this->_currentPage = 1;
|
94 |
+
}
|
95 |
+
}
|
96 |
+
return $this->_currentPage;
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Return items count per page
|
101 |
+
*
|
102 |
+
* @return int
|
103 |
+
*/
|
104 |
+
public function getLimit()
|
105 |
+
{
|
106 |
+
if ($this->_limit > 0) {
|
107 |
+
return $this->_limit;
|
108 |
+
}
|
109 |
+
$limit = $this->getRequest()->getParam($this->getLimitVarName());
|
110 |
+
$limits = $this->getAvailableLimit();
|
111 |
+
if ($limit && isset($limits[$limit])) {
|
112 |
+
return $limit;
|
113 |
+
}
|
114 |
+
$limits = array_keys($limits);
|
115 |
+
return current($limits);
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Connect collection to paging
|
120 |
+
*
|
121 |
+
* @param Mage_Core_Model_Resource_Db_Collection_Abstract $collection
|
122 |
+
* @return Mage_Catalog_Block_Product_Widget_Html_Pager
|
123 |
+
*/
|
124 |
+
public function setCollection($collection)
|
125 |
+
{
|
126 |
+
$this->_collection = $collection;
|
127 |
+
$this->_collection->setPageSize(null)->setCurPage(null);
|
128 |
+
|
129 |
+
$collectionOffset = $this->getFirstNum() - 1;
|
130 |
+
$collectionLimit = $collectionOffset + $this->getLimit() > $this->getTotalNum()
|
131 |
+
? $this->getTotalNum() - $collectionOffset
|
132 |
+
: $this->getLimit();
|
133 |
+
|
134 |
+
$this->_collection->getSelect()->limit($collectionLimit, $collectionOffset);
|
135 |
+
$this->_setFrameInitialized(false);
|
136 |
+
return $this;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Return position number in collection for first item on current page
|
141 |
+
*
|
142 |
+
* @return int
|
143 |
+
*/
|
144 |
+
public function getFirstNum()
|
145 |
+
{
|
146 |
+
return $this->getLimit() * ($this->getCurrentPage() - 1) + 1;
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Return position number in collection for last item on current page
|
151 |
+
*
|
152 |
+
* @return int
|
153 |
+
*/
|
154 |
+
public function getLastNum()
|
155 |
+
{
|
156 |
+
$collection = $this->getCollection();
|
157 |
+
return $this->getLimit() * ($this->getCurrentPage() - 1) + $collection->count();
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Return total number of collection
|
162 |
+
*
|
163 |
+
* It may be limited by manual
|
164 |
+
*
|
165 |
+
* @return int
|
166 |
+
*/
|
167 |
+
public function getTotalNum()
|
168 |
+
{
|
169 |
+
return $this->getCollectionSize();
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Return number of last page
|
174 |
+
*
|
175 |
+
* @return bool
|
176 |
+
*/
|
177 |
+
public function getLastPageNum()
|
178 |
+
{
|
179 |
+
if (null === $this->_lastPage) {
|
180 |
+
$this->_lastPage = ceil($this->getCollectionSize() / $this->getLimit());
|
181 |
+
if ($this->_lastPage <= 0) {
|
182 |
+
$this->_lastPage = 1;
|
183 |
+
}
|
184 |
+
}
|
185 |
+
return $this->_lastPage;
|
186 |
+
}
|
187 |
+
|
188 |
+
/**
|
189 |
+
* Checks if current page is the first page
|
190 |
+
*
|
191 |
+
* @return bool
|
192 |
+
*/
|
193 |
+
public function isFirstPage()
|
194 |
+
{
|
195 |
+
return $this->getCurrentPage() == 1;
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Checks if current page is the last page
|
200 |
+
*
|
201 |
+
* @return bool
|
202 |
+
*/
|
203 |
+
public function isLastPage()
|
204 |
+
{
|
205 |
+
return $this->getCurrentPage() >= $this->getLastPageNum();
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Return array of pages
|
210 |
+
*
|
211 |
+
* @return array
|
212 |
+
*/
|
213 |
+
public function getPages()
|
214 |
+
{
|
215 |
+
$pages = array();
|
216 |
+
if ($this->getLastPageNum() <= $this->_displayPages) {
|
217 |
+
$pages = range(1, $this->getLastPageNum());
|
218 |
+
} else {
|
219 |
+
$half = ceil($this->_displayPages / 2);
|
220 |
+
if ($this->getCurrentPage() >= $half && $this->getCurrentPage() <= $this->getLastPageNum() - $half) {
|
221 |
+
$start = ($this->getCurrentPage() - $half) + 1;
|
222 |
+
$finish = ($start + $this->_displayPages) - 1;
|
223 |
+
} elseif ($this->getCurrentPage() < $half) {
|
224 |
+
$start = 1;
|
225 |
+
$finish = $this->_displayPages;
|
226 |
+
} elseif ($this->getCurrentPage() > ($this->getLastPageNum() - $half)) {
|
227 |
+
$finish = $this->getLastPageNum();
|
228 |
+
$start = $finish - $this->_displayPages + 1;
|
229 |
+
}
|
230 |
+
$pages = range($start, $finish);
|
231 |
+
}
|
232 |
+
return $pages;
|
233 |
+
}
|
234 |
+
|
235 |
+
/**
|
236 |
+
* Retrieve url for previous page
|
237 |
+
*
|
238 |
+
* @return string
|
239 |
+
*/
|
240 |
+
public function getPreviousPageUrl()
|
241 |
+
{
|
242 |
+
return $this->getPageUrl($this->getCurrentPage() - 1);
|
243 |
+
}
|
244 |
+
|
245 |
+
/**
|
246 |
+
* Retrieve url for next page
|
247 |
+
*
|
248 |
+
* @return string
|
249 |
+
*/
|
250 |
+
public function getNextPageUrl()
|
251 |
+
{
|
252 |
+
return $this->getPageUrl($this->getCurrentPage() + 1);
|
253 |
+
}
|
254 |
+
|
255 |
+
/**
|
256 |
+
* Retrieve url for last page
|
257 |
+
*
|
258 |
+
* @return string
|
259 |
+
*/
|
260 |
+
public function getLastPageUrl()
|
261 |
+
{
|
262 |
+
return $this->getPageUrl($this->getLastPageNum());
|
263 |
+
}
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Initialize frame data, such as frame start, frame start etc.
|
267 |
+
*
|
268 |
+
* @return Mage_Catalog_Block_Product_Widget_Html_Pager
|
269 |
+
*/
|
270 |
+
protected function _initFrame()
|
271 |
+
{
|
272 |
+
if (!$this->isFrameInitialized()) {
|
273 |
+
$start = 0;
|
274 |
+
$end = 0;
|
275 |
+
|
276 |
+
if ($this->getLastPageNum() <= $this->getFrameLength()) {
|
277 |
+
$start = 1;
|
278 |
+
$end = $this->getLastPageNum();
|
279 |
+
} else {
|
280 |
+
$half = ceil($this->getFrameLength() / 2);
|
281 |
+
if ($this->getCurrentPage() >= $half && $this->getCurrentPage() <= $this->getLastPageNum() - $half) {
|
282 |
+
$start = ($this->getCurrentPage() - $half) + 1;
|
283 |
+
$end = ($start + $this->getFrameLength()) - 1;
|
284 |
+
} elseif ($this->getCurrentPage() < $half) {
|
285 |
+
$start = 1;
|
286 |
+
$end = $this->getFrameLength();
|
287 |
+
} elseif ($this->getCurrentPage() > ($this->getLastPageNum() - $half)) {
|
288 |
+
$end = $this->getLastPageNum();
|
289 |
+
$start = $end - $this->getFrameLength() + 1;
|
290 |
+
}
|
291 |
+
}
|
292 |
+
$this->_frameStart = $start;
|
293 |
+
$this->_frameEnd = $end;
|
294 |
+
$this->_setFrameInitialized(true);
|
295 |
+
}
|
296 |
+
|
297 |
+
return $this;
|
298 |
+
}
|
299 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Widget/Link.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Widget to display link to the product
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
|
35 |
+
class Mage_Catalog_Block_Product_Widget_Link
|
36 |
+
extends Mage_Catalog_Block_Widget_Link
|
37 |
+
{
|
38 |
+
/**
|
39 |
+
* Initialize entity model
|
40 |
+
*/
|
41 |
+
protected function _construct()
|
42 |
+
{
|
43 |
+
parent::_construct();
|
44 |
+
$this->_entityResource = Mage::getResourceSingleton('catalog/product');
|
45 |
+
}
|
46 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Product/Widget/New.php
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Catalog
|
23 |
+
* @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* New products widget
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Catalog
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Mage_Catalog_Block_Product_Widget_New extends Mage_Catalog_Block_Product_New
|
35 |
+
implements Mage_Widget_Block_Interface
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* Display products type
|
39 |
+
*/
|
40 |
+
const DISPLAY_TYPE_ALL_PRODUCTS = 'all_products';
|
41 |
+
const DISPLAY_TYPE_NEW_PRODUCTS = 'new_products';
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Default value whether show pager or not
|
45 |
+
*/
|
46 |
+
const DEFAULT_SHOW_PAGER = false;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Default value for products per page
|
50 |
+
*/
|
51 |
+
const DEFAULT_PRODUCTS_PER_PAGE = 5;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Name of request parameter for page number value
|
55 |
+
*/
|
56 |
+
const PAGE_VAR_NAME = 'np';
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Instance of pager block
|
60 |
+
*
|
61 |
+
* @var Mage_Catalog_Block_Product_Widget_Html_Pager
|
62 |
+
*/
|
63 |
+
protected $_pager;
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Initialize block's cache and template settings
|
67 |
+
*/
|
68 |
+
protected function _construct()
|
69 |
+
{
|
70 |
+
parent::_construct();
|
71 |
+
$this->addPriceBlockType('bundle', 'bundle/catalog_product_price', 'bundle/catalog/product/price.phtml');
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Product collection initialize process
|
76 |
+
*
|
77 |
+
* @return Mage_Catalog_Model_Resource_Product_Collection|Object|Varien_Data_Collection
|
78 |
+
*/
|
79 |
+
protected function _getProductCollection()
|
80 |
+
{
|
81 |
+
switch ($this->getDisplayType()) {
|
82 |
+
case self::DISPLAY_TYPE_NEW_PRODUCTS:
|
83 |
+
$collection = parent::_getProductCollection();
|
84 |
+
break;
|
85 |
+
default:
|
86 |
+
$collection = $this->_getRecentlyAddedProductsCollection();
|
87 |
+
break;
|
88 |
+
}
|
89 |
+
return $collection;
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Prepare collection for recent product list
|
94 |
+
*
|
95 |
+
* @return Mage_Catalog_Model_Resource_Product_Collection|Object|Varien_Data_Collection
|
96 |
+
*/
|
97 |
+
protected function _getRecentlyAddedProductsCollection()
|
98 |
+
{
|
99 |
+
/** @var $collection Mage_Catalog_Model_Resource_Product_Collection */
|
100 |
+
$collection = Mage::getResourceModel('catalog/product_collection');
|
101 |
+
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
|
102 |
+
|
103 |
+
$collection = $this->_addProductAttributesAndPrices($collection)
|
104 |
+
->addStoreFilter()
|
105 |
+
->addAttributeToSort('created_at', 'desc')
|
106 |
+
->setPageSize($this->getProductsCount())
|
107 |
+
->setCurPage(1)
|
108 |
+
;
|
109 |
+
return $collection;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Get key pieces for caching block content
|
114 |
+
*
|
115 |
+
* @return array
|
116 |
+
*/
|
117 |
+
public function getCacheKeyInfo()
|
118 |
+
{
|
119 |
+
return array_merge(parent::getCacheKeyInfo(), array(
|
120 |
+
$this->getDisplayType(),
|
121 |
+
$this->getProductsPerPage(),
|
122 |
+
intval($this->getRequest()->getParam(self::PAGE_VAR_NAME))
|
123 |
+
));
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Retrieve display type for products
|
128 |
+
*
|
129 |
+
* @return string
|
130 |
+
*/
|
131 |
+
public function getDisplayType()
|
132 |
+
{
|
133 |
+
if (!$this->hasData('display_type')) {
|
134 |
+
$this->setData('display_type', self::DISPLAY_TYPE_ALL_PRODUCTS);
|
135 |
+
}
|
136 |
+
return $this->getData('display_type');
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Retrieve how much products should be displayed
|
141 |
+
*
|
142 |
+
* @return int
|
143 |
+
*/
|
144 |
+
public function getProductsCount()
|
145 |
+
{
|
146 |
+
if (!$this->hasData('products_count')) {
|
147 |
+
return parent::getProductsCount();
|
148 |
+
}
|
149 |
+
return $this->getData('products_count');
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Retrieve how much products should be displayed
|
154 |
+
*
|
155 |
+
* @return int
|
156 |
+
*/
|
157 |
+
public function getProductsPerPage()
|
158 |
+
{
|
159 |
+
if (!$this->hasData('products_per_page')) {
|
160 |
+
$this->setData('products_per_page', self::DEFAULT_PRODUCTS_PER_PAGE);
|
161 |
+
}
|
162 |
+
return $this->getData('products_per_page');
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Return flag whether pager need to be shown or not
|
167 |
+
*
|
168 |
+
* @return bool
|
169 |
+
*/
|
170 |
+
public function showPager()
|
171 |
+
{
|
172 |
+
if (!$this->hasData('show_pager')) {
|
173 |
+
$this->setData('show_pager', self::DEFAULT_SHOW_PAGER);
|
174 |
+
}
|
175 |
+
return (bool)$this->getData('show_pager');
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Render pagination HTML
|
180 |
+
*
|
181 |
+
* @return string
|
182 |
+
*/
|
183 |
+
public function getPagerHtml()
|
184 |
+
{
|
185 |
+
if ($this->showPager()) {
|
186 |
+
if (!$this->_pager) {
|
187 |
+
$this->_pager = $this->getLayout()
|
188 |
+
->createBlock('catalog/product_widget_html_pager', 'widget.new.product.list.pager');
|
189 |
+
|
190 |
+
$this->_pager->setUseContainer(true)
|
191 |
+
->setShowAmounts(true)
|
192 |
+
->setShowPerPage(false)
|
193 |
+
->setPageVarName(self::PAGE_VAR_NAME)
|
194 |
+
->setLimit($this->getProductsPerPage())
|
195 |
+
->setTotalLimit($this->getProductsCount())
|
196 |
+
->setCollection($this->getProductCollection());
|
197 |
+
}
|
198 |
+
if ($this->_pager instanceof Mage_Core_Block_Abstract) {
|
199 |
+
return $this->_pager->toHtml();
|
200 |
+
}
|
201 |
+
}
|
202 |
+
return '';
|
203 |
+
}
|
204 |
+
}
|
app/code/community/Musho/Flipdefine/Block/Products.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Musho_Flipdefine_Block_Products extends Mage_Core_Block_Template{
|
4 |
+
public function getAllProducts(){
|
5 |
+
foreach(Mage::getModel('catalog/product')->getCollection() as $product){
|
6 |
+
$id = $product->getId();
|
7 |
+
$pr = $product->load($id);
|
8 |
+
$result[$id]= $pr->getData('name') . " (" . $pr->getSku() . ")";
|
9 |
+
//($product->load($product->getId())->getData('name'));
|
10 |
+
//die(print_r($product->getData()));
|
11 |
+
}
|
12 |
+
return json_encode($result);
|
13 |
+
}
|
14 |
+
|
15 |
+
public function getAllCategories(){
|
16 |
+
foreach(Mage::getModel('catalog/category')->getCollection() as $category){
|
17 |
+
$result[$category->getId()] = $category->getName();
|
18 |
+
}
|
19 |
+
return json_encode($result);
|
20 |
+
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
|
25 |
+
|
26 |
+
?>
|
app/code/community/Musho/Flipdefine/controllers/Adminhtml/IndexController.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Helpdesk_Flipdefine_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
|
4 |
+
{
|
5 |
+
public function indexAction()
|
6 |
+
{
|
7 |
+
$this->loadLayout();
|
8 |
+
$this->renderLayout();
|
9 |
+
}
|
10 |
+
}
|
11 |
+
|
12 |
+
?>
|
app/code/community/Musho/Flipdefine/controllers/IndexController.php
ADDED
@@ -0,0 +1 @@
|
|
|
|
0 |
$this->_forward('noRoute');
|
1 |
+
<?php
|
2 |
$this->_forward('noRoute');
|
app/code/community/Musho/Flipdefine/controllers/ProductController.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
//touch app/code/local/MyCompanyName/HelloWorld/controllers/ProductController.php
|
3 |
+
class Musho_Flipdefine_ProductController extends Mage_Core_Controller_Front_Action{
|
4 |
+
public function indexAction(){
|
5 |
+
echo "We're echoing just to show that this is what's called, normally you'd have some kind of redirect going on here";
|
6 |
+
}
|
7 |
+
}
|
8 |
+
|
9 |
+
|
10 |
+
?>
|
app/code/community/Musho/Flipdefine/etc/config.xml
ADDED
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Musho_Flipdefine>
|
5 |
+
<version>1.0.0</version>
|
6 |
+
</Musho_Flipdefine>
|
7 |
+
</modules>
|
8 |
+
|
9 |
+
<frontend>
|
10 |
+
<routers>
|
11 |
+
<flipdefine>
|
12 |
+
<use>standard</use>
|
13 |
+
<args>
|
14 |
+
<module>Musho_Flipdefine</module>
|
15 |
+
<frontName>flipdefine</frontName>
|
16 |
+
</args>
|
17 |
+
</flipdefine>
|
18 |
+
</routers>
|
19 |
+
<layout>
|
20 |
+
<updates>
|
21 |
+
<Musho_Flipdefine>
|
22 |
+
<file>flipdefine.xml</file>
|
23 |
+
</Musho_Flipdefine>
|
24 |
+
</updates>
|
25 |
+
</layout>
|
26 |
+
</frontend>
|
27 |
+
|
28 |
+
<admin>
|
29 |
+
<routers>
|
30 |
+
<flipdefine>
|
31 |
+
<use>admin</use>
|
32 |
+
<args>
|
33 |
+
<module>Musho_Flipdefine</module>
|
34 |
+
<frontName>adminflipdefine</frontName>
|
35 |
+
</args>
|
36 |
+
</flipdefine>
|
37 |
+
</routers>
|
38 |
+
</admin>
|
39 |
+
<adminhtml>
|
40 |
+
<layout>
|
41 |
+
<updates>
|
42 |
+
<flipdefine>
|
43 |
+
<file>flipdefine.xml</file>
|
44 |
+
</flipdefine>
|
45 |
+
</updates>
|
46 |
+
</layout>
|
47 |
+
<menu>
|
48 |
+
<flipdefine translate="title" module="adminhtml">
|
49 |
+
<title>My plugins</title>
|
50 |
+
<sort_order>100</sort_order>
|
51 |
+
<children>
|
52 |
+
<set_time>
|
53 |
+
<title>Adress book</title>
|
54 |
+
<action>adminflipdefine/adminhtml_index</action>
|
55 |
+
</set_time>
|
56 |
+
</children>
|
57 |
+
</flipdefine>
|
58 |
+
</menu>
|
59 |
+
</adminhtml>
|
60 |
+
|
61 |
+
<global>
|
62 |
+
<models>
|
63 |
+
<flipdefine>
|
64 |
+
<class>Musho_Flipdefine_Model</class>
|
65 |
+
<resourceModel>flipdefine_mysql4</resourceModel>
|
66 |
+
</flipdefine>
|
67 |
+
<flipdefine_mysql4>
|
68 |
+
<class>Musho_Flipdefine_Model_Mysql4</class>
|
69 |
+
<entities>
|
70 |
+
<flipdefine>
|
71 |
+
<table>Musho_flipdefine</table>
|
72 |
+
</flipdefine>
|
73 |
+
</entities>
|
74 |
+
</flipdefine_mysql4>
|
75 |
+
</models>
|
76 |
+
<!-- allow the plugin to read and write -->
|
77 |
+
<resources>
|
78 |
+
<!-- connection to write -->
|
79 |
+
<flipdefine_write>
|
80 |
+
<connection>
|
81 |
+
<use>core_write</use>
|
82 |
+
</connection>
|
83 |
+
</flipdefine_write>
|
84 |
+
<!-- connection to read -->
|
85 |
+
<flipdefine_read>
|
86 |
+
<connection>
|
87 |
+
<use>core_read</use>
|
88 |
+
</connection>
|
89 |
+
</flipdefine_read>
|
90 |
+
</resources>
|
91 |
+
<blocks>
|
92 |
+
<flipdefine>
|
93 |
+
<class>Musho_Flipdefine_Block</class>
|
94 |
+
</flipdefine>
|
95 |
+
</blocks>
|
96 |
+
</global>
|
97 |
+
|
98 |
+
</config>
|
app/code/local/VF/EasyAjax/Controller/Varien/Router/Json.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class VF_EasyAjax_Controller_Varien_Router_Json extends Mage_Core_Controller_Varien_Router_Standard
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Collect routes
|
7 |
+
*
|
8 |
+
* @param $configArea
|
9 |
+
* @param $useRouterName
|
10 |
+
*/
|
11 |
+
public function collectRoutes($configArea, $useRouterName)
|
12 |
+
{
|
13 |
+
parent::collectRoutes($configArea, 'standard');
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Match with router
|
18 |
+
*
|
19 |
+
* @param Zend_Controller_Request_Http $request
|
20 |
+
* @return boolean
|
21 |
+
*/
|
22 |
+
public function match(Zend_Controller_Request_Http $request)
|
23 |
+
{
|
24 |
+
$path = trim($request->getPathInfo(), '/');
|
25 |
+
|
26 |
+
if (strrpos($path, '.json') === strlen($path) - 5) {
|
27 |
+
$request->setPathInfo(substr($path, 0, strlen($path) - 5));
|
28 |
+
Mage::getSingleton('easyAjax/core')->setEasyAjax(true);
|
29 |
+
|
30 |
+
return parent::match($request);
|
31 |
+
}
|
32 |
+
|
33 |
+
return false;
|
34 |
+
}
|
35 |
+
}
|
app/code/local/VF/EasyAjax/Model/Core.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Vladimir Fishchenko extension for Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* DISCLAIMER
|
13 |
+
*
|
14 |
+
* Do not edit or add to this file if you wish to upgrade
|
15 |
+
* the VF EasyAjax module to newer versions in the future.
|
16 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
17 |
+
* please refer to http://www.magentocommerce.com for more information.
|
18 |
+
*
|
19 |
+
* @category VF
|
20 |
+
* @package VF_EasyAjax
|
21 |
+
* @copyright Copyright (C) 2012
|
22 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
23 |
+
*/
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Easy ajax core model
|
27 |
+
*
|
28 |
+
* @category VF
|
29 |
+
* @package VF_EasyAjax
|
30 |
+
* @subpackage Model
|
31 |
+
* @author
|
32 |
+
*/
|
33 |
+
class VF_EasyAjax_Model_Core
|
34 |
+
{
|
35 |
+
/**
|
36 |
+
* is easy ajax request
|
37 |
+
*
|
38 |
+
* @var bool
|
39 |
+
*/
|
40 |
+
protected $_isEasyAjax = null;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Is easy ajax event processed
|
44 |
+
*
|
45 |
+
* @var bool
|
46 |
+
*/
|
47 |
+
protected $_proceed = false;
|
48 |
+
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Is Easy Ajax Request
|
52 |
+
*
|
53 |
+
* @return bool
|
54 |
+
*/
|
55 |
+
public function isEasyAjax()
|
56 |
+
{
|
57 |
+
if ($this->_isEasyAjax === null) {
|
58 |
+
$this->_isEasyAjax = Mage::app()->getRequest()->isXmlHttpRequest()
|
59 |
+
&& Mage::app()->getRequest()->getParam('easy_ajax', false);
|
60 |
+
}
|
61 |
+
return (bool) $this->_isEasyAjax;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Set that is easy ajax request or not
|
66 |
+
*
|
67 |
+
* @param bool $value
|
68 |
+
*/
|
69 |
+
public function setEasyAjax($value = true)
|
70 |
+
{
|
71 |
+
$this->_isEasyAjax = (bool) $value;
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Is event processed
|
76 |
+
*
|
77 |
+
* @return bool
|
78 |
+
*/
|
79 |
+
public function isProceed()
|
80 |
+
{
|
81 |
+
return (bool) $this->_proceed;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Set that event processed
|
86 |
+
*
|
87 |
+
* @return $this
|
88 |
+
*/
|
89 |
+
public function setProceed()
|
90 |
+
{
|
91 |
+
$this->_proceed = true;
|
92 |
+
|
93 |
+
return $this;
|
94 |
+
}
|
95 |
+
|
96 |
+
}
|
app/code/local/VF/EasyAjax/Model/Core/Message.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Vladimir Fishchenko extension for Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* DISCLAIMER
|
13 |
+
*
|
14 |
+
* Do not edit or add to this file if you wish to upgrade
|
15 |
+
* the VF EasyAjax module to newer versions in the future.
|
16 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
17 |
+
* please refer to http://www.magentocommerce.com for more information.
|
18 |
+
*
|
19 |
+
* @category VF
|
20 |
+
* @package VF_EasyAjax
|
21 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
22 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
23 |
+
*/
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Message model
|
27 |
+
* Rewritten for store messages
|
28 |
+
*
|
29 |
+
* @category VF
|
30 |
+
* @package VF_EasyAjax
|
31 |
+
* @subpackage Model
|
32 |
+
* @author Vladimir Fishchenko <vladimir@fishchenko.com>
|
33 |
+
*/
|
34 |
+
class VF_EasyAjax_Model_Core_Message extends Mage_Core_Model_Message
|
35 |
+
{
|
36 |
+
protected function _factory($code, $type, $class='', $method='')
|
37 |
+
{
|
38 |
+
if (Mage::helper('core')->isModuleEnabled('VF_EasyAjax') && Mage::getSingleton('easyAjax/core')->isEasyAjax()) {
|
39 |
+
Mage::getSingleton('easyAjax/message_storage')->addMessage($code, $type);
|
40 |
+
}
|
41 |
+
return parent::_factory($code, $type, $class, $method);
|
42 |
+
}
|
43 |
+
}
|
app/code/local/VF/EasyAjax/Model/Core/Message/Collection.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Vladimir Fishchenko extension for Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* DISCLAIMER
|
13 |
+
*
|
14 |
+
* Do not edit or add to this file if you wish to upgrade
|
15 |
+
* the VF EasyAjax module to newer versions in the future.
|
16 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
17 |
+
* please refer to http://www.magentocommerce.com for more information.
|
18 |
+
*
|
19 |
+
* @category VF
|
20 |
+
* @package VF_EasyAjax
|
21 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
22 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
23 |
+
*/
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Message collection model
|
27 |
+
* Rewritten for store messages
|
28 |
+
*
|
29 |
+
* @category VF
|
30 |
+
* @package VF_EasyAjax
|
31 |
+
* @subpackage Model
|
32 |
+
* @author Vladimir Fishchenko <vladimir@fishchenko.com>
|
33 |
+
*/
|
34 |
+
class VF_EasyAjax_Model_Core_Message_Collection extends Mage_Core_Model_Message_Collection
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* Adding new message to collection
|
38 |
+
*
|
39 |
+
* @param Mage_Core_Model_Message_Abstract $message
|
40 |
+
*
|
41 |
+
* @return Mage_Core_Model_Message_Collection
|
42 |
+
*/
|
43 |
+
public function add(Mage_Core_Model_Message_Abstract $message)
|
44 |
+
{
|
45 |
+
if (!Mage::helper('core')->isModuleEnabled('VF_EasyAjax') || !Mage::getSingleton('easyAjax/core')->isEasyAjax()) {
|
46 |
+
$this->addMessage($message);
|
47 |
+
}
|
48 |
+
|
49 |
+
return $this;
|
50 |
+
}
|
51 |
+
}
|
app/code/local/VF/EasyAjax/Model/Message/Storage.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Vladimir Fishchenko extension for Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* DISCLAIMER
|
13 |
+
*
|
14 |
+
* Do not edit or add to this file if you wish to upgrade
|
15 |
+
* the VF EasyAjax module to newer versions in the future.
|
16 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
17 |
+
* please refer to http://www.magentocommerce.com for more information.
|
18 |
+
*
|
19 |
+
* @category VF
|
20 |
+
* @package VF_EasyAjax
|
21 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
22 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
23 |
+
*/
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Message storage model
|
27 |
+
* Store all messages
|
28 |
+
*
|
29 |
+
* @category VF
|
30 |
+
* @package VF_EasyAjax
|
31 |
+
* @subpackage Model
|
32 |
+
* @author Vladimir Fishchenko <vladimir@fishchenko.com>
|
33 |
+
*/
|
34 |
+
class VF_EasyAjax_Model_Message_Storage
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* @var array
|
38 |
+
*/
|
39 |
+
protected $_messages = array();
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param string $code
|
43 |
+
* @param string $type
|
44 |
+
* @return VF_EasyAjax_Model_Message_Storage
|
45 |
+
*/
|
46 |
+
public function addMessage($code, $type)
|
47 |
+
{
|
48 |
+
$this->_messages[] = array ('code' => $code, 'type' => $type);
|
49 |
+
return $this;
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @return array
|
54 |
+
*/
|
55 |
+
public function getMessages()
|
56 |
+
{
|
57 |
+
return $this->_messages;
|
58 |
+
}
|
59 |
+
}
|
app/code/local/VF/EasyAjax/Model/Observer.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Vladimir Fishchenko extension
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* DISCLAIMER
|
13 |
+
*
|
14 |
+
* Do not edit or add to this file if you wish to upgrade
|
15 |
+
* the VF EasyAjax module to newer versions in the future.
|
16 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
17 |
+
* please refer to http://www.magentocommerce.com for more information.
|
18 |
+
*
|
19 |
+
* @category VF
|
20 |
+
* @package VF_EasyAjax
|
21 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
22 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
23 |
+
*/
|
24 |
+
|
25 |
+
/**
|
26 |
+
* EasyAjax Event Observer
|
27 |
+
*
|
28 |
+
* @category VF
|
29 |
+
* @package VF_EasyAjax
|
30 |
+
* @subpackage Model
|
31 |
+
* @author Vladimir Fishchenko <vladimir@fishchenko.com>
|
32 |
+
*/
|
33 |
+
class VF_EasyAjax_Model_Observer
|
34 |
+
{
|
35 |
+
/**
|
36 |
+
* Add Json to response instead of default data
|
37 |
+
*/
|
38 |
+
public function getJson()
|
39 |
+
{
|
40 |
+
$core = Mage::getSingleton('easyAjax/core');
|
41 |
+
if ($core->isEasyAjax() && !$core->isProceed()) {
|
42 |
+
$core->setProceed();
|
43 |
+
/** @var $messages VF_EasyAjax_Model_Message_Storage */
|
44 |
+
$messages = Mage::getSingleton('easyAjax/message_storage');
|
45 |
+
/** @var $response VF_EasyAjax_Model_Response */
|
46 |
+
$response = Mage::getModel('easyAjax/response');
|
47 |
+
$response->setMessages($messages->getMessages());
|
48 |
+
$response->loadContent(
|
49 |
+
(array) Mage::app()->getRequest()->getParam('action_content', array()),
|
50 |
+
(array) Mage::app()->getRequest()->getParam('custom_content', array())
|
51 |
+
);
|
52 |
+
$response->sendResponse();
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
app/code/local/VF/EasyAjax/Model/Response.php
ADDED
@@ -0,0 +1,178 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Vladimir Fishchenko extension for Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* DISCLAIMER
|
13 |
+
*
|
14 |
+
* Do not edit or add to this file if you wish to upgrade
|
15 |
+
* the VF EasyAjax module to newer versions in the future.
|
16 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
17 |
+
* please refer to http://www.magentocommerce.com for more information.
|
18 |
+
*
|
19 |
+
* @category VF
|
20 |
+
* @package VF_EasyAjax
|
21 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
22 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
23 |
+
*/
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Special response model
|
27 |
+
*
|
28 |
+
* @category VF
|
29 |
+
* @package VF_EasyAjax
|
30 |
+
* @subpackage Model
|
31 |
+
* @author Vladimir Fishchenko <vladimir@fishchenko.com>
|
32 |
+
*/
|
33 |
+
class VF_EasyAjax_Model_Response extends Varien_Object
|
34 |
+
{
|
35 |
+
/**
|
36 |
+
* @var Zend_Controller_Response_Http
|
37 |
+
*/
|
38 |
+
protected $_response;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Send response to browser with json content type
|
42 |
+
*/
|
43 |
+
public function sendResponse()
|
44 |
+
{
|
45 |
+
$this->_response = Mage::app()->getResponse();
|
46 |
+
|
47 |
+
//check redirect
|
48 |
+
if ($this->_response->isRedirect()) {
|
49 |
+
$headers = $this->_response->getHeaders();
|
50 |
+
$redirect = '';
|
51 |
+
foreach ($headers AS $header) {
|
52 |
+
if ("Location" == $header["name"]) {
|
53 |
+
$redirect = $header["value"];
|
54 |
+
break;
|
55 |
+
}
|
56 |
+
}
|
57 |
+
if ($redirect) {
|
58 |
+
$this->setRedirect($redirect);
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
$this->_response->clearHeaders();
|
63 |
+
$this->_response->setHeader('Content-Type', 'application/json');
|
64 |
+
$this->_response->clearBody();
|
65 |
+
$this->_response->setBody($this->toJson());
|
66 |
+
$this->_response->sendResponse();
|
67 |
+
exit;
|
68 |
+
}
|
69 |
+
|
70 |
+
public function loadContent($actionContent, $customContent)
|
71 |
+
{
|
72 |
+
if ($actionContent) {
|
73 |
+
$layout = $this->_loadControllerLayouts();
|
74 |
+
$actionContentData = array();
|
75 |
+
foreach ($actionContent as $_content) {
|
76 |
+
$_block = $layout->getBlock($_content);
|
77 |
+
if ($_block) {
|
78 |
+
$actionContentData[$_content] = $_block->toHtml();
|
79 |
+
}
|
80 |
+
}
|
81 |
+
if ($actionContentData) {
|
82 |
+
$this->setActionContentData($actionContentData);
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
if ($customContent) {
|
87 |
+
$layout = $this->_loadCustomLayouts();
|
88 |
+
$customContentData = array();
|
89 |
+
foreach ($customContent as $_content) {
|
90 |
+
$_block = $layout->getBlock($_content);
|
91 |
+
if ($_block) {
|
92 |
+
$customContentData[$_content] = $_block->toHtml();
|
93 |
+
}
|
94 |
+
}
|
95 |
+
if ($customContentData) {
|
96 |
+
$this->setCustomContentData($customContentData);
|
97 |
+
}
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Load layouts for current controller
|
103 |
+
*
|
104 |
+
* @return Mage_Core_Model_Layout
|
105 |
+
*/
|
106 |
+
protected function _loadControllerLayouts()
|
107 |
+
{
|
108 |
+
$layout = Mage::app()->getLayout();
|
109 |
+
$update = $layout->getUpdate();
|
110 |
+
// load default handle
|
111 |
+
$update->addHandle('default');
|
112 |
+
// load store handle
|
113 |
+
$update->addHandle('STORE_'.Mage::app()->getStore()->getCode());
|
114 |
+
// load theme handle
|
115 |
+
$package = Mage::getSingleton('core/design_package');
|
116 |
+
$update->addHandle(
|
117 |
+
'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
|
118 |
+
);
|
119 |
+
// load action handle
|
120 |
+
$fullActionName = Mage::app()->getRequest()->getRequestedRouteName() . '_' .
|
121 |
+
Mage::app()->getRequest()->getRequestedControllerName() . '_' .
|
122 |
+
Mage::app()->getRequest()->getRequestedActionName();
|
123 |
+
$update->addHandle(strtolower($fullActionName));
|
124 |
+
|
125 |
+
//load updates
|
126 |
+
$update->load();
|
127 |
+
//generate xml
|
128 |
+
$layout->generateXml();
|
129 |
+
//generate layout blocks
|
130 |
+
$layout->generateBlocks();
|
131 |
+
|
132 |
+
return $layout;
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Load custom layout
|
137 |
+
*
|
138 |
+
* @return Mage_Core_Model_Layout
|
139 |
+
*/
|
140 |
+
protected function _loadCustomLayouts()
|
141 |
+
{
|
142 |
+
$layout = Mage::app()->getLayout();
|
143 |
+
$update = $layout->getUpdate();
|
144 |
+
// load default custom handle
|
145 |
+
$update->addHandle('easy_ajax_default');
|
146 |
+
// load action handle
|
147 |
+
$fullActionName = Mage::app()->getRequest()->getRequestedRouteName() . '_' .
|
148 |
+
Mage::app()->getRequest()->getRequestedControllerName() . '_' .
|
149 |
+
Mage::app()->getRequest()->getRequestedActionName();
|
150 |
+
$update->addHandle('easy_ajax_' . strtolower($fullActionName));
|
151 |
+
|
152 |
+
if (Mage::app()->useCache('layout')){
|
153 |
+
$cacheId = $update->getCacheId().'_easy_ajax';
|
154 |
+
$update->setCacheId($cacheId);
|
155 |
+
|
156 |
+
if (!Mage::app()->loadCache($cacheId)) {
|
157 |
+
foreach ($update->getHandles() as $handle) {
|
158 |
+
$update->merge($handle);
|
159 |
+
}
|
160 |
+
|
161 |
+
$update->saveCache();
|
162 |
+
} else {
|
163 |
+
//load updates from cache
|
164 |
+
$update->load();
|
165 |
+
}
|
166 |
+
} else {
|
167 |
+
//load updates
|
168 |
+
$update->load();
|
169 |
+
}
|
170 |
+
|
171 |
+
//generate xml
|
172 |
+
$layout->generateXml();
|
173 |
+
//generate layout blocks
|
174 |
+
$layout->generateBlocks();
|
175 |
+
|
176 |
+
return $layout;
|
177 |
+
}
|
178 |
+
}
|
app/code/local/VF/EasyAjax/etc/config.xml
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Vladimir Fishchenko extension
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
*
|
13 |
+
* DISCLAIMER
|
14 |
+
*
|
15 |
+
* Do not edit or add to this file if you wish to upgrade
|
16 |
+
* the VF EasyAjax module to newer versions in the future.
|
17 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
18 |
+
* please refer to http://www.magentocommerce.com for more information.
|
19 |
+
*
|
20 |
+
* @category VF
|
21 |
+
* @package VF_EasyAjax
|
22 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
23 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
24 |
+
*/
|
25 |
+
-->
|
26 |
+
<config>
|
27 |
+
<global>
|
28 |
+
<models>
|
29 |
+
<easyAjax>
|
30 |
+
<class>VF_EasyAjax_Model</class>
|
31 |
+
</easyAjax>
|
32 |
+
<core>
|
33 |
+
<rewrite>
|
34 |
+
<message>VF_EasyAjax_Model_Core_Message</message>
|
35 |
+
<message_collection>VF_EasyAjax_Model_Core_Message_Collection</message_collection>
|
36 |
+
</rewrite>
|
37 |
+
</core>
|
38 |
+
</models>
|
39 |
+
</global>
|
40 |
+
<frontend>
|
41 |
+
<events>
|
42 |
+
<controller_action_layout_render_before>
|
43 |
+
<observers>
|
44 |
+
<easyAjax_get_json>
|
45 |
+
<class>easyAjax/observer</class>
|
46 |
+
<method>getJson</method>
|
47 |
+
</easyAjax_get_json>
|
48 |
+
</observers>
|
49 |
+
</controller_action_layout_render_before>
|
50 |
+
<controller_response_redirect>
|
51 |
+
<observers>
|
52 |
+
<easyAjax_get_json>
|
53 |
+
<class>easyAjax/observer</class>
|
54 |
+
<method>getJson</method>
|
55 |
+
</easyAjax_get_json>
|
56 |
+
</observers>
|
57 |
+
</controller_response_redirect>
|
58 |
+
<http_response_send_before>
|
59 |
+
<observers>
|
60 |
+
<easyAjax_get_json>
|
61 |
+
<class>easyAjax/observer</class>
|
62 |
+
<method>getJson</method>
|
63 |
+
</easyAjax_get_json>
|
64 |
+
</observers>
|
65 |
+
</http_response_send_before>
|
66 |
+
</events>
|
67 |
+
<layout>
|
68 |
+
<updates>
|
69 |
+
<vf_eastAjax>
|
70 |
+
<file>easy_ajax.xml</file>
|
71 |
+
</vf_eastAjax>
|
72 |
+
</updates>
|
73 |
+
</layout>
|
74 |
+
</frontend>
|
75 |
+
<default>
|
76 |
+
<web>
|
77 |
+
<routers>
|
78 |
+
<json>
|
79 |
+
<area>frontend</area>
|
80 |
+
<class>VF_EasyAjax_Controller_Varien_Router_Json</class>
|
81 |
+
</json>
|
82 |
+
</routers>
|
83 |
+
</web>
|
84 |
+
</default>
|
85 |
+
</config>
|
86 |
+
|
app/design/frontend/base/default/layout/easy_ajax.xml
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Vladimir Fishchenko extension for Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
*
|
13 |
+
* @category design
|
14 |
+
* @package base_default
|
15 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
16 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
17 |
+
*/
|
18 |
+
-->
|
19 |
+
<layout version="0.1.0">
|
20 |
+
<default>
|
21 |
+
<reference name="head">
|
22 |
+
<action method="addJs"><name>easy_ajax.js</name></action>
|
23 |
+
</reference>
|
24 |
+
</default>
|
25 |
+
</layout>
|
app/design/frontend/base/default/layout/flipdefine.xml
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
|
4 |
+
|
5 |
+
<default>
|
6 |
+
<reference name="root">
|
7 |
+
<action method="setTemplate"><template>page/empty.phtml</template></action>
|
8 |
+
</reference>
|
9 |
+
<reference name="content">
|
10 |
+
</reference>
|
11 |
+
</default>
|
12 |
+
<flipdefine_index_index>
|
13 |
+
<reference name="head">
|
14 |
+
<action method="addJs"><script>prototype/prototype.js</script></action>
|
15 |
+
<action method="addJs"><script>lib/ccard.js</script></action>
|
16 |
+
<action method="addJs"><script>prototype/validation.js</script></action>
|
17 |
+
<action method="addJs"><script>scriptaculous/builder.js</script></action>
|
18 |
+
<action method="addJs"><script>scriptaculous/effects.js</script></action>
|
19 |
+
<action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
|
20 |
+
<action method="addJs"><script>scriptaculous/controls.js</script></action>
|
21 |
+
<action method="addJs"><script>scriptaculous/slider.js</script></action>
|
22 |
+
<action method="addJs"><script>varien/js.js</script></action>
|
23 |
+
<action method="addJs"><script>varien/form.js</script></action>
|
24 |
+
<action method="addJs"><script>varien/menu.js</script></action>
|
25 |
+
<action method="addJs"><script>mage/translate.js</script></action>
|
26 |
+
<action method="addJs"><script>mage/cookies.js</script></action>
|
27 |
+
<action method="addJs"><script>varien/product.js</script></action>
|
28 |
+
<action method="addJs"><script>varien/configurable.js</script></action>
|
29 |
+
<action method="addJs"><script>js/jquery-2.0.3.js</script></action>
|
30 |
+
<action method="addJs"><script>jquery/noconflict.js</script></action>
|
31 |
+
|
32 |
+
<action method="addCss"><style>css/ajax_cart.css</style></action>
|
33 |
+
<!--action method="addJs"><script>js/easy_ajax.js</script></action>
|
34 |
+
<action method="addJs"><script>js/ajax_cart.js</script></action-->
|
35 |
+
|
36 |
+
<action method="addItem"><type>skin_js</type><script>js/easy_ajax.js</script></action>
|
37 |
+
<action method="addItem"><type>skin_js</type><script>js/ajax_cart.js</script></action>
|
38 |
+
|
39 |
+
<action method="addItem"><type>js_css</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action>
|
40 |
+
<action method="addItem"><type>js</type><name>calendar/calendar.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
|
41 |
+
<action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
|
42 |
+
|
43 |
+
<!--action method="addItem"><type>skin_js</type><script>scriptname.js</script></action-->
|
44 |
+
</reference>
|
45 |
+
|
46 |
+
<reference name="content">
|
47 |
+
<block type="flipdefine/monblock" name="afficher_monbloc" template="flipdefine/afficher.phtml">
|
48 |
+
<block type="flipdefine/product_view" name="product.info" template="flipdefine/product/view.phtml">
|
49 |
+
|
50 |
+
<block type="flipdefine/product_view_media" name="product.info.media" as="media" template="flipdefine/product/view/media.phtml"/>
|
51 |
+
<block type="core/text_list" name="alert.urls" as="alert_urls" translate="label">
|
52 |
+
<label>Alert Urls</label>
|
53 |
+
</block>
|
54 |
+
|
55 |
+
<action method="setTierPriceTemplate"><template>flipdefine/product/view/tierprices.phtml</template></action>
|
56 |
+
|
57 |
+
<block type="flipdefine/product_list_upsell" name="product.info.upsell" as="upsell_products" template="flipdefine/product/list/upsell.phtml">
|
58 |
+
<action method="setColumnCount"><columns>4</columns></action>
|
59 |
+
<action method="setItemLimit"><type>upsell</type><limit>4</limit></action>
|
60 |
+
</block>
|
61 |
+
|
62 |
+
<block type="flipdefine/product_view_additional" name="product.info.additional" as="product_additional_data" />
|
63 |
+
<block type="flipdefine/product_view_description" name="product.description" as="description" template="flipdefine/product/view/description.phtml">
|
64 |
+
<action method="addToParentGroup"><group>detailed_info</group></action>
|
65 |
+
</block>
|
66 |
+
<block type="flipdefine/product_view_attributes" name="product.attributes" as="additional" template="flipdefine/product/view/attributes.phtml">
|
67 |
+
<action method="addToParentGroup"><group>detailed_info</group></action>
|
68 |
+
</block>
|
69 |
+
<block type="flipdefine/product_view" name="product.info.addto" as="addto" template="flipdefine/product/view/addto.phtml"/>
|
70 |
+
<block type="flipdefine/product_view" name="product.info.addtocart" as="addtocart" template="flipdefine/product/view/addtocart.phtml"/>
|
71 |
+
|
72 |
+
<block type="core/text_list" name="product.info.extrahint" as="extrahint" translate="label">
|
73 |
+
<label>Product View Extra Hint</label>
|
74 |
+
</block>
|
75 |
+
</block>
|
76 |
+
<block type="flipdefine/product_list_related" name="flipdefine.product.related" before="-" template="flipdefine/product/list/related.phtml"/>
|
77 |
+
</block>
|
78 |
+
</reference>
|
79 |
+
</flipdefine_index_index>
|
80 |
+
|
81 |
+
|
82 |
+
<flipdefine_index_products>
|
83 |
+
<reference name="head">
|
84 |
+
<action method="removeItem"><type>js</type><name>prototype/prototype.js</name></action>
|
85 |
+
<action method="removeItem"><type>js</type><name>lib/ccard.js</name></action>
|
86 |
+
<action method="removeItem"><type>js</type><name>prototype/validation.js</name></action>
|
87 |
+
<action method="removeItem"><type>js</type><name>scriptaculous/builder.js</name></action>
|
88 |
+
<action method="removeItem"><type>js</type><name>scriptaculous/effects.js</name></action>
|
89 |
+
<action method="removeItem"><type>js</type><name>scriptaculous/dragdrop.js</name></action>
|
90 |
+
<action method="removeItem"><type>js</type><name>scriptaculous/controls.js</name></action>
|
91 |
+
<action method="removeItem"><type>js</type><name>scriptaculous/slider.js</name></action>
|
92 |
+
<action method="removeItem"><type>js</type><name>varien/js.js</name></action>
|
93 |
+
<action method="removeItem"><type>js</type><name>varien/form.js</name></action>
|
94 |
+
<action method="removeItem"><type>js</type><name>varien/menu.js</name></action>
|
95 |
+
<action method="removeItem"><type>js</type><name>mage/translate.js</name></action>
|
96 |
+
<action method="removeItem"><type>js</type><name>mage/cookies.js</name></action>
|
97 |
+
<action method="removeItem"><type>js</type><name>varien/product.js</name></action>
|
98 |
+
<action method="removeItem"><type>js</type><name>varien/configurable.js</name></action>
|
99 |
+
<action method="removeItem"><type>js</type><name>js/jquery-2.0.3.js</name></action>
|
100 |
+
<action method="removeItem"><type>js</type><name>jquery/noconflict.js</name></action>
|
101 |
+
<action method="removeItem"><type>skin_css</type><style>css/ajax_cart.css</style></action>
|
102 |
+
<action method="removeItem"><type>skin_css</type><style>css/print.css</style></action>
|
103 |
+
<action method="removeItem"><type>skin_css</type><style>css/webandpeople/custommenu/custommenu.css</style></action>
|
104 |
+
<action method="removeItem"><type>skin_css</type><style>css/local.css</style></action>
|
105 |
+
<action method="removeItem"><type>js</type><name>easy_ajax.js</name></action>
|
106 |
+
<action method="removeItem"><type>js</type><name>js/ddaccordion.js</name></action>
|
107 |
+
|
108 |
+
<action method="removeItem"><type>js</type><name>js/ajax_cart.js</name></action>
|
109 |
+
<action method="removeItem"><type>js_</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action>
|
110 |
+
<action method="removeItem"><type>js</type><name>calendar/calendar.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
|
111 |
+
<action method="removeItem"><type>js</type><name>calendar/calendar-setup.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
|
112 |
+
</reference>
|
113 |
+
<reference name="content">
|
114 |
+
<block type="flipdefine/products" name="flipdefine.products" template="flipdefine/products.phtml"/>
|
115 |
+
</reference>
|
116 |
+
</flipdefine_index_products>
|
117 |
+
|
118 |
+
<flipdefine_index_view>
|
119 |
+
<reference name="content">
|
120 |
+
</reference>
|
121 |
+
</flipdefine_index_view>
|
122 |
+
</layout>
|
app/design/frontend/base/default/template/flipdefine/afficher.phtml
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
//print_r($_product = $this->getProduct());
|
3 |
+
$_product = $this->getProduct();
|
4 |
+
if(!$_product->getId()){
|
5 |
+
echo "No valid product was found with this ID !";
|
6 |
+
|
7 |
+
}else{
|
8 |
+
$_helper = $this->helper('catalog/output');
|
9 |
+
?>
|
10 |
+
|
11 |
+
<form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
|
12 |
+
|
13 |
+
<div class="psz-imagesWrapper singleImage" style="display:inline-block; padding-right:20px;">
|
14 |
+
<?php if ($_product->getImage() != 'no_selection' && $_product->getImage()): ?>
|
15 |
+
<p class="product-image product-image-zoom">
|
16 |
+
<?php
|
17 |
+
$_img = '<img src="'.$this->helper('catalog/image')->init($_product, 'image')->resize(265).'" alt="'.$this->escapeHtml($this->getImageLabel()).'" title="'.$this->escapeHtml($this->getImageLabel()).'" />';
|
18 |
+
echo $_helper->productAttribute($_product, $_img, 'image');
|
19 |
+
?>
|
20 |
+
</p>
|
21 |
+
<?php endif; ?>
|
22 |
+
<span class="clears"></span>
|
23 |
+
</div>
|
24 |
+
|
25 |
+
|
26 |
+
<div class="psz-productInfo" style="display:inline-block;">
|
27 |
+
<?php // Get the product name here?>
|
28 |
+
|
29 |
+
<h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
|
30 |
+
|
31 |
+
|
32 |
+
<fieldset class="no-display">
|
33 |
+
<input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />
|
34 |
+
<input type="hidden" name="related_product" id="related-products-field" value="" />
|
35 |
+
</fieldset>
|
36 |
+
|
37 |
+
<?php //Product Add to Cart button here?>
|
38 |
+
|
39 |
+
<?php if($_product->isSaleable()): ?>
|
40 |
+
<div class="add-to-cart">
|
41 |
+
<?php $buttonTitle = $this->__('Add to Cart'); ?>
|
42 |
+
<label for="qty"><?php echo $this->__('Qty:') ?></label>
|
43 |
+
<input type="text" name="qty" id="qty" maxlength="12" value="<?php echo $this->getMinimalQty($_product) ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
|
44 |
+
|
45 |
+
<button type="button" title="<?php echo $buttonTitle ?>" class="button btn-cart" onclick="productAddToCartForm.submit(this)"><span><span><?php echo $buttonTitle ?></span></span></button>
|
46 |
+
|
47 |
+
</div>
|
48 |
+
<?php endif; ?>
|
49 |
+
|
50 |
+
<?php //Product Description here?>
|
51 |
+
<div>
|
52 |
+
<?php if ($_product->getPrice()):?>
|
53 |
+
<h4><?php echo $this->__('Price') ?></h4>
|
54 |
+
<div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getPrice()), 'price') ?></div>
|
55 |
+
<?php endif;?>
|
56 |
+
|
57 |
+
<?php if ($_product->getSpecialPrice()):?>
|
58 |
+
<h4><?php echo $this->__('Special Price') ?></h4>
|
59 |
+
<div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getPrice()), 'special_price') ?></div>
|
60 |
+
<?php endif;?>
|
61 |
+
|
62 |
+
<?php if ($_product->getShortDescription()):?>
|
63 |
+
<h4><?php echo $this->__('Quick Overview') ?></h4>
|
64 |
+
<div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div>
|
65 |
+
<?php endif;?>
|
66 |
+
|
67 |
+
<?php if ($_product->getDescription()):?>
|
68 |
+
<h4><?php echo $this->__('Detail Description') ?></h4>
|
69 |
+
<div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getDescription()), 'description') ?></div>
|
70 |
+
<?php endif;?>
|
71 |
+
|
72 |
+
<?php if ($_product->getProductUrl()):?>
|
73 |
+
<span>or <a id="psz-fullDetails" target="_blank" href="<?php echo $_helper->productAttribute($_product, nl2br($_product->getProductUrl()), 'product_url')?>">View Full Product Details</a></span>
|
74 |
+
<?php endif;?>
|
75 |
+
|
76 |
+
|
77 |
+
</div>
|
78 |
+
<span class="clears"></span>
|
79 |
+
|
80 |
+
<?php
|
81 |
+
}
|
82 |
+
|
83 |
+
?>
|
84 |
+
|
85 |
+
</div>
|
86 |
+
</form>
|
87 |
+
<div style="clear:both"></div>
|
88 |
+
<div class="block-cart" style="clear:both">
|
89 |
+
|
90 |
+
|
91 |
+
</div>
|
92 |
+
|
93 |
+
|
94 |
+
<div id="ajax-cart-modal" class="ajax-cart-modal" style="display: none;">
|
95 |
+
<div class="overlay"></div>
|
96 |
+
<div class="block">
|
97 |
+
<div class="block-title">
|
98 |
+
<strong>
|
99 |
+
<!--span id="ajax-cart-modal-title">Message</span-->
|
100 |
+
<a class="close-btn" href="javascript:$('ajax-cart-modal').hide();">Continue Shopping</a>
|
101 |
+
|
102 |
+
<a id="goto-checkout" href="<? echo Mage::getUrl('checkout/cart/'); ?>" class="Blinks">Check Out</a>
|
103 |
+
|
104 |
+
</strong>
|
105 |
+
</div>
|
106 |
+
<div class="block-content">
|
107 |
+
<p class="block-subtitle" id="ajax-cart-modal-message">What is your favorite Magento feature?</p>
|
108 |
+
<div class="actions">
|
109 |
+
<button type="button" onclick="$('ajax-cart-modal').hide()" title="Vote" class="button">
|
110 |
+
<span><span>OK</span></span>
|
111 |
+
</button>
|
112 |
+
</div>
|
113 |
+
</div>
|
114 |
+
</div>
|
115 |
+
</div>
|
116 |
+
|
117 |
+
<div id="ajax-cart-loading-mask" class="ajax-cart-loading-mask" style="display: none;">
|
118 |
+
<div class="overlay"></div>
|
119 |
+
<div class="loader"></div>
|
120 |
+
</div>
|
121 |
+
|
122 |
+
|
123 |
+
|
124 |
+
<script type="text/javascript">
|
125 |
+
//<![CDATA[
|
126 |
+
var productAddToCartForm = new VarienForm('product_addtocart_form');
|
127 |
+
productAddToCartForm.submit = function(button, url) {
|
128 |
+
if (this.validator.validate()) {
|
129 |
+
var form = this.form;
|
130 |
+
var oldUrl = form.action;
|
131 |
+
|
132 |
+
if (url) {
|
133 |
+
form.action = url;
|
134 |
+
}
|
135 |
+
var e = null;
|
136 |
+
try {
|
137 |
+
this.form.submit();
|
138 |
+
} catch (e) {
|
139 |
+
}
|
140 |
+
this.form.action = oldUrl;
|
141 |
+
if (e) {
|
142 |
+
throw e;
|
143 |
+
}
|
144 |
+
|
145 |
+
if (button && button != 'undefined') {
|
146 |
+
button.disabled = true;
|
147 |
+
}
|
148 |
+
}
|
149 |
+
}.bind(productAddToCartForm);
|
150 |
+
|
151 |
+
productAddToCartForm.submitLight = function(button, url){
|
152 |
+
if(this.validator) {
|
153 |
+
var nv = Validation.methods;
|
154 |
+
delete Validation.methods['required-entry'];
|
155 |
+
delete Validation.methods['validate-one-required'];
|
156 |
+
delete Validation.methods['validate-one-required-by-name'];
|
157 |
+
// Remove custom datetime validators
|
158 |
+
for (var methodName in Validation.methods) {
|
159 |
+
if (methodName.match(/^validate-datetime-.*/i)) {
|
160 |
+
delete Validation.methods[methodName];
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
if (this.validator.validate()) {
|
165 |
+
if (url) {
|
166 |
+
this.form.action = url;
|
167 |
+
}
|
168 |
+
this.form.submit();
|
169 |
+
}
|
170 |
+
Object.extend(Validation.methods, nv);
|
171 |
+
}
|
172 |
+
}.bind(productAddToCartForm);
|
173 |
+
//]]>
|
174 |
+
</script>
|
175 |
+
|
176 |
+
|
app/etc/modules/Musho_All.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version = "1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Musho_Flipdefine>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</Musho_Flipdefine>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/etc/modules/VF_EasyAjax.xml
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Vladimir Fishchenko extension for Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
*
|
13 |
+
* DISCLAIMER
|
14 |
+
*
|
15 |
+
* Do not edit or add to this file if you wish to upgrade
|
16 |
+
* the VF EasyAjax module to newer versions in the future.
|
17 |
+
* If you wish to customize the VF EasyAjax module for your needs
|
18 |
+
* please refer to http://www.magentocommerce.com for more information.
|
19 |
+
*
|
20 |
+
* @category VF
|
21 |
+
* @package VF_EasyAjax
|
22 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
23 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
24 |
+
*/
|
25 |
+
-->
|
26 |
+
<config>
|
27 |
+
<modules>
|
28 |
+
<VF_EasyAjax>
|
29 |
+
<active>true</active>
|
30 |
+
<codePool>local</codePool>
|
31 |
+
</VF_EasyAjax>
|
32 |
+
</modules>
|
33 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Musho_Flipdefine</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://phaze.com.sg/license_flipdefine">AFPL</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>This extension enables clients integrate Flipdefine flipbook with Magento Webbsites.</summary>
|
10 |
+
<description>This extension enables clients integrate Flipdefine flipbook with Magento Webbsites. This extension retrieves product information from Magento site and makes the information available for Hotspots creation on Flipdefine dashboard. Using this extension makes clients link product to digital catalog on Flipdefine.</description>
|
11 |
+
<notes>Initial Release</notes>
|
12 |
+
<authors><author><name>joel tan</name><user>cheetod</user><email>joel.tcy@gmail.com</email></author><author><name>opeyemi emmanuel</name><user>e_opeyemi</user><email>opeyemi.emmanuel@yahoo.com</email></author></authors>
|
13 |
+
<date>2013-09-09</date>
|
14 |
+
<time>13:07:19</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="Musho"><dir name="Flipdefine"><dir name="Block"><file name="Monblock.php" hash="3b4e8bd29389a87185bcc6d3fa1d07e0"/><dir name="Product"><file name="Abstract.php" hash="d6a9d5af1e308190b539cfb47ed17461"/><dir name="Compare"><file name="Abstract.php" hash="78269ca45e70312138222e66d47ce0c5"/><file name="List.php" hash="5d8a8f0aa187ed8fc4b78218b56cddf0"/><file name="Sidebar.php" hash="63d0b9ae33733b0e78d4ad9f10e0e4b0"/></dir><file name="Gallery.php" hash="35f102773273ed3ab0480c21ba3c279f"/><dir name="List"><file name="Crosssell.php" hash="3d36ca4bd92a7982df4700f3a27ace8d"/><file name="Promotion.php" hash="d74c6c08036f398145a791fb8ddeeb29"/><file name="Random.php" hash="0b3b943de3e83cad18e980c524e18c1c"/><file name="Related.php" hash="282c5a8b6616798f667519ad92e472d4"/><file name="Toolbar.php" hash="82db01e9475e7bbf5de00b04eb41f420"/><file name="Upsell.php" hash="c9762620b514587cc544568e1c7f360e"/></dir><file name="List.php" hash="8aab8ddfe96454f09ca10ecc717df2e1"/><file name="New.php" hash="cb124677e00266356f06b2eb260aeb44"/><dir name="Price"><file name="Template.php" hash="4f40d083dd3346932770a76dbe58f87b"/></dir><file name="Price.php" hash="9daedd2d6484d260e16b18a491494997"/><file name="Send.php" hash="42adcde368442b6c036595e7233d7aa2"/><dir name="View"><file name="Abstract.php" hash="bc0aae10b8b4a1cc828715d42ae00202"/><file name="Additional.php" hash="140cd06e88da8e281d2807b3cff07d81"/><file name="Attributes.php" hash="2908c3ee3e3553f4c8e2327d7d3276f6"/><file name="Description.php" hash="2295ea1c5a55e905467e5694279e37e6"/><file name="Media.php" hash="ab57a004791e287fa5f005e9ae8f4ab1"/><dir name="Options"><file name="Abstract.php" hash="8cfc7077188d68a5c6ed0e590c1b96c2"/><dir name="Type"><file name="Date.php" hash="d8d6f664fd350af6ef24339555137e89"/><file name="Default.php" hash="662faa975468e743d10ca0874d2806a2"/><file name="File.php" hash="e954fe2d3afca765c289e18fa6fbb399"/><file name="Select.php" hash="0c91bc6f8ff123f68cea46dc03548e0d"/><file name="Text.php" hash="c61f008cf7f940e27ca79284b9da0706"/></dir></dir><file name="Options.php" hash="f795bb89f7cb6b2d1a313fff63d80292"/><file name="Price.php" hash="e9ca3e84e2934faf2481e95118cd335e"/><file name="Tabs.php" hash="58ac53a9261140637b4c28736a32aa80"/><dir name="Type"><file name="Configurable.php" hash="598fa6accdda0f5e9d9ccc4cc702f768"/><file name="Grouped.php" hash="f5c26394a55341522d043c3e1b9217ae"/><file name="Simple.php" hash="c1b0fe08c3f3b8582201d2d829bcf51d"/><file name="Virtual.php" hash="e1f378e2265d6ec2181531449abb9065"/></dir></dir><file name="View.php" hash="98f3fa133094060bd899a0f436e6bf2f"/><dir name="Widget"><dir name="Html"><file name="Pager.php" hash="7d9cc90487248a2ce8816c733febc2e5"/></dir><file name="Link.php" hash="a465566af5823d8d61973fd1511c429c"/><file name="New.php" hash="876fc482bd5c2dc5862fcd36a44fd35e"/></dir></dir><file name="Products.php" hash="1d50cc12232052074b3922d202efb271"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="6daeacb19aa009a6e246696a23d0be3d"/></dir><file name="IndexController.php" hash="442ed0129502f359c880e10bed905d06"/><file name="ProductController.php" hash="fc6c42a2c335e9de8b00e87e98423080"/></dir><dir name="etc"><file name="config.xml" hash="decf4d3009b5af02ac523c705cad2ed2"/></dir></dir></dir></target><target name="magelocal"><dir name="VF"><dir name="EasyAjax"><dir name="Controller"><dir name="Varien"><dir name="Router"><file name="Json.php" hash="9d8710e011b4e569859ec89df06d89e5"/></dir></dir></dir><dir name="Model"><dir name="Core"><dir name="Message"><file name="Collection.php" hash="8b24a61bd6ffcaf1a069029c4fed9558"/></dir><file name="Message.php" hash="392c75721f3d9a2db5fc5ff0ac4aecb7"/></dir><file name="Core.php" hash="08dde3fd1c2cb399396709560ea1fbc8"/><dir name="Message"><file name="Storage.php" hash="e39615d56420240e164825a89915f4ce"/></dir><file name="Observer.php" hash="6484336803cc1b574973d8056905a4e1"/><file name="Response.php" hash="e04faa384459790e0a914353ef58624e"/></dir><dir name="etc"><file name="config.xml" hash="247d56256c309c69ded56cc7fa282419"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Musho_All.xml" hash="22e2d84c8927917d48424ae8bdd19617"/><file name="VF_EasyAjax.xml" hash="2c38d6596c8bfc606d5e2582fa1e7d82"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="flipdefine.xml" hash="e53ecca308e32ebb35684d126b0297b1"/><file name="easy_ajax.xml" hash="4c04ca0c723e250e30949c032cb03d4d"/></dir><dir name="template"><dir name="flipdefine"><file name="afficher.phtml" hash="7c47ce35f683333a0a27a206a0f12db1"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><file name="ajax-loader.gif" hash="a2b41a6b7a0ffcd37d092ec7ced7a5b1"/></dir><dir name="css"><file name="ajax_cart.css" hash="c7f7f655996df48c93e7f4413fb03d4a"/><file name="local.css" hash="44bbfca123dba565a3426df96e182d63"/></dir><dir name="js"><file name="ajax_cart.js" hash="8d5b1411e8149f73e435341b1aa83783"/><file name="easy_ajax.js" hash="89c639148bdcfc18403e695de347a20d"/></dir></dir></dir></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
+
</package>
|
skin/frontend/base/default/css/ajax_cart.css
ADDED
@@ -0,0 +1,1950 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.col-right {
|
2 |
+
display: none;
|
3 |
+
}
|
4 |
+
.col-left {
|
5 |
+
display: none;
|
6 |
+
}
|
7 |
+
.col3-layout .col-wrapper .col-main {
|
8 |
+
float: none;
|
9 |
+
}
|
10 |
+
.col3-layout .col-wrapper {
|
11 |
+
float: none;
|
12 |
+
width: 100%;
|
13 |
+
}
|
14 |
+
|
15 |
+
.col3-layout .col-main {
|
16 |
+
width: 100%;
|
17 |
+
display: block;
|
18 |
+
}
|
19 |
+
|
20 |
+
.wrapper.fullScreen, .page.fullScreen{
|
21 |
+
max-width:100%!important;
|
22 |
+
}
|
23 |
+
|
24 |
+
body{
|
25 |
+
background-color: #ffffff;
|
26 |
+
font-family: "Trebuchet MS", sans-serif;
|
27 |
+
font: 11px/1.35 Arial,Helvetica,sans-serif;
|
28 |
+
}
|
29 |
+
|
30 |
+
input, button{
|
31 |
+
font-family: "Trebuchet MS", sans-serif;
|
32 |
+
-webkit-border-fit: border;
|
33 |
+
}
|
34 |
+
|
35 |
+
a{
|
36 |
+
cursor: pointer;
|
37 |
+
}
|
38 |
+
|
39 |
+
ul{
|
40 |
+
margin:0;
|
41 |
+
padding:0;
|
42 |
+
}
|
43 |
+
|
44 |
+
.messages{
|
45 |
+
display:none;
|
46 |
+
}
|
47 |
+
|
48 |
+
.page-title.category-title{
|
49 |
+
display:none!important;
|
50 |
+
}
|
51 |
+
|
52 |
+
#zmags-dpw-overlay{
|
53 |
+
/* position: fixed;*/
|
54 |
+
top:0;
|
55 |
+
right:0;
|
56 |
+
bottom:0;
|
57 |
+
left:0;
|
58 |
+
}
|
59 |
+
|
60 |
+
#zmags-dpw-wrapper{
|
61 |
+
z-index:99;
|
62 |
+
}
|
63 |
+
|
64 |
+
#zmags-dpw.loading{
|
65 |
+
height:auto;
|
66 |
+
margin: 90px auto;
|
67 |
+
width: 660px;
|
68 |
+
left:20px;
|
69 |
+
}
|
70 |
+
|
71 |
+
|
72 |
+
|
73 |
+
.psz-dpw{
|
74 |
+
position: relative;
|
75 |
+
margin:90px -310px;
|
76 |
+
background: #ffffff;
|
77 |
+
box-shadow: 0px 0px 3px rgba(0,0,0,0.2);
|
78 |
+
width:620px;
|
79 |
+
float:left;
|
80 |
+
left:50%;
|
81 |
+
padding: 40px 20px 30px 20px;
|
82 |
+
font-size:150%;
|
83 |
+
z-index: 9999;
|
84 |
+
}
|
85 |
+
|
86 |
+
#zmags-dpw.loading .psz-dpw{
|
87 |
+
margin:0;
|
88 |
+
float:none;
|
89 |
+
left:auto;
|
90 |
+
}
|
91 |
+
|
92 |
+
#psz-closeDpw{
|
93 |
+
font-family: "ProximaNova-Regular",sans-serif;
|
94 |
+
position: absolute;
|
95 |
+
top: 10px;
|
96 |
+
right: 10px;
|
97 |
+
color:#656565;
|
98 |
+
font-weight:bold;
|
99 |
+
font-size: 65%;
|
100 |
+
cursor: pointer;
|
101 |
+
*position:relative;
|
102 |
+
*float:right;
|
103 |
+
*top:-25px;
|
104 |
+
*right:-10px;
|
105 |
+
}
|
106 |
+
|
107 |
+
#psz-closeDpw b{
|
108 |
+
display:inline-block;
|
109 |
+
width: 12px;
|
110 |
+
height: 12px;
|
111 |
+
background: url(../images/closeDpw.jpg);
|
112 |
+
position: relative;
|
113 |
+
top:2px;
|
114 |
+
}
|
115 |
+
|
116 |
+
.psz-imagesWrapper {
|
117 |
+
float:left;
|
118 |
+
margin-right:20px;
|
119 |
+
text-align: center;
|
120 |
+
width:290px;
|
121 |
+
position: relative;
|
122 |
+
}
|
123 |
+
|
124 |
+
.psz-imagesWrapper a{
|
125 |
+
display: block;
|
126 |
+
position: absolute;
|
127 |
+
|
128 |
+
left:0;
|
129 |
+
top:0;
|
130 |
+
width: 20px;
|
131 |
+
height: 250px;
|
132 |
+
line-height: 250px;
|
133 |
+
color:#c2c2c2;
|
134 |
+
font-size: 3.2em;
|
135 |
+
font-weight: bold;
|
136 |
+
font-family: "Lucida Sans", Arial, sans-serif;
|
137 |
+
text-align:center;
|
138 |
+
text-decoration:none;
|
139 |
+
}
|
140 |
+
|
141 |
+
.psz-imagesWrapper #nextImg{
|
142 |
+
left:auto;
|
143 |
+
right:0;
|
144 |
+
*left:270px;
|
145 |
+
}
|
146 |
+
|
147 |
+
.psz-imagesWrapper a:hover{
|
148 |
+
color:#000000;
|
149 |
+
}
|
150 |
+
|
151 |
+
.singleImage a{
|
152 |
+
visibility: hidden;
|
153 |
+
}
|
154 |
+
|
155 |
+
.psz-imagesWrapper a.disabled{
|
156 |
+
color:#eeeeee;
|
157 |
+
}
|
158 |
+
|
159 |
+
.psz-imagesWrapper a.disabled:hover{
|
160 |
+
color:#eeeeee;
|
161 |
+
cursor: default;
|
162 |
+
}
|
163 |
+
|
164 |
+
.psz-imagesWrapper img{
|
165 |
+
width:auto;
|
166 |
+
height:250px;
|
167 |
+
display: block;
|
168 |
+
margin:0 auto;
|
169 |
+
}
|
170 |
+
|
171 |
+
.psz-imagesWrapper div{
|
172 |
+
width:290px;
|
173 |
+
text-align: center;
|
174 |
+
float: left;
|
175 |
+
clear: both;
|
176 |
+
margin-top:15px;
|
177 |
+
}
|
178 |
+
|
179 |
+
.psz-imagesWrapper ul{
|
180 |
+
list-style: none;
|
181 |
+
display: inline-block;
|
182 |
+
}
|
183 |
+
|
184 |
+
.psz-imagesWrapper li{
|
185 |
+
list-style: none;
|
186 |
+
display: inline-block;
|
187 |
+
float: left;
|
188 |
+
height:6px;
|
189 |
+
width:6px;
|
190 |
+
border-radius: 3px;
|
191 |
+
background:#999999;
|
192 |
+
margin:0 5px;
|
193 |
+
cursor: pointer;
|
194 |
+
}
|
195 |
+
|
196 |
+
.psz-imagesWrapper li.active{
|
197 |
+
background: #D01F26;
|
198 |
+
}
|
199 |
+
|
200 |
+
.psz-productInfo{
|
201 |
+
float: left;
|
202 |
+
clear: right;
|
203 |
+
width: 290px;
|
204 |
+
}
|
205 |
+
|
206 |
+
.psz-productInfo h1{
|
207 |
+
font-style: normal;
|
208 |
+
font-family: "BauerBodoniBT-Italic",Georgia,serif;
|
209 |
+
font-size: 150%;
|
210 |
+
font-weight: normal;
|
211 |
+
margin-bottom: 15px;
|
212 |
+
margin-top:0;
|
213 |
+
float: left;
|
214 |
+
clear: both;
|
215 |
+
display: block;
|
216 |
+
*width:100%;
|
217 |
+
border:0!important;
|
218 |
+
}
|
219 |
+
|
220 |
+
.psz-productInfo h2{
|
221 |
+
font-family: "ProximaNova-Semibold",sans-serif;
|
222 |
+
font-size: 100%;
|
223 |
+
font-weight: normal;
|
224 |
+
margin-bottom: 7px;
|
225 |
+
margin-top:0;
|
226 |
+
float: left;
|
227 |
+
clear: both;
|
228 |
+
display: block;
|
229 |
+
*width:100%;
|
230 |
+
}
|
231 |
+
|
232 |
+
.psz-productInfo h3{
|
233 |
+
font-family: "ProximaNova-Semibold",sans-serif;
|
234 |
+
font-size: 100%;
|
235 |
+
font-weight: normal;
|
236 |
+
margin-bottom: 15px;
|
237 |
+
margin-top:0;
|
238 |
+
float: left;
|
239 |
+
clear: both;
|
240 |
+
display: block;
|
241 |
+
*width:100%;
|
242 |
+
}
|
243 |
+
.psz-productInfo h3 b{
|
244 |
+
font-family: "ProximaNova-Regular",sans-serif;
|
245 |
+
color:#D0222C;
|
246 |
+
font-weight:normal;
|
247 |
+
margin-left:0.5em;
|
248 |
+
}
|
249 |
+
|
250 |
+
.psz-productInfo #psz-form{
|
251 |
+
font-size:70%;
|
252 |
+
float: left;
|
253 |
+
clear: both;
|
254 |
+
display: block;
|
255 |
+
*width:100%;
|
256 |
+
}
|
257 |
+
|
258 |
+
/*.outOfStock #psz-form, */
|
259 |
+
.comingSoon #psz-form{
|
260 |
+
display:none!important;
|
261 |
+
}
|
262 |
+
|
263 |
+
#psz-form + span{
|
264 |
+
float:left;
|
265 |
+
clear: both;
|
266 |
+
font-size: 75%;
|
267 |
+
margin:25px 0;
|
268 |
+
width:100%;
|
269 |
+
}
|
270 |
+
|
271 |
+
.psz-productInfo a{
|
272 |
+
color:#656565;
|
273 |
+
text-decoration: underline;
|
274 |
+
cursor: pointer;
|
275 |
+
font-weight: bold;
|
276 |
+
}
|
277 |
+
|
278 |
+
.psz-productInfo label{
|
279 |
+
float:left;
|
280 |
+
clear: both;
|
281 |
+
margin-bottom: 7px;
|
282 |
+
}
|
283 |
+
|
284 |
+
|
285 |
+
.psz-productInfo select{
|
286 |
+
font-size:90%;
|
287 |
+
float: left;
|
288 |
+
clear: both;
|
289 |
+
border-radius: 2px;
|
290 |
+
border:1px solid #c5c5c5;
|
291 |
+
height: 20px;
|
292 |
+
line-height: 22px;
|
293 |
+
min-width: 148px;
|
294 |
+
padding: 1px 0 0 4px;
|
295 |
+
margin-bottom: 8px;
|
296 |
+
}
|
297 |
+
|
298 |
+
|
299 |
+
#psz-productQty{
|
300 |
+
float: left;
|
301 |
+
font-size:90%;
|
302 |
+
border-radius: 2px;
|
303 |
+
border:1px solid #c5c5c5;
|
304 |
+
height: 20px;
|
305 |
+
line-height: 22px;
|
306 |
+
width:30px;
|
307 |
+
padding: 0;
|
308 |
+
margin: 0 5px;
|
309 |
+
text-align: center;
|
310 |
+
}
|
311 |
+
|
312 |
+
#psz-qtyControls{
|
313 |
+
float:left;
|
314 |
+
clear:both;
|
315 |
+
width:100%;
|
316 |
+
}
|
317 |
+
|
318 |
+
#psz-qtyMinus{
|
319 |
+
clear: left;
|
320 |
+
}
|
321 |
+
|
322 |
+
#psz-qtyMinus, #psz-qtyPlus{
|
323 |
+
float: left;
|
324 |
+
border-radius: 2px;
|
325 |
+
border:1px solid #c5c5c5;
|
326 |
+
padding: 0 0 1px 0;
|
327 |
+
color:#c5c5c5;
|
328 |
+
font-weight: bold;
|
329 |
+
margin-bottom: 25px;
|
330 |
+
display: inline-block;
|
331 |
+
width: 22px;
|
332 |
+
height: 22px;
|
333 |
+
background: #ffffff;
|
334 |
+
text-align: center;
|
335 |
+
cursor: pointer;
|
336 |
+
}
|
337 |
+
|
338 |
+
#psz-qtyMinus:active, #psz-qtyPlus:active{
|
339 |
+
box-shadow:inset 1px 1px 1px #c5c5c5;
|
340 |
+
text-indent: 1px;
|
341 |
+
}
|
342 |
+
|
343 |
+
#psz-addToBag{
|
344 |
+
font-family: "ProximaNova-Semibold",sans-serif;
|
345 |
+
width:218px;
|
346 |
+
border:1px solid #000;
|
347 |
+
border-radius: 3px;
|
348 |
+
background-color: #999999;
|
349 |
+
background-image: -webkit-gradient(linear, left top, left bottom, from(#999999), to(#000000));
|
350 |
+
background-image: -webkit-linear-gradient(top, #999999, #000000);
|
351 |
+
background-image: -moz-linear-gradient(top, #999999, #000000);
|
352 |
+
background-image: -o-linear-gradient(top, #999999, #000000);
|
353 |
+
background-image: linear-gradient(to bottom, #999999, #000000);
|
354 |
+
color:#ffffff;
|
355 |
+
font-weight: normal;
|
356 |
+
line-height: 32px;
|
357 |
+
font-size:110%;
|
358 |
+
padding:0;
|
359 |
+
float: left;
|
360 |
+
clear: both;
|
361 |
+
box-shadow:inset 0px 0px 2px #c5c5c5;
|
362 |
+
text-shadow:1px 1px 2px #000;
|
363 |
+
cursor: pointer;
|
364 |
+
text-align:center;
|
365 |
+
}
|
366 |
+
|
367 |
+
|
368 |
+
#psz-addToBag:active{
|
369 |
+
box-shadow:inset 0px 0px 3px #000000;
|
370 |
+
text-indent: 3px;
|
371 |
+
}
|
372 |
+
|
373 |
+
#psz-addToBag.disabled{
|
374 |
+
border:1px solid #c2c2c2;
|
375 |
+
background-color: #dddddd;
|
376 |
+
background-image: -webkit-gradient(linear, left top, left bottom, from(#dddddd), to(#a1a1a1));
|
377 |
+
background-image: -webkit-linear-gradient(top, #dddddd, #a1a1a1);
|
378 |
+
background-image: -moz-linear-gradient(top, #dddddd, #a1a1a1);
|
379 |
+
background-image: -o-linear-gradient(top, #dddddd, #a1a1a1);
|
380 |
+
background-image: linear-gradient(to bottom, #dddddd, #a1a1a1);
|
381 |
+
color:#ffffff;
|
382 |
+
box-shadow:inset 0px 0px 2px #ffffff;
|
383 |
+
text-shadow:none;
|
384 |
+
}
|
385 |
+
|
386 |
+
#psz-addToBag.disabled:active{
|
387 |
+
box-shadow:inset 0px 0px 2px #ffffff;
|
388 |
+
text-indent:0;
|
389 |
+
}
|
390 |
+
|
391 |
+
#psz-share{
|
392 |
+
clear: both;
|
393 |
+
display: block;
|
394 |
+
float: left;
|
395 |
+
*width:100%;
|
396 |
+
}
|
397 |
+
|
398 |
+
#psz-share a.addthis_button_facebook_like{
|
399 |
+
width:80px!important;
|
400 |
+
}
|
401 |
+
|
402 |
+
#psz-share a.addthis_button_facebook_like, #psz-share a.addthis_button_facebook_like:hover{
|
403 |
+
opacity:1;
|
404 |
+
filter:Alpha(Opacity=100);
|
405 |
+
}
|
406 |
+
|
407 |
+
#psz-fullDetails{
|
408 |
+
font-family: "ProximaNova-Semibold",sans-serif!important;
|
409 |
+
font-weight:normal!important;
|
410 |
+
font-size:105%!important;
|
411 |
+
}
|
412 |
+
|
413 |
+
.clears{
|
414 |
+
display: inline-block;
|
415 |
+
clear: both;
|
416 |
+
}
|
417 |
+
|
418 |
+
#psz-modalInside{
|
419 |
+
display:none;
|
420 |
+
float:left;
|
421 |
+
position:relative;
|
422 |
+
z-index:9999;
|
423 |
+
width:100%;
|
424 |
+
}
|
425 |
+
|
426 |
+
#psz-modalInside + #psz-form + span{
|
427 |
+
display:block;
|
428 |
+
}
|
429 |
+
|
430 |
+
#psz-modalInside span{
|
431 |
+
display:block;
|
432 |
+
width:100%;
|
433 |
+
border-bottom:1px solid #c2c2c2;
|
434 |
+
padding-bottom:10px;
|
435 |
+
font-size:75%;
|
436 |
+
}
|
437 |
+
|
438 |
+
#psz-modalInside #continue-shopping{
|
439 |
+
border:1px solid #c2c2c2;
|
440 |
+
background-color: #eeeeee;
|
441 |
+
background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));
|
442 |
+
background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
|
443 |
+
background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
|
444 |
+
background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
|
445 |
+
background-image: linear-gradient(to bottom, #ffffff, #eeeeee);
|
446 |
+
color:#666666;
|
447 |
+
box-shadow:inset 0px 0px 2px #dddddd;
|
448 |
+
text-shadow:none;
|
449 |
+
display: inline-block;
|
450 |
+
text-decoration: none;
|
451 |
+
font-size:80%;
|
452 |
+
border-radius: 3px;
|
453 |
+
width:218px;
|
454 |
+
font-weight: bold;
|
455 |
+
float: left;
|
456 |
+
clear: both;
|
457 |
+
padding:0;
|
458 |
+
height:32px;
|
459 |
+
line-height:32px;
|
460 |
+
text-align:center;
|
461 |
+
}
|
462 |
+
|
463 |
+
#psz-modalInside #goto-checkout{
|
464 |
+
width:218px;
|
465 |
+
border:1px solid #000;
|
466 |
+
border-radius: 3px;
|
467 |
+
background-color: #999999;
|
468 |
+
background-image: -webkit-gradient(linear, left top, left bottom, from(#999999), to(#000000));
|
469 |
+
background-image: -webkit-linear-gradient(top, #999999, #000000);
|
470 |
+
background-image: -moz-linear-gradient(top, #999999, #000000);
|
471 |
+
background-image: -o-linear-gradient(top, #999999, #000000);
|
472 |
+
background-image: linear-gradient(to bottom, #999999, #000000);
|
473 |
+
color:#ffffff;
|
474 |
+
font-weight: bold;
|
475 |
+
line-height: 32px;
|
476 |
+
padding:0;
|
477 |
+
float: left;
|
478 |
+
clear: both;
|
479 |
+
box-shadow:inset 0px 0px 2px #c5c5c5;
|
480 |
+
text-shadow:1px 1px 2px #000;
|
481 |
+
display: inline-block;
|
482 |
+
text-decoration: none;
|
483 |
+
font-size:80%;
|
484 |
+
height:32px;
|
485 |
+
text-align:center;
|
486 |
+
margin-bottom:1em;
|
487 |
+
}
|
488 |
+
|
489 |
+
|
490 |
+
/* Pretty Dropdown */
|
491 |
+
|
492 |
+
.prettyDropdown{
|
493 |
+
position: relative;
|
494 |
+
display:block;
|
495 |
+
width:148px;
|
496 |
+
height:22px;
|
497 |
+
line-height: 22px;
|
498 |
+
float:left;
|
499 |
+
clear:both;
|
500 |
+
margin-bottom: 8px;
|
501 |
+
cursor:pointer;
|
502 |
+
z-index:1;
|
503 |
+
}
|
504 |
+
|
505 |
+
.prettyDropdown.activeDropdown{
|
506 |
+
z-index:9999;
|
507 |
+
}
|
508 |
+
|
509 |
+
.prettyDropdown.activeDropdown > ul{
|
510 |
+
top:24px;
|
511 |
+
}
|
512 |
+
|
513 |
+
.prettyDropdown span{
|
514 |
+
color:#000;
|
515 |
+
display:inline-block;
|
516 |
+
border-radius: 2px;
|
517 |
+
border:1px solid #c5c5c5;
|
518 |
+
height: 22px;
|
519 |
+
line-height: 22px;
|
520 |
+
width: 148px;
|
521 |
+
padding-left:4px;
|
522 |
+
overflow: hidden;
|
523 |
+
}
|
524 |
+
|
525 |
+
.prettyDropdown ul{
|
526 |
+
list-style: none;
|
527 |
+
display: none;
|
528 |
+
position: absolute;
|
529 |
+
z-index: 9999;
|
530 |
+
float: left;
|
531 |
+
border-radius: 2px;
|
532 |
+
border:1px solid #c5c5c5;
|
533 |
+
line-height: 22px;
|
534 |
+
background:#fefefe;
|
535 |
+
padding:0;
|
536 |
+
margin:1px 0 0 0;
|
537 |
+
cursor: pointer;
|
538 |
+
}
|
539 |
+
|
540 |
+
.prettyDropdown div.flexcroll.scrollableDropdown{
|
541 |
+
display: none;
|
542 |
+
position: relative;
|
543 |
+
z-index: 9999;
|
544 |
+
float: left;
|
545 |
+
border-radius: 2px;
|
546 |
+
border:1px solid #c5c5c5;
|
547 |
+
line-height: 22px;
|
548 |
+
background:#fefefe;
|
549 |
+
padding:0;
|
550 |
+
margin:1px 0 0 0;
|
551 |
+
cursor: pointer;
|
552 |
+
height: 200px;
|
553 |
+
overflow: auto;
|
554 |
+
width:152px;
|
555 |
+
}
|
556 |
+
|
557 |
+
.prettyDropdown div.flexcroll.scrollableDropdown ul{
|
558 |
+
display: block;
|
559 |
+
border-radius: 0;
|
560 |
+
border: 0;
|
561 |
+
padding:0;
|
562 |
+
margin:0;
|
563 |
+
float: none;
|
564 |
+
position:relative;
|
565 |
+
}
|
566 |
+
|
567 |
+
.prettyDropdown div.flexcroll.scrollableDropdown li{
|
568 |
+
display: block;
|
569 |
+
float: none;
|
570 |
+
position:relative;
|
571 |
+
}
|
572 |
+
|
573 |
+
.prettyDropdown ul.scrollableDropdown{
|
574 |
+
width: 152px;
|
575 |
+
height: 200px;
|
576 |
+
overflow-y:scroll;
|
577 |
+
}
|
578 |
+
|
579 |
+
.prettyDropdown ul.scrollableDropdown li{
|
580 |
+
width: 131px;
|
581 |
+
}
|
582 |
+
|
583 |
+
|
584 |
+
.prettyDropdown li {
|
585 |
+
list-style: none;
|
586 |
+
float: left;
|
587 |
+
clear: both;
|
588 |
+
padding:0 0 0 4px;
|
589 |
+
margin:0;
|
590 |
+
width:148px;
|
591 |
+
}
|
592 |
+
|
593 |
+
.prettyDropdown li:hover{
|
594 |
+
background: #efefef;
|
595 |
+
}
|
596 |
+
|
597 |
+
.prettyDropdown:hover b{
|
598 |
+
color:#333333;
|
599 |
+
}
|
600 |
+
|
601 |
+
.prettyDropdown b{
|
602 |
+
position:absolute;
|
603 |
+
width:22px;
|
604 |
+
height:22px;
|
605 |
+
font-size: 300%;
|
606 |
+
font-weight: bold;
|
607 |
+
font-family: "Lucida Sans", Arial, sans-serif;
|
608 |
+
right:0;
|
609 |
+
top:0;
|
610 |
+
-webkit-transform: rotate(-90deg);
|
611 |
+
-moz-transform: rotate(-90deg);
|
612 |
+
-ms-transform: rotate(-90deg);
|
613 |
+
-o-transform: rotate(-90deg);
|
614 |
+
transform: rotate(-90deg);
|
615 |
+
/*filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE9 */
|
616 |
+
/*M11=6.123233995736766e-17, M12=1, M21=-1, M22=6.123233995736766e-17, sizingMethod='auto expand');*/
|
617 |
+
zoom: 1;
|
618 |
+
color:#c2c2c2;
|
619 |
+
text-align:center;
|
620 |
+
line-height:0.8;
|
621 |
+
}
|
622 |
+
|
623 |
+
/* IE specific */
|
624 |
+
.ie #psz-modalInside #continue-shopping{
|
625 |
+
background-image:none;
|
626 |
+
}
|
627 |
+
|
628 |
+
.ie #psz-modalInside #goto-checkout{
|
629 |
+
background-image:none;
|
630 |
+
}
|
631 |
+
|
632 |
+
.ie7 .psz-imagesWrapper ul, .ie7 .psz-imagesWrapper li{
|
633 |
+
display:inline;
|
634 |
+
}
|
635 |
+
|
636 |
+
.ie7 #psz-qtyControls{
|
637 |
+
margin-bottom:25px;
|
638 |
+
}
|
639 |
+
|
640 |
+
/* prettyDropdown IE specific */
|
641 |
+
|
642 |
+
.ie7 .prettyDropdown ul{
|
643 |
+
top:24px;
|
644 |
+
left:0;
|
645 |
+
}
|
646 |
+
|
647 |
+
.ie7 .prettyDropdown div{
|
648 |
+
top:0;
|
649 |
+
}
|
650 |
+
|
651 |
+
.ie7 .prettyDropdown div ul{
|
652 |
+
top:0;
|
653 |
+
}
|
654 |
+
|
655 |
+
.ie .prettyDropdown b{
|
656 |
+
color:transparent;
|
657 |
+
font-size: 0;
|
658 |
+
background: url(../images/dd-arrow.png) no-repeat center center;
|
659 |
+
right:-5px;
|
660 |
+
top: 2px;
|
661 |
+
}
|
662 |
+
|
663 |
+
.clears {
|
664 |
+
display: block;
|
665 |
+
clear:both;
|
666 |
+
height:0px;
|
667 |
+
line-height:0px;
|
668 |
+
visibility: hidden;
|
669 |
+
}
|
670 |
+
|
671 |
+
/* bazaar page
|
672 |
+
|
673 |
+
.sidebar{
|
674 |
+
display:none;
|
675 |
+
}
|
676 |
+
|
677 |
+
.col3-layout .col-wrapper{
|
678 |
+
width:100%;
|
679 |
+
}
|
680 |
+
|
681 |
+
.col3-layout .col-wrapper .col-main{
|
682 |
+
float:none;
|
683 |
+
width:100%;
|
684 |
+
height:100%;
|
685 |
+
}
|
686 |
+
*/
|
687 |
+
|
688 |
+
#zmagspsMobileViewer{
|
689 |
+
border:none;
|
690 |
+
display:none;
|
691 |
+
}
|
692 |
+
#zmagspsCatalogContainer.facebook{
|
693 |
+
height:578px;
|
694 |
+
width:100%;
|
695 |
+
}
|
696 |
+
|
697 |
+
.facebook .psz-dpw{
|
698 |
+
font-size:100%!important;
|
699 |
+
margin-top:20px;
|
700 |
+
margin-left:-330px;
|
701 |
+
}
|
702 |
+
|
703 |
+
.facebook .psz-productInfo h1 {
|
704 |
+
font-style:normal;
|
705 |
+
}
|
706 |
+
|
707 |
+
html.zapp, .zapp body, .zapp #zmags-dpw-wrapper, .zapp #zmagspsCatalogContainer, .zapp #zmags-dpw-overlay{
|
708 |
+
background-color:transparent !important;
|
709 |
+
}
|
710 |
+
.zapp .psz-dpw{
|
711 |
+
margin-top:120px;
|
712 |
+
}
|
713 |
+
.zapp .prettyDropdown b {
|
714 |
+
right:15px;
|
715 |
+
}
|
716 |
+
|
717 |
+
/* iPhone portrait */
|
718 |
+
@media all and (max-width:480px) {
|
719 |
+
|
720 |
+
html, body{
|
721 |
+
background: #ffffff;
|
722 |
+
min-width: 320px !important;
|
723 |
+
width: 320px !important;
|
724 |
+
max-width: 320px!important;
|
725 |
+
height: 420px !important;
|
726 |
+
max-height: 420px !important;
|
727 |
+
min-height: 420px !important;
|
728 |
+
}
|
729 |
+
|
730 |
+
#zmagspsCatalogContainer{
|
731 |
+
margin: 0;
|
732 |
+
width: 100% !important;
|
733 |
+
height: 380px !important;
|
734 |
+
background: #ffffff;
|
735 |
+
}
|
736 |
+
#zmagspsMobileViewer{
|
737 |
+
|
738 |
+
width:100%!important;
|
739 |
+
height:98% !important;
|
740 |
+
}
|
741 |
+
|
742 |
+
|
743 |
+
.psz-dpw{
|
744 |
+
position: fixed;
|
745 |
+
top:20px;
|
746 |
+
left:10px;
|
747 |
+
right:10px;
|
748 |
+
height:auto;
|
749 |
+
margin:0;
|
750 |
+
width: auto;
|
751 |
+
padding-top: 0px;
|
752 |
+
padding-bottom: 0px;
|
753 |
+
font-size:130%;
|
754 |
+
}
|
755 |
+
|
756 |
+
.psz-imagesWrapper{
|
757 |
+
position:relative;
|
758 |
+
z-index: 9999;
|
759 |
+
top:20px;
|
760 |
+
left:-10px;
|
761 |
+
width: 130px;
|
762 |
+
}
|
763 |
+
|
764 |
+
.psz-imagesWrapper a{
|
765 |
+
width: 20px;
|
766 |
+
height: 80px;
|
767 |
+
line-height: 80px;
|
768 |
+
font-size: 3.2em;
|
769 |
+
}
|
770 |
+
|
771 |
+
.psz-imagesWrapper img{
|
772 |
+
width:80px;
|
773 |
+
height:80px;
|
774 |
+
}
|
775 |
+
|
776 |
+
.psz-imagesWrapper div{
|
777 |
+
width:120px;
|
778 |
+
text-align: center;
|
779 |
+
}
|
780 |
+
|
781 |
+
.psz-productInfo {
|
782 |
+
width:100%;
|
783 |
+
position: relative;
|
784 |
+
top:-80px;
|
785 |
+
margin-bottom:-80px;
|
786 |
+
}
|
787 |
+
|
788 |
+
.psz-productInfo h1,.psz-productInfo h2, .psz-productInfo h3{
|
789 |
+
margin:0 0 0 130px!important;
|
790 |
+
max-width: 130px;
|
791 |
+
}
|
792 |
+
|
793 |
+
.psz-productInfo #psz-form{
|
794 |
+
display:block;
|
795 |
+
width:100%;
|
796 |
+
border-top:1px solid #c5c5c5;
|
797 |
+
padding-top: 10px;
|
798 |
+
margin-top: 50px;
|
799 |
+
}
|
800 |
+
|
801 |
+
.prettyDropdown{
|
802 |
+
clear:none;
|
803 |
+
}
|
804 |
+
|
805 |
+
#psz-form label{
|
806 |
+
line-height: 22px;
|
807 |
+
min-width: 70px;
|
808 |
+
}
|
809 |
+
|
810 |
+
#psz-qtyControls{
|
811 |
+
clear:none;
|
812 |
+
width:auto;
|
813 |
+
}
|
814 |
+
|
815 |
+
#psz-share{
|
816 |
+
width: auto;
|
817 |
+
margin:0 0 0 130px;
|
818 |
+
}
|
819 |
+
|
820 |
+
#psz-share a{
|
821 |
+
display:none;
|
822 |
+
}
|
823 |
+
|
824 |
+
#psz-share a.addthis_button_pinterest_pinit{
|
825 |
+
display:block;
|
826 |
+
}
|
827 |
+
|
828 |
+
|
829 |
+
|
830 |
+
#psz-modalInside + #psz-form + span {
|
831 |
+
margin:10px 0;
|
832 |
+
}
|
833 |
+
|
834 |
+
#psz-modalInside div h1{
|
835 |
+
margin: 0 0 10px 0!important;
|
836 |
+
font-size:14px;
|
837 |
+
max-width: 268px;
|
838 |
+
padding-top:10px;
|
839 |
+
}
|
840 |
+
|
841 |
+
#zmags-dpw-overlay{
|
842 |
+
position: fixed;
|
843 |
+
top:0;
|
844 |
+
right:0;
|
845 |
+
bottom:0;
|
846 |
+
left:0;
|
847 |
+
min-height:460px!important;
|
848 |
+
}
|
849 |
+
|
850 |
+
|
851 |
+
#psz-modalInside #continue-shopping,#psz-modalInside #goto-checkout{
|
852 |
+
width:120px!important;
|
853 |
+
float:none!important;
|
854 |
+
margin:0!important;
|
855 |
+
}
|
856 |
+
|
857 |
+
#zmags-dpw.loading{
|
858 |
+
height:auto!important;
|
859 |
+
margin:auto!important;
|
860 |
+
width: auto!important;
|
861 |
+
left:auto!important;
|
862 |
+
}
|
863 |
+
|
864 |
+
.fullScreen #zmagspsCatalogContainer {
|
865 |
+
overflow: visible!important;
|
866 |
+
}
|
867 |
+
|
868 |
+
/* Krsto Orli� 2013/03/07 */
|
869 |
+
.video_window{
|
870 |
+
margin:0!Important;
|
871 |
+
}
|
872 |
+
|
873 |
+
.modal #video_player{
|
874 |
+
margin-left:-30px;
|
875 |
+
}
|
876 |
+
|
877 |
+
#zmags-dpw.modal{
|
878 |
+
margin-top:5%!important;
|
879 |
+
height:70%;
|
880 |
+
}
|
881 |
+
|
882 |
+
#zmags-dpw.modal .video_window{
|
883 |
+
width:100%;
|
884 |
+
height:100%;
|
885 |
+
}
|
886 |
+
|
887 |
+
#zmags-dpw.modal iframe{
|
888 |
+
width:100%;
|
889 |
+
height:85%
|
890 |
+
}
|
891 |
+
}
|
892 |
+
|
893 |
+
/* iPhone landscape */
|
894 |
+
@media all and (min-width:480px) and (max-width:640px){
|
895 |
+
|
896 |
+
|
897 |
+
html, body{
|
898 |
+
background: #ffffff;
|
899 |
+
min-width: 480px !important;
|
900 |
+
width: 480px !important;
|
901 |
+
max-width: 480px!important;
|
902 |
+
max-height:270px!important;
|
903 |
+
|
904 |
+
}
|
905 |
+
#zmagspsCatalogContainer{
|
906 |
+
margin:0!important;
|
907 |
+
width: 100% !important;
|
908 |
+
height: 350px !important;
|
909 |
+
background: #ffffff;
|
910 |
+
}
|
911 |
+
#zmagspsMobileViewer{
|
912 |
+
width: 480px !important;
|
913 |
+
height: 270px !important;
|
914 |
+
margin:0!important;
|
915 |
+
}
|
916 |
+
|
917 |
+
|
918 |
+
|
919 |
+
#zmags-dpw-overlay{
|
920 |
+
position: fixed;
|
921 |
+
top:0;
|
922 |
+
right:0;
|
923 |
+
bottom:0;
|
924 |
+
left:0;
|
925 |
+
min-height:270px!important;
|
926 |
+
}
|
927 |
+
|
928 |
+
|
929 |
+
.psz-dpw{
|
930 |
+
position: fixed;
|
931 |
+
top:15px;
|
932 |
+
left:20px!important;
|
933 |
+
right:20px;
|
934 |
+
height:auto!important;
|
935 |
+
margin:0!important;
|
936 |
+
width: auto!important;
|
937 |
+
padding-top: 0px;
|
938 |
+
padding-bottom: 5px;
|
939 |
+
}
|
940 |
+
|
941 |
+
|
942 |
+
|
943 |
+
|
944 |
+
.psz-imagesWrapper a{
|
945 |
+
width: 20px;
|
946 |
+
height: 80px;
|
947 |
+
line-height: 80px;
|
948 |
+
font-size: 3.2em;
|
949 |
+
}
|
950 |
+
|
951 |
+
.psz-imagesWrapper img{
|
952 |
+
width:80px;
|
953 |
+
height:80px;
|
954 |
+
}
|
955 |
+
|
956 |
+
.psz-imagesWrapper div{
|
957 |
+
width:120px;
|
958 |
+
text-align: center;
|
959 |
+
}
|
960 |
+
|
961 |
+
.psz-productInfo{
|
962 |
+
width:250px;
|
963 |
+
margin:0;
|
964 |
+
top:10px;
|
965 |
+
}
|
966 |
+
|
967 |
+
.psz-productInfo h1{
|
968 |
+
max-width: 250px;
|
969 |
+
margin:0 0 0 2px!important;
|
970 |
+
}
|
971 |
+
|
972 |
+
.psz-productInfo h2, .psz-productInfo h3{
|
973 |
+
max-width: 250px;
|
974 |
+
margin:0 0 0 0!Important;
|
975 |
+
}
|
976 |
+
|
977 |
+
.prettyDropdown{
|
978 |
+
clear:none;
|
979 |
+
}
|
980 |
+
|
981 |
+
|
982 |
+
|
983 |
+
#psz-form label{
|
984 |
+
line-height: 22px;
|
985 |
+
min-width: 70px;
|
986 |
+
}
|
987 |
+
|
988 |
+
#psz-qtyControls{
|
989 |
+
clear:none;
|
990 |
+
width:auto;
|
991 |
+
}
|
992 |
+
|
993 |
+
#psz-share{
|
994 |
+
width:auto;
|
995 |
+
position: relative;
|
996 |
+
float:right;
|
997 |
+
top:-40px;
|
998 |
+
}
|
999 |
+
|
1000 |
+
#psz-share a{
|
1001 |
+
display:none;
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
#psz-share a.addthis_button_pinterest_pinit{
|
1005 |
+
display:block;
|
1006 |
+
}
|
1007 |
+
|
1008 |
+
#psz-modalInside{
|
1009 |
+
margin-top:0;
|
1010 |
+
}
|
1011 |
+
|
1012 |
+
#psz-modalInside + #psz-form + span {
|
1013 |
+
margin:10px 0;
|
1014 |
+
}
|
1015 |
+
|
1016 |
+
.psz-productInfo #psz-form{
|
1017 |
+
border-top:1px solid #c5c5c5;
|
1018 |
+
padding-top:10px;
|
1019 |
+
width:100%;
|
1020 |
+
margin-top:15px!important;
|
1021 |
+
}
|
1022 |
+
|
1023 |
+
#psz-addToBag{
|
1024 |
+
margin-top:-15px;
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
}
|
1028 |
+
|
1029 |
+
/*Custom Viewer*/
|
1030 |
+
|
1031 |
+
#psz-header-div{
|
1032 |
+
height:45px;
|
1033 |
+
width:100%;
|
1034 |
+
position: relative;
|
1035 |
+
top:0;
|
1036 |
+
left:0;
|
1037 |
+
z-index:2;
|
1038 |
+
background: #fff;
|
1039 |
+
display:block;
|
1040 |
+
}
|
1041 |
+
|
1042 |
+
#psz-shopping{
|
1043 |
+
font-family: Arial, sans-serif!Important;
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
#psz-header-div.showing{
|
1047 |
+
z-index:1;
|
1048 |
+
}
|
1049 |
+
|
1050 |
+
#header-overlay{
|
1051 |
+
display:none;
|
1052 |
+
display: block\9;
|
1053 |
+
}
|
1054 |
+
|
1055 |
+
.webkit #header-overlay{
|
1056 |
+
display:none!important;
|
1057 |
+
}
|
1058 |
+
|
1059 |
+
.webkit.macos #header-overlay{
|
1060 |
+
display:block!important;
|
1061 |
+
}
|
1062 |
+
|
1063 |
+
.fullScreen #psz-header-div.showing #header-overlay{
|
1064 |
+
position: absolute;
|
1065 |
+
width:100%;
|
1066 |
+
height:100%;
|
1067 |
+
background-color: rgba(0, 0, 0, 0.6);
|
1068 |
+
display: block;
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
.no-rgba .fullScreen #psz-header-div.showing #header-overlay{
|
1072 |
+
background: url("../images/overlay.png");
|
1073 |
+
}
|
1074 |
+
|
1075 |
+
|
1076 |
+
.fullScreen #psz-header-div{
|
1077 |
+
position:relative;
|
1078 |
+
/* margin-bottom:-24px;*/
|
1079 |
+
margin-bottom:-2px\9;
|
1080 |
+
border-bottom:1px solid #000000;
|
1081 |
+
margin-top: 15px;
|
1082 |
+
}
|
1083 |
+
|
1084 |
+
.fullScreen #zmags-dpw-overlay{
|
1085 |
+
/* top:44px;*/
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
.webkit.fullScreen #psz-header-div{
|
1089 |
+
/*margin-bottom:0px!important;*/
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
.facebook #psz-header-div{
|
1093 |
+
|
1094 |
+
margin-bottom:-24px;
|
1095 |
+
border-bottom:1px solid #000000;
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
.facebook.webkit #psz-header-div{
|
1099 |
+
|
1100 |
+
margin-bottom:-1px!important;
|
1101 |
+
|
1102 |
+
}
|
1103 |
+
|
1104 |
+
|
1105 |
+
#psz-top-left{
|
1106 |
+
width:auto;
|
1107 |
+
float:left;
|
1108 |
+
font-family: "BauerBodoniBT-Italic", Georgia, serif;
|
1109 |
+
font-size: 32px;
|
1110 |
+
margin-left:20px;
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
#psz-month-year{
|
1114 |
+
width:auto;
|
1115 |
+
float:left;
|
1116 |
+
font-family: "Myriad Pro", sans-serif;
|
1117 |
+
font-size: 20px;
|
1118 |
+
margin-left: 15px;
|
1119 |
+
margin-top: 11px;
|
1120 |
+
display:none;
|
1121 |
+
}
|
1122 |
+
|
1123 |
+
#psz-shopping{
|
1124 |
+
float:right;
|
1125 |
+
font-family: "Myriad Pro";
|
1126 |
+
font-size: 14px;
|
1127 |
+
color:#777777;
|
1128 |
+
margin-top:12px;
|
1129 |
+
margin-right:30px;
|
1130 |
+
cursor:pointer;
|
1131 |
+
display:none;
|
1132 |
+
}
|
1133 |
+
|
1134 |
+
#psz-shopping-image{
|
1135 |
+
float:right;
|
1136 |
+
margin-top:11px;
|
1137 |
+
margin-right:7px;
|
1138 |
+
cursor:pointer;
|
1139 |
+
display:none;
|
1140 |
+
}
|
1141 |
+
|
1142 |
+
.fullScreen #psz-shopping, .fullScreen #psz-shopping-image{
|
1143 |
+
display: block;
|
1144 |
+
}
|
1145 |
+
/**/
|
1146 |
+
|
1147 |
+
.category-view.fullScreen{
|
1148 |
+
position: fixed;
|
1149 |
+
top: 0;
|
1150 |
+
right: 0;
|
1151 |
+
bottom: 0;
|
1152 |
+
left: 0;
|
1153 |
+
background:#fff!important\9;
|
1154 |
+
}
|
1155 |
+
|
1156 |
+
.fullScreen #zmagspsCatalogContainer{
|
1157 |
+
overflow: hidden;
|
1158 |
+
}
|
1159 |
+
|
1160 |
+
#zmagspsCatalogContainer{
|
1161 |
+
width:960px;
|
1162 |
+
height:701px;
|
1163 |
+
overflow:visible;
|
1164 |
+
margin:0 auto;
|
1165 |
+
position: relative;
|
1166 |
+
z-index: 1;
|
1167 |
+
}
|
1168 |
+
|
1169 |
+
#zmagspsCatalogContainer.fullScreen object{
|
1170 |
+
margin-top:0;
|
1171 |
+
height:91%;
|
1172 |
+
}
|
1173 |
+
|
1174 |
+
#psz-footer-div{
|
1175 |
+
position:relative;
|
1176 |
+
z-index:9999;
|
1177 |
+
bottom:0;
|
1178 |
+
height:40px;
|
1179 |
+
width:960px;
|
1180 |
+
margin:0 auto;
|
1181 |
+
}
|
1182 |
+
|
1183 |
+
|
1184 |
+
.fullScreen #psz-footer-div{
|
1185 |
+
position: absolute;
|
1186 |
+
background:#000;
|
1187 |
+
width:100%;
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
#psz-fullscreen{
|
1191 |
+
float:right;
|
1192 |
+
width:108px;
|
1193 |
+
height:16px;
|
1194 |
+
background-image: url(//ps.zmags.com/commerce/deploy/hearst/base//images/fullscreen.png);
|
1195 |
+
cursor:pointer;
|
1196 |
+
margin-top:10px;
|
1197 |
+
display: block;
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
#psz-fullscreen:hover{
|
1201 |
+
background-image: url(//ps.zmags.com/commerce/deploy/hearst/base//images/fullscreen-hover.png);
|
1202 |
+
}
|
1203 |
+
|
1204 |
+
.fullScreen #psz-fullscreen{
|
1205 |
+
background-image: url(//ps.zmags.com/commerce/deploy/hearst/base//images/exit-fullscreen.png);
|
1206 |
+
width:127px;
|
1207 |
+
height:23px;
|
1208 |
+
margin-right:10px;
|
1209 |
+
}
|
1210 |
+
|
1211 |
+
|
1212 |
+
#zMobileGoPrevPage{
|
1213 |
+
position:absolute;
|
1214 |
+
left:5px;
|
1215 |
+
top:50%;
|
1216 |
+
margin-top:-10px;
|
1217 |
+
height:0;
|
1218 |
+
width:0;
|
1219 |
+
border-right:20px solid #666666;
|
1220 |
+
border-top:20px solid transparent;
|
1221 |
+
border-bottom:20px solid transparent;
|
1222 |
+
display: block;
|
1223 |
+
z-index:99;
|
1224 |
+
}
|
1225 |
+
|
1226 |
+
#zMobileGoPrevPage:hover{
|
1227 |
+
border-right:20px solid #000000;
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
#zMobileGoNextPage{
|
1231 |
+
position:absolute;
|
1232 |
+
right:5px;
|
1233 |
+
top:50%;
|
1234 |
+
margin-top:-10px;
|
1235 |
+
height:0;
|
1236 |
+
width:0;
|
1237 |
+
border-left:20px solid #666666;
|
1238 |
+
border-top:20px solid transparent;
|
1239 |
+
border-bottom:20px solid transparent;
|
1240 |
+
display: block;
|
1241 |
+
z-index:99;
|
1242 |
+
}
|
1243 |
+
|
1244 |
+
#zMobileGoNextPage:hover{
|
1245 |
+
border-left:20px solid #000000;
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
|
1249 |
+
/* iPads (landscape) ----------- */
|
1250 |
+
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) {
|
1251 |
+
|
1252 |
+
.psz-sharing{
|
1253 |
+
margin-left:25px;
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
#psz-viewer, .fullScreen #psz-viewer{
|
1257 |
+
border-bottom:0!important;
|
1258 |
+
border-top:1px solid #c2c2c2;
|
1259 |
+
position:relative!important;
|
1260 |
+
top:-40px !important;
|
1261 |
+
z-index:9999;
|
1262 |
+
}
|
1263 |
+
|
1264 |
+
#psz-shoppingBag{
|
1265 |
+
display: block;
|
1266 |
+
background: url(../images/sbag.png) no-repeat left;
|
1267 |
+
float:right;
|
1268 |
+
clear:none;
|
1269 |
+
line-height:40px;
|
1270 |
+
text-transform: capitalize;
|
1271 |
+
color:#000;
|
1272 |
+
font-size: 12px;
|
1273 |
+
padding-right:0;
|
1274 |
+
padding-left:30px;
|
1275 |
+
margin-right:25px;
|
1276 |
+
cursor: pointer;
|
1277 |
+
text-decoration: none;
|
1278 |
+
}
|
1279 |
+
|
1280 |
+
#psz-shoppingBag:hover{
|
1281 |
+
text-decoration: underline;
|
1282 |
+
}
|
1283 |
+
|
1284 |
+
html, body{
|
1285 |
+
background: #ffffff;
|
1286 |
+
min-height:690px!important;
|
1287 |
+
height:690px!important;
|
1288 |
+
max-height:690px!important;
|
1289 |
+
overflow:hidden!important;
|
1290 |
+
}
|
1291 |
+
|
1292 |
+
/*
|
1293 |
+
|
1294 |
+
width: 960px!important;
|
1295 |
+
height: 630px!important;
|
1296 |
+
|
1297 |
+
*/
|
1298 |
+
|
1299 |
+
.fullScreen #psz-header-div{
|
1300 |
+
position: relative;
|
1301 |
+
margin-bottom:0;
|
1302 |
+
}
|
1303 |
+
|
1304 |
+
#zmags-dpw-wrapper{
|
1305 |
+
overflow:visible;
|
1306 |
+
}
|
1307 |
+
|
1308 |
+
|
1309 |
+
#zmags-dpw-overlay{
|
1310 |
+
position:absolute;
|
1311 |
+
width:100%;
|
1312 |
+
height:100%;
|
1313 |
+
}
|
1314 |
+
|
1315 |
+
#zmagspsCatalogContainer {
|
1316 |
+
background: #ffffff;
|
1317 |
+
width: 1024px!important;
|
1318 |
+
height: 640px!important;
|
1319 |
+
/*width:960px!important;
|
1320 |
+
height:600px!important;*/
|
1321 |
+
overflow: visible;
|
1322 |
+
top: -10px;
|
1323 |
+
padding-top:10px;
|
1324 |
+
}
|
1325 |
+
|
1326 |
+
#zmagspsCatalogContainer object{
|
1327 |
+
margin-top:0px;
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
#zmagspsMobileViewer{
|
1331 |
+
margin-top:0px;
|
1332 |
+
border: none;
|
1333 |
+
width:840px!important;
|
1334 |
+
position: relative;
|
1335 |
+
left:50%;
|
1336 |
+
margin-left:-420px;
|
1337 |
+
height:625px!important;
|
1338 |
+
overflow: visible;
|
1339 |
+
}
|
1340 |
+
|
1341 |
+
#psz-header-div #psz-top-left{
|
1342 |
+
line-height:55px;
|
1343 |
+
}
|
1344 |
+
|
1345 |
+
#zMobileGoPrevPage{
|
1346 |
+
left: 5px;
|
1347 |
+
}
|
1348 |
+
|
1349 |
+
#zMobileGoNextPage{
|
1350 |
+
right: 0px;
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
#zMobileGoPrevPage,#zMobileGoNextPage{
|
1354 |
+
margin-top:-50px;
|
1355 |
+
}
|
1356 |
+
|
1357 |
+
|
1358 |
+
#psz-viewerNext:hover {
|
1359 |
+
border-left: 8px solid black !important;
|
1360 |
+
}
|
1361 |
+
|
1362 |
+
#psz-viewerPrev:hover{
|
1363 |
+
border-right: 8px solid black !important;
|
1364 |
+
}
|
1365 |
+
|
1366 |
+
#zMobileGoNextPage:hover {
|
1367 |
+
border-left: 20px solid #666 !important;
|
1368 |
+
}
|
1369 |
+
|
1370 |
+
#zMobileGoPrevPage:hover {
|
1371 |
+
border-right: 20px solid #666 !important;
|
1372 |
+
}
|
1373 |
+
|
1374 |
+
#zmags-dpw.loading{
|
1375 |
+
position: fixed;
|
1376 |
+
top:0;
|
1377 |
+
right:0;
|
1378 |
+
bottom:0;
|
1379 |
+
left:0;
|
1380 |
+
}
|
1381 |
+
|
1382 |
+
.psz-dpw{
|
1383 |
+
margin: 20px -330px;
|
1384 |
+
}
|
1385 |
+
|
1386 |
+
.psz-imagesWrapper img{
|
1387 |
+
width:auto;
|
1388 |
+
height:250px;
|
1389 |
+
display: block;
|
1390 |
+
margin:0 auto;
|
1391 |
+
}
|
1392 |
+
|
1393 |
+
.psz-imagesWrapper div{
|
1394 |
+
width:290px;
|
1395 |
+
text-align: center;
|
1396 |
+
float: left;
|
1397 |
+
clear: both;
|
1398 |
+
margin-top:15px;
|
1399 |
+
}
|
1400 |
+
#zmagspsCatalogContainer.fullScreen object{
|
1401 |
+
margin:45px 0;
|
1402 |
+
}
|
1403 |
+
/*
|
1404 |
+
.psz-imagesWrapper img {
|
1405 |
+
width: 240px !important;
|
1406 |
+
height: 240px;
|
1407 |
+
}
|
1408 |
+
.psz-imagesWrapper a {
|
1409 |
+
width: 30px !important;
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
/* #zMobileGoNextPage{
|
1413 |
+
margin-top:-100px;
|
1414 |
+
}*/
|
1415 |
+
|
1416 |
+
/* Modal Video */
|
1417 |
+
|
1418 |
+
#zmags-dpw.modal{
|
1419 |
+
margin:0 auto!Important;
|
1420 |
+
}
|
1421 |
+
|
1422 |
+
.video_window{
|
1423 |
+
margin:0!Important;
|
1424 |
+
|
1425 |
+
}
|
1426 |
+
|
1427 |
+
.modal #video_player{
|
1428 |
+
margin-left:50px!important;
|
1429 |
+
}
|
1430 |
+
|
1431 |
+
.facebook{
|
1432 |
+
font-size: 100%;
|
1433 |
+
width: 800px !important;
|
1434 |
+
overflow: hidden;
|
1435 |
+
padding-bottom: 60px;
|
1436 |
+
}
|
1437 |
+
|
1438 |
+
#zmagspsCatalogContainer.facebook{
|
1439 |
+
width: 800px !important;
|
1440 |
+
}
|
1441 |
+
|
1442 |
+
#zMobileGoPrevPage{
|
1443 |
+
left:70px;
|
1444 |
+
}
|
1445 |
+
|
1446 |
+
#zMobileGoNextPage{
|
1447 |
+
right:70px;
|
1448 |
+
}
|
1449 |
+
|
1450 |
+
/* ddorotic 2013/02/08 */
|
1451 |
+
#zmags-dpw.modal{
|
1452 |
+
margin-top:5%!important;
|
1453 |
+
height:70%;
|
1454 |
+
}
|
1455 |
+
|
1456 |
+
#zmags-dpw.modal .video_window{
|
1457 |
+
width:100%;
|
1458 |
+
height:100%;
|
1459 |
+
}
|
1460 |
+
|
1461 |
+
#zmags-dpw.modal iframe{
|
1462 |
+
width:100%;
|
1463 |
+
height:95%
|
1464 |
+
}
|
1465 |
+
|
1466 |
+
}
|
1467 |
+
|
1468 |
+
/* iPads (portrait) ----------- */
|
1469 |
+
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) {
|
1470 |
+
|
1471 |
+
|
1472 |
+
.psz-sharing{
|
1473 |
+
margin-left:25px;
|
1474 |
+
}
|
1475 |
+
|
1476 |
+
#psz-viewerNext:hover {
|
1477 |
+
border-left: 8px solid black !important;
|
1478 |
+
}
|
1479 |
+
|
1480 |
+
#psz-viewerPrev:hover{
|
1481 |
+
border-right: 8px solid black !important;
|
1482 |
+
}
|
1483 |
+
|
1484 |
+
#zMobileGoNextPage:hover {
|
1485 |
+
border-left: 20px solid #666 !important;
|
1486 |
+
}
|
1487 |
+
|
1488 |
+
#zMobileGoPrevPage:hover {
|
1489 |
+
border-right: 20px solid #666 !important;
|
1490 |
+
}
|
1491 |
+
|
1492 |
+
#psz-viewer, .fullScreen #psz-viewer{
|
1493 |
+
border-bottom:0!important;
|
1494 |
+
border-top:1px solid #c2c2c2;
|
1495 |
+
position:relative!important;
|
1496 |
+
margin-top:-35px;
|
1497 |
+
top:-40px !important;
|
1498 |
+
z-index:9999;
|
1499 |
+
}
|
1500 |
+
|
1501 |
+
#psz-shoppingBag{
|
1502 |
+
display: block;
|
1503 |
+
background: url(../images/sbag.png) no-repeat left;
|
1504 |
+
float:right;
|
1505 |
+
clear:none;
|
1506 |
+
line-height:40px;
|
1507 |
+
text-transform: capitalize;
|
1508 |
+
color:#000;
|
1509 |
+
font-size: 12px;
|
1510 |
+
padding-right:0;
|
1511 |
+
padding-left:30px;
|
1512 |
+
margin-right:25px;
|
1513 |
+
cursor: pointer;
|
1514 |
+
text-decoration: none;
|
1515 |
+
}
|
1516 |
+
|
1517 |
+
#psz-shoppingBag:hover{
|
1518 |
+
text-decoration: underline;
|
1519 |
+
}
|
1520 |
+
|
1521 |
+
.fullScreen #psz-header-div{
|
1522 |
+
position: relative;
|
1523 |
+
}
|
1524 |
+
|
1525 |
+
|
1526 |
+
#zmags-dpw-overlay{
|
1527 |
+
position:absolute;
|
1528 |
+
width:100%;
|
1529 |
+
height:100%;
|
1530 |
+
}
|
1531 |
+
|
1532 |
+
html, body{
|
1533 |
+
background: #ffffff;
|
1534 |
+
min-width: 768px !important;
|
1535 |
+
width: 768px !important;
|
1536 |
+
max-width: 768px!important;
|
1537 |
+
min-height: 950px !important;
|
1538 |
+
height: 950px !important;
|
1539 |
+
max-height: 950px!important;
|
1540 |
+
overflow:hidden!important;
|
1541 |
+
}
|
1542 |
+
|
1543 |
+
#zmags-dpw-wrapper{
|
1544 |
+
overflow:visible;
|
1545 |
+
}
|
1546 |
+
|
1547 |
+
#zmagspsCatalogContainer {
|
1548 |
+
background: #ffffff;
|
1549 |
+
width: 768px!important;
|
1550 |
+
height:920px!important;
|
1551 |
+
overflow: visible;
|
1552 |
+
margin-top: 0;
|
1553 |
+
top: -10px;
|
1554 |
+
padding:10px 0;
|
1555 |
+
}
|
1556 |
+
#psz-header-div{
|
1557 |
+
width: 768px;
|
1558 |
+
}
|
1559 |
+
|
1560 |
+
#psz-header-div #psz-top-left{
|
1561 |
+
line-height:55px;
|
1562 |
+
}
|
1563 |
+
|
1564 |
+
.fullScreen{
|
1565 |
+
width: 768px !important;
|
1566 |
+
}
|
1567 |
+
|
1568 |
+
#zmagspsMobileViewer{
|
1569 |
+
margin-top:150px;
|
1570 |
+
border: none;
|
1571 |
+
width:720px !important;
|
1572 |
+
height:550px!important;
|
1573 |
+
position: relative;
|
1574 |
+
left:50%;
|
1575 |
+
margin-left:-360px;
|
1576 |
+
}
|
1577 |
+
|
1578 |
+
#zMobileGoPrevPage{
|
1579 |
+
left:10px;
|
1580 |
+
margin-top:-100px;
|
1581 |
+
}
|
1582 |
+
|
1583 |
+
#zMobileGoNextPage{
|
1584 |
+
right:10px;
|
1585 |
+
margin-top:-100px;
|
1586 |
+
}
|
1587 |
+
.psz-dpw{
|
1588 |
+
margin: 50px -330px;
|
1589 |
+
}
|
1590 |
+
|
1591 |
+
#zmags-dpw.loading{
|
1592 |
+
position: fixed;
|
1593 |
+
top:0;
|
1594 |
+
right:0;
|
1595 |
+
bottom:0;
|
1596 |
+
left:0;
|
1597 |
+
height: 450px !important;
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
.psz-imagesWrapper img{
|
1601 |
+
width:auto;
|
1602 |
+
height:250px;
|
1603 |
+
display: block;
|
1604 |
+
margin:0 auto;
|
1605 |
+
}
|
1606 |
+
|
1607 |
+
.psz-imagesWrapper div{
|
1608 |
+
width:290px;
|
1609 |
+
text-align: center;
|
1610 |
+
float: left;
|
1611 |
+
clear: both;
|
1612 |
+
margin-top:15px;
|
1613 |
+
}
|
1614 |
+
#zmagspsCatalogContainer.fullScreen object{
|
1615 |
+
margin:45px 0;
|
1616 |
+
}
|
1617 |
+
|
1618 |
+
|
1619 |
+
|
1620 |
+
#zmags-dpw.modal{
|
1621 |
+
margin:0 auto!Important;
|
1622 |
+
}
|
1623 |
+
|
1624 |
+
.video_window{
|
1625 |
+
margin:0!Important;
|
1626 |
+
}
|
1627 |
+
|
1628 |
+
.modal #video_player{
|
1629 |
+
margin-left:-30px;
|
1630 |
+
}
|
1631 |
+
|
1632 |
+
/* ddorotic 2013/02/08 */
|
1633 |
+
#zmags-dpw.modal{
|
1634 |
+
margin-top:5%!important;
|
1635 |
+
height:70%;
|
1636 |
+
}
|
1637 |
+
|
1638 |
+
#zmags-dpw.modal .video_window{
|
1639 |
+
width:100%;
|
1640 |
+
height:100%;
|
1641 |
+
}
|
1642 |
+
|
1643 |
+
#zmags-dpw.modal iframe{
|
1644 |
+
width:100%;
|
1645 |
+
height:95%
|
1646 |
+
}
|
1647 |
+
|
1648 |
+
}
|
1649 |
+
|
1650 |
+
/* iPhone portrait
|
1651 |
+
@media all and (max-width:480px) {
|
1652 |
+
|
1653 |
+
.psz-dpw{
|
1654 |
+
font-size: 100%;
|
1655 |
+
height: 600px !important;
|
1656 |
+
}
|
1657 |
+
}
|
1658 |
+
|
1659 |
+
iPhone landscape
|
1660 |
+
@media all and (min-width:480px) and (max-width:640px){
|
1661 |
+
html, body{
|
1662 |
+
background: #ffffff;
|
1663 |
+
min-width: 480px !important;
|
1664 |
+
width: 480px !important;
|
1665 |
+
max-width: 480px!important;
|
1666 |
+
}
|
1667 |
+
#zmagspsCatalogContainer{
|
1668 |
+
margin: 0;
|
1669 |
+
width: 100% !important;
|
1670 |
+
height: 270px !important;
|
1671 |
+
background: #ffffff;
|
1672 |
+
}
|
1673 |
+
#zmagspsMobileViewer{
|
1674 |
+
width: 480px !important;
|
1675 |
+
height: 270px !important;
|
1676 |
+
}
|
1677 |
+
.psz-dpw{
|
1678 |
+
font-size: 100%;
|
1679 |
+
|
1680 |
+
}
|
1681 |
+
|
1682 |
+
}*/
|
1683 |
+
|
1684 |
+
.ie7 .header-inner-bottom{
|
1685 |
+
*z-index:1;
|
1686 |
+
}
|
1687 |
+
|
1688 |
+
|
1689 |
+
/* ddorotic 20121114 viewer */
|
1690 |
+
|
1691 |
+
#psz-viewer{
|
1692 |
+
font: 13px ProximaNova-Semibold,sans-serif;
|
1693 |
+
height:40px;
|
1694 |
+
background:#fff;
|
1695 |
+
position:relative;
|
1696 |
+
width: 100%;
|
1697 |
+
display: block;
|
1698 |
+
border-bottom:1px solid #c2c2c2;
|
1699 |
+
}
|
1700 |
+
|
1701 |
+
|
1702 |
+
|
1703 |
+
.fullScreen #psz-viewer{
|
1704 |
+
position:absolute;
|
1705 |
+
line-height: 40px !important;
|
1706 |
+
}
|
1707 |
+
|
1708 |
+
body.fullScreen{
|
1709 |
+
overflow:hidden;
|
1710 |
+
}
|
1711 |
+
|
1712 |
+
.psz-sharing{
|
1713 |
+
float:left;
|
1714 |
+
clear:none;
|
1715 |
+
line-height:40px;
|
1716 |
+
color:#c2c2c2;
|
1717 |
+
width:400px;
|
1718 |
+
height: 32px;
|
1719 |
+
overflow: hidden;
|
1720 |
+
}
|
1721 |
+
|
1722 |
+
.psz-sharing a{
|
1723 |
+
position:relative;
|
1724 |
+
}
|
1725 |
+
|
1726 |
+
.psz-sharing .addthis_button_facebook_like {
|
1727 |
+
top:3px;
|
1728 |
+
}
|
1729 |
+
|
1730 |
+
.psz-sharing .addthis_button_tweet{
|
1731 |
+
top:6px;
|
1732 |
+
}
|
1733 |
+
|
1734 |
+
.psz-sharing .addthis_button_pinterest_pinit {
|
1735 |
+
top:10px !important;
|
1736 |
+
}
|
1737 |
+
|
1738 |
+
.psz-sharing .addthis_button_email {
|
1739 |
+
top:10px;
|
1740 |
+
}
|
1741 |
+
|
1742 |
+
/**Sharing on facebook**/
|
1743 |
+
.fb-sharing .psz-sharing a{
|
1744 |
+
position:relative;
|
1745 |
+
}
|
1746 |
+
|
1747 |
+
.fb-sharing .addthis_button_facebook_like {
|
1748 |
+
top:10px;
|
1749 |
+
}
|
1750 |
+
|
1751 |
+
.fb-sharing .addthis_button_tweet{
|
1752 |
+
top:6px;
|
1753 |
+
}
|
1754 |
+
|
1755 |
+
.fb-sharing .addthis_button_pinterest_pinit {
|
1756 |
+
top:8px !important;
|
1757 |
+
}
|
1758 |
+
|
1759 |
+
.fb-sharing .addthis_button_email {
|
1760 |
+
top:4px !important;
|
1761 |
+
}
|
1762 |
+
|
1763 |
+
/*
|
1764 |
+
.fullScreen .psz-sharing .addthis_button_pinterest_pinit {
|
1765 |
+
top:14px;
|
1766 |
+
}
|
1767 |
+
|
1768 |
+
.fullScreen .psz-sharing .addthis_button_email {
|
1769 |
+
top:16px;
|
1770 |
+
}
|
1771 |
+
*/
|
1772 |
+
.psz-navigation{
|
1773 |
+
width:100px;
|
1774 |
+
position:absolute;
|
1775 |
+
left:50%;
|
1776 |
+
margin-left:-50px;
|
1777 |
+
text-align: center;
|
1778 |
+
}
|
1779 |
+
|
1780 |
+
.psz-navigation a{
|
1781 |
+
display:inline-block;
|
1782 |
+
width:0;
|
1783 |
+
height:0;
|
1784 |
+
margin:0;
|
1785 |
+
padding:0;
|
1786 |
+
position: relative;
|
1787 |
+
top:3px;
|
1788 |
+
cursor: pointer;
|
1789 |
+
}
|
1790 |
+
|
1791 |
+
.psz-navigation span{
|
1792 |
+
text-align: center;
|
1793 |
+
line-height: 40px;
|
1794 |
+
padding:0 4px;
|
1795 |
+
}
|
1796 |
+
|
1797 |
+
#psz-viewerPrev{
|
1798 |
+
border-right:8px solid #000;
|
1799 |
+
border-top:8px solid #fff;
|
1800 |
+
border-bottom:8px solid #fff;
|
1801 |
+
}
|
1802 |
+
|
1803 |
+
#psz-viewerPrev:hover{
|
1804 |
+
border-right:8px solid #c2c2c2;
|
1805 |
+
}
|
1806 |
+
|
1807 |
+
#psz-viewerNext{
|
1808 |
+
border-left:8px solid #000;
|
1809 |
+
border-top:8px solid #fff;
|
1810 |
+
border-bottom:8px solid #fff;
|
1811 |
+
}
|
1812 |
+
|
1813 |
+
#psz-viewerNext:hover{
|
1814 |
+
border-left:8px solid #c2c2c2;
|
1815 |
+
}
|
1816 |
+
|
1817 |
+
#psz-toggleFullscreen{
|
1818 |
+
display: block;
|
1819 |
+
background: url(../images/fs-plus.png) no-repeat right;
|
1820 |
+
float:right;
|
1821 |
+
clear:none;
|
1822 |
+
line-height:40px;
|
1823 |
+
text-transform: capitalize;
|
1824 |
+
color:#000;
|
1825 |
+
padding-right:25px;
|
1826 |
+
cursor: pointer;
|
1827 |
+
font-weight:normal;
|
1828 |
+
text-decoration: none;
|
1829 |
+
}
|
1830 |
+
|
1831 |
+
#psz-toggleFullscreen:hover{
|
1832 |
+
text-decoration: underline;
|
1833 |
+
color:#c2c2c2;
|
1834 |
+
}
|
1835 |
+
|
1836 |
+
.fullScreen #psz-toggleFullscreen{
|
1837 |
+
margin-right:25px;
|
1838 |
+
}
|
1839 |
+
|
1840 |
+
.fullScreen .psz-sharing{
|
1841 |
+
margin-left:25px;
|
1842 |
+
}
|
1843 |
+
|
1844 |
+
.fullScreen #psz-viewer{
|
1845 |
+
top: -86px;
|
1846 |
+
border-bottom:0!important;
|
1847 |
+
border-top:1px solid #c2c2c2;
|
1848 |
+
position:relative;
|
1849 |
+
z-index:1;
|
1850 |
+
}
|
1851 |
+
|
1852 |
+
|
1853 |
+
|
1854 |
+
.footer-container .footer{
|
1855 |
+
border-top:0!Important;
|
1856 |
+
}
|
1857 |
+
|
1858 |
+
|
1859 |
+
#blocker{
|
1860 |
+
position:absolute;
|
1861 |
+
width:100%;
|
1862 |
+
height:100%;
|
1863 |
+
top:0;
|
1864 |
+
left:0;
|
1865 |
+
}
|
1866 |
+
|
1867 |
+
/* ddorotic 2012/11/22 */
|
1868 |
+
#psz-header-div #psz-shoppingBag{
|
1869 |
+
display: block;
|
1870 |
+
background: url(../images/sbag.png) no-repeat left;
|
1871 |
+
float:right;
|
1872 |
+
clear:none;
|
1873 |
+
line-height:45px;
|
1874 |
+
text-transform: capitalize;
|
1875 |
+
color:#000;
|
1876 |
+
font-size: 12px;
|
1877 |
+
padding-right:0;
|
1878 |
+
padding-left:30px;
|
1879 |
+
margin-right:25px;
|
1880 |
+
cursor: pointer;
|
1881 |
+
text-decoration: none;
|
1882 |
+
display:none;
|
1883 |
+
}
|
1884 |
+
|
1885 |
+
#psz-shoppingBag:hover{
|
1886 |
+
text-decoration: underline;
|
1887 |
+
}
|
1888 |
+
|
1889 |
+
|
1890 |
+
/* ddorotic 2013/02/07 */
|
1891 |
+
.facebook #psz-toggleFullscreen{
|
1892 |
+
display:none;
|
1893 |
+
}
|
1894 |
+
|
1895 |
+
/* ddorotic 2013/02/13 */
|
1896 |
+
.category-the-bazaar-book .category-view{
|
1897 |
+
display: none!important;
|
1898 |
+
}
|
1899 |
+
|
1900 |
+
|
1901 |
+
.ajax-cart-modal .overlay {
|
1902 |
+
background:black;
|
1903 |
+
display:block;
|
1904 |
+
left:0;
|
1905 |
+
opacity:0.65;
|
1906 |
+
filter: alpha(opacity = 65);
|
1907 |
+
position:fixed;
|
1908 |
+
top:0;
|
1909 |
+
width: 100%;
|
1910 |
+
height: 100%;
|
1911 |
+
z-index: 1000;
|
1912 |
+
}
|
1913 |
+
.ajax-cart-modal .block {
|
1914 |
+
position: fixed;
|
1915 |
+
width: 370px;
|
1916 |
+
left: 50%;
|
1917 |
+
margin-left: -150px;
|
1918 |
+
top: 50%;
|
1919 |
+
margin-top: -100px;
|
1920 |
+
z-index: 1001;
|
1921 |
+
}
|
1922 |
+
.ajax-cart-modal .block .close-btn {
|
1923 |
+
float: right;
|
1924 |
+
width: 123px;
|
1925 |
+
height: 11px;
|
1926 |
+
}
|
1927 |
+
|
1928 |
+
.ajax-cart-loading-mask .overlay {
|
1929 |
+
background:white;
|
1930 |
+
display:block;
|
1931 |
+
left:0;
|
1932 |
+
opacity:0.50;
|
1933 |
+
filter: alpha(opacity = 50);
|
1934 |
+
position:fixed;
|
1935 |
+
top:0;
|
1936 |
+
width: 100%;
|
1937 |
+
height: 100%;
|
1938 |
+
z-index: 1000;
|
1939 |
+
}
|
1940 |
+
.ajax-cart-loading-mask .loader {
|
1941 |
+
position: fixed;
|
1942 |
+
width: 32px;
|
1943 |
+
height: 32px;
|
1944 |
+
left: 50%;
|
1945 |
+
margin-left: -16px;
|
1946 |
+
top: 50%;
|
1947 |
+
margin-top: -16px;
|
1948 |
+
background: url('../images/ajax-loader.gif');
|
1949 |
+
z-index: 1001;
|
1950 |
+
}
|
skin/frontend/base/default/css/local.css
ADDED
@@ -0,0 +1,4809 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Magento
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
7 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/afl-3.0.php
|
10 |
+
* If you did not receive a copy of the license and are unable to
|
11 |
+
* obtain it through the world-wide-web, please send an email
|
12 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
13 |
+
*
|
14 |
+
* DISCLAIMER
|
15 |
+
*
|
16 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
17 |
+
* versions in the future. If you wish to customize Magento for your
|
18 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
19 |
+
*
|
20 |
+
* @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
21 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
22 |
+
*/
|
23 |
+
|
24 |
+
/****************************************************/
|
25 |
+
/***********[ Mage_CSS_B Common Elements ]***********/
|
26 |
+
/****************************************************/
|
27 |
+
|
28 |
+
|
29 |
+
/********************** Columns */
|
30 |
+
|
31 |
+
/* All */
|
32 |
+
.col2-set, .col3-set, .col4-set, .col5-set { clear:both; }
|
33 |
+
|
34 |
+
/* Col2 */
|
35 |
+
.col2-set .col-1, .col2-set .col-2 { width:48.5%; }
|
36 |
+
.col2-set .col-1 { float:left;}
|
37 |
+
.col2-set .col-2 { /*float:right;*/ margin-left:12px; }
|
38 |
+
|
39 |
+
/* Col2-alt */
|
40 |
+
.col2-alt-set .col-1 { width:32%; }
|
41 |
+
.col2-alt-set .col-2 { width:65%; }
|
42 |
+
.col2-alt-set .col-1 { float:left; }
|
43 |
+
.col2-alt-set .col-2 { float:right; }
|
44 |
+
|
45 |
+
/* Col3 */
|
46 |
+
.col3-set .col-1, .col3-set .col-2, .col3-set .col-3 { float:left; width:31.3%; }
|
47 |
+
.col3-set .col-1, .col3-set .col-2 { margin-right:3%; }
|
48 |
+
|
49 |
+
/* Col4 */
|
50 |
+
.col4-set .col-1, .col4-set .col-2, .col4-set .col-3, .col4-set .col-4 { float:left; width:22%; }
|
51 |
+
.col4-set .col-1, .col4-set .col-2, .col4-set .col-3 { margin-right:4%; }
|
52 |
+
|
53 |
+
/* Table Columns */
|
54 |
+
table .col-1, table .col-2, table .col-3, table .col-4 { float:none !important; margin:0 !important; }
|
55 |
+
.col3-set td.spacer { width:3%; }
|
56 |
+
.col4-set td.spacer { width:4%; }
|
57 |
+
|
58 |
+
|
59 |
+
.accent { color:#000; font-weight:bold; }
|
60 |
+
|
61 |
+
/********************** Form */
|
62 |
+
|
63 |
+
/* Form Elements */
|
64 |
+
input.input-text, select, textarea { border:1px solid #b6b6b6; font:12px verdana, helvetica, sans-serif; }
|
65 |
+
option, optgroup { font:12px verdana, helvetica, sans-serif; }
|
66 |
+
optgroup { font-weight:bold; }
|
67 |
+
textarea { overflow:auto; }
|
68 |
+
input.input-text, textarea { padding:2px; }
|
69 |
+
input.radio { margin-right:3px; }
|
70 |
+
input.checkbox { margin-right:3px; }
|
71 |
+
.qty { width:2.5em; }
|
72 |
+
.group-select label, .form-list label, .payment-methods label { font-weight:bold; }
|
73 |
+
.input-text:focus, select:focus, textarea:focus { background:#DAE0BF; }
|
74 |
+
.button-set { /* Container for form buttons*/
|
75 |
+
clear:both;
|
76 |
+
margin-top:4em;
|
77 |
+
border-top:1px solid #e4e4e4;
|
78 |
+
padding-top:8px;
|
79 |
+
text-align:right;
|
80 |
+
}
|
81 |
+
.form-button, .form-button-alt {
|
82 |
+
overflow:visible;
|
83 |
+
width:auto;
|
84 |
+
border:0;
|
85 |
+
padding: 6px 8px;
|
86 |
+
margin-top: 5px;
|
87 |
+
background:#5B6239;
|
88 |
+
color:#fff;
|
89 |
+
border:0;
|
90 |
+
font:bold 12px verdana, sans-serif !important;
|
91 |
+
cursor:pointer;
|
92 |
+
text-align:center;
|
93 |
+
vertical-align:middle;
|
94 |
+
margin-bottom:7px;
|
95 |
+
}
|
96 |
+
.form-button span, .form-button-alt span {
|
97 |
+
white-space:nowrap;
|
98 |
+
}
|
99 |
+
.form-button-alt {
|
100 |
+
border:1px solid #DAE0BF;
|
101 |
+
background-color:#5B613B;
|
102 |
+
color:#fff;
|
103 |
+
}
|
104 |
+
a.form-button-alt { padding:2px 9px; text-decoration:none; }
|
105 |
+
.form-button-alt:hover { color:#fff; text-decoration:none; }
|
106 |
+
.btn-checkout {
|
107 |
+
display:block;
|
108 |
+
|
109 |
+
background:transparent url(../images/btn_proceed_to_checkout_rad.gif) no-repeat 100% 0;
|
110 |
+
font-size:15px;
|
111 |
+
font-weight:bold;
|
112 |
+
padding-right:8px;
|
113 |
+
}
|
114 |
+
.btn-checkout, .btn-checkout:hover {
|
115 |
+
color:#fef5e5;
|
116 |
+
text-decoration:none;
|
117 |
+
}
|
118 |
+
.btn-checkout span {
|
119 |
+
display:block;
|
120 |
+
padding:0 17px 0 25px;
|
121 |
+
background:transparent url(../images/btn_proceed_to_checkout_bg.gif) no-repeat;
|
122 |
+
line-height:40px;
|
123 |
+
}
|
124 |
+
|
125 |
+
/* Form lists */
|
126 |
+
.form-list li { margin-bottom:6px; }
|
127 |
+
.form-list li .input-box .input-text,
|
128 |
+
.form-list li .input-box textarea { width:95%px; }
|
129 |
+
.form-list li .input-box select { width:256px; }
|
130 |
+
.form-list li.addElement { border-top:1px solid #DDD; padding-top:10px; }
|
131 |
+
.main-heading{border-bottom: 1px solid #999999;
|
132 |
+
color: #000000;
|
133 |
+
font-family: tahoma,sans-serif;
|
134 |
+
font-size: 1.2em;
|
135 |
+
letter-spacing: 2px;
|
136 |
+
margin: 0 0 15px;
|
137 |
+
padding: 10px 0;
|
138 |
+
text-transform: uppercase;}
|
139 |
+
.group-select {
|
140 |
+
margin:0px 0px;
|
141 |
+
padding:0px 15px 5px 15px;
|
142 |
+
border:1px solid #CCC;
|
143 |
+
}
|
144 |
+
.group-select .legend {
|
145 |
+
margin-top:6px;
|
146 |
+
float:left;
|
147 |
+
border:1px dotted #fff;
|
148 |
+
background:#F9F3E3;
|
149 |
+
padding:0 8px;
|
150 |
+
color:#000;
|
151 |
+
font-weight:bold;
|
152 |
+
font-size:1.1em;
|
153 |
+
margin-left:10px;
|
154 |
+
}
|
155 |
+
.group-select li { padding:4px 8px; }
|
156 |
+
.group-select li .input-box { float:left; width:275px; margin-bottom:15px;}
|
157 |
+
.group-select li .input-text, .group-select li select, .group-select li textarea { width:525px; }
|
158 |
+
.group-select li .input-box .input-text, .group-select li .input-box textarea { width:250px; }
|
159 |
+
.group-select li .input-box select { width:256px; }
|
160 |
+
|
161 |
+
|
162 |
+
/* Form Messages */
|
163 |
+
.validation-advice, .required { color:#EB340A; }
|
164 |
+
.validation-advice { clear:both; min-height:15px; margin-top:3px; background:url(../images/validation_advice_bg.gif) no-repeat 2px 1px; padding-left:17px; font-size:.95em; font-weight:bold; line-height:1.25em; }
|
165 |
+
.validation-failed { border:1px dashed #EB340A !important; background:#faebe7 !important; }
|
166 |
+
/* Expiration date and cvv number validation fix */
|
167 |
+
.v-fix { float:left; }
|
168 |
+
.v-fix .validation-advice { display:block; margin-right:-12em; width:12em; position:relative; }
|
169 |
+
|
170 |
+
label.required { font-weight:bold; }
|
171 |
+
p.required { font-size:.95em; text-align:right; }
|
172 |
+
|
173 |
+
|
174 |
+
|
175 |
+
/********************** Messages */
|
176 |
+
.success { color:#3d6611; }
|
177 |
+
.error { color:#df280a; }
|
178 |
+
.notice {color:#000; }
|
179 |
+
.success, .error { font-weight:bold; }
|
180 |
+
.messages,
|
181 |
+
.messages ul { list-style:none !important;}
|
182 |
+
.messages { width:100%; overflow:hidden; }
|
183 |
+
.error-msg, .success-msg, .notice-msg, .note-msg {
|
184 |
+
min-height:23px !important;
|
185 |
+
margin-bottom:1em !important;
|
186 |
+
border-style:solid !important;
|
187 |
+
border-width:1px !important;
|
188 |
+
background-repeat:no-repeat !important;
|
189 |
+
background-position:10px 10px !important;
|
190 |
+
padding:8px 8px 8px 32px !important;
|
191 |
+
font-size:.95em !important;
|
192 |
+
font-weight:bold !important;
|
193 |
+
}
|
194 |
+
.error-msg li, .success-msg li, .notice-msg li {margin-bottom:.2em; }
|
195 |
+
.error-msg {
|
196 |
+
border-color:#f16048;
|
197 |
+
color:#df280a;
|
198 |
+
background-color:#faebe7;
|
199 |
+
background-image:url(../images/error_msg_icon.gif);
|
200 |
+
}
|
201 |
+
.success-msg {
|
202 |
+
margin-left:10px;
|
203 |
+
border-color:#446423;
|
204 |
+
color:#3d6611;
|
205 |
+
background-color:#eff5ea;
|
206 |
+
background-image:url(../images/success_msg_icon.gif);
|
207 |
+
}
|
208 |
+
.notice-msg, .note-msg {
|
209 |
+
border-color:#fcd344;
|
210 |
+
color:#3d6611;
|
211 |
+
background-color:#fafaec;
|
212 |
+
background-image:url(../images/note_msg_icon.gif);
|
213 |
+
}
|
214 |
+
|
215 |
+
|
216 |
+
|
217 |
+
/********************** Headings */
|
218 |
+
|
219 |
+
.head, .inner-head { line-height:1.25em; text-align:right; }
|
220 |
+
.head h1,.head h2, .head h3, .head h4, .head h5,
|
221 |
+
.inner-head h1,.inner-head h2, .inner-head h3, .inner-head h4, .inner-head h5{ margin:0; float:left; }
|
222 |
+
|
223 |
+
|
224 |
+
/* Page heading */
|
225 |
+
.page-head { margin:0 0 0px 0; /*border-bottom:1px solid #ccc;*/ }
|
226 |
+
.page-head-alt { margin:0 0 12px 0; }
|
227 |
+
.page-head, .page-head-alt { text-align:right; width:100%; }
|
228 |
+
.page-head h3, .page-head-alt h3 {
|
229 |
+
margin-top:5px;
|
230 |
+
font-size:20px !important;
|
231 |
+
font-weight:normal !important;
|
232 |
+
text-transform:none !important;
|
233 |
+
text-align:left;
|
234 |
+
color:#000;
|
235 |
+
font-family:"Lucida Grande", "Hevltica";
|
236 |
+
}
|
237 |
+
.button-level h3 { /* heading level with buttons */
|
238 |
+
float:left;
|
239 |
+
width:100%;
|
240 |
+
display:block;
|
241 |
+
margin:0px auto;
|
242 |
+
text-align:center;
|
243 |
+
}
|
244 |
+
.page-head .link-feed {float:right; margin-top:9px; }
|
245 |
+
.button-level .link-feed {float:none!important; font-size:1em!important; }
|
246 |
+
|
247 |
+
/* Category list heading */
|
248 |
+
.category-head {
|
249 |
+
margin-bottom:7px;
|
250 |
+
font-size:13px;
|
251 |
+
background:#E7E7E7;
|
252 |
+
padding-left:5px;
|
253 |
+
}
|
254 |
+
.category-head h2 {
|
255 |
+
max-width:100%;
|
256 |
+
margin:0;
|
257 |
+
padding:3px 0;
|
258 |
+
color:#4F5439;
|
259 |
+
font-size:1.6em;
|
260 |
+
line-height:1.3em;
|
261 |
+
font-weight:normal;
|
262 |
+
overflow:hidden;
|
263 |
+
}
|
264 |
+
|
265 |
+
.box-header { font-size:1.05em; text-align:left; background:#eee; font-weight:bold; padding:2px 8px; margin:10px 0; }
|
266 |
+
.category-head .link-feed {float:right; margin-top:10px; position:relative; }
|
267 |
+
|
268 |
+
/********************* Tables */
|
269 |
+
td.label { font-weight:bold; }
|
270 |
+
|
271 |
+
/* Data Table */
|
272 |
+
#shopping-cart-table{width:100%!important; margin:0px!important; }
|
273 |
+
.data-table { border:1px solid #bebcb7; width:100%; }
|
274 |
+
.data-table tr { background:#fff; }
|
275 |
+
.data-table .odd { background:#f8f7f5 }
|
276 |
+
.data-table .even { background:#eeeded !important; }
|
277 |
+
.data-table td.last, .data-table th.last { border-right:0; }
|
278 |
+
.data-table tr.last th,
|
279 |
+
.data-table tr.last td { border-bottom:0 !important; }
|
280 |
+
.data-table th { border-right:1px solid #c2d3e0; padding:2px 8px; color:#4F5439; white-space:nowrap; }
|
281 |
+
.data-table th.wrap { white-space:normal; }
|
282 |
+
.data-table th a,
|
283 |
+
.data-table th a:hover { color:#fff; }
|
284 |
+
.data-table td { padding:3px 8px; }
|
285 |
+
.data-table thead tr th { background:/*url(../images/data_table_th_bg.gif) repeat-x 0 100%*/ #DAE0BF; color:#000; }
|
286 |
+
.data-table tfoot { border-bottom:1px solid #d9dde3; }
|
287 |
+
.data-table tfoot tr.first { background:url(../images/base_mini_actions_bg.gif) 0 0 repeat-x; }
|
288 |
+
.data-table tfoot tr { background-color:#DEE5E8 !important; }
|
289 |
+
.data-table tfoot td { padding-top:1px; padding-bottom:1px; border-bottom:0; border-right:1px solid #d9dde3; }
|
290 |
+
.data-table tbody td { border-bottom:1px solid #d9dde3; border-right:1px solid #d9dde3; }
|
291 |
+
/* Bundle Products */
|
292 |
+
.data-table tbody.odd tr { background:#f8f7f5 !important; }
|
293 |
+
.data-table tbody.even tr { background:#f6f6f6 !important; }
|
294 |
+
.data-table tbody.odd tr td,
|
295 |
+
.data-table tbody.even tr td { border-bottom:0; }
|
296 |
+
.data-table tbody.odd tr.border td,
|
297 |
+
.data-table tbody.even tr.border td { border-bottom:1px solid #d9dde3; }
|
298 |
+
|
299 |
+
.data-table tbody td h5.title { margin:0; padding:0; font-size:1em; font-weight:bold; color:#2f2f2f; }
|
300 |
+
.data-table tbody td .option-label { font-weight:bold; font-style:italic; }
|
301 |
+
.data-table tbody td .option-value { padding-left:10px; }
|
302 |
+
|
303 |
+
.box-table td { padding:10px; }
|
304 |
+
.box-table tfoot td { padding-top:5px; padding-bottom:5px; }
|
305 |
+
.box-table select { width:100%; }
|
306 |
+
|
307 |
+
.nested-data-table th, .nested-data-table td { padding-top:2px; padding-bottom:2px; }
|
308 |
+
|
309 |
+
.generic-table td { padding:0 8px}
|
310 |
+
.generic-table td.first { padding-left:0; white-space:nowrap; }
|
311 |
+
.shipping-tracking .button-set { margin-top:0; border:none; border-top:0; padding-top:0; }
|
312 |
+
|
313 |
+
/********************** Lists */
|
314 |
+
.disc { margin-bottom:10px; list-style:disc; }
|
315 |
+
.disc li { margin-left:20px; }
|
316 |
+
|
317 |
+
|
318 |
+
/* Bare List */ /* Unstyled list */
|
319 |
+
.bare-list { margin:5px 0; }
|
320 |
+
.bare-list li { margin:3px 0; }
|
321 |
+
|
322 |
+
|
323 |
+
|
324 |
+
/********************** Space Creators */
|
325 |
+
.no-display { display:none; }
|
326 |
+
.content-box { min-height:250px; } /* Set minimum height for visual presentation */
|
327 |
+
.content { padding:12px 12px 12px 15px; } /* Sets default padding */
|
328 |
+
.actions { line-height:1.3em; }
|
329 |
+
.separator { padding:0 3px; }
|
330 |
+
.pipe { padding:0 4px; font-size:.95em; }
|
331 |
+
.divider { margin:10px 0; height:1px; background:url(../images/dotted_divider.gif) repeat-x; font-size:1px; line-height:1em; overflow:hidden; }
|
332 |
+
|
333 |
+
/********************** Pager */
|
334 |
+
table.pager select,
|
335 |
+
table.view-by select { margin:0 3px; font-size:.95em; }
|
336 |
+
table.pager select { width:50px; }
|
337 |
+
table.view-by td.sort-by { text-align:right; padding-right:44px; }
|
338 |
+
table.view-by select { width:85px; }
|
339 |
+
table.pager, table.view-by {
|
340 |
+
width:100%;
|
341 |
+
background:url(../images/pager_bg.gif) repeat-x 0 100% #fff;
|
342 |
+
font-size:.95em;
|
343 |
+
}
|
344 |
+
table.pager td {
|
345 |
+
width:32%;
|
346 |
+
border-top:1px solid #eee;
|
347 |
+
padding:4px 8px;
|
348 |
+
vertical-align:middle;
|
349 |
+
}
|
350 |
+
table.pager td.pages { padding:4px 0; white-space:nowrap; text-align:center; }
|
351 |
+
table.pager ol, table.pager li {
|
352 |
+
display:inline;
|
353 |
+
}
|
354 |
+
table.pager li { padding:0 2px; }
|
355 |
+
table.view-by td {
|
356 |
+
width:33%;
|
357 |
+
border-top:1px solid #e2e2e2;
|
358 |
+
padding:4px 8px;
|
359 |
+
vertical-align:middle;
|
360 |
+
}
|
361 |
+
|
362 |
+
|
363 |
+
|
364 |
+
/************************************************************/
|
365 |
+
/********************[ Mage_CSS_C Layout]********************/
|
366 |
+
/************************************************************/
|
367 |
+
|
368 |
+
|
369 |
+
/********************** Base Layout */
|
370 |
+
|
371 |
+
/* Structure
|
372 |
+
.wrapper { width:996px;margin:0 auto;padding: 0px;
|
373 |
+
background-color:white;
|
374 |
+
box-shadow:0px 0px 14px rgb(117,117,117);
|
375 |
+
background-repeat: repeat-y;
|
376 |
+
background-position: left top;
|
377 |
+
}*/
|
378 |
+
.wrapper { width:996px;margin:0 auto;padding: 0px;box-shadow: 0px 0px 10px -5px;}
|
379 |
+
.header { text-align:left; }
|
380 |
+
.header-top { width:996px; margin:0 auto; position:relative; z-index:100; }
|
381 |
+
.header-nav { width:996px; margin:0 auto; }
|
382 |
+
.middle { width:996px; margin:0 auto; text-align:left;min-height: 500px; background:white;} /*margin:0 auto*/
|
383 |
+
.side-col { /*width:195px;*/ }
|
384 |
+
.col-left { float:left; width:219px; }
|
385 |
+
|
386 |
+
.col-right { float:right; }
|
387 |
+
.col-1-layout .col-main { padding-left:10px; padding-right:10px; float:none; width:976px; margin:0; }
|
388 |
+
.col-2-right-layout .col-main { float:left; width:730px; }
|
389 |
+
.col-2-left-layout .col-main {/*width:680px;*/background:#fff;}
|
390 |
+
.col-3-layout .col-main { /*margin-left:17px;*/ background:#fff; }
|
391 |
+
.col-2-right-layout{background:#fff;padding-top:10px;}
|
392 |
+
/* Style */
|
393 |
+
.header { /*border-top:5px solid #0d2131; */}
|
394 |
+
.header-top-container { width:996px;/*border-bottom:1px solid #415966; background:url(../images/header_top_container_bg.jpg) repeat-x 50% 0; */}
|
395 |
+
.header-top { }
|
396 |
+
|
397 |
+
.header-nav-container { background:url(../images/menu_topbar.jpg) no-repeat 50%}
|
398 |
+
.middle-container { margin-top:7px;/*background:url(../images/main_container_bg.gif) no-repeat 50% 0 #fbfaf6;*/ }
|
399 |
+
.middle { /*background:url(../images/main_bg.gif) no-repeat #fffffe; padding:25px 25px 80px 25px;*/ }
|
400 |
+
|
401 |
+
|
402 |
+
/********************** Header */
|
403 |
+
|
404 |
+
/* Logo */
|
405 |
+
h1#logo {
|
406 |
+
float:left;
|
407 |
+
width:202px;
|
408 |
+
margin:3px 0 10px 12px;
|
409 |
+
}
|
410 |
+
.page-popup h1#logo { display:none; }
|
411 |
+
|
412 |
+
|
413 |
+
/* Quick Access*/
|
414 |
+
.quick-access {
|
415 |
+
width:540px;
|
416 |
+
float:right;
|
417 |
+
margin-top:28px;
|
418 |
+
text-align:right;
|
419 |
+
padding:0 10px;
|
420 |
+
color:#fff;
|
421 |
+
}
|
422 |
+
.quick-access p { margin-bottom:4px; }
|
423 |
+
.quick-access li {
|
424 |
+
display:inline;
|
425 |
+
background:url(../images/shop_access_pipe.gif) no-repeat 100% .35em;
|
426 |
+
padding-right:7px;
|
427 |
+
padding-left:3px;
|
428 |
+
}
|
429 |
+
.quick-access li.first { padding-left:0; }
|
430 |
+
.quick-access li.last { padding-right:0; background:none; }
|
431 |
+
.shop-access {padding-right:10px; }
|
432 |
+
.shop-access a, .shop-access a:hover { color:#ebbc58; font-size:.95em; }
|
433 |
+
.shop-access li.last { padding-right:0; background:none; }
|
434 |
+
.language-switcher { float:right; margin-top:5px; margin-left:60px; }
|
435 |
+
.language-switcher label { color:#A7C6DD; padding-right:5px; }
|
436 |
+
.language-switcher .flag option { background-repeat:no-repeat; background-position:left center; padding-left:20px; margin-left:2px; }
|
437 |
+
|
438 |
+
|
439 |
+
/* Mini search */
|
440 |
+
.mini-search { /*position:absolute; top:0; right:0; width:300px; height:30px; padding:1px 20px 0 40px; background:url(../images/mini_search_bg.gif) 0 0 no-repeat; */}
|
441 |
+
.mini-search .input-text { /*width:212px; margin-right:4px;*/ }
|
442 |
+
.search-autocomplete { z-index:999; }
|
443 |
+
.search-autocomplete ul { border:1px solid #5c7989; background-color:#f9f5f0; }
|
444 |
+
.search-autocomplete li { border-bottom:1px solid #f4eee7; padding:2px 8px 1px 8px; cursor:pointer; }
|
445 |
+
.search-autocomplete li .amount { float:right; font-weight:bold; }
|
446 |
+
.search-autocomplete li.odd { background-color:#fffefb; }
|
447 |
+
.search-autocomplete li.selected { background-color:#f7e8dd; }
|
448 |
+
|
449 |
+
|
450 |
+
/********************** Sidebars */
|
451 |
+
.side-col .box { /*margin-bottom:1.3em; */}
|
452 |
+
.side-col .content { padding:5px 10px; }
|
453 |
+
.side-col .head { text-align:left; }
|
454 |
+
.side-col h2, .side-col h3, .side-col h4, .side-col h5 { float:none; }
|
455 |
+
.side-col h3 { font-size:1.05em; text-transform:uppercase; }
|
456 |
+
.side-col h4 { color:#e65505; text-transform:uppercase; }
|
457 |
+
.side-col .actions {
|
458 |
+
padding:4px 0;
|
459 |
+
font-size:.95em;
|
460 |
+
text-align:right;
|
461 |
+
}
|
462 |
+
.side-col .actions a, .side-col .actions a:hover { text-decoration:underline; }
|
463 |
+
.widget-btn { float:right; font-size:11px; margin:0 3px 1px 5px; }
|
464 |
+
.widget-btn, .widget-btn:hover { color:#646464; font-weight:bold; }
|
465 |
+
|
466 |
+
|
467 |
+
/* Currency Switcher */
|
468 |
+
.currency-switcher {
|
469 |
+
height:53px;
|
470 |
+
padding:7px 12px 10px 12px;
|
471 |
+
background:url(../images/currency_switcher_bg.gif) no-repeat;
|
472 |
+
font-size:1.05em;
|
473 |
+
}
|
474 |
+
.currency-switcher h4 {
|
475 |
+
min-height:21px;
|
476 |
+
background:url(../images/icon_world.gif) no-repeat 0 2px;
|
477 |
+
color:#fff;
|
478 |
+
padding-left:22px;
|
479 |
+
text-transform:none;
|
480 |
+
}
|
481 |
+
.currency-switcher select { width:98%; }
|
482 |
+
|
483 |
+
|
484 |
+
/* Base Mini */
|
485 |
+
.base-mini { line-height:1.3em; font-size:12px; font-family:"Lucida grande",Helvetica;border: 1px solid #CCC; }
|
486 |
+
.base-mini .head { margin:0 1px; border-bottom:1px solid #ddd; background:url(../images/base_mini_head_bg.gif) repeat-x #fff; padding:2px 8px; }
|
487 |
+
.base-mini .head h4 { min-height:16px; color:#000; background-repeat:no-repeat; background-position:0 0; padding:1px 0 1px 21px; text-transform:uppercase; }
|
488 |
+
.base-mini .head h4 .count { text-transform:none; color:#2f2f2f; white-space:nowrap; font-weight:normal; font-size:.95em; }
|
489 |
+
.base-mini h5 { font-size:1em; }
|
490 |
+
.base-mini .content, .base-mini ol { background:#f8f7f5; }
|
491 |
+
.base-mini ol li { padding:7px 4px 7px 8px; }
|
492 |
+
.base-mini ol li.odd { background:#f4f3f3; }
|
493 |
+
.base-mini ol li.even { background:#fafafa; }
|
494 |
+
.base-mini .actions { }
|
495 |
+
.base-mini .product-images { float:left; width:52px; height:52px; }
|
496 |
+
.base-mini .product-images a img { border:1px solid #a9a9a9; vertical-align:top; }
|
497 |
+
.base-mini .product-checkbox { float:left; width:10px; }
|
498 |
+
.base-mini .product-names { margin-left:18px; }
|
499 |
+
.base-mini .product-details { margin:0 0 0 60px; height:50px; }
|
500 |
+
.base-mini .product-details[class] { height:auto; min-height:50px; }
|
501 |
+
.base-mini .regular-price { font-size:11px; }
|
502 |
+
.base-mini .regular-price .price { color:#2f2f2f; }
|
503 |
+
.base-mini .special-price { font-size:11px; }
|
504 |
+
.base-mini .minimal-price { font-size:11px; }
|
505 |
+
.base-mini .price-box { margin:1px 0; }
|
506 |
+
|
507 |
+
|
508 |
+
.productlist{padding: 10px;display: inline-block;float: left;margin-right: 10px;margin-bottom: 10px;}
|
509 |
+
.productlist .name{text-align: center;color: black;background: #E2E2E2;margin: 0;margin-top: -4px;padding: 5px;}
|
510 |
+
.productlist a{color:#1f1f1f;}
|
511 |
+
.productlist:hover{border:1px solid #CCC;}
|
512 |
+
.newFlag{
|
513 |
+
background: url("../images/home/newFlag.png") no-repeat;
|
514 |
+
position: absolute;
|
515 |
+
top: -1px;
|
516 |
+
width: 74px;
|
517 |
+
height: 45px;
|
518 |
+
left: -1px;
|
519 |
+
padding: 0;
|
520 |
+
}
|
521 |
+
/* Sidebar Blocks */
|
522 |
+
.mini-product-tags .head h4 { background-image:url(../images/icon_tag_green.gif); }
|
523 |
+
.mini-product-tags li { display:inline; padding-right:4px; line-height:1.5em; }
|
524 |
+
.mini-product-tags li:after { display:inline!important; }
|
525 |
+
.mini-product-tags .content { padding:10px; }
|
526 |
+
.mini-product-tags .content a, .mini-product-tags .content a:hover { color:#1b2d3b; }
|
527 |
+
|
528 |
+
.mini-newsletter h4 { background-image:url(../images/icon_newspaper.gif); }
|
529 |
+
.mini-newsletter input.input-text { display:block; margin:3px 0; width:167px; }
|
530 |
+
|
531 |
+
.mini-cart .head h4 { background-image:url(../images/icon_basket.gif); }
|
532 |
+
.mini-cart .subtotal { background:#fbebd9; margin-top:5px; padding:2px 0; text-align:center; }
|
533 |
+
.mini-cart h5 { margin:0; background:#F4F3F3; padding:6px 8px 2px 8px; }
|
534 |
+
.mini-cart .actions { border-bottom:1px solid #c2c2c2; padding-top:3px; padding-bottom:1px; }
|
535 |
+
.mini-cart .actions .form-button { margin-top:3px; margin-bottom:5px;margin-left: 9px; }
|
536 |
+
.mini-wishlist .head h4 { background-image:url(../images/icon_bell.gif); }
|
537 |
+
.mini-wishlist .link-cart { display:block; }
|
538 |
+
|
539 |
+
.mini-compare-products .head h4 { background-image:url(../images/icon_table.gif); }
|
540 |
+
|
541 |
+
.mini-poll .head h4 { background-image:url(../images/icon_group.gif); }
|
542 |
+
.mini-poll td.label { font-weight:bold; padding-right:10px; }
|
543 |
+
.mini-poll td.item { white-space:nowrap; }
|
544 |
+
|
545 |
+
.mini-product-view .head h4 { background-image:url(../images/icon_tag_green.gif); }
|
546 |
+
|
547 |
+
|
548 |
+
/********************** Footer */
|
549 |
+
.footer-container {/* border-top:15px solid #B6D1E2; */}
|
550 |
+
.footer { margin:0 auto; /* padding:10px 10px 4em;background-color:#618499; */}
|
551 |
+
.footer .store-switcher { display:inline; padding:0 10px 0 0; vertical-align:middle; }
|
552 |
+
.footer .informational label { color:#fff; font-weight:bold; padding-right:3px; }
|
553 |
+
.footer .informational ul {
|
554 |
+
display:inline;
|
555 |
+
}
|
556 |
+
.footer .informational li {
|
557 |
+
display:inline;
|
558 |
+
background:url(../images/footer_info_separator.gif) no-repeat 100% 50%;
|
559 |
+
padding-right:8px;
|
560 |
+
padding-left:4px;
|
561 |
+
}
|
562 |
+
.footer .informational li.last { background:none; padding-right:0; }
|
563 |
+
.footer .informational a, .footer .informational a:hover { color:#fff; }
|
564 |
+
.footer .informational a { text-decoration:none; }
|
565 |
+
.footer .legality {
|
566 |
+
padding:13px 0;
|
567 |
+
color:#ecf3f6;
|
568 |
+
text-align:center;
|
569 |
+
}
|
570 |
+
.footer .legality a, .footer .legality a:hover { color:#ecf3f6; }
|
571 |
+
|
572 |
+
/************************************************************/
|
573 |
+
/****************[ Mage_CSS_D Shop Elements]*****************/
|
574 |
+
/************************************************************/
|
575 |
+
|
576 |
+
.product-shop { float:right; }
|
577 |
+
.out-of-stock { height:18px; padding-top:3px;color:#D83820; font-weight:bold; }
|
578 |
+
.product-shop .short-description { width:100%; overflow:hidden; margin-bottom:10px; }
|
579 |
+
|
580 |
+
/********************** Rating */
|
581 |
+
.ratings {
|
582 |
+
margin:7px 0;
|
583 |
+
line-height:1em;
|
584 |
+
}
|
585 |
+
.rating-box {
|
586 |
+
float:left;
|
587 |
+
position:relative;
|
588 |
+
width:69px;
|
589 |
+
height:13px;
|
590 |
+
margin-right:5px;
|
591 |
+
background:url(../images/product_rating_blank_star.gif) repeat-x;
|
592 |
+
|
593 |
+
a.go-to-top:hover {
|
594 |
+
opacity: 1;
|
595 |
+
filter: alpha(opacity=100);
|
596 |
+
background-color: transparent;
|
597 |
+
}
|
598 |
+
web-experiment.info/media="all"
|
599 |
+
a.go-to-top {
|
600 |
+
visibility: visible;
|
601 |
+
position: fixed;
|
602 |
+
right: 100px;
|
603 |
+
bottom: 15px;
|
604 |
+
padding: 0;
|
605 |
+
display: block;
|
606 |
+
z-index: 9999;
|
607 |
+
-webkit-transition: all .3s linear;
|
608 |
+
-moz-transition: all .3s linear;
|
609 |
+
-ms-transition: all .3s linear;
|
610 |
+
transition: all .3s linear;
|
611 |
+
opacity: .7;
|
612 |
+
filter: alpha(opacity=70);
|
613 |
+
text-indent: -9999px;
|
614 |
+
width: 38px;
|
615 |
+
height: 37px;
|
616 |
+
background-color: transparent;
|
617 |
+
background-repeat: no-repeat;
|
618 |
+
background-image: url(../images/scroll.png);
|
619 |
+
}
|
620 |
+
|
621 |
+
a:hover {
|
622 |
+
text-decoration: none;
|
623 |
+
}
|
624 |
+
|
625 |
+
a:hover {
|
626 |
+
outline: none;
|
627 |
+
}
|
628 |
+
|
629 |
+
a {
|
630 |
+
color: #878787;
|
631 |
+
text-decoration: none;
|
632 |
+
}
|
633 |
+
}
|
634 |
+
.rating-box .rating {
|
635 |
+
position:absolute;
|
636 |
+
top:0;
|
637 |
+
left:0;
|
638 |
+
height:13px;
|
639 |
+
background:url(../images/product_rating_full_star.gif) repeat-x;
|
640 |
+
}
|
641 |
+
.ratings-list {
|
642 |
+
margin:4px 0;
|
643 |
+
}
|
644 |
+
.ratings-list td {
|
645 |
+
padding:3px 0;
|
646 |
+
}
|
647 |
+
.ratings-list td.label {
|
648 |
+
padding-right:8px;
|
649 |
+
font-size:.95em;
|
650 |
+
font-weight:bold;
|
651 |
+
line-height:1em;
|
652 |
+
}
|
653 |
+
|
654 |
+
|
655 |
+
|
656 |
+
/************************** Prices */
|
657 |
+
.price { white-space:nowrap !important; }
|
658 |
+
|
659 |
+
.price-box { padding:5px 0; }
|
660 |
+
.price-box .price { font-weight:bold; color:#5A6138; }
|
661 |
+
|
662 |
+
/* Regular price */
|
663 |
+
.regular-price { color:#5A6138; }
|
664 |
+
.regular-price .price { font-weight:bold; font-size:13px; color:#5A6138; }
|
665 |
+
|
666 |
+
/* Old price */
|
667 |
+
.old-price { margin:0; }
|
668 |
+
.old-price .price-label { white-space:nowrap; color:#999; }
|
669 |
+
.old-price .price { font-weight:bold; color:#5A6138; text-decoration:line-through; }
|
670 |
+
|
671 |
+
/* Special price */
|
672 |
+
.special-price { margin:0; padding:3px 0; }
|
673 |
+
.special-price .price-label { font-size:13px; font-weight:bold; white-space:nowrap; color:#cd5033; }
|
674 |
+
.special-price .price { font-size:13px; font-weight:bold; color:#5A6138; }
|
675 |
+
|
676 |
+
/* Minimal price (as low as) */
|
677 |
+
.minimal-price { margin:0; }
|
678 |
+
.minimal-price .price-label { font-weight:bold; white-space:nowrap; }
|
679 |
+
|
680 |
+
a.minimal-price-link { display:block; }
|
681 |
+
a.minimal-price-link .label {}
|
682 |
+
a.minimal-price-link .price { font-weight:normal; color:#1e7ec8; }
|
683 |
+
|
684 |
+
/* Excluding tax */
|
685 |
+
.price-excluding-tax { display:block; color:#999; }
|
686 |
+
.price-excluding-tax .label { white-space:nowrap; color:#999; }
|
687 |
+
.price-excluding-tax .price { font-size:13px; font-weight:normal; color:#5A6138; }
|
688 |
+
|
689 |
+
/* Including tax */
|
690 |
+
.price-including-tax { display:block; color:#999; }
|
691 |
+
.price-including-tax .label { white-space:nowrap; color:#999; }
|
692 |
+
.price-including-tax .price { font-size:13px; font-weight:bold; color:#5A6138; }
|
693 |
+
|
694 |
+
/* Excl tax (for order tables) */
|
695 |
+
.price-excl-tax { display:block; }
|
696 |
+
.price-excl-tax .label { display:block; white-space:nowrap; }
|
697 |
+
.price-excl-tax .price { display:block; }
|
698 |
+
|
699 |
+
/* Incl tax (for order tables) */
|
700 |
+
.price-incl-tax { display:block; }
|
701 |
+
.price-incl-tax .label { display:block; white-space:nowrap; }
|
702 |
+
.price-incl-tax .price { display:block; font-weight:bold; }
|
703 |
+
|
704 |
+
/* Price range */
|
705 |
+
.price-from { margin:0; }
|
706 |
+
.price-from .price-label { font-weight:bold; white-space:nowrap; }
|
707 |
+
|
708 |
+
.price-to { margin:0; }
|
709 |
+
.price-to .price-label { font-weight:bold; white-space:nowrap; }
|
710 |
+
|
711 |
+
/* Price notice next to the options */
|
712 |
+
.price-notice { padding-left:10px; color:#999; }
|
713 |
+
.price-notice .price { font-weight:bold; color:#2f2f2f; }
|
714 |
+
|
715 |
+
.price-as-configured { margin:0; }
|
716 |
+
.price-as-configured .price-label { font-weight:bold; white-space:nowrap; }
|
717 |
+
|
718 |
+
.price-box-bundle { padding:0 0 10px 0; }
|
719 |
+
.price-box-bundle .price-box { margin:0 !important; padding:0 !important; }
|
720 |
+
.price-box-bundle .price { color:#555; }
|
721 |
+
|
722 |
+
.product-pricing-grouped li { padding:2px 0; color:#000; }
|
723 |
+
.product-pricing-grouped li .price { font-weight:bold; }
|
724 |
+
|
725 |
+
|
726 |
+
/********************** Generic Box */
|
727 |
+
.generic-box { margin-bottom:15px; padding:12px 15px; border:1px solid #D0CBC1; background:url(../images/base_mini_head_bg.gif) repeat-x #fff; }
|
728 |
+
.generic-product-list li { margin: 12px 0;
|
729 |
+
height: 175px!important;
|
730 |
+
display: block;
|
731 |
+
border-bottom: 1px solid #CCC;
|
732 |
+
margin-bottom: 6px; }
|
733 |
+
|
734 |
+
|
735 |
+
/********************** Catalog Listing */
|
736 |
+
.catalog-listing { line-height:1.35em; }
|
737 |
+
.catalog-listing h5 { margin-bottom:.4em; font-size:1.05em; }
|
738 |
+
.catalog-listing h5 a, .catalog-listing h5 a:hover { color:#203548; text-decoration:underline; }
|
739 |
+
.catalog-listing .add-to { margin:.7em 0; color:#555; line-height:1.3em; font-size:.95em; font-weight:bold; }
|
740 |
+
.catalog-listing .add-to a, .catalog-listing .add-to a:hover { text-decoration:underline; }
|
741 |
+
.catalog-listing .ratings { margin-bottom:.6em; }
|
742 |
+
|
743 |
+
.catalog-listing .ratings { line-height:1.5; }
|
744 |
+
.catalog-listing .ratings .rating-box { float:none; margin-bottom:3px; }
|
745 |
+
.catalog-listing .ratings .pipe { display:none; }
|
746 |
+
.catalog-listing .ratings a { display:block; }
|
747 |
+
|
748 |
+
/* Generic Product Grid */
|
749 |
+
.generic-product-grid { width:100%; }
|
750 |
+
.generic-product-grid td { border-right:1px solid #d9dde3; border-bottom:1px solid #d9dde3; padding:12px 10px; line-height:1.6em; }
|
751 |
+
.generic-product-grid tr.last td { border-bottom:0; }
|
752 |
+
.generic-product-grid td.last { border-right:0; }
|
753 |
+
.generic-product-grid .product-image { text-align:center; }
|
754 |
+
.generic-product-grid td.empty-product { border-right:0; background:#f5f6f6; }
|
755 |
+
|
756 |
+
|
757 |
+
/********************** Layered Navigation */
|
758 |
+
.layered-nav .head {
|
759 |
+
margin:0;
|
760 |
+
background:url(../images/layered_nav_head_bg.gif) no-repeat;
|
761 |
+
height:24px;
|
762 |
+
}
|
763 |
+
.layered-nav h3 { display:none; }
|
764 |
+
.layered-nav .border-creator { border-style:solid; border-color:#a0b3c3; border-width:0 1px 1px 1px; }
|
765 |
+
.layered-nav h4 {
|
766 |
+
margin:0;
|
767 |
+
border:1px solid #b9ccdd;
|
768 |
+
border-left:0;
|
769 |
+
border-right:0;
|
770 |
+
padding:3px 10px;
|
771 |
+
color:#1f5070;
|
772 |
+
font-weight:bold;
|
773 |
+
font-size:1em;
|
774 |
+
}
|
775 |
+
.layered-nav .narrowed-category li { background:url(../images/narrow_category_bg.gif) repeat-x 0 100% #fff; padding:4px 6px 4px 10px; }
|
776 |
+
.layered-nav .narrowed-category li .label {
|
777 |
+
background:url(../images/narrow_by_li_by.gif) no-repeat 0 .2em;
|
778 |
+
padding-left:20px;
|
779 |
+
font-weight:bold;
|
780 |
+
text-transform:uppercase;
|
781 |
+
}
|
782 |
+
.layered-nav .widget-btn {
|
783 |
+
float:right;
|
784 |
+
margin:.1em 0 0 5px;
|
785 |
+
font-size:.95em;
|
786 |
+
}
|
787 |
+
.layered-nav .actions {
|
788 |
+
border-style:solid;
|
789 |
+
border-color:#dee5e8;
|
790 |
+
border-width:1px 0;
|
791 |
+
padding:4px 10px;
|
792 |
+
background:#cad6e4;
|
793 |
+
}
|
794 |
+
.narrow-by dl {
|
795 |
+
padding:0 0 1em 0;
|
796 |
+
}
|
797 |
+
.narrow-by dt {padding: 7px 10px 0 10px;color: #2f2f2f;text-transform: uppercase;font-weight: bolder;}
|
798 |
+
.narrow-by dd {
|
799 |
+
background:url(../images/narrow_by_dd_bg.gif) repeat-x 0 100%;
|
800 |
+
padding:0 12px .8em 12px;
|
801 |
+
}
|
802 |
+
.narrow-by dd li { margin-bottom:.3em; line-height:1.3em; }
|
803 |
+
.narrow-by dd.last { background:none; }
|
804 |
+
|
805 |
+
|
806 |
+
|
807 |
+
/********************* Tool Tips */
|
808 |
+
.tool-tip { position:absolute; border:1px solid #7ba7c9; background:#eaf6ff; }
|
809 |
+
.tool-tip .btn-close { padding:6px 6px 0; margin-bottom:-9px; text-align:right; }
|
810 |
+
.tool-tip .inline-content { padding:8px; }
|
811 |
+
.tool-tip .block-content { padding:15px 20px; }
|
812 |
+
/************************************************************/
|
813 |
+
/******************[ Mage_CSS_E Shop Pages]******************/
|
814 |
+
/************************************************************/
|
815 |
+
|
816 |
+
/********************** Home */
|
817 |
+
|
818 |
+
.home-callout { margin-bottom:12px; }
|
819 |
+
.home-callout img { display:block }
|
820 |
+
.home-spot { float:left; width:470px; margin-left:20px; }
|
821 |
+
.best-selling h3 { margin:12px 0 6px 0; color:#e25203; font-size:1.2em; }
|
822 |
+
.best-selling table { border-top:1px solid #ccc; }
|
823 |
+
.best-selling tr.odd { background:url(../images/best_selling_tr_odd_bg.gif) repeat-x 0 100% #eee; }
|
824 |
+
.best-selling tr.even { background:url(../images/best_selling_tr_even_bg.gif) repeat-x 0 100% #fff; }
|
825 |
+
.best-selling td { width:50%; border-bottom:1px solid #ccc; padding:8px 10px 8px 8px; font-size:.95em; }
|
826 |
+
.best-selling .product-img { float:left; border:2px solid #dcdcdc; }
|
827 |
+
.best-selling .product-description { margin-left:107px; line-height:1.3em; }
|
828 |
+
.best-selling a.product-name, .home-spot .best-selling a.product-name:hover { color:#203548; }
|
829 |
+
|
830 |
+
.recently { margin:0 0 12px; }
|
831 |
+
.recently h3 { margin:0 0 6px; color:#e25203; font-size:1.2em; }
|
832 |
+
.recently .product-image { border:1px solid #dcdcdc; }
|
833 |
+
.recently a.product-name { display:block; width:130px; overflow:hidden; }
|
834 |
+
.recently a.product-name,
|
835 |
+
.recently a.product-name:hover { font-size:11px; color:#1d7ecf; }
|
836 |
+
.recently .add-to {margin-top:5px;font-size:11px; }
|
837 |
+
table.recently-list { width:100%; }
|
838 |
+
table.recently-list td { /*width:20%;*/ }
|
839 |
+
|
840 |
+
/********************** Search */
|
841 |
+
.advanced-search {
|
842 |
+
margin:28px 0;
|
843 |
+
padding:22px 25px 12px 25px;
|
844 |
+
background:#fbfaf6;
|
845 |
+
}
|
846 |
+
.advanced-search .legend {
|
847 |
+
margin-top:-33px;
|
848 |
+
float:left;
|
849 |
+
border:1px dotted #fff;
|
850 |
+
background:#F9F3E3;
|
851 |
+
padding:0 8px;
|
852 |
+
color:#000;
|
853 |
+
font-weight:bold;
|
854 |
+
font-size:1.1em;
|
855 |
+
}
|
856 |
+
.advanced-search li { margin-bottom:5px; }
|
857 |
+
.advanced-search li label { width:150px; float:left; }
|
858 |
+
.advanced-search .input-text { width:250px; }
|
859 |
+
.advanced-search select { width:256px; padding:2px; }
|
860 |
+
.advanced-search .field-row { float:left; width:256px; }
|
861 |
+
.advanced-search .range .input-text { width:70px; }
|
862 |
+
.advanced-search .range select { width:90px; padding:1px; }
|
863 |
+
|
864 |
+
.advanced-search-nothing-found { font-weight:bold; color:#df280a; margin-bottom:10px; }
|
865 |
+
.advanced-search-found-amount { margin-bottom:10px; }
|
866 |
+
.advanced-search-summary-box { padding:10px 10px 5px 10px; margin:0 0 10px; border:1px solid #E9D7C9; background-color:#FFF6F1; }
|
867 |
+
.advanced-search-summary-tip { clear:both; font-weight:bold; }
|
868 |
+
.advanced-search-summary-box { margin-bottom:10px; }
|
869 |
+
.advanced-search-summary-box ul { list-style:none; float:left; width:50%; }
|
870 |
+
.advanced-search-summary-box ul li span { background:url(../images/search_criteria.gif) 0 3px no-repeat; padding-left:15px; font-weight:bold; color:#E17C24; }
|
871 |
+
/* Inline translation fix */
|
872 |
+
.advanced-search-summary-box ul li span.translate-inline { background:0 !important; }
|
873 |
+
|
874 |
+
|
875 |
+
|
876 |
+
/********************** Catalog Listing */
|
877 |
+
|
878 |
+
/* List Type */
|
879 |
+
.listing-type-list .listing-item { border-top:1px solid #D9DDE3; padding:12px 10px; }
|
880 |
+
.listing-type-list .product-image { float:left; width:135px; }
|
881 |
+
.listing-type-list .product-shop { width:305px; }
|
882 |
+
.listing-type-list .product-shop .description { margin:.5em 0 1.2em 0; }
|
883 |
+
.listing-type-list .product-shop .price-box { float:left;text-align:left; white-space:nowrap; margin:3px 13px 5px 0; padding:0; }
|
884 |
+
.listing-type-list .product-shop .form-button {margin:0.5em 0 0; }
|
885 |
+
.listing-type-list .product-shop .product-reviews { margin:15px 0; font-size:.95em; }
|
886 |
+
.listing-type-list .product-shop .product-reviews a, .listing-type-list .product-shop .product-reviews a:hover { color:#6e6969; }
|
887 |
+
.listing-type-list .listing-item .rating-box { margin-bottom:6px; }
|
888 |
+
.cf{ margin:0 auto; padding:0;}
|
889 |
+
/* Grid Type *\/
|
890 |
+
.listing-type-grid td { width:33%; text-align:left; }
|
891 |
+
.listing-type-grid .add-to-compare { display:block; margin:5px 0; background:url(../images/icon_add_to_compare.gif) no-repeat 0 50%; padding-left:22px; color:#6e6969; font-weight:bold; }
|
892 |
+
.listing-type-grid .rating-box { float:left; margin-left:0; margin-right:5px; }
|
893 |
+
.listing-type-grid .actions { margin:10px 0; text-align:center; }*/
|
894 |
+
|
895 |
+
/* Grid Type */
|
896 |
+
.listing-type-grid { margin:0 auto; border:1px solid #CCC;/*background:url(../images/bkg_products-grid3.gif) 0 0 repeat; */}
|
897 |
+
.listing-type-grid .grid-row { /*border-bottom:1px solid #d9dde3; */}
|
898 |
+
.listing-type-grid li.item { float:left; width:198px; padding:10px 10px; line-height:11px; overflow:hidden; }
|
899 |
+
.listing-type-grid .last { border-bottom:0; }
|
900 |
+
.listing-type-grid .product-image { text-align:center; }
|
901 |
+
.listing-type-grid .rating-box { float:left; margin-left:0; margin-right:5px; }
|
902 |
+
.listing-type-grid .actions { margin:10px 0; text-align:center; }
|
903 |
+
/* Rewrites for different layouts */
|
904 |
+
.col-1-layout .listing-type-grid { background-image:url(../images/bkg_products-grid1.gif); }
|
905 |
+
.col-1-layout .listing-type-grid li.item { width:280px; }
|
906 |
+
.col-2-left-layout .listing-type-grid,
|
907 |
+
.col-2-right-layout .listing-type-grid { }
|
908 |
+
.col-2-left-layout .listing-type-grid li.item,
|
909 |
+
.col-2-right-layout .listing-type-grid li.item { width:195px; }
|
910 |
+
|
911 |
+
|
912 |
+
|
913 |
+
/********************** Product Detail */
|
914 |
+
/* Product Images */
|
915 |
+
.product-img-box { float:left; width:267px; }
|
916 |
+
.product-img-box .product-image-zoom { position:relative; width:265px; height:265px; z-index:9; }
|
917 |
+
.product-img-box .product-image-zoom img { position:absolute; left:0; top:0; cursor:move; }
|
918 |
+
.image-zoom { position:relative; z-index:9; height:18px; margin:0 auto 13px auto; background:url(../images/slider_bg.gif) no-repeat 50% 50%; padding:0 28px 0 28px; cursor:pointer; }
|
919 |
+
.image-zoom #track { position:relative; height:18px; }
|
920 |
+
.image-zoom #handle { position:absolute; left:0; top:-1px; width:9px; height:22px;background:url(../images/magnifier_handle.gif) 0 0 no-repeat; }
|
921 |
+
.image-zoom .btn-zoom-out { position:absolute; left:2px; top:1px; }
|
922 |
+
.image-zoom .btn-zoom-in { position:absolute; right:2px; top:1px; }
|
923 |
+
.product-img-box .more-views h4 { border-bottom:1px solid #ccc; margin-bottom:.8em; font-size:.95em; text-transform:uppercase; }
|
924 |
+
.product-img-box .more-views ul { margin-left:-9px; }
|
925 |
+
.product-img-box .more-views li { float:left; margin:0 0 9px 9px; }
|
926 |
+
.product-img-box .more-views li a { float:left; width:56px; height:56px; border:2px solid #ddd; overflow:hidden; }
|
927 |
+
|
928 |
+
.product-info-box { /*border:1px solid #c4c6c8; margin-top:0;*/ }
|
929 |
+
.product-info-box .product-name { margin-bottom:.3em; color:#4F5439; font-size:1.2em; }
|
930 |
+
.product-info-box .price-box { margin:10px 0; }
|
931 |
+
.product-info-box .data-table .price-box { margin:0; padding:0; }
|
932 |
+
.product-info-box .availability { margin:10px 0; padding:0; font-size:0.92em; }
|
933 |
+
|
934 |
+
.add-to-cart-box { float:right; }
|
935 |
+
.add-to-cart-box .qty-box { float:left; }
|
936 |
+
.add-to-cart-box .qty-box label { float:left; }
|
937 |
+
.add-to-cart-box .qty-box .qty { float:left; margin:0 5px; }
|
938 |
+
.add-to-cart-box .form-button { float:left; }
|
939 |
+
|
940 |
+
.add-to-box { text-align:right; }
|
941 |
+
.add-to-box li { display:inline; }
|
942 |
+
|
943 |
+
.add-to-holder { margin:10px 0; }
|
944 |
+
.add-to-holder .add-to-cart-box { float:left; }
|
945 |
+
.add-to-holder .add-or { float:left; padding:0 7px; font-family:verdana; font-size:10px; font-weight:normal; color:#4F5439; }
|
946 |
+
.add-to-holder .add-to-box { float:left; line-height:1.25em; text-align:left; }
|
947 |
+
.add-to-holder .add-to-box li { display:block; }
|
948 |
+
.add-to-holder .add-to-box li .pipe { display:none; }
|
949 |
+
|
950 |
+
.product-info-box .ratings { margin-bottom:1em; }
|
951 |
+
.product-essential .product-collateral { padding:10px; }
|
952 |
+
.product-essential { padding-top:5px; background:/*url(../images/product_essential_bg.gif) no-repeat 100% 0*/ #fff; }
|
953 |
+
.product-essential .product-shop { width:330px; }
|
954 |
+
.product-essential .product-shop .ratings { margin-bottom:10px; }
|
955 |
+
|
956 |
+
.product-pricing { margin:10px 0; padding:10px; background-color:#f4f7f7; border:1px solid #dadddd; }
|
957 |
+
.product-pricing li { line-height:1.4; background:url(../images/bg_tierico1.gif) no-repeat 0 3px; padding:2px 0 2px 10px; color:#424242; }
|
958 |
+
.product-pricing .benefit { font-style:italic; font-weight:bold; color:#2f2f2f; }
|
959 |
+
.product-pricing .price { font-weight:bold; color:#2f2f2f; }
|
960 |
+
|
961 |
+
.product-options { margin:20px 0 0; padding:10px 15px 20px; background-color:#f6f6f6; border:1px solid #e4e4e4; }
|
962 |
+
.product-options dt { padding:10px 0 0; font-weight:normal; }
|
963 |
+
.product-options dt label { color:#2f2f2f; }
|
964 |
+
.product-options dt .qty-holder { float:right; margin-right:15px; }
|
965 |
+
.product-options dt .qty-holder label { vertical-align:middle; }
|
966 |
+
.product-options dt .qty-disabled { background:none; border:0; padding:3px; color:#2f2f2f; }
|
967 |
+
.product-options dd { padding:5px 10px 15px; margin:0 0 5px; border-bottom:1px solid #e4e4e4; }
|
968 |
+
.product-options dl.last dd.last { border-bottom:0; padding-bottom:5px; margin-bottom:0; }
|
969 |
+
.product-options dd input.input-text { width:98%; }
|
970 |
+
.product-options dd textarea { width:98%; height:8em; }
|
971 |
+
.product-options dd select { width:99%; }
|
972 |
+
.product-options dd .multiselect option { border-bottom:1px dotted #d9e5ee; padding:2px 4px; }
|
973 |
+
.product-options ul.options-list { margin-right:5px; }
|
974 |
+
.product-options ul.options-list li { line-height:1.5; padding:2px 0; }
|
975 |
+
.product-options ul.options-list input.radio { float:left; margin-top:3px; }
|
976 |
+
.product-options ul.options-list input.checkbox { float:left; margin-top:3px; }
|
977 |
+
.product-options ul.options-list .label { display:block; margin-left:18px; }
|
978 |
+
.product-options ul.options-list label { font-weight:normal; }
|
979 |
+
.product-options ul.validation-failed { padding:0 7px; }
|
980 |
+
.product-options p.required { margin-bottom:0; padding:15px 0 0; }
|
981 |
+
|
982 |
+
.product-options-bottom { background-color:#fffada; padding:15px 20px; border:1px solid #e4e4e4; border-top:0; }
|
983 |
+
.product-options-bottom .product-pricing { margin:0; padding:0 0 10px; border:0; background:0; }
|
984 |
+
.product-options-bottom .product-pricing li { background:0; padding:2px 0; color:#000; }
|
985 |
+
.product-options-bottom .product-pricing .price,
|
986 |
+
.product-options-bottom .product-pricing .benefit { color:#000; }
|
987 |
+
.product-options-bottom .price-box { float:left; margin:0; padding:0; }
|
988 |
+
.product-options-bottom .price-label { float:left; padding-right:5px; }
|
989 |
+
.product-options-bottom .price-tax { float:left; }
|
990 |
+
.product-shop .product-options-bottom .price-box { float:none; }
|
991 |
+
.product-shop .product-options-bottom .price-label { float:none; padding-right:0; }
|
992 |
+
.product-shop .product-options-bottom .price-tax { float:none; }
|
993 |
+
.product-shop .product-options-bottom .add-to-cart-box { clear:both; float:left; padding-top:12px; }
|
994 |
+
|
995 |
+
/* Product Options */
|
996 |
+
dl.item-options dt { font-weight:bold; font-style:italic; }
|
997 |
+
dl.item-options dd { padding-left:10px; }
|
998 |
+
|
999 |
+
.truncated { cursor:help; }
|
1000 |
+
.truncated a.dots { cursor:help; text-decoration:none !important; }
|
1001 |
+
.truncated a.details { cursor:help; text-decoration:none !important; display:inline-block; border-bottom:1px #1e7ec8 dotted; }
|
1002 |
+
.truncated .truncated_full_value { position:relative; z-index:999; }
|
1003 |
+
.truncated .truncated_full_value dl { position:absolute; top:-99999em; z-index:999; width:250px; padding:8px; border:1px solid #ccc; border-bottom-color:#bbb; border-right-color:#bbb; background-color:#f6f6f6; }
|
1004 |
+
.truncated .truncated_full_value dl dt { margin-top:0; }
|
1005 |
+
.truncated .show dl { top:-20px; left:50%; }
|
1006 |
+
.col-left .truncated .show dl { left:35px; top:10px; }
|
1007 |
+
.col-right .truncated .show dl { left:-240px; top:10px; }
|
1008 |
+
|
1009 |
+
/* Product Collateral */
|
1010 |
+
.product-collateral { padding:25px;margin-bottom:20px; background: #DAE0BF /*url(../images/product_collateral_bg.gif) repeat-x #faf7ee;*/ }
|
1011 |
+
.product-collateral .head { margin-bottom:1em; border-bottom:1px solid #e5dcc3; padding-bottom:1px; font-size:1.15em; }
|
1012 |
+
.product-collateral .collateral-box { margin-left:13px;padding-bottom:5px; }
|
1013 |
+
.product-collateral .collateral-box h4{ color:#000; }
|
1014 |
+
.product-collateral .attribute-specs table { border-color:#d9DDE3; width:600px; }
|
1015 |
+
.product-collateral .attribute-specs .label { font-weight:bold; width:300px }
|
1016 |
+
.product-collateral .attribute-specs .data { border-right:0; }
|
1017 |
+
.product-collateral .attribute-specs td { padding-top:3px; padding-bottom:3px; line-height:1.25em; }
|
1018 |
+
|
1019 |
+
.product-collateral .up-sell .head { padding-bottom:8px; margin-bottom:0; }
|
1020 |
+
.product-collateral .up-sell .generic-product-grid { border:1px solid #E5DCC3; border-top:0; }
|
1021 |
+
.product-collateral .up-sell .generic-product-grid td { width:25%; border-color:#E5DCC3; background:#f6f2e7; padding-top:15px; }
|
1022 |
+
.product-collateral .up-sell .generic-product-grid td img { border:1px solid #E5DCC3; }
|
1023 |
+
.product-collateral .up-sell .generic-product-grid td.empty-product { background:#f1ecdb; }
|
1024 |
+
#customer-reviews { margin-bottom:15px; }
|
1025 |
+
#customer-reviews li { margin-bottom:25px; }
|
1026 |
+
#customer-reviews li p { clear:both; }
|
1027 |
+
.product-collateral .add-tag-box .input-box { float:left; width:302px; margin-right:8px; }
|
1028 |
+
.product-collateral .add-tag-box .input-box .input-text { width:300px; }
|
1029 |
+
.tags-list { margin-bottom:15px; }
|
1030 |
+
.tags-list li {
|
1031 |
+
display:inline;
|
1032 |
+
background:url(../images/separator.gif) no-repeat 100% .4em;
|
1033 |
+
padding:0 8px 0 4px;
|
1034 |
+
}
|
1035 |
+
.tags-list li.first { padding-left:0; }
|
1036 |
+
.tags-list li.last { background:none; }
|
1037 |
+
.add-tag-box { background:url(../images/icon_tag_add.gif) no-repeat 0 2px; padding-left:23px; }
|
1038 |
+
.product-review-box { padding-bottom:10px; }
|
1039 |
+
.product-review-box table { width:456px; margin:8px 0 0; }
|
1040 |
+
.product-review-box td,
|
1041 |
+
.product-review-box th { text-align:center; }
|
1042 |
+
.product-review-box td.label { width:100px; text-align:left; }
|
1043 |
+
|
1044 |
+
/* Product Detail sidebar */
|
1045 |
+
.mini-related-items .head h4 { background-image:url(../images/icon_clip.gif); }
|
1046 |
+
.mini-related-items .product-images { width:72px; }
|
1047 |
+
.mini-related-items .product-images a { display:block; margin-left:20px; }
|
1048 |
+
.mini-related-items .product-images input { float:left; /*margin-right:4px; margin-left:-6px;*/ }
|
1049 |
+
.mini-related-items .product-images .checkbox-container { float:left; width:15px; }
|
1050 |
+
.mini-related-items .product-details { margin-left:80px; padding-left:5px; }
|
1051 |
+
.mini-related-items ol li { padding-left:0 ; padding-right:0; }
|
1052 |
+
|
1053 |
+
|
1054 |
+
|
1055 |
+
/********************** Checkout */
|
1056 |
+
select.address-select { width:630px; }
|
1057 |
+
|
1058 |
+
.shipment-methods dd { margin-bottom:13px; }
|
1059 |
+
.payment-methods dt { margin-bottom:5px; }
|
1060 |
+
.payment-methods dd { padding:5px 20px; }
|
1061 |
+
.payment-methods select.month { width:146px !important; margin-right:10px; }
|
1062 |
+
.payment-methods select.year { width:100px !important; }
|
1063 |
+
.payment-methods input.cvv { width:3em !important; }
|
1064 |
+
|
1065 |
+
/* Shopping Cart */
|
1066 |
+
.shopping-cart { margin-bottom:0; }
|
1067 |
+
.shopping-cart th, .shopping-cart td { padding-left:13px; padding-right:13px; }
|
1068 |
+
.shopping-cart th .tax-flag {font-size:0.9em; font-weight:normal; display:block; }
|
1069 |
+
.shopping-cart tr.error { background:#FDE6E0 !important; }
|
1070 |
+
.shopping-cart .continue-shopping { float:left; }
|
1071 |
+
.shopping-cart-item-message {margin-bottom:5px;font-size:95%;margin-top:6px; }
|
1072 |
+
|
1073 |
+
td.attributes-col { line-height:1.4em; }
|
1074 |
+
td.attributes-col ul { margin:5px 0; font-size:.95em; }
|
1075 |
+
td.attributes-col dt { margin-top:.5em; }
|
1076 |
+
td.attributes-col dd ul { margin:0 0 5px 0; list-style:disc; }
|
1077 |
+
td.attributes-col dd ul li { margin-left:15px; }
|
1078 |
+
td.attributes-col h4.title { padding:0; margin:0; font-size:1em; color:#2f2f2f; width:100%; overflow:hidden; }
|
1079 |
+
td.attributes-col h4.title a { font-weight:bold; }
|
1080 |
+
|
1081 |
+
.shopping-cart-totals {
|
1082 |
+
margin-left:35px;
|
1083 |
+
width:248px;
|
1084 |
+
float:right;
|
1085 |
+
margin-top:25px;
|
1086 |
+
border:1px solid #BEBCB7;
|
1087 |
+
background:#DAE0BF;
|
1088 |
+
/*text-align:right;*/
|
1089 |
+
}
|
1090 |
+
.shopping-cart-totals table { width:100%; margin:7px 0; }
|
1091 |
+
.shopping-cart-totals td { padding:0 15px; }
|
1092 |
+
.shopping-cart-totals tr.last td {}
|
1093 |
+
.shopping-cart-totals tfoot td {
|
1094 |
+
padding-top:10px;
|
1095 |
+
font-size:1.3em;
|
1096 |
+
border:none!important;
|
1097 |
+
}
|
1098 |
+
.shopping-cart-totals .checkout-types { padding:8px 25px 15px; }
|
1099 |
+
.shopping-cart-totals .checkout-types li { clear:both; margin:10px 0; }
|
1100 |
+
|
1101 |
+
/* Tax details */
|
1102 |
+
.tax-total { cursor:pointer; }
|
1103 |
+
.tax-total td { line-height:13px; padding-top:5px !important; padding-bottom:5px !important; }
|
1104 |
+
.tax-total .tax-collapse { float:right; padding-left:20px; background:url(../images/bg_collapse.gif) 0 2px no-repeat; text-align:right; cursor:pointer; }
|
1105 |
+
.show-details .tax-collapse { background-position:0 -55px; }
|
1106 |
+
.show-details td { border-top:1px solid #d2d8db; }
|
1107 |
+
.tax-details td { font-size:0.91em; color:#626465; background-color:#dae1e4; }
|
1108 |
+
.tax-details-first td { border-top:1px solid #d2d8db; }
|
1109 |
+
|
1110 |
+
/* Shopping cart tax info */
|
1111 |
+
.cart-tax-info, .cart-price { padding-right:20px; }
|
1112 |
+
.cart-tax-total { cursor:pointer; }
|
1113 |
+
.cart-tax-total { padding-right:20px; background:url(../images/bg_collapse.gif) 100% 5px no-repeat; cursor:pointer; }
|
1114 |
+
.cart-tax-total-expanded { background-position:100% -52px; }
|
1115 |
+
|
1116 |
+
|
1117 |
+
.shopping-cart-collaterals {
|
1118 |
+
float:left;
|
1119 |
+
width:605px;
|
1120 |
+
padding:25px 0;
|
1121 |
+
}
|
1122 |
+
.shopping-cart-collaterals .box {
|
1123 |
+
margin-bottom:18px;
|
1124 |
+
padding:12px 15px;
|
1125 |
+
border:1px dotted #DAE0BF;
|
1126 |
+
/*background:url(../images/base_mini_head_bg.gif) repeat-x #fff;*/
|
1127 |
+
}
|
1128 |
+
.shopping-cart-collaterals .box .form-button { margin-left:5px; }
|
1129 |
+
.shopping-cart-collaterals .discount-codes h4, .shopping-cart-collaterals .shipping-estimate h4 {
|
1130 |
+
min-height:16px;
|
1131 |
+
color:#000;
|
1132 |
+
background-repeat:no-repeat;
|
1133 |
+
background-position:0 0;
|
1134 |
+
padding:1px 0 1px 21px;
|
1135 |
+
text-transform:uppercase;
|
1136 |
+
}
|
1137 |
+
.shopping-cart-collaterals .discount-codes h4 { background-image:url(../images/icon_asterick.gif); padding-left:23px; }
|
1138 |
+
.shopping-cart-collaterals .shipping-estimate h4 { background-image:url(../images/icon_lorry.gif); padding-left:23px; }
|
1139 |
+
.shopping-cart-collaterals .shipping-estimate .input-text { width:214px; }
|
1140 |
+
.shopping-cart-collaterals .shipping-estimate select { width:220px; }
|
1141 |
+
.shopping-cart-collaterals .upsell {
|
1142 |
+
width:42.5%;
|
1143 |
+
border:1px solid #cec3b6;
|
1144 |
+
padding:12px 15px;
|
1145 |
+
background:#fafaec;
|
1146 |
+
}
|
1147 |
+
.shopping-cart-collaterals .upsell .product-image { float:left; width:100px; border:1px solid #d0cdc9; }
|
1148 |
+
.shopping-cart-collaterals .upsell .product-shop { width:170px; }
|
1149 |
+
.shopping-cart-collaterals .upsell .product-shop h5 { font-size:1em; }
|
1150 |
+
.grand_total {
|
1151 |
+
width:auto;
|
1152 |
+
margin-top:15px;
|
1153 |
+
border:1px solid #BEBCB7;
|
1154 |
+
background:#DEE5E8;
|
1155 |
+
font-size:1.3em !important;
|
1156 |
+
font-weight:bold;
|
1157 |
+
text-align:right;
|
1158 |
+
}
|
1159 |
+
tr.grand_total td, p.grand_total { padding-top:5px; padding-bottom:5px; }
|
1160 |
+
|
1161 |
+
|
1162 |
+
/* One-Page checkout */
|
1163 |
+
.one-page-checkout li.section { /*position:relative; */}
|
1164 |
+
.one-page-checkout .group-select { margin-right:0; }
|
1165 |
+
.one-page-checkout .box { border:1px solid #bbb6a5; border-top:0; padding:15px 20px; background:#faf7ee; }
|
1166 |
+
.one-page-checkout .head { margin-bottom:0; padding:4px 8px 6px 8px; background:url(../images/opc_off_head_bg.gif) repeat-x 0 100% #DAE0BF; border-width:0 1px 0 1px; border-color:#DAE0BF; border-style:solid; border-top:1px solid #DAE0BF; }
|
1167 |
+
.one-page-checkout .tool-tip { right:8px; }
|
1168 |
+
.one-page-checkout .head a { display:none; } /* Hide Edit button in step header */
|
1169 |
+
.one-page-checkout h3 { color:#333; font-size:1.05em; }
|
1170 |
+
.one-page-checkout h4 { border-bottom:1px solid #E4E4E4; padding-bottom:2px; text-transform:uppercase; }
|
1171 |
+
.one-page-checkout h4.title { border-bottom:0; text-transform:none; }
|
1172 |
+
.one-page-checkout .step-count { background:#fff; font-size:.9em; padding:0 4px; line-height:1em; }
|
1173 |
+
.one-page-checkout .content { padding:10px 20px; }
|
1174 |
+
.one-page-checkout label.label { font-size:1.05em; color:#2f2f2f; }
|
1175 |
+
.one-page-checkout .allow .head { background:#d0dce1; border-color:#a3aeb3; border-width:1px 1px 0 1px; cursor:pointer; }
|
1176 |
+
.one-page-checkout .active .head { margin-bottom:0; background:#DAE0BF; padding-bottom:5px; cursor:default; color:#000; }
|
1177 |
+
.one-page-checkout .alloq .head a { display:block; } /* Display Edit button in active selection */
|
1178 |
+
.one-page-checkout .group-select { margin-top:0; border:0; background:none; padding:0; }
|
1179 |
+
.one-page-checkout .allow h3 { color:#a4b3b9; }
|
1180 |
+
.one-page-checkout .active h3 { color:#000; }
|
1181 |
+
.one-page-checkout .allow .step-count { background:#dbe6eb; }
|
1182 |
+
.one-page-checkout .active .step-count { color:#fff; border:1px dotted #fff; background:#000; }
|
1183 |
+
.one-page-checkout .active .box { display:block; background:#FBFAF6 url(../images/multi_address_box_bg.gif) 0 0 repeat-x; }
|
1184 |
+
.one-page-checkout dd .form-list ul { margin:5px 17px 15px 17px; }
|
1185 |
+
.one-page-checkout .checkmo-mailing-address { padding-left:20px; }
|
1186 |
+
.one-page-checkout-progress .page-head { margin-bottom:1em; }
|
1187 |
+
.one-page-checkout-progress li { border:1px solid #A3AEB3; background:#eee; margin-bottom:6px; }
|
1188 |
+
.one-page-checkout-progress h4 { margin:0; color:#999; padding:2px 8px; background:#eee; text-transform:none; }
|
1189 |
+
.one-page-checkout-progress h4.complete { border-bottom:1px solid #A3AEB3; background:#DAE0BF; color:#000; }
|
1190 |
+
.one-page-checkout-progress h4 a { text-transform:none; }
|
1191 |
+
.one-page-checkout-progress .content { padding:8px 13px; }
|
1192 |
+
#opc-login .button-set { border-top:0; margin-top:-32px; float:left; }
|
1193 |
+
#opc-review .box { border:0; padding:0; }
|
1194 |
+
#opc-review .content { border:1px solid #d9dde3; border-top:0; }
|
1195 |
+
#opc-review .data-table { border-top:0; }
|
1196 |
+
.opc-please-wait { padding-right:7px; }
|
1197 |
+
.one-page-checkout a.back { background:url(../images/icon_opc_back.gif) no-repeat; padding-left:16px; line-height:13px; }
|
1198 |
+
.one-page-checkout .payment-methods dd { padding:0; }
|
1199 |
+
.one-page-checkout .button-set { margin-top:0; padding-top:2em; }
|
1200 |
+
|
1201 |
+
|
1202 |
+
.checkout-progress { margin:0 auto 1.5em auto; }
|
1203 |
+
.checkout-progress td {
|
1204 |
+
float:left;
|
1205 |
+
margin-right:3px;
|
1206 |
+
border-top:10px solid #999;
|
1207 |
+
padding:4px 20px;
|
1208 |
+
color:#abb5ba;
|
1209 |
+
font-weight:bold;
|
1210 |
+
}
|
1211 |
+
.checkout-progress td.active {
|
1212 |
+
border-top-color:#e96200;
|
1213 |
+
color:#e96200;
|
1214 |
+
}
|
1215 |
+
|
1216 |
+
/* Multiple Addresses checkout */
|
1217 |
+
.multi-address-checkout-description {
|
1218 |
+
margin-top:-15px;
|
1219 |
+
margin-bottom:15px;
|
1220 |
+
}
|
1221 |
+
.multi-address-checkout-box .box {
|
1222 |
+
position:relative;
|
1223 |
+
margin-top:15px;
|
1224 |
+
margin-bottom:25px;
|
1225 |
+
border:1px solid #bbb6a5;
|
1226 |
+
background:url(../images/multi_address_box_bg.gif) repeat-x #FBFAF6;
|
1227 |
+
}
|
1228 |
+
.multi-address-checkout-box .legend {
|
1229 |
+
float:left;
|
1230 |
+
margin-top:-10px;
|
1231 |
+
margin-bottom:0;
|
1232 |
+
margin-left:15px;
|
1233 |
+
border:1px solid #000;
|
1234 |
+
background:#F9F3E3;
|
1235 |
+
color:#000;
|
1236 |
+
padding:2px 8px;
|
1237 |
+
}
|
1238 |
+
.multi-address-checkout-box .content {
|
1239 |
+
padding:15px 20px 20px 20px;
|
1240 |
+
}
|
1241 |
+
.multi-address-checkout-box .count-head {
|
1242 |
+
border-bottom:1px solid #BBAFA0;
|
1243 |
+
background:#F9F3E3;
|
1244 |
+
padding:5px 10px;
|
1245 |
+
}
|
1246 |
+
.shipment-count {
|
1247 |
+
background:#000;
|
1248 |
+
padding:2px 5px;
|
1249 |
+
color:#fff;
|
1250 |
+
font-size:.95em;
|
1251 |
+
line-height:1em;
|
1252 |
+
}
|
1253 |
+
.multi-address-checkout-box .tool-tip { left:-23px; }
|
1254 |
+
.multi-address-checkout-box .count-head h4 { margin:0; }
|
1255 |
+
.multi-address-checkout-box .head h5 { color:#000; }
|
1256 |
+
.multi-address-checkout-box .head a { font-weight:normal; }
|
1257 |
+
.multi-address-checkout-box .checkmo-mailing-address { display:block; padding-left:20px; }
|
1258 |
+
.shipping-method-pointer { border:1px solid #d9d2be; padding:13px; background:#F9F3E3; position:relative; }
|
1259 |
+
.shipping-method-pointer .pointer { position:absolute; top:-20px; right:-40px; }
|
1260 |
+
.place-order-box { float:right; height:71px; overflow:hidden; }
|
1261 |
+
.place-order-box .left-radius { width:21px; background:url(../images/place_order_container_bg.gif) no-repeat; }
|
1262 |
+
.place-order-box .main-radius{ background:url(../images/place_order_bg.gif) no-repeat 100% 0; padding-right:21px; vertical-align:middle; }
|
1263 |
+
.place-order-box .grand-total { font-size:1.5em; }
|
1264 |
+
.place-order-box .grand-total .price { color:#000; font-weight:bold; }
|
1265 |
+
.place-order-box input { margin-left:15px; }
|
1266 |
+
|
1267 |
+
/* Checkout Agreements */
|
1268 |
+
.checkout-agreements li { margin:30px 0; }
|
1269 |
+
.checkout-agreements .agreement-content { overflow:auto; height:10em; padding:10px; background-color:#fbfaf6; border:1px solid #bbb6a5; }
|
1270 |
+
.checkout-agreements .agree { margin:0; padding:10px 0 10px 11px; }
|
1271 |
+
|
1272 |
+
.one-page-checkout .checkout-agreements { border:1px solid #d9dde3; border-width:0 1px; padding:5px 20px; }
|
1273 |
+
.one-page-checkout .checkout-agreements li { margin:20px 0 0; }
|
1274 |
+
.one-page-checkout .checkout-agreements .agreement-content { background-color:#fff; border-color:#e4e4e4; padding:5px; }
|
1275 |
+
.one-page-checkout .checkout-agreements .agree { padding-left:6px; }
|
1276 |
+
|
1277 |
+
|
1278 |
+
|
1279 |
+
/********************** Gift Messages */
|
1280 |
+
.giftmessages .gift-header {
|
1281 |
+
font-size:12px;
|
1282 |
+
font-weight:bold;
|
1283 |
+
color:#e87403;
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
.giftmessages .input-checkbox {
|
1287 |
+
padding-bottom:15px;
|
1288 |
+
}
|
1289 |
+
|
1290 |
+
.giftmessages textarea {
|
1291 |
+
height:100px;
|
1292 |
+
}
|
1293 |
+
|
1294 |
+
.giftmessages .input-checkbox input {
|
1295 |
+
margin-right:5px;
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
.giftmessages .input-checkbox label {
|
1299 |
+
font-weight:normal;
|
1300 |
+
color:#8e8d8b;
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
.one-page-checkout .box-no-padding {
|
1304 |
+
border:1px solid #bbb6a5;
|
1305 |
+
border-top:0;
|
1306 |
+
padding:15px 0px;
|
1307 |
+
background:#faf7ee;
|
1308 |
+
}
|
1309 |
+
|
1310 |
+
.one-page-checkout .box-no-padding .inner-box {
|
1311 |
+
padding:0px 20px;
|
1312 |
+
}
|
1313 |
+
|
1314 |
+
|
1315 |
+
.giftmessages .gift-box {
|
1316 |
+
background-color:#f6f1eb;
|
1317 |
+
border-top:1px solid #e9e4de;
|
1318 |
+
border-bottom:1px solid #e9e4de;
|
1319 |
+
padding:22px 16px 22px 22px;
|
1320 |
+
}
|
1321 |
+
|
1322 |
+
.giftmessages .gift-box .scroll-box
|
1323 |
+
{
|
1324 |
+
overflow:auto;
|
1325 |
+
height:260px;
|
1326 |
+
}
|
1327 |
+
|
1328 |
+
.giftmessages .product-image
|
1329 |
+
{
|
1330 |
+
border:1px solid #d2d1cd;
|
1331 |
+
}
|
1332 |
+
|
1333 |
+
.no-border {
|
1334 |
+
border-top:none;
|
1335 |
+
border-left:none;
|
1336 |
+
border-right:none;
|
1337 |
+
border-bottom:none;
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
.no-padding { padding:0 !important; }
|
1341 |
+
.no-margin { margin:0 !important; }
|
1342 |
+
|
1343 |
+
.giftmessages .giftmessage-product-info {
|
1344 |
+
padding-left:10px;
|
1345 |
+
}
|
1346 |
+
|
1347 |
+
.giftmessages .numeration
|
1348 |
+
{
|
1349 |
+
font-weight:bold;
|
1350 |
+
color:#8a8987;
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
.giftmessages .gift-box label { color:#918d8e; }
|
1354 |
+
|
1355 |
+
.giftmessages .group-select li .input-box { float:left; width:260px; }
|
1356 |
+
.giftmessages .group-select li .input-text, .group-select li select, .group-select li textarea { width:495px; }
|
1357 |
+
.giftmessages .group-select li .input-box .input-text, .group-select li .input-box textarea { width:235px; }
|
1358 |
+
.giftmessages .group-select li .input-box select { width:256px; }
|
1359 |
+
|
1360 |
+
/********************** Customer */
|
1361 |
+
|
1362 |
+
/* Customer Name */
|
1363 |
+
|
1364 |
+
.customer-name-prefix .name-prefix { width:60px !important; }
|
1365 |
+
.customer-name-prefix .name-prefix input { width:45px !important; }
|
1366 |
+
.customer-name-prefix .name-prefix select { width:51px !important; }
|
1367 |
+
.customer-name-prefix .name-firstname { width:215px !important; }
|
1368 |
+
.customer-name-prefix .name-firstname input { width:190px !important; }
|
1369 |
+
|
1370 |
+
.customer-name-middlename .name-firstname { width:215px !important; }
|
1371 |
+
.customer-name-middlename .name-firstname input { width:200px !important; }
|
1372 |
+
.customer-name-middlename .name-middlename { width:60px !important; }
|
1373 |
+
.customer-name-middlename .name-middlename input { width:35px !important; }
|
1374 |
+
|
1375 |
+
.customer-name-suffix .name-lastname { width:205px !important; }
|
1376 |
+
.customer-name-suffix .name-lastname input { width:190px !important; }
|
1377 |
+
.customer-name-suffix .name-suffix { width:50px !important; }
|
1378 |
+
.customer-name-suffix .name-suffix input { width:45px !important; }
|
1379 |
+
.customer-name-suffix .name-suffix select { width:51px !important; }
|
1380 |
+
|
1381 |
+
.customer-name-prefix-middlename .name-prefix { width:60px !important; }
|
1382 |
+
.customer-name-prefix-middlename .name-prefix input { width:45px !important; }
|
1383 |
+
.customer-name-prefix-middlename .name-prefix select { width:51px !important; }
|
1384 |
+
.customer-name-prefix-middlename .name-firstname { width:215px !important; }
|
1385 |
+
.customer-name-prefix-middlename .name-firstname input { width:190px !important; }
|
1386 |
+
.customer-name-prefix-middlename .name-middlename { width:50px !important; }
|
1387 |
+
.customer-name-prefix-middlename .name-middlename input { width:35px !important; }
|
1388 |
+
.customer-name-prefix-middlename .name-lastname { width:200px !important; }
|
1389 |
+
.customer-name-prefix-middlename .name-lastname input { width:200px !important; }
|
1390 |
+
|
1391 |
+
.customer-name-prefix-suffix .name-prefix { width:60px !important; }
|
1392 |
+
.customer-name-prefix-suffix .name-prefix input { width:45px !important; }
|
1393 |
+
.customer-name-prefix-suffix .name-prefix select { width:51px !important; }
|
1394 |
+
.customer-name-prefix-suffix .name-firstname { width:215px !important; }
|
1395 |
+
.customer-name-prefix-suffix .name-firstname input { width:190px !important; }
|
1396 |
+
.customer-name-prefix-suffix .name-lastname { width:205px !important; }
|
1397 |
+
.customer-name-prefix-suffix .name-lastname input { width:190px !important; }
|
1398 |
+
.customer-name-prefix-suffix .name-suffix { width:50px !important; }
|
1399 |
+
.customer-name-prefix-suffix .name-suffix input { width:45px !important; }
|
1400 |
+
.customer-name-prefix-suffix .name-suffix select { width:51px !important; }
|
1401 |
+
|
1402 |
+
.customer-name-middlename-suffix .name-firstname { width:215px !important; }
|
1403 |
+
.customer-name-middlename-suffix .name-firstname input { width:200px !important; }
|
1404 |
+
.customer-name-middlename-suffix .name-middlename { width:60px !important; }
|
1405 |
+
.customer-name-middlename-suffix .name-middlename input { width:35px !important; }
|
1406 |
+
.customer-name-middlename-suffix .name-lastname { width:205px !important; }
|
1407 |
+
.customer-name-middlename-suffix .name-lastname input { width:190px !important; }
|
1408 |
+
.customer-name-middlename-suffix .name-suffix { width:50px !important; }
|
1409 |
+
.customer-name-middlename-suffix .name-suffix input { width:45px !important; }
|
1410 |
+
.customer-name-middlename-suffix .name-suffix select { width:51px !important; }
|
1411 |
+
|
1412 |
+
|
1413 |
+
.customer-name-prefix-middlename-suffix .name-prefix { width:60px !important; }
|
1414 |
+
.customer-name-prefix-middlename-suffix .name-prefix input { width:45px !important; }
|
1415 |
+
.customer-name-prefix-middlename-suffix .name-prefix select { width:51px !important; }
|
1416 |
+
.customer-name-prefix-middlename-suffix .name-firstname { width:155px !important; }
|
1417 |
+
.customer-name-prefix-middlename-suffix .name-firstname input { width:140px !important; }
|
1418 |
+
.customer-name-prefix-middlename-suffix .name-middlename { width:60px !important; }
|
1419 |
+
.customer-name-prefix-middlename-suffix .name-middlename input { width:35px !important; }
|
1420 |
+
.customer-name-prefix-middlename-suffix .name-lastname { width:205px !important; }
|
1421 |
+
.customer-name-prefix-middlename-suffix .name-lastname input { width:190px !important; }
|
1422 |
+
.customer-name-prefix-middlename-suffix .name-suffix { width:50px !important; }
|
1423 |
+
.customer-name-prefix-middlename-suffix .name-suffix input { width:45px !important; }
|
1424 |
+
.customer-name-prefix-middlename-suffix .name-suffix select { width:51px !important; }
|
1425 |
+
|
1426 |
+
.customer-dob .input-box { float:left; width:60px !important; }
|
1427 |
+
.customer-dob input { width:50px !important; }
|
1428 |
+
.customer-dob label.label-dob { font-weight:normal; color:#888; font-size:10px; }
|
1429 |
+
|
1430 |
+
/* My Account navigation */
|
1431 |
+
.account-nav { border:1px solid #bbb; }
|
1432 |
+
.account-nav .head {
|
1433 |
+
margin:0;
|
1434 |
+
background:/*url(../images/account_nav_head_bg.gif) repeat-x 0 100% */ #91996F;
|
1435 |
+
padding:3px 10px;
|
1436 |
+
}
|
1437 |
+
.account-nav .head h3 { color:#fff; font-size:1.1em; }
|
1438 |
+
.account-nav ul { background:#91996F; padding:4px 10px 10px 10px;left-margin:0px;}
|
1439 |
+
.account-nav li a, .account-nav li.on { padding:3px 0; }
|
1440 |
+
.account-nav li a { color:#fff;display:block; border-bottom:1px solid #ddd; /*background:url(../images/account_nav_link_bg.gif) no-repeat 10px 8px;*/ }
|
1441 |
+
.account-nav li a, .account-nav li a:hover { color:#fff; text-decoration:none; }
|
1442 |
+
.account-nav li a:hover { color:#293202; }
|
1443 |
+
.account-nav li.on { border-bottom:1px solid #ddd;color:#293202; font-weight:bold; }
|
1444 |
+
.account-nav li.on a { padding:0; color:#293202}
|
1445 |
+
.account-nav li.last, .account-nav li.last a { border-bottom:0; }
|
1446 |
+
|
1447 |
+
|
1448 |
+
/* Login */
|
1449 |
+
.login-box .col-1, .login-box .col-2 { /*border:1px solid #bbb6a5;*/ background:#fff; }
|
1450 |
+
.login-box .content { background:/*url(../images/login_box_bg.gif) repeat-x*/ #fff; padding:14px 21px; }
|
1451 |
+
.login-box h4 {
|
1452 |
+
min-height:16px;
|
1453 |
+
border-bottom:1px solid #ddd;
|
1454 |
+
margin-bottom:1.2em;
|
1455 |
+
padding-bottom:5px;
|
1456 |
+
padding-left:23px;
|
1457 |
+
background-position:0 1px;
|
1458 |
+
background-repeat:no-repeat;
|
1459 |
+
font-size:1.05em;
|
1460 |
+
color:#000;
|
1461 |
+
text-transform:uppercase;
|
1462 |
+
}
|
1463 |
+
.login-box .new-users h4 { background-image:url(../images/icon_page_white.gif); }
|
1464 |
+
.login-box .registered-users h4 { background-image:url(../images/icon_page_white_text.gif); }
|
1465 |
+
.login-box .button-set { margin:0; border:none; background:/*url(../images/login_box_form_buttons_bg.gif) repeat-x #DAE0BF*/; padding:8px 13px;float:left; }
|
1466 |
+
.login-box .content { min-height:230px; }
|
1467 |
+
|
1468 |
+
|
1469 |
+
/* Dashboard */.account-box {
|
1470 |
+
margin-bottom:20px;
|
1471 |
+
/* border:1px solid #ccc;
|
1472 |
+
border-right-color:#999;
|
1473 |
+
border-bottom-color:#999;*/
|
1474 |
+
background:/*url(../images/account_box_bg.gif) repeat-x*/;
|
1475 |
+
}
|
1476 |
+
.account-box .head { margin-bottom:10px; border-bottom:1px solid #d9dde3; }
|
1477 |
+
.account-box h4 { color:#000; font-size:1.1em; text-transform:uppercase; }
|
1478 |
+
.account-box .inner-head { margin-bottom:8px; background:url(../images/dotted_divider.gif) repeat-x 0 100%; padding-bottom:2px; text-align:right; }
|
1479 |
+
.account-box h5 { font-size:1.1em; }
|
1480 |
+
.account-box h5 a { font-weight:normal; }
|
1481 |
+
.account-box h6 { text-transform:uppercase; }
|
1482 |
+
.account-main .account-box li { padding:5px 0; }
|
1483 |
+
.account-box ol .count {
|
1484 |
+
float:left;
|
1485 |
+
margin-top:3px;
|
1486 |
+
background-color:#0a263c;
|
1487 |
+
padding:1px 3px;
|
1488 |
+
font-size:9px;
|
1489 |
+
font-weight:bold;
|
1490 |
+
color:#fff;
|
1491 |
+
line-height:1em;
|
1492 |
+
}
|
1493 |
+
.account-box ol .content { margin-left:20px; padding:0; }
|
1494 |
+
.account-box ol.recent-reviews small {
|
1495 |
+
float:left;
|
1496 |
+
margin-right:3px;
|
1497 |
+
font-weight:bold;
|
1498 |
+
}
|
1499 |
+
.account-box .product-images { width:65px; }
|
1500 |
+
.account-box .product-images img { border:1px solid #ccc; }
|
1501 |
+
.account-box .product-details { margin:0 0 10px 70px; }
|
1502 |
+
.account-box .content { padding:0; }
|
1503 |
+
.account-side .actions { border-top:1px solid #ccc; padding-top:4px; }
|
1504 |
+
.account-side .actions .form-button { float:right; }
|
1505 |
+
.edit-password { display:block; height:20px; background:url(../images/icon_lock.gif) no-repeat 0 2px; padding-left:20px; }
|
1506 |
+
.dashboard-welcome { margin-right:8em; margin-bottom:1.5em; width:600px; }
|
1507 |
+
.account-box .head h4 { padding-left:21px; min-height:17px; background-repeat:no-repeat; background-position:0 0; }
|
1508 |
+
.ad-orders .head h4 { background-image:url(../images/icon_folder_table.gif); }
|
1509 |
+
.ad-account-info .head h4 { background-image:url(../images/icon_ma_info.gif); }
|
1510 |
+
.ad-tags .head h4 { background-image:url(../images/icon_ma_tags.gif); }
|
1511 |
+
.ad-reviews .head h4 { background-image:url(../images/icon_ma_reviews.gif); }
|
1512 |
+
|
1513 |
+
|
1514 |
+
/* Account Addressbook */
|
1515 |
+
.primary-address-list h4, .address-list h4 {font-size:1.1em; color:#000; text-transform:uppercase; }
|
1516 |
+
.primary-address-list li {
|
1517 |
+
margin-bottom:10px;
|
1518 |
+
border:1px solid #ccc;
|
1519 |
+
background:/*url(../images/account_box_bg.gif) repeat-x*/ #fff;
|
1520 |
+
padding:10px 13px 8px 13px;
|
1521 |
+
}
|
1522 |
+
.primary-address-list li .head { margin:0; }
|
1523 |
+
.address-list li { margin-bottom:1em; }
|
1524 |
+
.address-list .actions { float:right; margin:0 0 10px 10px; }
|
1525 |
+
|
1526 |
+
/* Account Order History */
|
1527 |
+
.sales-order-view .checkmo-mailing-address { display:block; padding-left:20px; }
|
1528 |
+
|
1529 |
+
/* Compare Products */
|
1530 |
+
.compare-products { margin:30px 0 50px 0; }
|
1531 |
+
.compare-products table { width:auto; border:0; }
|
1532 |
+
.compare-products tr { background:#EEEDED; }
|
1533 |
+
.compare-products td { width:170px; text-align:left; }
|
1534 |
+
.compare-products tbody td { border-color:#ccc; }
|
1535 |
+
.compare-products tbody tr.first td { border-top:1px solid #D9DDE3; text-align:center; }
|
1536 |
+
.compare-products tbody td.last { border-right:1px solid #D9DDE3; }
|
1537 |
+
.compare-products tbody.attribute-cart td { background:#fffada !important; text-align:center; border-bottom:1px solid #D9DDE3; }
|
1538 |
+
.compare-products tbody td.label {
|
1539 |
+
width:auto;
|
1540 |
+
border-bottom:1px solid #9eb8cb;
|
1541 |
+
border-left:1px solid #BEBCB7;
|
1542 |
+
background:url(../images/comparison_table_label_bg.gif) repeat-y 100% 0 #d9e5ee !important;
|
1543 |
+
text-align:left;
|
1544 |
+
}
|
1545 |
+
.compare-products tbody.remove-buttons tr { background:#fff; }
|
1546 |
+
.compare-products tbody.remove-buttons td {
|
1547 |
+
border:none !important;
|
1548 |
+
padding:0;
|
1549 |
+
text-align:right;
|
1550 |
+
font-size:0;
|
1551 |
+
line-height:0;
|
1552 |
+
}
|
1553 |
+
.compare-products tbody.remove-buttons td img { float:right; }
|
1554 |
+
.compare-products tr.last td {border-bottom:1px solid #ccc!important; }
|
1555 |
+
|
1556 |
+
/* Reviews */
|
1557 |
+
.my-review-detail .product-image { float:left; width:135px; }
|
1558 |
+
.my-review-detail .product-image p { margin-bottom:0; }
|
1559 |
+
.my-review-detail .product-image p img { vertical-align:top; }
|
1560 |
+
.my-review-detail .details { float:right; width:538px; }
|
1561 |
+
.my-review-detail .ratings-list { margin-bottom:.8em; }
|
1562 |
+
.my-review-detail .ratings { line-height:1.5; }
|
1563 |
+
.my-review-detail .ratings .rating-box { float:none; margin-bottom:3px; }
|
1564 |
+
.my-review-detail .ratings .pipe { display:none; }
|
1565 |
+
.my-review-detail .ratings a { display:block; }
|
1566 |
+
|
1567 |
+
|
1568 |
+
/* Gift Messages */
|
1569 |
+
.giftmessage { padding:10px 0 0 0; }
|
1570 |
+
.giftmessage-preview-link { font-size:11px; padding-right:7px; background-repeat:no-repeat; background-position:right 5px; }
|
1571 |
+
.giftmessage-row { background-color:#f2efe9; }
|
1572 |
+
.giftmessage-content { float:left; }
|
1573 |
+
.giftmessage-close { float:right; }
|
1574 |
+
.expand { background-image:url(../images/gift-message-expand.gif); }
|
1575 |
+
.collapse { background-image:url(../images/gift-message-collapse.gif); }
|
1576 |
+
|
1577 |
+
|
1578 |
+
|
1579 |
+
/********************** Print pages */
|
1580 |
+
table.print .giftmessage-preview-link { display:none !important; }
|
1581 |
+
table.print .price-excl-tax { white-space:nowrap; }
|
1582 |
+
table.print .price-incl-tax { white-space:nowrap; }
|
1583 |
+
table.print .price-excl-tax .label,
|
1584 |
+
table.print .price-excl-tax .price,
|
1585 |
+
table.print .price-incl-tax .label,
|
1586 |
+
table.print .price-incl-tax .price { display:inline; }
|
1587 |
+
|
1588 |
+
|
1589 |
+
/********************** Pop up pages */
|
1590 |
+
.page-popup { background:#fff; padding:25px 30px; text-align:left; }
|
1591 |
+
.page-popup .print-head { margin:0 0 15px; }
|
1592 |
+
.page-popup .print-head img { float:left; }
|
1593 |
+
.page-popup .print-head address { float:left; margin-left:15px; }
|
1594 |
+
.product-gallery-nav { padding:0 5px; }
|
1595 |
+
|
1596 |
+
|
1597 |
+
|
1598 |
+
/************************************************************/
|
1599 |
+
/******************[ Mage_CSS_F Overrides]*******************/
|
1600 |
+
/************************************************************/
|
1601 |
+
.nowrap,
|
1602 |
+
.nobr { white-space:nowrap !important; }
|
1603 |
+
|
1604 |
+
/* Alignment */
|
1605 |
+
.v-top { vertical-align:top; }
|
1606 |
+
.v-middle { vertical-align:middle; }
|
1607 |
+
.v-bottom { vertical-align:bottom; }
|
1608 |
+
.a-left { text-align:left; }
|
1609 |
+
.a-center { text-align:center; }
|
1610 |
+
.a-right { text-align:right; }
|
1611 |
+
.left { float:left; }
|
1612 |
+
.right { float:right; }
|
1613 |
+
|
1614 |
+
.normal-weight { font-weight:normal; }
|
1615 |
+
.auto-width { width:auto; }
|
1616 |
+
|
1617 |
+
/* Link highlights */
|
1618 |
+
.link-cart { color:#DC6809 !important; font-weight:bold !important; }
|
1619 |
+
.link-remove { color:#646464 !important; }
|
1620 |
+
.link-print { background:url(../images/icon_printer.gif) no-repeat 0 2px; padding-left:23px; }
|
1621 |
+
.link-feed { background:url(../images/icon_feed.png) no-repeat left center; padding-left:18px; line-height:1.15; }
|
1622 |
+
|
1623 |
+
.order-access { padding-bottom:8px; }
|
1624 |
+
.order-info { border:solid 1px #D0CBC1; background:#DEE5E8; padding:4px 8px; }
|
1625 |
+
.order-info span { display:block; float:left; }
|
1626 |
+
.order-info ul { display:inline; }
|
1627 |
+
.order-info li { display:inline; padding-right:7px; padding-left:3px; }
|
1628 |
+
.order-info li.selected { font-weight:bold; background:url(../images/point-con.gif) no-repeat fixed center bottom; }
|
1629 |
+
|
1630 |
+
/* Noscript Notice */
|
1631 |
+
.noscript { border:1px solid #000; border-width:0 0 1px; background:#ffff90; font-size:12px; line-height:1.25; text-align:center; color:#2f2f2f; }
|
1632 |
+
.noscript .noscript-inner { width:950px; margin:0 auto; padding:12px 0 12px; background:url(../images/i_notice.gif) 20px 50% no-repeat; }
|
1633 |
+
.noscript p { margin:0; }
|
1634 |
+
|
1635 |
+
/* For Demo store only */
|
1636 |
+
.demo-notice { margin:0; background:#d75f07; padding:5px 10px 6px 10px; color:#fff; line-height:1em; text-align:center; }
|
1637 |
+
|
1638 |
+
/* Class: std - styles for admin-controlled content */
|
1639 |
+
.std ul,
|
1640 |
+
.std ol,
|
1641 |
+
.std dl,
|
1642 |
+
.std p,
|
1643 |
+
.std address,
|
1644 |
+
.std blockquote { margin:0 0 1em; padding:0; }
|
1645 |
+
.std ul { list-style:disc outside; padding-left:1.5em; }
|
1646 |
+
.std ol { list-style:decimal outside; padding-left:1.5em; }
|
1647 |
+
.std ul ul { list-style-type:circle; }
|
1648 |
+
.std ul ul,
|
1649 |
+
.std ol ol,
|
1650 |
+
.std ul ol,
|
1651 |
+
.std ol ul { margin:.5em 0; }
|
1652 |
+
.std dt { font-weight:bold; }
|
1653 |
+
.std dd { padding:0 0 0 1.5em; }
|
1654 |
+
.std blockquote { font-style:italic; padding:0 0 0 1.5em; }
|
1655 |
+
.std address { font-style:normal; }
|
1656 |
+
.std b,
|
1657 |
+
.std strong { font-weight:bold; }
|
1658 |
+
.std i,
|
1659 |
+
.std em { font-style:italic; }
|
1660 |
+
.std .a-top { text-align:right; }
|
1661 |
+
|
1662 |
+
|
1663 |
+
|
1664 |
+
/**
|
1665 |
+
* Magento
|
1666 |
+
*
|
1667 |
+
* NOTICE OF LICENSE
|
1668 |
+
*
|
1669 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
1670 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
1671 |
+
* It is also available through the world-wide-web at this URL:
|
1672 |
+
* http://opensource.org/licenses/afl-3.0.php
|
1673 |
+
* If you did not receive a copy of the license and are unable to
|
1674 |
+
* obtain it through the world-wide-web, please send an email
|
1675 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
1676 |
+
*
|
1677 |
+
* DISCLAIMER
|
1678 |
+
*
|
1679 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
1680 |
+
* versions in the future. If you wish to customize Magento for your
|
1681 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
1682 |
+
*
|
1683 |
+
* @category design
|
1684 |
+
* @package default_default
|
1685 |
+
* @copyright Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
1686 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
1687 |
+
*/
|
1688 |
+
|
1689 |
+
/* Reset ================================================================================= */
|
1690 |
+
* { margin:0; padding:0; }
|
1691 |
+
|
1692 |
+
//*body { background:#496778 url(../images/bkg_body.gif) 50% 0 repeat-y; font:12px/1.55 Arial, Helvetica, sans-serif; color:#2f2f2f; text-align:center; }
|
1693 |
+
|
1694 |
+
img { border:0; vertical-align:top; }
|
1695 |
+
|
1696 |
+
a { color:#1e7ec8; text-decoration:underline; }
|
1697 |
+
a:hover { text-decoration:none; }
|
1698 |
+
:focus { outline: 0; }
|
1699 |
+
*/
|
1700 |
+
/* Headings */
|
1701 |
+
body{font-family:"lucida grande","Helvetica";}
|
1702 |
+
|
1703 |
+
|
1704 |
+
h1,h2,h3,
|
1705 |
+
h4,h5,h6 {margin:0 0 5px; line-height:1.35; color:#0B2074; }
|
1706 |
+
h1 { font-size:20px; font-weight:bold; }
|
1707 |
+
h2 { font-size:18px; font-weight:normal; }
|
1708 |
+
h3 { font-size:16px; font-weight:bold; }
|
1709 |
+
h4 { font-size:14px; font-weight:bold; }
|
1710 |
+
h5 { font-size:12px; font-weight:bold; }
|
1711 |
+
h6 { font-size:11px; font-weight:bold; }
|
1712 |
+
|
1713 |
+
/* Forms */
|
1714 |
+
form { display:inline; }
|
1715 |
+
fieldset { border:0; }
|
1716 |
+
legend { display:none; }
|
1717 |
+
|
1718 |
+
/* Table */
|
1719 |
+
table { border:0; /*border-collapse:collapse;*/ border-spacing:0; empty-cells:show; font-size:100%; }
|
1720 |
+
caption,th,td { vertical-align:top; text-align:left; font-weight:normal; }
|
1721 |
+
|
1722 |
+
/* Content */
|
1723 |
+
p { margin:0 0 10px; }
|
1724 |
+
strong { font-weight:bold; }
|
1725 |
+
address { font-style:normal; line-height:1.35; }
|
1726 |
+
cite { font-style:normal; }
|
1727 |
+
q,
|
1728 |
+
blockquote { quotes:none; }
|
1729 |
+
q:before,
|
1730 |
+
q:after { content:''; }
|
1731 |
+
small,big { font-size:1em; }
|
1732 |
+
/*sup { font-size:1em; vertical-align:top; }*/
|
1733 |
+
|
1734 |
+
/* Lists */
|
1735 |
+
ul,ol { list-style:none; }
|
1736 |
+
|
1737 |
+
/* Tools */
|
1738 |
+
.hidden { display:block !important; border:0 !important; margin:0 !important; padding:0 !important; font-size:0 !important; line-height:0 !important; width:0 !important; height:0 !important; overflow:hidden !important; }
|
1739 |
+
.nobr { white-space:nowrap !important; }
|
1740 |
+
.wrap { white-space:normal !important; }
|
1741 |
+
.a-left { text-align:left !important; }
|
1742 |
+
.a-center { text-align:center !important; }
|
1743 |
+
.a-right { text-align:right !important; }
|
1744 |
+
.v-top { vertical-align:top; }
|
1745 |
+
.v-middle { vertical-align:middle; }
|
1746 |
+
.f-left,
|
1747 |
+
.left { float:left !important; }
|
1748 |
+
.f-right,
|
1749 |
+
.right { float:right !important; }
|
1750 |
+
.f-none { float:none !important; }
|
1751 |
+
.f-fix { float:left; width:100%; }
|
1752 |
+
.no-display { display:none; }
|
1753 |
+
.no-margin { margin:0 !important; }
|
1754 |
+
.no-padding { padding:0 !important; }
|
1755 |
+
.no-bg { background:none !important; }
|
1756 |
+
/* ======================================================================================= */
|
1757 |
+
|
1758 |
+
|
1759 |
+
/* Layout ================================================================================ */
|
1760 |
+
.home-wrapper {width:974px !important; }
|
1761 |
+
.page {}
|
1762 |
+
.page-print { background:#fff; padding:25px 30px; text-align:left; }
|
1763 |
+
.page-empty { background:#fff; padding:20px; text-align:left; }
|
1764 |
+
.page-popup { background:#fff; padding:25px 30px; text-align:left; }
|
1765 |
+
.main-container { background:#fbfaf6 url(../images/bkg_main1.gif) 50% 0 no-repeat; }
|
1766 |
+
.carousel-main { width:900px; margin:0 auto;padding:0px 0px 77px;text-align:left;position: absolute; overflow: hidden; min-width: 926px; min-height: 60px;max-height: 60px; top: 0px; left: 0px; }
|
1767 |
+
|
1768 |
+
/* Base Columns */
|
1769 |
+
.col-left { float:left; width:180px; padding-left:10px; padding-right:10px; background-color:white; margin-right:5px; padding-left:10px; padding-bottom:20px;padding-top:10px;}
|
1770 |
+
/*.col-main { float:left; width:685px; padding:0 0 1px; } edited*/
|
1771 |
+
.col-main { float:right; width:769px; padding:0 0 0px; padding-left:10px; padding-top:6px; padding-right:10px;padding-bottom:20px; }
|
1772 |
+
.col-right { float:right; width:195px;padding-left:10px; padding-right:10px; background-color:white; margin-right:5px; padding-left:10px; padding-bottom:20px; padding-top:10px;}
|
1773 |
+
|
1774 |
+
.homeMain{
|
1775 |
+
padding:5px; padding-top:5px;
|
1776 |
+
}
|
1777 |
+
/* 1 Column Layout */
|
1778 |
+
.col1-layout .col-main {width:996px; float:none; }
|
1779 |
+
|
1780 |
+
/* 2 Columns Layout */
|
1781 |
+
.col2-left-layout .col-main { float:right; }
|
1782 |
+
.col2-right-layout .col-main {}
|
1783 |
+
|
1784 |
+
/* 3 Columns Layout */
|
1785 |
+
.col3-layout .col-main { width:475px; margin-left:17px; }
|
1786 |
+
.col3-layout .col-wrapper { float:left; width:687px; }
|
1787 |
+
.col3-layout .col-wrapper .col-main { float:right; }
|
1788 |
+
|
1789 |
+
/* Content Columns */
|
1790 |
+
.col2-set .col-1 { float:left; width:48.5%; }
|
1791 |
+
.col2-set .col-2 { float:right; width:40%; }
|
1792 |
+
.col2-set .col-narrow { width:32%; }
|
1793 |
+
.col2-set .col-wide { width:65%; }
|
1794 |
+
|
1795 |
+
.col3-set .col-1 { float:left; width:32%; }
|
1796 |
+
.col3-set .col-2 { float:left; width:32%; margin-left:2%; }
|
1797 |
+
.col3-set .col-3 { float:right; width:32%; }
|
1798 |
+
|
1799 |
+
.col4-set .col-1 { float:left; width:23.5%; }
|
1800 |
+
.col4-set .col-2 { float:left; width:23.5%; margin:0 2%; }
|
1801 |
+
.col4-set .col-3 { float:left; width:23.5%; }
|
1802 |
+
.col4-set .col-4 { float:right; width:23.5%; }
|
1803 |
+
/* ======================================================================================= */
|
1804 |
+
.fcol {
|
1805 |
+
border-left: none;
|
1806 |
+
margin-left: 0;
|
1807 |
+
padding-left: 0;
|
1808 |
+
}
|
1809 |
+
.aboutcol {
|
1810 |
+
|
1811 |
+
}
|
1812 |
+
.vline {
|
1813 |
+
background: rgb(186,177,152);
|
1814 |
+
display: block;
|
1815 |
+
float: left;
|
1816 |
+
min-height: 250px;
|
1817 |
+
margin: 0 30px;
|
1818 |
+
width: 1px;}
|
1819 |
+
|
1820 |
+
.aboutcol {
|
1821 |
+
display: block;
|
1822 |
+
float: left;
|
1823 |
+
margin-top: -5px;
|
1824 |
+
width: 450px;
|
1825 |
+
}
|
1826 |
+
.aboutcol p, .article p, .article-detail p {
|
1827 |
+
font-size: 13px;
|
1828 |
+
line-height: 1.6em;}
|
1829 |
+
.aboutcol h2, .fcol h2 {
|
1830 |
+
color: rgb(233,66,53);
|
1831 |
+
font-size: 24px;
|
1832 |
+
margin-bottom: 0;
|
1833 |
+
}
|
1834 |
+
|
1835 |
+
/* Global Styles ========================================================================= */
|
1836 |
+
/* Form Elements */
|
1837 |
+
input,select,textarea,button { font:12px/15px Arial, Helvetica, sans-serif; vertical-align:middle; color:#2f2f2f; }
|
1838 |
+
input.input-text,select,textarea { background:#fff; border:1px solid #b6b6b6; }
|
1839 |
+
input.input-text,textarea { padding:2px; }
|
1840 |
+
select { padding:1px; }
|
1841 |
+
select option { padding-right:10px; }
|
1842 |
+
select.multiselect option { border-bottom:1px solid #b6b6b6; padding:2px 5px; }
|
1843 |
+
select.multiselect option:last-child { border-bottom:0; }
|
1844 |
+
textarea { overflow:auto; }
|
1845 |
+
input.radio { margin-right:3px; }
|
1846 |
+
input.checkbox { margin-right:3px; }
|
1847 |
+
input.qty { width:2.5em !important; }
|
1848 |
+
button.button::-moz-focus-inner { padding:0; border:0; } /* FF Fix */
|
1849 |
+
button.button { -webkit-border-fit:lines; } /* <- Safari & Google Chrome Fix */
|
1850 |
+
button.button { overflow:visible; width:auto; border:0; padding:0; margin:0; background:transparent; cursor:pointer; }
|
1851 |
+
button.button span { display:block; height:19px; border:1px solid #de5400; background:#f18200; padding:0 8px; font:bold 12px/19px Arial, Helvetica, sans-serif; text-align:center; white-space:nowrap; color:#fff; }
|
1852 |
+
button.button span span { border:0; padding:0; }
|
1853 |
+
button.disabled span { border-color:#bbb !important; background:#bbb !important; }
|
1854 |
+
|
1855 |
+
button.btn-checkout span { height:40px; border:0; background:#5B613B; padding:0 0 0 9px; font:bold 15px/40px Arial, Helvetica, sans-serif; color:#fff; }
|
1856 |
+
button.btn-checkout span span { background-position:100% 0; padding:0 25px 0 16px; }
|
1857 |
+
button.btn-checkout.no-checkout span { background-position:0 100%; color:#b8baba; }
|
1858 |
+
button.btn-checkout.no-checkout span span { background-position:100% 100%; }
|
1859 |
+
|
1860 |
+
p.control input.checkbox,
|
1861 |
+
p.control input.radio { margin-right:6px; }
|
1862 |
+
/* Form Highlight */
|
1863 |
+
input.input-text:focus,select:focus,textarea:focus { background-color:#edf7fd; }
|
1864 |
+
/*.highlight { background:#efefef; }*/
|
1865 |
+
|
1866 |
+
/* Form lists */
|
1867 |
+
/* Grouped fields */
|
1868 |
+
/*.form-list { width:535px; margin:0 auto; overflow:hidden; }*/
|
1869 |
+
.form-list li { margin:0 0 8px; }
|
1870 |
+
.form-list label { float:left; color:#666; font-weight:bold; position:relative; z-index:0; }
|
1871 |
+
.form-list label.required {}
|
1872 |
+
.form-list label.required em { float:right; font-style:normal; color:#eb340a; position:absolute; top:0; right:-8px; }
|
1873 |
+
.form-list li.control label { float:none; }
|
1874 |
+
.form-list li.control input.radio,
|
1875 |
+
.form-list li.control input.checkbox { margin-right:6px; }
|
1876 |
+
.form-list li.control .input-box { clear:none; display:inline; width:auto; }
|
1877 |
+
/*.form-list li.fields { margin-right:-15px; }*/
|
1878 |
+
.form-list .input-box { display:block; clear:both; width:260px; }
|
1879 |
+
.form-list .field { float:left; width:275px; }
|
1880 |
+
.form-list input.input-text { width:225px; }
|
1881 |
+
.form-list textarea { width:254px; height:10em; }
|
1882 |
+
.form-list select { width:260px; }
|
1883 |
+
.form-list li.wide .input-box { width:535px; }
|
1884 |
+
.form-list li.wide input.input-text { width:529px; }
|
1885 |
+
.form-list li.wide textarea { width:529px; }
|
1886 |
+
.form-list li.wide select { width:535px; }
|
1887 |
+
.form-list li.additional-row { border-top:1px solid #ccc; margin-top:10px; padding-top:7px; }
|
1888 |
+
.form-list li.additional-row .btn-remove { float:right; margin:5px 0 0; }
|
1889 |
+
.form-list .input-range input.input-text { width:74px; }
|
1890 |
+
/* Customer */
|
1891 |
+
.form-list .customer-name-prefix .input-box,
|
1892 |
+
.form-list .customer-name-suffix .input-box,
|
1893 |
+
.form-list .customer-name-prefix-suffix .input-box,
|
1894 |
+
.form-list .customer-name-prefix-middlename .input-box,
|
1895 |
+
.form-list .customer-name-middlename-suffix .input-box,
|
1896 |
+
.form-list .customer-name-prefix-middlename-suffix .input-box { width:auto; }
|
1897 |
+
|
1898 |
+
.form-list .name-prefix { width:65px; }
|
1899 |
+
.form-list .name-prefix select { width:55px; }
|
1900 |
+
.form-list .name-prefix input.input-text { width:49px; }
|
1901 |
+
|
1902 |
+
.form-list .name-suffix { width:65px; }
|
1903 |
+
.form-list .name-suffix select { width:55px; }
|
1904 |
+
.form-list .name-suffix input.input-text { width:49px; }
|
1905 |
+
|
1906 |
+
.form-list .name-middlename { width:70px; }
|
1907 |
+
.form-list .name-middlename input.input-text { width:49px; }
|
1908 |
+
|
1909 |
+
.form-list .customer-name-prefix-middlename-suffix .name-firstname,
|
1910 |
+
.form-list .customer-name-prefix-middlename .name-firstname { width:140px; }
|
1911 |
+
.form-list .customer-name-prefix-middlename-suffix .name-firstname input.input-text,
|
1912 |
+
.form-list .customer-name-prefix-middlename .name-firstname input.input-text { width:124px; }
|
1913 |
+
.form-list .customer-name-prefix-middlename-suffix .name-lastname { width:205px; }
|
1914 |
+
.form-list .customer-name-prefix-middlename-suffix .name-lastname input.input-text { width:189px; }
|
1915 |
+
|
1916 |
+
.form-list .customer-name-prefix-suffix .name-firstname { width:210px; }
|
1917 |
+
.form-list .customer-name-prefix-suffix .name-lastname { width:205px; }
|
1918 |
+
.form-list .customer-name-prefix-suffix .name-firstname input.input-text,
|
1919 |
+
.form-list .customer-name-prefix-suffix .name-lastname input.input-text { width:189px; }
|
1920 |
+
|
1921 |
+
.form-list .customer-name-prefix-suffix .name-firstname { width:210px; }
|
1922 |
+
.form-list .customer-name-prefix-suffix .name-lastname { width:205px; }
|
1923 |
+
.form-list .customer-name-prefix-suffix .name-firstname input.input-text,
|
1924 |
+
.form-list .customer-name-prefix-suffix .name-lastname input.input-text { width:189px; }
|
1925 |
+
|
1926 |
+
.form-list .customer-name-prefix .name-firstname,
|
1927 |
+
.form-list .customer-name-middlename .name-firstname { width:210px; }
|
1928 |
+
|
1929 |
+
.form-list .customer-name-suffix .name-lastname,
|
1930 |
+
.form-list .customer-name-middlename .name-firstname,
|
1931 |
+
.form-list .customer-name-middlename-suffix .name-firstname,
|
1932 |
+
.form-list .customer-name-middlename-suffix .name-lastname { width:205px; }
|
1933 |
+
|
1934 |
+
.form-list .customer-name-prefix .name-firstname input.input-text,
|
1935 |
+
.form-list .customer-name-suffix .name-lastname input.input-text,
|
1936 |
+
.form-list .customer-name-middlename .name-firstname input.input-text,
|
1937 |
+
.form-list .customer-name-middlename-suffix .name-firstname input.input-text,
|
1938 |
+
.form-list .customer-name-middlename-suffix .name-lastname input.input-text { width:189px; }
|
1939 |
+
|
1940 |
+
.form-list .customer-dob .dob-month,
|
1941 |
+
.form-list .customer-dob .dob-day,
|
1942 |
+
.form-list .customer-dob .dob-year { float:left; width:85px; }
|
1943 |
+
.form-list .customer-dob input.input-text { display:block; width:74px; }
|
1944 |
+
.form-list .customer-dob label { font-size:10px; font-weight:normal; color:#888; }
|
1945 |
+
.form-list .customer-dob .dob-day,
|
1946 |
+
.form-list .customer-dob .dob-month { width:60px; }
|
1947 |
+
.form-list .customer-dob .dob-day input.input-text,
|
1948 |
+
.form-list .customer-dob .dob-month input.input-text { width:46px; }
|
1949 |
+
.form-list .customer-dob .dob-year { width:140px; }
|
1950 |
+
.form-list .customer-dob .dob-year input.input-text { width:134px; }
|
1951 |
+
|
1952 |
+
/* Independent fields */
|
1953 |
+
/*.form-list li { margin:0 0 8px; }
|
1954 |
+
.form-list li.fields { margin:0; }
|
1955 |
+
.form-list .field { display:block; margin:0 0 8px; }
|
1956 |
+
.form-list li.control {}
|
1957 |
+
.form-list label { float:left; width:150px; padding:2px 10px 0 0; text-align:right; }
|
1958 |
+
.form-list label.required { font-weight:bold; }
|
1959 |
+
.form-list label.required em { font-variant:normal; color:#eb340a; margin-right:3px; }
|
1960 |
+
.form-list .input-box { float:left; width:260px; }
|
1961 |
+
.form-list input.input-text,
|
1962 |
+
.form-list textarea { width:254px; }
|
1963 |
+
.form-list select { width:260px; }
|
1964 |
+
.form-list li.additional-row { border-top:1px solid #ddd; margin-top:10px; }
|
1965 |
+
.form-list li.additional-row .btn-remove { float:right; margin:5px 5px 0 0; }
|
1966 |
+
.form-list .input-range input.input-text { width:96px; }*/
|
1967 |
+
/* Customer */
|
1968 |
+
/*.form-list .customer-dob .dob-month,
|
1969 |
+
.form-list .customer-dob .dob-day,
|
1970 |
+
.form-list .customer-dob .dob-year { float:left; width:85px; }
|
1971 |
+
.form-list .customer-dob input.input-text { display:block; width:74px; }
|
1972 |
+
.form-list .customer-dob label { font-size:11px; font-weight:normal; color:#777; text-align:left; }
|
1973 |
+
.form-list .customer-dob .dob-day,
|
1974 |
+
.form-list .customer-dob .dob-month { width:60px; }
|
1975 |
+
.form-list .customer-dob .dob-day input.input-text,
|
1976 |
+
.form-list .customer-dob .dob-month input.input-text { width:46px; }
|
1977 |
+
.form-list .customer-dob .dob-year { width:140px; }
|
1978 |
+
.form-list .customer-dob .dob-year input.input-text { width:134px; }*/
|
1979 |
+
|
1980 |
+
.buttons-set { clear:both; margin:4em 0 0; padding:8px 0 0; border-top:1px solid #e4e4e4; text-align:right; }
|
1981 |
+
.buttons-set p.required { margin:0 0 10px; }
|
1982 |
+
.buttons-set .back-link { float:left; margin:0; }
|
1983 |
+
.buttons-set button.button { float:right; margin-left:5px; }
|
1984 |
+
|
1985 |
+
.buttons-set-order { margin:10px 0 0; }
|
1986 |
+
.buttons-set-order .please-wait { padding:12px 7px 0 0; }
|
1987 |
+
|
1988 |
+
.fieldset { border:1px solid #bbafa0; background:#fbfaf6; padding:22px 25px 12px 33px; margin:28px 0; }
|
1989 |
+
.fieldset .legend { float:left; font-weight:bold; font-size:13px; border:1px solid #f19900; background:#f9f3e3; color:#e76200; margin:-33px 0 0 -10px; padding:0 8px; position:relative; }
|
1990 |
+
|
1991 |
+
/* Form Validation */
|
1992 |
+
.validation-advice { clear:both; min-height:13px; margin:3px 0 0; padding-left:17px; font-size:11px; font-weight:bold; line-height:13px; background:url(../images/validation_advice_bg.gif) 2px 0 no-repeat; color:#eb340a; }
|
1993 |
+
.validation-failed { border:1px dashed #eb340a !important; background:#faebe7 !important; }
|
1994 |
+
.validation-passed {}
|
1995 |
+
p.required { font-size:11px; text-align:right; color:#EB340A; }
|
1996 |
+
/* Expiration date and CVV number validation fix */
|
1997 |
+
.v-fix { float:left; }
|
1998 |
+
.v-fix .validation-advice { display:block; width:12em; margin-right:-12em; position:relative; }
|
1999 |
+
|
2000 |
+
/* Global Messages */
|
2001 |
+
.success { color:#3d6611; font-weight:bold; }
|
2002 |
+
.error { color:#df280a; font-weight:bold; }
|
2003 |
+
.notice { color:#e26703; }
|
2004 |
+
|
2005 |
+
.messages,
|
2006 |
+
.messages ul { list-style:none !important; }
|
2007 |
+
.messages { width:100%; overflow:hidden; margin-bottom:10px; }
|
2008 |
+
.messages li { margin:0 0 0px !important; }
|
2009 |
+
.messages li li { margin:0 0 3px !important; }
|
2010 |
+
.error-msg,
|
2011 |
+
.success-msg,
|
2012 |
+
.note-msg,
|
2013 |
+
.notice-msg { border-style:solid !important; border-width:1px !important; background-position:10px 9px !important; background-repeat:no-repeat !important; min-height:24px !important; padding:8px 8px 8px 32px !important; font-size:11px !important; font-weight:bold !important; }
|
2014 |
+
.error-msg { border-color:#f16048; background-color:#faebe7; background-image:url(../images/i_msg-error.gif); color:#df280a; }
|
2015 |
+
.success-msg { border-color:#446423; background-color:#eff5ea; background-image:url(../images/i_msg-success.gif); color:#3d6611; }
|
2016 |
+
.note-msg,
|
2017 |
+
.notice-msg { border-color:#fcd344; background-color:#fafaec; background-image:url(../images/i_msg-note.gif); color:#3d6611; }
|
2018 |
+
|
2019 |
+
/* BreadCrumbs */
|
2020 |
+
.breadcrumbs {text-align:left; font-size:13px; line-height:1.25; margin-left:15px; }
|
2021 |
+
.breadcrumbs li { color:white; display:inline; }
|
2022 |
+
.breadcrumbs li strong { font-weight:bold; }
|
2023 |
+
#breadcrumbs{
|
2024 |
+
padding-bottom:10px;margin-left:10px; margin-right:10px; width:902px !important;
|
2025 |
+
}
|
2026 |
+
|
2027 |
+
/* Page Heading */
|
2028 |
+
.page-title { width:100%; overflow:hidden; border-bottom:1px solid #ccc; margin:0 0 25px; }
|
2029 |
+
.page-title h1,
|
2030 |
+
.page-title h2 { margin:0; font-size:20px; color:#0a263c; }
|
2031 |
+
.page-title .separator { margin:0 3px; }
|
2032 |
+
.page-title .link-rss { float:right; margin:7px 0 0; }
|
2033 |
+
.title-buttons { text-align:right; }
|
2034 |
+
.title-buttons h1,
|
2035 |
+
.title-buttons h2,
|
2036 |
+
.title-buttons h3,
|
2037 |
+
.title-buttons h4,
|
2038 |
+
.title-buttons h5,
|
2039 |
+
.title-buttons h6 { float:left; }
|
2040 |
+
|
2041 |
+
.subtitle { clear:both; padding:15px 0 0; font-size:15px; font-weight:bold; margin:0 0 6px; color:#e25203; }
|
2042 |
+
|
2043 |
+
/* Pager */
|
2044 |
+
.pager { font-size:11px; background:#fff url(../images/bkg_toolbar.gif) 0 100% repeat-x; padding:4px 8px; border-top:1px solid #e2e2e2; text-align:center; }
|
2045 |
+
.pager .amount { float:left; margin:0; }
|
2046 |
+
.pager .limiter { float:right; }
|
2047 |
+
.pager .limiter label { vertical-align:middle; }
|
2048 |
+
.pager .limiter select { padding:0; margin:0 0 1px; vertical-align:middle; }
|
2049 |
+
.pager .pages { margin:0 140px; }
|
2050 |
+
.pager .pages ol { display:inline; }
|
2051 |
+
.pager .pages li { display:inline; margin:0 2px; }
|
2052 |
+
.pager .pages .current {}
|
2053 |
+
|
2054 |
+
/* Sorter */
|
2055 |
+
.sorter { font-size:11px; background:#fff url(../images/bkg_toolbar.gif) 0 100% repeat-x; padding:3px 8px; border-top:1px solid #e2e2e2; }
|
2056 |
+
.sorter .view-mode { float:left; margin:0; }
|
2057 |
+
.sorter .sort-by { float:right; padding-right:36px; }
|
2058 |
+
.sorter .sort-by label { vertical-align:middle; }
|
2059 |
+
.sorter .sort-by select { padding:0; margin:0 0 1px; vertical-align:middle; }
|
2060 |
+
.sorter .link-feed {}
|
2061 |
+
|
2062 |
+
/* Toolbar */
|
2063 |
+
.toolbar {}
|
2064 |
+
.toolbar .pager { padding:3px 8px; border-bottom:1px solid #fff; }
|
2065 |
+
.toolbar .sorter { border-bottom:1px solid #fff; }
|
2066 |
+
.toolbar-bottom {}
|
2067 |
+
|
2068 |
+
/* Data Table */
|
2069 |
+
.data-table { border:1px solid #bebcb7; }
|
2070 |
+
.data-table .odd { background:#f8f7f5 }
|
2071 |
+
.data-table .even { background:#eeeded; }
|
2072 |
+
/*.data-table tr.odd:hover,
|
2073 |
+
.data-table tr.even:hover { background:#ebf1f6; }*/
|
2074 |
+
.data-table td.last,
|
2075 |
+
.data-table th.last { border-right:0; }
|
2076 |
+
.data-table tr.last th,
|
2077 |
+
.data-table tr.last td { border-bottom:0 !important; }
|
2078 |
+
.data-table th { padding:3px 8px; font-weight:bold; }
|
2079 |
+
.data-table td { padding:3px 8px; }
|
2080 |
+
|
2081 |
+
.data-table thead th { font-weight:bold; border-right:1px solid #c2d3e0; padding:2px 8px; color:#0a263c; white-space:nowrap; vertical-align:middle; }
|
2082 |
+
.data-table thead th.wrap { white-space:normal; }
|
2083 |
+
.data-table thead th a,
|
2084 |
+
.data-table thead th a:hover { color:#fff; }
|
2085 |
+
.data-table thead th { background:url(../images/bkg_th.gif) repeat-x 0 100% #d9e5ee; }
|
2086 |
+
.data-table thead th .tax-flag { font-size:11px; white-space:nowrap; }
|
2087 |
+
|
2088 |
+
.data-table tfoot { border-bottom:1px solid #d9dde3; }
|
2089 |
+
.data-table tfoot tr.first { background:url(../images/bkg_tfoot.gif) 0 0 repeat-x; }
|
2090 |
+
.data-table tfoot tr { background-color:#dee5e8 !important; }
|
2091 |
+
.data-table tfoot td { padding-top:1px; padding-bottom:1px; border-bottom:0; border-right:1px solid #d9dde3; }
|
2092 |
+
.data-table tfoot strong { font-size:16px; }
|
2093 |
+
|
2094 |
+
.data-table tbody th,
|
2095 |
+
.data-table tbody td { border-bottom:1px solid #d9dde3; border-right:1px solid #d9dde3; }
|
2096 |
+
/* Bundle products tables */
|
2097 |
+
.data-table tbody.odd tr { background:#f8f7f5 !important; }
|
2098 |
+
.data-table tbody.even tr { background:#f6f6f6 !important; }
|
2099 |
+
.data-table tbody.odd tr td,
|
2100 |
+
.data-table tbody.even tr td { border-bottom:0; }
|
2101 |
+
.data-table tbody.odd tr.border td,
|
2102 |
+
.data-table tbody.even tr.border td { border-bottom:1px solid #d9dde3; }
|
2103 |
+
|
2104 |
+
.data-table tbody td .option-label { font-weight:bold; font-style:italic; }
|
2105 |
+
.data-table tbody td .option-value { padding-left:10px; }
|
2106 |
+
|
2107 |
+
/* Tax Details Row */
|
2108 |
+
tr.tax-total { cursor:pointer; }
|
2109 |
+
tr.tax-total td {}
|
2110 |
+
tr.tax-total .tax-collapse { float:right; text-align:right; padding-left:20px; background:url(../images/bkg_collapse.gif) 0 5px no-repeat; cursor:pointer; }
|
2111 |
+
tr.show-details .tax-collapse { background-position:0 -52px; }
|
2112 |
+
tr.show-details td {}
|
2113 |
+
tr.tax-details td { font-size:11px; background-color:#dae1e4; color:#626465; }
|
2114 |
+
tr.tax-details-first td { border-top:1px solid #d2d8db; }
|
2115 |
+
|
2116 |
+
/* Shopping cart tax info */
|
2117 |
+
.cart-tax-info { display:block; }
|
2118 |
+
.cart-tax-info,
|
2119 |
+
.cart-tax-info .cart-price { padding-right:20px; }
|
2120 |
+
.cart-tax-total { display:block; padding-right:20px; background:url(../images/bkg_collapse.gif) 100% 5px no-repeat; cursor:pointer; }
|
2121 |
+
.cart-tax-info .price,
|
2122 |
+
.cart-tax-total .price { display:inline !important; font-weight:normal !important; }
|
2123 |
+
.cart-tax-total-expanded { background-position:100% -52px; }
|
2124 |
+
|
2125 |
+
/* Class: std - styles for admin-controlled content */
|
2126 |
+
.std .subtitle { padding:0; }
|
2127 |
+
.std ol.ol { list-style:decimal outside; padding-left:1.5em; }
|
2128 |
+
.std ul.disc { margin:0 0 10px; }
|
2129 |
+
.std ul.disc { list-style:disc outside; padding-left:18px; }
|
2130 |
+
.std dl dt { font-weight:bold; }
|
2131 |
+
.std dl dd { margin:0 0 10px; }
|
2132 |
+
/*.std ul,
|
2133 |
+
.std ol,
|
2134 |
+
.std dl,
|
2135 |
+
.std p,
|
2136 |
+
.std address,
|
2137 |
+
.std blockquote { margin:0 0 1em; padding:0; }
|
2138 |
+
.std ul { list-style:disc outside; padding-left:1.5em; }
|
2139 |
+
.std ol { list-style:decimal outside; padding-left:1.5em; }
|
2140 |
+
.std ul ul { list-style-type:circle; }
|
2141 |
+
.std ul ul,
|
2142 |
+
.std ol ol,
|
2143 |
+
.std ul ol,
|
2144 |
+
.std ol ul { margin:.5em 0; }
|
2145 |
+
.std dt { font-weight:bold; }
|
2146 |
+
.std dd { padding:0 0 0 1.5em; }
|
2147 |
+
.std blockquote { font-style:italic; padding:0 0 0 1.5em; }
|
2148 |
+
.std address { font-style:normal; }
|
2149 |
+
.std b,
|
2150 |
+
.std strong { font-weight:bold; }
|
2151 |
+
.std i,
|
2152 |
+
.std em { font-style:italic; }*/
|
2153 |
+
|
2154 |
+
/* Misc */
|
2155 |
+
.links li { display:inline; }
|
2156 |
+
.links li.first { padding-left:0 !important; }
|
2157 |
+
.links li.last { background:none !important; padding-right:0 !important; }
|
2158 |
+
|
2159 |
+
.link-cart { color:#dc6809 !important; font-weight:bold; }
|
2160 |
+
.link-wishlist { color:#dc6809 !important; font-weight:bold; }
|
2161 |
+
.link-reorder { font-weight:bold; color:#dc6809 !important; }
|
2162 |
+
.link-compare { font-weight:bold; }
|
2163 |
+
.link-print { /*background:url(../images/i_print.gif) 0 2px no-repeat; padding:2px 0 2px 25px;*/ font-weight:bold; color:#dc6809; }
|
2164 |
+
.link-rss { background:url(../images/i_rss.gif) 0 2px no-repeat; padding-left:18px; line-height:14px; white-space:nowrap; }
|
2165 |
+
.btn-remove { display:block; width:11px; height:11px; font-size:0; line-height:0; background:url(../images/btn_remove.gif) 0 0 no-repeat; text-indent:-999em; overflow:hidden; }
|
2166 |
+
.btn-remove2 { display:block; width:16px; height:16px; font-size:0; line-height:0; background:url(../images/btn_trash.gif) 0 0 no-repeat; text-indent:-999em; overflow:hidden; }
|
2167 |
+
|
2168 |
+
.separator { margin:0 3px; }
|
2169 |
+
|
2170 |
+
.divider { clear:both; display:block; font-size:0; line-height:0; height:1px; margin:10px 0; background:url(../images/bkg_divider1.gif) 0 50% repeat-x; text-indent:-999em; overflow:hidden; }
|
2171 |
+
|
2172 |
+
/* Noscript Notice */
|
2173 |
+
.noscript { border:1px solid #ddd; border-width:0 0 1px; background:#ffff90; font-size:12px; line-height:1.25; text-align:center; color:#2f2f2f; }
|
2174 |
+
.noscript .noscript-inner { width:950px; margin:0 auto; padding:12px 0 12px; background:url(../images/i_notice.gif) 20px 50% no-repeat; }
|
2175 |
+
.noscript p { margin:0; }
|
2176 |
+
|
2177 |
+
/* Demo Notice */
|
2178 |
+
.demo-notice { margin:0; padding:6px 10px; background:#d75f07; font-size:12px; line-height:1.15; text-align:center; color:#fff; }
|
2179 |
+
/* ======================================================================================= */
|
2180 |
+
|
2181 |
+
|
2182 |
+
/* Header ================================================================================ */
|
2183 |
+
.logo { float:left; }
|
2184 |
+
.header-container { border-top:5px solid #0d2131; border-bottom:1px solid #415966; background:url(../images/bkg_header.jpg) 50% 0 repeat; }
|
2185 |
+
.header { width:100%; margin:0 auto; padding-top:10px; text-align:right; position:relative; z-index:10; margin-bottom:-6px;}
|
2186 |
+
.header .logo { float:left; margin:0px; text-decoration:none !important; }
|
2187 |
+
.header .logo strong { position:absolute; top:-999em; left:-999em; width:0; height:0; font-size:0; line-height:0; text-indent:-999em; overflow:hidden; }
|
2188 |
+
.header h1.logo { margin:0; }
|
2189 |
+
.header .quick-access { float:right; width:600px; padding:28px 10px 0 0; }
|
2190 |
+
.header .welcome-msg { margin:0; color:#fff; text-align:right; }
|
2191 |
+
.header .form-search { position:absolute; top:0; right:29px; width:315px; height:30px; background:url(../images/bkg_form-search.gif) 0 0 no-repeat; padding:1px 0 0 16px; }
|
2192 |
+
.header .form-search label { float:left; width:24px; height:21px; text-align:left; text-indent:-999em; overflow:hidden; }
|
2193 |
+
.header .form-search input.input-text { float:left; border-color:#5c7989; width:209px; margin-right:4px; }
|
2194 |
+
.header .form-search button.button { float:left; }
|
2195 |
+
.header .form-search button.button span { border:0; height:21px; background:url(../images/btn_search.gif) 0 0 no-repeat; padding:0 0 0 3px; font:bold 11px/21px Tahoma, Verdana, Arial, sans-serif; }
|
2196 |
+
.header .form-search button.button span span { background-position:100% 0; padding:0 6px 0 3px; }
|
2197 |
+
.header .form-search .search-autocomplete { z-index:999; left:40px !important; top:22px !important; }
|
2198 |
+
.header .form-search .search-autocomplete ul { border:1px solid #5c7989; background-color:#f9f5f0; }
|
2199 |
+
.header .form-search .search-autocomplete li { text-align:left; border-bottom:1px solid #f4eee7; padding:2px 8px 1px 8px; cursor:pointer; }
|
2200 |
+
.header .form-search .search-autocomplete li .amount { float:right; font-weight:bold; }
|
2201 |
+
.header .form-search .search-autocomplete li.odd { background-color:#fffefb; }
|
2202 |
+
.header .form-search .search-autocomplete li.selected { background-color:#f7e8dd; }
|
2203 |
+
.header .form-language { clear:both; padding:5px 0 0; text-align:right; }
|
2204 |
+
.header .form-language label { font-weight:bold; padding-right:5px; color:#a7c6dd; vertical-align:middle; }
|
2205 |
+
.header .form-language select { padding:0; }
|
2206 |
+
.header .form-language select.flags option { background-position:4px 50%; background-repeat:no-repeat; padding-left:25px; }
|
2207 |
+
.header .links { float:right; margin:0 0 6px; }
|
2208 |
+
.header .links li { float:left; font-size:11px; background:url(../images/bkg_pipe1.gif) 100% 60% no-repeat; padding:0 8px 0 7px; }
|
2209 |
+
.header .links a { color:#ebbc58; }
|
2210 |
+
.header-container .top-container { clear:both; padding:5px 10px 0 12px; text-align:right; }
|
2211 |
+
.header-container .top-container a { font-size:11px; color:#ebbc58; }
|
2212 |
+
|
2213 |
+
/********** < Navigation */
|
2214 |
+
.nav-containercontainer { background:#0a263d url(../images/bkg_nav0.jpg) 50% 0 repeat-y; }
|
2215 |
+
#nav { margin:0 auto; padding:0 ;font-size:13px; }
|
2216 |
+
|
2217 |
+
/* ALL Levels */ /* Style consistent throughout all nav levels */
|
2218 |
+
#nav li { position:relative; text-align:left; }
|
2219 |
+
#nav li.over { z-index:999; }
|
2220 |
+
#nav a,
|
2221 |
+
#nav a:hover { display:block; line-height:1.3em; text-decoration:none; }
|
2222 |
+
#nav span { display:block; cursor:pointer; white-space:nowrap; }
|
2223 |
+
#nav li ul span {white-space:normal; }
|
2224 |
+
|
2225 |
+
/* 0 Level */
|
2226 |
+
#nav li { float:left; }
|
2227 |
+
#nav li.active a { color:white; }
|
2228 |
+
#nav a {font-size:12px;font-family:"Lucida grande"; float:left; color:white; padding-left:14px; }
|
2229 |
+
#nav li.over a,
|
2230 |
+
#nav a:hover { color:#d3d3d3; }
|
2231 |
+
|
2232 |
+
/* 1st Level */
|
2233 |
+
#nav ul li,
|
2234 |
+
#nav ul li.active { float:none; margin:0; padding-bottom:1px; background:#ecf3f6 url(../images/bkg_nav1.gif) 0 100% repeat-x; }
|
2235 |
+
/*#nav ul li.over { background:#d5e4eb url(../images/bkg_nav1.gif) repeat-x 0 100%; }*/
|
2236 |
+
#nav ul li.last { background:#ecf3f6; padding-bottom:0; }
|
2237 |
+
|
2238 |
+
#nav ul a,
|
2239 |
+
#nav ul a:hover { float:none; padding:0; background:none; }
|
2240 |
+
#nav ul li a { font-weight:normal !important; }
|
2241 |
+
|
2242 |
+
/* 2nd Level */
|
2243 |
+
#nav ul { position:absolute; width:15em; top:16px; left:-10000px; border:1px solid #899ba5; }
|
2244 |
+
|
2245 |
+
/* Show menu */
|
2246 |
+
#nav li.over > ul { left:0; }
|
2247 |
+
#nav li.over > ul li.over > ul { left:100px; }
|
2248 |
+
#nav li.over ul ul { left:-10000px; }
|
2249 |
+
|
2250 |
+
#nav ul li a { background:white; }
|
2251 |
+
#nav ul li a:hover { background:#d5e4eb; }
|
2252 |
+
#nav ul li a,
|
2253 |
+
#nav ul li a:hover { color:#2f2f2f !important; }
|
2254 |
+
#nav ul span, #nav ul li.last li span { padding:3px 15px 4px 15px; }
|
2255 |
+
|
2256 |
+
/* 3rd+ Level */
|
2257 |
+
#nav ul ul { top:5px; }
|
2258 |
+
/********** Navigation > */
|
2259 |
+
/* ======================================================================================= */
|
2260 |
+
|
2261 |
+
|
2262 |
+
/* Sidebar =============================================================================== */
|
2263 |
+
.block { border:1px solid #c4c1bc; margin:0 0 15px; }
|
2264 |
+
.block .block-title { background:url(../images/bkg_block-title.gif) 0 0 repeat-x; border-bottom:1px solid #ddd; padding:2px 9px; }
|
2265 |
+
.block .block-title strong { display:block; font:bold 12px/16px Arial, Helvetica, sans-serif; min-height:16px; padding:1px 0 1px; text-transform:uppercase; color:#e26703; }
|
2266 |
+
.block .block-title strong span {}
|
2267 |
+
.block .block-title a { text-decoration:none !important; }
|
2268 |
+
.block .block-subtitle { margin:0; padding:5px 9px; font-size:1em; font-weight:bold; color:#0a263c; }
|
2269 |
+
.block .block-content { background:#f8f7f5; }
|
2270 |
+
.block .block-content li.item { padding:7px 9px; }
|
2271 |
+
.block .btn-remove { float:right; margin:1px 0 2px 5px; }
|
2272 |
+
.block .actions { background:#dee5e8 url(../images/bkg_block-actions.gif) 0 0 repeat-x; padding:6px 9px; text-align:right; }
|
2273 |
+
.block .actions a { float:left; }
|
2274 |
+
.block .actions button.button { float:right; }
|
2275 |
+
.block .empty { margin:0; padding:5px 9px; }
|
2276 |
+
|
2277 |
+
.block li.odd { background-color:#f4f3f3; }
|
2278 |
+
.block li.even { background-color:#fafafa; }
|
2279 |
+
|
2280 |
+
/* Mini Blocks */
|
2281 |
+
.block-cart,
|
2282 |
+
.block-wishlist,
|
2283 |
+
.block-subscribe,
|
2284 |
+
.block-compare,
|
2285 |
+
.block-reorder,
|
2286 |
+
.block-poll,
|
2287 |
+
.block-viewed,
|
2288 |
+
.block-compared,
|
2289 |
+
.block-related,
|
2290 |
+
.block-tags,
|
2291 |
+
.block-login { font-size:11px; line-height:1.25; }
|
2292 |
+
.block-cart .block-title strong,
|
2293 |
+
.block-wishlist .block-title strong,
|
2294 |
+
.block-subscribe .block-title strong,
|
2295 |
+
.block-compare .block-title strong,
|
2296 |
+
.block-reorder .block-title strong,
|
2297 |
+
.block-poll .block-title strong,
|
2298 |
+
.block-viewed .block-title strong,
|
2299 |
+
.block-compared .block-title strong,
|
2300 |
+
.block-related .block-title strong,
|
2301 |
+
.block-tags .block-title strong,
|
2302 |
+
.block-login .block-title strong { background-position:0 0; background-repeat:no-repeat; padding-left:21px; }
|
2303 |
+
|
2304 |
+
/* Mini Products List */
|
2305 |
+
.mini-products-list .product-image { float:left; width:50px; border:1px solid #a9a9a9; }
|
2306 |
+
.mini-products-list .product-details { margin-left:60px; }
|
2307 |
+
|
2308 |
+
/* Block: Account */
|
2309 |
+
.block-account { border-color:#bbb; }
|
2310 |
+
.block-account .block-title { background:#fc9d36 url(../images/bkg_block-title-account.gif) 0 100% repeat-x; border:0; padding:3px 10px; }
|
2311 |
+
.block-account .block-title strong { font-size:13px; color:#fff; }
|
2312 |
+
.block-account .block-content { background:#fbfaf6; padding:7px 10px 7px; }
|
2313 |
+
.block-account .block-content li a { display:block; border-bottom:1px solid #ddd; padding:3px 0; color:#5f5d5c; text-decoration:none !important; }
|
2314 |
+
.block-account .block-content li a:hover { color:#ea7900; }
|
2315 |
+
.block-account .block-content li.last a { border-bottom:0; }
|
2316 |
+
.block-account .block-content li.current { border-bottom:1px solid #ddd; padding:3px 0; color:#ea7900; }
|
2317 |
+
.block-account .block-content li.current.last { border-bottom:0; }
|
2318 |
+
|
2319 |
+
/* Block: Currency Switcher */
|
2320 |
+
.block-currency { border:0; background:url(../images/bkg_block-currency.gif) 0 0 no-repeat; padding:7px 12px 10px; height:51px; }
|
2321 |
+
.block-currency .block-title { background:none; border:0; padding:0; margin:0 0 5px; }
|
2322 |
+
.block-currency .block-title strong { font:bold 13px/21px Arial, Helvetica, sans-serif; background:url(../images/i_block-currency.gif) 0 50% no-repeat; padding:0 0 0 21px; text-transform:none; color:#fff; }
|
2323 |
+
.block-currency .block-content { background:none; padding:0; }
|
2324 |
+
.block-currency .block-content select { width:100%; padding:0; }
|
2325 |
+
|
2326 |
+
/* Block: Layered Navigation */
|
2327 |
+
.block-layered-nav { border:0; }
|
2328 |
+
.block-layered-nav .block-title { border:0; padding:0; height:24px; background:url(../images/bkg_block-layered-title.gif) 0 0 no-repeat; text-indent:-999em; overflow:hidden; }
|
2329 |
+
.block-layered-nav .block-subtitle { line-height:1.35; background:#d5e8ff url(../images/bkg_block-layered1.gif) 0 50% repeat; padding:3px 9px; border:1px solid #b9ccdd; border-width:1px 0; text-transform:uppercase; color:#1f5070; }
|
2330 |
+
.block-layered-nav .block-content { border:1px solid #a0b3c3; background:#e7f1f4; }
|
2331 |
+
.block-layered-nav dt { background:url(../images/bkg_block-layered-dt.gif) 9px 11px no-repeat; padding:7px 10px 0 28px; font-weight:bold; text-transform:uppercase; }
|
2332 |
+
.block-layered-nav dd { padding:0 12px 12px; background:url(../images/bkg_block-layered-dd.gif) 0 100% repeat-x; }
|
2333 |
+
.block-layered-nav dd.last { background:none; }
|
2334 |
+
.block-layered-nav .currently li { background:#fff url(../images/bkg_block-layered-li.gif) 0 100% repeat-x; padding:4px 6px 4px 10px; }
|
2335 |
+
.block-layered-nav .currently .label { font-weight:bold; padding-left:18px; background:url(../images/bkg_block-layered-label.gif) 0 3px no-repeat; text-transform:uppercase; }
|
2336 |
+
.block-layered-nav .currently .btn-remove { margin:3px 0 0; }
|
2337 |
+
.block-layered-nav .actions { font-size:11px; padding:4px 9px; background:#cad6e4; border:1px solid #dee5e8; border-width:1px 0; text-align:right; }
|
2338 |
+
.block-layered-nav .actions a { float:none; }
|
2339 |
+
|
2340 |
+
/* Block: Cart */
|
2341 |
+
.block-cart .block-title { /*border-bottom:0;*/ }
|
2342 |
+
.block-cart .block-title strong { background-image:url(../images/i_block-cart.gif); }
|
2343 |
+
.block-cart .summary { background:#fff; padding:2px 8px 8px; margin:-1px 0 0; position:relative; z-index:1; }
|
2344 |
+
.block-cart .amount { margin:0; }
|
2345 |
+
.block-cart .amount a { font-weight:bold; }
|
2346 |
+
.block-cart .subtotal { margin:5px 0 0; padding:2px 0; background:#fbebd9; text-align:center; }
|
2347 |
+
.block-cart .subtotal .price { font-weight:bold; }
|
2348 |
+
.block-cart .actions { border-bottom:1px solid #c2c2c2; }
|
2349 |
+
|
2350 |
+
/* Block: Wishlist */
|
2351 |
+
.block-wishlist .block-title strong { background-image:url(../images/i_block-wishlist.gif); }
|
2352 |
+
.block-wishlist .actions { text-align:right; }
|
2353 |
+
.block-wishlist .actions a { float:none; }
|
2354 |
+
|
2355 |
+
/* Block: Related */
|
2356 |
+
.block-related .block-title strong { background-image:url(../images/i_block-related.gif); background-position:0 1px; }
|
2357 |
+
.block-related input.checkbox { float:left; }
|
2358 |
+
.block-related .product { margin-left:20px; }
|
2359 |
+
|
2360 |
+
/* Block: Compare Products */
|
2361 |
+
.block-compare .block-title strong { background-image:url(../images/i_block-list.gif); background-position:0 1px; }
|
2362 |
+
.block-compare button.button span { border-color:#406a83; background:#618499; }
|
2363 |
+
.page-popup .link-print { background:url(../images/i_print.gif) 0 2px no-repeat; padding:2px 0 2px 25px; font-weight:bold; color:#1e7ec8; }
|
2364 |
+
.compare-table { border:0; }
|
2365 |
+
.compare-table thead tr.first th,
|
2366 |
+
.compare-table thead tr.first td { border:0; background:none; padding:0; font-size:0; line-height:0; }
|
2367 |
+
.compare-table .btn-remove { float:right; background-image:url(../images/btn_remove2.gif); width:72px; height:15px; }
|
2368 |
+
.compare-table tbody th { background:#d9e5ee url(../images/bkg_th-v.gif) 100% 0 repeat-y; }
|
2369 |
+
.compare-table tbody th,
|
2370 |
+
.compare-table tbody td { padding:10px; border:0; border-top:1px solid #ccc; border-left:1px solid #ccc; }
|
2371 |
+
.compare-table tbody td.last { border-right:1px solid #ccc; }
|
2372 |
+
.compare-table tbody tr.last th,
|
2373 |
+
.compare-table tbody tr.last td { border-bottom:1px solid #ccc !important; }
|
2374 |
+
.compare-table tr.add-to-row td { background:#fffada; text-align:center; }
|
2375 |
+
.compare-table tr.first td { text-align:center; }
|
2376 |
+
.compare-table tr.first td .product-name { font-size:13px; font-weight:bold; margin:0 0 5px; color:#203548; }
|
2377 |
+
.compare-table tr.first td .product-name a { color:#203548; }
|
2378 |
+
.compare-table tr.first td .ratings { width:69px; margin:0 auto; }
|
2379 |
+
.compare-table tr.first td p,
|
2380 |
+
.compare-table tr.add-to-row td p { margin:0; }
|
2381 |
+
|
2382 |
+
/* Block: Recently Viewed */
|
2383 |
+
.block-viewed .block-title strong { background-image:url(../images/i_block-viewed.gif); }
|
2384 |
+
|
2385 |
+
/* Block: Recently Compared */
|
2386 |
+
.block-compared .block-title strong { background-image:url(../images/i_block-list.gif); background-position:0 1px; }
|
2387 |
+
|
2388 |
+
/* Block: Poll */
|
2389 |
+
.block-poll .block-title strong { background-image:url(../images/i_block-poll.gif); }
|
2390 |
+
.block-poll .block-subtitle { font-size:12px; }
|
2391 |
+
.block-poll label { color:#777; font-weight:bold; }
|
2392 |
+
.block-poll input.radio { float:left; margin:1px -18px 0 0; }
|
2393 |
+
.block-poll .label { display:block; margin-left:18px; }
|
2394 |
+
.block-poll li { padding:3px 9px; }
|
2395 |
+
.block-poll .actions { margin:5px 0 0; }
|
2396 |
+
.block-poll button.button span { border-color:#406a83; background:#618499; }
|
2397 |
+
.block-poll .answer { font-weight:bold; }
|
2398 |
+
.block-poll .votes { float:right; margin-left:10px; }
|
2399 |
+
|
2400 |
+
/* Block: Tags */
|
2401 |
+
.block-tags .block-title strong { background-image:url(../images/i_block-tags.gif); }
|
2402 |
+
.block-tags .block-content ul { font-size:12px; padding:10px; }
|
2403 |
+
.block-tags .block-content li { display:inline; padding-right:4px; }
|
2404 |
+
.block-tags .block-content a { color:#1b2d3b; }
|
2405 |
+
.block-tags .actions { text-align:right; }
|
2406 |
+
.block-tags .actions a { float:none; }
|
2407 |
+
|
2408 |
+
/* Block: Subscribe */
|
2409 |
+
.block-subscribe .block-content { padding:5px 10px; }
|
2410 |
+
.block-subscribe .block-title strong { background-image:url(../images/i_block-subscribe.gif); }
|
2411 |
+
.block-subscribe label { font-weight:bold; color:#666; }
|
2412 |
+
.block-subscribe input.input-text { display:block; width:167px; margin:3px 0; }
|
2413 |
+
.block-subscribe .actions { background:none; padding:0; margin:3px 0 0; text-align:left; }
|
2414 |
+
.block-subscribe .actions button.button { float:none; }
|
2415 |
+
.block-subscribe .actions button.button span { border-color:#406a83; background:#618499; }
|
2416 |
+
|
2417 |
+
/* Block: Reorder */
|
2418 |
+
.block-reorder .block-title strong { background-image:url(../images/i_block-list.gif); }
|
2419 |
+
.block-reorder input.checkbox { float:left; margin:2px -20px 0 0; }
|
2420 |
+
.block-reorder .product-name { margin-left:20px; }
|
2421 |
+
.block-reorder .validation-advice { margin:3px 9px 7px; }
|
2422 |
+
|
2423 |
+
/* Block: Banner */
|
2424 |
+
.block-banner { border:0; }
|
2425 |
+
.block-banner .block-content { padding:0; text-align:center; }
|
2426 |
+
|
2427 |
+
/* Block: Login */
|
2428 |
+
.block-login .block-title strong { background-image:url(../images/i_ma-info.gif); }
|
2429 |
+
.block-login .block-content { padding:5px 10px; }
|
2430 |
+
.block-login label { font-weight:bold; color:#666; }
|
2431 |
+
.block-login input.input-text { display:block; width:167px; margin:3px 0; }
|
2432 |
+
.block-login .actions { background:none; padding:0; margin:3px 0 0; }
|
2433 |
+
.block-login .actions button.button span { border-color:#406a83; background:#618499; }
|
2434 |
+
/* ======================================================================================= */
|
2435 |
+
|
2436 |
+
|
2437 |
+
/* Category Page ========================================================================= */
|
2438 |
+
.category-title { border:0; margin:0 0 7px; }
|
2439 |
+
.category-image { width:100%; overflow:hidden; margin:0 0 10px; text-align:center; }
|
2440 |
+
.category-image img {}
|
2441 |
+
.category-description { margin:0 0 10px; }
|
2442 |
+
.category-products {}
|
2443 |
+
|
2444 |
+
/* View Type: Grid */
|
2445 |
+
.products-grid { border-bottom:1px solid #d9ddd3; background:url(../images/bkg_grid.gif) 0 0 repeat; position:relative; }
|
2446 |
+
.products-grid.last { border-bottom:0; }
|
2447 |
+
.products-grid li.item { float:left; width:138px; padding:12px 10px 80px; }
|
2448 |
+
.products-grid .product-image { display:block; width:135px; height:135px; margin:0 0 10px; }
|
2449 |
+
.products-grid .product-name { /*min-height:2.7em;*/ margin:0 0 5px; font-weight:bold; font-size:13px; color:#203548; }
|
2450 |
+
.products-grid .product-name a { color:#203548; }
|
2451 |
+
.products-grid .price-box { margin:5px 0; }
|
2452 |
+
.products-grid .availability { line-height:21px; }
|
2453 |
+
.products-grid .actions { position:absolute; bottom:12px; }
|
2454 |
+
.col2-left-layout .products-grid,
|
2455 |
+
.col2-right-layout .products-grid { width:632px; margin:0 auto; }
|
2456 |
+
.col1-layout .products-grid { width:790px; margin:0 auto; }
|
2457 |
+
|
2458 |
+
/* View Type: List */
|
2459 |
+
.products-list li.item { border-bottom:1px solid #d9ddd3; padding:12px 10px; }
|
2460 |
+
.products-list li.item.last { border-bottom:0; }
|
2461 |
+
.products-list .product-image { float:left; width:135px; height:135px; margin:0 0 10px; }
|
2462 |
+
.products-list .product-shop { margin-left:150px; }
|
2463 |
+
.products-list .product-name { margin:0 0 5px; font-weight:bold; font-size:13px; color:#203548; }
|
2464 |
+
.products-list .product-name a { color:#203548; }
|
2465 |
+
.products-list .price-box { float:left; margin:3px 13px 5px 0; }
|
2466 |
+
.products-list .availability { float:left; margin:3px 0 0; }
|
2467 |
+
.products-list .desc { clear:both; padding:6px 0 0; margin:0 0 15px; line-height:1.35; }
|
2468 |
+
.products-list .desc .link-more { font-size:11px; }
|
2469 |
+
.products-list .add-to-links { clear:both; }
|
2470 |
+
.products-list .add-to-links li { display:inline; }
|
2471 |
+
.products-list .add-to-links .separator { display:inline; margin:0 2px; }
|
2472 |
+
/* ======================================================================================= */
|
2473 |
+
|
2474 |
+
|
2475 |
+
/* Product View ========================================================================== */
|
2476 |
+
/* Rating */
|
2477 |
+
.no-rating { margin:0; }
|
2478 |
+
|
2479 |
+
.ratings { font-size:11px; line-height:1.25; margin:7px 0; }
|
2480 |
+
.ratings strong { float:left; margin:1px 3px 0 0; }
|
2481 |
+
.ratings .rating-links { margin:0; }
|
2482 |
+
.ratings .rating-links .separator { margin:0 2px; }
|
2483 |
+
.ratings dt {}
|
2484 |
+
.ratings dd {}
|
2485 |
+
.rating-box { width:69px; height:13px; font-size:0; line-height:0; background:url(../images/bkg_rating.gif) 0 0 repeat-x; text-indent:-999em; overflow:hidden; }
|
2486 |
+
.rating-box .rating { float:left; height:13px; background:url(../images/bkg_rating.gif) 0 100% repeat-x; }
|
2487 |
+
.ratings .rating-box { float:left; margin-right:3px; }
|
2488 |
+
.ratings .amount {}
|
2489 |
+
|
2490 |
+
.ratings-table th,
|
2491 |
+
.ratings-table td { font-size:11px; line-height:1.15; padding:3px 0; }
|
2492 |
+
.ratings-table th { font-weight:bold; padding-right:8px; }
|
2493 |
+
|
2494 |
+
/* Availability */
|
2495 |
+
.availability { margin:0; }
|
2496 |
+
.availability span { font-weight:bold; }
|
2497 |
+
.availability.in-stock span {}
|
2498 |
+
.availability.out-of-stock span { color:#d83820; }
|
2499 |
+
.product-view .product-shop .availability { font-size:11px; }
|
2500 |
+
.product-view .product-shop .availability span { font-weight:normal; }
|
2501 |
+
|
2502 |
+
/* Email to a Friend */
|
2503 |
+
.email-friend { margin:0; }
|
2504 |
+
|
2505 |
+
/* Alerts */
|
2506 |
+
.alert-price { margin:0; font-size:11px; }
|
2507 |
+
.alert-stock { margin:0; font-size:11px; }
|
2508 |
+
|
2509 |
+
/********** < Product Prices */
|
2510 |
+
.price { white-space:nowrap !important; }
|
2511 |
+
|
2512 |
+
.price-box { margin:5px 0; }
|
2513 |
+
.price-box .price { font-weight:bold; color:#c76200; }
|
2514 |
+
|
2515 |
+
/* Regular price */
|
2516 |
+
.regular-price { color:#c76200; }
|
2517 |
+
.regular-price .price { font-weight:bold; font-size:13px; color:#c76200; }
|
2518 |
+
.block .regular-price,
|
2519 |
+
.block .regular-price .price { color:#2f2f2f; }
|
2520 |
+
|
2521 |
+
/* Old price */
|
2522 |
+
.old-price { margin:0; }
|
2523 |
+
.old-price .price-label { white-space:nowrap; color:#999; }
|
2524 |
+
.old-price .price { font-weight:bold; color:#c76200; text-decoration:line-through; }
|
2525 |
+
|
2526 |
+
/* Special price */
|
2527 |
+
.special-price { margin:0; padding:3px 0; }
|
2528 |
+
.special-price .price-label { font-size:13px; font-weight:bold; white-space:nowrap; color:#cd5033; }
|
2529 |
+
.special-price .price { font-size:13px; font-weight:bold; color:#c76200; }
|
2530 |
+
|
2531 |
+
/* Minimal price (as low as) */
|
2532 |
+
.minimal-price { margin:0; }
|
2533 |
+
.minimal-price .price-label { font-weight:bold; white-space:nowrap; }
|
2534 |
+
|
2535 |
+
.minimal-price-link { display:block; }
|
2536 |
+
.minimal-price-link .label {color:#1e7ec8;}
|
2537 |
+
.minimal-price-link .price { font-weight:normal; color:#1e7ec8; }
|
2538 |
+
|
2539 |
+
/* Excluding tax */
|
2540 |
+
.price-excluding-tax { display:block; color:#999; }
|
2541 |
+
.price-excluding-tax .label { white-space:nowrap; color:#999; }
|
2542 |
+
.price-excluding-tax .price { font-size:13px; font-weight:normal; color:#c76200; }
|
2543 |
+
|
2544 |
+
/* Including tax */
|
2545 |
+
.price-including-tax { display:block; color:#999; }
|
2546 |
+
.price-including-tax .label { white-space:nowrap; color:#999; }
|
2547 |
+
.price-including-tax .price { font-size:13px; font-weight:bold; color:#c76200; }
|
2548 |
+
|
2549 |
+
/* FTP */
|
2550 |
+
.weee { display:block; font-size:11px; color:#444; }
|
2551 |
+
.weee .price { font-size:11px; font-weight:normal; }
|
2552 |
+
|
2553 |
+
/* Excl tax (for order tables) */
|
2554 |
+
.price-excl-tax { display:block; }
|
2555 |
+
.price-excl-tax .label { display:block; white-space:nowrap; }
|
2556 |
+
.price-excl-tax .price { display:block; }
|
2557 |
+
|
2558 |
+
/* Incl tax (for order tables) */
|
2559 |
+
.price-incl-tax { display:block; }
|
2560 |
+
.price-incl-tax .label { display:block; white-space:nowrap; }
|
2561 |
+
.price-incl-tax .price { display:block; font-weight:bold; }
|
2562 |
+
|
2563 |
+
/* Price range */
|
2564 |
+
.price-from { margin:0; }
|
2565 |
+
.price-from .price-label { font-weight:bold; white-space:nowrap; }
|
2566 |
+
|
2567 |
+
.price-to { margin:0; }
|
2568 |
+
.price-to .price-label { font-weight:bold; white-space:nowrap; }
|
2569 |
+
|
2570 |
+
/* Price notice next to the options */
|
2571 |
+
.price-notice { padding-left:10px; color:#999; }
|
2572 |
+
.price-notice .price { font-weight:bold; color:#2f2f2f; }
|
2573 |
+
|
2574 |
+
/* Price as configured */
|
2575 |
+
.price-as-configured { margin:0; }
|
2576 |
+
.price-as-configured .price-label { font-weight:bold; white-space:nowrap; }
|
2577 |
+
|
2578 |
+
.price-box-bundle { padding:0 0 10px 0; }
|
2579 |
+
.price-box-bundle .price-box { margin:0 !important; padding:0 !important; }
|
2580 |
+
.price-box-bundle .price { color:#555; }
|
2581 |
+
/********** Product Prices > */
|
2582 |
+
|
2583 |
+
/* Tier Prices */
|
2584 |
+
.tier-prices { margin:10px 0; padding:10px; background-color:#f4f7f7; border:1px solid #dadddd; }
|
2585 |
+
.tier-prices li { line-height:1.4; background:url(../images/i_tier.gif) no-repeat 0 3px; padding:2px 0 2px 10px; color:#424242; }
|
2586 |
+
.tier-prices .benefit { font-style:italic; font-weight:bold; color:#2f2f2f; }
|
2587 |
+
.tier-prices .price { font-weight:bold; color:#2f2f2f; }
|
2588 |
+
|
2589 |
+
.tier-prices-grouped li { padding:2px 0; color:#e26703; }
|
2590 |
+
.tier-prices-grouped li .price { font-weight:bold; }
|
2591 |
+
|
2592 |
+
/* Add to Links */
|
2593 |
+
.add-to-links { font-size:11px; margin:5px 0 0; }
|
2594 |
+
.add-to-links .separator { display:none; }
|
2595 |
+
|
2596 |
+
/* Add to Cart */
|
2597 |
+
.add-to-cart label { float:left; margin-right:5px; font-weight:bold; color:#666; }
|
2598 |
+
.add-to-cart .qty { float:left; margin-right:5px; }
|
2599 |
+
.add-to-cart button.button { float:left; }
|
2600 |
+
|
2601 |
+
/* Product Images */
|
2602 |
+
.product-view .product-img-box { float:left; width:267px; }
|
2603 |
+
.col3-layout .product-view .product-img-box { float:none; margin:0 auto; }
|
2604 |
+
.product-view .product-img-box .product-image { margin:0 0 13px; }
|
2605 |
+
.product-view .product-img-box .product-image-zoom { position:relative; width:265px; height:265px; overflow:hidden; z-index:9; }
|
2606 |
+
.product-view .product-img-box .product-image-zoom img { position:absolute; left:0; top:0; cursor:move; }
|
2607 |
+
.product-view .product-img-box .zoom-notice { font-size:11px; margin:0 0 5px; text-align:center; }
|
2608 |
+
.product-view .product-img-box .zoom { position:relative; z-index:9; height:18px; margin:0 auto 13px; padding:0 28px; background:url(../images/slider_bg.gif) 50% 50% no-repeat; cursor:pointer; }
|
2609 |
+
.product-view .product-img-box .zoom.disabled { -moz-opacity:.3; -webkit-opacity:.3; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";/*IE8*/ opacity:.3; }
|
2610 |
+
.product-view .product-img-box .zoom #track { position:relative; height:18px; }
|
2611 |
+
.product-view .product-img-box .zoom #handle { position:absolute; left:0; top:-1px; width:9px; height:22px; background:url(../images/magnifier_handle.gif) 0 0 no-repeat; }
|
2612 |
+
.product-view .product-img-box .zoom .btn-zoom-out { position:absolute; left:2px; top:0; }
|
2613 |
+
.product-view .product-img-box .zoom .btn-zoom-in { position:absolute; right:2px; top:0; }
|
2614 |
+
.product-view .product-img-box .more-views h2 { font-size:11px; border-bottom:1px solid #ccc; margin:0 0 8px; text-transform:uppercase; }
|
2615 |
+
.product-view .product-img-box .more-views ul { margin-left:-9px }
|
2616 |
+
.product-view .product-img-box .more-views li { float:left; margin:0 0 8px 9px; }
|
2617 |
+
.product-view .product-img-box .more-views li a { float:left; width:56px; height:56px; border:2px solid #ddd; overflow:hidden; }
|
2618 |
+
|
2619 |
+
.product-image-popup { margin:0 auto; }
|
2620 |
+
.product-image-popup .nav { font-weight:bold; text-align:center; }
|
2621 |
+
.product-image-popup .image { display:block; margin:10px 0; }
|
2622 |
+
.product-image-popup .image-label { font-size:13px; font-weight:bold; margin:0 0 10px; color:#2f2f2f; }
|
2623 |
+
|
2624 |
+
/* Product Shop */
|
2625 |
+
.product-view .product-shop { float:right; width:330px; }
|
2626 |
+
.col1-layout .product-view .product-shop { float:right; width:545px; }
|
2627 |
+
.col3-layout .product-view .product-shop { float:none; width:auto; }
|
2628 |
+
.product-view .product-shop .product-name { margin:0 0 5px; }
|
2629 |
+
.product-view .product-shop .product-name h1 { margin:0; font:bold 15px/1.35 Arial, Helvetica, sans-serif; }
|
2630 |
+
.product-view .product-shop .availability { margin:10px 0; }
|
2631 |
+
.product-view .product-shop .short-description { margin:10px 0; background:url(../images/bkg_divider1.gif) 0 0 repeat-x; padding:10px 0 0; }
|
2632 |
+
.product-view .product-shop .price-box { margin:10px 0; }
|
2633 |
+
.product-view .product-shop .add-to-links { margin:0; }
|
2634 |
+
.product-view .product-shop .add-to-links { font-size:12px; text-align:right; }
|
2635 |
+
.product-view .product-shop .add-to-links li,
|
2636 |
+
.product-view .product-shop .add-to-links li .separator { display:inline; }
|
2637 |
+
.product-view .product-shop .add-to-links a { color:#1E7EC8 !important; font-weight:normal !important; }
|
2638 |
+
|
2639 |
+
/* Product Options */
|
2640 |
+
.product-options { margin:20px 0 0; padding:10px 15px 20px; background-color:#f6f6f6; border:1px solid #e4e4e4; }
|
2641 |
+
.product-options dt { padding:10px 0 0; font-weight:normal; }
|
2642 |
+
.product-options dt label { font-weight:bold; color:#2f2f2f; }
|
2643 |
+
.product-options dt span.required { color:#eb340a; }
|
2644 |
+
.product-options dt .qty-holder { float:right; margin-right:15px; }
|
2645 |
+
.product-options dt .qty-holder label { vertical-align:middle; }
|
2646 |
+
.product-options dt .qty-disabled { background:none; border:0; padding:3px; color:#2f2f2f; }
|
2647 |
+
.product-options dd { padding:5px 10px 15px; margin:0 0 5px; border-bottom:1px solid #e4e4e4; }
|
2648 |
+
.product-options dl.last dd.last { border-bottom:0; padding-bottom:5px; margin-bottom:0; }
|
2649 |
+
.product-options dd input.input-text { width:98%; }
|
2650 |
+
.product-options dd input.datetime-picker { width:150px; }
|
2651 |
+
.product-options dd textarea { width:98%; height:8em; }
|
2652 |
+
.product-options dd select { width:99%; }
|
2653 |
+
.product-options dd .multiselect option { border-bottom:1px dotted #d9e5ee; padding:2px 4px; }
|
2654 |
+
.product-options ul.options-list { margin-right:5px; }
|
2655 |
+
.product-options ul.options-list li { line-height:1.5; padding:2px 0; }
|
2656 |
+
.product-options ul.options-list input.radio { float:left; margin-top:3px; }
|
2657 |
+
.product-options ul.options-list input.checkbox { float:left; margin-top:3px; }
|
2658 |
+
.product-options ul.options-list .label { display:block; margin-left:18px; }
|
2659 |
+
.product-options ul.options-list label { font-weight:normal; }
|
2660 |
+
.product-options ul.validation-failed { padding:0 7px; }
|
2661 |
+
.product-options p.note { margin:0; font-size:11px; }
|
2662 |
+
.product-options p.required { margin-bottom:0; padding:15px 0 0; }
|
2663 |
+
|
2664 |
+
.product-options-bottom { background-color:#fffada; padding:15px 20px; border:1px solid #e4e4e4; border-top:0; }
|
2665 |
+
.product-options-bottom .tier-prices { margin:0; padding:0 0 10px; border:0; background:0; }
|
2666 |
+
.product-options-bottom .tier-prices li { background:0; padding:2px 0; color:#e26703; }
|
2667 |
+
.product-options-bottom .tier-prices .price,
|
2668 |
+
.product-options-bottom .tier-prices .benefit { color:#e26703; }
|
2669 |
+
.product-options-bottom .price-box { float:left; margin:0; padding:0; }
|
2670 |
+
.product-options-bottom .price-label { float:left; padding-right:5px; }
|
2671 |
+
.product-options-bottom .price-tax { float:left; }
|
2672 |
+
.product-options-bottom .add-to-cart { float:right; }
|
2673 |
+
.product-shop .product-options-bottom { margin:0 0 10px; }
|
2674 |
+
.product-shop .product-options-bottom .price-box { float:none; margin:0 0 5px; }
|
2675 |
+
.product-shop .product-options-bottom .price-label { float:none; padding-right:0; }
|
2676 |
+
.product-shop .product-options-bottom .price-tax { float:none; }
|
2677 |
+
.product-shop .product-options-bottom .add-to-cart-box { clear:both; float:left; padding-top:12px; }
|
2678 |
+
|
2679 |
+
/* Grouped Product */
|
2680 |
+
.product-view .grouped-items-table .price-box { margin:0; padding:0; }
|
2681 |
+
|
2682 |
+
/* Block: Description */
|
2683 |
+
.product-view .box-description {}
|
2684 |
+
|
2685 |
+
/* Block: Additional */
|
2686 |
+
.product-view .box-additional .data-table th,
|
2687 |
+
.product-view .box-additional .data-table td { line-height:1.25; }
|
2688 |
+
|
2689 |
+
/* Block: Upsell */
|
2690 |
+
.product-view .box-up-sell h2 { border-bottom:0; padding:0; margin:0 0 8px; }
|
2691 |
+
.product-view .box-up-sell .products-grid { width:100%; border:1px solid #e5dcc3; }
|
2692 |
+
.product-view .box-up-sell .products-grid td { width:25%; background:#f6f2e7; border-right:1px solid #e5dcc3; border-bottom:1px solid #e5dcc3; padding:15px 10px 12px; line-height:1.6em; }
|
2693 |
+
.product-view .box-up-sell .products-grid tr.last td { border-bottom:0; }
|
2694 |
+
.product-view .box-up-sell .products-grid td.last { border-right:0; }
|
2695 |
+
.product-view .box-up-sell .products-grid td img { border:1px solid #e5dcc3; }
|
2696 |
+
.product-view .box-up-sell .products-grid .product-image { text-align:center; }
|
2697 |
+
.product-view .box-up-sell .products-grid td.empty { border-right:0; background:#f1ecdb; }
|
2698 |
+
.product-view .box-up-sell .products-grid .ratings .rating-box { float:none; display:block; margin:0 0 3px; }
|
2699 |
+
|
2700 |
+
/* Block: Tags */
|
2701 |
+
.product-view .box-tags { margin:0; }
|
2702 |
+
.product-view .box-tags h3 { font-size:13px; }
|
2703 |
+
.product-view .box-tags .product-tags { display:block; margin:0 0 15px; }
|
2704 |
+
.product-view .box-tags .product-tags li { display:inline; background:url(../images/bkg_pipe3.gif) 100% 4px no-repeat; padding:0 7px 0 4px; }
|
2705 |
+
.product-view .box-tags .product-tags li.first { padding-left:0; }
|
2706 |
+
.product-view .box-tags .product-tags li.last { background:none; padding-right:0; }
|
2707 |
+
.product-view .box-tags .form-add label { display:block; font-size:13px; font-weight:bold; margin:0 0 5px; color:#0a263c;}
|
2708 |
+
.product-view .box-tags .form-add .input-box { float:left; width:305px; margin:0 5px 0 0; background:url(../images/i_tag_add.gif) 0 2px no-repeat; padding:0 0 0 23px; }
|
2709 |
+
.product-view .box-tags .form-add input.input-text { width:299px; }
|
2710 |
+
.product-view .box-tags .form-add button.button span { border-color:#406a83; background:#618499; }
|
2711 |
+
.product-view .box-tags .note { margin:3px 0 0; padding:0 0 0 23px; font-size:11px; }
|
2712 |
+
|
2713 |
+
/* Block: Reviews */
|
2714 |
+
.product-view .box-reviews dl { margin:15px 0; }
|
2715 |
+
.product-view .box-reviews dt a,
|
2716 |
+
.product-view .box-reviews dt span { font-weight:bold; }
|
2717 |
+
.product-view .box-reviews dd { margin:0 0 15px; }
|
2718 |
+
.product-view .box-reviews dd small { font-style:italic; }
|
2719 |
+
.product-view .box-reviews .form-add { margin:15px 0 0; }
|
2720 |
+
.product-view .box-reviews .form-add h3 { font-size:13px; font-weight:normal; }
|
2721 |
+
.product-view .box-reviews .form-add h3 span { font-weight:bold; }
|
2722 |
+
.product-view .box-reviews .form-add h4 { font-size:12px; }
|
2723 |
+
.product-view .box-reviews .form-add .data-table td { text-align:center; }
|
2724 |
+
.product-view .box-reviews .form-add .form-list { margin:15px 0 0; }
|
2725 |
+
.product-view .box-reviews .form-add .form-list .input-box { width:360px; }
|
2726 |
+
.product-view .box-reviews .form-add .form-list input.input-text,
|
2727 |
+
.product-view .box-reviews .form-add .form-list textarea { width:354px; }
|
2728 |
+
|
2729 |
+
/* Send a Friend */
|
2730 |
+
.send-friend .form-list { width:615px; overflow:hidden; }
|
2731 |
+
.send-friend .form-list li { margin-right:-15px; }
|
2732 |
+
.send-friend .form-list li p { margin:0 15px 0 0; }
|
2733 |
+
.send-friend .form-list .field { width:315px; }
|
2734 |
+
.send-friend .form-list .input-box { width:300px; }
|
2735 |
+
.send-friend .form-list input.input-text,
|
2736 |
+
.send-friend .form-list textarea { width:294px; }
|
2737 |
+
.send-friend .form-list li.wide .input-box { width:612px; }
|
2738 |
+
.send-friend .form-list li.wide textarea { width:609px; }
|
2739 |
+
.send-friend .buttons-set .limit { float:right; margin:0 7px 0 0; font-size:11px; line-height:21px; }
|
2740 |
+
/* ======================================================================================= */
|
2741 |
+
|
2742 |
+
|
2743 |
+
/* Content Styles ================================================================= */
|
2744 |
+
.product-name { margin:0; font-size:1em; font-weight:normal; }
|
2745 |
+
.product-name a { color:#1e7ec8; }
|
2746 |
+
|
2747 |
+
/* Product Tags */
|
2748 |
+
.tags-list { display:block; font-size:13px; border:1px solid #c1c4bc; background:#f8f7f5; padding:10px; }
|
2749 |
+
.tags-list li { display:inline !important; margin:0 4px 0 0; }
|
2750 |
+
.tags-list li a { color:#1b2d3b; }
|
2751 |
+
|
2752 |
+
/* Advanced Search */
|
2753 |
+
.advanced-search .form-list label { width:160px; padding-right:10px; }
|
2754 |
+
.advanced-search .form-list .input-box,
|
2755 |
+
.advanced-search .form-list .input-range { float:left; clear:none; }
|
2756 |
+
.advanced-search-amount { margin:0 0 10px; }
|
2757 |
+
.advanced-search-summary { margin:10px 0; border:1px solid #e9d7c9; background:#fff6f1; padding:10px; }
|
2758 |
+
.advanced-search-summary ul { float:left; width:49%; }
|
2759 |
+
.advanced-search-summary strong { color:#E17C24; padding-left:15px; background:url(../images/i_search_criteria.gif) 0 3px no-repeat; }
|
2760 |
+
.advanced-search-summary p { clear:both; font-weight:bold; margin:0; }
|
2761 |
+
|
2762 |
+
/* CMS Home Page */
|
2763 |
+
.cms-home .subtitle {}
|
2764 |
+
.cms-index-index .subtitle {}
|
2765 |
+
|
2766 |
+
/* Sitemap */
|
2767 |
+
.page-sitemap .links { text-align:right; margin:0 8px -22px 0; }
|
2768 |
+
.page-sitemap .links a { text-decoration:none; position:relative; }
|
2769 |
+
.page-sitemap .links a:hover { text-decoration:underline; }
|
2770 |
+
.page-sitemap .sitemap { margin:12px; }
|
2771 |
+
.page-sitemap .sitemap a { color:#1b2d3b; }
|
2772 |
+
.page-sitemap .sitemap li { margin:3px 0; }
|
2773 |
+
.page-sitemap .sitemap li.level-0 { margin:10px 0 0; font-weight:bold; }
|
2774 |
+
.page-sitemap .sitemap li.level-0 a { color:#1e7ec8; }
|
2775 |
+
|
2776 |
+
/* RSS */
|
2777 |
+
.rss-title h1 { background:url(../images/i_rss-big.png) 0 4px no-repeat; padding-left:27px; }
|
2778 |
+
.rss-table .link-rss { display:block; line-height:1.55; background-position:0 4px; }
|
2779 |
+
/* ======================================================================================= */
|
2780 |
+
|
2781 |
+
|
2782 |
+
/* Shopping Cart ========================================================================= */
|
2783 |
+
.cart .page-title { border-bottom:0; margin:0 0 12px; }
|
2784 |
+
.cart .page-title h1 { margin:10px 0 0; }
|
2785 |
+
|
2786 |
+
/* Checkout Types */
|
2787 |
+
.cart .page-title .checkout-types li { margin:0 0 5px; }
|
2788 |
+
|
2789 |
+
/* Shopping Cart Table */
|
2790 |
+
.cart-table th { padding:2px 10px; }
|
2791 |
+
.cart-table td { padding:10px; }
|
2792 |
+
.cart-table .product-name { font-weight:bold; margin:0 0 5px; color:#2f2f2f; }
|
2793 |
+
.cart-table .item-msg { margin:5px 0; font-size:11px; font-weight:bold; color:#df280a; }
|
2794 |
+
.cart-table tfoot td { padding:5px 10px; }
|
2795 |
+
.cart-table .btn-continue { float:left; }
|
2796 |
+
.cart-table .btn-continue span,
|
2797 |
+
.cart-table .btn-update span { border-color:#406a83; background:#618499; }
|
2798 |
+
|
2799 |
+
/* Shopping Cart Collateral boxes */
|
2800 |
+
.cart .cart-collaterals { padding:25px 0 0; }
|
2801 |
+
.cart .cart-collaterals .col2-set { float:left; width:605px; }
|
2802 |
+
.cart .cart-collaterals .col2-set .col-2 { width:294px; }
|
2803 |
+
|
2804 |
+
.cart .crosssell { border:1px solid #cec3b6; background:#fafaec; padding:12px 15px; }
|
2805 |
+
.cart .crosssell h2 { font-size:13px; font-weight:bold; }
|
2806 |
+
.cart .crosssell .product-image { float:left; width:75px; height:75px; border:1px solid #d0cdc9; }
|
2807 |
+
.cart .crosssell .product-details { margin-left:90px; }
|
2808 |
+
.cart .crosssell .product-name { font-weight:bold; }
|
2809 |
+
.cart .crosssell li.item { margin:12px 0; }
|
2810 |
+
.cart .crosssell .link-compare { font-weight:normal; }
|
2811 |
+
|
2812 |
+
/* Discount Codes & Estimate Shipping and Tax Boxes */
|
2813 |
+
.cart .discount,
|
2814 |
+
.cart .shipping { border:1px solid #d0cbc1; background:#fff url(../images/bkg_block-title.gif) 0 0 repeat-x; padding:12px 15px; margin:0 0 18px; }
|
2815 |
+
.cart .discount h2,
|
2816 |
+
.cart .shipping h2 { background-position:0 0; background-repeat:no-repeat; font:bold 13px/16px Arial, Helvetica, sans-serif; padding:0 0 0 21px; color:#e26703; text-transform:uppercase; }
|
2817 |
+
.cart .discount button span,
|
2818 |
+
.cart .shipping button span { border-color:#406a83; background:#618499; }
|
2819 |
+
.cart .discount .buttons-set,
|
2820 |
+
.cart .shipping .buttons-set { margin:10px 0 0; border:0; padding:0; text-align:left; }
|
2821 |
+
.cart .discount .buttons-set button.button,
|
2822 |
+
.cart .shipping .buttons-set button.button { float:none; margin-left:0; }
|
2823 |
+
|
2824 |
+
.cart .discount h2 { background-image:url(../images/i_discount.gif); }
|
2825 |
+
.cart .discount .input-box { margin:8px 0 0; width:260px; }
|
2826 |
+
.cart .discount input.input-text { width:254px; }
|
2827 |
+
|
2828 |
+
.cart .shipping h2 { background-image:url(../images/i_shipping.gif); }
|
2829 |
+
.cart .shipping .sp-methods { margin:10px 0 0; padding:5px 0 0; background:url(../images/bkg_divider1.gif) 0 0 repeat-x; }
|
2830 |
+
|
2831 |
+
/* Shopping Cart Totals */
|
2832 |
+
.cart .totals { float:right; width:268px; background:#dee5e8; border:1px solid #bebcb7; }
|
2833 |
+
.cart .totals table { width:100%; margin:7px 0; }
|
2834 |
+
.cart .totals td { padding:1px 15px 1px 7px; }
|
2835 |
+
.cart .totals tr.last td {}
|
2836 |
+
.cart .totals tfoot td { padding-top:5px; padding-bottom:5px; }
|
2837 |
+
.cart .totals tfoot td strong { font-size:15px; }
|
2838 |
+
.cart .totals .checkout-types { font-size:13px; padding:8px 15px 15px; text-align:right; }
|
2839 |
+
.cart .totals .checkout-types li { clear:both; margin:10px 0; }
|
2840 |
+
|
2841 |
+
/* Options Tool Tip */
|
2842 |
+
.item-options dt { font-weight:bold; font-style:italic; }
|
2843 |
+
.item-options dd { padding-left:10px; margin:0 0 6px; }
|
2844 |
+
.truncated { cursor:help; }
|
2845 |
+
.truncated a.dots { cursor:help; }
|
2846 |
+
.truncated a.details { cursor:help; }
|
2847 |
+
.truncated .truncated_full_value { position:relative; z-index:999; }
|
2848 |
+
.truncated .truncated_full_value dl { position:absolute; top:-99999em; left:-99999em; z-index:999; width:250px; padding:8px; border:1px solid #ddd; background-color:#f6f6f6; }
|
2849 |
+
.truncated .show dl { top:-20px; left:50%; }
|
2850 |
+
.col-left .truncated .show dl { left:15px; top:7px; }
|
2851 |
+
.col-right .truncated .show dl { left:-240px; top:7px; }
|
2852 |
+
/* ======================================================================================= */
|
2853 |
+
|
2854 |
+
|
2855 |
+
/* Checkout ============================================================================== */
|
2856 |
+
/********** < Common Checkout Styles */
|
2857 |
+
/* Shipping and Payment methods */
|
2858 |
+
.sp-methods { margin:0 0 8px; }
|
2859 |
+
.sp-methods dt { margin:13px 0 5px; font-weight:bold; }
|
2860 |
+
.sp-methods dd {}
|
2861 |
+
.sp-methods dd li { margin:5px 0; }
|
2862 |
+
.sp-methods label { font-weight:bold; color:#666; }
|
2863 |
+
.sp-methods .price { font-weight:bold; }
|
2864 |
+
.sp-methods .form-list { padding-left:20px; }
|
2865 |
+
.sp-methods .form-list li { margin:0 0 8px; }
|
2866 |
+
.sp-methods select.month { width:154px; margin-right:10px; }
|
2867 |
+
.sp-methods select.year { width:96px; }
|
2868 |
+
.sp-methods input.cvv { width:3em !important; }
|
2869 |
+
.sp-methods .centinel-logos a { margin-right:3px; }
|
2870 |
+
.sp-methods .centinel-logos img { vertical-align:middle; }
|
2871 |
+
|
2872 |
+
.please-wait { float:right; }
|
2873 |
+
.please-wait img { vertical-align:middle; }
|
2874 |
+
.cvv-what-is-this { font-size:11px; cursor:help; margin-left:10px; }
|
2875 |
+
|
2876 |
+
/* Tooltip */
|
2877 |
+
.tool-tip { border:1px solid #7BA7C9; background:#EAF6FF; padding:15px 20px; position:absolute; z-index:9999; }
|
2878 |
+
.tool-tip .btn-close { margin:-9px -14px 0; text-align:right; }
|
2879 |
+
.tool-tip .btn-close a { display:block; margin:0 0 0 auto; width:15px; height:15px; background:url(../images/btn_window_close.gif) 100% 0 no-repeat; text-align:left; text-indent:-999em; overflow:hidden; }
|
2880 |
+
.tool-tip .tool-tip-content { padding:5px; }
|
2881 |
+
|
2882 |
+
/* Gift Messages */
|
2883 |
+
.gift-messages h3 { font-size:12px; font-weight:bold; color:#e87403; }
|
2884 |
+
.gift-messages p.control { color:#8e8d8b; }
|
2885 |
+
.gift-messages-form { position:relative; }
|
2886 |
+
.gift-messages-form label { float:none !important; position:static !important; }
|
2887 |
+
.gift-messages-form h4 { font-size:12px; font-weight:bold; color:#e87403; }
|
2888 |
+
.gift-messages-form .whole-order { margin:0 0 25px; }
|
2889 |
+
.gift-messages-form .item { margin:0 0 10px; }
|
2890 |
+
.gift-messages-form .item .product-img-box { float:left; width:75px; }
|
2891 |
+
.gift-messages-form .item .product-image { margin:0 0 7px; }
|
2892 |
+
.gift-messages-form .item .number { margin:0; font-weight:bold; text-align:center; color:#8a8987; }
|
2893 |
+
.gift-messages-form .item .details { margin-left:90px; }
|
2894 |
+
.gift-messages-form .item .details .product-name { font-size:13px; font-weight:bold; margin:0 0 10px; }
|
2895 |
+
.gift-messages-form .item .details .form-list .field { width:255px; }
|
2896 |
+
.gift-messages-form .item .details .form-list .input-box { width:240px; }
|
2897 |
+
.gift-messages-form .item .details .form-list input.input-text { width:234px; }
|
2898 |
+
.gift-messages-form .item .details .form-list li.wide .input-box { width:500px; }
|
2899 |
+
.gift-messages-form .item .details .form-list li.wide textarea { width:494px; }
|
2900 |
+
|
2901 |
+
.gift-message-link { font-size:11px; background:url(../images/bkg_collapse-gm.gif) 100% 6px no-repeat; padding-right:7px; }
|
2902 |
+
.gift-message-link.expanded { background-position:100% -40px; }
|
2903 |
+
.gift-message-row { background:#f2efe9; }
|
2904 |
+
.gift-message-row .btn-close { float:right; width:16px; height:16px; background:url(../images/btn_gm-close.gif) 0 0 no-repeat; font-size:0; line-height:0; text-indent:-999em; overflow:hidden; }
|
2905 |
+
|
2906 |
+
/* Checkout Agreements */
|
2907 |
+
.checkout-agreements li { margin:30px 0; }
|
2908 |
+
.checkout-agreements .agreement-content { overflow:auto; height:12em; padding:10px; background-color:#fbfaf6; border:1px solid #bbb6a5; }
|
2909 |
+
.checkout-agreements .agree { margin:0; padding:10px 0 10px 11px; }
|
2910 |
+
.checkout-agreements .agree input.checkbox { margin-right:6px; }
|
2911 |
+
.checkout-agreements .agree label { font-weight:bold; color:#666; }
|
2912 |
+
|
2913 |
+
.opc .checkout-agreements { border:1px solid #d9dde3; border-width:0 1px; padding:5px 30px; }
|
2914 |
+
.opc .checkout-agreements li { margin:20px 0 0; }
|
2915 |
+
.opc .checkout-agreements .agreement-content { background-color:#fff; border-color:#e4e4e4; padding:5px; }
|
2916 |
+
.opc .checkout-agreements .agree { padding-left:6px; }
|
2917 |
+
|
2918 |
+
/* Centinel */
|
2919 |
+
.centinel {}
|
2920 |
+
|
2921 |
+
.opc .centinel { border:1px solid #bbb6a5; border-width:0 1px 1px; padding:10px 30px; }
|
2922 |
+
|
2923 |
+
/* Generic Info Set */
|
2924 |
+
.info-set { background:#fbfaf6 url(../images/bkg_checkout.gif) 0 0 repeat-x; border:1px solid #bbb6a5; margin:0 0 25px; padding:20px; }
|
2925 |
+
.info-set h2 { font-size:13px; font-weight:bold; margin:0 0 10px; }
|
2926 |
+
.info-set h3,
|
2927 |
+
.info-set h4 { font-size:13px; font-weight:bold; color:#E26703; }
|
2928 |
+
.info-set h2 a,
|
2929 |
+
.info-set h3 a,
|
2930 |
+
.info-set h4 a { font-weight:normal; }
|
2931 |
+
.info-set h2.legend { margin:-20px -20px 15px; padding:5px 10px; background:#f9f3e3; border-bottom:1px solid #bbafa0; position:relative; }
|
2932 |
+
.info-set h3.legend { margin:0 0 10px; color:#0a263c; }
|
2933 |
+
.info-set .divider { margin:0 -20px; padding:25px 0; position:relative; }
|
2934 |
+
.info-set .box { margin:0 0 15px; }
|
2935 |
+
.info-set .box h2 { color:#e26703; }
|
2936 |
+
.info-set .data-table .product-name { font-size:1em !important; font-weight:bold !important; color:#1e7ec8 !important; }
|
2937 |
+
.info-set .data-table .product-name a { font-weight:bold !important; }
|
2938 |
+
.info-set .data-table .item-options { margin:5px 0 0; }
|
2939 |
+
/********** Common Checkout Styles > */
|
2940 |
+
|
2941 |
+
/* One Page Checkout */
|
2942 |
+
.block-progress { border:0; margin:0; }
|
2943 |
+
.block-progress .block-title { background:none; border:0; padding:0; margin:0 0 5px; }
|
2944 |
+
.block-progress .block-title strong { font-size:13px; color:#0a263c; }
|
2945 |
+
.block-progress .block-content { background:none; }
|
2946 |
+
.block-progress dt { font-size:13px; font-weight:bold; line-height:1.35; background:#eee; border:1px solid #a3aeb3; margin:0 0 6px; padding:2px 8px; color:#999; }
|
2947 |
+
.block-progress dd { background:#eee; border:1px solid #a3aeb3; border-top:0; padding:8px 13px; margin:0 0 6px; }
|
2948 |
+
.block-progress dt.complete { margin:0; background:#d0dce1; color:#5e8ab4; }
|
2949 |
+
.block-progress dd.complete {}
|
2950 |
+
.block-progress p { margin:0; }
|
2951 |
+
|
2952 |
+
.opc .buttons-set { margin-top:0; padding-top:2em; }
|
2953 |
+
.opc .buttons-set p.required { margin:0; padding:0 0 10px; }
|
2954 |
+
.opc .buttons-set .back-link small { display:none; }
|
2955 |
+
.opc .buttons-set .back-link a { background:url(../images/i_arrow-top.gif) 0 50% no-repeat; padding-left:16px; }
|
2956 |
+
.opc .buttons-set.disabled button.button { display:none; }
|
2957 |
+
.opc .buttons-set .please-wait { height:21px; line-height:21px; }
|
2958 |
+
.opc .ul { list-style:disc outside; padding-left:18px; }
|
2959 |
+
|
2960 |
+
.opc { position:relative; }
|
2961 |
+
.opc li.section {}
|
2962 |
+
|
2963 |
+
.opc .step-title { border-width:0 1px; border-style:solid; border-color:#fff #d9dde3 #d9dde3; background:#eee url(../images/bkg_opc-title-off.gif) 0 100% repeat-x; padding:4px 8px 6px; text-align:right; }
|
2964 |
+
.opc .step-title .number { float:left; background:#fff; border:1px solid #fff; padding:0 4px; margin:0 5px 0 0; font:bold 11px/14px arial, helvetica, sans-serif; color:#999; }
|
2965 |
+
.opc .step-title h2 { float:left; margin:0; font:bold 13px/16px Arial, Helvetica, sans-serif; color:#999; }
|
2966 |
+
.opc .step-title a { display:none; float:right; font-size:11px; line-height:16px; }
|
2967 |
+
|
2968 |
+
.opc .allow .step-title { background:#d0dce1; border:1px solid #a3aeb3; border-bottom:0; color:#a4b3b9; cursor:pointer; }
|
2969 |
+
.opc .allow .step-title .number { background:#dbe6eb; border-color:#dbe6eb; color:#a4b3b9; }
|
2970 |
+
.opc .allow .step-title h2 { color:#a4b3b9; }
|
2971 |
+
/*.opc .allow .step-title a { display:block; }*/
|
2972 |
+
|
2973 |
+
.opc .active .step-title { background:#f9f3e3; border:1px solid #bbafa0; padding-bottom:5px; color:#f18200; cursor:default; }
|
2974 |
+
.opc .active .step-title .number { background:#f18200; border-color:#f19900; color:#fff; }
|
2975 |
+
.opc .active .step-title h2 { color:#f18200; }
|
2976 |
+
/*.opc .active .step-title a { display:none; }*/
|
2977 |
+
|
2978 |
+
.opc .step { border:1px solid #bbafa0; border-top:0; background:#fbfaf6 url(../images/bkg_checkout.gif) 0 0 repeat-x; padding:15px 30px; position:relative; }
|
2979 |
+
.opc .step .tool-tip { right:30px; }
|
2980 |
+
|
2981 |
+
#opc-login .buttons-set { border-top:0; }
|
2982 |
+
#opc-login h3 { font-size:13px; border-bottom:1px solid #e4e4e4; padding-bottom:2px; text-transform:uppercase; }
|
2983 |
+
#opc-login h4 { font-size:1em; font-weight:bold; margin:0; color:#2f2f2f; }
|
2984 |
+
|
2985 |
+
#opc-shipping_method .buttons-set { border-top:0; }
|
2986 |
+
.opc .gift-messages-form { margin:0 -30px; background:#f6f1eb; border:1px solid #e9e4de; border-width:1px 0; padding:22px 24px 22px 30px; }
|
2987 |
+
.opc .gift-messages-form .inner-box { padding:5px; height:260px; overflow:auto; }
|
2988 |
+
|
2989 |
+
#opc-review .step { border:0; padding:0; }
|
2990 |
+
#opc-review .product-name { font-weight:bold; color:#0a263c; }
|
2991 |
+
#opc-review .item-options { margin:5px 0 0; }
|
2992 |
+
#opc-review .buttons-set { padding:20px 30px; border:1px solid #d9dde3; border-width:0 1px 1px; }
|
2993 |
+
#opc-review .buttons-set p { margin:0; line-height:40px; }
|
2994 |
+
#opc-review .buttons-set .please-wait { height:40px; line-height:40px; }
|
2995 |
+
|
2996 |
+
/* Multiple Addresses Checkout */
|
2997 |
+
.checkout-progress { padding:0 90px; margin:0 0 20px; }
|
2998 |
+
.checkout-progress li { float:left; width:19%; margin:0 3px 0 0; border-top:10px solid #999; padding:2px 0 0; font-weight:bold; text-align:center; color:#abb5ba; }
|
2999 |
+
.checkout-progress li.active { border-top-color:#e96200; color:#e96200; }
|
3000 |
+
|
3001 |
+
.multiple-checkout h2 { font-size:13px; font-weight:bold; margin:0 0 10px; }
|
3002 |
+
.multiple-checkout h3,
|
3003 |
+
.multiple-checkout h4 { font-size:13px; font-weight:bold; color:#E26703; }
|
3004 |
+
.multiple-checkout h2 a,
|
3005 |
+
.multiple-checkout h3 a,
|
3006 |
+
.multiple-checkout h4 a { font-weight:normal; }
|
3007 |
+
.multiple-checkout .data-table .product-name { font-size:1em !important; font-weight:bold !important; color:#1e7ec8 !important; }
|
3008 |
+
.multiple-checkout .data-table .product-name a { font-weight:bold !important; }
|
3009 |
+
.multiple-checkout .data-table .item-options { margin:5px 0 0; }
|
3010 |
+
|
3011 |
+
.multiple-checkout .gift-messages { margin:15px 0 0; }
|
3012 |
+
|
3013 |
+
.multiple-checkout .tool-tip { top:50%; margin-top:-120px; right:20px; }
|
3014 |
+
|
3015 |
+
.multiple-checkout .col2-set,
|
3016 |
+
.multiple-checkout .col3-set { background:#fbfaf6 url(../images/bkg_checkout.gif) 0 0 repeat-x; border:1px solid #bbb6a5; margin:0 0 25px; padding:20px; }
|
3017 |
+
.multiple-checkout .col2-set h2.legend { margin:-20px -20px 15px; padding:5px 10px; background:#f9f3e3; border-bottom:1px solid #bbafa0; position:relative; }
|
3018 |
+
.multiple-checkout .col2-set h3.legend { margin:0 0 10px; color:#0a263c; }
|
3019 |
+
.multiple-checkout .col2-set .divider { margin:0 -20px; padding:25px 0; position:relative; }
|
3020 |
+
.multiple-checkout .box { margin:0 0 15px; }
|
3021 |
+
.multiple-checkout .box h2 { color:#e26703; }
|
3022 |
+
|
3023 |
+
.multiple-checkout .place-order .please-wait { float:right; padding:27px 7px 0 0; }
|
3024 |
+
.multiple-checkout .place-order .grand-total { float:right; height:71px; font-size:1.5em; padding:0 0 0 21px; background:url(../images/bkg_grand-total.gif) 0 0 no-repeat; overflow:hidden; }
|
3025 |
+
.multiple-checkout .place-order .grand-total .inner { float:left; height:57px; padding:14px 21px 0 0; background:url(../images/bkg_grand-total.gif) 100% 0 no-repeat; }
|
3026 |
+
.multiple-checkout .place-order .grand-total .inner div { display:inline; }
|
3027 |
+
.multiple-checkout .place-order .grand-total big { display:inline; margin-right:12px; }
|
3028 |
+
.multiple-checkout .place-order .grand-total .price { color:#E26703; }
|
3029 |
+
.multiple-checkout .place-order .grand-total button.button span { font-size:16px; }
|
3030 |
+
.multiple-checkout .place-order .grand-total button.button span span { padding:0 45px 0 36px; }
|
3031 |
+
|
3032 |
+
/* Step 1 */
|
3033 |
+
.multiple-checkout .title-buttons button.button span { border-color:#406a83; background:#618499; }
|
3034 |
+
#multiship-addresses-table td { padding:10px; }
|
3035 |
+
#multiship-addresses-table tfoot td { padding:5px 10px; }
|
3036 |
+
#multiship-addresses-table tfoot button.button span { border-color:#406a83; background:#618499; }
|
3037 |
+
|
3038 |
+
/* Step 2 */
|
3039 |
+
.multiple-checkout .gift-messages-form .item .details .form-list { width:100%; overflow:hidden; }
|
3040 |
+
.multiple-checkout .gift-messages-form .item .details .form-list li { margin-right:-15px; }
|
3041 |
+
.multiple-checkout .gift-messages-form .item .details .form-list .field { width:230px; }
|
3042 |
+
.multiple-checkout .gift-messages-form .item .details .form-list .input-box { width:215px; }
|
3043 |
+
.multiple-checkout .gift-messages-form .item .details .form-list input.input-text { width:209px; }
|
3044 |
+
.multiple-checkout .gift-messages-form .item .details .form-list li.wide .input-box { width:445px; }
|
3045 |
+
.multiple-checkout .gift-messages-form .item .details .form-list li.wide textarea { width:439px; }
|
3046 |
+
.checkout-multishipping-shipping .box-sp-methods { border:1px solid #d9d2be; background:#f9f3e3; padding:13px; position:relative; }
|
3047 |
+
.checkout-multishipping-shipping .box-sp-methods .pointer { position:absolute; top:-20px; right:-40px; width:178px; height:41px; background:url(../images/bkg_sp-methods.gif) 0 0 no-repeat; overflow:hidden; }
|
3048 |
+
|
3049 |
+
/* Step 3 */
|
3050 |
+
.checkout-multishipping-billing .multiple-checkout { position:relative; }
|
3051 |
+
/* ======================================================================================= */
|
3052 |
+
|
3053 |
+
|
3054 |
+
/* Account Login/Create Pages ============================================================ */
|
3055 |
+
.account-login {margin-top:10px; margin-right:10px; }
|
3056 |
+
.account-login .content { min-height:240px; padding:14px 21px; background:#faf7ee url(../images/bkg_login-box.gif) 0 0 repeat-x; border:1px solid #bbb6a5; border-bottom:0; }
|
3057 |
+
.account-login .content h2 { font-weight:bold; font-size:13px; margin:0 0 14px; padding:0 0 5px 23px; border-bottom:1px solid #ddd; background-position:0 1px; background-repeat:no-repeat; text-transform:uppercase; color:#e76200; }
|
3058 |
+
.account-login .new-users h2 { background-image:url(../images/i_page1.gif)}
|
3059 |
+
.account-login .registered-users h2 { background-image:url(../images/i_page2.gif); }
|
3060 |
+
.account-login .buttons-set { border:1px solid #bbb6a5; border-top:0; margin:0; padding:8px 13px; background:#dee5e8 url(../images/bkg_buttons-set1.gif) 0 0 repeat-x; }
|
3061 |
+
.account-create { margin:auto auto; padding-top:20px;}
|
3062 |
+
.shift{margin-left:10px; margin-top:10px;max-width: 685px;}
|
3063 |
+
/* Account Login/Create Pages ============================================================ */
|
3064 |
+
|
3065 |
+
|
3066 |
+
/* My Account ============================================================================= */
|
3067 |
+
.my-account .title-buttons .link-rss { float:none; margin:0; }
|
3068 |
+
|
3069 |
+
/********** < Dashboard */
|
3070 |
+
.dashboard .welcome-msg { margin:0 8em 1.5em 0; }
|
3071 |
+
.dashboard .welcome-msg p { margin:0; }
|
3072 |
+
.dashboard .col2-set { margin:0 0 15px; }
|
3073 |
+
|
3074 |
+
/* General Box */
|
3075 |
+
.box-account { background:#fff url(../images/bkg_account_box.gif) 0 0 repeat-x; border:1px solid #ccc; border-color:#ccc #999 #999 #ccc; padding:15px; margin: 0 0 20px; }
|
3076 |
+
.box-account .box-head { border-bottom:1px solid #d9dde3; margin:0 0 10px; text-align:right; }
|
3077 |
+
.box-account .box-head h2 { float:left; margin:0; font-size:13px; font-weight:bold; text-transform:uppercase; background-position:0 0; background-repeat:no-repeat; padding-left:21px; color:#e65505; }
|
3078 |
+
|
3079 |
+
.dashboard .box .box-title { background:url(../images/bkg_divider1.gif) 0 100% repeat-x; padding:0 0 2px; margin:0 0 8px; text-align:right; }
|
3080 |
+
.dashboard .box .box-title h3,
|
3081 |
+
.dashboard .box .box-title h4 { float:left; font-size:13px; font-weight:bold; margin:0; }
|
3082 |
+
|
3083 |
+
/* Block: Recent Orders */
|
3084 |
+
.dashboard .box-recent .box-head h2 { background-image:url(../images/i_folder-table.gif); }
|
3085 |
+
|
3086 |
+
/* Block: Account Information */
|
3087 |
+
.dashboard .box-info .box-head h2 { background-image:url(../images/i_ma-info.gif); }
|
3088 |
+
.dashboard .box-info h4 { font-size:11px; font-weight:bold; text-transform:uppercase; }
|
3089 |
+
|
3090 |
+
/* Block: Reviews */
|
3091 |
+
.dashboard .box-reviews .box-head h2 { background-image:url(../images/i_ma-reviews.gif); }
|
3092 |
+
.dashboard .box-reviews .number { float:left; font-size:10px; font-weight:bold; line-height:1; color:#fff; margin:3px -20px 0 0; padding:2px 3px; background:#0a263c; }
|
3093 |
+
.dashboard .box-reviews .details { margin-left:20px; }
|
3094 |
+
.dashboard .box-reviews li.item { margin:0 0 7px; }
|
3095 |
+
.dashboard .box-reviews li.item.last { margin:0; }
|
3096 |
+
.dashboard .box-reviews .ratings { margin:7px 0 0; }
|
3097 |
+
|
3098 |
+
/* Block: Tags */
|
3099 |
+
.dashboard .box-tags .box-head h2 { background-image:url(../images/i_ma-tags.gif); }
|
3100 |
+
.dashboard .box-tags .number { float:left; font-size:10px; font-weight:bold; line-height:1; color:#fff; margin:3px -20px 0 0; padding:2px 3px; background:#0a263c; }
|
3101 |
+
.dashboard .box-tags .details { margin-left:20px; }
|
3102 |
+
.dashboard .box-tags li.item { margin:0 0 7px; }
|
3103 |
+
.dashboard .box-tags li.item.last { margin:0; }
|
3104 |
+
.dashboard .box-tags .tags strong,
|
3105 |
+
.dashboard .box-tags .tags ul,
|
3106 |
+
.dashboard .box-tags .tags ul li { display:inline; }
|
3107 |
+
/********** Dashboard > */
|
3108 |
+
|
3109 |
+
/* Address Book */
|
3110 |
+
.addresses-list h2 { font-weight:bold; font-size:13px; color:#e26703; text-transform:uppercase; }
|
3111 |
+
.addresses-list h3 { font-weight:bold; font-size:13px; }
|
3112 |
+
.addresses-list address { margin:0 0 3px; }
|
3113 |
+
.addresses-list p { margin:0; }
|
3114 |
+
.addresses-list a { font-weight:bold; }
|
3115 |
+
.addresses-list .link-remove { color:#646464; }
|
3116 |
+
.addresses-list .separator { margin:0 3px; }
|
3117 |
+
.addresses-list li.item { background:#fff url(../images/bkg_account_box.gif) 0 0 repeat-x; border:1px solid #ccc; padding:10px 13px; margin:0 0 10px; }
|
3118 |
+
.addresses-list li.empty { background:none; border:0; padding:0; }
|
3119 |
+
.addresses-list li.empty p { font-weight:bold; }
|
3120 |
+
.addresses-list .addresses-additional li.item { background:none; border:0; padding:0; }
|
3121 |
+
|
3122 |
+
/* Order View */
|
3123 |
+
.order-info { background:#dee5e8; border:1px solid #d0cbc1; padding:4px 8px; margin:0 0 8px; }
|
3124 |
+
.order-info dt,
|
3125 |
+
.order-info dd,
|
3126 |
+
.order-info ul,
|
3127 |
+
.order-info li { display:inline; }
|
3128 |
+
.order-info .current { font-weight:bold; }
|
3129 |
+
.order-info li { margin:0 3px; }
|
3130 |
+
|
3131 |
+
.order-date { margin:10px 0; }
|
3132 |
+
|
3133 |
+
.order-info-box { background:#fff url(../images/bkg_block-title.gif) 0 0 repeat-x; border:1px solid #d0cbc1; padding:12px 15px; margin:0 0 15px; }
|
3134 |
+
.order-info-box h2 { font-weight:bold; font-size:13px; }
|
3135 |
+
.order-info-box .box-payment p { margin:0 0 5px; }
|
3136 |
+
.order-info-box .box-payment th { font-weight:bold; padding-right:7px; }
|
3137 |
+
|
3138 |
+
.order-items { width:100%; overflow-x:auto; }
|
3139 |
+
.order-items h2,
|
3140 |
+
.order-items h3 { font-weight:bold; font-size:13px; }
|
3141 |
+
.order-items .product-name { font-size:1em !important; font-weight:bold !important; }
|
3142 |
+
.order-items .link-print { float:right; color:#1e7ec8; font-weight:normal; }
|
3143 |
+
.order-items p .link-print { float:none; }
|
3144 |
+
|
3145 |
+
.order-gift-message { margin:15px 0; }
|
3146 |
+
.gift-message dt strong { color:#666; }
|
3147 |
+
.gift-message dd { margin:5px 0 0; font-size:13px; }
|
3148 |
+
|
3149 |
+
.order-about { margin:15px 0; }
|
3150 |
+
.order-about dt { font-weight:bold; }
|
3151 |
+
.order-about dd { font-size:13px; margin:0 0 7px; }
|
3152 |
+
|
3153 |
+
.tracking-table { margin:0 0 15px; }
|
3154 |
+
.tracking-table th { font-weight:bold; white-space:nowrap; }
|
3155 |
+
.tracking-table th,
|
3156 |
+
.tracking-table td { padding:1px 5px 0 0; }
|
3157 |
+
|
3158 |
+
.tracking-table-popup { width:100%; }
|
3159 |
+
.tracking-table-popup th { font-weight:bold; white-space:nowrap; }
|
3160 |
+
.tracking-table-popup th,
|
3161 |
+
.tracking-table-popup td { padding:1px 8px; }
|
3162 |
+
|
3163 |
+
/* Order Print Pages */
|
3164 |
+
.page-print .print-head { margin:0 0 15px; }
|
3165 |
+
.page-print .print-head .logo { float:left; }
|
3166 |
+
.page-print .print-head address { float:left; margin-left:15px; }
|
3167 |
+
.page-print h1 { font-size:16px; font-weight:bold; }
|
3168 |
+
.page-print h2,
|
3169 |
+
.page-print h3 { font-size:13px; font-weight:bold; }
|
3170 |
+
.page-print h2.h2 { font-size:16px; font-weight:bold; }
|
3171 |
+
.page-print .order-date { background:url(../images/bkg_divider1.gif) 0 100% repeat-x; padding:0 0 10px; margin:0 0 10px; }
|
3172 |
+
.page-print .col2-set { margin:0 0 10px; }
|
3173 |
+
/* Price Rewrites */
|
3174 |
+
.page-print .gift-message-link { display:none; }
|
3175 |
+
.page-print .price-excl-tax,
|
3176 |
+
.page-print .price-incl-tax { display:block; white-space:nowrap; }
|
3177 |
+
.page-print .cart-price,
|
3178 |
+
.page-print .price-excl-tax .label,
|
3179 |
+
.page-print .price-incl-tax .label,
|
3180 |
+
.page-print .price-excl-tax .price,
|
3181 |
+
.page-print .price-incl-tax .price { display:inline; }
|
3182 |
+
|
3183 |
+
/* My Wishlist */
|
3184 |
+
.my-wishlist .data-table td { padding:10px; }
|
3185 |
+
.my-wishlist .product-image { display:block; width:113px; height:113px; margin:0 0 5px; }
|
3186 |
+
.my-wishlist textarea { display:block; width:97%; height:109px; }
|
3187 |
+
.my-wishlist .buttons-set { margin-top:2em; }
|
3188 |
+
.my-wishlist .buttons-set button.button { float:none; }
|
3189 |
+
.my-wishlist .buttons-set .btn-add span,
|
3190 |
+
.my-wishlist .buttons-set .btn-share span { border-color:#406a83; background:#618499; }
|
3191 |
+
#wishlist-table .add-to-links { white-space:nowrap; }
|
3192 |
+
|
3193 |
+
/* My Tags */
|
3194 |
+
.my-tag-edit { float:left; margin:0 0 10px; }
|
3195 |
+
.my-tag-edit .btn-remove { float:right; margin:5px 0 0 5px; }
|
3196 |
+
#my-tags-table { clear:both; }
|
3197 |
+
#my-tags-table td { padding:10px; }
|
3198 |
+
#my-tags-table .add-to-links { white-space:nowrap; }
|
3199 |
+
|
3200 |
+
/* My Reviews */
|
3201 |
+
#my-reviews-table td { padding:10px; }
|
3202 |
+
|
3203 |
+
.product-review .product-img-box { float:left; width:140px; }
|
3204 |
+
.product-review .product-img-box .product-image { display:block; width:125px; height:125px; }
|
3205 |
+
.product-review .product-img-box .label { font-size:11px; margin:0 0 3px; }
|
3206 |
+
.product-review .product-img-box .ratings .rating-box { float:none; display:block; margin:0 0 3px; }
|
3207 |
+
.product-review .product-details { margin-left:150px; }
|
3208 |
+
.product-review .product-name { font-size:16px; font-weight:bold; margin:0 0 10px; }
|
3209 |
+
.product-review h3 { font-size:12px; margin:0 0 3px; color:#2f2f2f; }
|
3210 |
+
.product-review .ratings-table { margin:0 0 10px; }
|
3211 |
+
.product-review dt { font-weight:bold; }
|
3212 |
+
.product-review dd { font-size:13px; margin:5px 0 0; }
|
3213 |
+
/* ======================================================================================= */
|
3214 |
+
|
3215 |
+
|
3216 |
+
/* Footer ================================================================================ */
|
3217 |
+
.footer { margin:0 auto; width:974px; padding:10px;text-align:right;background:#1A1818;border-top:17px solid #46E1E7;}
|
3218 |
+
.footer .store-switcher { display:inline; margin:0 5px 0 0; color:#fff; }
|
3219 |
+
.footer .store-switcher label { font-weight:bold; vertical-align:middle; }
|
3220 |
+
.footer .store-switcher select { padding:0; vertical-align:middle; }
|
3221 |
+
.footer a { color:#DBDADA; text-decoration:none; }
|
3222 |
+
.footer a:hover { text-decoration:underline; }
|
3223 |
+
.footer .bugs { margin:13px 0 0; color:#ecf3f6; }
|
3224 |
+
.footer .bugs a { color:#ecf3f6; text-decoration:underline; }
|
3225 |
+
.footer .bugs a:hover { text-decoration:none; }
|
3226 |
+
.footer address { margin:0 0 20px; color:#ecf3f6; }
|
3227 |
+
.footer address a { color:#ecf3f6; text-decoration:underline; }
|
3228 |
+
.footer address a:hover { text-decoration:none; }
|
3229 |
+
.footer ul { display:inline; }
|
3230 |
+
.footer ul.links { display:block; }
|
3231 |
+
.footer li { display:inline; background:url(../images/bkg_pipe2.gif) 100% 60% no-repeat; padding:0 5px 0 1px; }
|
3232 |
+
.footer li.last { background:none !important; padding-right:0 !important; }
|
3233 |
+
.footer-container .bottom-container { margin:0 0 5px; }
|
3234 |
+
/* ======================================================================================= */
|
3235 |
+
|
3236 |
+
/* Sample Data============================================================================ */
|
3237 |
+
.home-callout { margin-bottom:12px; }
|
3238 |
+
.home-callout img { display:block }
|
3239 |
+
.home-spot { float:left; width:470px; margin-left:20px; }
|
3240 |
+
.best-selling h3 { margin:12px 0 6px 0; color:#e25203; font-size:1.2em; }
|
3241 |
+
.best-selling table { border-top:1px solid #ccc; }
|
3242 |
+
.best-selling tr.odd { background:#eee url(../images/best_selling_tr_odd_bg.gif) 0 100% repeat-x; }
|
3243 |
+
.best-selling tr.even { background:#fff url(../images/best_selling_tr_even_bg.gif) 0 100% repeat-x; }
|
3244 |
+
.best-selling td { width:50%; border-bottom:1px solid #ccc; padding:8px 10px 8px 8px; font-size:11px; }
|
3245 |
+
.best-selling .product-img { float:left; border:2px solid #dcdcdc; }
|
3246 |
+
.best-selling .product-description { margin-left:107px; line-height:1.3em; }
|
3247 |
+
.best-selling a.product-name,
|
3248 |
+
.home-spot .best-selling a.product-name:hover { color:#203548; }
|
3249 |
+
/* ======================================================================================= */
|
3250 |
+
|
3251 |
+
|
3252 |
+
/* Clears ================================================================================ */
|
3253 |
+
.clearer:after,
|
3254 |
+
.header-container:after,
|
3255 |
+
.header-container .top-container:after,
|
3256 |
+
.header:after,
|
3257 |
+
.header .quick-access:after,
|
3258 |
+
#nav:after,
|
3259 |
+
.main:after,
|
3260 |
+
.footer:after,
|
3261 |
+
.footer-container .bottom-container:after,
|
3262 |
+
.col-main:after,
|
3263 |
+
.col2-set:after,
|
3264 |
+
.col3-set:after,
|
3265 |
+
.col4-set:after,
|
3266 |
+
.search-autocomplete li:after,
|
3267 |
+
.block .block-content:after,
|
3268 |
+
.block .actions:after,
|
3269 |
+
.block li.item:after,
|
3270 |
+
.block-poll li:after,
|
3271 |
+
.block-layered-nav .currently li:after,
|
3272 |
+
.page-title:after,
|
3273 |
+
.products-grid:after,
|
3274 |
+
.products-list li.item:after,
|
3275 |
+
.box-account .box-head:after,
|
3276 |
+
.dashboard .box .box-title:after,
|
3277 |
+
.box-reviews li.item:after,
|
3278 |
+
.box-tags li.item:after,
|
3279 |
+
.pager:after,
|
3280 |
+
.sorter:after,
|
3281 |
+
.ratings:after,
|
3282 |
+
.add-to-box:after,
|
3283 |
+
.add-to-cart:after,
|
3284 |
+
.product-essential:after,
|
3285 |
+
.product-collateral:after,
|
3286 |
+
.product-view .product-img-box .more-views ul:after,
|
3287 |
+
.product-view .box-tags .form-add:after,
|
3288 |
+
.product-options .options-list li:after,
|
3289 |
+
.product-options-bottom:after,
|
3290 |
+
.product-review:after,
|
3291 |
+
.cart:after,
|
3292 |
+
.cart-collaterals:after,
|
3293 |
+
.cart .crosssell li.item:after,
|
3294 |
+
.opc .step-title:after,
|
3295 |
+
.checkout-progress:after,
|
3296 |
+
.multiple-checkout .place-order:after,
|
3297 |
+
.group-select li:after,
|
3298 |
+
.form-list li:after,
|
3299 |
+
.form-list .field:after,
|
3300 |
+
.buttons-set:after,
|
3301 |
+
.page-print .print-head:after,
|
3302 |
+
.advanced-search-summary:after,
|
3303 |
+
.gift-messages-form .item:after,
|
3304 |
+
.send-friend .form-list li p:after { display:block; content:"."; clear:both; font-size:0; line-height:0; height:0; overflow:hidden; }
|
3305 |
+
/* ======================================================================================= background:#EEEEEE;*/
|
3306 |
+
body {
|
3307 |
+
margin:0px;
|
3308 |
+
background: #f6f6f4 url(../images/bkg-linen.jpg) center 0 repeat-y
|
3309 |
+
}
|
3310 |
+
|
3311 |
+
.price-text{style="font-size:10px; color:black; weight:bold;}
|
3312 |
+
img {
|
3313 |
+
/*behavior: url("pngbehavior.htc");*/
|
3314 |
+
}
|
3315 |
+
|
3316 |
+
form {
|
3317 |
+
margin:0px;
|
3318 |
+
}
|
3319 |
+
|
3320 |
+
/*------------------ Back Grounds & Back Ground Images ---------------*/
|
3321 |
+
|
3322 |
+
.header_bg {
|
3323 |
+
background:url(../images/header_bg.jpg) repeat-x left top; height:86px;
|
3324 |
+
|
3325 |
+
}
|
3326 |
+
|
3327 |
+
.top_icons {
|
3328 |
+
padding:0px 6px 0px 6px;
|
3329 |
+
}
|
3330 |
+
|
3331 |
+
.top_dvd {
|
3332 |
+
margin-bottom:-6px; margin-left:3px; margin-right:3px;
|
3333 |
+
}
|
3334 |
+
|
3335 |
+
.top_dvd2 {
|
3336 |
+
margin-left:5px; margin-right:5px; color:#181D1B;
|
3337 |
+
}
|
3338 |
+
|
3339 |
+
.view_detail_button {
|
3340 |
+
margin-top:4px; margin-bottom:4px;
|
3341 |
+
}
|
3342 |
+
|
3343 |
+
.view_detail_button_products {
|
3344 |
+
margin-top:1px; margin-top:2px;
|
3345 |
+
}
|
3346 |
+
|
3347 |
+
.featured_product_dvd {
|
3348 |
+
padding-left:5px; padding-right:5px;
|
3349 |
+
}
|
3350 |
+
|
3351 |
+
|
3352 |
+
/* -------------------- LINKS ------------------------- */
|
3353 |
+
|
3354 |
+
.footer_links {
|
3355 |
+
font-family:verdana; font-size:10px; font-weight:normal; color:#B6B0B0; text-decoration:none;
|
3356 |
+
}
|
3357 |
+
|
3358 |
+
.footer_links:hover {
|
3359 |
+
color:#fff; text-decoration:none;
|
3360 |
+
}
|
3361 |
+
|
3362 |
+
.Alinks {
|
3363 |
+
font-family:verdana; font-size:11px; font-weight:normal; color:#4B4747;; text-decoration:none;
|
3364 |
+
}
|
3365 |
+
|
3366 |
+
.Alinks:hover {
|
3367 |
+
color:#fff; text-decoration:underline;
|
3368 |
+
}
|
3369 |
+
|
3370 |
+
.Blinks {
|
3371 |
+
font-family:verdana; font-size:11px; font-weight:normal; color:#7B6C52; text-decoration:none;
|
3372 |
+
}
|
3373 |
+
|
3374 |
+
.Blinks:hover {
|
3375 |
+
color:#fff; text-decoration:none;
|
3376 |
+
}
|
3377 |
+
|
3378 |
+
.Clinks {
|
3379 |
+
font-family:verdana; font-size:12px; font-weight:bold; color:#FFF; text-decoration:none;
|
3380 |
+
}
|
3381 |
+
|
3382 |
+
.Clinks:hover {
|
3383 |
+
color:#F7971D; text-decoration:none;
|
3384 |
+
}
|
3385 |
+
|
3386 |
+
.Dlinks {
|
3387 |
+
text-decoration:none; padding:5px; text-transform:Capitalize; background:url(../images/download.gif) no-repeat scroll left center transparent;
|
3388 |
+
padding-left: 10px; height: 8px; font: 12px "lucida grande","Helvetica",Times,serif;
|
3389 |
+
}
|
3390 |
+
.imageHolder{
|
3391 |
+
background: url(../images/dropshadow.png) no-repeat scroll bottom;
|
3392 |
+
}
|
3393 |
+
.imageHolder td{
|
3394 |
+
height:233px;
|
3395 |
+
}
|
3396 |
+
#container{
|
3397 |
+
border:1px solid #CCC;
|
3398 |
+
margin-top:10px;
|
3399 |
+
width:100%;
|
3400 |
+
}
|
3401 |
+
.table-header{background:#CCC; padding:10px;}
|
3402 |
+
|
3403 |
+
.heading-top{
|
3404 |
+
|
3405 |
+
padding-top:20px;
|
3406 |
+
padding-bottom:5px;
|
3407 |
+
border-bottom:1px dotted #333;
|
3408 |
+
}
|
3409 |
+
|
3410 |
+
#Dlinks td{
|
3411 |
+
|
3412 |
+
}
|
3413 |
+
.Dlinks:hover {
|
3414 |
+
color:#293202; font-weight:bold; text-decoration:none;
|
3415 |
+
}
|
3416 |
+
|
3417 |
+
.Elinks {
|
3418 |
+
font-family:"Lucida grande", "Helvetica"; font-size:10px; font-weight:bold; color:#333; text-decoration:none;
|
3419 |
+
}
|
3420 |
+
.Mlinks {
|
3421 |
+
font-family:"verdana", "Helvetica"; font-size:10px; color:white; text-decoration:none;
|
3422 |
+
}
|
3423 |
+
|
3424 |
+
.Elinks:hover {
|
3425 |
+
color:#5B623B; text-decoration:none; border-bottom:#5B623B 1px dotted;
|
3426 |
+
}
|
3427 |
+
|
3428 |
+
.Flinks {
|
3429 |
+
font-family:Verdana; font-size:11px; font-weight:bold; color:#222323; text-decoration:none; padding-right:4px;
|
3430 |
+
}
|
3431 |
+
|
3432 |
+
.Flinks:hover {
|
3433 |
+
color:#5B623B; text-decoration:none;
|
3434 |
+
}
|
3435 |
+
|
3436 |
+
.Glinks {
|
3437 |
+
font-family:Verdana; font-size:11px; font-weight:bold; color:#393938; text-decoration:none; padding-right:3px; padding-left:3px;
|
3438 |
+
}
|
3439 |
+
|
3440 |
+
.Glinks:hover {
|
3441 |
+
color:#5B623B; text-decoration:underline;/* border-left:#393938 1px solid; border-right:#393938 1px solid;*/
|
3442 |
+
}
|
3443 |
+
|
3444 |
+
/* -------------------- HEADING ------------------------- */
|
3445 |
+
|
3446 |
+
.heading-1 {
|
3447 |
+
font-family:verdana; font-size:14px; font-weight:bold; color:#61080A;
|
3448 |
+
}
|
3449 |
+
|
3450 |
+
.heading-2 {
|
3451 |
+
font-family:Verdana; font-size:12px; font-weight:bold; color:#4F5439;
|
3452 |
+
}
|
3453 |
+
|
3454 |
+
.heading-3 {
|
3455 |
+
font-family:verdana; font-size:16px; font-weight:bold; color:#FFF;
|
3456 |
+
}
|
3457 |
+
|
3458 |
+
.heading-4 {
|
3459 |
+
font-family: "helvetica";
|
3460 |
+
font-size: 15px;font-weight:bold; color:#000;
|
3461 |
+
}
|
3462 |
+
.product-specs{font-family:Verdana;margin-bottom:10px;}
|
3463 |
+
.heading-5 {
|
3464 |
+
font-family:verdana; font-size:18px; font-weight:normal; color:#323030;
|
3465 |
+
}
|
3466 |
+
.heading-6{
|
3467 |
+
font-family:"Lucida grande","Helvetica"; font-size:14px; font-weight:normal; color:#323030;
|
3468 |
+
}
|
3469 |
+
|
3470 |
+
/* -------------------- NORMAL TEXTs ------------------------- */
|
3471 |
+
|
3472 |
+
.Text-1 {
|
3473 |
+
font-family:verdana; font-size:10px; font-weight:normal; color:#B6B0B0; padding-top:5px;
|
3474 |
+
}
|
3475 |
+
|
3476 |
+
.Text-2 {
|
3477 |
+
font:12px Helvetica, Arial, sans-serif;line-height:13px; color:#333;
|
3478 |
+
}
|
3479 |
+
|
3480 |
+
.Text-3 {
|
3481 |
+
font-family:"lucida grande","helvetica"; font-size:10px; font-weight:normal; color:white;
|
3482 |
+
}
|
3483 |
+
|
3484 |
+
#image{
|
3485 |
+
border:1px solid #CCC;
|
3486 |
+
padding: 5px;
|
3487 |
+
|
3488 |
+
}
|
3489 |
+
/* -------------------- DVD ------------------------- */
|
3490 |
+
|
3491 |
+
.footer_dvd {
|
3492 |
+
font-family:verdana; font-size:10px; font-weight:normal; color:#B6B0B0; padding-left:4px; padding-right:4px;
|
3493 |
+
}
|
3494 |
+
|
3495 |
+
.top_links_dvd {
|
3496 |
+
font-family:verdana; font-size:11px; font-weight:normal; color:#C5C3C3; text-decoration:none; padding-left:3px; padding-right:3px;
|
3497 |
+
}
|
3498 |
+
|
3499 |
+
/* -------------------- TEXT FIELD ------------------------- */
|
3500 |
+
|
3501 |
+
.Text_field1 {
|
3502 |
+
background:url(../images/search_icon.jpg) no-repeat #FFF left; border:#7E8367 1px solid; font-family:verdana; font-size:13px; color:#666633; padding:3px; width:130px; padding-left:25px;
|
3503 |
+
}
|
3504 |
+
|
3505 |
+
.Text_field2 {
|
3506 |
+
background:#FFF; border-top:#808569 1px solid; border-left:#808569 1px solid; border-bottom:#808569 1px solid; font-family:verdana; font-size:12px; color:#353631; padding:4px; width:158px;
|
3507 |
+
}
|
3508 |
+
|
3509 |
+
/* -------------------- BUTTONS ------------------------- */
|
3510 |
+
|
3511 |
+
.find_button {
|
3512 |
+
background:url(../images/find_button.jpg) no-repeat left top; width:37px; height:25px; border:0px; cursor:pointer; margin-top:-1px; margin-top:0px;
|
3513 |
+
}
|
3514 |
+
|
3515 |
+
.sign_up_button {
|
3516 |
+
background:url(../images/sign_up_button.jpg) no-repeat left top; width:28px; height:25px; border:0px; cursor:pointer; margin-top:0px; margin-left:1px;
|
3517 |
+
}
|
3518 |
+
|
3519 |
+
.add_to_cart {
|
3520 |
+
float:right;
|
3521 |
+
}
|
3522 |
+
|
3523 |
+
.view_detail {
|
3524 |
+
float:left;
|
3525 |
+
}
|
3526 |
+
|
3527 |
+
|
3528 |
+
/* -------------------- MENUS USED (CSS) ------------------------- */
|
3529 |
+
|
3530 |
+
#nav1 {
|
3531 |
+
margin: 0px 0px 0px;
|
3532 |
+
padding: 0px;
|
3533 |
+
font-family:Verdana;
|
3534 |
+
font-weight:normal;
|
3535 |
+
font-size: 10px;
|
3536 |
+
margin-left:10px;
|
3537 |
+
}
|
3538 |
+
|
3539 |
+
#nav1 ul {
|
3540 |
+
float: left;
|
3541 |
+
margin: 0px;
|
3542 |
+
padding: 0px;
|
3543 |
+
font-weight: normal;
|
3544 |
+
}
|
3545 |
+
|
3546 |
+
#nav1 li {
|
3547 |
+
display: inline;
|
3548 |
+
list-style: none;
|
3549 |
+
margin: 0px;
|
3550 |
+
padding: 0px 0px;
|
3551 |
+
|
3552 |
+
}
|
3553 |
+
|
3554 |
+
#nav1 li a {
|
3555 |
+
color: #F7F7F6;
|
3556 |
+
display: block;
|
3557 |
+
float: left;
|
3558 |
+
margin: 2px 6px 2px 6px;
|
3559 |
+
padding: 5px 14px 5px 0px;
|
3560 |
+
text-decoration: none;
|
3561 |
+
font-size: 10px;
|
3562 |
+
/*border-right:#FFF 1px solid;*/
|
3563 |
+
}
|
3564 |
+
|
3565 |
+
#nav1 a:hover {
|
3566 |
+
/*background:#D1BC9D;*/
|
3567 |
+
color: #D1BC9D;
|
3568 |
+
text-decoration: none;
|
3569 |
+
}
|
3570 |
+
|
3571 |
+
#nav1 .selected {
|
3572 |
+
/*background:#D1BC9D;*/
|
3573 |
+
color: #D1BC9D;
|
3574 |
+
text-decoration: none;
|
3575 |
+
}
|
3576 |
+
|
3577 |
+
|
3578 |
+
|
3579 |
+
/*----------------- LEFT NAV ------------------*/
|
3580 |
+
.sidebarContainer{
|
3581 |
+
padding: 5px;
|
3582 |
+
border: 1px solid #d3d3d3;
|
3583 |
+
width: 100%;
|
3584 |
+
margin-top:5px;
|
3585 |
+
margin-bottom:10px;
|
3586 |
+
}
|
3587 |
+
.boxy{
|
3588 |
+
border:1px solid #d3d3d3;
|
3589 |
+
margin-bottom:10px;
|
3590 |
+
clear:both;
|
3591 |
+
}
|
3592 |
+
.tabMenu{
|
3593 |
+
background:url(../images/tab2.png) no-repeat;
|
3594 |
+
width:500px;
|
3595 |
+
height:50px;
|
3596 |
+
}
|
3597 |
+
.bannerSidebar{
|
3598 |
+
float:right; max-width:232px; max-height:320px;
|
3599 |
+
border:1px solid #d3d3d3;
|
3600 |
+
padding:5px;
|
3601 |
+
}
|
3602 |
+
.item:hover{
|
3603 |
+
border:1px solid #d3d3d3;
|
3604 |
+
}
|
3605 |
+
|
3606 |
+
|
3607 |
+
.glossymenu{
|
3608 |
+
max-width: 140px;
|
3609 |
+
clear:both;
|
3610 |
+
margin: 0px 0;
|
3611 |
+
padding: 0;
|
3612 |
+
/*width of menu*/
|
3613 |
+
/*border: 1px solid #9A9A9A;*/
|
3614 |
+
border-bottom-width: 0;
|
3615 |
+
margin-bottom:0px;
|
3616 |
+
margin-bottom:0px;
|
3617 |
+
font-style:normal;
|
3618 |
+
}
|
3619 |
+
|
3620 |
+
.glossymenu a.menuitem{
|
3621 |
+
background:url(../images/download.gif) no-repeat left 11px; width:7px; height:8px;
|
3622 |
+
font:12px "Lucida Grande","Helvetica",Times,serif;
|
3623 |
+
color:#293202;
|
3624 |
+
display: block;
|
3625 |
+
position: relative; /*To help in the anchoring of the ".statusicon" icon image*/
|
3626 |
+
width: auto;
|
3627 |
+
padding: 6px 0;
|
3628 |
+
padding-left: 12px;
|
3629 |
+
text-decoration: none;
|
3630 |
+
|
3631 |
+
}
|
3632 |
+
|
3633 |
+
|
3634 |
+
.glossymenu a.menuitem:visited, .glossymenu .menuitem:active{
|
3635 |
+
color:#293202;
|
3636 |
+
font-style:normal;
|
3637 |
+
}
|
3638 |
+
|
3639 |
+
.glossymenu a.menuitem .statusicon{ /*CSS for icon image that gets dynamically added to headers*/
|
3640 |
+
position: absolute;
|
3641 |
+
top: 5px;
|
3642 |
+
right: 5px;
|
3643 |
+
border: none;
|
3644 |
+
}
|
3645 |
+
|
3646 |
+
.glossymenu a.menuitem:hover{
|
3647 |
+
font-weight:normal;
|
3648 |
+
font-style:normal;
|
3649 |
+
|
3650 |
+
}
|
3651 |
+
|
3652 |
+
.glossymenu a.menuitem.selected{
|
3653 |
+
font-weight:normal;
|
3654 |
+
font-style:verdana;
|
3655 |
+
|
3656 |
+
}
|
3657 |
+
|
3658 |
+
.glossymenu div.submenu{ /*DIV that contains each sub menu*/
|
3659 |
+
background: none;
|
3660 |
+
}
|
3661 |
+
|
3662 |
+
.glossymenu div.submenu ul{ /*UL of each sub menu*/
|
3663 |
+
list-style-type: none;
|
3664 |
+
margin-top:8px;
|
3665 |
+
margin-top:0px;
|
3666 |
+
padding: 0;
|
3667 |
+
font:13px "Times New Roman",Times,serif;
|
3668 |
+
}
|
3669 |
+
div.submenu{
|
3670 |
+
margin-top:10px;
|
3671 |
+
margin-bottom:20px;
|
3672 |
+
}
|
3673 |
+
.glossymenu div.submenu ul li{
|
3674 |
+
border-bottom: 1px dotted #333;
|
3675 |
+
}
|
3676 |
+
.glossymenu > a{
|
3677 |
+
font:13px "Lucida grande","Helvetica",Times,serif;
|
3678 |
+
}
|
3679 |
+
.glossymenu div.submenu ul li a{
|
3680 |
+
font:13px "Lucida grande","Helvetica",Times,serif;
|
3681 |
+
display: block;
|
3682 |
+
color:#293202;
|
3683 |
+
text-decoration: none;
|
3684 |
+
padding: 2px 0;
|
3685 |
+
padding-left: 18px;
|
3686 |
+
|
3687 |
+
padding-left: 15px;
|
3688 |
+
}
|
3689 |
+
|
3690 |
+
.glossymenu div.submenu ul li a:hover{
|
3691 |
+
/*background:#F0F0F0;*/
|
3692 |
+
font-weight:bold;
|
3693 |
+
font-style:verdana;
|
3694 |
+
}
|
3695 |
+
|
3696 |
+
.menu_dvd {
|
3697 |
+
margin-left:15px;
|
3698 |
+
}
|
3699 |
+
|
3700 |
+
.tariq {height:97px;}
|
3701 |
+
|
3702 |
+
.tariq { height /*\**/:40px\9; }
|
3703 |
+
|
3704 |
+
*:first-child+html .tariq {height:97px !important;}
|
3705 |
+
.imgpaypal{ padding-top:9px;}
|
3706 |
+
|
3707 |
+
.treeview ul{ /*CSS for Simple Tree Menu*/
|
3708 |
+
margin: 0;
|
3709 |
+
padding: 0;
|
3710 |
+
}
|
3711 |
+
|
3712 |
+
.treeview li{ /*Style for LI elements in general (excludes an LI that contains sub lists)*/
|
3713 |
+
background: transparent url(left_nav_bullet.jpg) no-repeat left center;
|
3714 |
+
list-style-type: none;
|
3715 |
+
padding-left: 22px;
|
3716 |
+
margin-bottom: 3px;
|
3717 |
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
3718 |
+
}
|
3719 |
+
|
3720 |
+
.treeview li.submenu{ /* Style for LI that contains sub lists (other ULs). */
|
3721 |
+
background: transparent url(closed.gif) no-repeat left 1px;
|
3722 |
+
cursor: hand !important;
|
3723 |
+
cursor: pointer !important;
|
3724 |
+
padding-top:13px
|
3725 |
+
}
|
3726 |
+
|
3727 |
+
|
3728 |
+
.treeview li.submenu ul{ /*Style for ULs that are children of LIs (submenu) */
|
3729 |
+
display: none; /*Hide them by default. Don't delete. */
|
3730 |
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
3731 |
+
}
|
3732 |
+
|
3733 |
+
.treeview .submenu ul li{ /*Style for LIs of ULs that are children of LIs (submenu) */
|
3734 |
+
cursor: default;
|
3735 |
+
padding: 5px 0 0 8px;
|
3736 |
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
3737 |
+
}
|
3738 |
+
|
3739 |
+
div.sdmenu {
|
3740 |
+
width: 195px;
|
3741 |
+
font-family: Arial;
|
3742 |
+
font-size: 12px;
|
3743 |
+
/*padding-bottom: 10px;*/
|
3744 |
+
/*background: url(../image/bottom.gif) no-repeat right bottom;*/
|
3745 |
+
/*color: #fff;*/
|
3746 |
+
margin-top:5px; margin-left:15px;
|
3747 |
+
}
|
3748 |
+
|
3749 |
+
* html div.sdmenu {
|
3750 |
+
width: 181px;
|
3751 |
+
font-family: Arial;
|
3752 |
+
font-size: 12px;
|
3753 |
+
/*padding-bottom: 10px;*/
|
3754 |
+
/*background: url(../image/bottom.gif) no-repeat right bottom;*/
|
3755 |
+
/*color: #fff;*/
|
3756 |
+
margin-top:5px; margin-left:15px;
|
3757 |
+
}
|
3758 |
+
|
3759 |
+
div.sdmenu div {
|
3760 |
+
border-bottom:#CCC 1px solid;
|
3761 |
+
/*background: url(../image/title.gif) repeat-x;*/
|
3762 |
+
overflow: hidden;
|
3763 |
+
/*border-bottom:#363735 1px dotted;*/
|
3764 |
+
}
|
3765 |
+
div.sdmenu div:first-child {
|
3766 |
+
/*background: url(../image/toptitle.gif) no-repeat;*/
|
3767 |
+
}
|
3768 |
+
div.sdmenu div.collapsed {
|
3769 |
+
height: 25px;
|
3770 |
+
}
|
3771 |
+
div.sdmenu div span {
|
3772 |
+
display: block;
|
3773 |
+
padding: 5px 25px;
|
3774 |
+
font-weight: bold;
|
3775 |
+
color: #615F5F;
|
3776 |
+
background: url(../images/clos.jpg) no-repeat 10px center;
|
3777 |
+
cursor: pointer;
|
3778 |
+
}
|
3779 |
+
div.sdmenu div span:hover {
|
3780 |
+
display: block;
|
3781 |
+
padding: 5px 25px;
|
3782 |
+
font-weight: bold;
|
3783 |
+
color: #036CCD;
|
3784 |
+
background: url(../images/clos.jpg) no-repeat 10px center;
|
3785 |
+
cursor: pointer;
|
3786 |
+
|
3787 |
+
}
|
3788 |
+
div.sdmenu div span.selected {
|
3789 |
+
display: block;
|
3790 |
+
padding: 5px 25px;
|
3791 |
+
font-weight: bold;
|
3792 |
+
color: #363735;
|
3793 |
+
background: url(../image/clos.jpg) no-repeat 10px center;
|
3794 |
+
cursor: default;
|
3795 |
+
|
3796 |
+
}
|
3797 |
+
|
3798 |
+
div.sdmenu div.collapsed span {
|
3799 |
+
background-image: url(../images/open.jpg);
|
3800 |
+
}
|
3801 |
+
div.sdmenu div a {
|
3802 |
+
padding: 5px 10px;
|
3803 |
+
/*background: #F1F3F0;*/
|
3804 |
+
display: block;
|
3805 |
+
width:200px;
|
3806 |
+
color: #363735; font-size:11px;text-decoration: none; margin-left:15px; float:left;
|
3807 |
+
}
|
3808 |
+
*html div.sdmenu div a {
|
3809 |
+
padding: 5px 10px;
|
3810 |
+
background: #fff;
|
3811 |
+
display: block;
|
3812 |
+
width:157px;
|
3813 |
+
color: #363735; font-size:11px;text-decoration: none; margin-left:0px; float:left;
|
3814 |
+
}
|
3815 |
+
|
3816 |
+
|
3817 |
+
/**
|
3818 |
+
* Magento
|
3819 |
+
*
|
3820 |
+
* NOTICE OF LICENSE
|
3821 |
+
*
|
3822 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
3823 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
3824 |
+
* It is also available through the world-wide-web at this URL:
|
3825 |
+
* http://opensource.org/licenses/afl-3.0.php
|
3826 |
+
* If you did not receive a copy of the license and are unable to
|
3827 |
+
* obtain it through the world-wide-web, please send an email
|
3828 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
3829 |
+
*
|
3830 |
+
* DISCLAIMER
|
3831 |
+
*
|
3832 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
3833 |
+
* versions in the future. If you wish to customize Magento for your
|
3834 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
3835 |
+
*
|
3836 |
+
* @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
3837 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
3838 |
+
*/
|
3839 |
+
|
3840 |
+
|
3841 |
+
|
3842 |
+
|
3843 |
+
.ddsmoothmenu{
|
3844 |
+
font-family:Verdana;
|
3845 |
+
font-size:12px;
|
3846 |
+
font-weight:normal;
|
3847 |
+
width: 100%;
|
3848 |
+
}
|
3849 |
+
|
3850 |
+
.ddsmoothmenu ul{
|
3851 |
+
z-index:100;
|
3852 |
+
margin: 0px;
|
3853 |
+
padding: 0px;
|
3854 |
+
list-style-type: none;
|
3855 |
+
/*padding-left:4px;*/
|
3856 |
+
}
|
3857 |
+
|
3858 |
+
/*Top level list items*/
|
3859 |
+
.ddsmoothmenu ul li{
|
3860 |
+
position: relative;
|
3861 |
+
display: inline;
|
3862 |
+
float: left;
|
3863 |
+
}
|
3864 |
+
|
3865 |
+
/*Top level menu link items style*/
|
3866 |
+
.ddsmoothmenu ul li a{
|
3867 |
+
display: block; /*background of menu items (default state)*/
|
3868 |
+
color:#E6E9E8;
|
3869 |
+
padding: 12px 16px;
|
3870 |
+
text-decoration: none;
|
3871 |
+
}
|
3872 |
+
|
3873 |
+
* html .ddsmoothmenu ul li a { /*IE6 hack to get sub menu links to behave correctly*/
|
3874 |
+
display: inline-block;
|
3875 |
+
}
|
3876 |
+
|
3877 |
+
.ddsmoothmenu ul li a:link, .ddsmoothmenu ul li a:visited{
|
3878 |
+
color: white;
|
3879 |
+
}
|
3880 |
+
|
3881 |
+
.ddsmoothmenu ul li a.selected { /*CSS class that's dynamically added to the currently active menu items' LI A element*/
|
3882 |
+
color: white;
|
3883 |
+
}
|
3884 |
+
|
3885 |
+
.ddsmoothmenu ul li a:hover{
|
3886 |
+
background:url(../images/menu_hover.jpg) repeat-x left top;
|
3887 |
+
color:#E6E9E8;
|
3888 |
+
}
|
3889 |
+
|
3890 |
+
/*1st sub level menu*/
|
3891 |
+
.ddsmoothmenu ul li ul{
|
3892 |
+
position: absolute;
|
3893 |
+
left: 0;
|
3894 |
+
display: none; /*collapse all sub menus to begin with*/
|
3895 |
+
visibility: hidden;
|
3896 |
+
}
|
3897 |
+
|
3898 |
+
/*Sub level menu list items (undo style from Top level List Items)*/
|
3899 |
+
.ddsmoothmenu ul li ul li{
|
3900 |
+
display: list-item;
|
3901 |
+
float: none;
|
3902 |
+
}
|
3903 |
+
|
3904 |
+
/*All subsequent sub menu levels vertical offset after 1st level sub menu */
|
3905 |
+
.ddsmoothmenu ul li ul li ul{
|
3906 |
+
top: 0;
|
3907 |
+
}
|
3908 |
+
|
3909 |
+
/* Sub level menu links style */
|
3910 |
+
.ddsmoothmenu ul li ul li a{
|
3911 |
+
font: normal 16px Verdana;
|
3912 |
+
width: 160px; /*width of sub menus*/
|
3913 |
+
padding: 5px;
|
3914 |
+
margin: 0;
|
3915 |
+
border-top-width: 0;
|
3916 |
+
border-bottom: 1px solid gray;
|
3917 |
+
}
|
3918 |
+
|
3919 |
+
/* Holly Hack for IE \*/
|
3920 |
+
* html .ddsmoothmenu{height: 1%;} /*Holly Hack for IE7 and below*/
|
3921 |
+
|
3922 |
+
|
3923 |
+
/* ######### CSS classes applied to down and right arrow images ######### */
|
3924 |
+
|
3925 |
+
.downarrowclass{
|
3926 |
+
position: absolute;
|
3927 |
+
top: 12px;
|
3928 |
+
right: 7px;
|
3929 |
+
}
|
3930 |
+
|
3931 |
+
.rightarrowclass{
|
3932 |
+
position: absolute;
|
3933 |
+
top: 6px;
|
3934 |
+
right: 5px;
|
3935 |
+
}
|
3936 |
+
|
3937 |
+
/* ######### CSS for shadow added to sub menus ######### */
|
3938 |
+
|
3939 |
+
.ddshadow{
|
3940 |
+
position: absolute;
|
3941 |
+
left: 0;
|
3942 |
+
top: 0;
|
3943 |
+
width: 0;.ddsmoothmenu{
|
3944 |
+
font: bold 12px Verdana,Arial,Helvetica,Tahoma;
|
3945 |
+
width: 100%;
|
3946 |
+
}
|
3947 |
+
|
3948 |
+
.ddsmoothmenu ul{
|
3949 |
+
z-index:100;
|
3950 |
+
margin: 0px;
|
3951 |
+
padding: 0px;
|
3952 |
+
padding-left:0px;
|
3953 |
+
list-style-type: none;
|
3954 |
+
font-weight:bold;
|
3955 |
+
border-top:0px;
|
3956 |
+
}
|
3957 |
+
|
3958 |
+
/*Top level list items*/
|
3959 |
+
.ddsmoothmenu ul li{
|
3960 |
+
position: relative;
|
3961 |
+
display: inline;
|
3962 |
+
float: left;
|
3963 |
+
font-family:Verdana,Arial,Helvetica,Tahoma;
|
3964 |
+
font-size:11px;
|
3965 |
+
color:#FFFFFF;
|
3966 |
+
}
|
3967 |
+
|
3968 |
+
/*Top level menu link items style*/
|
3969 |
+
.ddsmoothmenu ul li a{
|
3970 |
+
display: block;
|
3971 |
+
color: #FFFFFF;
|
3972 |
+
padding:12px 10px;
|
3973 |
+
text-decoration: none;
|
3974 |
+
|
3975 |
+
}
|
3976 |
+
|
3977 |
+
* html .ddsmoothmenu ul li a{ /*IE6 hack to get sub menu links to behave correctly*/
|
3978 |
+
display: inline-block;
|
3979 |
+
}
|
3980 |
+
|
3981 |
+
.ddsmoothmenu ul li a:link, .ddsmoothmenu ul li a:visited{
|
3982 |
+
color: #FFFFFF;
|
3983 |
+
}
|
3984 |
+
|
3985 |
+
.ddsmoothmenu ul li a.selected{ /*CSS class that's dynamically added to the currently active menu items' LI A element*/
|
3986 |
+
/*background: #8BB5E6; */
|
3987 |
+
color: #FFFFFF;
|
3988 |
+
vertical-align:middle;
|
3989 |
+
}
|
3990 |
+
|
3991 |
+
.ddsmoothmenu ul li a:hover{
|
3992 |
+
/*background: #D3DBE1; background of menu items during onmouseover (hover state)*/
|
3993 |
+
color: #FFFFFF;
|
3994 |
+
vertical-align:middle;
|
3995 |
+
}
|
3996 |
+
|
3997 |
+
/*1st sub level menu*/
|
3998 |
+
.ddsmoothmenu ul li ul{
|
3999 |
+
position: absolute;
|
4000 |
+
left: 0;
|
4001 |
+
background-color: #8BB5E6;
|
4002 |
+
display: none; /*collapse all sub menus to begin with*/
|
4003 |
+
visibility: hidden;
|
4004 |
+
}
|
4005 |
+
|
4006 |
+
|
4007 |
+
/*Sub level menu list items (undo style from Top level List Items)*/
|
4008 |
+
.ddsmoothmenu ul li ul li{
|
4009 |
+
display: list-item;
|
4010 |
+
float: none;
|
4011 |
+
}
|
4012 |
+
|
4013 |
+
/*All subsequent sub menu levels vertical offset after 1st level sub menu */
|
4014 |
+
.ddsmoothmenu ul li ul li ul{
|
4015 |
+
top: 0;
|
4016 |
+
}
|
4017 |
+
|
4018 |
+
/* Sub level menu links style */
|
4019 |
+
.ddsmoothmenu ul li ul li a{
|
4020 |
+
font-family:Verdana,Arial,Helvetica,Tahoma;
|
4021 |
+
font-size:12px;
|
4022 |
+
color:#FFFFFF;
|
4023 |
+
font-weight:normal;
|
4024 |
+
width: 180px; /*width of sub menus*/
|
4025 |
+
padding: 8px;
|
4026 |
+
margin: 0;
|
4027 |
+
|
4028 |
+
border-top-width: 0px;
|
4029 |
+
border-left:1px solid #868686;
|
4030 |
+
border-right:1px solid #868686;
|
4031 |
+
border-bottom:1px solid #868686;
|
4032 |
+
|
4033 |
+
}
|
4034 |
+
|
4035 |
+
.ddsmoothmenu ul li ul li a:active, .ddsmoothmenu ul li ul li a:visited{
|
4036 |
+
color:#FFF;
|
4037 |
+
}
|
4038 |
+
|
4039 |
+
.ddsmoothmenu ul li ul li a.selected{ /*CSS class that's dynamically added to the currently active menu items' LI A element*/
|
4040 |
+
color: #000000;
|
4041 |
+
background:#D3DBE1;
|
4042 |
+
vertical-align:middle;
|
4043 |
+
}
|
4044 |
+
|
4045 |
+
.ddsmoothmenu ul li ul li a:hover{
|
4046 |
+
background:#D3DBE1;
|
4047 |
+
color:#000000;
|
4048 |
+
}
|
4049 |
+
|
4050 |
+
/* Holly Hack for IE \*/
|
4051 |
+
* html .ddsmoothmenu{height: 1%;} /*Holly Hack for IE7 and below*/
|
4052 |
+
|
4053 |
+
|
4054 |
+
/* ######### CSS classes applied to down and right arrow images ######### */
|
4055 |
+
|
4056 |
+
.downarrowclass{
|
4057 |
+
position: absolute;
|
4058 |
+
top: 12px;
|
4059 |
+
right: 7px;
|
4060 |
+
}
|
4061 |
+
|
4062 |
+
.rightarrowclass{
|
4063 |
+
position: absolute;
|
4064 |
+
top: 6px;
|
4065 |
+
right: 5px;
|
4066 |
+
}
|
4067 |
+
|
4068 |
+
/* ######### CSS for shadow added to sub menus ######### */
|
4069 |
+
|
4070 |
+
.ddshadow{
|
4071 |
+
position: absolute;
|
4072 |
+
left: 0;
|
4073 |
+
top: 0;
|
4074 |
+
width: 0;
|
4075 |
+
height: 0;
|
4076 |
+
background: A09B98;
|
4077 |
+
}
|
4078 |
+
|
4079 |
+
.toplevelshadow{ /*shadow opacity. Doesn't work in IE*/
|
4080 |
+
opacity: 0.8;
|
4081 |
+
}
|
4082 |
+
height: 0;
|
4083 |
+
background: #A09B98;
|
4084 |
+
}
|
4085 |
+
|
4086 |
+
.toplevelshadow{ /*shadow opacity. Doesn't work in IE*/
|
4087 |
+
opacity: 0.8;
|
4088 |
+
}
|
4089 |
+
|
4090 |
+
.margin_dvd {
|
4091 |
+
margin-top:1px;
|
4092 |
+
}
|
4093 |
+
|
4094 |
+
.home {
|
4095 |
+
cursor:pointer;
|
4096 |
+
font-family:"lucida grande",Helvetica;
|
4097 |
+
}
|
4098 |
+
}
|
4099 |
+
|
4100 |
+
/*div.sdmenu div a.current {
|
4101 |
+
background : #F78F1E;text-decoration: none;width:200px; margin-left:8px; float:left;
|
4102 |
+
}*/
|
4103 |
+
div.sdmenu div a:hover {
|
4104 |
+
/*background : #fff ;*/
|
4105 |
+
font-family: Arial, sans-serif;
|
4106 |
+
color: #036CCD;
|
4107 |
+
text-decoration: none; font-weight:bold;
|
4108 |
+
}
|
4109 |
+
|
4110 |
+
|
4111 |
+
/* ######### Matt Black Strip Main Menu Bar CSS ######### */
|
4112 |
+
|
4113 |
+
.mattblackmenu ul{
|
4114 |
+
margin: 0;
|
4115 |
+
padding: 0;
|
4116 |
+
font: 12px Arial;
|
4117 |
+
font-weight:bold;
|
4118 |
+
list-style-type: none;
|
4119 |
+
border-bottom: 1px solid gray;
|
4120 |
+
background: #3D260B;
|
4121 |
+
overflow: hidden;
|
4122 |
+
width: 100%;
|
4123 |
+
}
|
4124 |
+
|
4125 |
+
.mattblackmenu li{
|
4126 |
+
display: inline;
|
4127 |
+
margin: 0;
|
4128 |
+
}
|
4129 |
+
|
4130 |
+
.mattblackmenu li a{
|
4131 |
+
float: left;
|
4132 |
+
display: block;
|
4133 |
+
text-decoration: none;
|
4134 |
+
margin: 0;
|
4135 |
+
padding: 4px 8px; /*padding inside each tab*/
|
4136 |
+
border-right: 1px solid white; /*right divider between tabs*/
|
4137 |
+
color: white;
|
4138 |
+
background: #3D260B;
|
4139 |
+
}
|
4140 |
+
|
4141 |
+
.mattblackmenu li a:visited{
|
4142 |
+
color: white;
|
4143 |
+
}
|
4144 |
+
|
4145 |
+
.mattblackmenu li a:hover{
|
4146 |
+
background: #3D260B; /*background of tabs for hover state */
|
4147 |
+
}
|
4148 |
+
|
4149 |
+
.mattblackmenu a.selected{
|
4150 |
+
background: #3D260B; /*background of tab with "selected" class assigned to its LI */
|
4151 |
+
}
|
4152 |
+
|
4153 |
+
/* ######### Marker List Vertical Menu ######### */
|
4154 |
+
|
4155 |
+
.markermenu{
|
4156 |
+
width: 175px; /*width of side bar menu*/
|
4157 |
+
clear: left;
|
4158 |
+
position: relative; /*Preserve this for "right" arrow images (added by script) to be positioned correctly*/
|
4159 |
+
|
4160 |
+
}
|
4161 |
+
|
4162 |
+
.markermenu ul{
|
4163 |
+
list-style-type: none;
|
4164 |
+
margin: 0px 0;
|
4165 |
+
padding: 0;
|
4166 |
+
/*border: 1px solid #9A9A9A;*/
|
4167 |
+
}
|
4168 |
+
|
4169 |
+
.markermenu ul li a{
|
4170 |
+
width:202px; height:20px;
|
4171 |
+
font: 12px Arial;
|
4172 |
+
color:#615F5F;
|
4173 |
+
font-weight:bold;
|
4174 |
+
display: block;
|
4175 |
+
/*width: auto;*/
|
4176 |
+
padding-top: 5px;
|
4177 |
+
padding-left: 20px;
|
4178 |
+
text-decoration: none;
|
4179 |
+
border-bottom:#ccc 1px solid;
|
4180 |
+
/*border-bottom: 1px solid #B5B5B5;*/
|
4181 |
+
}
|
4182 |
+
|
4183 |
+
* html .markermenu ul li a{ /*IE6 hack*/
|
4184 |
+
width: 155px;
|
4185 |
+
}
|
4186 |
+
|
4187 |
+
.markermenu ul li a:visited, .markermenu ul li a:active{
|
4188 |
+
color: #615F5F; width:202px;
|
4189 |
+
}
|
4190 |
+
|
4191 |
+
.markermenu ul li a:hover, .markermenu ul li a.selected{
|
4192 |
+
width:205px; height:20px; font: 12px Arial; font-weight:bold; color:#000;
|
4193 |
+
}
|
4194 |
+
|
4195 |
+
/* ######### Customized Drop Down ULs CSS (inherits from ddlevelsmenu-base.css) ######### */
|
4196 |
+
|
4197 |
+
.blackwhite li a{
|
4198 |
+
width:202px;
|
4199 |
+
margin-left:0px;
|
4200 |
+
background:#D1D7E3;
|
4201 |
+
color:##666666;
|
4202 |
+
}
|
4203 |
+
|
4204 |
+
.blackwhite li a:hover{
|
4205 |
+
background:#6A8BD2;
|
4206 |
+
color:#FFF;
|
4207 |
+
height:15px;
|
4208 |
+
}
|
4209 |
+
|
4210 |
+
/* ######### Drop Down ULs CSS ######### */
|
4211 |
+
|
4212 |
+
|
4213 |
+
.ddsubmenustyle, .ddsubmenustyle ul{ /*topmost and sub ULs, respectively*/
|
4214 |
+
background:#D1D7E3;
|
4215 |
+
font: normal 12px Arial;
|
4216 |
+
font-weight:bold;
|
4217 |
+
margin: 0;
|
4218 |
+
padding: 0;
|
4219 |
+
position: absolute;
|
4220 |
+
left: 0;
|
4221 |
+
top: 0;
|
4222 |
+
list-style-type: none;
|
4223 |
+
padding-left:5px;
|
4224 |
+
|
4225 |
+
/*border: 1px solid black;
|
4226 |
+
border-bottom-width: 0;*/
|
4227 |
+
visibility: hidden;
|
4228 |
+
z-index: 100;
|
4229 |
+
}
|
4230 |
+
|
4231 |
+
.ddsubmenustyle li a{
|
4232 |
+
display: block;
|
4233 |
+
/*width: 160px;*/ /*width of menu (not including side paddings)*/
|
4234 |
+
color: black;
|
4235 |
+
background:#3D260B;
|
4236 |
+
text-decoration: none;
|
4237 |
+
padding: 4px 5px;
|
4238 |
+
border-bottom:#ccc 1px solid;
|
4239 |
+
|
4240 |
+
}
|
4241 |
+
|
4242 |
+
* html .ddsubmenustyle li{ /*IE6 CSS hack*/
|
4243 |
+
display: inline-block;
|
4244 |
+
width: 170px; /*width of menu (include side paddings of LI A*/
|
4245 |
+
}
|
4246 |
+
|
4247 |
+
.ddsubmenustyle li a:hover{
|
4248 |
+
background:#3D260B;
|
4249 |
+
color: white;
|
4250 |
+
}
|
4251 |
+
|
4252 |
+
/* ######### Neutral CSS ######### */
|
4253 |
+
|
4254 |
+
.downarrowpointer{ /*CSS for "down" arrow image added to top menu items*/
|
4255 |
+
padding-left: 4px;
|
4256 |
+
border: 0;
|
4257 |
+
}
|
4258 |
+
|
4259 |
+
.rightarrowpointer{ /*CSS for "right" arrow image added to drop down menu items*/
|
4260 |
+
position: absolute;
|
4261 |
+
padding-top: 3px;
|
4262 |
+
left: 100px;
|
4263 |
+
border: 0;
|
4264 |
+
}
|
4265 |
+
|
4266 |
+
.ddiframeshim{
|
4267 |
+
position: absolute;
|
4268 |
+
z-index: 500;}
|
4269 |
+
|
4270 |
+
|
4271 |
+
/*--------------------------------------------*/
|
4272 |
+
.footer .last{
|
4273 |
+
|
4274 |
+
}
|
4275 |
+
.footerBlock.socialLinks {
|
4276 |
+
padding: 40px 35px 0;
|
4277 |
+
width: 170px;
|
4278 |
+
}
|
4279 |
+
|
4280 |
+
|
4281 |
+
.footerBlock.socialLinks li {
|
4282 |
+
display: inline-block;
|
4283 |
+
float: none;
|
4284 |
+
height: 35px;
|
4285 |
+
margin: 0 6px;
|
4286 |
+
width: 35px;
|
4287 |
+
}
|
4288 |
+
|
4289 |
+
li {
|
4290 |
+
list-style: none;
|
4291 |
+
}
|
4292 |
+
|
4293 |
+
.footerBlock.socialLinks li a {
|
4294 |
+
display: inline-block;
|
4295 |
+
height: 35px;
|
4296 |
+
text-indent: -9999px;
|
4297 |
+
width: 35px;
|
4298 |
+
}
|
4299 |
+
|
4300 |
+
.footerBlock a {
|
4301 |
+
color: #FFFFFF;
|
4302 |
+
}
|
4303 |
+
|
4304 |
+
.footerBlock.socialLinks li.in-link {
|
4305 |
+
background: url("../images/in-icon.png") no-repeat scroll left top transparent;
|
4306 |
+
}
|
4307 |
+
.footerBlock.socialLinks li.facebook-link {
|
4308 |
+
background: url("../images/facebook-icon.png") no-repeat scroll left top transparent;
|
4309 |
+
}
|
4310 |
+
.footerBlock.socialLinks li.twitter-link {
|
4311 |
+
background: url("../images/twitter-icon.png") no-repeat scroll left top transparent;
|
4312 |
+
}
|
4313 |
+
.footerBlock.socialLinks li {
|
4314 |
+
display: inline-block;
|
4315 |
+
float: none;
|
4316 |
+
height: 35px;
|
4317 |
+
margin: 0 6px;
|
4318 |
+
width: 35px;
|
4319 |
+
}
|
4320 |
+
|
4321 |
+
.footerBlock.ourLinks {
|
4322 |
+
font-size: 12px;
|
4323 |
+
}
|
4324 |
+
|
4325 |
+
.footerBlock.ourLinks {
|
4326 |
+
padding-left: 20px;
|
4327 |
+
width: 220px;
|
4328 |
+
}
|
4329 |
+
|
4330 |
+
|
4331 |
+
li {
|
4332 |
+
list-style: none;
|
4333 |
+
}
|
4334 |
+
.footerBlock.ourLinks a {
|
4335 |
+
line-height: 18px;
|
4336 |
+
}
|
4337 |
+
|
4338 |
+
.footerBlock a {
|
4339 |
+
color: #FFFFFF;
|
4340 |
+
}
|
4341 |
+
.footerBlock.twocheckout {
|
4342 |
+
padding-top: 35px;
|
4343 |
+
}
|
4344 |
+
|
4345 |
+
|
4346 |
+
.footerBlock.twocheckout p {
|
4347 |
+
line-height: 14px;
|
4348 |
+
}
|
4349 |
+
|
4350 |
+
p {
|
4351 |
+
margin-top: 10px;
|
4352 |
+
}
|
4353 |
+
|
4354 |
+
.footerBlock.guarantee {
|
4355 |
+
padding: 5px 25px 0 30px;
|
4356 |
+
width: 185px;
|
4357 |
+
}
|
4358 |
+
|
4359 |
+
.footerBlock {
|
4360 |
+
color: #A5A5A5;
|
4361 |
+
float: left;
|
4362 |
+
font-family: Arial,Helvetica,sans-serif;
|
4363 |
+
font-size: 11px;
|
4364 |
+
padding-top: 20px;
|
4365 |
+
width: 240px;
|
4366 |
+
}
|
4367 |
+
.clearfloat {
|
4368 |
+
clear: both;
|
4369 |
+
line-height: 0px;
|
4370 |
+
height: 0px;
|
4371 |
+
font-size: 0px;
|
4372 |
+
}
|
4373 |
+
|
4374 |
+
|
4375 |
+
background: transparent;
|
4376 |
+
border-width: 0;
|
4377 |
+
width: 0;
|
4378 |
+
height: 0;
|
4379 |
+
display: block;
|
4380 |
+
}
|
4381 |
+
|
4382 |
+
/* Jquery Carousel Code */
|
4383 |
+
h3.ribbon {
|
4384 |
+
background-color: #5e5e5e;
|
4385 |
+
color: #fff;
|
4386 |
+
display: inline-block;
|
4387 |
+
font-family: arial;
|
4388 |
+
font-size: 11px;
|
4389 |
+
line-height: 1em;
|
4390 |
+
margin: -1px 0 10px -14px;
|
4391 |
+
min-width: 13%;
|
4392 |
+
padding: 5px 28px 4px 25px;
|
4393 |
+
position: relative;
|
4394 |
+
text-align: center;
|
4395 |
+
text-transform: uppercase;
|
4396 |
+
white-space: nowrap;
|
4397 |
+
text-transform: uppercase;
|
4398 |
+
}
|
4399 |
+
|
4400 |
+
h3.ribbon:before {
|
4401 |
+
z-index: 1000;
|
4402 |
+
content: ' ';
|
4403 |
+
position: absolute;
|
4404 |
+
width: 0;
|
4405 |
+
height: 0;
|
4406 |
+
right: 0;
|
4407 |
+
top: 0;
|
4408 |
+
border-color: transparent #FFF transparent transparent;
|
4409 |
+
border-width: 10px 10px;
|
4410 |
+
border-style: solid;
|
4411 |
+
}
|
4412 |
+
|
4413 |
+
|
4414 |
+
h3.ribbon:after {
|
4415 |
+
content: ' ';
|
4416 |
+
position: absolute;
|
4417 |
+
width: 0;
|
4418 |
+
height: 0;
|
4419 |
+
left: 0;
|
4420 |
+
top: 100%;
|
4421 |
+
border-width: 3px 7px;
|
4422 |
+
border-style: solid;
|
4423 |
+
border-color: #232323 #232323 transparent transparent;
|
4424 |
+
}
|
4425 |
+
|
4426 |
+
.scrollup{
|
4427 |
+
width:40px;
|
4428 |
+
height:40px;
|
4429 |
+
position:fixed;
|
4430 |
+
bottom:50px;
|
4431 |
+
right:100px;
|
4432 |
+
display:none;
|
4433 |
+
text-indent:-9999px;
|
4434 |
+
background: url('../images/scroll.png') no-repeat;
|
4435 |
+
}
|
4436 |
+
|
4437 |
+
|
4438 |
+
|
4439 |
+
.row4 {
|
4440 |
+
background: url("../images/quicknav_bg.gif") top left repeat-x;
|
4441 |
+
border-top: 1px solid #BCBCBC;
|
4442 |
+
border-bottom: 1px solid #BCBCBC;
|
4443 |
+
}
|
4444 |
+
.clear:after {
|
4445 |
+
content: ".";
|
4446 |
+
display: block;
|
4447 |
+
height: 0;
|
4448 |
+
clear: both;
|
4449 |
+
visibility: hidden;
|
4450 |
+
line-height: 0;
|
4451 |
+
}
|
4452 |
+
|
4453 |
+
a {
|
4454 |
+
outline: none;
|
4455 |
+
text-decoration: none;
|
4456 |
+
color:#421E1E
|
4457 |
+
}
|
4458 |
+
|
4459 |
+
|
4460 |
+
#home-main{background:white;min-height:400px;width:975px; padding:10px;}
|
4461 |
+
|
4462 |
+
|
4463 |
+
/* FILTERED ITEMS ----------------------------------------------------*/
|
4464 |
+
.isotope-item {
|
4465 |
+
z-index: 2;
|
4466 |
+
}
|
4467 |
+
.isotope-hidden.isotope-item {
|
4468 |
+
pointer-events: none;
|
4469 |
+
z-index: 1;
|
4470 |
+
}
|
4471 |
+
|
4472 |
+
/**** Isotope CSS3 transitions ****/
|
4473 |
+
|
4474 |
+
.isotope,
|
4475 |
+
.isotope .isotope-item {
|
4476 |
+
-webkit-transition-duration: 0.8s;
|
4477 |
+
-moz-transition-duration: 0.8s;
|
4478 |
+
-ms-transition-duration: 0.8s;
|
4479 |
+
-o-transition-duration: 0.8s;
|
4480 |
+
transition-duration: 0.8s;
|
4481 |
+
}
|
4482 |
+
|
4483 |
+
.isotope {
|
4484 |
+
-webkit-transition-property: height, width;
|
4485 |
+
-moz-transition-property: height, width;
|
4486 |
+
-ms-transition-property: height, width;
|
4487 |
+
-o-transition-property: height, width;
|
4488 |
+
transition-property: height, width;
|
4489 |
+
}
|
4490 |
+
|
4491 |
+
.isotope .isotope-item {
|
4492 |
+
-webkit-transition-property: -webkit-transform, opacity;
|
4493 |
+
-moz-transition-property: -moz-transform, opacity;
|
4494 |
+
-ms-transition-property: -ms-transform, opacity;
|
4495 |
+
-o-transition-property: -o-transform, opacity;
|
4496 |
+
transition-property: transform, opacity;
|
4497 |
+
}
|
4498 |
+
|
4499 |
+
/**** disabling Isotope CSS3 transitions ****/
|
4500 |
+
|
4501 |
+
.isotope.no-transition,
|
4502 |
+
.isotope.no-transition .isotope-item,
|
4503 |
+
.isotope .isotope-item.no-transition {
|
4504 |
+
-webkit-transition-duration: 0s;
|
4505 |
+
-moz-transition-duration: 0s;
|
4506 |
+
-ms-transition-duration: 0s;
|
4507 |
+
-o-transition-duration: 0s;
|
4508 |
+
transition-duration: 0s;
|
4509 |
+
}
|
4510 |
+
#filter-buttons {
|
4511 |
+
text-align: center;
|
4512 |
+
border-bottom: 1px solid #999;
|
4513 |
+
margin-bottom: 20px;
|
4514 |
+
}
|
4515 |
+
#filter-buttons li {
|
4516 |
+
display: inline-block;
|
4517 |
+
margin-bottom: 0px;
|
4518 |
+
}
|
4519 |
+
#filter-buttons li a {
|
4520 |
+
display: block;
|
4521 |
+
text-decoration: none;
|
4522 |
+
padding: 5px 10px;
|
4523 |
+
margin-bottom: 0px;
|
4524 |
+
}
|
4525 |
+
#filter-buttons.second {
|
4526 |
+
text-align: center;
|
4527 |
+
border-bottom: 1px solid #999;
|
4528 |
+
margin-bottom: 20px;
|
4529 |
+
}
|
4530 |
+
#filter-buttons.second li {
|
4531 |
+
display: inline-block;
|
4532 |
+
margin-bottom: 0px;
|
4533 |
+
}
|
4534 |
+
#filter-buttons.second li a {
|
4535 |
+
display: block;
|
4536 |
+
text-decoration: none;
|
4537 |
+
padding: 5px 10px;
|
4538 |
+
margin-bottom: 0px;
|
4539 |
+
}
|
4540 |
+
#filter-container {
|
4541 |
+
|
4542 |
+
margin-bottom: 20px;
|
4543 |
+
/* Fixes shadow and margin right */
|
4544 |
+
padding-top: 5px;
|
4545 |
+
}
|
4546 |
+
#filter-container.second {
|
4547 |
+
width: 740px;
|
4548 |
+
margin-bottom: 60px;
|
4549 |
+
/* Fixes shadow and margin right */
|
4550 |
+
|
4551 |
+
padding-left: 5px;
|
4552 |
+
padding-top: 5px;
|
4553 |
+
margin-left: -5px;
|
4554 |
+
}
|
4555 |
+
#filter-container .figure {
|
4556 |
+
width: 300px;
|
4557 |
+
border: 1px solid #EEE;
|
4558 |
+
float: left;
|
4559 |
+
margin-right: 20px;
|
4560 |
+
margin-bottom: 30px;
|
4561 |
+
-webkit-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4562 |
+
-moz-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4563 |
+
-o-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4564 |
+
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4565 |
+
}
|
4566 |
+
#filter-container.second .figure {
|
4567 |
+
width: 226px;
|
4568 |
+
float: left;
|
4569 |
+
margin-right: 20px;
|
4570 |
+
margin-bottom: 30px;
|
4571 |
+
-webkit-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4572 |
+
-moz-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4573 |
+
-o-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4574 |
+
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
|
4575 |
+
}
|
4576 |
+
#filter-container .figure .thumb {
|
4577 |
+
display: block;
|
4578 |
+
border-bottom: 2px solid #ccc;
|
4579 |
+
background: white;
|
4580 |
+
margin-bottom: -7px;
|
4581 |
+
}
|
4582 |
+
#filter-container .figure .thumb img {
|
4583 |
+
max-width: 100%;
|
4584 |
+
-webkit-transition: all 0.3s ease;
|
4585 |
+
-moz-transition: all 0.3s ease;
|
4586 |
+
-o-transition: all 0.3s ease;
|
4587 |
+
transition: all 0.3s ease;
|
4588 |
+
}
|
4589 |
+
#filter-container .figure .thumb:hover img {
|
4590 |
+
opacity: 0.2;
|
4591 |
+
}
|
4592 |
+
.figcaption{padding: 10px;}
|
4593 |
+
|
4594 |
+
#filter-container.figure.figcaption {
|
4595 |
+
margin: 18px 10px 20px 10px;
|
4596 |
+
text-align: center;
|
4597 |
+
}
|
4598 |
+
#filter-container .figure .figcaption .heading {
|
4599 |
+
color:white;
|
4600 |
+
font-size: 18px;
|
4601 |
+
line-height: 1.2em;
|
4602 |
+
text-transform: uppercase;
|
4603 |
+
display: block;
|
4604 |
+
-webkit-transition: all 0.3s ease;
|
4605 |
+
-moz-transition: all 0.3s ease;
|
4606 |
+
-o-transition: all 0.3s ease;
|
4607 |
+
transition: all 0.3s ease;
|
4608 |
+
}
|
4609 |
+
#filter-container ..figure .figcaption .readmore {
|
4610 |
+
display: block;
|
4611 |
+
margin: 10px 0px;
|
4612 |
+
}
|
4613 |
+
.figure, .figcaption {
|
4614 |
+
font: inherit;
|
4615 |
+
vertical-align: baseline;
|
4616 |
+
list-style-type:none;
|
4617 |
+
background:#585757;
|
4618 |
+
}
|
4619 |
+
|
4620 |
+
|
4621 |
+
#topbar ul{
|
4622 |
+
display:block;
|
4623 |
+
float:left;
|
4624 |
+
font-size:12px;
|
4625 |
+
font-family:Georgia, "Times New Roman", Times, serif;
|
4626 |
+
text-transform:uppercase;
|
4627 |
+
}
|
4628 |
+
/*.mybox{padding:20px; background:white;}*/
|
4629 |
+
|
4630 |
+
#topbar ul, #topbar ul li{
|
4631 |
+
margin:0;
|
4632 |
+
padding:0;
|
4633 |
+
list-style:none;
|
4634 |
+
padding-left:10px;
|
4635 |
+
}
|
4636 |
+
#topbar .nav-container #nav{margin-top:12px;}
|
4637 |
+
#topbar ul#topnav{
|
4638 |
+
margin-top:7px;
|
4639 |
+
}
|
4640 |
+
|
4641 |
+
#topbar ul li{
|
4642 |
+
float:left;
|
4643 |
+
margin-right:30px;
|
4644 |
+
}
|
4645 |
+
|
4646 |
+
#topbar ul li li{
|
4647 |
+
margin-left:0;
|
4648 |
+
}
|
4649 |
+
|
4650 |
+
#topbar ul li a:link, #topbar ul li a:visited, #topbar ul li a:hover{
|
4651 |
+
display:block;
|
4652 |
+
margin:0;
|
4653 |
+
padding:0;
|
4654 |
+
color:#676767;
|
4655 |
+
|
4656 |
+
}
|
4657 |
+
|
4658 |
+
#topbar ul ul li a:link, #topbar ul ul li a:visited{
|
4659 |
+
border:none;
|
4660 |
+
}
|
4661 |
+
|
4662 |
+
#topbar ul li a:hover, #topbar ul li.active a{
|
4663 |
+
color:#ECC663;
|
4664 |
+
background-color:#191919;
|
4665 |
+
}
|
4666 |
+
|
4667 |
+
#topbar ul li li a:link, #topbar ul li li a:visited{
|
4668 |
+
width:150px;
|
4669 |
+
float:none;
|
4670 |
+
margin:0;
|
4671 |
+
padding:7px 10px;
|
4672 |
+
font-size:12px;
|
4673 |
+
font-weight:normal;
|
4674 |
+
color:#676767;
|
4675 |
+
background-color:#191919;
|
4676 |
+
}
|
4677 |
+
|
4678 |
+
#topbar ul li li a:hover{
|
4679 |
+
color:#ECC663;
|
4680 |
+
background-color:#191919;
|
4681 |
+
}
|
4682 |
+
|
4683 |
+
#topbar ul ul{
|
4684 |
+
z-index:9999;
|
4685 |
+
position:absolute;
|
4686 |
+
left:-999em;
|
4687 |
+
height:auto;
|
4688 |
+
width:170px;
|
4689 |
+
}
|
4690 |
+
|
4691 |
+
#topbar ul ul a{width:140px;}
|
4692 |
+
|
4693 |
+
#topbar ul li:hover ul{left:auto;margin-left:-20px;}
|
4694 |
+
|
4695 |
+
#topbar ul li:hover{position:static;}
|
4696 |
+
|
4697 |
+
#topbar ul li.last{margin-right:0;}
|
4698 |
+
#topbar, #header, #container, #footer, #copyright{
|
4699 |
+
position:relative;
|
4700 |
+
margin:0 auto 0;
|
4701 |
+
display:block;
|
4702 |
+
width:960px;
|
4703 |
+
}
|
4704 |
+
|
4705 |
+
#topbar, #header, #container, #footer, #copyright {
|
4706 |
+
position: relative;
|
4707 |
+
margin: 0 auto 0;
|
4708 |
+
display: block;
|
4709 |
+
width: 996px;
|
4710 |
+
}
|
4711 |
+
.clear {
|
4712 |
+
display: block;
|
4713 |
+
}
|
4714 |
+
.clear {
|
4715 |
+
display: inline-block;
|
4716 |
+
}
|
4717 |
+
|
4718 |
+
.row4, .row4 a {
|
4719 |
+
color: #919191;
|
4720 |
+
background-color: #232323;
|
4721 |
+
}
|
4722 |
+
.col0 {
|
4723 |
+
color: #676767;
|
4724 |
+
background-color: #191919;
|
4725 |
+
border-bottom: 1px solid #333333;
|
4726 |
+
}
|
4727 |
+
table,tr,td,tbody{border-spacing:0px !important;}
|
4728 |
+
#topbar{z-index:1000;display:inline-block;}
|
4729 |
+
|
4730 |
+
|
4731 |
+
|
4732 |
+
.modalDialog {
|
4733 |
+
position: fixed;
|
4734 |
+
font-family: Arial, Helvetica, sans-serif;
|
4735 |
+
top: 0;
|
4736 |
+
right: 0;
|
4737 |
+
bottom: 0;
|
4738 |
+
left: 0;
|
4739 |
+
background: rgba(0,0,0,0.8);
|
4740 |
+
z-index: 99999;
|
4741 |
+
opacity:0;
|
4742 |
+
-webkit-transition: opacity 400ms ease-in;
|
4743 |
+
-moz-transition: opacity 400ms ease-in;
|
4744 |
+
transition: opacity 400ms ease-in;
|
4745 |
+
pointer-events: none;
|
4746 |
+
}
|
4747 |
+
|
4748 |
+
.modalDialog:target {
|
4749 |
+
opacity:1;
|
4750 |
+
pointer-events: auto;
|
4751 |
+
}
|
4752 |
+
|
4753 |
+
.modalDialog > div {
|
4754 |
+
width: 400px;
|
4755 |
+
position: absolute;
|
4756 |
+
margin: 10% auto;
|
4757 |
+
padding: 5px 20px 13px 20px;
|
4758 |
+
border-radius: 10px;
|
4759 |
+
background: #f1f1f1;
|
4760 |
+
top:70px;
|
4761 |
+
left:490px;
|
4762 |
+
}
|
4763 |
+
|
4764 |
+
.close {
|
4765 |
+
background: #606061;
|
4766 |
+
color: #FFFFFF;
|
4767 |
+
line-height: 25px;
|
4768 |
+
position: absolute;
|
4769 |
+
right: -12px;
|
4770 |
+
text-align: center;
|
4771 |
+
top: -10px;
|
4772 |
+
width: 24px;
|
4773 |
+
text-decoration: none;
|
4774 |
+
font-weight: bold;
|
4775 |
+
-webkit-border-radius: 12px;
|
4776 |
+
-moz-border-radius: 12px;
|
4777 |
+
border-radius: 12px;
|
4778 |
+
-moz-box-shadow: 1px 1px 3px #000;
|
4779 |
+
-webkit-box-shadow: 1px 1px 3px #000;
|
4780 |
+
box-shadow: 1px 1px 3px #000;
|
4781 |
+
}
|
4782 |
+
|
4783 |
+
.close:hover { background: #00d9ff; }
|
4784 |
+
|
4785 |
+
.modalDialog .play{
|
4786 |
+
color: #444;
|
4787 |
+
font-weight: bold;
|
4788 |
+
text-decoration: underline;
|
4789 |
+
|
4790 |
+
}
|
4791 |
+
|
4792 |
+
.modalDialog ul{
|
4793 |
+
margin-bottom: 20px;
|
4794 |
+
margin-left: 30px;
|
4795 |
+
}
|
4796 |
+
|
4797 |
+
.modalDialog li{
|
4798 |
+
margin-bottom: 10px;
|
4799 |
+
list-style: decimal;
|
4800 |
+
}
|
4801 |
+
|
4802 |
+
.modalDialog small{
|
4803 |
+
color: #888;
|
4804 |
+
font-size: 12px;
|
4805 |
+
}
|
4806 |
+
|
4807 |
+
.modalDialog h2{
|
4808 |
+
margin-bottom: 30px;
|
4809 |
+
}
|
skin/frontend/base/default/images/ajax-loader.gif
ADDED
Binary file
|
skin/frontend/base/default/js/ajax_cart.js
ADDED
@@ -0,0 +1,230 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Vladimir Fishchenko extension for Magento
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
7 |
+
* that is bundled with this package in the file LICENSE.txt.
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* DISCLAIMER
|
12 |
+
*
|
13 |
+
* Do not edit or add to this file if you wish to upgrade
|
14 |
+
* the Oggetto AjaxCart module to newer versions in the future.
|
15 |
+
* If you wish to customize the Oggetto AjaxCart module for your needs
|
16 |
+
* please refer to http://www.magentocommerce.com for more information.
|
17 |
+
*
|
18 |
+
* @category design
|
19 |
+
* @package base_default
|
20 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
21 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
22 |
+
*/
|
23 |
+
var AjaxCart = Class.create({
|
24 |
+
buttonSelector: '.btn-cart',
|
25 |
+
sidebarCartSelector: '.block-cart',
|
26 |
+
removeLinkSelector: 'a.btn-remove',
|
27 |
+
cartPageSelector: '.checkout-cart-index',
|
28 |
+
cartPageUpdateButtonsSelector: 'button[name=update_cart_action]',
|
29 |
+
topLinksSelector: '.links',
|
30 |
+
urlMatch: /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/,
|
31 |
+
initialize: function () {
|
32 |
+
this.isLoading = false;
|
33 |
+
|
34 |
+
this._observeButtons();
|
35 |
+
this._observeSidebar();
|
36 |
+
this._observeCartPage();
|
37 |
+
},
|
38 |
+
_observeButtons: function() {
|
39 |
+
var _this = this;
|
40 |
+
$$(this.buttonSelector).each(function(th) {
|
41 |
+
var href = '';
|
42 |
+
if (th.onclick) {
|
43 |
+
href = th.onclick.toString().match(_this.urlMatch);
|
44 |
+
if (href) {
|
45 |
+
href = href[0];
|
46 |
+
}
|
47 |
+
th.onclick = null;
|
48 |
+
}
|
49 |
+
if (!href) {
|
50 |
+
var form = th.up('form');
|
51 |
+
if (form) {
|
52 |
+
href = form.action;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
th.observe('click', function(e) {
|
56 |
+
Event.stop(e);
|
57 |
+
var form = th.up('form');
|
58 |
+
var params = '';
|
59 |
+
if (form) {
|
60 |
+
params = form.serialize();
|
61 |
+
}
|
62 |
+
_this.openCart(href, params);
|
63 |
+
});
|
64 |
+
});
|
65 |
+
},
|
66 |
+
_observeSidebar : function () {
|
67 |
+
var _this = this;
|
68 |
+
$$(this.sidebarCartSelector + ' ' + this.removeLinkSelector).each(function(th) {
|
69 |
+
th.observe('click', function (e) {
|
70 |
+
Event.stop(e);
|
71 |
+
_this.openCart(th.href, {});
|
72 |
+
});
|
73 |
+
});
|
74 |
+
},
|
75 |
+
_observeCartPage : function () {
|
76 |
+
var _this = this;
|
77 |
+
|
78 |
+
var updateCartPage = function (transport) {
|
79 |
+
var response = transport.responseJSON;
|
80 |
+
if (response) {
|
81 |
+
if (response['custom_content_data']['checkout.cart']) {
|
82 |
+
var element = new Element('div');
|
83 |
+
element.update(response['custom_content_data']['checkout.cart']);
|
84 |
+
|
85 |
+
//update cart table
|
86 |
+
var cartTableNew = element.down('#shopping-cart-table');
|
87 |
+
var cartTable = $('shopping-cart-table');
|
88 |
+
if (cartTable && cartTableNew) {
|
89 |
+
cartTable.replace(cartTableNew);
|
90 |
+
_this._observeCartPage();
|
91 |
+
}
|
92 |
+
|
93 |
+
//update totals
|
94 |
+
var totalsNew = element.down('#shopping-cart-totals-table');
|
95 |
+
var totals = $('shopping-cart-totals-table');
|
96 |
+
if (totals && totalsNew) {
|
97 |
+
totals.replace(totalsNew);
|
98 |
+
}
|
99 |
+
|
100 |
+
//if no cartTable and totals - update all (usually for empty cart)
|
101 |
+
if (!cartTableNew && !totalsNew) {
|
102 |
+
var cart = $$('.cart').first();
|
103 |
+
if (cart) {
|
104 |
+
cart.replace(response['custom_content_data']['checkout.cart']);
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
_this.hideLoader();
|
109 |
+
}
|
110 |
+
};
|
111 |
+
|
112 |
+
$$(this.cartPageSelector + ' ' + this.cartPageUpdateButtonsSelector).each(function (el) {
|
113 |
+
el.observe('click', function (e) {
|
114 |
+
var form = el.up('form');
|
115 |
+
if (form) {
|
116 |
+
Event.stop(e);
|
117 |
+
var formData = '';
|
118 |
+
if (el.value == 'empty_cart') {
|
119 |
+
formData = 'update_cart_action=empty_cart';
|
120 |
+
} else {
|
121 |
+
formData = form.serialize();
|
122 |
+
}
|
123 |
+
|
124 |
+
if (_this.isLoading) {
|
125 |
+
return false;
|
126 |
+
}
|
127 |
+
_this.showLoader();
|
128 |
+
new EasyAjax.Request(form.action, {
|
129 |
+
method: 'post',
|
130 |
+
custom_content: ['checkout.cart'],
|
131 |
+
parameters: formData,
|
132 |
+
onComplete: updateCartPage
|
133 |
+
});
|
134 |
+
}
|
135 |
+
});
|
136 |
+
});
|
137 |
+
$$(this.cartPageSelector + ' ' + this.removeLinkSelector).each(function (el) {
|
138 |
+
el.observe('click', function (e) {
|
139 |
+
Event.stop(e);
|
140 |
+
if (_this.isLoading) {
|
141 |
+
return false;
|
142 |
+
}
|
143 |
+
_this.showLoader();
|
144 |
+
new EasyAjax.Request(el.href, {
|
145 |
+
method: 'get',
|
146 |
+
custom_content: ['checkout.cart'],
|
147 |
+
onComplete: updateCartPage
|
148 |
+
});
|
149 |
+
});
|
150 |
+
});
|
151 |
+
},
|
152 |
+
_updateSidebarCart : function(data) {
|
153 |
+
var cartOld = $$(this.sidebarCartSelector).first();
|
154 |
+
if (cartOld) {
|
155 |
+
cartOld.replace(data);
|
156 |
+
this._observeSidebar();
|
157 |
+
}
|
158 |
+
},
|
159 |
+
_updateTopLinks: function(data) {
|
160 |
+
var topLinks = $$(this.topLinksSelector).first();
|
161 |
+
if (topLinks) {
|
162 |
+
topLinks.replace(data);
|
163 |
+
}
|
164 |
+
},
|
165 |
+
openCart: function(href, params) {
|
166 |
+
var _this = this;
|
167 |
+
if (this.isLoading) {
|
168 |
+
return false;
|
169 |
+
}
|
170 |
+
this.showLoader();
|
171 |
+
new EasyAjax.Request(href, {
|
172 |
+
method: 'post',
|
173 |
+
action_content: ['cart_sidebar', 'top.links'],
|
174 |
+
parameters: params,
|
175 |
+
onComplete: function (transport) {
|
176 |
+
var response = transport.responseJSON;
|
177 |
+
if (response) {
|
178 |
+
var messages = response.messages;
|
179 |
+
var actionContent = response['action_content_data'];
|
180 |
+
if (actionContent) {
|
181 |
+
var cartNewData = actionContent['cart_sidebar'];
|
182 |
+
if (cartNewData) {
|
183 |
+
_this._updateSidebarCart(cartNewData);
|
184 |
+
}
|
185 |
+
var topLinks = actionContent['top.links'];
|
186 |
+
if (topLinks) {
|
187 |
+
_this._updateTopLinks(topLinks);
|
188 |
+
}
|
189 |
+
}
|
190 |
+
_this.hideLoader();
|
191 |
+
if (messages) {
|
192 |
+
var message = messages[0];
|
193 |
+
if (message) {
|
194 |
+
_this.showMessage(message);
|
195 |
+
}
|
196 |
+
}
|
197 |
+
} else {
|
198 |
+
alert('ERROR!');
|
199 |
+
}
|
200 |
+
}
|
201 |
+
});
|
202 |
+
},
|
203 |
+
showMessage : function (message) {
|
204 |
+
var modal = $('ajax-cart-modal');
|
205 |
+
if (modal) {
|
206 |
+
$('ajax-cart-modal-message').update(message.code);
|
207 |
+
modal.show();
|
208 |
+
} else {
|
209 |
+
alert(message.code);
|
210 |
+
}
|
211 |
+
},
|
212 |
+
showLoader : function () {
|
213 |
+
this.isLoading = true;
|
214 |
+
var loader = $('ajax-cart-loading-mask');
|
215 |
+
if (loader) {
|
216 |
+
loader.show();
|
217 |
+
}
|
218 |
+
},
|
219 |
+
hideLoader : function () {
|
220 |
+
this.isLoading = false;
|
221 |
+
var loader = $('ajax-cart-loading-mask');
|
222 |
+
if (loader) {
|
223 |
+
loader.hide();
|
224 |
+
}
|
225 |
+
}
|
226 |
+
});
|
227 |
+
|
228 |
+
document.observe("dom:loaded", function() {
|
229 |
+
new AjaxCart;
|
230 |
+
});
|
skin/frontend/base/default/js/easy_ajax.js
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Vladimir Fishchenko extension for Magento
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
7 |
+
* that is bundled with this package in the file LICENSE.txt.
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category design
|
12 |
+
* @package base_default
|
13 |
+
* @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
var EasyAjax = Class.create(Ajax);
|
18 |
+
|
19 |
+
EasyAjax.Request = Class.create(Ajax.Request, {
|
20 |
+
initialize: function($super, url, options) {
|
21 |
+
this.action_content = options.action_content || [];
|
22 |
+
this.custom_content = options.custom_content || [];
|
23 |
+
$super(url, options);
|
24 |
+
},
|
25 |
+
request: function ($super, url)
|
26 |
+
{
|
27 |
+
var params = this.options.parameters;
|
28 |
+
|
29 |
+
//add easy_ajax flat
|
30 |
+
params += params ? '&' : '';
|
31 |
+
params += 'easy_ajax=1';
|
32 |
+
|
33 |
+
//add action content params
|
34 |
+
var actionContent = this.action_content;
|
35 |
+
if (Object.isString(actionContent)) {
|
36 |
+
customContent = [actionContent];
|
37 |
+
}
|
38 |
+
for (var i = 0; i < actionContent.length; ++i) {
|
39 |
+
params += '&action_content[' + i + ']=' + actionContent[i];
|
40 |
+
}
|
41 |
+
|
42 |
+
//add custom content params
|
43 |
+
var customContent = this.custom_content;
|
44 |
+
if (Object.isString(customContent)) {
|
45 |
+
customContent = [customContent];
|
46 |
+
}
|
47 |
+
for (var i = 0; i < customContent.length; ++i) {
|
48 |
+
params += '&custom_content[' + i + ']=' + customContent[i];
|
49 |
+
}
|
50 |
+
|
51 |
+
this.options.parameters = params;
|
52 |
+
|
53 |
+
$super(url);
|
54 |
+
}
|
55 |
+
});
|