Version Notes
Check all cross-browser and config with another extension
Download this release
Release Info
Developer | Kevin Black |
Extension | QAZ_Qbanner |
Version | 1.9.1 |
Comparing to | |
See all releases |
Version 1.9.1
- app/code/community/Qaz/All/Helper/Data.php +20 -0
- app/code/community/Qaz/All/etc/config.xml +39 -0
- app/code/community/Qaz/All/etc/system.xml +9 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner.php +12 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit.php +37 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Form.php +19 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Category.php +194 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Form.php +122 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Image.php +168 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Pages.php +39 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tabs.php +36 -0
- app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Grid.php +109 -0
- app/code/community/Qaz/Qbanner/Block/Qbanner.php +54 -0
- app/code/community/Qaz/Qbanner/Helper/Data.php +5 -0
- app/code/community/Qaz/Qbanner/Model/Config.php +155 -0
- app/code/community/Qaz/Qbanner/Model/Mysql4/Qbanner.php +282 -0
- app/code/community/Qaz/Qbanner/Model/Mysql4/Qbanner/Collection.php +55 -0
- app/code/community/Qaz/Qbanner/Model/Option/Pages.php +19 -0
- app/code/community/Qaz/Qbanner/Model/Option/Position.php +20 -0
- app/code/community/Qaz/Qbanner/Model/Option/Status.php +21 -0
- app/code/community/Qaz/Qbanner/Model/Qbanner.php +21 -0
- app/code/community/Qaz/Qbanner/controllers/Adminhtml/QbannerController.php +223 -0
- app/code/community/Qaz/Qbanner/controllers/IndexController.php +47 -0
- app/code/community/Qaz/Qbanner/etc/config.xml +157 -0
- app/code/community/Qaz/Qbanner/etc/system.xml +36 -0
- app/code/community/Qaz/Qbanner/sql/qbanner_setup/mysql4-install-0.1.0.php +60 -0
- app/code/community/Qaz/Qbanner/sql/qbanner_setup/mysql4-upgrade-1.7.1-1.8.1.php +10 -0
- app/design/adminhtml/default/default/layout/qbanner.xml +8 -0
- app/design/adminhtml/default/default/template/qaz/qbanner/edit/tab/category.phtml +183 -0
- app/design/adminhtml/default/default/template/qaz/qbanner/edit/tab/image.phtml +65 -0
- app/design/frontend/default/default/layout/qbanner.xml +11 -0
- app/design/frontend/default/default/template/qaz/qbanner/qbanner.after.header.phtml +109 -0
- app/design/frontend/default/default/template/qaz/qbanner/qbanner.content.top.phtml +109 -0
- app/etc/modules/Qaz_All.xml +10 -0
- app/etc/modules/Qaz_Qbanner.xml +9 -0
- js/qaz/qbanner/jquery.1.5.1.js +16 -0
- js/qaz/qbanner/jquery.slides.min.js +545 -0
- js/qaz/qbanner/jqueryNoconfig.js +1 -0
- media/qaz/qbanner/1/6/1694554_11311.jpg +0 -0
- media/qaz/qbanner/b/a/banner-2.jpg +0 -0
- media/qaz/qbanner/b/a/banner-21.jpg +0 -0
- media/qaz/qbanner/b/a/banner-21_1.jpg +0 -0
- media/qaz/qbanner/b/a/banner-21_2.jpg +0 -0
- media/qaz/qbanner/b/a/banner-2_1.jpg +0 -0
- media/qaz/qbanner/b/a/banner-2_2.jpg +0 -0
- media/qaz/qbanner/b/a/banner-2_3.jpg +0 -0
- media/qaz/qbanner/b/a/banner-3.jpg +0 -0
- media/qaz/qbanner/b/a/banner-31.jpg +0 -0
- media/qaz/qbanner/b/a/banner-31_1.jpg +0 -0
- media/qaz/qbanner/b/a/banner-3_1.jpg +0 -0
- media/qaz/qbanner/b/a/banner-3_2.jpg +0 -0
- media/qaz/qbanner/b/a/banner-3_3.jpg +0 -0
- media/qaz/qbanner/b/a/banner-3_4.jpg +0 -0
- media/qaz/qbanner/b/a/banner-3_5.jpg +0 -0
- media/qaz/qbanner/b/a/banner-3_6.jpg +0 -0
- media/qaz/qbanner/b/a/banner-4.jpg +0 -0
- media/qaz/qbanner/b/a/banner-4_1.jpg +0 -0
- media/qaz/qbanner/b/a/banner-4_2.jpg +0 -0
- media/qaz/qbanner/b/a/banner-4_3.jpg +0 -0
- media/qaz/qbanner/b/a/banner-4_4.jpg +0 -0
- media/qaz/qbanner/b/a/banner-4_5.jpg +0 -0
- media/qaz/qbanner/b/a/banner-4_6.jpg +0 -0
- media/qaz/qbanner/b/a/banner.jpg +0 -0
- media/qaz/qbanner/b/o/bottom_banner.jpg +0 -0
- media/qaz/qbanner/b/o/bottom_banner2.jpg +0 -0
- media/qaz/qbanner/b/o/bottom_banner2_1.jpg +0 -0
- media/qaz/qbanner/t/o/top_banner.jpg +0 -0
- media/qaz/qbanner/t/o/top_banner_1.jpg +0 -0
- package.xml +20 -0
- skin/frontend/default/default/qaz/qbanner/css/global.css +115 -0
- skin/frontend/default/default/qaz/qbanner/images/arrow-bg.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/arrow-bg2.gif +0 -0
- skin/frontend/default/default/qaz/qbanner/images/arrow-l.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/arrow-next.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/arrow-prev.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/arrow-r.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/b_next.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/b_prev.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/background.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/example-frame.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/loading.gif +0 -0
- skin/frontend/default/default/qaz/qbanner/images/new-ribbon.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/pagination.png +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide-1.jpg +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide-2.jpg +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide-3.jpg +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide-4.jpg +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide-5.jpg +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide-6.jpg +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide-7.jpg +0 -0
- skin/frontend/default/default/qaz/qbanner/images/slide.jpg +0 -0
app/code/community/Qaz/All/Helper/Data.php
ADDED
@@ -0,0 +1,20 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* http://www.extensionsmagento.com
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the EULA
|
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 |
+
|
12 |
+
*
|
13 |
+
* @category Qaz
|
14 |
+
* @package Qaz_All
|
15 |
+
* @copyright Copyright (c) 2011 Qazware http://www.extensionsmagento.com
|
16 |
+
*/
|
17 |
+
class Qaz_All_Helper_Data extends Mage_Core_Helper_Abstract {
|
18 |
+
|
19 |
+
}
|
20 |
+
|
app/code/community/Qaz/All/etc/config.xml
ADDED
@@ -0,0 +1,39 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Qaz_All>
|
5 |
+
<version>1.0.1</version>
|
6 |
+
</Qaz_All>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<helpers>
|
10 |
+
<all>
|
11 |
+
<class>Qaz_All_Helper</class>
|
12 |
+
</all>
|
13 |
+
</helpers>
|
14 |
+
</global>
|
15 |
+
<adminhtml>
|
16 |
+
<acl>
|
17 |
+
<resources>
|
18 |
+
<all>
|
19 |
+
<title>Allow Everything</title>
|
20 |
+
</all>
|
21 |
+
<admin>
|
22 |
+
<children>
|
23 |
+
<system>
|
24 |
+
<children>
|
25 |
+
<config>
|
26 |
+
<children>
|
27 |
+
<all>
|
28 |
+
<title>qazMagentoExtensions - All</title>
|
29 |
+
</all>
|
30 |
+
</children>
|
31 |
+
</config>
|
32 |
+
</children>
|
33 |
+
</system>
|
34 |
+
</children>
|
35 |
+
</admin>
|
36 |
+
</resources>
|
37 |
+
</acl>
|
38 |
+
</adminhtml>
|
39 |
+
</config>
|
app/code/community/Qaz/All/etc/system.xml
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<qall translate="label" module="all">
|
5 |
+
<label>Qazware Extensions</label>
|
6 |
+
<sort_order>100</sort_order>
|
7 |
+
</qall>
|
8 |
+
</tabs>
|
9 |
+
</config>
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner.php
ADDED
@@ -0,0 +1,12 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class Qaz_Qbanner_Block_Adminhtml_Qbanner extends Mage_Adminhtml_Block_Widget_Grid_Container
|
3 |
+
{
|
4 |
+
public function __construct()
|
5 |
+
{
|
6 |
+
$this->_controller = 'adminhtml_qbanner';
|
7 |
+
$this->_blockGroup = 'qbanner';
|
8 |
+
$this->_headerText = Mage::helper('qbanner')->__('Qbanner Manager');
|
9 |
+
$this->_addButtonLabel = Mage::helper('qbanner')->__('Add New Banner');
|
10 |
+
parent::__construct();
|
11 |
+
}
|
12 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit.php
ADDED
@@ -0,0 +1,37 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Block_Adminhtml_Qbanner_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
$this->_objectId = 'id';
|
10 |
+
$this->_blockGroup = 'qbanner';
|
11 |
+
$this->_controller = 'adminhtml_qbanner';
|
12 |
+
|
13 |
+
$this->_updateButton('save', 'label', Mage::helper('qbanner')->__('Save Banner'));
|
14 |
+
$this->_updateButton('delete', 'label', Mage::helper('qbanner')->__('Delete Banner'));
|
15 |
+
|
16 |
+
$this->_addButton('saveandcontinue', array(
|
17 |
+
'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
|
18 |
+
'onclick' => 'saveAndContinueEdit()',
|
19 |
+
'class' => 'save',
|
20 |
+
), -100);
|
21 |
+
|
22 |
+
$this->_formScripts[] = "
|
23 |
+
function saveAndContinueEdit(){
|
24 |
+
editForm.submit($('edit_form').action+'back/edit/');
|
25 |
+
}
|
26 |
+
";
|
27 |
+
}
|
28 |
+
|
29 |
+
public function getHeaderText()
|
30 |
+
{
|
31 |
+
if( Mage::registry('qbanner_data') && Mage::registry('qbanner_data')->getId() ) {
|
32 |
+
return Mage::helper('qbanner')->__("Edit Banner '%s'", $this->htmlEscape(Mage::registry('qbanner_data')->getTitle()));
|
33 |
+
} else {
|
34 |
+
return Mage::helper('qbanner')->__('Add New Banner');
|
35 |
+
}
|
36 |
+
}
|
37 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Form.php
ADDED
@@ -0,0 +1,19 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Block_Adminhtml_Qbanner_Edit_Form extends Mage_Adminhtml_Block_Widget_Form {
|
4 |
+
|
5 |
+
protected function _prepareForm() {
|
6 |
+
$form = new Varien_Data_Form(array(
|
7 |
+
'id' => 'edit_form',
|
8 |
+
'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
|
9 |
+
'method' => 'post',
|
10 |
+
'enctype' => 'multipart/form-data'
|
11 |
+
)
|
12 |
+
);
|
13 |
+
|
14 |
+
$form->setUseContainer(true);
|
15 |
+
$this->setForm($form);
|
16 |
+
return parent::_prepareForm();
|
17 |
+
}
|
18 |
+
|
19 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Category.php
ADDED
@@ -0,0 +1,194 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @author kevin.magento@gmail.com
|
4 |
+
*/
|
5 |
+
class Qaz_Qbanner_Block_Adminhtml_QBanner_Edit_Tab_Category extends Mage_Adminhtml_Block_Catalog_Category_Tree
|
6 |
+
{
|
7 |
+
protected $_categoryIds;
|
8 |
+
protected $_selectedNodes = null;
|
9 |
+
|
10 |
+
public function __construct()
|
11 |
+
{
|
12 |
+
parent::__construct();
|
13 |
+
$this->setTemplate('qaz/qbanner/edit/tab/category.phtml');
|
14 |
+
}
|
15 |
+
|
16 |
+
public function getBanner()
|
17 |
+
{
|
18 |
+
return Mage::registry('qbanner_data');
|
19 |
+
}
|
20 |
+
|
21 |
+
public function isReadonly()
|
22 |
+
{
|
23 |
+
return $this->getBanner()->getCategoriesReadonly();
|
24 |
+
}
|
25 |
+
|
26 |
+
protected function getCategoryIds()
|
27 |
+
{
|
28 |
+
$_categoryList = $this->getBanner()->getCategoryId();
|
29 |
+
return is_array($_categoryList) ? $_categoryList : array();
|
30 |
+
}
|
31 |
+
|
32 |
+
public function getIdsString()
|
33 |
+
{
|
34 |
+
return implode(',', $this->getCategoryIds());
|
35 |
+
}
|
36 |
+
|
37 |
+
public function getRootNode()
|
38 |
+
{
|
39 |
+
$root = $this->getRoot();
|
40 |
+
if ($root && in_array($root->getId(), $this->getCategoryIds())) {
|
41 |
+
$root->setChecked(true);
|
42 |
+
}
|
43 |
+
return $root;
|
44 |
+
}
|
45 |
+
|
46 |
+
public function getRoot($parentNodeCategory=null, $recursionLevel=3)
|
47 |
+
{
|
48 |
+
if (!is_null($parentNodeCategory) && $parentNodeCategory->getId()) {
|
49 |
+
return $this->getNode($parentNodeCategory, $recursionLevel);
|
50 |
+
}
|
51 |
+
$root = Mage::registry('root');
|
52 |
+
if (is_null($root)) {
|
53 |
+
$storeId = (int) $this->getRequest()->getParam('store');
|
54 |
+
|
55 |
+
if ($storeId) {
|
56 |
+
$store = Mage::app()->getStore($storeId);
|
57 |
+
$rootId = $store->getRootCategoryId();
|
58 |
+
}
|
59 |
+
else {
|
60 |
+
$rootId = Mage_Catalog_Model_Category::TREE_ROOT_ID;
|
61 |
+
}
|
62 |
+
|
63 |
+
$ids = $this->getSelectedCategoriesPathIds($rootId);
|
64 |
+
$tree = Mage::getResourceSingleton('catalog/category_tree')
|
65 |
+
->loadByIds($ids, false, false);
|
66 |
+
|
67 |
+
if ($this->getCategory()) {
|
68 |
+
$tree->loadEnsuredNodes($this->getCategory(), $tree->getNodeById($rootId));
|
69 |
+
}
|
70 |
+
|
71 |
+
$tree->addCollectionData($this->getCategoryCollection());
|
72 |
+
|
73 |
+
$root = $tree->getNodeById($rootId);
|
74 |
+
|
75 |
+
if ($root && $rootId != Mage_Catalog_Model_Category::TREE_ROOT_ID) {
|
76 |
+
$root->setIsVisible(true);
|
77 |
+
if ($this->isReadonly()) {
|
78 |
+
$root->setDisabled(true);
|
79 |
+
}
|
80 |
+
}
|
81 |
+
elseif($root && $root->getId() == Mage_Catalog_Model_Category::TREE_ROOT_ID) {
|
82 |
+
$root->setName(Mage::helper('catalog')->__('Root'));
|
83 |
+
}
|
84 |
+
|
85 |
+
Mage::register('root', $root);
|
86 |
+
}
|
87 |
+
|
88 |
+
return $root;
|
89 |
+
}
|
90 |
+
|
91 |
+
protected function _getNodeJson($node, $level=1)
|
92 |
+
{
|
93 |
+
$item = parent::_getNodeJson($node, $level);
|
94 |
+
|
95 |
+
$isParent = $this->_isParentSelectedCategory($node);
|
96 |
+
|
97 |
+
if ($isParent) {
|
98 |
+
$item['expanded'] = true;
|
99 |
+
}
|
100 |
+
|
101 |
+
if (in_array($node->getId(), $this->getCategoryIds())) {
|
102 |
+
$item['checked'] = true;
|
103 |
+
}
|
104 |
+
|
105 |
+
if ($this->isReadonly()) {
|
106 |
+
$item['disabled'] = true;
|
107 |
+
}
|
108 |
+
return $item;
|
109 |
+
}
|
110 |
+
|
111 |
+
protected function _isParentSelectedCategory($node)
|
112 |
+
{
|
113 |
+
foreach ($this->_getSelectedNodes() as $selected) {
|
114 |
+
if ($selected) {
|
115 |
+
$pathIds = explode('/', $selected->getPathId());
|
116 |
+
if (in_array($node->getId(), $pathIds)) {
|
117 |
+
return true;
|
118 |
+
}
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
return false;
|
123 |
+
}
|
124 |
+
|
125 |
+
protected function _getSelectedNodes()
|
126 |
+
{
|
127 |
+
if ($this->_selectedNodes === null) {
|
128 |
+
$this->_selectedNodes = array();
|
129 |
+
$root = $this->getRoot();
|
130 |
+
foreach ($this->getCategoryIds() as $categoryId) {
|
131 |
+
if ($root) {
|
132 |
+
$this->_selectedNodes[] = $root->getTree()->getNodeById($categoryId);
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
return $this->_selectedNodes;
|
138 |
+
}
|
139 |
+
|
140 |
+
public function getCategoryChildrenJson($categoryId)
|
141 |
+
{
|
142 |
+
$category = Mage::getModel('catalog/category')->load($categoryId);
|
143 |
+
$node = $this->getRoot($category, 1)->getTree()->getNodeById($categoryId);
|
144 |
+
|
145 |
+
if (!$node || !$node->hasChildren()) {
|
146 |
+
return '[]';
|
147 |
+
}
|
148 |
+
|
149 |
+
$children = array();
|
150 |
+
foreach ($node->getChildren() as $child) {
|
151 |
+
$children[] = $this->_getNodeJson($child);
|
152 |
+
}
|
153 |
+
|
154 |
+
return Mage::helper('qbanner')->jsonEncode($children);
|
155 |
+
}
|
156 |
+
|
157 |
+
public function getLoadTreeUrl($expanded=null)
|
158 |
+
{
|
159 |
+
return $this->getUrl('*/*/categoriesJson', array('_current'=>true));
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Return distinct path ids of selected categories
|
164 |
+
*
|
165 |
+
* @param int $rootId Root category Id for context
|
166 |
+
* @return array
|
167 |
+
*/
|
168 |
+
public function getSelectedCategoriesPathIds($rootId = false)
|
169 |
+
{
|
170 |
+
$ids = array();
|
171 |
+
$collection = Mage::getModel('catalog/category')->getCollection()
|
172 |
+
->addFieldToFilter('entity_id', array('in'=>$this->getCategoryIds()));
|
173 |
+
foreach ($collection as $item) {
|
174 |
+
if ($rootId && !in_array($rootId, $item->getPathIds())) {
|
175 |
+
continue;
|
176 |
+
}
|
177 |
+
foreach ($item->getPathIds() as $id) {
|
178 |
+
if (!in_array($id, $ids)) {
|
179 |
+
$ids[] = $id;
|
180 |
+
}
|
181 |
+
}
|
182 |
+
}
|
183 |
+
return $ids;
|
184 |
+
}
|
185 |
+
|
186 |
+
public function getProductsJson()
|
187 |
+
{
|
188 |
+
$products = $this->getBanner()->getProductsPosition();
|
189 |
+
if (!empty($products)) {
|
190 |
+
return Mage::helper('core')->jsonEncode($products);
|
191 |
+
}
|
192 |
+
return '{}';
|
193 |
+
}
|
194 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Form.php
ADDED
@@ -0,0 +1,122 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Block_Adminhtml_Qbanner_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form {
|
4 |
+
|
5 |
+
protected function _prepareForm() {
|
6 |
+
$form = new Varien_Data_Form();
|
7 |
+
$this->setForm($form);
|
8 |
+
$fieldset = $form->addFieldset('qbanner_form', array('legend' => Mage::helper('qbanner')->__('Banner information')));
|
9 |
+
|
10 |
+
$fieldset->addField('title', 'text', array(
|
11 |
+
'label' => Mage::helper('qbanner')->__('Title'),
|
12 |
+
'class' => 'required-entry',
|
13 |
+
'required' => true,
|
14 |
+
'name' => 'title',
|
15 |
+
));
|
16 |
+
$fieldset->addField('width', 'text', array(
|
17 |
+
'label' => Mage::helper('qbanner')->__('Width'),
|
18 |
+
'class' => 'required-entry',
|
19 |
+
'required' => true,
|
20 |
+
'name' => 'width',
|
21 |
+
));
|
22 |
+
$fieldset->addField('height', 'text', array(
|
23 |
+
'label' => Mage::helper('qbanner')->__('Height'),
|
24 |
+
'class' => 'required-entry',
|
25 |
+
'required' => true,
|
26 |
+
'name' => 'height',
|
27 |
+
));
|
28 |
+
$fieldset->addField('duration', 'text', array(
|
29 |
+
'label' => Mage::helper('qbanner')->__('Duration'),
|
30 |
+
'class' => 'required-entry',
|
31 |
+
'required' => true,
|
32 |
+
'name' => 'duration',
|
33 |
+
));
|
34 |
+
$fieldset->addField('position', 'select', array(
|
35 |
+
'label' => Mage::helper('qbanner')->__('Position'),
|
36 |
+
'name' => 'position',
|
37 |
+
'values' => Mage::getSingleton('qbanner/option_position')->getOptionArrayEdit(),
|
38 |
+
));
|
39 |
+
|
40 |
+
$fieldset->addField('effect', 'select', array(
|
41 |
+
'label' => Mage::helper('qbanner')->__('Effects'),
|
42 |
+
'name' => 'effect',
|
43 |
+
'values' => array(
|
44 |
+
array('value'=>'fade','label'=>'Fade'),
|
45 |
+
array('value'=>'slide','label'=>'Slide'),
|
46 |
+
),
|
47 |
+
));
|
48 |
+
|
49 |
+
$fieldset->addField('show_caption', 'select', array(
|
50 |
+
'label' => Mage::helper('qbanner')->__('Show Caption'),
|
51 |
+
'name' => 'show_caption',
|
52 |
+
'values' => array(
|
53 |
+
array('value'=>1,'label'=>'Yes'),
|
54 |
+
array('value'=>0,'label'=>'No'),
|
55 |
+
),
|
56 |
+
));
|
57 |
+
|
58 |
+
$fieldset->addField('show_pagination', 'select', array(
|
59 |
+
'label' => Mage::helper('qbanner')->__('Show Pagination'),
|
60 |
+
'name' => 'show_pagination',
|
61 |
+
'values' => array(
|
62 |
+
array('value'=>1,'label'=>'Yes'),
|
63 |
+
array('value'=>0,'label'=>'No'),
|
64 |
+
),
|
65 |
+
));
|
66 |
+
$fieldset->addField('show_next_prev', 'select', array(
|
67 |
+
'label' => Mage::helper('qbanner')->__('Show Next & Prev'),
|
68 |
+
'name' => 'show_next_prev',
|
69 |
+
'values' => array(
|
70 |
+
array('value'=>1,'label'=>'Yes'),
|
71 |
+
array('value'=>0,'label'=>'No'),
|
72 |
+
),
|
73 |
+
));
|
74 |
+
|
75 |
+
$fieldset->addField('auto_slide', 'select', array(
|
76 |
+
'label' => Mage::helper('qbanner')->__('Auto Slide'),
|
77 |
+
'name' => 'auto_slide',
|
78 |
+
'values' => array(
|
79 |
+
array('value'=>1,'label'=>'Yes'),
|
80 |
+
array('value'=>0,'label'=>'No'),
|
81 |
+
),
|
82 |
+
));
|
83 |
+
|
84 |
+
$fieldset->addField('mouseover_stop', 'select', array(
|
85 |
+
'label' => Mage::helper('qbanner')->__('Mouseover Stop'),
|
86 |
+
'name' => 'mouseover_stop',
|
87 |
+
'values' => array(
|
88 |
+
array('value'=>1,'label'=>'Yes'),
|
89 |
+
array('value'=>0,'label'=>'No'),
|
90 |
+
),
|
91 |
+
));
|
92 |
+
|
93 |
+
$fieldset->addField('status', 'select', array(
|
94 |
+
'label' => Mage::helper('qbanner')->__('Status'),
|
95 |
+
'name' => 'status',
|
96 |
+
'values' => Mage::getSingleton('qbanner/option_status')->getOptionArrayEdit(),
|
97 |
+
));
|
98 |
+
|
99 |
+
// if (!Mage::app()->isSingleStoreMode()) {
|
100 |
+
$fieldset->addField('stores', 'multiselect', array(
|
101 |
+
'label' => Mage::helper('qbanner')->__('Show In'),
|
102 |
+
'required' => true,
|
103 |
+
'name' => 'stores[]',
|
104 |
+
'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(),
|
105 |
+
));
|
106 |
+
// } else {
|
107 |
+
// $fieldset->addField('stores', 'hidden', array(
|
108 |
+
// 'name' => 'stores[]',
|
109 |
+
// 'value' => Mage::app()->getStore(true)->getId()
|
110 |
+
// ));
|
111 |
+
// }
|
112 |
+
|
113 |
+
if (Mage::getSingleton('adminhtml/session')->getQbannerData()) {
|
114 |
+
$form->setValues(Mage::getSingleton('adminhtml/session')->getQbannerData());
|
115 |
+
Mage::getSingleton('adminhtml/session')->setQbannerData(null);
|
116 |
+
} elseif (Mage::registry('qbanner_data')) {
|
117 |
+
$form->setValues(Mage::registry('qbanner_data')->getData());
|
118 |
+
}
|
119 |
+
return parent::_prepareForm();
|
120 |
+
}
|
121 |
+
|
122 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Image.php
ADDED
@@ -0,0 +1,168 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @author kevin.magento@gmail.com
|
5 |
+
*/
|
6 |
+
class Qaz_Qbanner_Block_Adminhtml_QBanner_Edit_Tab_Image extends Mage_Adminhtml_Block_Widget {
|
7 |
+
|
8 |
+
protected function _prepareForm() {
|
9 |
+
$data = $this->getRequest()->getPost();
|
10 |
+
$form = new Varien_Data_Form();
|
11 |
+
$form->setValues($data);
|
12 |
+
$this->setForm($form);
|
13 |
+
|
14 |
+
return parent::_prepareForm();
|
15 |
+
}
|
16 |
+
|
17 |
+
public function __construct() {
|
18 |
+
parent::__construct();
|
19 |
+
$this->setTemplate('qaz/qbanner/edit/tab/image.phtml');
|
20 |
+
$this->setId('image_gallery');
|
21 |
+
$this->setHtmlId('image_gallery');
|
22 |
+
}
|
23 |
+
|
24 |
+
protected function _prepareLayout() {
|
25 |
+
$this->setChild('uploader',
|
26 |
+
$this->getLayout()->createBlock('adminhtml/media_uploader')
|
27 |
+
);
|
28 |
+
|
29 |
+
$this->getUploader()->getConfig()
|
30 |
+
->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/upload'))
|
31 |
+
->setFileField('image')
|
32 |
+
->setFilters(array(
|
33 |
+
'images' => array(
|
34 |
+
'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
|
35 |
+
'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
|
36 |
+
)
|
37 |
+
));
|
38 |
+
|
39 |
+
$this->setChild(
|
40 |
+
'delete_button',
|
41 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
42 |
+
->addData(array(
|
43 |
+
'id' => '{{id}}-delete',
|
44 |
+
'class' => 'delete',
|
45 |
+
'type' => 'button',
|
46 |
+
'label' => Mage::helper('adminhtml')->__('Remove'),
|
47 |
+
'onclick' => $this->getJsObjectName() . '.removeFile(\'{{fileId}}\')'
|
48 |
+
))
|
49 |
+
);
|
50 |
+
|
51 |
+
return parent::_prepareLayout();
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Retrive uploader block
|
56 |
+
*
|
57 |
+
* @return Mage_Adminhtml_Block_Media_Uploader
|
58 |
+
*/
|
59 |
+
public function getUploader() {
|
60 |
+
return $this->getChild('uploader');
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Retrive uploader block html
|
65 |
+
*
|
66 |
+
* @return string
|
67 |
+
*/
|
68 |
+
public function getUploaderHtml() {
|
69 |
+
return $this->getChildHtml('uploader');
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getJsObjectName() {
|
73 |
+
return $this->getHtmlId() . 'JsObject';
|
74 |
+
}
|
75 |
+
|
76 |
+
public function getAddImagesButton() {
|
77 |
+
return $this->getButtonHtml(
|
78 |
+
Mage::helper('catalog')->__('Add New Images'),
|
79 |
+
$this->getJsObjectName() . '.showUploader()',
|
80 |
+
'add',
|
81 |
+
$this->getHtmlId() . '_add_images_button'
|
82 |
+
);
|
83 |
+
}
|
84 |
+
|
85 |
+
public function getImagesJson() {
|
86 |
+
$_model = Mage::registry('qbanner_data');
|
87 |
+
$_data = $_model->getImage();
|
88 |
+
if (is_array($_data) and sizeof($_data) > 0) {
|
89 |
+
$_result = array();
|
90 |
+
foreach ($_data as &$_item) {
|
91 |
+
$_result[] = array(
|
92 |
+
'value_id' => $_item['image_id'],
|
93 |
+
'url' => Mage::getSingleton('qbanner/config')->getBaseMediaUrl() . $_item['file'],
|
94 |
+
'file' => $_item['file'],
|
95 |
+
'label' => $_item['label'],
|
96 |
+
'position' => $_item['position'],
|
97 |
+
'disabled' => $_item['disabled']);
|
98 |
+
}
|
99 |
+
return Zend_Json::encode($_result);
|
100 |
+
}
|
101 |
+
return '[]';
|
102 |
+
}
|
103 |
+
|
104 |
+
public function getImagesValuesJson() {
|
105 |
+
$values = array();
|
106 |
+
|
107 |
+
return Zend_Json::encode($values);
|
108 |
+
}
|
109 |
+
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Enter description here...
|
113 |
+
*
|
114 |
+
* @return array
|
115 |
+
*/
|
116 |
+
public function getMediaAttributes() {
|
117 |
+
|
118 |
+
}
|
119 |
+
|
120 |
+
public function getImageTypes() {
|
121 |
+
$type = array();
|
122 |
+
$type['gallery']['label'] = "qbanner";
|
123 |
+
$type['gallery']['field'] = "qbanner";
|
124 |
+
|
125 |
+
$imageTypes = array();
|
126 |
+
|
127 |
+
return $type;
|
128 |
+
}
|
129 |
+
|
130 |
+
public function getImageTypesJson() {
|
131 |
+
return Zend_Json::encode($this->getImageTypes());
|
132 |
+
}
|
133 |
+
|
134 |
+
public function getCustomRemove() {
|
135 |
+
return $this->setChild(
|
136 |
+
'delete_button',
|
137 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
138 |
+
->addData(array(
|
139 |
+
'id' => '{{id}}-delete',
|
140 |
+
'class' => 'delete',
|
141 |
+
'type' => 'button',
|
142 |
+
'label' => Mage::helper('adminhtml')->__('Remove'),
|
143 |
+
'onclick' => $this->getJsObjectName() . '.removeFile(\'{{fileId}}\')'
|
144 |
+
))
|
145 |
+
);
|
146 |
+
}
|
147 |
+
|
148 |
+
public function getDeleteButtonHtml() {
|
149 |
+
return $this->getChildHtml('delete_button');
|
150 |
+
}
|
151 |
+
|
152 |
+
public function getCustomValueId() {
|
153 |
+
return $this->setChild(
|
154 |
+
'value_id',
|
155 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
156 |
+
->addData(array(
|
157 |
+
'id' => '{{id}}-value',
|
158 |
+
'class' => 'value_id',
|
159 |
+
'type' => 'text',
|
160 |
+
'label' => Mage::helper('adminhtml')->__('ValueId'),
|
161 |
+
))
|
162 |
+
);
|
163 |
+
}
|
164 |
+
|
165 |
+
public function getValueIdHtml() {
|
166 |
+
return $this->getChildHtml('value_id');
|
167 |
+
}
|
168 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tab/Pages.php
ADDED
@@ -0,0 +1,39 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @author kevin.magento@gmail.com
|
5 |
+
*/
|
6 |
+
class Qaz_Qbanner_Block_Adminhtml_QBanner_Edit_Tab_Pages extends Mage_Adminhtml_Block_Widget_Form {
|
7 |
+
|
8 |
+
protected function _prepareForm() {
|
9 |
+
$form = new Varien_Data_Form();
|
10 |
+
$this->setForm($form);
|
11 |
+
|
12 |
+
$fieldset = $form->addFieldset('qbanner_form', array('legend' => Mage::helper('qbanner')->__('Banner Pages')));
|
13 |
+
$fieldset->addField('pages', 'multiselect', array(
|
14 |
+
'label' => Mage::helper('qbanner')->__('Visible In'),
|
15 |
+
'name' => 'pages[]',
|
16 |
+
'values' => Mage::getSingleton('qbanner/option_pages')->getOptionArray(),
|
17 |
+
));
|
18 |
+
$showIn = array(
|
19 |
+
array('value'=>'catalog','label'=>'Category & Product Page'),
|
20 |
+
array('value'=>'customer','label'=>'Customer Page'),
|
21 |
+
array('value'=>'checkout','label'=>'Cart & Checkout Page'),
|
22 |
+
);
|
23 |
+
|
24 |
+
$fieldset->addField('show_in', 'multiselect', array(
|
25 |
+
'label' => Mage::helper('qbanner')->__('Show In'),
|
26 |
+
'name' => 'show_in[]',
|
27 |
+
'values' => $showIn,
|
28 |
+
));
|
29 |
+
if (Mage::getSingleton('adminhtml/session')->getQbannerData()) {
|
30 |
+
$form->setValues(Mage::getSingleton('adminhtml/session')->getQbannerData());
|
31 |
+
Mage::getSingleton('adminhtml/session')->setQbannerData(null);
|
32 |
+
} elseif (Mage::registry('qbanner_data')) {
|
33 |
+
$form->setValues(Mage::registry('qbanner_data')->getData());
|
34 |
+
}
|
35 |
+
|
36 |
+
return parent::_prepareForm();
|
37 |
+
}
|
38 |
+
|
39 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Edit/Tabs.php
ADDED
@@ -0,0 +1,36 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Block_Adminhtml_Qbanner_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
$this->setId('qbanner_tabs');
|
8 |
+
$this->setDestElementId('edit_form');
|
9 |
+
$this->setTitle(Mage::helper('qbanner')->__('Banner Information'));
|
10 |
+
}
|
11 |
+
|
12 |
+
protected function _beforeToHtml() {
|
13 |
+
$this->addTab('form_section', array(
|
14 |
+
'label' => Mage::helper('qbanner')->__('Banner Information'),
|
15 |
+
'title' => Mage::helper('qbanner')->__('Banner Information'),
|
16 |
+
'content' => $this->getLayout()->createBlock('qbanner/adminhtml_qbanner_edit_tab_form')->toHtml(),
|
17 |
+
));
|
18 |
+
$this->addTab('image_section', array(
|
19 |
+
'label' => Mage::helper('qbanner')->__('Banner Images'),
|
20 |
+
'title' => Mage::helper('qbanner')->__('Banner Images'),
|
21 |
+
'content' => $this->getLayout()->createBlock('qbanner/adminhtml_qbanner_edit_tab_image')->toHtml(),
|
22 |
+
));
|
23 |
+
$this->addTab('page_section', array(
|
24 |
+
'label' => Mage::helper('qbanner')->__('Display on Pages'),
|
25 |
+
'title' => Mage::helper('qbanner')->__('Display on Pages'),
|
26 |
+
'content' => $this->getLayout()->createBlock('qbanner/adminhtml_qbanner_edit_tab_pages')->toHtml(),
|
27 |
+
));
|
28 |
+
$this->addTab('category_section', array(
|
29 |
+
'label' => Mage::helper('qbanner')->__('Display on Categories'),
|
30 |
+
'title' => Mage::helper('qbanner')->__('Display on Categories'),
|
31 |
+
'content' => $this->getLayout()->createBlock('qbanner/adminhtml_qbanner_edit_tab_category')->toHtml(),
|
32 |
+
));
|
33 |
+
return parent::_beforeToHtml();
|
34 |
+
}
|
35 |
+
|
36 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Adminhtml/Qbanner/Grid.php
ADDED
@@ -0,0 +1,109 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Block_Adminhtml_Qbanner_Grid extends Mage_Adminhtml_Block_Widget_Grid {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
$this->setId('qbannerGrid');
|
8 |
+
$this->setDefaultSort('qbanner_id');
|
9 |
+
$this->setDefaultDir('ASC');
|
10 |
+
$this->setSaveParametersInSession(true);
|
11 |
+
}
|
12 |
+
|
13 |
+
protected function _prepareCollection() {
|
14 |
+
$collection = Mage::getModel('qbanner/qbanner')->getCollection();
|
15 |
+
$this->setCollection($collection);
|
16 |
+
return parent::_prepareCollection();
|
17 |
+
}
|
18 |
+
|
19 |
+
protected function _getStore() {
|
20 |
+
$storeId = (int) $this->getRequest()->getParam('store', 0);
|
21 |
+
return Mage::app()->getStore($storeId);
|
22 |
+
}
|
23 |
+
|
24 |
+
protected function _prepareColumns() {
|
25 |
+
$this->addColumn('qbanner_id', array(
|
26 |
+
'header' => Mage::helper('qbanner')->__('ID'),
|
27 |
+
'align' => 'right',
|
28 |
+
'width' => '50px',
|
29 |
+
'index' => 'qbanner_id',
|
30 |
+
));
|
31 |
+
|
32 |
+
$this->addColumn('title', array(
|
33 |
+
'header' => Mage::helper('qbanner')->__('Title'),
|
34 |
+
'align' => 'left',
|
35 |
+
'index' => 'title',
|
36 |
+
));
|
37 |
+
|
38 |
+
$this->addColumn('position', array(
|
39 |
+
'header' => Mage::helper('qbanner')->__('Position'),
|
40 |
+
'align' => 'left',
|
41 |
+
'width' => '80px',
|
42 |
+
'index' => 'position',
|
43 |
+
'type' => 'options',
|
44 |
+
'options' => Mage::getSingleton('qbanner/option_position')->getOptionArray(),
|
45 |
+
));
|
46 |
+
|
47 |
+
$this->addColumn('status', array(
|
48 |
+
'header' => Mage::helper('qbanner')->__('Status'),
|
49 |
+
'align' => 'left',
|
50 |
+
'width' => '80px',
|
51 |
+
'index' => 'status',
|
52 |
+
'type' => 'options',
|
53 |
+
'options' => Mage::getSingleton('qbanner/option_status')->getOptionArray(),
|
54 |
+
));
|
55 |
+
|
56 |
+
$this->addColumn('action', array(
|
57 |
+
'header' => Mage::helper('qbanner')->__('Action'),
|
58 |
+
'width' => '100',
|
59 |
+
'type' => 'action',
|
60 |
+
'getter' => 'getId',
|
61 |
+
'actions' => array(
|
62 |
+
array(
|
63 |
+
'caption' => Mage::helper('qbanner')->__('Edit'),
|
64 |
+
'url' => array('base' => '*/*/edit'),
|
65 |
+
'field' => 'id'
|
66 |
+
)
|
67 |
+
),
|
68 |
+
'filter' => false,
|
69 |
+
'sortable' => false,
|
70 |
+
'index' => 'stores',
|
71 |
+
'is_system' => true,
|
72 |
+
));
|
73 |
+
return parent::_prepareColumns();
|
74 |
+
}
|
75 |
+
|
76 |
+
protected function _prepareMassaction() {
|
77 |
+
$this->setMassactionIdField('qbanner_id');
|
78 |
+
$this->getMassactionBlock()->setFormFieldName('qbanner');
|
79 |
+
|
80 |
+
$this->getMassactionBlock()->addItem('delete', array(
|
81 |
+
'label' => Mage::helper('qbanner')->__('Delete'),
|
82 |
+
'url' => $this->getUrl('*/*/massDelete'),
|
83 |
+
'confirm' => Mage::helper('qbanner')->__('Are you sure?')
|
84 |
+
));
|
85 |
+
|
86 |
+
$statuses = Mage::getSingleton('qbanner/option_status')->getOptionArray();
|
87 |
+
|
88 |
+
array_unshift($statuses, array('label' => '', 'value' => ''));
|
89 |
+
$this->getMassactionBlock()->addItem('status', array(
|
90 |
+
'label' => Mage::helper('qbanner')->__('Change status'),
|
91 |
+
'url' => $this->getUrl('*/*/massStatus', array('_current' => true)),
|
92 |
+
'additional' => array(
|
93 |
+
'visibility' => array(
|
94 |
+
'name' => 'status',
|
95 |
+
'type' => 'select',
|
96 |
+
'class' => 'required-entry',
|
97 |
+
'label' => Mage::helper('qbanner')->__('Status'),
|
98 |
+
'values' => $statuses
|
99 |
+
)
|
100 |
+
)
|
101 |
+
));
|
102 |
+
return $this;
|
103 |
+
}
|
104 |
+
|
105 |
+
public function getRowUrl($row) {
|
106 |
+
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
|
107 |
+
}
|
108 |
+
|
109 |
+
}
|
app/code/community/Qaz/Qbanner/Block/Qbanner.php
ADDED
@@ -0,0 +1,54 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Block_Qbanner extends Mage_Core_Block_Template {
|
4 |
+
|
5 |
+
|
6 |
+
public function _prepareLayout() {
|
7 |
+
$headBlock = $this->getLayout()->getBlock('head');
|
8 |
+
$headBlock->addJs('qaz/qbanner/jquery.1.5.1.js');
|
9 |
+
$headBlock->addJs('qaz/qbanner/jqueryNoconfig.js');
|
10 |
+
$headBlock->addJs('qaz/qbanner/jquery.slides.min.js');
|
11 |
+
|
12 |
+
$headBlock->addCss('qaz/qbanner/css/global.css');
|
13 |
+
return parent::_prepareLayout();
|
14 |
+
}
|
15 |
+
|
16 |
+
public function getQbanner($position = null) {
|
17 |
+
$storeId = Mage::app()->getStore()->getId();
|
18 |
+
|
19 |
+
$collection = Mage::getModel('qbanner/qbanner')->getCollection()
|
20 |
+
->addFieldToFilter('status', 1)
|
21 |
+
;
|
22 |
+
if (!Mage::app()->isSingleStoreMode()) {
|
23 |
+
$collection->addStoreFilter($storeId);
|
24 |
+
}
|
25 |
+
if (Mage::registry('current_category')) {
|
26 |
+
$_categoryId = Mage::registry('current_category')->getId();
|
27 |
+
$collection->addCategoryFilter($_categoryId);
|
28 |
+
}
|
29 |
+
if (Mage::app()->getFrontController()->getRequest()->getRouteName() == 'cms') {
|
30 |
+
$_pageId = Mage::getBlockSingleton('cms/page')->getPage()->getPageId();
|
31 |
+
$collection->addPageFilter($_pageId);
|
32 |
+
}
|
33 |
+
if ($position) {
|
34 |
+
$collection->addFieldToFilter('position', $position);
|
35 |
+
}
|
36 |
+
|
37 |
+
return $collection;
|
38 |
+
}
|
39 |
+
/**
|
40 |
+
* Add Filter show in Module Name (Catalog , Customer , Checkout , ....)
|
41 |
+
* @param type object $banner
|
42 |
+
*/
|
43 |
+
public function addShowInFilter($banner){
|
44 |
+
$moduleName = Mage::app()->getRequest()->getModuleName();
|
45 |
+
$showIn = $banner->getShowIn();
|
46 |
+
if(strlen($showIn) > 0 and $moduleName != 'cms'){
|
47 |
+
if(strpos("Show In ".$showIn, $moduleName) > 0)
|
48 |
+
return true;
|
49 |
+
return false;
|
50 |
+
}else{
|
51 |
+
return true;
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
app/code/community/Qaz/Qbanner/Helper/Data.php
ADDED
@@ -0,0 +1,5 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Helper_Data extends Mage_Core_Helper_Abstract {
|
4 |
+
|
5 |
+
}
|
app/code/community/Qaz/Qbanner/Model/Config.php
ADDED
@@ -0,0 +1,155 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class Qaz_Qbanner_Model_Config extends Mage_Catalog_Model_Product_Media_Config {
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Filesystem directory path of product images
|
6 |
+
* relatively to media folder
|
7 |
+
*
|
8 |
+
* @return string
|
9 |
+
*/
|
10 |
+
public function getBaseMediaPathAddition()
|
11 |
+
{
|
12 |
+
return 'qbanner';
|
13 |
+
}
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Web-based directory path of product images
|
17 |
+
* relatively to media folder
|
18 |
+
*
|
19 |
+
* @return string
|
20 |
+
*/
|
21 |
+
public function getBaseMediaUrlAddition()
|
22 |
+
{
|
23 |
+
return 'qbanner';
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Filesystem directory path of temporary product images
|
28 |
+
* relatively to media folder
|
29 |
+
*
|
30 |
+
* @return string
|
31 |
+
*/
|
32 |
+
public function getBaseTmpMediaPathAddition()
|
33 |
+
{
|
34 |
+
return 'qaz' . DS . $this->getBaseMediaPathAddition();
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Web-based directory path of temporary product images
|
39 |
+
* relatively to media folder
|
40 |
+
*
|
41 |
+
* @return string
|
42 |
+
*/
|
43 |
+
public function getBaseTmpMediaUrlAddition()
|
44 |
+
{
|
45 |
+
return 'qaz/' . $this->getBaseMediaUrlAddition();
|
46 |
+
}
|
47 |
+
|
48 |
+
public function getBaseMediaPath()
|
49 |
+
{
|
50 |
+
return Mage::getBaseDir('media') . DS . 'qaz' . DS . 'qbanner';
|
51 |
+
}
|
52 |
+
|
53 |
+
public function getBaseMediaUrl()
|
54 |
+
{
|
55 |
+
return Mage::getBaseUrl('media') . 'qaz/qbanner';
|
56 |
+
}
|
57 |
+
|
58 |
+
public function getBaseTmpMediaPath()
|
59 |
+
{
|
60 |
+
return Mage::getBaseDir('media') . DS . $this->getBaseTmpMediaPathAddition();
|
61 |
+
}
|
62 |
+
|
63 |
+
public function getBaseTmpMediaUrl()
|
64 |
+
{
|
65 |
+
return Mage::getBaseUrl('media') . $this->getBaseTmpMediaUrlAddition();
|
66 |
+
}
|
67 |
+
|
68 |
+
public function getMediaUrl($file)
|
69 |
+
{
|
70 |
+
$file = $this->_prepareFileForUrl($file);
|
71 |
+
|
72 |
+
if(substr($file, 0, 1) == '/') {
|
73 |
+
return $this->getBaseMediaUrl() . $file;
|
74 |
+
}
|
75 |
+
|
76 |
+
return $this->getBaseMediaUrl() . '/' . $file;
|
77 |
+
}
|
78 |
+
|
79 |
+
public function getMediaPath($file)
|
80 |
+
{
|
81 |
+
$file = $this->_prepareFileForPath($file);
|
82 |
+
|
83 |
+
if(substr($file, 0, 1) == DS) {
|
84 |
+
return $this->getBaseMediaPath() . DS . substr($file, 1);
|
85 |
+
}
|
86 |
+
|
87 |
+
return $this->getBaseMediaPath() . DS . $file;
|
88 |
+
}
|
89 |
+
|
90 |
+
public function getTmpMediaUrl($file)
|
91 |
+
{
|
92 |
+
$file = $this->_prepareFileForUrl($file);
|
93 |
+
|
94 |
+
if(substr($file, 0, 1) == '/') {
|
95 |
+
$file = substr($file, 1);
|
96 |
+
}
|
97 |
+
|
98 |
+
return $this->getBaseTmpMediaUrl() . '/' . $file;
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Part of URL of temporary product images
|
103 |
+
* relatively to media folder
|
104 |
+
*
|
105 |
+
* @return string
|
106 |
+
*/
|
107 |
+
public function getTmpMediaShortUrl($file)
|
108 |
+
{
|
109 |
+
$file = $this->_prepareFileForUrl($file);
|
110 |
+
|
111 |
+
if(substr($file, 0, 1) == '/') {
|
112 |
+
$file = substr($file, 1);
|
113 |
+
}
|
114 |
+
|
115 |
+
return $this->getBaseTmpMediaUrlAddition() . '/' . $file;
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Part of URL of product images relatively to media folder
|
120 |
+
*
|
121 |
+
* @return string
|
122 |
+
*/
|
123 |
+
public function getMediaShortUrl($file)
|
124 |
+
{
|
125 |
+
$file = $this->_prepareFileForUrl($file);
|
126 |
+
|
127 |
+
if(substr($file, 0, 1) == '/') {
|
128 |
+
$file = substr($file, 1);
|
129 |
+
}
|
130 |
+
|
131 |
+
return $this->getBaseMediaUrlAddition() . '/' . $file;
|
132 |
+
}
|
133 |
+
|
134 |
+
public function getTmpMediaPath($file)
|
135 |
+
{
|
136 |
+
$file = $this->_prepareFileForPath($file);
|
137 |
+
|
138 |
+
if(substr($file, 0, 1) == DS) {
|
139 |
+
return $this->getBaseTmpMediaPath() . DS . substr($file, 1);
|
140 |
+
}
|
141 |
+
|
142 |
+
return $this->getBaseTmpMediaPath() . DS . $file;
|
143 |
+
}
|
144 |
+
|
145 |
+
protected function _prepareFileForUrl($file)
|
146 |
+
{
|
147 |
+
return str_replace(DS, '/', $file);
|
148 |
+
}
|
149 |
+
|
150 |
+
protected function _prepareFileForPath($file)
|
151 |
+
{
|
152 |
+
return str_replace('/', DS, $file);
|
153 |
+
}
|
154 |
+
|
155 |
+
}
|
app/code/community/Qaz/Qbanner/Model/Mysql4/Qbanner.php
ADDED
@@ -0,0 +1,282 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Model_Mysql4_Qbanner extends Mage_Core_Model_Mysql4_Abstract {
|
4 |
+
|
5 |
+
public function _construct() {
|
6 |
+
// Note that the qqbanner_id refers to the key field in your database table.
|
7 |
+
$this->_init('qbanner/qbanner', 'qbanner_id');
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Load images
|
12 |
+
*/
|
13 |
+
public function loadImage(Mage_Core_Model_Abstract $object) {
|
14 |
+
return $this->__loadImage($object);
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
*
|
19 |
+
* @param Mage_Core_Model_Abstract $object
|
20 |
+
*/
|
21 |
+
protected function _afterLoad(Mage_Core_Model_Abstract $object) {
|
22 |
+
if (!$object->getIsMassDelete()) {
|
23 |
+
$object = $this->__loadStore($object);
|
24 |
+
$object = $this->__loadPage($object);
|
25 |
+
$object = $this->__loadCategory($object);
|
26 |
+
$object = $this->__loadImage($object);
|
27 |
+
}
|
28 |
+
|
29 |
+
return parent::_afterLoad($object);
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Retrieve select object for load object data
|
34 |
+
*
|
35 |
+
* @param string $field
|
36 |
+
* @param mixed $value
|
37 |
+
* @return Zend_Db_Select
|
38 |
+
*/
|
39 |
+
protected function _getLoadSelect($field, $value, $object) {
|
40 |
+
$select = parent::_getLoadSelect($field, $value, $object);
|
41 |
+
|
42 |
+
if ($data = $object->getStoreId()) {
|
43 |
+
$select->join(
|
44 |
+
array('store' => $this->getTable('qbanner/qqbanner_store')), $this->getMainTable() . '.qbanner_id = `store`.qbanner_id')
|
45 |
+
->where('`store`.store_id in (0, ?) ', $data);
|
46 |
+
}
|
47 |
+
if ($data = $object->getPageId()) {
|
48 |
+
$select->join(
|
49 |
+
array('page' => $this->getTable('qbanner/qbanner_page')), $this->getMainTable() . '.qbanner_id = `page`.qbanner_id')
|
50 |
+
->where('`page`.page_id in (?) ', $data);
|
51 |
+
}
|
52 |
+
if ($data = $object->getCategoryId()) {
|
53 |
+
$select->join(
|
54 |
+
array('category' => $this->getTable('qbanner/qbanner_category')), $this->getMainTable() . '.qbanner_id = `category`.qbanner_id')
|
55 |
+
->where('`category`.category_id in (?) ', $data);
|
56 |
+
}
|
57 |
+
$select->order('title DESC')->limit(1);
|
58 |
+
|
59 |
+
return $select;
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Call-back function
|
64 |
+
*/
|
65 |
+
protected function _afterSave(Mage_Core_Model_Abstract $object) {
|
66 |
+
if (!$object->getIsMassStatus()) {
|
67 |
+
$this->__saveToStoreTable($object);
|
68 |
+
$this->__saveToPageTable($object);
|
69 |
+
$this->__saveToCategoryTable($object);
|
70 |
+
$this->__saveToImageTable($object);
|
71 |
+
}
|
72 |
+
|
73 |
+
return parent::_afterSave($object);
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Call-back function
|
78 |
+
*/
|
79 |
+
protected function _beforeDelete(Mage_Core_Model_Abstract $object) {
|
80 |
+
// Cleanup stats on blog delete
|
81 |
+
$adapter = $this->_getReadAdapter();
|
82 |
+
// 1. Delete blog/store
|
83 |
+
$adapter->delete($this->getTable('qbanner/qbanner_store'), 'qbanner_id=' . $object->getId());
|
84 |
+
// 2. Delete blog/post_cat
|
85 |
+
$adapter->delete($this->getTable('qbanner/qbanner_page'), 'qbanner_id=' . $object->getId());
|
86 |
+
// 3. Delete blog/post_comment
|
87 |
+
$adapter->delete($this->getTable('qbanner/qbanner_category'), 'qbanner_id=' . $object->getId());
|
88 |
+
// Update tags
|
89 |
+
|
90 |
+
return parent::_beforeDelete($object);
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Load stores
|
95 |
+
*/
|
96 |
+
private function __loadStore(Mage_Core_Model_Abstract $object) {
|
97 |
+
$select = $this->_getReadAdapter()->select()
|
98 |
+
->from($this->getTable('qbanner/qbanner_store'))
|
99 |
+
->where('qbanner_id = ?', $object->getId());
|
100 |
+
|
101 |
+
if ($data = $this->_getReadAdapter()->fetchAll($select)) {
|
102 |
+
$array = array();
|
103 |
+
foreach ($data as $row) {
|
104 |
+
$array[] = $row['store_id'];
|
105 |
+
}
|
106 |
+
$object->setData('stores', $array);
|
107 |
+
}
|
108 |
+
return $object;
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Load pages
|
113 |
+
*/
|
114 |
+
private function __loadPage(Mage_Core_Model_Abstract $object) {
|
115 |
+
$select = $this->_getReadAdapter()->select()
|
116 |
+
->from($this->getTable('qbanner/qbanner_page'))
|
117 |
+
->where('qbanner_id = ?', $object->getId());
|
118 |
+
|
119 |
+
if ($data = $this->_getReadAdapter()->fetchAll($select)) {
|
120 |
+
$array = array();
|
121 |
+
foreach ($data as $row) {
|
122 |
+
$array[] = $row['page_id'];
|
123 |
+
}
|
124 |
+
$object->setData('pages', $array);
|
125 |
+
}
|
126 |
+
return $object;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Load categories
|
131 |
+
*/
|
132 |
+
private function __loadCategory(Mage_Core_Model_Abstract $object) {
|
133 |
+
$select = $this->_getReadAdapter()->select()
|
134 |
+
->from($this->getTable('qbanner/qbanner_category'))
|
135 |
+
->where('qbanner_id = ?', $object->getId());
|
136 |
+
|
137 |
+
if ($data = $this->_getReadAdapter()->fetchAll($select)) {
|
138 |
+
$array = array();
|
139 |
+
foreach ($data as $row) {
|
140 |
+
$array[] = $row['category_id'];
|
141 |
+
}
|
142 |
+
$object->setData('category_id', $array);
|
143 |
+
}
|
144 |
+
return $object;
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Load images
|
149 |
+
*/
|
150 |
+
private function __loadImage(Mage_Core_Model_Abstract $object) {
|
151 |
+
$select = $this->_getReadAdapter()->select()
|
152 |
+
->from($this->getTable('qbanner/qbanner_image'))
|
153 |
+
->where('qbanner_id = ?', $object->getId())
|
154 |
+
->order(array('position ASC', 'image_id'));
|
155 |
+
|
156 |
+
$object->setData('image', $this->_getReadAdapter()->fetchAll($select));
|
157 |
+
return $object;
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Save stores
|
162 |
+
*/
|
163 |
+
private function __saveToStoreTable(Mage_Core_Model_Abstract $object) {
|
164 |
+
if (!$object->getData('stores')) {
|
165 |
+
$condition = $this->_getWriteAdapter()->quoteInto('qbanner_id = ?', $object->getId());
|
166 |
+
$this->_getWriteAdapter()->delete($this->getTable('qbanner/qbanner_store'), $condition);
|
167 |
+
|
168 |
+
$storeArray = array(
|
169 |
+
'qbanner_id' => $object->getId(),
|
170 |
+
'store_id' => '0');
|
171 |
+
$this->_getWriteAdapter()->insert(
|
172 |
+
$this->getTable('qbanner/qbanner_store'), $storeArray);
|
173 |
+
return true;
|
174 |
+
}
|
175 |
+
|
176 |
+
$condition = $this->_getWriteAdapter()->quoteInto('qbanner_id = ?', $object->getId());
|
177 |
+
$this->_getWriteAdapter()->delete($this->getTable('qbanner/qbanner_store'), $condition);
|
178 |
+
foreach ((array) $object->getData('stores') as $store) {
|
179 |
+
$storeArray = array();
|
180 |
+
$storeArray['qbanner_id'] = $object->getId();
|
181 |
+
$storeArray['store_id'] = $store;
|
182 |
+
$this->_getWriteAdapter()->insert(
|
183 |
+
$this->getTable('qbanner/qbanner_store'), $storeArray);
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Save stores
|
189 |
+
*/
|
190 |
+
private function __saveToPageTable(Mage_Core_Model_Abstract $object) {
|
191 |
+
if ($data = $object->getData('pages')) {
|
192 |
+
$this->_getWriteAdapter()->beginTransaction();
|
193 |
+
try {
|
194 |
+
$condition = $this->_getWriteAdapter()->quoteInto('qbanner_id = ?', $object->getId());
|
195 |
+
$this->_getWriteAdapter()->delete($this->getTable('qbanner/qbanner_page'), $condition);
|
196 |
+
|
197 |
+
foreach ((array) $data as $page) {
|
198 |
+
$pageArray = array();
|
199 |
+
$pageArray['qbanner_id'] = $object->getId();
|
200 |
+
$pageArray['page_id'] = $page;
|
201 |
+
$this->_getWriteAdapter()->insert(
|
202 |
+
$this->getTable('qbanner/qbanner_page'), $pageArray);
|
203 |
+
}
|
204 |
+
$this->_getWriteAdapter()->commit();
|
205 |
+
} catch (Exception $e) {
|
206 |
+
$this->_getWriteAdapter()->rollBack();
|
207 |
+
echo $e->getMessage();
|
208 |
+
}
|
209 |
+
return true;
|
210 |
+
}
|
211 |
+
|
212 |
+
$condition = $this->_getWriteAdapter()->quoteInto('qbanner_id = ?', $object->getId());
|
213 |
+
$this->_getWriteAdapter()->delete($this->getTable('qbanner/qbanner_page'), $condition);
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Save categories
|
218 |
+
*/
|
219 |
+
private function __saveToCategoryTable(Mage_Core_Model_Abstract $object) {
|
220 |
+
if ($data = $object->getData('categories')) {
|
221 |
+
$this->_getWriteAdapter()->beginTransaction();
|
222 |
+
try {
|
223 |
+
$condition = $this->_getWriteAdapter()->quoteInto('qbanner_id = ?', $object->getId());
|
224 |
+
$this->_getWriteAdapter()->delete($this->getTable('qbanner/qbanner_category'), $condition);
|
225 |
+
|
226 |
+
$data = array_unique($data);
|
227 |
+
foreach ((array) $data as $category) {
|
228 |
+
$categoryArray = array();
|
229 |
+
$categoryArray['qbanner_id'] = $object->getId();
|
230 |
+
$categoryArray['category_id'] = $category;
|
231 |
+
$this->_getWriteAdapter()->insert(
|
232 |
+
$this->getTable('qbanner/qbanner_category'), $categoryArray);
|
233 |
+
}
|
234 |
+
$this->_getWriteAdapter()->commit();
|
235 |
+
} catch (Exception $e) {
|
236 |
+
$this->_getWriteAdapter()->rollBack();
|
237 |
+
echo $e->getMessage();
|
238 |
+
}
|
239 |
+
return true;
|
240 |
+
}
|
241 |
+
|
242 |
+
$condition = $this->_getWriteAdapter()->quoteInto('qbanner_id = ?', $object->getId());
|
243 |
+
$this->_getWriteAdapter()->delete($this->getTable('qbanner/qbanner_category'), $condition);
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* Save stores
|
248 |
+
*/
|
249 |
+
private function __saveToImageTable(Mage_Core_Model_Abstract $object) {
|
250 |
+
if ($_imageList = $object->getData('images')) {
|
251 |
+
$_imageList = Zend_Json::decode($_imageList);
|
252 |
+
if (is_array($_imageList) and sizeof($_imageList) > 0) {
|
253 |
+
$_imageTable = $this->getTable('qbanner/qbanner_image');
|
254 |
+
$_adapter = $this->_getWriteAdapter();
|
255 |
+
$_adapter->beginTransaction();
|
256 |
+
try {
|
257 |
+
$condition = $this->_getWriteAdapter()->quoteInto('qbanner_id = ?', $object->getId());
|
258 |
+
$this->_getWriteAdapter()->delete($this->getTable('qbanner/qbanner_image'), $condition);
|
259 |
+
|
260 |
+
foreach ($_imageList as &$_item) {
|
261 |
+
if (isset($_item['removed']) and $_item['removed'] == '1') {
|
262 |
+
$_adapter->delete($_imageTable, $_adapter->quoteInto('image_id = ?', $_item['value_id'], 'INTEGER'));
|
263 |
+
} else {
|
264 |
+
$_data = array(
|
265 |
+
'label' => $_item['label'],
|
266 |
+
'file' => $_item['file'],
|
267 |
+
'position' => $_item['position'],
|
268 |
+
'disabled' => $_item['disabled'],
|
269 |
+
'qbanner_id' => $object->getId());
|
270 |
+
$_adapter->insert($_imageTable, $_data);
|
271 |
+
}
|
272 |
+
}
|
273 |
+
$_adapter->commit();
|
274 |
+
} catch (Exception $e) {
|
275 |
+
$_adapter->rollBack();
|
276 |
+
echo $e->getMessage();
|
277 |
+
}
|
278 |
+
}
|
279 |
+
}
|
280 |
+
}
|
281 |
+
|
282 |
+
}
|
app/code/community/Qaz/Qbanner/Model/Mysql4/Qbanner/Collection.php
ADDED
@@ -0,0 +1,55 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Model_Mysql4_Qbanner_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
|
4 |
+
|
5 |
+
public function _construct() {
|
6 |
+
parent::_construct();
|
7 |
+
$this->_init('qbanner/qbanner');
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Add Filter by category
|
12 |
+
*
|
13 |
+
* @param int $category
|
14 |
+
*/
|
15 |
+
public function addCategoryFilter($categoryId) {
|
16 |
+
$this->getSelect()->join(
|
17 |
+
array('category_table' => $this->getTable('qbanner/qbanner_category')), 'main_table.qbanner_id = category_table.qbanner_id', array()
|
18 |
+
)
|
19 |
+
->where('category_table.category_id = ?', $categoryId);
|
20 |
+
return $this;
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Add Filter by page
|
25 |
+
*
|
26 |
+
* @param int $page
|
27 |
+
*/
|
28 |
+
public function addPageFilter($pageId) {
|
29 |
+
$this->getSelect()->join(
|
30 |
+
array('page_table' => $this->getTable('qbanner/qbanner_page')), 'main_table.qbanner_id = page_table.qbanner_id', array()
|
31 |
+
)
|
32 |
+
->where('page_table.page_id = ?', $pageId);
|
33 |
+
return $this;
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Add Filter by store
|
38 |
+
*
|
39 |
+
* @param int|Mage_Core_Model_Store $store
|
40 |
+
*/
|
41 |
+
public function addStoreFilter($store) {
|
42 |
+
if (!Mage::app()->isSingleStoreMode()) {
|
43 |
+
if ($store instanceof Mage_Core_Model_Store) {
|
44 |
+
$store = array($store->getId());
|
45 |
+
}
|
46 |
+
|
47 |
+
$this->getSelect()->join(
|
48 |
+
array('store_table' => $this->getTable('qbanner/qbanner_store')), 'main_table.qbanner_id = store_table.qbanner_id', array()
|
49 |
+
)
|
50 |
+
->where('store_table.store_id in (?)', array(0, $store));
|
51 |
+
return $this;
|
52 |
+
}
|
53 |
+
return $this;
|
54 |
+
}
|
55 |
+
}
|
app/code/community/Qaz/Qbanner/Model/Option/Pages.php
ADDED
@@ -0,0 +1,19 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Model_Option_Pages extends Varien_Object {
|
4 |
+
|
5 |
+
public function getOptionArray() {
|
6 |
+
$_collection = Mage::getSingleton('cms/page')->getCollection()
|
7 |
+
->addFieldToFilter('is_active', 1);
|
8 |
+
|
9 |
+
$_result = array();
|
10 |
+
foreach ($_collection as $item) {
|
11 |
+
$data = array(
|
12 |
+
'value' => $item->getData('page_id'),
|
13 |
+
'label' => $item->getData('title'));
|
14 |
+
$_result[] = $data;
|
15 |
+
}
|
16 |
+
return $_result;
|
17 |
+
}
|
18 |
+
|
19 |
+
}
|
app/code/community/Qaz/Qbanner/Model/Option/Position.php
ADDED
@@ -0,0 +1,20 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Model_Option_Position extends Varien_Object {
|
4 |
+
const POSITION_CONTENT_TOP = 1;
|
5 |
+
const POSITION_CONTENT_BOTTOM = 2;
|
6 |
+
|
7 |
+
static public function getOptionArray() {
|
8 |
+
return array(
|
9 |
+
self::POSITION_CONTENT_TOP => Mage::helper('qbanner')->__('Content Top'),
|
10 |
+
self::POSITION_CONTENT_BOTTOM => Mage::helper('qbanner')->__('After Header')
|
11 |
+
);
|
12 |
+
}
|
13 |
+
|
14 |
+
static public function getOptionArrayEdit() {
|
15 |
+
return array(
|
16 |
+
array('value' => self::POSITION_CONTENT_TOP, 'label' => Mage::helper('qbanner')->__('Content Top')),
|
17 |
+
array('value' => self::POSITION_CONTENT_BOTTOM, 'label' => Mage::helper('qbanner')->__('After Header'))
|
18 |
+
);
|
19 |
+
}
|
20 |
+
}
|
app/code/community/Qaz/Qbanner/Model/Option/Status.php
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Model_Option_Status extends Varien_Object {
|
4 |
+
const STATUS_ENABLED = 1;
|
5 |
+
const STATUS_DISABLED = 2;
|
6 |
+
|
7 |
+
static public function getOptionArray() {
|
8 |
+
return array(
|
9 |
+
self::STATUS_ENABLED => Mage::helper('qbanner')->__('Active'),
|
10 |
+
self::STATUS_DISABLED => Mage::helper('qbanner')->__('Non Active')
|
11 |
+
);
|
12 |
+
}
|
13 |
+
|
14 |
+
static public function getOptionArrayEdit() {
|
15 |
+
return array(
|
16 |
+
array('value' => self::STATUS_DISABLED, 'label' => Mage::helper('qbanner')->__('Non Active')),
|
17 |
+
array('value' => self::STATUS_ENABLED, 'label' => Mage::helper('qbanner')->__('Active')),
|
18 |
+
);
|
19 |
+
}
|
20 |
+
|
21 |
+
}
|
app/code/community/Qaz/Qbanner/Model/Qbanner.php
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Model_Qbanner extends Mage_Core_Model_Abstract {
|
4 |
+
|
5 |
+
public function _construct() {
|
6 |
+
parent::_construct();
|
7 |
+
$this->_init('qbanner/qbanner');
|
8 |
+
}
|
9 |
+
|
10 |
+
/*
|
11 |
+
* Load image
|
12 |
+
*/
|
13 |
+
|
14 |
+
public function getImageList() {
|
15 |
+
if (!$this->hasData('image')) {
|
16 |
+
$_object = $this->_getResource()->loadImage($this);
|
17 |
+
}
|
18 |
+
return $this->getData('image');
|
19 |
+
}
|
20 |
+
|
21 |
+
}
|
app/code/community/Qaz/Qbanner/controllers/Adminhtml/QbannerController.php
ADDED
@@ -0,0 +1,223 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Qaz_Qbanner_Adminhtml_QbannerController extends Mage_Adminhtml_Controller_action {
|
4 |
+
|
5 |
+
protected function _initAction() {
|
6 |
+
$this->loadLayout()
|
7 |
+
->_setActiveMenu('qbanner')
|
8 |
+
->_addBreadcrumb(Mage::helper('adminhtml')->__('Banners Manager'), Mage::helper('adminhtml')->__('Banner Manager'));
|
9 |
+
|
10 |
+
return $this;
|
11 |
+
}
|
12 |
+
|
13 |
+
public function indexAction() {
|
14 |
+
$this->_initAction()
|
15 |
+
->renderLayout();
|
16 |
+
}
|
17 |
+
|
18 |
+
public function editAction() {
|
19 |
+
$id = $this->getRequest()->getParam('id');
|
20 |
+
$model = Mage::getModel('qbanner/qbanner')->load($id);
|
21 |
+
|
22 |
+
if ($model->getId() || $id == 0) {
|
23 |
+
$data = Mage::getSingleton('adminhtml/session')->getFormData(true);
|
24 |
+
if (!empty($data)) {
|
25 |
+
$model->setData($data);
|
26 |
+
}
|
27 |
+
$showIn = $model->getShowIn();
|
28 |
+
if (strlen($showIn) > 0)
|
29 |
+
$model->setShowIn(explode(",", $showIn));
|
30 |
+
Mage::register('qbanner_data', $model);
|
31 |
+
|
32 |
+
$this->loadLayout();
|
33 |
+
$this->_setActiveMenu('qbanner');
|
34 |
+
|
35 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Banner Manager'), Mage::helper('adminhtml')->__('Banner Manager'));
|
36 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Banner News'), Mage::helper('adminhtml')->__('Banner News'));
|
37 |
+
|
38 |
+
$this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
|
39 |
+
|
40 |
+
$this->_addContent($this->getLayout()->createBlock('qbanner/adminhtml_qbanner_edit'))
|
41 |
+
->_addLeft($this->getLayout()->createBlock('qbanner/adminhtml_qbanner_edit_tabs'));
|
42 |
+
|
43 |
+
$this->renderLayout();
|
44 |
+
} else {
|
45 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('qbanner')->__('Banner does not exist'));
|
46 |
+
$this->_redirect('*/*/');
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
public function newAction() {
|
51 |
+
$this->_forward('edit');
|
52 |
+
}
|
53 |
+
|
54 |
+
public function saveAction() {
|
55 |
+
if ($data = $this->getRequest()->getPost()) {
|
56 |
+
$model = Mage::getModel('qbanner/qbanner');
|
57 |
+
|
58 |
+
if (isset($data['categories'])) {
|
59 |
+
$data['categories'] = explode(',', $data['categories']);
|
60 |
+
if (is_array($data['categories'])) {
|
61 |
+
$data['categories'] = array_unique($data['categories']);
|
62 |
+
}
|
63 |
+
}
|
64 |
+
if (isset($data['show_in']) and sizeof($data['show_in']) > 0) {
|
65 |
+
$data['show_in'] = implode(",", $data['show_in']);
|
66 |
+
} else {
|
67 |
+
$data['show_in'] = 'no_where';
|
68 |
+
}
|
69 |
+
|
70 |
+
$model->setData($data)
|
71 |
+
->setId($this->getRequest()->getParam('id'));
|
72 |
+
try {
|
73 |
+
$model->save();
|
74 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('qbanner')->__('Banner was successfully saved'));
|
75 |
+
Mage::getSingleton('adminhtml/session')->setFormData(false);
|
76 |
+
|
77 |
+
if ($this->getRequest()->getParam('back')) {
|
78 |
+
$this->_redirect('*/*/edit', array('id' => $model->getId()));
|
79 |
+
return;
|
80 |
+
}
|
81 |
+
$this->_redirect('*/*/');
|
82 |
+
return;
|
83 |
+
} catch (Exception $e) {
|
84 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
85 |
+
Mage::getSingleton('adminhtml/session')->setFormData($data);
|
86 |
+
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
|
87 |
+
return;
|
88 |
+
}
|
89 |
+
}
|
90 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('qbanner')->__('Unable to find item to save'));
|
91 |
+
$this->_redirect('*/*/');
|
92 |
+
}
|
93 |
+
|
94 |
+
public function deleteAction() {
|
95 |
+
if ($this->getRequest()->getParam('id') > 0) {
|
96 |
+
try {
|
97 |
+
$model = Mage::getModel('qbanner/qbanner');
|
98 |
+
|
99 |
+
$model->setId($this->getRequest()->getParam('id'))
|
100 |
+
->delete();
|
101 |
+
|
102 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Banner was successfully deleted'));
|
103 |
+
$this->_redirect('*/*/');
|
104 |
+
} catch (Exception $e) {
|
105 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
106 |
+
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
|
107 |
+
}
|
108 |
+
}
|
109 |
+
$this->_redirect('*/*/');
|
110 |
+
}
|
111 |
+
|
112 |
+
public function massDeleteAction() {
|
113 |
+
$qbannerIds = $this->getRequest()->getParam('qbanner');
|
114 |
+
if (!is_array($qbannerIds)) {
|
115 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
|
116 |
+
} else {
|
117 |
+
try {
|
118 |
+
foreach ($qbannerIds as $qbannerId) {
|
119 |
+
$qbanner = Mage::getModel('qbanner/qbanner')->load($qbannerId);
|
120 |
+
$qbanner->delete();
|
121 |
+
}
|
122 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(
|
123 |
+
Mage::helper('adminhtml')->__(
|
124 |
+
'Total of %d record(s) were successfully deleted', count($qbannerIds)
|
125 |
+
)
|
126 |
+
);
|
127 |
+
} catch (Exception $e) {
|
128 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
129 |
+
}
|
130 |
+
}
|
131 |
+
$this->_redirect('*/*/index');
|
132 |
+
}
|
133 |
+
|
134 |
+
public function massStatusAction() {
|
135 |
+
$qbannerIds = $this->getRequest()->getParam('qbanner');
|
136 |
+
if (!is_array($qbannerIds)) {
|
137 |
+
Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
|
138 |
+
} else {
|
139 |
+
try {
|
140 |
+
foreach ($qbannerIds as $qbannerId) {
|
141 |
+
$qbanner = Mage::getSingleton('qbanner/qbanner')
|
142 |
+
->load($qbannerId)
|
143 |
+
->setStatus($this->getRequest()->getParam('status'))
|
144 |
+
->setIsMassupdate(true)
|
145 |
+
->save();
|
146 |
+
}
|
147 |
+
$this->_getSession()->addSuccess(
|
148 |
+
$this->__('Total of %d record(s) were successfully updated', count($qbannerIds))
|
149 |
+
);
|
150 |
+
} catch (Exception $e) {
|
151 |
+
$this->_getSession()->addError($e->getMessage());
|
152 |
+
}
|
153 |
+
}
|
154 |
+
$this->_redirect('*/*/index');
|
155 |
+
}
|
156 |
+
|
157 |
+
public function exportCsvAction() {
|
158 |
+
$fileName = 'qbanner.csv';
|
159 |
+
$content = $this->getLayout()->createBlock('qbanner/adminhtml_qbanner_grid')
|
160 |
+
->getCsv();
|
161 |
+
|
162 |
+
$this->_sendUploadResponse($fileName, $content);
|
163 |
+
}
|
164 |
+
|
165 |
+
public function exportXmlAction() {
|
166 |
+
$fileName = 'qbanner.xml';
|
167 |
+
$content = $this->getLayout()->createBlock('qbanner/adminhtml_qbanner_grid')
|
168 |
+
->getXml();
|
169 |
+
|
170 |
+
$this->_sendUploadResponse($fileName, $content);
|
171 |
+
}
|
172 |
+
|
173 |
+
protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream') {
|
174 |
+
$response = $this->getResponse();
|
175 |
+
$response->setHeader('HTTP/1.1 200 OK', '');
|
176 |
+
$response->setHeader('Pragma', 'public', true);
|
177 |
+
$response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
|
178 |
+
$response->setHeader('Content-Disposition', 'attachment; filename=' . $fileName);
|
179 |
+
$response->setHeader('Last-Modified', date('r'));
|
180 |
+
$response->setHeader('Accept-Ranges', 'bytes');
|
181 |
+
$response->setHeader('Content-Length', strlen($content));
|
182 |
+
$response->setHeader('Content-type', $contentType);
|
183 |
+
$response->setBody($content);
|
184 |
+
$response->sendResponse();
|
185 |
+
die;
|
186 |
+
}
|
187 |
+
|
188 |
+
public function uploadAction() {
|
189 |
+
try {
|
190 |
+
$uploader = new Mage_Core_Model_File_Uploader('image');
|
191 |
+
$uploader->setAllowedExtensions(array('jpg', 'jpeg', 'gif', 'png'));
|
192 |
+
$uploader->setAllowRenameFiles(true);
|
193 |
+
$uploader->setFilesDispersion(true);
|
194 |
+
$result = $uploader->save(
|
195 |
+
Mage::getSingleton('qbanner/config')->getBaseTmpMediaPath()
|
196 |
+
);
|
197 |
+
/**
|
198 |
+
* Workaround for prototype 1.7 methods "isJSON", "evalJSON" on Windows OS
|
199 |
+
*/
|
200 |
+
$result['tmp_name'] = str_replace(DS, "/", $result['tmp_name']);
|
201 |
+
$result['path'] = str_replace(DS, "/", $result['path']);
|
202 |
+
|
203 |
+
$result['url'] = Mage::getSingleton('qbanner/config')->getTmpMediaUrl($result['file']);
|
204 |
+
$result['cookie'] = array(
|
205 |
+
'name' => session_name(),
|
206 |
+
'value' => $this->_getSession()->getSessionId(),
|
207 |
+
'lifetime' => $this->_getSession()->getCookieLifetime(),
|
208 |
+
'path' => $this->_getSession()->getCookiePath(),
|
209 |
+
'domain' => $this->_getSession()->getCookieDomain()
|
210 |
+
);
|
211 |
+
} catch (Exception $e) {
|
212 |
+
$result = array(
|
213 |
+
'error' => $e->getMessage(),
|
214 |
+
'errorcode' => $e->getCode());
|
215 |
+
}
|
216 |
+
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
|
217 |
+
}
|
218 |
+
|
219 |
+
protected function _isAllowed() {
|
220 |
+
return Mage::getSingleton('admin/session')->isAllowed('qbanner/config');
|
221 |
+
}
|
222 |
+
|
223 |
+
}
|
app/code/community/Qaz/Qbanner/controllers/IndexController.php
ADDED
@@ -0,0 +1,47 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class Qaz_Qbanner_IndexController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
|
7 |
+
/*
|
8 |
+
* Load an object by id
|
9 |
+
* Request looking like:
|
10 |
+
* http://site.com/qbanner?id=15
|
11 |
+
* or
|
12 |
+
* http://site.com/qbanner/id/15
|
13 |
+
*/
|
14 |
+
/*
|
15 |
+
$qbanner_id = $this->getRequest()->getParam('id');
|
16 |
+
|
17 |
+
if($qbanner_id != null && $qbanner_id != '') {
|
18 |
+
$qbanner = Mage::getModel('qbanner/qbanner')->load($qbanner_id)->getData();
|
19 |
+
} else {
|
20 |
+
$qbanner = null;
|
21 |
+
}
|
22 |
+
*/
|
23 |
+
|
24 |
+
/*
|
25 |
+
* If no param we load a the last created item
|
26 |
+
*/
|
27 |
+
/*
|
28 |
+
if($qbanner == null) {
|
29 |
+
$resource = Mage::getSingleton('core/resource');
|
30 |
+
$read= $resource->getConnection('core_read');
|
31 |
+
$qbannerTable = $resource->getTableName('qbanner');
|
32 |
+
|
33 |
+
$select = $read->select()
|
34 |
+
->from($qbannerTable,array('qbanner_id','title','content','status'))
|
35 |
+
->where('status',1)
|
36 |
+
->order('created_time DESC') ;
|
37 |
+
|
38 |
+
$qbanner = $read->fetchRow($select);
|
39 |
+
}
|
40 |
+
Mage::register('qbanner', $qbanner);
|
41 |
+
*/
|
42 |
+
|
43 |
+
|
44 |
+
$this->loadLayout();
|
45 |
+
$this->renderLayout();
|
46 |
+
}
|
47 |
+
}
|
app/code/community/Qaz/Qbanner/etc/config.xml
ADDED
@@ -0,0 +1,157 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Qaz_Qbanner>
|
5 |
+
<version>1.8.1</version>
|
6 |
+
</Qaz_Qbanner>
|
7 |
+
</modules>
|
8 |
+
<frontend>
|
9 |
+
<routers>
|
10 |
+
<qbanner>
|
11 |
+
<use>standard</use>
|
12 |
+
<args>
|
13 |
+
<module>Qaz_Qbanner</module>
|
14 |
+
<frontName>qbanner</frontName>
|
15 |
+
</args>
|
16 |
+
</qbanner>
|
17 |
+
</routers>
|
18 |
+
<layout>
|
19 |
+
<updates>
|
20 |
+
<qbanner>
|
21 |
+
<file>qbanner.xml</file>
|
22 |
+
</qbanner>
|
23 |
+
</updates>
|
24 |
+
</layout>
|
25 |
+
</frontend>
|
26 |
+
<admin>
|
27 |
+
<routers>
|
28 |
+
<qbanner>
|
29 |
+
<use>admin</use>
|
30 |
+
<args>
|
31 |
+
<module>Qaz_Qbanner</module>
|
32 |
+
<frontName>qbanner</frontName>
|
33 |
+
</args>
|
34 |
+
</qbanner>
|
35 |
+
</routers>
|
36 |
+
</admin>
|
37 |
+
<adminhtml>
|
38 |
+
<menu>
|
39 |
+
<qbanner module="qbanner">
|
40 |
+
<title>Qbanner</title>
|
41 |
+
<sort_order>71</sort_order>
|
42 |
+
<children>
|
43 |
+
<items module="qbanner">
|
44 |
+
<title>Manage Banner</title>
|
45 |
+
<sort_order>0</sort_order>
|
46 |
+
<action>qbanner/adminhtml_qbanner</action>
|
47 |
+
</items>
|
48 |
+
</children>
|
49 |
+
</qbanner>
|
50 |
+
</menu>
|
51 |
+
<acl>
|
52 |
+
<resources>
|
53 |
+
<all>
|
54 |
+
<title>Allow Everything</title>
|
55 |
+
</all>
|
56 |
+
<admin>
|
57 |
+
<children>
|
58 |
+
<qbanner>
|
59 |
+
<title>Qaz Q Banner</title>
|
60 |
+
<sort_order>50</sort_order>
|
61 |
+
<children>
|
62 |
+
<item>
|
63 |
+
<title>Manage Q Banner</title>
|
64 |
+
<sort_order>0</sort_order>
|
65 |
+
</item>
|
66 |
+
</children>
|
67 |
+
</qbanner>
|
68 |
+
<system>
|
69 |
+
<children>
|
70 |
+
<config>
|
71 |
+
<children>
|
72 |
+
<qbanner>
|
73 |
+
<title>Q Banner Section</title>
|
74 |
+
</qbanner>
|
75 |
+
</children>
|
76 |
+
</config>
|
77 |
+
</children>
|
78 |
+
</system>
|
79 |
+
</children>
|
80 |
+
</admin>
|
81 |
+
</resources>
|
82 |
+
</acl>
|
83 |
+
<layout>
|
84 |
+
<updates>
|
85 |
+
<qbanner>
|
86 |
+
<file>qbanner.xml</file>
|
87 |
+
</qbanner>
|
88 |
+
</updates>
|
89 |
+
</layout>
|
90 |
+
</adminhtml>
|
91 |
+
<global>
|
92 |
+
<models>
|
93 |
+
<qbanner>
|
94 |
+
<class>Qaz_Qbanner_Model</class>
|
95 |
+
<resourceModel>qbanner_mysql4</resourceModel>
|
96 |
+
</qbanner>
|
97 |
+
<qbanner_mysql4>
|
98 |
+
<class>Qaz_Qbanner_Model_Mysql4</class>
|
99 |
+
<entities>
|
100 |
+
<qbanner>
|
101 |
+
<table>qaz_qbanner</table>
|
102 |
+
</qbanner>
|
103 |
+
<qbanner_image>
|
104 |
+
<table>qaz_qbanner_image</table>
|
105 |
+
</qbanner_image>
|
106 |
+
<qbanner_category>
|
107 |
+
<table>qaz_qbanner_category</table>
|
108 |
+
</qbanner_category>
|
109 |
+
<qbanner_page>
|
110 |
+
<table>qaz_qbanner_page</table>
|
111 |
+
</qbanner_page>
|
112 |
+
<qbanner_store>
|
113 |
+
<table>qaz_qbanner_store</table>
|
114 |
+
</qbanner_store>
|
115 |
+
</entities>
|
116 |
+
</qbanner_mysql4>
|
117 |
+
</models>
|
118 |
+
<resources>
|
119 |
+
<qbanner_setup>
|
120 |
+
<setup>
|
121 |
+
<module>Qaz_Qbanner</module>
|
122 |
+
</setup>
|
123 |
+
<connection>
|
124 |
+
<use>core_setup</use>
|
125 |
+
</connection>
|
126 |
+
</qbanner_setup>
|
127 |
+
<qbanner_write>
|
128 |
+
<connection>
|
129 |
+
<use>core_write</use>
|
130 |
+
</connection>
|
131 |
+
</qbanner_write>
|
132 |
+
<qbanner_read>
|
133 |
+
<connection>
|
134 |
+
<use>core_read</use>
|
135 |
+
</connection>
|
136 |
+
</qbanner_read>
|
137 |
+
</resources>
|
138 |
+
<blocks>
|
139 |
+
<qbanner>
|
140 |
+
<class>Qaz_Qbanner_Block</class>
|
141 |
+
</qbanner>
|
142 |
+
</blocks>
|
143 |
+
<helpers>
|
144 |
+
<qbanner>
|
145 |
+
<class>Qaz_Qbanner_Helper</class>
|
146 |
+
</qbanner>
|
147 |
+
</helpers>
|
148 |
+
</global>
|
149 |
+
<default>
|
150 |
+
<qbanner>
|
151 |
+
<general>
|
152 |
+
<enable>1</enable>
|
153 |
+
<enable_jquery>1</enable_jquery>
|
154 |
+
</general>
|
155 |
+
</qbanner>
|
156 |
+
</default>
|
157 |
+
</config>
|
app/code/community/Qaz/Qbanner/etc/system.xml
ADDED
@@ -0,0 +1,36 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<sections>
|
4 |
+
<qbanner translate="label" module="qbanner">
|
5 |
+
<label>QBanner</label>
|
6 |
+
<tab>qall</tab>
|
7 |
+
<frontend_type>text</frontend_type>
|
8 |
+
<sort_order>101</sort_order>
|
9 |
+
<show_in_default>1</show_in_default>
|
10 |
+
<show_in_website>1</show_in_website>
|
11 |
+
<show_in_store>1</show_in_store>
|
12 |
+
<groups>
|
13 |
+
<general translate="label">
|
14 |
+
<label>General Configuration</label>
|
15 |
+
<frontend_type>text</frontend_type>
|
16 |
+
<sort_order>50</sort_order>
|
17 |
+
<show_in_default>1</show_in_default>
|
18 |
+
<show_in_website>1</show_in_website>
|
19 |
+
<show_in_store>1</show_in_store>
|
20 |
+
<fields>
|
21 |
+
<enable_jquery translate="label">
|
22 |
+
<label>Enable Jquery</label>
|
23 |
+
<frontend_type>select</frontend_type>
|
24 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
25 |
+
<sort_order>2</sort_order>
|
26 |
+
<show_in_default>1</show_in_default>
|
27 |
+
<show_in_website>1</show_in_website>
|
28 |
+
<show_in_store>1</show_in_store>
|
29 |
+
<comment>If Jquery exists , You can disable it.</comment>
|
30 |
+
</enable_jquery>
|
31 |
+
</fields>
|
32 |
+
</general>
|
33 |
+
</groups>
|
34 |
+
</qbanner>
|
35 |
+
</sections>
|
36 |
+
</config>
|
app/code/community/Qaz/Qbanner/sql/qbanner_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,60 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
$installer->run("
|
7 |
+
|
8 |
+
DROP TABLE IF EXISTS {$this->getTable('qbanner/qbanner')};
|
9 |
+
CREATE TABLE {$this->getTable('qbanner/qbanner')} (
|
10 |
+
`qbanner_id` int(11) unsigned NOT NULL auto_increment,
|
11 |
+
`title` varchar(255) NOT NULL default '',
|
12 |
+
`width` smallint(4),
|
13 |
+
`height` smallint(4),
|
14 |
+
`duration` INT NOT NULL DEFAULT '5000' ,
|
15 |
+
`effect` VARCHAR( 30 ) NOT NULL,
|
16 |
+
`show_caption` TINYINT( 4 ) NOT NULL ,
|
17 |
+
`show_pagination` TINYINT( 4 ) NOT NULL,
|
18 |
+
`auto_slide` TINYINT( 4 ) NOT NULL ,
|
19 |
+
`mouseover_stop` TINYINT( 4 ) NOT NULL,
|
20 |
+
`position` smallint (4) ,
|
21 |
+
`status` smallint(6) NOT NULL default '0',
|
22 |
+
`show_in` VARCHAR( 100 ) NOT NULL,
|
23 |
+
PRIMARY KEY (`qbanner_id`)
|
24 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
25 |
+
|
26 |
+
DROP TABLE IF EXISTS `{$this->getTable('qbanner/qbanner_image')}`;
|
27 |
+
CREATE TABLE `{$this->getTable('qbanner/qbanner_image')}` (
|
28 |
+
`image_id` smallint(6) NOT NULL AUTO_INCREMENT,
|
29 |
+
`label` varchar(255) DEFAULT NULL,
|
30 |
+
`file` varchar(255) DEFAULT NULL,
|
31 |
+
`position` smallint(5) DEFAULT '0',
|
32 |
+
`disabled` tinyint(1) DEFAULT '1',
|
33 |
+
`qbanner_id` smallint(6) DEFAULT '0',
|
34 |
+
PRIMARY KEY (`image_id`)
|
35 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Qbanner Image' ;
|
36 |
+
|
37 |
+
DROP TABLE IF EXISTS `{$this->getTable('qbanner/qbanner_category')}`;
|
38 |
+
CREATE TABLE `{$this->getTable('qbanner/qbanner_category')}` (
|
39 |
+
`qbanner_id` smallint(6) NOT NULL,
|
40 |
+
`category_id` smallint(6) NOT NULL,
|
41 |
+
PRIMARY KEY (`qbanner_id`,`category_id`)
|
42 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Qbanner Category' ;
|
43 |
+
|
44 |
+
DROP TABLE IF EXISTS `{$this->getTable('qbanner/qbanner_page')}`;
|
45 |
+
CREATE TABLE `{$this->getTable('qbanner/qbanner_page')}` (
|
46 |
+
`qbanner_id` smallint(6) NOT NULL,
|
47 |
+
`page_id` smallint(6) NOT NULL,
|
48 |
+
PRIMARY KEY (`qbanner_id`,`page_id`)
|
49 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Qbanner Page' ;
|
50 |
+
|
51 |
+
DROP TABLE IF EXISTS `{$this->getTable('qbanner/qbanner_store')}`;
|
52 |
+
CREATE TABLE `{$this->getTable('qbanner/qbanner_store')}` (
|
53 |
+
`qbanner_id` smallint(6) NOT NULL,
|
54 |
+
`store_id` smallint(6) NOT NULL,
|
55 |
+
PRIMARY KEY (`qbanner_id`,`store_id`)
|
56 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Qbanner Store' ;
|
57 |
+
|
58 |
+
");
|
59 |
+
|
60 |
+
$installer->endSetup();
|
app/code/community/Qaz/Qbanner/sql/qbanner_setup/mysql4-upgrade-1.7.1-1.8.1.php
ADDED
@@ -0,0 +1,10 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
$installer->run("
|
7 |
+
ALTER TABLE {$this->getTable('qbanner/qbanner')} add column show_next_prev TINYINT( 4 ) after `show_pagination`;
|
8 |
+
");
|
9 |
+
|
10 |
+
$installer->endSetup();
|
app/design/adminhtml/default/default/layout/qbanner.xml
ADDED
@@ -0,0 +1,8 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<qbanner_adminhtml_qbanner_index>
|
4 |
+
<reference name="content">
|
5 |
+
<block type="qbanner/adminhtml_qbanner" name="qbanner" />
|
6 |
+
</reference>
|
7 |
+
</qbanner_adminhtml_qbanner_index>
|
8 |
+
</layout>
|
app/design/adminhtml/default/default/template/qaz/qbanner/edit/tab/category.phtml
ADDED
@@ -0,0 +1,183 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<div class="entry-edit">
|
2 |
+
<div class="entry-edit-head">
|
3 |
+
<h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('qbanner')->__('Banner Categories') ?></h4>
|
4 |
+
</div>
|
5 |
+
<fieldset id="grop_fields">
|
6 |
+
<input type="hidden" name="categories" id="banner_categories" value="<?php echo $this->getIdsString() ?>">
|
7 |
+
<div id="banner-categories" class="tree"></div>
|
8 |
+
</fieldset>
|
9 |
+
</div>
|
10 |
+
<input type="hidden" name="category_products" id="in_category_products" value="" />
|
11 |
+
<?php if($this->getRootNode() && $this->getRootNode()->hasChildren()): ?>
|
12 |
+
<script type="text/javascript">
|
13 |
+
Ext.EventManager.onDocumentReady(function() {
|
14 |
+
var categoryLoader = new Ext.tree.TreeLoader({
|
15 |
+
dataUrl: '<?php echo $this->getLoadTreeUrl()?>'
|
16 |
+
});
|
17 |
+
|
18 |
+
categoryLoader.createNode = function(config) {
|
19 |
+
config.uiProvider = Ext.tree.CheckboxNodeUI;
|
20 |
+
var node;
|
21 |
+
if (config.children && !config.children.length) {
|
22 |
+
delete(config.children);
|
23 |
+
node = new Ext.tree.AsyncTreeNode(config);
|
24 |
+
|
25 |
+
} else {
|
26 |
+
node = new Ext.tree.TreeNode(config);
|
27 |
+
}
|
28 |
+
return node;
|
29 |
+
};
|
30 |
+
|
31 |
+
categoryLoader.on("beforeload", function(treeLoader, node) {
|
32 |
+
treeLoader.baseParams.category = node.attributes.id;
|
33 |
+
});
|
34 |
+
|
35 |
+
categoryLoader.on("load", function(treeLoader, node, config) {
|
36 |
+
varienWindowOnload();
|
37 |
+
});
|
38 |
+
|
39 |
+
var tree = new Ext.tree.TreePanel('banner-categories', {
|
40 |
+
animate:true,
|
41 |
+
loader: categoryLoader,
|
42 |
+
enableDD:false,
|
43 |
+
containerScroll: true,
|
44 |
+
rootUIProvider: Ext.tree.CheckboxNodeUI,
|
45 |
+
selModel: new Ext.tree.CheckNodeMultiSelectionModel(),
|
46 |
+
rootVisible: '<?php echo $this->getRootNode()->getIsVisible() ?>'
|
47 |
+
});
|
48 |
+
|
49 |
+
tree.on('check', function(node) {
|
50 |
+
if(node.attributes.checked) {
|
51 |
+
categoryAdd(node.id);
|
52 |
+
} else {
|
53 |
+
categoryRemove(node.id);
|
54 |
+
}
|
55 |
+
varienElementMethods.setHasChanges(node.getUI().checkbox);
|
56 |
+
}, tree);
|
57 |
+
|
58 |
+
// set the root node
|
59 |
+
var root = new Ext.tree.TreeNode({
|
60 |
+
text: '<?php echo $this->jsQuoteEscape($this->getRootNode()->getName()) ?>',
|
61 |
+
draggable:false,
|
62 |
+
checked:'<?php echo $this->getRootNode()->getChecked() ?>',
|
63 |
+
id:'<?php echo $this->getRootNode()->getId() ?>',
|
64 |
+
disabled: <?php echo ($this->getRootNode()->getDisabled() ? 'true' : 'false') ?>,
|
65 |
+
uiProvider: Ext.tree.CheckboxNodeUI
|
66 |
+
});
|
67 |
+
|
68 |
+
tree.setRootNode(root);
|
69 |
+
bildCategoryTree(root, <?php echo $this->getTreeJson() ?>);
|
70 |
+
tree.addListener('click', categoryClick.createDelegate(this));
|
71 |
+
|
72 |
+
// render the tree
|
73 |
+
tree.render();
|
74 |
+
root.expand();
|
75 |
+
//tree.expandAll();
|
76 |
+
});
|
77 |
+
|
78 |
+
function bildCategoryTree(parent, config){
|
79 |
+
if (!config) return null;
|
80 |
+
|
81 |
+
if (parent && config && config.length){
|
82 |
+
for (var i = 0; i < config.length; i++){
|
83 |
+
config[i].uiProvider = Ext.tree.CheckboxNodeUI;
|
84 |
+
var node;
|
85 |
+
var _node = Object.clone(config[i]);
|
86 |
+
if (_node.children && !_node.children.length) {
|
87 |
+
delete(_node.children);
|
88 |
+
node = new Ext.tree.AsyncTreeNode(_node);
|
89 |
+
|
90 |
+
} else {
|
91 |
+
node = new Ext.tree.TreeNode(config[i]);
|
92 |
+
}
|
93 |
+
parent.appendChild(node);
|
94 |
+
node.loader = node.getOwnerTree().loader;
|
95 |
+
if(config[i].children){
|
96 |
+
bildCategoryTree(node, config[i].children);
|
97 |
+
}
|
98 |
+
}
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
function categoryClick(node, e){
|
103 |
+
if (node.disabled) {
|
104 |
+
return;
|
105 |
+
}
|
106 |
+
node.getUI().check(!node.getUI().checked());
|
107 |
+
varienElementMethods.setHasChanges(Event.element(e), e);
|
108 |
+
};
|
109 |
+
function categoryAdd(id) {
|
110 |
+
var ids = $('banner_categories').value.split(',');
|
111 |
+
ids.push(id);
|
112 |
+
$('banner_categories').value = ids.join(',');
|
113 |
+
}
|
114 |
+
function categoryRemove(id) {
|
115 |
+
var ids = $('banner_categories').value.split(',');
|
116 |
+
// bug #7654 fixed
|
117 |
+
while (-1 != ids.indexOf(id)) {
|
118 |
+
ids.splice(ids.indexOf(id), 1);
|
119 |
+
}
|
120 |
+
$('banner_categories').value = ids.join(',');
|
121 |
+
}
|
122 |
+
</script>
|
123 |
+
<?php endif; ?>
|
124 |
+
<?php if(($block = $this->getLayout()->getBlock('qbanner.product.grid')) && ($_gridJsObject=$block->getJsObjectName())): ?>
|
125 |
+
<script type="text/javascript">
|
126 |
+
var categoryProducts = $H(<?php echo $this->getProductsJson() ?>);
|
127 |
+
$('in_category_products').value = categoryProducts.toQueryString();
|
128 |
+
|
129 |
+
function registerCategoryProduct(grid, element, checked){
|
130 |
+
if(checked){
|
131 |
+
if(element.positionElement){
|
132 |
+
element.positionElement.disabled = false;
|
133 |
+
categoryProducts.set(element.value, element.positionElement.value);
|
134 |
+
}
|
135 |
+
}
|
136 |
+
else{
|
137 |
+
if(element.positionElement){
|
138 |
+
element.positionElement.disabled = true;
|
139 |
+
}
|
140 |
+
categoryProducts.unset(element.value);
|
141 |
+
}
|
142 |
+
$('in_category_products').value = categoryProducts.toQueryString();
|
143 |
+
grid.reloadParams = {'selected_products[]':categoryProducts.keys()};
|
144 |
+
}
|
145 |
+
function categoryProductRowClick(grid, event){
|
146 |
+
var trElement = Event.findElement(event, 'tr');
|
147 |
+
var isInput = Event.element(event).tagName == 'INPUT';
|
148 |
+
if(trElement){
|
149 |
+
var checkbox = Element.getElementsBySelector(trElement, 'input');
|
150 |
+
if(checkbox[0]){
|
151 |
+
var checked = isInput ? checkbox[0].checked : !checkbox[0].checked;
|
152 |
+
<?php echo $_gridJsObject ?>.setCheckboxChecked(checkbox[0], checked);
|
153 |
+
}
|
154 |
+
}
|
155 |
+
}
|
156 |
+
function positionChange(event){
|
157 |
+
var element = Event.element(event);
|
158 |
+
if(element && element.checkboxElement && element.checkboxElement.checked){
|
159 |
+
categoryProducts.set(element.checkboxElement.value, element.value);
|
160 |
+
$('in_category_products').value = categoryProducts.toQueryString();
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
var tabIndex = 1000;
|
165 |
+
function categoryProductRowInit(grid, row){
|
166 |
+
var checkbox = $(row).getElementsByClassName('checkbox')[0];
|
167 |
+
var position = $(row).getElementsByClassName('input-text')[0];
|
168 |
+
if(checkbox && position){
|
169 |
+
checkbox.positionElement = position;
|
170 |
+
position.checkboxElement = checkbox;
|
171 |
+
position.disabled = !checkbox.checked;
|
172 |
+
position.tabIndex = tabIndex++;
|
173 |
+
Event.observe(position,'keyup',positionChange);
|
174 |
+
}
|
175 |
+
}
|
176 |
+
|
177 |
+
|
178 |
+
<?php echo $_gridJsObject ?>.rowClickCallback = categoryProductRowClick;
|
179 |
+
<?php echo $_gridJsObject ?>.initRowCallback = categoryProductRowInit;
|
180 |
+
<?php echo $_gridJsObject ?>.checkboxCheckCallback = registerCategoryProduct;
|
181 |
+
<?php echo $_gridJsObject ?>.rows.each(function(row){categoryProductRowInit(<?php echo $_gridJsObject ?>, row)});
|
182 |
+
</script>
|
183 |
+
<?php endif; ?>
|
app/design/adminhtml/default/default/template/qaz/qbanner/edit/tab/image.phtml
ADDED
@@ -0,0 +1,65 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php $_block = $this; ?>
|
2 |
+
<div id="<?php echo $_block->getHtmlId() ?>" >
|
3 |
+
<div class="grid">
|
4 |
+
<table cellspacing="0" class="data border" id="<?php echo $_block->getHtmlId() ?>_grid_qbanner" width="100%">
|
5 |
+
<col width="120" />
|
6 |
+
<col />
|
7 |
+
<col width="60" />
|
8 |
+
<?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
|
9 |
+
<?php endforeach; ?>
|
10 |
+
<col width="50" />
|
11 |
+
<col width="50" />
|
12 |
+
<thead>
|
13 |
+
<tr class="headings">
|
14 |
+
<th><?php echo Mage::helper('qbanner')->__('Image') ?></th>
|
15 |
+
<th><?php echo Mage::helper('qbanner')->__('Image Link') ?></th>
|
16 |
+
<th><?php echo Mage::helper('qbanner')->__('Sort Order') ?></th>
|
17 |
+
<?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
|
18 |
+
<?php endforeach; ?>
|
19 |
+
<th><?php echo Mage::helper('qbanner')->__('Disable') ?></th>
|
20 |
+
<th class="last"><?php echo Mage::helper('qbanner')->__('Remove') ?></th>
|
21 |
+
</tr>
|
22 |
+
</thead>
|
23 |
+
<tbody id="<?php echo $_block->getHtmlId() ?>_list">
|
24 |
+
<tr id="<?php echo $_block->getHtmlId() ?>_template" class="template no-display">
|
25 |
+
<td class="cell-image"><div class="place-holder" onmouseover="<?php echo $_block->getJsObjectName(); ?>.loadImage('__file__')"><span><?php echo Mage::helper('qbanner')->__('Roll Over for preview') ?></span></div><img src="<?php echo $this->getSkinUrl('images/spacer.gif')?>" width="100" style="display:none;" alt="" /></td>
|
26 |
+
<td class="cell-label"><input type="text" class="input-text" onkeyup="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" onchange="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
|
27 |
+
<td class="cell-position"><input type="text" class="input-text validate-number" onkeyup="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" onchange="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
|
28 |
+
<?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
|
29 |
+
<td class="cell-<?php echo $typeId ?> a-center" style="display:none;">
|
30 |
+
<input type="hidden" name="<?php echo $type['field'] ?>" onclick="<?php echo $_block->getJsObjectName(); ?>.setProductImages('__file__')" value="__file__" /></td>
|
31 |
+
<?php endforeach; ?>
|
32 |
+
<td class="cell-disable a-center"><input type="checkbox" onclick="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
|
33 |
+
<td class="cell-remove a-center last"><input type="checkbox" onclick="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
|
34 |
+
</tr>
|
35 |
+
|
36 |
+
<tr id="<?php echo $_block->getHtmlId() ?>-image-0">
|
37 |
+
<td class="cell-image"><?php echo Mage::helper('catalog')->__('No image') ?></td>
|
38 |
+
<td class="cell-label"><input type="hidden" /> </td>
|
39 |
+
<td class="cell-position"><input type="hidden" /> </td>
|
40 |
+
<?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
|
41 |
+
<td class="cell-<?php echo $typeId ?> a-center" style="display:none;">
|
42 |
+
<input type="hidden" disabled="disabled" name="<?php echo $type['field'] ?>" onclick="<?php echo $_block->getJsObjectName(); ?>.setProductImages('no_selection')" value="no_selection" /></td>
|
43 |
+
<?php endforeach; ?>
|
44 |
+
<td class="cell-disable"><input type="hidden" /> </td>
|
45 |
+
<td class="cell-remove"><input type="hidden" /> </td>
|
46 |
+
</tr>
|
47 |
+
</tbody>
|
48 |
+
<tfoot>
|
49 |
+
<tr>
|
50 |
+
<td colspan="100" class="last" style="padding:8px">
|
51 |
+
<?php echo $_block->getUploaderHtml() ?>
|
52 |
+
</td>
|
53 |
+
</tr>
|
54 |
+
</tfoot>
|
55 |
+
</table>
|
56 |
+
</div>
|
57 |
+
</div>
|
58 |
+
<input type="hidden" id="<?php echo $_block->getHtmlId() ?>_save" name="images" value="<?php echo $_block->htmlEscape($_block->getImagesJson()) ?>" />
|
59 |
+
<input type="hidden" id="smece_save" name="[smece]" value="smece" />
|
60 |
+
<input type="hidden" id="<?php echo $_block->getHtmlId() ?>_save_image" name="[values]" value="<?php echo $_block->htmlEscape($_block->getImagesValuesJson()) ?>" />
|
61 |
+
<script type="text/javascript">
|
62 |
+
//<![CDATA[
|
63 |
+
var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php echo $_block->getUploader()->getJsObjectName() ?>, <?php echo $_block->getImageTypesJson() ?>);
|
64 |
+
//]]>
|
65 |
+
</script>
|
app/design/frontend/default/default/layout/qbanner.xml
ADDED
@@ -0,0 +1,11 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<default>
|
4 |
+
<reference name="header">
|
5 |
+
<block type="qbanner/qbanner" name="qbanner.top" template="qaz/qbanner/qbanner.after.header.phtml" />
|
6 |
+
</reference>
|
7 |
+
<reference name="content">
|
8 |
+
<block type="qbanner/qbanner" name="qbanner" before="-" template="qaz/qbanner/qbanner.content.top.phtml" />
|
9 |
+
</reference>
|
10 |
+
</default>
|
11 |
+
</layout>
|
app/design/frontend/default/default/template/qaz/qbanner/qbanner.after.header.phtml
ADDED
@@ -0,0 +1,109 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php $banners = $this->getQbanner(2); ?>
|
2 |
+
<?php if (count($banners->getData()) > 0) : ?>
|
3 |
+
<?php foreach ($banners as $banner): ?>
|
4 |
+
<?php
|
5 |
+
$showIn = $this->addShowInFilter($banner);
|
6 |
+
if (!$showIn)
|
7 |
+
continue;
|
8 |
+
$duration = $banner->getDuration();
|
9 |
+
if (!$duration)
|
10 |
+
$duration = 5000;
|
11 |
+
$effect = $banner->getEffect();
|
12 |
+
$showCaption = $banner->getShowCaption();
|
13 |
+
$showNext = $banner->getShowNextPrev();
|
14 |
+
$showPagination = $banner->getShowPagination();
|
15 |
+
$autoSlide = $banner->getAutoSlide();
|
16 |
+
if (!$autoSlide)
|
17 |
+
$duration = 0;
|
18 |
+
$mouseoverStop = $banner->getMouseoverStop();
|
19 |
+
if ($mouseoverStop)
|
20 |
+
$mouseoverStop = 'true';
|
21 |
+
else
|
22 |
+
$mouseoverStop = 'false';
|
23 |
+
$bannerWidth = $banner->getWidth();
|
24 |
+
$bannerHeight = $banner->getHeight();
|
25 |
+
?>
|
26 |
+
<div class="clear"></div>
|
27 |
+
<div class="qbanner content-top" style="width:<?php echo $bannerWidth . 'px'; ?>; height: <?php echo $bannerHeight . 'px'; ?>;">
|
28 |
+
<div id="slides-content-top-<?php echo $banner->getId(); ?>" class="qbanner-slide">
|
29 |
+
<div class="slides_container">
|
30 |
+
<?php $images = $banner->getImageList(); ?>
|
31 |
+
<?php if (sizeof($images) > 0) : ?>
|
32 |
+
<?php foreach ($images as $image): ?>
|
33 |
+
<?php if (sizeof($images) == 1): ?>
|
34 |
+
<div class="slide" style="width:<?php echo $bannerWidth . 'px'; ?>; height: <?php echo $bannerHeight . 'px'; ?>;">
|
35 |
+
<img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'qaz/qbanner' . $image['file']; ?>"alt="<?php echo $image['label']; ?>"/>
|
36 |
+
<?php if ($showCaption): ?>
|
37 |
+
<div class="caption" style="bottom:0">
|
38 |
+
<p><?php echo $image['label']; ?></p>
|
39 |
+
</div>
|
40 |
+
<?php endif; ?>
|
41 |
+
</div>
|
42 |
+
<?php endif; ?>
|
43 |
+
<div class="slide" style="width:<?php echo $bannerWidth . 'px'; ?>; height: <?php echo $bannerHeight . 'px'; ?>;">
|
44 |
+
<img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'qaz/qbanner' . $image['file']; ?>"alt="<?php echo $image['label']; ?>"/>
|
45 |
+
<?php if ($showCaption): ?>
|
46 |
+
<div class="caption" style="bottom:0">
|
47 |
+
<p><?php echo $image['label']; ?></p>
|
48 |
+
</div>
|
49 |
+
<?php endif; ?>
|
50 |
+
</div>
|
51 |
+
<?php endforeach; ?>
|
52 |
+
<?php endif; ?>
|
53 |
+
</div>
|
54 |
+
<?php if ($showNext): ?>
|
55 |
+
<a href="#" class="prev" style="top:<?php echo $bannerHeight / 2 - 20; ?>px;left:0px"><img src="<?php echo $this->getSkinUrl('qaz/qbanner/images/b_prev.png'); ?>" alt="Arrow Prev"/></a>
|
56 |
+
<a href="#" class="next" style="top:<?php echo $bannerHeight / 2 - 20; ?>px;right:0px"><img src="<?php echo $this->getSkinUrl('qaz/qbanner/images/b_next.png'); ?>" alt="Arrow Next"/></a>
|
57 |
+
<?php endif; ?>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
<div class="clear"></div>
|
61 |
+
<script>
|
62 |
+
<?php if ($showIn): ?>
|
63 |
+
$j(function(){
|
64 |
+
$j('#slides-content-top-<?php echo $banner->getId(); ?>').slides({
|
65 |
+
preload : true,
|
66 |
+
preloadImage: 'skin/frontend/default/default/qaz/qbanner/images/loading.gif',
|
67 |
+
play: <?php echo $duration; ?>,
|
68 |
+
pause: 1000,
|
69 |
+
hoverPause: <?php echo $mouseoverStop; ?>,
|
70 |
+
effect : '<?php echo $effect; ?>',
|
71 |
+
animationStart: function(current){
|
72 |
+
$j('.caption').animate({
|
73 |
+
bottom:-40
|
74 |
+
},200);
|
75 |
+
if (window.console && console.log) {
|
76 |
+
// example return of current slide number
|
77 |
+
console.log('animationStart on slide: ', current);
|
78 |
+
};
|
79 |
+
},
|
80 |
+
animationComplete: function(current){
|
81 |
+
$j('.caption').animate({
|
82 |
+
bottom:0
|
83 |
+
},250);
|
84 |
+
if (window.console && console.log) {
|
85 |
+
// example return of current slide number
|
86 |
+
console.log('animationComplete on slide: ', current);
|
87 |
+
};
|
88 |
+
},
|
89 |
+
slidesLoaded: function() {
|
90 |
+
$j('.caption').animate({
|
91 |
+
bottom:0
|
92 |
+
},250);
|
93 |
+
}
|
94 |
+
});
|
95 |
+
});
|
96 |
+
</script>
|
97 |
+
<style>
|
98 |
+
#slides-content-top-<?php echo $banner->getId() ?> .caption{width: <?php echo $bannerWidth; ?>px;}
|
99 |
+
#slides-content-top-<?php echo $banner->getId() ?> .pagination {margin:0 auto;left:<?php echo ($bannerWidth - 50 ) / 2; ?>px;}
|
100 |
+
</style>
|
101 |
+
<?php if (!$showPagination): ?>
|
102 |
+
<style>
|
103 |
+
#slides-content-top-<?php echo $banner->getId() ?> .pagination {display:none;}
|
104 |
+
</style>
|
105 |
+
<?php endif; ?>
|
106 |
+
<?php endif; ?>
|
107 |
+
<?php endforeach; ?>
|
108 |
+
<?php endif; ?>
|
109 |
+
|
app/design/frontend/default/default/template/qaz/qbanner/qbanner.content.top.phtml
ADDED
@@ -0,0 +1,109 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php $banners = $this->getQbanner(1); ?>
|
2 |
+
<?php if (count($banners->getData()) > 0) : ?>
|
3 |
+
<?php foreach ($banners as $banner): ?>
|
4 |
+
<?php
|
5 |
+
$showIn = $this->addShowInFilter($banner);
|
6 |
+
if (!$showIn)
|
7 |
+
continue;
|
8 |
+
$duration = $banner->getDuration();
|
9 |
+
if (!$duration)
|
10 |
+
$duration = 5000;
|
11 |
+
$effect = $banner->getEffect();
|
12 |
+
$showCaption = $banner->getShowCaption();
|
13 |
+
$showNext = $banner->getShowNextPrev();
|
14 |
+
$showPagination = $banner->getShowPagination();
|
15 |
+
$autoSlide = $banner->getAutoSlide();
|
16 |
+
if (!$autoSlide)
|
17 |
+
$duration = 0;
|
18 |
+
$mouseoverStop = $banner->getMouseoverStop();
|
19 |
+
if ($mouseoverStop)
|
20 |
+
$mouseoverStop = 'true';
|
21 |
+
else
|
22 |
+
$mouseoverStop = 'false';
|
23 |
+
$bannerWidth = $banner->getWidth();
|
24 |
+
$bannerHeight = $banner->getHeight();
|
25 |
+
?>
|
26 |
+
<div class="clear"></div>
|
27 |
+
<div class="qbanner content-top" style="width:<?php echo $bannerWidth . 'px'; ?>; height: <?php echo $bannerHeight . 'px'; ?>;">
|
28 |
+
<div id="slides-content-top-<?php echo $banner->getId(); ?>" class="qbanner-slide">
|
29 |
+
<div class="slides_container">
|
30 |
+
<?php $images = $banner->getImageList(); ?>
|
31 |
+
<?php if (sizeof($images) > 0) : ?>
|
32 |
+
<?php foreach ($images as $image): ?>
|
33 |
+
<?php if (sizeof($images) == 1): ?>
|
34 |
+
<div class="slide" style="width:<?php echo $bannerWidth . 'px'; ?>; height: <?php echo $bannerHeight . 'px'; ?>;">
|
35 |
+
<img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'qaz/qbanner' . $image['file']; ?>"alt="<?php echo $image['label']; ?>"/>
|
36 |
+
<?php if ($showCaption): ?>
|
37 |
+
<div class="caption" style="bottom:0">
|
38 |
+
<p><?php echo $image['label']; ?></p>
|
39 |
+
</div>
|
40 |
+
<?php endif; ?>
|
41 |
+
</div>
|
42 |
+
<?php endif; ?>
|
43 |
+
<div class="slide" style="width:<?php echo $bannerWidth . 'px'; ?>; height: <?php echo $bannerHeight . 'px'; ?>;">
|
44 |
+
<img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'qaz/qbanner' . $image['file']; ?>"alt="<?php echo $image['label']; ?>"/>
|
45 |
+
<?php if ($showCaption): ?>
|
46 |
+
<div class="caption" style="bottom:0">
|
47 |
+
<p><?php echo $image['label']; ?></p>
|
48 |
+
</div>
|
49 |
+
<?php endif; ?>
|
50 |
+
</div>
|
51 |
+
<?php endforeach; ?>
|
52 |
+
<?php endif; ?>
|
53 |
+
</div>
|
54 |
+
<?php if ($showNext): ?>
|
55 |
+
<a href="#" class="prev" style="top:<?php echo $bannerHeight / 2 - 20; ?>px;left:0px"><img src="<?php echo $this->getSkinUrl('qaz/qbanner/images/b_prev.png'); ?>" alt="Arrow Prev"/></a>
|
56 |
+
<a href="#" class="next" style="top:<?php echo $bannerHeight / 2 - 20; ?>px;right:0px"><img src="<?php echo $this->getSkinUrl('qaz/qbanner/images/b_next.png'); ?>" alt="Arrow Next"/></a>
|
57 |
+
<?php endif; ?>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
<div class="clear"></div>
|
61 |
+
<script>
|
62 |
+
<?php if ($showIn): ?>
|
63 |
+
$j(function(){
|
64 |
+
$j('#slides-content-top-<?php echo $banner->getId(); ?>').slides({
|
65 |
+
preload : true,
|
66 |
+
preloadImage: 'skin/frontend/default/default/qaz/qbanner/images/loading.gif',
|
67 |
+
play: <?php echo $duration; ?>,
|
68 |
+
pause: 1000,
|
69 |
+
hoverPause: <?php echo $mouseoverStop; ?>,
|
70 |
+
effect : '<?php echo $effect; ?>',
|
71 |
+
animationStart: function(current){
|
72 |
+
$j('.caption').animate({
|
73 |
+
bottom:-40
|
74 |
+
},200);
|
75 |
+
if (window.console && console.log) {
|
76 |
+
// example return of current slide number
|
77 |
+
console.log('animationStart on slide: ', current);
|
78 |
+
};
|
79 |
+
},
|
80 |
+
animationComplete: function(current){
|
81 |
+
$j('.caption').animate({
|
82 |
+
bottom:0
|
83 |
+
},250);
|
84 |
+
if (window.console && console.log) {
|
85 |
+
// example return of current slide number
|
86 |
+
console.log('animationComplete on slide: ', current);
|
87 |
+
};
|
88 |
+
},
|
89 |
+
slidesLoaded: function() {
|
90 |
+
$j('.caption').animate({
|
91 |
+
bottom:0
|
92 |
+
},250);
|
93 |
+
}
|
94 |
+
});
|
95 |
+
});
|
96 |
+
</script>
|
97 |
+
<style>
|
98 |
+
#slides-content-top-<?php echo $banner->getId() ?> .caption{width: <?php echo $bannerWidth; ?>px;}
|
99 |
+
#slides-content-top-<?php echo $banner->getId() ?> .pagination {margin:0 auto;left:<?php echo ($bannerWidth - 50 ) / 2; ?>px;}
|
100 |
+
</style>
|
101 |
+
<?php if (!$showPagination): ?>
|
102 |
+
<style>
|
103 |
+
#slides-content-top-<?php echo $banner->getId() ?> .pagination {display:none;}
|
104 |
+
</style>
|
105 |
+
<?php endif; ?>
|
106 |
+
<?php endif; ?>
|
107 |
+
<?php endforeach; ?>
|
108 |
+
<?php endif; ?>
|
109 |
+
|
app/etc/modules/Qaz_All.xml
ADDED
@@ -0,0 +1,10 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Qaz_All>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</Qaz_All>
|
8 |
+
</modules>
|
9 |
+
</config>
|
10 |
+
<!--Qazware Magento Oscommerce All -->
|
app/etc/modules/Qaz_Qbanner.xml
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Qaz_Qbanner>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</Qaz_Qbanner>
|
8 |
+
</modules>
|
9 |
+
</config>
|
js/qaz/qbanner/jquery.1.5.1.js
ADDED
@@ -0,0 +1,16 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*!
|
2 |
+
* jQuery JavaScript Library v1.5.1
|
3 |
+
* http://jquery.com/
|
4 |
+
*
|
5 |
+
* Copyright 2011, John Resig
|
6 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
7 |
+
* http://jquery.org/license
|
8 |
+
*
|
9 |
+
* Includes Sizzle.js
|
10 |
+
* http://sizzlejs.com/
|
11 |
+
* Copyright 2011, The Dojo Foundation
|
12 |
+
* Released under the MIT, BSD, and GPL Licenses.
|
13 |
+
*
|
14 |
+
* Date: Wed Feb 23 13:55:29 2011 -0500
|
15 |
+
*/
|
16 |
+
(function(a,b){function cg(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cd(a){if(!bZ[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bZ[a]=c}return bZ[a]}function cc(a,b){var c={};d.each(cb.concat.apply([],cb.slice(0,b)),function(){c[this]=a});return c}function bY(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bX(){try{return new a.XMLHttpRequest}catch(b){}}function bW(){d(a).unload(function(){for(var a in bU)bU[a](0,1)})}function bQ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h==="string"&&(f[h.toLowerCase()]=a.converters[h]);l=k,k=e[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=f[m]||f["* "+k];if(!n){p=b;for(o in f){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=f[j[1]+" "+k];if(p){o=f[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&d.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bP(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bO(a,b,c,e){if(d.isArray(b)&&b.length)d.each(b,function(b,f){c||bq.test(a)?e(a,f):bO(a+"["+(typeof f==="object"||d.isArray(f)?b:"")+"]",f,c,e)});else if(c||b==null||typeof b!=="object")e(a,b);else if(d.isArray(b)||d.isEmptyObject(b))e(a,"");else for(var f in b)bO(a+"["+f+"]",b[f],c,e)}function bN(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bH,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l==="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bN(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bN(a,c,d,e,"*",g));return l}function bM(a){return function(b,c){typeof b!=="string"&&(c=b,b="*");if(d.isFunction(c)){var e=b.toLowerCase().split(bB),f=0,g=e.length,h,i,j;for(;f<g;f++)h=e[f],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bo(a,b,c){var e=b==="width"?bi:bj,f=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return f;d.each(e,function(){c||(f-=parseFloat(d.css(a,"padding"+this))||0),c==="margin"?f+=parseFloat(d.css(a,"margin"+this))||0:f-=parseFloat(d.css(a,"border"+this+"Width"))||0});return f}function ba(a,b){b.src?d.ajax({url:b.src,async:!1,dataType:"script"}):d.globalEval(b.text||b.textContent||b.innerHTML||""),b.parentNode&&b.parentNode.removeChild(b)}function _(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function $(a,b){if(b.nodeType===1){var c=b.nodeName.toLowerCase();b.clearAttributes(),b.mergeAttributes(a);if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(d.expando)}}function Z(a,b){if(b.nodeType===1&&d.hasData(a)){var c=d.expando,e=d.data(a),f=d.data(b,e);if(e=e[c]){var g=e.events;f=f[c]=d.extend({},e);if(g){delete f.handle,f.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)d.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function Y(a,b){return d.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function O(a,b,c){if(d.isFunction(b))return d.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return d.grep(a,function(a,d){return a===b===c});if(typeof b==="string"){var e=d.grep(a,function(a){return a.nodeType===1});if(J.test(b))return d.filter(b,e,!c);b=d.filter(b,e)}return d.grep(a,function(a,e){return d.inArray(a,b)>=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(r,"`").replace(s,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,q=[],r=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;i<t.length;i++)g=t[i],g.origType.replace(p,"")===a.type?r.push(g.selector):t.splice(i--,1);f=d(a.target).closest(r,a.currentTarget);for(j=0,k=f.length;j<k;j++){m=f[j];for(i=0;i<t.length;i++){g=t[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,e=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,e=d(a.relatedTarget).closest(g.selector)[0];(!e||e!==h)&&q.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=q.length;j<k;j++){f=q[j];if(c&&f.level>c)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function w(){return!0}function v(){return!1}function g(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.1",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){e=i[c],f=a[c];if(i===f)continue;l&&f&&(d.isPlainObject(f)||(g=d.isArray(f)))?(g?(g=!1,h=e&&d.isArray(e)?e:[]):h=e&&d.isPlainObject(e)?e:{},i[c]=d.extend(l,h,f)):f!==b&&(i[c]=f)}return i},d.extend({noConflict:function(b){a.$=f,b&&(a.jQuery=e);return d},isReady:!1,readyWait:1,ready:function(a){a===!0&&d.readyWait--;if(!d.readyWait||a!==!0&&!d.isReady){if(!c.body)return setTimeout(d.ready,1);d.isReady=!0;if(a!==!0&&--d.readyWait>0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g<h;)if(c.apply(a[g++],e)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(var j=a[0];g<h&&c.call(j,g,j)!==!1;j=a[++g]){}return a},trim:F?function(a){return a==null?"":F.call(a)}:function(a){return a==null?"":(a+"").replace(j,"").replace(k,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var e=d.type(a);a.length==null||e==="string"||e==="function"||e==="regexp"||d.isWindow(a)?D.call(c,a):d.merge(c,a)}return c},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,b,c){var d=[],e;for(var f=0,g=a.length;f<g;f++)e=b(a[f],f,c),e!=null&&(d[d.length]=e);return d.concat.apply([],d)},guid:1,proxy:function(a,c,e){arguments.length===2&&(typeof c==="string"?(e=a,a=e[c],c=b):c&&!d.isFunction(c)&&(e=c,c=b)),!c&&a&&(c=function(){return a.apply(e||this,arguments)}),a&&(c.guid=a.guid=a.guid||c.guid||d.guid++);return c},access:function(a,c,e,f,g,h){var i=a.length;if(typeof c==="object"){for(var j in c)d.access(a,j,c[j],f,g,e);return a}if(e!==b){f=!h&&f&&d.isFunction(e);for(var k=0;k<i;k++)g(a[k],c,f?e.call(a[k],k,g(a[k],c)):e,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},_Deferred:function(){var a=[],b,c,e,f={done:function(){if(!e){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);k&&f.resolveWith(k[0],k[1])}return this},resolveWith:function(d,f){if(!e&&!b&&!c){c=1;try{while(a[0])a.shift().apply(d,f)}catch(g){throw g}finally{b=[d,f],c=0}}return this},resolve:function(){f.resolveWith(d.isFunction(this.promise)?this.promise():this,arguments);return this},isResolved:function(){return c||b},cancel:function(){e=1,a=[];return this}};return f},Deferred:function(a){var b=d._Deferred(),c=d._Deferred(),e;d.extend(b,{then:function(a,c){b.done(a).fail(c);return this},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,promise:function(a){if(a==null){if(e)return e;e=a={}}var c=z.length;while(c--)a[z[c]]=b[z[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){var b=arguments.length,c=b<=1&&a&&d.isFunction(a.promise)?a:d.Deferred(),e=c.promise();if(b>1){var f=E.call(arguments,0),g=b,h=function(a){return function(b){f[a]=arguments.length>1?E.call(arguments,0):b,--g||c.resolveWith(e,f)}};while(b--)a=f[b],a&&d.isFunction(a.promise)?a.promise().then(h(b),c.reject):--g;g||c.resolveWith(e,f)}else c!==a&&c.resolve(a);return e},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e),b=e=f=null}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!g(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,h=b.nodeType,i=h?d.cache:b,j=h?b[d.expando]:d.expando;if(!i[j])return;if(c){var k=e?i[j][f]:i[j];if(k){delete k[c];if(!g(k))return}}if(e){delete i[j][f];if(!g(i[j]))return}var l=i[j][f];d.support.deleteExpando||i!=a?delete i[j]:i[j]=null,l?(i[j]={},h||(i[j].toJSON=d.noop),i[j][f]=l):h&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i<j;i++)h=g[i].name,h.indexOf("data-")===0&&(h=h.substr(5),f(this[0],h,e[h]))}}return e}if(typeof a==="object")return this.each(function(){d.data(this,a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(c===b){e=this.triggerHandler("getData"+k[1]+"!",[k[0]]),e===b&&this.length&&(e=d.data(this[0],a),e=f(this[0],a,e));return e===b&&k[1]?this.data(k[0]):e}return this.each(function(){var b=d(this),e=[k[0],c];b.triggerHandler("setData"+k[1]+"!",e),d.data(this,a,c),b.triggerHandler("changeData"+k[1]+"!",e)})},removeData:function(a){return this.each(function(){d.removeData(this,a)})}}),d.extend({queue:function(a,b,c){if(a){b=(b||"fx")+"queue";var e=d._data(a,b);if(!c)return e||[];!e||d.isArray(c)?e=d._data(a,b,d.makeArray(c)):e.push(c);return e}},dequeue:function(a,b){b=b||"fx";var c=d.queue(a,b),e=c.shift();e==="inprogress"&&(e=c.shift()),e&&(b==="fx"&&c.unshift("inprogress"),e.call(a,function(){d.dequeue(a,b)})),c.length||d.removeData(a,b+"queue",!0)}}),d.fn.extend({queue:function(a,c){typeof a!=="string"&&(c=a,a="fx");if(c===b)return d.queue(this[0],a);return this.each(function(b){var e=d.queue(this,a,c);a==="fx"&&e[0]!=="inprogress"&&d.dequeue(this,a)})},dequeue:function(a){return this.each(function(){d.dequeue(this,a)})},delay:function(a,b){a=d.fx?d.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){d.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var h=/[\n\t\r]/g,i=/\s+/,j=/\r/g,k=/^(?:href|src|style)$/,l=/^(?:button|input)$/i,m=/^(?:button|input|object|select|textarea)$/i,n=/^a(?:rea)?$/i,o=/^(?:radio|checkbox)$/i;d.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"},d.fn.extend({attr:function(a,b){return d.access(this,a,b,!0,d.attr)},removeAttr:function(a,b){return this.each(function(){d.attr(this,a,""),this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.addClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"){var b=(a||"").split(i);for(var c=0,e=this.length;c<e;c++){var f=this[c];if(f.nodeType===1)if(f.className){var g=" "+f.className+" ",h=f.className;for(var j=0,k=b.length;j<k;j++)g.indexOf(" "+b[j]+" ")<0&&(h+=" "+b[j]);f.className=d.trim(h)}else f.className=a}}return this},removeClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"||a===b){var c=(a||"").split(i);for(var e=0,f=this.length;e<f;e++){var g=this[e];if(g.nodeType===1&&g.className)if(a){var j=(" "+g.className+" ").replace(h," ");for(var k=0,l=c.length;k<l;k++)j=j.replace(" "+c[k]+" "," ");g.className=d.trim(j)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,e=typeof b==="boolean";if(d.isFunction(a))return this.each(function(c){var e=d(this);e.toggleClass(a.call(this,c,e.attr("class"),b),b)});return this.each(function(){if(c==="string"){var f,g=0,h=d(this),j=b,k=a.split(i);while(f=k[g++])j=e?j:!h.hasClass(f),h[j?"addClass":"removeClass"](f)}else if(c==="undefined"||c==="boolean")this.className&&d._data(this,"__className__",this.className),this.className=this.className||a===!1?"":d._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(h," ").indexOf(b)>-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var k=i?f:0,l=i?f+1:h.length;k<l;k++){var m=h[k];if(m.selected&&(d.support.optDisabled?!m.disabled:m.getAttribute("disabled")===null)&&(!m.parentNode.disabled||!d.nodeName(m.parentNode,"optgroup"))){a=d(m).val();if(i)return a;g.push(a)}}if(i&&!g.length&&h.length)return d(h[f]).val();return g}if(o.test(c.type)&&!d.support.checkOn)return c.getAttribute("value")===null?"on":c.value;return(c.value||"").replace(j,"")}return b}var n=d.isFunction(a);return this.each(function(b){var c=d(this),e=a;if(this.nodeType===1){n&&(e=a.call(this,b,c.val())),e==null?e="":typeof e==="number"?e+="":d.isArray(e)&&(e=d.map(e,function(a){return a==null?"":a+""}));if(d.isArray(e)&&o.test(this.type))this.checked=d.inArray(c.val(),e)>=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=k.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&l.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:m.test(a.nodeName)||n.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var p=/\.(.*)$/,q=/^(?:textarea|input|select)$/i,r=/\./g,s=/ /g,t=/[^\w\s.|`]/g,u=function(a){return a.replace(t,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=v;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),u).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))d.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=d.event.special[h]||{};for(j=f||0;j<p.length;j++){q=p[j];if(e.guid===q.guid){if(l||n.test(q.namespace))f==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(f!=null)break}}if(p.length===0||f!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&d.removeEvent(a,h,s.handle),g=null,delete t[h]}if(d.isEmptyObject(t)){var w=s.handle;w&&(w.elem=null),delete s.events,delete s.handle,d.isEmptyObject(s)&&d.removeData(a,b,!0)}}},trigger:function(a,c,e){var f=a.type||a,g=arguments[3];if(!g){a=typeof a==="object"?a[d.expando]?a:d.extend(d.Event(f),a):d.Event(f),f.indexOf("!")>=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(p,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l<m;l++){var n=f[l];if(e||h.test(n.namespace)){c.handler=n.handler,c.data=n.data,c.handleObj=n;var o=n.handler.apply(this,k);o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[d.expando])return a;var e=a;a=d.Event(e);for(var f=this.props.length,g;f;)g=this.props[--f],a[g]=e[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=c.documentElement,i=c.body;a.pageX=a.clientX+(h&&h.scrollLeft||i&&i.scrollLeft||0)-(h&&h.clientLeft||i&&i.clientLeft||0),a.pageY=a.clientY+(h&&h.scrollTop||i&&i.scrollTop||0)-(h&&h.clientTop||i&&i.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:d.proxy,special:{ready:{setup:d.bindReady,teardown:d.noop},live:{add:function(a){d.event.add(this,F(a.origType,a.selector),d.extend({},a,{handler:E,guid:a.handler.guid}))},remove:function(a){d.event.remove(this,F(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){d.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},d.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},d.Event=function(a){if(!this.preventDefault)return new d.Event(a);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?w:v):this.type=a,this.timeStamp=d.now(),this[d.expando]=!0},d.Event.prototype={preventDefault:function(){this.isDefaultPrevented=w;var a=this.originalEvent;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=w;var a=this.originalEvent;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=w,this.stopPropagation()},isDefaultPrevented:v,isPropagationStopped:v,isImmediatePropagationStopped:v};var x=function(a){var b=a.relatedTarget;try{if(b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&(a.type=a.data,d.event.handle.apply(this,arguments))}catch(e){}},y=function(a){a.type=a.data,d.event.handle.apply(this,arguments)};d.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){d.event.special[a]={setup:function(c){d.event.add(this,b,c&&c.selector?y:x,a)},teardown:function(a){d.event.remove(this,b,a&&a.selector?y:x)}}}),d.support.submitBubbles||(d.event.special.submit={setup:function(a,b){if(this.nodeName&&this.nodeName.toLowerCase()!=="form")d.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&d(b).closest("form").length&&C("submit",this,arguments)}),d.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&d(b).closest("form").length&&a.keyCode===13&&C("submit",this,arguments)});else return!1},teardown:function(a){d.event.remove(this,".specialSubmit")}});if(!d.support.changeBubbles){var z,A=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(q.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return q.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return q.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i<j;i++)d.event.add(this[i],a,h,e);return this}}),d.fn.extend({unbind:function(a,b){if(typeof a!=="object"||a.preventDefault)for(var e=0,f=this.length;e<f;e++)d.event.remove(this[e],a,b);else for(var c in a)this.unbind(c,a[c]);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var c=d.Event(a);c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);return c.result}},toggle:function(a){var b=arguments,c=1;while(c<b.length)d.proxy(a,b[c++]);return this.click(d.proxy(a,function(e){var f=(d._data(this,"lastToggle"+a.guid)||0)%c;d._data(this,"lastToggle"+a.guid,f+1),e.preventDefault();return b[f].apply(this,arguments)||!1}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var D={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};d.each(["live","die"],function(a,c){d.fn[c]=function(a,e,f,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:d(this.context);if(typeof a==="object"&&!a.preventDefault){for(var o in a)n[c](o,e,a[o],m);return this}d.isFunction(e)&&(f=e,e=b),a=(a||"").split(" ");while((h=a[i++])!=null){j=p.exec(h),k="",j&&(k=j[0],h=h.replace(p,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,h==="focus"||h==="blur"?(a.push(D[h]+k),h=h+k):h=(D[h]||h)+k;if(c==="live")for(var q=0,r=n.length;q<r;q++)d.event.add(n[q],"live."+F(h,m),{data:e,selector:m,handler:f,origType:h,origHandler:f,preType:l});else n.unbind("live."+F(h,m),f)}return this}}),d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){d.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!=="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(f){if(f===!0)continue}else g=o=!0}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b==="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1){}a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.getAttribute("type")},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(a===b){g=!0;return 0}if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(d||!l.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return k(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};d.find=k,d.expr=k.selectors,d.expr[":"]=d.expr.filters,d.unique=k.uniqueSort,d.text=k.getText,d.isXMLDoc=k.isXML,d.contains=k.contains}();var G=/Until$/,H=/^(?:parents|prevUntil|prevAll)/,I=/,/,J=/^.[^:#\[\.,]*$/,K=Array.prototype.slice,L=d.expr.match.POS,M={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({find:function(a){var b=this.pushStack("","find",a),c=0;for(var e=0,f=this.length;e<f;e++){c=b.length,d.find(a,this[e],b);if(e>0)for(var g=c;g<b.length;g++)for(var h=0;h<c;h++)if(b[h]===b[g]){b.splice(g--,1);break}}return b},has:function(a){var b=d(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(d.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(O(this,a,!1),"not",a)},filter:function(a){return this.pushStack(O(this,a,!0),"filter",a)},is:function(a){return!!a&&d.filter(a,this).length>0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e<f;e++)i=a[e],j[i]||(j[i]=d.expr.match.POS.test(i)?d(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e<f;e++){g=this[e];while(g){if(l?l.index(g)>-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/<tbody/i,U=/<|&#?\w+;/,V=/<(?:script|object|embed|option|style)/i,W=/checked\s*(?:[^=]|=\s*.checked.)/i,X={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div<div>","</div>"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1></$2>");try{for(var c=0,e=this.length;c<e;c++)this[c].nodeType===1&&(d.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(f){this.empty().append(a)}}return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(d.isFunction(a))return this.each(function(b){var c=d(this),e=c.html();c.replaceWith(a.call(this,b,e))});typeof a!=="string"&&(a=d(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;d(this).remove(),b?d(b).before(a):d(c).append(a)})}return this.pushStack(d(d.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,e){var f,g,h,i,j=a[0],k=[];if(!d.support.checkClone&&arguments.length===3&&typeof j==="string"&&W.test(j))return this.each(function(){d(this).domManip(a,c,e,!0)});if(d.isFunction(j))return this.each(function(f){var g=d(this);a[0]=j.call(this,f,c?g.html():b),g.domManip(a,c,e)});if(this[0]){i=j&&j.parentNode,d.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?f={fragment:i}:f=d.buildFragment(a,this,k),h=f.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&d.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)e.call(c?Y(this[l],g):this[l],f.cacheable||m>1&&l<n?d.clone(h,!0,!0):h)}k.length&&d.each(k,ba)}return this}}),d.buildFragment=function(a,b,e){var f,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]==="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!V.test(a[0])&&(d.support.checkClone||!W.test(a[0]))&&(g=!0,h=d.fragments[a[0]],h&&(h!==1&&(f=h))),f||(f=i.createDocumentFragment(),d.clean(a,i,f,e)),g&&(d.fragments[a[0]]=h?f:1);return{fragment:f,cacheable:g}},d.fragments={},d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(c){var e=[],f=d(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&f.length===1){f[b](this[0]);return this}for(var h=0,i=f.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){$(a,e),f=_(a),g=_(e);for(h=0;f[h];++h)$(f[h],g[h])}if(b){Z(a,e);if(c){f=_(a),g=_(e);for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1></$2>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]==="<table>"&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bb=/alpha\([^)]*\)/i,bc=/opacity=([^)]*)/,bd=/-([a-z])/ig,be=/([A-Z])/g,bf=/^-?\d+(?:px)?$/i,bg=/^-?\d/,bh={position:"absolute",visibility:"hidden",display:"block"},bi=["Left","Right"],bj=["Top","Bottom"],bk,bl,bm,bn=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bk(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bk)return bk(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bd,bn)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bo(a,b,e):d.swap(a,bh,function(){f=bo(a,b,e)});if(f<=0){f=bk(a,b,b),f==="0px"&&bm&&(f=bm(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bf.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bb.test(f)?f.replace(bb,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bl=function(a,c,e){var f,g,h;e=e.replace(be,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bm=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bf.test(d)&&bg.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bk=bl||bm,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bp=/%20/g,bq=/\[\]$/,br=/\r?\n/g,bs=/#.*$/,bt=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bu=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bv=/(?:^file|^widget|\-extension):$/,bw=/^(?:GET|HEAD)$/,bx=/^\/\//,by=/\?/,bz=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bA=/^(?:select|textarea)/i,bB=/\s+/,bC=/([?&])_=[^&]*/,bD=/(^|\-)([a-z])/g,bE=function(a,b,c){return b+c.toUpperCase()},bF=/^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,bG=d.fn.load,bH={},bI={},bJ,bK;try{bJ=c.location.href}catch(bL){bJ=c.createElement("a"),bJ.href="",bJ=bJ.href}bK=bF.exec(bJ.toLowerCase()),d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bG)return bG.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("<div>").append(c.replace(bz,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bA.test(this.nodeName)||bu.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(br,"\r\n")}}):{name:b.name,value:c.replace(br,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bJ,isLocal:bv.test(bK[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bM(bH),ajaxTransport:bM(bI),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bP(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bQ(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bD,bE)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bt.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bs,"").replace(bx,bK[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bB),e.crossDomain||(q=bF.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bK[1]||q[2]!=bK[2]||(q[3]||(q[1]==="http:"?80:443))!=(bK[3]||(bK[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bN(bH,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!bw.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(by.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bC,"$1_="+w);e.url=x+(x===e.url?(by.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bN(bI,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bO(g,a[g],c,f);return e.join("&").replace(bp,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bR=d.now(),bS=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bR++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bS.test(b.url)||f&&bS.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bS,l),b.url===j&&(f&&(k=k.replace(bS,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bT=d.now(),bU,bV;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bX()||bY()}:bX,bV=d.ajaxSettings.xhr(),d.support.ajax=!!bV,d.support.cors=bV&&"withCredentials"in bV,bV=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),(!a.crossDomain||a.hasContent)&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bU[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bU||(bU={},bW()),h=bT++,g.onreadystatechange=bU[h]=c):c()},abort:function(){c&&c(0,1)}}}});var bZ={},b$=/^(?:toggle|show|hide)$/,b_=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,ca,cb=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(cc("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)e=this[g],f=e.style.display,!d._data(e,"olddisplay")&&f==="none"&&(f=e.style.display=""),f===""&&d.css(e,"display")==="none"&&d._data(e,"olddisplay",cd(e.nodeName));for(g=0;g<h;g++){e=this[g],f=e.style.display;if(f===""||f==="none")e.style.display=d._data(e,"olddisplay")||""}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cc("hide",3),a,b,c);for(var e=0,f=this.length;e<f;e++){var g=d.css(this[e],"display");g!=="none"&&!d._data(this[e],"olddisplay")&&d._data(this[e],"olddisplay",g)}for(e=0;e<f;e++)this[e].style.display="none";return this},_toggle:d.fn.toggle,toggle:function(a,b,c){var e=typeof a==="boolean";d.isFunction(a)&&d.isFunction(b)?this._toggle.apply(this,arguments):a==null||e?this.each(function(){var b=e?a:d(this).is(":hidden");d(this)[b?"show":"hide"]()}):this.animate(cc("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,e){var f=d.speed(b,c,e);if(d.isEmptyObject(a))return this.each(f.complete);return this[f.queue===!1?"each":"queue"](function(){var b=d.extend({},f),c,e=this.nodeType===1,g=e&&d(this).is(":hidden"),h=this;for(c in a){var i=d.camelCase(c);c!==i&&(a[i]=a[c],delete a[c],c=i);if(a[c]==="hide"&&g||a[c]==="show"&&!g)return b.complete.call(this);if(e&&(c==="height"||c==="width")){b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(d.css(this,"display")==="inline"&&d.css(this,"float")==="none")if(d.support.inlineBlockNeedsLayout){var j=cd(this.nodeName);j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)}else this.style.display="inline-block"}d.isArray(a[c])&&((b.specialEasing=b.specialEasing||{})[c]=a[c][1],a[c]=a[c][0])}b.overflow!=null&&(this.style.overflow="hidden"),b.curAnim=d.extend({},a),d.each(a,function(c,e){var f=new d.fx(h,b,c);if(b$.test(e))f[e==="toggle"?g?"show":"hide":e](a);else{var i=b_.exec(e),j=f.cur();if(i){var k=parseFloat(i[2]),l=i[3]||(d.cssNumber[c]?"":"px");l!=="px"&&(d.style(h,c,(k||1)+l),j=(k||1)/f.cur()*j,d.style(h,c,j+l)),i[1]&&(k=(i[1]==="-="?-1:1)*k+j),f.custom(j,k,l)}else f.custom(j,e,"")}});return!0})},stop:function(a,b){var c=d.timers;a&&this.queue([]),this.each(function(){for(var a=c.length-1;a>=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:cc("show",1),slideUp:cc("hide",1),slideToggle:cc("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!ca&&(ca=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||d.fx.stop()},interval:13,stop:function(){clearInterval(ca),ca=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){d.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),d.expr&&d.expr.filters&&(d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length});var ce=/^t(?:able|d|h)$/i,cf=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?d.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,g=f.documentElement;if(!c||!d.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=f.body,i=cg(f),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||d.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||d.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:d.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);d.offset.initialize();var c,e=b.offsetParent,f=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(d.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===e&&(l+=b.offsetTop,m+=b.offsetLeft,d.offset.doesNotAddBorder&&(!d.offset.doesAddBorderForTableAndCells||!ce.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),f=e,e=b.offsetParent),d.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;d.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},d.offset={initialize:function(){var a=c.body,b=c.createElement("div"),e,f,g,h,i=parseFloat(d.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=cf.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!cf.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=cg(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=cg(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window);
|
js/qaz/qbanner/jquery.slides.min.js
ADDED
@@ -0,0 +1,545 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*
|
2 |
+
* Slides, A Slideshow Plugin for jQuery
|
3 |
+
* Intructions: http://slidesjs.com
|
4 |
+
* By: Nathan Searles, http://nathansearles.com
|
5 |
+
* Version: 1.1.7
|
6 |
+
* Updated: May 2nd, 2011
|
7 |
+
*
|
8 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
9 |
+
* you may not use this file except in compliance with the License.
|
10 |
+
* You may obtain a copy of the License at
|
11 |
+
*
|
12 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
13 |
+
*
|
14 |
+
* Unless required by applicable law or agreed to in writing, software
|
15 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
16 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17 |
+
* See the License for the specific language governing permissions and
|
18 |
+
* limitations under the License.
|
19 |
+
*/
|
20 |
+
(function($){
|
21 |
+
$.fn.slides = function( option ) {
|
22 |
+
// override defaults with specified option
|
23 |
+
option = $.extend( {}, $.fn.slides.option, option );
|
24 |
+
|
25 |
+
return this.each(function(){
|
26 |
+
// wrap slides in control container, make sure slides are block level
|
27 |
+
$('.' + option.container, $(this)).children().wrapAll('<div class="slides_control"/>');
|
28 |
+
|
29 |
+
var elem = $(this),
|
30 |
+
control = $('.slides_control',elem),
|
31 |
+
total = control.children().size(),
|
32 |
+
width = control.children().outerWidth(),
|
33 |
+
height = control.children().outerHeight(),
|
34 |
+
start = option.start - 1,
|
35 |
+
effect = option.effect.indexOf(',') < 0 ? option.effect : option.effect.replace(' ', '').split(',')[0],
|
36 |
+
paginationEffect = option.effect.indexOf(',') < 0 ? effect : option.effect.replace(' ', '').split(',')[1],
|
37 |
+
next = 0, prev = 0, number = 0, current = 0, loaded, active, clicked, position, direction, imageParent, pauseTimeout, playInterval;
|
38 |
+
|
39 |
+
// animate slides
|
40 |
+
function animate(direction, effect, clicked) {
|
41 |
+
if (!active && loaded) {
|
42 |
+
active = true;
|
43 |
+
// start of animation
|
44 |
+
option.animationStart(current + 1);
|
45 |
+
switch(direction) {
|
46 |
+
case 'next':
|
47 |
+
// change current slide to previous
|
48 |
+
prev = current;
|
49 |
+
// get next from current + 1
|
50 |
+
next = current + 1;
|
51 |
+
// if last slide, set next to first slide
|
52 |
+
next = total === next ? 0 : next;
|
53 |
+
// set position of next slide to right of previous
|
54 |
+
position = width*2;
|
55 |
+
// distance to slide based on width of slides
|
56 |
+
direction = -width*2;
|
57 |
+
// store new current slide
|
58 |
+
current = next;
|
59 |
+
break;
|
60 |
+
case 'prev':
|
61 |
+
// change current slide to previous
|
62 |
+
prev = current;
|
63 |
+
// get next from current - 1
|
64 |
+
next = current - 1;
|
65 |
+
// if first slide, set next to last slide
|
66 |
+
next = next === -1 ? total-1 : next;
|
67 |
+
// set position of next slide to left of previous
|
68 |
+
position = 0;
|
69 |
+
// distance to slide based on width of slides
|
70 |
+
direction = 0;
|
71 |
+
// store new current slide
|
72 |
+
current = next;
|
73 |
+
break;
|
74 |
+
case 'pagination':
|
75 |
+
// get next from pagination item clicked, convert to number
|
76 |
+
next = parseInt(clicked,10);
|
77 |
+
// get previous from pagination item with class of current
|
78 |
+
prev = $('.' + option.paginationClass + ' li.'+ option.currentClass +' a', elem).attr('href').match('[^#/]+$');
|
79 |
+
// if next is greater then previous set position of next slide to right of previous
|
80 |
+
if (next > prev) {
|
81 |
+
position = width*2;
|
82 |
+
direction = -width*2;
|
83 |
+
} else {
|
84 |
+
// if next is less then previous set position of next slide to left of previous
|
85 |
+
position = 0;
|
86 |
+
direction = 0;
|
87 |
+
}
|
88 |
+
// store new current slide
|
89 |
+
current = next;
|
90 |
+
break;
|
91 |
+
}
|
92 |
+
|
93 |
+
// fade animation
|
94 |
+
if (effect === 'fade') {
|
95 |
+
// fade animation with crossfade
|
96 |
+
if (option.crossfade) {
|
97 |
+
// put hidden next above current
|
98 |
+
control.children(':eq('+ next +')', elem).css({
|
99 |
+
zIndex: 10
|
100 |
+
// fade in next
|
101 |
+
}).fadeIn(option.fadeSpeed, option.fadeEasing, function(){
|
102 |
+
if (option.autoHeight) {
|
103 |
+
// animate container to height of next
|
104 |
+
control.animate({
|
105 |
+
height: control.children(':eq('+ next +')', elem).outerHeight()
|
106 |
+
}, option.autoHeightSpeed, function(){
|
107 |
+
// hide previous
|
108 |
+
control.children(':eq('+ prev +')', elem).css({
|
109 |
+
display: 'none',
|
110 |
+
zIndex: 0
|
111 |
+
});
|
112 |
+
// reset z index
|
113 |
+
control.children(':eq('+ next +')', elem).css({
|
114 |
+
zIndex: 0
|
115 |
+
});
|
116 |
+
// end of animation
|
117 |
+
option.animationComplete(next + 1);
|
118 |
+
active = false;
|
119 |
+
});
|
120 |
+
} else {
|
121 |
+
// hide previous
|
122 |
+
control.children(':eq('+ prev +')', elem).css({
|
123 |
+
display: 'none',
|
124 |
+
zIndex: 0
|
125 |
+
});
|
126 |
+
// reset zindex
|
127 |
+
control.children(':eq('+ next +')', elem).css({
|
128 |
+
zIndex: 0
|
129 |
+
});
|
130 |
+
// end of animation
|
131 |
+
option.animationComplete(next + 1);
|
132 |
+
active = false;
|
133 |
+
}
|
134 |
+
});
|
135 |
+
} else {
|
136 |
+
// fade animation with no crossfade
|
137 |
+
control.children(':eq('+ prev +')', elem).fadeOut(option.fadeSpeed, option.fadeEasing, function(){
|
138 |
+
// animate to new height
|
139 |
+
if (option.autoHeight) {
|
140 |
+
control.animate({
|
141 |
+
// animate container to height of next
|
142 |
+
height: control.children(':eq('+ next +')', elem).outerHeight()
|
143 |
+
}, option.autoHeightSpeed,
|
144 |
+
// fade in next slide
|
145 |
+
function(){
|
146 |
+
control.children(':eq('+ next +')', elem).fadeIn(option.fadeSpeed, option.fadeEasing);
|
147 |
+
});
|
148 |
+
} else {
|
149 |
+
// if fixed height
|
150 |
+
control.children(':eq('+ next +')', elem).fadeIn(option.fadeSpeed, option.fadeEasing, function(){
|
151 |
+
// fix font rendering in ie, lame
|
152 |
+
if($.browser.msie) {
|
153 |
+
$(this).get(0).style.removeAttribute('filter');
|
154 |
+
}
|
155 |
+
});
|
156 |
+
}
|
157 |
+
// end of animation
|
158 |
+
option.animationComplete(next + 1);
|
159 |
+
active = false;
|
160 |
+
});
|
161 |
+
}
|
162 |
+
// slide animation
|
163 |
+
} else {
|
164 |
+
// move next slide to right of previous
|
165 |
+
control.children(':eq('+ next +')').css({
|
166 |
+
left: position,
|
167 |
+
display: 'block'
|
168 |
+
});
|
169 |
+
// animate to new height
|
170 |
+
if (option.autoHeight) {
|
171 |
+
control.animate({
|
172 |
+
left: direction,
|
173 |
+
height: control.children(':eq('+ next +')').outerHeight()
|
174 |
+
},option.slideSpeed, option.slideEasing, function(){
|
175 |
+
control.css({
|
176 |
+
left: -width
|
177 |
+
});
|
178 |
+
control.children(':eq('+ next +')').css({
|
179 |
+
left: width,
|
180 |
+
zIndex: 5
|
181 |
+
});
|
182 |
+
// reset previous slide
|
183 |
+
control.children(':eq('+ prev +')').css({
|
184 |
+
left: width,
|
185 |
+
display: 'none',
|
186 |
+
zIndex: 0
|
187 |
+
});
|
188 |
+
// end of animation
|
189 |
+
option.animationComplete(next + 1);
|
190 |
+
active = false;
|
191 |
+
});
|
192 |
+
// if fixed height
|
193 |
+
} else {
|
194 |
+
// animate control
|
195 |
+
control.animate({
|
196 |
+
left: direction
|
197 |
+
},option.slideSpeed, option.slideEasing, function(){
|
198 |
+
// after animation reset control position
|
199 |
+
control.css({
|
200 |
+
left: -width
|
201 |
+
});
|
202 |
+
// reset and show next
|
203 |
+
control.children(':eq('+ next +')').css({
|
204 |
+
left: width,
|
205 |
+
zIndex: 5
|
206 |
+
});
|
207 |
+
// reset previous slide
|
208 |
+
control.children(':eq('+ prev +')').css({
|
209 |
+
left: width,
|
210 |
+
display: 'none',
|
211 |
+
zIndex: 0
|
212 |
+
});
|
213 |
+
// end of animation
|
214 |
+
option.animationComplete(next + 1);
|
215 |
+
active = false;
|
216 |
+
});
|
217 |
+
}
|
218 |
+
}
|
219 |
+
// set current state for pagination
|
220 |
+
if (option.pagination) {
|
221 |
+
// remove current class from all
|
222 |
+
$('.'+ option.paginationClass +' li.' + option.currentClass, elem).removeClass(option.currentClass);
|
223 |
+
// add current class to next
|
224 |
+
$('.' + option.paginationClass + ' li:eq('+ next +')', elem).addClass(option.currentClass);
|
225 |
+
}
|
226 |
+
}
|
227 |
+
} // end animate function
|
228 |
+
|
229 |
+
function stop() {
|
230 |
+
// clear interval from stored id
|
231 |
+
clearInterval(elem.data('interval'));
|
232 |
+
}
|
233 |
+
|
234 |
+
function pause() {
|
235 |
+
if (option.pause) {
|
236 |
+
// clear timeout and interval
|
237 |
+
clearTimeout(elem.data('pause'));
|
238 |
+
clearInterval(elem.data('interval'));
|
239 |
+
// pause slide show for option.pause amount
|
240 |
+
pauseTimeout = setTimeout(function() {
|
241 |
+
// clear pause timeout
|
242 |
+
clearTimeout(elem.data('pause'));
|
243 |
+
// start play interval after pause
|
244 |
+
playInterval = setInterval( function(){
|
245 |
+
animate("next", effect);
|
246 |
+
},option.play);
|
247 |
+
// store play interval
|
248 |
+
elem.data('interval',playInterval);
|
249 |
+
},option.pause);
|
250 |
+
// store pause interval
|
251 |
+
elem.data('pause',pauseTimeout);
|
252 |
+
} else {
|
253 |
+
// if no pause, just stop
|
254 |
+
stop();
|
255 |
+
}
|
256 |
+
}
|
257 |
+
|
258 |
+
// 2 or more slides required
|
259 |
+
if (total < 2) {
|
260 |
+
return;
|
261 |
+
}
|
262 |
+
|
263 |
+
// error corection for start slide
|
264 |
+
if (start < 0) {
|
265 |
+
start = 0;
|
266 |
+
}
|
267 |
+
|
268 |
+
if (start > total) {
|
269 |
+
start = total - 1;
|
270 |
+
}
|
271 |
+
|
272 |
+
// change current based on start option number
|
273 |
+
if (option.start) {
|
274 |
+
current = start;
|
275 |
+
}
|
276 |
+
|
277 |
+
// randomizes slide order
|
278 |
+
if (option.randomize) {
|
279 |
+
control.randomize();
|
280 |
+
}
|
281 |
+
|
282 |
+
// make sure overflow is hidden, width is set
|
283 |
+
$('.' + option.container, elem).css({
|
284 |
+
overflow: 'hidden',
|
285 |
+
// fix for ie
|
286 |
+
position: 'relative'
|
287 |
+
});
|
288 |
+
|
289 |
+
// set css for slides
|
290 |
+
control.children().css({
|
291 |
+
position: 'absolute',
|
292 |
+
top: 0,
|
293 |
+
left: control.children().outerWidth(),
|
294 |
+
zIndex: 0,
|
295 |
+
display: 'none'
|
296 |
+
});
|
297 |
+
|
298 |
+
// set css for control div
|
299 |
+
control.css({
|
300 |
+
position: 'relative',
|
301 |
+
// size of control 3 x slide width
|
302 |
+
width: (width * 3),
|
303 |
+
// set height to slide height
|
304 |
+
height: height,
|
305 |
+
// center control to slide
|
306 |
+
left: -width
|
307 |
+
});
|
308 |
+
|
309 |
+
// show slides
|
310 |
+
$('.' + option.container, elem).css({
|
311 |
+
display: 'block'
|
312 |
+
});
|
313 |
+
|
314 |
+
// if autoHeight true, get and set height of first slide
|
315 |
+
if (option.autoHeight) {
|
316 |
+
control.children().css({
|
317 |
+
height: 'auto'
|
318 |
+
});
|
319 |
+
control.animate({
|
320 |
+
height: control.children(':eq('+ start +')').outerHeight()
|
321 |
+
},option.autoHeightSpeed);
|
322 |
+
}
|
323 |
+
|
324 |
+
// checks if image is loaded
|
325 |
+
if (option.preload && control.find('img').length) {
|
326 |
+
// adds preload image
|
327 |
+
$('.' + option.container, elem).css({
|
328 |
+
background: 'url(' + option.preloadImage + ') no-repeat 50% 50%'
|
329 |
+
});
|
330 |
+
|
331 |
+
// gets image src, with cache buster
|
332 |
+
var img = control.find('img:eq(' + start + ')').attr('src') + '?' + (new Date()).getTime();
|
333 |
+
|
334 |
+
// check if the image has a parent
|
335 |
+
if ($('img', elem).parent().attr('class') != 'slides_control') {
|
336 |
+
// If image has parent, get tag name
|
337 |
+
imageParent = control.children(':eq(0)')[0].tagName.toLowerCase();
|
338 |
+
} else {
|
339 |
+
// Image doesn't have parent, use image tag name
|
340 |
+
imageParent = control.find('img:eq(' + start + ')');
|
341 |
+
}
|
342 |
+
|
343 |
+
// checks if image is loaded
|
344 |
+
control.find('img:eq(' + start + ')').attr('src', img).load(function() {
|
345 |
+
// once image is fully loaded, fade in
|
346 |
+
control.find(imageParent + ':eq(' + start + ')').fadeIn(option.fadeSpeed, option.fadeEasing, function(){
|
347 |
+
$(this).css({
|
348 |
+
zIndex: 5
|
349 |
+
});
|
350 |
+
// removes preload image
|
351 |
+
$('.' + option.container, elem).css({
|
352 |
+
background: ''
|
353 |
+
});
|
354 |
+
// let the script know everything is loaded
|
355 |
+
loaded = true;
|
356 |
+
// call the loaded funciton
|
357 |
+
option.slidesLoaded();
|
358 |
+
});
|
359 |
+
});
|
360 |
+
} else {
|
361 |
+
// if no preloader fade in start slide
|
362 |
+
control.children(':eq(' + start + ')').fadeIn(option.fadeSpeed, option.fadeEasing, function(){
|
363 |
+
// let the script know everything is loaded
|
364 |
+
loaded = true;
|
365 |
+
// call the loaded funciton
|
366 |
+
option.slidesLoaded();
|
367 |
+
});
|
368 |
+
}
|
369 |
+
|
370 |
+
// click slide for next
|
371 |
+
if (option.bigTarget) {
|
372 |
+
// set cursor to pointer
|
373 |
+
control.children().css({
|
374 |
+
cursor: 'pointer'
|
375 |
+
});
|
376 |
+
// click handler
|
377 |
+
control.children().click(function(){
|
378 |
+
// animate to next on slide click
|
379 |
+
animate('next', effect);
|
380 |
+
return false;
|
381 |
+
});
|
382 |
+
}
|
383 |
+
|
384 |
+
// pause on mouseover
|
385 |
+
if (option.hoverPause && option.play) {
|
386 |
+
control.bind('mouseover',function(){
|
387 |
+
// on mouse over stop
|
388 |
+
stop();
|
389 |
+
});
|
390 |
+
control.bind('mouseleave',function(){
|
391 |
+
// on mouse leave start pause timeout
|
392 |
+
pause();
|
393 |
+
});
|
394 |
+
}
|
395 |
+
|
396 |
+
// generate next/prev buttons
|
397 |
+
if (option.generateNextPrev) {
|
398 |
+
$('.' + option.container, elem).after('<a href="#" class="'+ option.prev +'">Prev</a>');
|
399 |
+
$('.' + option.prev, elem).after('<a href="#" class="'+ option.next +'">Next</a>');
|
400 |
+
}
|
401 |
+
|
402 |
+
// next button
|
403 |
+
$('.' + option.next ,elem).click(function(e){
|
404 |
+
e.preventDefault();
|
405 |
+
if (option.play) {
|
406 |
+
pause();
|
407 |
+
}
|
408 |
+
animate('next', effect);
|
409 |
+
});
|
410 |
+
|
411 |
+
// previous button
|
412 |
+
$('.' + option.prev, elem).click(function(e){
|
413 |
+
e.preventDefault();
|
414 |
+
if (option.play) {
|
415 |
+
pause();
|
416 |
+
}
|
417 |
+
animate('prev', effect);
|
418 |
+
});
|
419 |
+
|
420 |
+
// generate pagination
|
421 |
+
if (option.generatePagination) {
|
422 |
+
// create unordered list
|
423 |
+
if (option.prependPagination) {
|
424 |
+
elem.prepend('<ul class='+ option.paginationClass +'></ul>');
|
425 |
+
} else {
|
426 |
+
elem.append('<ul class='+ option.paginationClass +'></ul>');
|
427 |
+
}
|
428 |
+
// for each slide create a list item and link
|
429 |
+
control.children().each(function(){
|
430 |
+
$('.' + option.paginationClass, elem).append('<li><a href="#'+ number +'">'+ (number+1) +'</a></li>');
|
431 |
+
number++;
|
432 |
+
});
|
433 |
+
} else {
|
434 |
+
// if pagination exists, add href w/ value of item number to links
|
435 |
+
$('.' + option.paginationClass + ' li a', elem).each(function(){
|
436 |
+
$(this).attr('href', '#' + number);
|
437 |
+
number++;
|
438 |
+
});
|
439 |
+
}
|
440 |
+
|
441 |
+
// add current class to start slide pagination
|
442 |
+
$('.' + option.paginationClass + ' li:eq('+ start +')', elem).addClass(option.currentClass);
|
443 |
+
|
444 |
+
// click handling
|
445 |
+
$('.' + option.paginationClass + ' li a', elem ).click(function(){
|
446 |
+
// pause slideshow
|
447 |
+
if (option.play) {
|
448 |
+
pause();
|
449 |
+
}
|
450 |
+
// get clicked, pass to animate function
|
451 |
+
clicked = $(this).attr('href').match('[^#/]+$');
|
452 |
+
// if current slide equals clicked, don't do anything
|
453 |
+
if (current != clicked) {
|
454 |
+
animate('pagination', paginationEffect, clicked);
|
455 |
+
}
|
456 |
+
return false;
|
457 |
+
});
|
458 |
+
|
459 |
+
// click handling
|
460 |
+
$('a.link', elem).click(function(){
|
461 |
+
// pause slideshow
|
462 |
+
if (option.play) {
|
463 |
+
pause();
|
464 |
+
}
|
465 |
+
// get clicked, pass to animate function
|
466 |
+
clicked = $(this).attr('href').match('[^#/]+$') - 1;
|
467 |
+
// if current slide equals clicked, don't do anything
|
468 |
+
if (current != clicked) {
|
469 |
+
animate('pagination', paginationEffect, clicked);
|
470 |
+
}
|
471 |
+
return false;
|
472 |
+
});
|
473 |
+
|
474 |
+
if (option.play) {
|
475 |
+
// set interval
|
476 |
+
playInterval = setInterval(function() {
|
477 |
+
animate('next', effect);
|
478 |
+
}, option.play);
|
479 |
+
// store interval id
|
480 |
+
elem.data('interval',playInterval);
|
481 |
+
}
|
482 |
+
});
|
483 |
+
};
|
484 |
+
|
485 |
+
// default options
|
486 |
+
$.fn.slides.option = {
|
487 |
+
preload: false, // boolean, Set true to preload images in an image based slideshow
|
488 |
+
preloadImage: '/images/loading.gif', // string, Name and location of loading image for preloader. Default is "/img/loading.gif"
|
489 |
+
container: 'slides_container', // string, Class name for slides container. Default is "slides_container"
|
490 |
+
generateNextPrev: false, // boolean, Auto generate next/prev buttons
|
491 |
+
next: 'next', // string, Class name for next button
|
492 |
+
prev: 'prev', // string, Class name for previous button
|
493 |
+
pagination: true, // boolean, If you're not using pagination you can set to false, but don't have to
|
494 |
+
generatePagination: true, // boolean, Auto generate pagination
|
495 |
+
prependPagination: false, // boolean, prepend pagination
|
496 |
+
paginationClass: 'pagination', // string, Class name for pagination
|
497 |
+
currentClass: 'current', // string, Class name for current class
|
498 |
+
fadeSpeed: 1000, // number, Set the speed of the fading animation in milliseconds
|
499 |
+
fadeEasing: '', // string, must load jQuery's easing plugin before http://gsgd.co.uk/sandbox/jquery/easing/
|
500 |
+
slideSpeed: 1000, // number, Set the speed of the sliding animation in milliseconds
|
501 |
+
slideEasing: '', // string, must load jQuery's easing plugin before http://gsgd.co.uk/sandbox/jquery/easing/
|
502 |
+
start: 1, // number, Set the speed of the sliding animation in milliseconds
|
503 |
+
effect: 'slide', // string, '[next/prev], [pagination]', e.g. 'slide, fade' or simply 'fade' for both
|
504 |
+
crossfade: false, // boolean, Crossfade images in a image based slideshow
|
505 |
+
randomize: false, // boolean, Set to true to randomize slides
|
506 |
+
play: 0, // number, Autoplay slideshow, a positive number will set to true and be the time between slide animation in milliseconds
|
507 |
+
pause: 0, // number, Pause slideshow on click of next/prev or pagination. A positive number will set to true and be the time of pause in milliseconds
|
508 |
+
hoverPause: false, // boolean, Set to true and hovering over slideshow will pause it
|
509 |
+
autoHeight: false, // boolean, Set to true to auto adjust height
|
510 |
+
autoHeightSpeed: 350, // number, Set auto height animation time in milliseconds
|
511 |
+
bigTarget: false, // boolean, Set to true and the whole slide will link to next slide on click
|
512 |
+
animationStart: function(){}, // Function called at the start of animation
|
513 |
+
animationComplete: function(){}, // Function called at the completion of animation
|
514 |
+
slidesLoaded: function() {} // Function is called when slides is fully loaded
|
515 |
+
};
|
516 |
+
|
517 |
+
// Randomize slide order on load
|
518 |
+
$.fn.randomize = function(callback) {
|
519 |
+
function randomizeOrder() {
|
520 |
+
return(Math.round(Math.random())-0.5);
|
521 |
+
}
|
522 |
+
return($(this).each(function() {
|
523 |
+
var $this = $(this);
|
524 |
+
var $children = $this.children();
|
525 |
+
var childCount = $children.length;
|
526 |
+
if (childCount > 1) {
|
527 |
+
$children.hide();
|
528 |
+
var indices = [];
|
529 |
+
for (i=0;i<childCount;i++) {
|
530 |
+
indices[indices.length] = i;
|
531 |
+
}
|
532 |
+
indices = indices.sort(randomizeOrder);
|
533 |
+
$.each(indices,function(j,k) {
|
534 |
+
var $child = $children.eq(k);
|
535 |
+
var $clone = $child.clone(true);
|
536 |
+
$clone.show().appendTo($this);
|
537 |
+
if (callback !== undefined) {
|
538 |
+
callback($child, $clone);
|
539 |
+
}
|
540 |
+
$child.remove();
|
541 |
+
});
|
542 |
+
}
|
543 |
+
}));
|
544 |
+
};
|
545 |
+
})(jQuery);
|
js/qaz/qbanner/jqueryNoconfig.js
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
$j = jQuery.noConflict();
|
media/qaz/qbanner/1/6/1694554_11311.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-2.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-21.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-21_1.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-21_2.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-2_1.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-2_2.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-2_3.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-3.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-31.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-31_1.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-3_1.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-3_2.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-3_3.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-3_4.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-3_5.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-3_6.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-4.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-4_1.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-4_2.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-4_3.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-4_4.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-4_5.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner-4_6.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/a/banner.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/o/bottom_banner.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/o/bottom_banner2.jpg
ADDED
Binary file
|
media/qaz/qbanner/b/o/bottom_banner2_1.jpg
ADDED
Binary file
|
media/qaz/qbanner/t/o/top_banner.jpg
ADDED
Binary file
|
media/qaz/qbanner/t/o/top_banner_1.jpg
ADDED
Binary file
|
package.xml
ADDED
@@ -0,0 +1,20 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>QAZ_Qbanner</name>
|
4 |
+
<version>1.9.1</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Introduction and Features - This extension adds ability for online shops to display banners as a slider of images . - Qbanner can be add more banner image. - Qbanner can be more config ex : time to change image , effect , show pagination , position , auto slide ,....and set width + height of banner (!) - Support in all browser. - For show banner in position (After Header) U must go to design/frontend/default/default/template/page/html/header.phtml and paste at the end of file :
|
10 |
+
(Or edit theme of you is not use default theme) More extensions FREE : http://extensions.qazware.com/</summary>
|
11 |
+
<description>Introduction and Features - This extension adds ability for online shops to display banners as a slider of images . - Qbanner can be add more banner image. - Qbanner can be more config ex : time to change image , effect , show pagination , position , auto slide ,....and set width + height of banner (!) - Support in all browser. - For show banner in position (After Header) U must go to design/frontend/default/default/template/page/html/header.phtml and paste at the end of file :
|
12 |
+
(Or edit theme of you is not use default theme) More extensions FREE : http://extensions.qazware.com/</description>
|
13 |
+
<notes>Check all cross-browser and config with another extension</notes>
|
14 |
+
<authors><author><name>Kevin Black</name><user>kevinblack</user><email>kevin.qazware@gmail.com</email></author></authors>
|
15 |
+
<date>2011-12-20</date>
|
16 |
+
<time>08:29:34</time>
|
17 |
+
<contents><target name="magecommunity"><dir name="Qaz"><dir name="Qbanner"><dir name="Block"><dir name="Adminhtml"><dir name="Qbanner"><dir name="Edit"><file name="Form.php" hash="aee2407e2a9f5940e9c08170b6a43abe"/><dir name="Tab"><file name="Category.php" hash="61abdaddee7d7f504332b89967d28437"/><file name="Form.php" hash="03482f82f257505cb684a239c32a3086"/><file name="Image.php" hash="c48ea83ae0ebce092d93a6b3dbbaf139"/><file name="Pages.php" hash="594a0ecffb7147893deb39d7f2f03493"/></dir><file name="Tabs.php" hash="769ebfc7c86192e02d189478f997eb40"/></dir><file name="Edit.php" hash="4970a7507a9b156eb5ad3549031ef791"/><file name="Grid.php" hash="4342ef02239e11f0e91c427169979d42"/></dir><file name="Qbanner.php" hash="cdc72f40377017f48bc7f83a4d879620"/></dir><file name="Qbanner.php" hash="5c6616111c1c04d821cf3f292c1987cf"/></dir><dir name="Helper"><file name="Data.php" hash="12358d50493059aa9171f2fe4fc340c0"/></dir><dir name="Model"><file name="Config.php" hash="77b86ba70a8709518a1833cce313f8ce"/><dir name="Mysql4"><dir name="Qbanner"><file name="Collection.php" hash="713a2a33f4f015b30cf6f013d5fc30ed"/></dir><file name="Qbanner.php" hash="05a976e268ba40e1c38662d6bb5f6458"/></dir><dir name="Option"><file name="Pages.php" hash="221f9a629ea486d52b219b47e9d51583"/><file name="Position.php" hash="449baccb2053509ba0726befe7a4a1cf"/><file name="Status.php" hash="12d8c41655369a00094b9276e211582c"/></dir><file name="Qbanner.php" hash="062251b29ee6e6b9eca5fbb5217574f5"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="QbannerController.php" hash="aed486cfedde5f7022e5ad85b178d337"/></dir><file name="IndexController.php" hash="d3c15879f3158b505d412ae90aeb5466"/></dir><dir name="etc"><file name="config.xml" hash="f6dba44b52968680c146359bf9a0bad6"/><file name="system.xml" hash="da732ecff7683edca974b996f74a5027"/></dir><dir name="sql"><dir name="qbanner_setup"><file name="mysql4-install-0.1.0.php" hash="6a7322f7c3b8978f4de877c7a3401480"/><file name="mysql4-upgrade-1.7.1-1.8.1.php" hash="85249553045169fee124e843298d62a6"/></dir></dir></dir><dir name="All"><dir name="Helper"><file name="Data.php" hash="a531698b0373f15ed017a921e0bfbe4b"/></dir><dir name="etc"><file name="config.xml" hash="6c6f6676c558ccb25c43a2c016f2d09d"/><file name="system.xml" hash="29a1180abd3b6a53b024f2bde75207bc"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Qaz_Qbanner.xml" hash="81840a50f8ba118b9f652a4c68e6608f"/><file name="Qaz_All.xml" hash="abff101149db6be3dd3340323e9fad85"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="qbanner.xml" hash="c1d49b73932f0b5a5cad7000f0940e55"/></dir><dir name="template"><dir name="qaz"><dir name="qbanner"><file name="qbanner.after.header.phtml" hash="29d8d87a6bd783bb8fefc2d66410fc77"/><file name="qbanner.content.top.phtml" hash="a75163bd5663cc3d8f97be9619e6bcff"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="qbanner.xml" hash="1cfd7b9362bf8e99dc47b450a920a25c"/></dir><dir name="template"><dir name="qaz"><dir name="qbanner"><dir name="edit"><dir name="tab"><file name="category.phtml" hash="46a89238104e417024606afb156c6af8"/><file name="image.phtml" hash="041ff63dcce58cd68e439b24b96062dc"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="qaz"><dir name="qbanner"><dir name="css"><file name="global.css" hash="8c6811cf4bca210b0a3ad3cd88344c01"/></dir><dir name="images"><file name="arrow-bg.png" hash="dd02d2e167a7ad76df8f10bf1147de70"/><file name="arrow-bg2.gif" hash="630ba4ce19ec51a1f984d3d8bd140479"/><file name="arrow-l.png" hash="9a4f1aadda0df80f8db6ebc7d0c938d7"/><file name="arrow-next.png" hash="15d6fe778c4df2494a7af4e098aad4ff"/><file name="arrow-prev.png" hash="bc273e26e577babc8044b0a8a86358d0"/><file name="arrow-r.png" hash="94af413ec776ca1b09b9fff4f81cc618"/><file name="b_next.png" hash="d72dde0609aded61a24fa18cdca4bf7f"/><file name="b_prev.png" hash="86e333b7023d493e8024ccc6b32cd690"/><file name="background.png" hash="96519dab3e5a2a09075632cca4a98141"/><file name="example-frame.png" hash="a6fe93af35f205873d1c68e257f0ffe1"/><file name="loading.gif" hash="58c35cf5e9fcbe3914c839c6665794bd"/><file name="new-ribbon.png" hash="ddf312ad3449c87f2c98f11a56a3fcc3"/><file name="pagination.png" hash="c1e5cc6dfe80b935b657576c8b93f5f5"/><file name="slide-1.jpg" hash="60f4feb9d141c63d4b120831b7deab11"/><file name="slide-2.jpg" hash="772208e05945f5e83275b4869875f9ae"/><file name="slide-3.jpg" hash="5aa6d109f0131737ca0e7c9fbf3b9bae"/><file name="slide-4.jpg" hash="3eb11a293897724ada695688486f38e9"/><file name="slide-5.jpg" hash="8692bb9ad56518c50625d53cb87f4795"/><file name="slide-6.jpg" hash="7eb3c3d3bd818ec1d6726cc33881d661"/><file name="slide-7.jpg" hash="fcf0c1c41e4880f58d735bde18c986b5"/><file name="slide.jpg" hash="0a421d74f61d7cb8e01d203b7b3825fb"/></dir></dir></dir></dir></dir></dir></target><target name="magemedia"><dir name="qaz"><dir name="qbanner"><dir name="1"><dir name="6"><file name="1694554_11311.jpg" hash="185393ad2608267414c07df2bf7773ab"/></dir></dir><dir name="b"><dir name="a"><file name="banner-2.jpg" hash="6febbe94012249dcc75365c1021092a3"/><file name="banner-21.jpg" hash="6febbe94012249dcc75365c1021092a3"/><file name="banner-21_1.jpg" hash="6febbe94012249dcc75365c1021092a3"/><file name="banner-21_2.jpg" hash="6febbe94012249dcc75365c1021092a3"/><file name="banner-2_1.jpg" hash="6febbe94012249dcc75365c1021092a3"/><file name="banner-2_2.jpg" hash="6febbe94012249dcc75365c1021092a3"/><file name="banner-2_3.jpg" hash="6febbe94012249dcc75365c1021092a3"/><file name="banner-3.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-31.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-31_1.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-3_1.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-3_2.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-3_3.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-3_4.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-3_5.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-3_6.jpg" hash="bfc028c43f28e9f5b4b7f31ab08cb2c8"/><file name="banner-4.jpg" hash="f5dfb9ddfbe2c50dea7e82ff27dbe038"/><file name="banner-4_1.jpg" hash="f5dfb9ddfbe2c50dea7e82ff27dbe038"/><file name="banner-4_2.jpg" hash="f5dfb9ddfbe2c50dea7e82ff27dbe038"/><file name="banner-4_3.jpg" hash="f5dfb9ddfbe2c50dea7e82ff27dbe038"/><file name="banner-4_4.jpg" hash="f5dfb9ddfbe2c50dea7e82ff27dbe038"/><file name="banner-4_5.jpg" hash="f5dfb9ddfbe2c50dea7e82ff27dbe038"/><file name="banner-4_6.jpg" hash="f5dfb9ddfbe2c50dea7e82ff27dbe038"/><file name="banner.jpg" hash="4a3fa9332b011c561ac6067fc9303a53"/></dir><dir name="o"><file name="bottom_banner.jpg" hash="b4f1c5ed987763bc87b9c1c68cc4c9c5"/><file name="bottom_banner2.jpg" hash="e40c9024be93cfc9ffee642c77cb7879"/><file name="bottom_banner2_1.jpg" hash="e40c9024be93cfc9ffee642c77cb7879"/></dir></dir><dir name="t"><dir name="o"><file name="top_banner.jpg" hash="037cd1d0514b2ffa0885c21750df10a4"/><file name="top_banner_1.jpg" hash="037cd1d0514b2ffa0885c21750df10a4"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="qaz"><dir name="qbanner"><file name="jquery.1.5.1.js" hash="38251a5074065e46fea974a460ea7a00"/><file name="jquery.slides.min.js" hash="a599effbf3331c3616e8b393ab7d10d6"/><file name="jqueryNoconfig.js" hash="8dd633a4b123d345a666b655d88d0b17"/></dir></dir></dir></target></contents>
|
18 |
+
<compatible/>
|
19 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
20 |
+
</package>
|
skin/frontend/default/default/qaz/qbanner/css/global.css
ADDED
@@ -0,0 +1,115 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
|
2 |
+
.qbanner {
|
3 |
+
margin:0 auto;
|
4 |
+
padding: 2px 0;
|
5 |
+
z-index:0;
|
6 |
+
}
|
7 |
+
.clear{clear: both;}
|
8 |
+
|
9 |
+
#ribbon {
|
10 |
+
position:absolute;
|
11 |
+
top:-3px;
|
12 |
+
left:-15px;
|
13 |
+
z-index:500;
|
14 |
+
}
|
15 |
+
/*
|
16 |
+
Slideshow
|
17 |
+
*/
|
18 |
+
.qbanner-slide{
|
19 |
+
position:relative;
|
20 |
+
z-index:100;
|
21 |
+
}
|
22 |
+
|
23 |
+
/*
|
24 |
+
Slides container
|
25 |
+
Important:
|
26 |
+
Set the width of your slides container
|
27 |
+
Set to display none, prevents content flash
|
28 |
+
*/
|
29 |
+
|
30 |
+
.slides_container {
|
31 |
+
overflow:hidden;
|
32 |
+
position:relative;
|
33 |
+
display:none;
|
34 |
+
}
|
35 |
+
|
36 |
+
/*
|
37 |
+
Each slide
|
38 |
+
Important:
|
39 |
+
Set the width of your slides
|
40 |
+
If height not specified height will be set by the slide content
|
41 |
+
Set to display block
|
42 |
+
*/
|
43 |
+
|
44 |
+
.slides_container div.slide {
|
45 |
+
display:block;
|
46 |
+
}
|
47 |
+
|
48 |
+
/*
|
49 |
+
Next/prev buttons
|
50 |
+
*/
|
51 |
+
.qbanner-slide .next,.qbanner-slide .prev {
|
52 |
+
position:absolute;
|
53 |
+
/* top:107px;*/
|
54 |
+
/* left:-39px;*/
|
55 |
+
/* width:24px;*/
|
56 |
+
/* height:42px;*/
|
57 |
+
/* display:none;*/
|
58 |
+
z-index:101;
|
59 |
+
/* display: none;*/
|
60 |
+
}
|
61 |
+
|
62 |
+
/*
|
63 |
+
Pagination
|
64 |
+
*/
|
65 |
+
|
66 |
+
.pagination {
|
67 |
+
margin:0 auto;
|
68 |
+
top:2px;
|
69 |
+
width:100px;
|
70 |
+
z-index: 999;
|
71 |
+
position: absolute;
|
72 |
+
}
|
73 |
+
|
74 |
+
.pagination li {
|
75 |
+
float:left;
|
76 |
+
margin:0 1px;
|
77 |
+
list-style:none;
|
78 |
+
}
|
79 |
+
|
80 |
+
.pagination li a {
|
81 |
+
display:block;
|
82 |
+
width:12px;
|
83 |
+
height:0;
|
84 |
+
padding-top:12px;
|
85 |
+
background-image:url(../images/pagination.png);
|
86 |
+
background-position:0 0;
|
87 |
+
float:left;
|
88 |
+
overflow:hidden;
|
89 |
+
}
|
90 |
+
|
91 |
+
.pagination li.current a {
|
92 |
+
background-position:0 -12px;
|
93 |
+
}
|
94 |
+
|
95 |
+
/*
|
96 |
+
Caption
|
97 |
+
*/
|
98 |
+
|
99 |
+
.caption {
|
100 |
+
z-index:500;
|
101 |
+
position:absolute;
|
102 |
+
bottom:-35px;
|
103 |
+
left:0;
|
104 |
+
height:35px;
|
105 |
+
padding:5px 20px 0 20px;
|
106 |
+
background:#000;
|
107 |
+
background:rgba(0,0,0,.5);
|
108 |
+
/* width:950px;*/
|
109 |
+
font-size:1.3em;
|
110 |
+
line-height:1.33;
|
111 |
+
color:#fff;
|
112 |
+
border-top:1px solid #000;
|
113 |
+
text-shadow:none;
|
114 |
+
text-align: left;
|
115 |
+
}
|
skin/frontend/default/default/qaz/qbanner/images/arrow-bg.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/arrow-bg2.gif
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/arrow-l.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/arrow-next.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/arrow-prev.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/arrow-r.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/b_next.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/b_prev.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/background.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/example-frame.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/loading.gif
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/new-ribbon.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/pagination.png
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide-1.jpg
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide-2.jpg
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide-3.jpg
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide-4.jpg
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide-5.jpg
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide-6.jpg
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide-7.jpg
ADDED
Binary file
|
skin/frontend/default/default/qaz/qbanner/images/slide.jpg
ADDED
Binary file
|