Version Notes
e-reactor Slider
Download this release
Release Info
Developer | Mihai Andrei Livadariu |
Extension | Ereactor_Slider |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Batch.php +10 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Batch/Images.php +48 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Grid.php +114 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Preview.php +27 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Quickadd.php +175 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow.php +14 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit.php +56 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Form.php +19 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Tab/General.php +247 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Tab/Slides.php +33 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Tabs.php +30 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Grid.php +83 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Preview.php +22 -0
- app/code/community/Ereactor/Slider/Block/Adminhtml/Widget/Grid/Column/Renderer/Slideaction.php +49 -0
- app/code/community/Ereactor/Slider/Block/Slide.php +48 -0
- app/code/community/Ereactor/Slider/Block/Slider.php +39 -0
- app/code/community/Ereactor/Slider/Helper/Admin.php +9 -0
- app/code/community/Ereactor/Slider/Helper/Data.php +59 -0
- app/code/community/Ereactor/Slider/Model/Resource/Slide.php +9 -0
- app/code/community/Ereactor/Slider/Model/Resource/Slide/Collection.php +18 -0
- app/code/community/Ereactor/Slider/Model/Resource/Slideshow.php +9 -0
- app/code/community/Ereactor/Slider/Model/Resource/Slideshow/Collection.php +9 -0
- app/code/community/Ereactor/Slider/Model/Slide.php +7 -0
- app/code/community/Ereactor/Slider/Model/Slide_src.php +139 -0
- app/code/community/Ereactor/Slider/Model/Slideshow.php +116 -0
- app/code/community/Ereactor/Slider/controllers/Adminhtml/Ereactor/Slider/ImagesController.php +32 -0
- app/code/community/Ereactor/Slider/controllers/Adminhtml/Ereactor/Slider/SlideController.php +230 -0
- app/code/community/Ereactor/Slider/controllers/Adminhtml/Ereactor/SliderController.php +188 -0
- app/code/community/Ereactor/Slider/etc/adminhtml.xml +54 -0
- app/code/community/Ereactor/Slider/etc/config.xml +68 -0
- app/code/community/Ereactor/Slider/etc/system.xml +41 -0
- app/code/community/Ereactor/Slider/etc/widget.xml +16 -0
- app/code/community/Ereactor/Slider/sql/ereactor_slider_setup/install-1.0.0.php +168 -0
- app/design/adminhtml/default/default/layout/ereactor_slider.xml +71 -0
- app/design/adminhtml/default/default/template/ereactor/slider/slide/batch.phtml +4 -0
- app/design/adminhtml/default/default/template/ereactor/slider/slide/preview.phtml +6 -0
- app/design/adminhtml/default/default/template/ereactor/slider/slideshow/preview.phtml +13 -0
- app/design/frontend/base/default/template/ereactor/slider/slide/html.phtml +1 -0
- app/design/frontend/base/default/template/ereactor/slider/slide/image.phtml +9 -0
- app/design/frontend/base/default/template/ereactor/slider/slideshow.phtml +19 -0
- app/etc/modules/Ereactor_Slider.xml +13 -0
- app/locale/en_US/Ereactor_Slider.csv +100 -0
- js/ereactor_slider/adminhtml/edit-slideshow.js +243 -0
- js/ereactor_slider/adminhtml/edit-slideshow.min.js +10 -0
- js/ereactor_slider/jquery-1.9.1.min.js +7 -0
- js/ereactor_slider/jquery.nivo-slider.js +707 -0
- media/ereactor_slider/.thumbs/ereactor_slider/batch/nemo.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/batch/up.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/black-small.gif +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/grey-small.gif +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/nemo.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/orange-small.gif +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/toystory-small.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/toystory.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/up.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/walle-small.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/walle.jpg +0 -0
- media/ereactor_slider/.thumbs/ereactor_slider/white-small.gif +0 -0
- media/ereactor_slider/black-small.gif +0 -0
- media/ereactor_slider/grey-small.gif +0 -0
- media/ereactor_slider/orange-small.gif +0 -0
- media/ereactor_slider/white-small.gif +0 -0
- media/wysiwyg/sample-slideshow/coffeecup.jpg +0 -0
- media/wysiwyg/sample-slideshow/lock.jpg +0 -0
- media/wysiwyg/sample-slideshow/womanonbeach.jpg +0 -0
- package.xml +41 -0
- skin/adminhtml/base/default/ereactor_slider/style.css +113 -0
- skin/adminhtml/base/default/ereactor_slider/style.min.css +1 -0
- skin/adminhtml/base/default/images/ereactor_slider/slide_html.png +0 -0
- skin/adminhtml/base/default/images/ereactor_slider/slide_image.png +0 -0
- skin/adminhtml/base/default/images/ereactor_slider/slide_imagetext.png +0 -0
- skin/adminhtml/base/default/images/ereactor_slider/slide_product.png +0 -0
- skin/frontend/base/default/css/ereactor_slider/default.css +95 -0
- skin/frontend/base/default/css/ereactor_slider/nivo-slider.css +135 -0
- skin/frontend/base/default/images/ereactor_slider/arrows.png +0 -0
- skin/frontend/base/default/images/ereactor_slider/bullets.png +0 -0
- skin/frontend/base/default/images/ereactor_slider/loading.gif +0 -0
app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Batch.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Slide_Batch
|
3 |
+
extends Mage_Adminhtml_Block_Template
|
4 |
+
{
|
5 |
+
protected function _prepareLayout()
|
6 |
+
{
|
7 |
+
$slideshow = Mage::helper('slider')->getSlideshowInstance();
|
8 |
+
$this->setImagesUrl($this->getUrl('*/ereactor_slider_slide/batchAddImagesForm', array('slideshow_id' => $slideshow->getId())));
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Batch/Images.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Slide_Batch_Images
|
3 |
+
extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
protected function _prepareForm() {
|
6 |
+
$slideshow = Mage::helper('slider')->getSlideshowInstance();
|
7 |
+
$isElementDisabled = ! Mage::helper('slider/Admin')->isActionAllowed('save');
|
8 |
+
|
9 |
+
$form = new Varien_Data_Form();
|
10 |
+
$form->setHtmlIdPrefix('slideshow_batch_add_images');
|
11 |
+
|
12 |
+
$fieldset = $form->addFieldset('base_fieldset', array(
|
13 |
+
'legend' => $this->__('Generate slides from images')
|
14 |
+
));
|
15 |
+
|
16 |
+
if ($slideshow->getId()) {
|
17 |
+
$fieldset->addField('slideshow_id', 'hidden', array(
|
18 |
+
'name' => 'slideshow_id',
|
19 |
+
'value' => $slideshow->getId(),
|
20 |
+
));
|
21 |
+
}
|
22 |
+
|
23 |
+
$fieldset->addField('source', 'hidden', array(
|
24 |
+
'name' => 'source',
|
25 |
+
'value' => 'images',
|
26 |
+
));
|
27 |
+
|
28 |
+
$fieldset->addField('path', 'text', array(
|
29 |
+
'name' => 'path',
|
30 |
+
'label' => $this->__('Folder path'),
|
31 |
+
'title' => $this->__('Folder path'),
|
32 |
+
'disabled' => $isElementDisabled,
|
33 |
+
'style' => 'width: 200px;',
|
34 |
+
'after_element_html' => '<p class="note">' . $this->__('The path to the folder that contains the images') . '</p>',
|
35 |
+
));
|
36 |
+
|
37 |
+
// Buttons - save and cancel
|
38 |
+
$fieldset->addField('save', 'note', array(
|
39 |
+
'text' =>
|
40 |
+
$this->getButtonHtml($this->__('Generate'), '', 'save') . ' '
|
41 |
+
. $this->getButtonHtml($this->__('Cancel'), '', 'cancel')
|
42 |
+
));
|
43 |
+
|
44 |
+
$form->addFieldNameSuffix('generate');
|
45 |
+
$this->setForm($form);
|
46 |
+
return parent::_prepareForm();
|
47 |
+
}
|
48 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Grid.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Slide_Grid
|
3 |
+
extends Mage_Adminhtml_Block_Widget_Grid
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
$this->setId('slideGrid');
|
10 |
+
$this->setUseAjax(true); // We need updating through AJAX
|
11 |
+
$this->setDefaultSort('slide_order'); // Show the slides in order
|
12 |
+
$this->setDefaultDir('ASC');
|
13 |
+
$this->setFilterVisibility(false); // No filtering
|
14 |
+
$this->setPagerVisibility(false); // No pagination
|
15 |
+
$this->setSaveParametersInSession(false); //Don't save paramters in session or else it creates problems
|
16 |
+
|
17 |
+
// Javascript parameters
|
18 |
+
$this->setRowClickCallback(false);
|
19 |
+
}
|
20 |
+
|
21 |
+
protected function _prepareCollection()
|
22 |
+
{
|
23 |
+
$slideshow = Mage::registry('slideshow');
|
24 |
+
$collection = Mage::getModel('ereactor_slider/slide')->getCollection()->addFilter('slideshow_id', $slideshow->getId());
|
25 |
+
$this->setCollection($collection);
|
26 |
+
return parent::_prepareCollection();
|
27 |
+
}
|
28 |
+
|
29 |
+
protected function _prepareColumns()
|
30 |
+
{
|
31 |
+
$this->addColumn('position', array(
|
32 |
+
'header' => $this->__('ID'),
|
33 |
+
'index' => 'slide_id',
|
34 |
+
'width' => '50px',
|
35 |
+
));
|
36 |
+
|
37 |
+
$this->addColumn('name', array(
|
38 |
+
'header' => $this->__('Name'),
|
39 |
+
'index' => 'name',
|
40 |
+
));
|
41 |
+
|
42 |
+
$this->addColumn('caption', array(
|
43 |
+
'header' => $this->__('Caption'),
|
44 |
+
'index' => 'caption',
|
45 |
+
));
|
46 |
+
|
47 |
+
$this->addColumn('slide_order', array(
|
48 |
+
'header' => $this->__('Order'),
|
49 |
+
'index' => 'slide_order',
|
50 |
+
'width' => '50px',
|
51 |
+
));
|
52 |
+
|
53 |
+
$this->addColumn('order_actions', array(
|
54 |
+
'header' => $this->__('Move'),
|
55 |
+
'width' => '50px',
|
56 |
+
'type' => 'action',
|
57 |
+
'getter' => 'getId',
|
58 |
+
'actions' => array(
|
59 |
+
array(
|
60 |
+
'caption' => '',
|
61 |
+
'icon' => '/skin/adminhtml/default/default/images/sort-arrow-up.png',
|
62 |
+
'url' => array( 'base' => '*/ereactor_slider_slide/moveUp' ),
|
63 |
+
'ajax' => true,
|
64 |
+
'field' => 'slide_id',
|
65 |
+
),
|
66 |
+
array(
|
67 |
+
'caption' => '',
|
68 |
+
'icon' => '/skin/adminhtml/default/default/images/sort-arrow-down.png',
|
69 |
+
'url' => array( 'base' => '*/ereactor_slider_slide/moveDown' ),
|
70 |
+
'ajax' => true,
|
71 |
+
'field' => 'slide_id',
|
72 |
+
),
|
73 |
+
),
|
74 |
+
'sortable' => false,
|
75 |
+
'renderer' => 'Ereactor_Slider_Block_Adminhtml_Widget_Grid_Column_Renderer_Slideaction',
|
76 |
+
));
|
77 |
+
|
78 |
+
$this->addColumn('action', array(
|
79 |
+
'header' => $this->__('Actions'),
|
80 |
+
'width' => '80px',
|
81 |
+
'type' => 'action',
|
82 |
+
'getter' => 'getId',
|
83 |
+
'actions' => array(
|
84 |
+
array(
|
85 |
+
'caption' => $this->__('Edit'),
|
86 |
+
'url' => array( 'base' => '*/ereactor_slider_slide/edit' ),
|
87 |
+
'popup' => true,
|
88 |
+
'field' => 'slide_id',
|
89 |
+
),
|
90 |
+
array(
|
91 |
+
'caption' => $this->__('Delete'),
|
92 |
+
'url' => array( 'base' => '*/ereactor_slider_slide/delete' ),
|
93 |
+
'ajax' => true,
|
94 |
+
'confirm' => $this->__('Are you sure you want to delete this slide?'),
|
95 |
+
'field' => 'slide_id',
|
96 |
+
),
|
97 |
+
),
|
98 |
+
'sortable' => false,
|
99 |
+
'renderer' => 'Ereactor_Slider_Block_Adminhtml_Widget_Grid_Column_Renderer_Slideaction',
|
100 |
+
));
|
101 |
+
|
102 |
+
return parent::_prepareColumns();
|
103 |
+
}
|
104 |
+
|
105 |
+
public function getRowUrl($row)
|
106 |
+
{
|
107 |
+
return $this->getUrl('*/ereactor_slider_slide/edit', array('slide_id' => $row->getId()));
|
108 |
+
}
|
109 |
+
|
110 |
+
public function getGridUrl()
|
111 |
+
{
|
112 |
+
return $this->getUrl('*/ereactor_slider_slide/grid', array('_current' => true));
|
113 |
+
}
|
114 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Preview.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Slide_Preview
|
3 |
+
extends Mage_Adminhtml_Block_Template
|
4 |
+
{
|
5 |
+
protected function _prepareLayout()
|
6 |
+
{
|
7 |
+
$helper = Mage::helper('slider');
|
8 |
+
$slide = $helper->getSlideInstance();
|
9 |
+
if (!isset($slide)) {
|
10 |
+
return '';
|
11 |
+
}
|
12 |
+
$slideshow = $helper->getSlideshowInstance();
|
13 |
+
if (!isset($slideshow)) {
|
14 |
+
return '';
|
15 |
+
}
|
16 |
+
|
17 |
+
$this->setWidth($slideshow->getFullWidth());
|
18 |
+
$this->setHeight($slideshow->getFullHeight());
|
19 |
+
|
20 |
+
$block = $this->getLayout()->createBlock(
|
21 |
+
'Ereactor_Slider_Block_Slide',
|
22 |
+
'slide',
|
23 |
+
array('slide' => $slide)
|
24 |
+
);
|
25 |
+
$this->setSlide($block->toHtml());
|
26 |
+
}
|
27 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slide/Quickadd.php
ADDED
@@ -0,0 +1,175 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Slide_Quickadd
|
3 |
+
extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
protected static $_text = array(
|
6 |
+
'add' => array(
|
7 |
+
'caption' => 'Add new slide',
|
8 |
+
'save_button' => 'Add slide',
|
9 |
+
'cancel_button' => 'Cancel',
|
10 |
+
),
|
11 |
+
|
12 |
+
'edit' => array(
|
13 |
+
'caption' => 'Edit slide',
|
14 |
+
'save_button' => 'Save changes',
|
15 |
+
'cancel_button' => 'Cancel',
|
16 |
+
),
|
17 |
+
);
|
18 |
+
|
19 |
+
protected $_mode = 'add';
|
20 |
+
|
21 |
+
protected function _text( $text ) {
|
22 |
+
return self::$_text[ $this->_mode ][ $text ];
|
23 |
+
}
|
24 |
+
|
25 |
+
protected function _prepareForm()
|
26 |
+
{
|
27 |
+
$helper = Mage::helper('slider');
|
28 |
+
$slideshow = $helper->getSlideshowInstance();
|
29 |
+
$slide = $helper->getSlideInstance();
|
30 |
+
$isEditing = isset($slide) && $slide->getId();
|
31 |
+
if ($isEditing) {
|
32 |
+
$this->_mode = 'edit';
|
33 |
+
}
|
34 |
+
$isElementDisabled = ! Mage::helper('slider/Admin')->isActionAllowed('save');
|
35 |
+
|
36 |
+
$form = new Varien_Data_Form();
|
37 |
+
$form->setHtmlIdPrefix('slideshow_quick' . $this->_mode . '_');
|
38 |
+
|
39 |
+
$fieldset = $form->addFieldset('base_fieldset', array(
|
40 |
+
'legend' => $this->__($this->_text('caption'))
|
41 |
+
));
|
42 |
+
|
43 |
+
// General fields
|
44 |
+
|
45 |
+
if ($slideshow->getId()) {
|
46 |
+
$fieldset->addField('slideshow_id', 'hidden', array(
|
47 |
+
'name' => 'slideshow_id',
|
48 |
+
'value' => $slideshow->getId(),
|
49 |
+
));
|
50 |
+
}
|
51 |
+
|
52 |
+
if ($isEditing) {
|
53 |
+
$fieldset->addField('slide_id', 'hidden', array(
|
54 |
+
'name' => 'slide_id',
|
55 |
+
'value' => $slide->getId(),
|
56 |
+
));
|
57 |
+
}
|
58 |
+
|
59 |
+
$fieldset->addField('name', 'text', array(
|
60 |
+
'name' => 'name',
|
61 |
+
'label' => $this->__('Title'),
|
62 |
+
'title' => $this->__('Title'),
|
63 |
+
//'required' => true,
|
64 |
+
'disabled' => $isElementDisabled,
|
65 |
+
));
|
66 |
+
|
67 |
+
$fieldset->addField('caption', 'text', array(
|
68 |
+
'name' => 'caption',
|
69 |
+
'label' => $this->__('Caption'),
|
70 |
+
'title' => $this->__('Caption'),
|
71 |
+
'disabled' => $isElementDisabled,
|
72 |
+
));
|
73 |
+
|
74 |
+
$slideTypeImages = '';
|
75 |
+
foreach (Ereactor_Slider_Model_Slide::$slideTypes as $typeId => $typeLabel) {
|
76 |
+
$slideTypeImages .= '<div class="ereactor-slide-type ereactor-slide-t' . $typeId . '" data-value="' . $typeId . '">' . $this->__($typeLabel) . '</div>';
|
77 |
+
}
|
78 |
+
$slideTypeImages .= '<div class="ereactor-slide-disabled ereactor-slide-t2">' . $this->__('Product') . '</div>
|
79 |
+
<p class="note">' . $this->__('Product slides are only available in the PRO version') . '</p>';
|
80 |
+
|
81 |
+
$fieldset->addField('type', 'hidden', array(
|
82 |
+
'name' => 'type',
|
83 |
+
'value' => Ereactor_Slider_Model_Slide::TYPE_IMAGE,
|
84 |
+
));
|
85 |
+
|
86 |
+
$fieldset->addField('type_images', 'note', array(
|
87 |
+
'label' => $this->__('Slide layout'),
|
88 |
+
'title' => $this->__('Slide layout'),
|
89 |
+
'text' => $slideTypeImages,
|
90 |
+
));
|
91 |
+
|
92 |
+
$this->_addImageFields($fieldset, $isElementDisabled);
|
93 |
+
$this->_addHtmlFields($fieldset, $isElementDisabled);
|
94 |
+
|
95 |
+
// Buttons - save and cancel (only if we're editing)
|
96 |
+
$fieldset->addField('save', 'note', array(
|
97 |
+
'text' =>
|
98 |
+
$this->getButtonHtml(Mage::helper('catalog')->__($this->_text('save_button')), '', 'save')
|
99 |
+
. ( $isEditing ? ' ' . $this->getButtonHtml(Mage::helper('catalog')->__($this->_text('cancel_button')), '', 'cancel') : '' )
|
100 |
+
));
|
101 |
+
|
102 |
+
$form->addFieldNameSuffix('slide');
|
103 |
+
Mage::dispatchEvent('adminhtml_slideshow_edit_tab_slides_quick' . $this->_mode . '_prepare_form', array('form' => $form));
|
104 |
+
|
105 |
+
if ($isEditing) {
|
106 |
+
$data = $slide->getData();
|
107 |
+
$form->setValues($data);
|
108 |
+
}
|
109 |
+
$this->setForm($form);
|
110 |
+
|
111 |
+
return parent::_prepareForm();
|
112 |
+
}
|
113 |
+
|
114 |
+
protected function _addImageFields($fieldset, $isElementDisabled) {
|
115 |
+
$imageField = 'field-t' . Ereactor_Slider_Model_Slide::TYPE_IMAGE;
|
116 |
+
$chooseButton = $this->getLayout()->createBlock('adminhtml/widget_button')
|
117 |
+
->setType('button')
|
118 |
+
->setClass('scalable btn-chooser ereactor-image-chooser')
|
119 |
+
->setLabel($this->__('Choose...'));
|
120 |
+
|
121 |
+
$fieldset->addField('image_url', 'text', array(
|
122 |
+
'name' => 'image_url',
|
123 |
+
'label' => $this->__('Image'),
|
124 |
+
'title' => $this->__('Image'),
|
125 |
+
'disabled' => $isElementDisabled,
|
126 |
+
'class' => $imageField,
|
127 |
+
'style' => 'width: 200px;',
|
128 |
+
'after_element_html' => $chooseButton->toHtml(),
|
129 |
+
));
|
130 |
+
|
131 |
+
$fieldset->addField('image_link', 'text', array(
|
132 |
+
'name' => 'image_link',
|
133 |
+
'label' => $this->__('Image link'),
|
134 |
+
'title' => $this->__('Image link'),
|
135 |
+
'disabled' => $isElementDisabled,
|
136 |
+
'class' => $imageField,
|
137 |
+
));
|
138 |
+
|
139 |
+
$fieldset->addField('image_target', 'select', array(
|
140 |
+
'name' => 'image_target',
|
141 |
+
'label' => $this->__('Where to open the link'),
|
142 |
+
'title' => $this->__('Where to open the link'),
|
143 |
+
'values' => array(
|
144 |
+
'_blank' => $this->__('In a new window'),
|
145 |
+
'self' => $this->__('In the current window'),
|
146 |
+
),
|
147 |
+
'disabled' => $isElementDisabled,
|
148 |
+
'class' => $imageField,
|
149 |
+
));
|
150 |
+
|
151 |
+
$fieldset->addField('image_follow', 'select', array(
|
152 |
+
'name' => 'image_follow',
|
153 |
+
'label' => $this->__('Link follow'),
|
154 |
+
'title' => $this->__('Link follow'),
|
155 |
+
'style' => 'width: 50px;',
|
156 |
+
'values' => array(
|
157 |
+
'follow' => $this->__('Yes'),
|
158 |
+
'nofollow' => $this->__('No'),
|
159 |
+
),
|
160 |
+
'after_element_html' => '<p class="note">' . $this->__('Should search engines follow the link?') . '</p>',
|
161 |
+
'disabled' => $isElementDisabled,
|
162 |
+
'class' => $imageField,
|
163 |
+
));
|
164 |
+
}
|
165 |
+
|
166 |
+
protected function _addHtmlFields($fieldset, $isElementDisabled) {
|
167 |
+
$fieldset->addField('html_html', 'textarea', array(
|
168 |
+
'name' => 'html_html',
|
169 |
+
'label' => $this->__('Content'),
|
170 |
+
'title' => $this->__('Content'),
|
171 |
+
'disabled' => $isElementDisabled,
|
172 |
+
'class' => 'field-t' . Ereactor_Slider_Model_Slide::TYPE_HTML,
|
173 |
+
));
|
174 |
+
}
|
175 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow extends
|
4 |
+
Mage_adminhtml_Block_Widget_Grid_Container
|
5 |
+
{
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
$this->_blockGroup = 'slider';
|
9 |
+
$this->_controller = 'adminhtml_slideshow';
|
10 |
+
$this->_headerText = 'Manage slideshows';
|
11 |
+
|
12 |
+
parent::__construct();
|
13 |
+
}
|
14 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow_Edit extends
|
4 |
+
Mage_adminhtml_Block_Widget_Form_Container
|
5 |
+
{
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
$helper = Mage::helper('slider/Admin');
|
9 |
+
$this->_objectId = 'slideshow_id';
|
10 |
+
$this->_blockGroup = 'slider';
|
11 |
+
$this->_controller = 'adminhtml_slideshow';
|
12 |
+
|
13 |
+
parent::__construct();
|
14 |
+
|
15 |
+
if ($helper->isActionAllowed('save')) {
|
16 |
+
$this->_updateButton('save', 'label', $this->__('Save'));
|
17 |
+
$this->_addButton('saveandcontinue', array(
|
18 |
+
'label' => $this->__('Save and continue'),
|
19 |
+
'onclick' => 'saveAndContinueEdit()',
|
20 |
+
'class' => 'save',
|
21 |
+
), -100);
|
22 |
+
} else {
|
23 |
+
$this->_removeButton('save');
|
24 |
+
}
|
25 |
+
|
26 |
+
if ($helper->isActionAllowed('delete')) {
|
27 |
+
$this->_updateButton('delete', 'label', $this->__('Delete'));
|
28 |
+
} else {
|
29 |
+
$this->_removeButton('delete');
|
30 |
+
}
|
31 |
+
|
32 |
+
$this->_formScripts[] = "
|
33 |
+
function toggleEditor() {
|
34 |
+
if (tinyMCE.getInstanceById('page_content') == null) {
|
35 |
+
tinyMCE.execCommand('mceAddControl', false, 'page_content');
|
36 |
+
} else {
|
37 |
+
tinyMCE.execCommand('mceRemoveControl', false, 'page_content');
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
function saveAndContinueEdit()
|
42 |
+
{
|
43 |
+
editForm.submit($('edit_form').action+'back/edit');
|
44 |
+
}
|
45 |
+
";
|
46 |
+
}
|
47 |
+
|
48 |
+
public function getHeaderText()
|
49 |
+
{
|
50 |
+
$model = Mage::helper('slider')->getSlideshowInstance();
|
51 |
+
if ($model->getId()) {
|
52 |
+
return $this->__("Edit '%s'", $this->escapeHtml($model->getName()));
|
53 |
+
}
|
54 |
+
return $this->__('New slideshow');
|
55 |
+
}
|
56 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Form.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow_Edit_Form extends
|
4 |
+
Mage_adminhtml_Block_Widget_Form
|
5 |
+
{
|
6 |
+
protected function _prepareForm()
|
7 |
+
{
|
8 |
+
$form = new Varien_Data_Form(array(
|
9 |
+
'id' => 'edit_form',
|
10 |
+
'action' => $this->getUrl('*/*/save'),
|
11 |
+
'method' => 'post',
|
12 |
+
'enctype' => 'multipart/form-data',
|
13 |
+
));
|
14 |
+
|
15 |
+
$form->setUseContainer(true);
|
16 |
+
$this->setForm($form);
|
17 |
+
return parent::_prepareForm();
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Tab/General.php
ADDED
@@ -0,0 +1,247 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow_Edit_Tab_General
|
4 |
+
extends Mage_adminhtml_Block_Widget_Form
|
5 |
+
implements Mage_adminhtml_Block_Widget_Tab_Interface
|
6 |
+
{
|
7 |
+
private static $defaultValues = array(
|
8 |
+
// Base default values
|
9 |
+
'type' => 0,
|
10 |
+
'theme' => 'default',
|
11 |
+
'width' => 600,
|
12 |
+
'width_unit' => 'px',
|
13 |
+
'height' => 200,
|
14 |
+
'height_unit' => 'px',
|
15 |
+
// Javascript default values
|
16 |
+
'show_arrows' => 1,
|
17 |
+
'show_buttons' => 1,
|
18 |
+
'show_buttons_overlay' => 0,
|
19 |
+
'mouse_scroll' => 1,
|
20 |
+
'keyboard_scroll' => 1,
|
21 |
+
'pause_on_hover' => 0,
|
22 |
+
'manual_advance' => 0,
|
23 |
+
//'autoplay_mode' => 3,
|
24 |
+
'autoplay_interval' => 5000,
|
25 |
+
'transition_type' => 'slideInLeft',
|
26 |
+
'transition_time' => 400,
|
27 |
+
'transition_easing' => 0,
|
28 |
+
);
|
29 |
+
|
30 |
+
private static $units = array(
|
31 |
+
0 => 'px',
|
32 |
+
1 => '%',
|
33 |
+
);
|
34 |
+
|
35 |
+
protected function _prepareForm()
|
36 |
+
{
|
37 |
+
$this->getParentBlock()->setActiveTab('general');
|
38 |
+
$model = Mage::helper('slider')->getSlideshowInstance();
|
39 |
+
$isElementDisabled = ! Mage::helper('slider/Admin')->isActionAllowed('save');
|
40 |
+
$form = new Varien_Data_Form();
|
41 |
+
$form->setHtmlIdPrefix('slideshow_general_');
|
42 |
+
$formData = $model->getData();
|
43 |
+
$formData = array_merge(self::$defaultValues, $formData);
|
44 |
+
|
45 |
+
$fieldset = $form->addFieldset('base_fieldset', array(
|
46 |
+
'legend' => $this->__('Slideshow info')
|
47 |
+
));
|
48 |
+
|
49 |
+
if ($model->getId()) {
|
50 |
+
$fieldset->addField('slideshow_id', 'hidden', array(
|
51 |
+
'name' => 'slideshow_id'
|
52 |
+
));
|
53 |
+
}
|
54 |
+
|
55 |
+
$fieldset->addField('name', 'text', array(
|
56 |
+
'name' => 'name',
|
57 |
+
'label' => $this->__('Title'),
|
58 |
+
'title' => $this->__('Title'),
|
59 |
+
'required' => true,
|
60 |
+
'disabled' => $isElementDisabled,
|
61 |
+
));
|
62 |
+
|
63 |
+
/*$fieldset->addField('type', 'select', array(
|
64 |
+
'name' => 'type',
|
65 |
+
'label' => $this->__('Type'),
|
66 |
+
'title' => $this->__('Type'),
|
67 |
+
'values' => $model->getSlideshowTypes(),
|
68 |
+
));*/
|
69 |
+
|
70 |
+
/*$fieldset->addField('theme', 'text', array(
|
71 |
+
'name' => 'theme',
|
72 |
+
'label' => $this->__('Theme'),
|
73 |
+
'title' => $this->__('Theme'),
|
74 |
+
));*/
|
75 |
+
|
76 |
+
$stretchButton = $this->getLayout()->createBlock('adminhtml/widget_button')
|
77 |
+
->setType('button')
|
78 |
+
->setId('slideshow_general_stretch_width')
|
79 |
+
->setLabel($this->__('Stretch'));
|
80 |
+
|
81 |
+
$fieldset->addField('width', 'text', array(
|
82 |
+
'name' => 'width',
|
83 |
+
'label' => $this->__('Width'),
|
84 |
+
'title' => $this->__('Width'),
|
85 |
+
'style' => 'width: 50px;',
|
86 |
+
'after_element_html' => $this->_prepareUnitSelect('width_unit', 'Width unit', $formData['width_unit']) . ' ' . $stretchButton->toHtml(),
|
87 |
+
));
|
88 |
+
|
89 |
+
$fieldset->addField('height', 'text', array(
|
90 |
+
'name' => 'height',
|
91 |
+
'label' => $this->__('Height'),
|
92 |
+
'title' => $this->__('Height'),
|
93 |
+
'style' => 'width: 50px;','after_element_html' => $this->_prepareUnitSelect('height_unit', 'Height unit', $formData['height_unit']),
|
94 |
+
));
|
95 |
+
|
96 |
+
$javascript = json_decode($model->getJavascript(), true);
|
97 |
+
$this->_prepareControlFields($form, $javascript);
|
98 |
+
$this->_prepareTransitionFields($form, $javascript);
|
99 |
+
|
100 |
+
Mage::dispatchEvent('adminhtml_slideshow_edit_tab_main_prepare_form', array('form' => $form));
|
101 |
+
|
102 |
+
$form->setValues($formData);
|
103 |
+
$this->setForm($form);
|
104 |
+
|
105 |
+
return parent::_prepareForm();
|
106 |
+
}
|
107 |
+
|
108 |
+
protected function _prepareUnitSelect($name, $title, $value)
|
109 |
+
{
|
110 |
+
$html = '<select id="slideshow_general_' . $name . '" name="' . $name . '" title="' . $title . '" class="select" style="width:40px;">';
|
111 |
+
foreach (self::$units as $key => $unit) {
|
112 |
+
$html .= '<option value="' . $key . '" ' . ($key == $value ? 'selected="selected"' : '') . '>' . $unit . '</option>';
|
113 |
+
}
|
114 |
+
$html .= '</select>';
|
115 |
+
return $html;
|
116 |
+
}
|
117 |
+
|
118 |
+
protected function _prepareControlFields($form, $js)
|
119 |
+
{
|
120 |
+
$fieldset = $form->addFieldset('javascript_fieldset', array(
|
121 |
+
'legend' => $this->__('Slideshow controls')
|
122 |
+
));
|
123 |
+
|
124 |
+
$fieldset->addField('show_arrows', 'radios', array(
|
125 |
+
'name' => 'show_arrows',
|
126 |
+
'label' => $this->__('Show navigation arrows?'),
|
127 |
+
'values' => array(
|
128 |
+
array('value' => 1, 'label' => $this->__('Yes')),
|
129 |
+
array('value' => 0, 'label' => $this->__('No')),
|
130 |
+
),
|
131 |
+
'after_element_html' => '<p class="note">' . $this->__('These are the arrows you use to move left/right between slides') . '</p>',
|
132 |
+
));
|
133 |
+
|
134 |
+
$fieldset->addField('show_buttons', 'radios', array(
|
135 |
+
'name' => 'show_buttons',
|
136 |
+
'label' => $this->__('Show navigation buttons?'),
|
137 |
+
'values' => array(
|
138 |
+
array('value' => 1, 'label' => $this->__('Yes')),
|
139 |
+
array('value' => 0, 'label' => $this->__('No')),
|
140 |
+
),
|
141 |
+
'after_element_html' => '<p class="note">' . $this->__('These are the buttons you use to jump between slides') . '</p>',
|
142 |
+
));
|
143 |
+
|
144 |
+
$fieldset->addField('show_buttons_overlay', 'radios', array(
|
145 |
+
'name' => 'show_buttons_overlay',
|
146 |
+
'label' => $this->__('Show navigation buttons as an overlay?'),
|
147 |
+
'values' => array(
|
148 |
+
array('value' => 1, 'label' => $this->__('Yes')),
|
149 |
+
array('value' => 0, 'label' => $this->__('No')),
|
150 |
+
),
|
151 |
+
'after_element_html' => '<p class="note">' . $this->__('When enabled, the buttons will appear over the slideshow; when disabled, they will appear below.') . '</p>',
|
152 |
+
));
|
153 |
+
|
154 |
+
/*$fieldset->addField('mouse_scroll', 'radios', array(
|
155 |
+
'name' => 'mouse_scroll',
|
156 |
+
'label' => $this->__('Enable mouse wheel scroll?'),
|
157 |
+
'values' => array(
|
158 |
+
array('value' => 1, 'label' => $this->__('Yes')),
|
159 |
+
array('value' => 0, 'label' => $this->__('No')),
|
160 |
+
),
|
161 |
+
));
|
162 |
+
|
163 |
+
$fieldset->addField('keyboard_scroll', 'radios', array(
|
164 |
+
'name' => 'keyboard_scroll',
|
165 |
+
'label' => $this->__('Enable keyboard scroll?'),
|
166 |
+
'values' => array(
|
167 |
+
array('value' => 1, 'label' => $this->__('Yes')),
|
168 |
+
array('value' => 0, 'label' => $this->__('No')),
|
169 |
+
),
|
170 |
+
));*/
|
171 |
+
|
172 |
+
$fieldset->addField('pause_on_hover', 'radios', array(
|
173 |
+
'name' => 'pause_on_hover',
|
174 |
+
'label' => $this->__('Pause slideshow on mouseover'),
|
175 |
+
'values' => array(
|
176 |
+
array('value' => 1, 'label' => $this->__('Yes')),
|
177 |
+
array('value' => 0, 'label' => $this->__('No')),
|
178 |
+
),
|
179 |
+
));
|
180 |
+
}
|
181 |
+
|
182 |
+
protected function _prepareTransitionFields($form, $js) {
|
183 |
+
$fieldset = $form->addFieldset('transition_fieldset', array(
|
184 |
+
'legend' => $this->__('Slide transitions')
|
185 |
+
));
|
186 |
+
|
187 |
+
$fieldset->addField('manual_advance', 'radios', array(
|
188 |
+
'name' => 'manual_advance',
|
189 |
+
'label' => $this->__('Play automatically?'),
|
190 |
+
'values' => array(
|
191 |
+
array('value' => 0, 'label' => $this->__('Yes')),
|
192 |
+
array('value' => 1, 'label' => $this->__('No')),
|
193 |
+
),
|
194 |
+
));
|
195 |
+
|
196 |
+
$fieldset->addField('autoplay_interval', 'text', array(
|
197 |
+
'name' => 'autoplay_interval',
|
198 |
+
'label' => $this->__('Time between slides'),
|
199 |
+
'style' => 'width: 50px;',
|
200 |
+
'after_element_html' => $this->__('milliseconds') . ' <p class="note">' . $this->__('Not available if autoplay is disabled.') . '<br />' . $this->__('Values under 50 miliseconds are ignored.') . '</p>',
|
201 |
+
));
|
202 |
+
|
203 |
+
$fieldset->addField('transition_type', 'select', array(
|
204 |
+
'name' => 'transition_type',
|
205 |
+
'label' => $this->__('Slide transition'),
|
206 |
+
'values' => Ereactor_Slider_Model_Slideshow::$transitionTypes,
|
207 |
+
'after_element_html' => '<p class="note">' . $this->__('For Product and HTML slides, only Slide and Fade are available.') . '</p>',
|
208 |
+
));
|
209 |
+
|
210 |
+
$fieldset->addField('transition_time', 'text', array(
|
211 |
+
'name' => 'transition_time',
|
212 |
+
'label' => $this->__('Transition time'),
|
213 |
+
'style' => 'width: 50px;',
|
214 |
+
'after_element_html' => $this->__('milliseconds') . ' <p class="note">' . $this->__('Values under 50 miliseconds are ignored.') . '</p>',
|
215 |
+
));
|
216 |
+
|
217 |
+
/*$fieldset->addField('transition_easing', 'select', array(
|
218 |
+
'name' => 'transition_easing',
|
219 |
+
'label' => $this->__('Transition easing'),
|
220 |
+
'values' => array(
|
221 |
+
0 => $this->__('Linear'),
|
222 |
+
1 => $this->__('Cubic'),
|
223 |
+
2 => $this->__('Sine'),
|
224 |
+
),
|
225 |
+
));*/
|
226 |
+
}
|
227 |
+
|
228 |
+
public function getTabLabel()
|
229 |
+
{
|
230 |
+
return $this->__('General');
|
231 |
+
}
|
232 |
+
|
233 |
+
public function getTabTitle()
|
234 |
+
{
|
235 |
+
return $this->__('General');
|
236 |
+
}
|
237 |
+
|
238 |
+
public function canShowTab()
|
239 |
+
{
|
240 |
+
return true;
|
241 |
+
}
|
242 |
+
|
243 |
+
public function isHidden()
|
244 |
+
{
|
245 |
+
return false;
|
246 |
+
}
|
247 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Tab/Slides.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow_Edit_Tab_Slides
|
3 |
+
extends Mage_Adminhtml_Block_Text_List
|
4 |
+
implements Mage_Adminhtml_Block_Widget_Tab_Interface
|
5 |
+
{
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
}
|
9 |
+
|
10 |
+
public function getTabLabel()
|
11 |
+
{
|
12 |
+
return $this->__('Slides');
|
13 |
+
}
|
14 |
+
|
15 |
+
public function getTabTitle()
|
16 |
+
{
|
17 |
+
return $this->__('Slides');
|
18 |
+
}
|
19 |
+
|
20 |
+
public function canShowTab()
|
21 |
+
{
|
22 |
+
// Only show this tab if the slideshow is already created
|
23 |
+
// This is because we need to give a slideshow_id to the slides that we create
|
24 |
+
// We can't do that if the slideshow is not saved
|
25 |
+
$slideshow = Mage::helper('slider')->getSlideshowInstance();
|
26 |
+
return isset($slideshow) && $slideshow->getId();
|
27 |
+
}
|
28 |
+
|
29 |
+
public function isHidden()
|
30 |
+
{
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Edit/Tabs.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow_Edit_Tabs
|
4 |
+
extends Mage_adminhtml_Block_Widget_Tabs
|
5 |
+
{
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
parent::__construct();
|
9 |
+
$this->setId('page_tabs');
|
10 |
+
$this->setDestElementId('edit_form');
|
11 |
+
$this->setTitle(Mage::helper('slider')->__('Slideshow info'));
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _prepareLayout() {
|
15 |
+
$url = array(
|
16 |
+
'quickAddSave' => $this->getUrl('*/ereactor_slider_slide/save'),
|
17 |
+
'productChooser' => $this->getUrl('*/ereactor_slider_chooser/product'),
|
18 |
+
'productsSchooser' => $this->getUrl('*/ereactor_slider_chooser/products'),
|
19 |
+
'imageChooser' => $this->getUrl('*/cms_wysiwyg_images/index'),
|
20 |
+
'imageInsert' => $this->getUrl('*/ereactor_slider_images/onInsert'),
|
21 |
+
'batchAdd' => $this->getUrl('*/ereactor_slider_slide/batchAdd'),
|
22 |
+
'slidePreview' => $this->getUrl('*/ereactor_slider_slide/preview'),
|
23 |
+
);
|
24 |
+
$jsBlock = $this->getLayout()
|
25 |
+
->createBlock('core/text', 'js_urls')
|
26 |
+
->setText('<script type="text/javascript">EREACTOR.SLIDER.url = ' . json_encode( $url ) . ';</script>');
|
27 |
+
$this->getLayout()->getBlock('content')->append($jsBlock);
|
28 |
+
return parent::_prepareLayout();
|
29 |
+
}
|
30 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Grid.php
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow_Grid extends
|
4 |
+
Mage_adminhtml_Block_Widget_Grid
|
5 |
+
{
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
parent::__construct();
|
9 |
+
$this->setId('slideshow_list_grid');
|
10 |
+
$this->setDefaultSort('slideshow_id');
|
11 |
+
$this->setDefaultDir('ASC');
|
12 |
+
$this->setSaveParametersInSession(true);
|
13 |
+
$this->setUseAjax(true);
|
14 |
+
}
|
15 |
+
|
16 |
+
protected function _prepareCollection()
|
17 |
+
{
|
18 |
+
$collection = Mage::getModel('ereactor_slider/slideshow')->getCollection();
|
19 |
+
$collection->getSelect()
|
20 |
+
->joinLeft(array('slide' => 'ereactor_slider_slide'),'main_table.slideshow_id=slide.slideshow_id', null)
|
21 |
+
->columns('COUNT(*) AS nr_slides')
|
22 |
+
->group('main_table.slideshow_id');
|
23 |
+
$this->setCollection($collection);
|
24 |
+
return parent::_prepareCollection();
|
25 |
+
}
|
26 |
+
|
27 |
+
protected function _prepareColumns()
|
28 |
+
{
|
29 |
+
$this->addColumn('slideshow_id', array(
|
30 |
+
'header' => $this->__('ID'),
|
31 |
+
'width' => '50px',
|
32 |
+
'index' => 'slideshow_id',
|
33 |
+
));
|
34 |
+
|
35 |
+
$this->addColumn('name', array(
|
36 |
+
'header' => $this->__('Name'),
|
37 |
+
'index' => 'name',
|
38 |
+
));
|
39 |
+
|
40 |
+
/*$this->addColumn('type', array(
|
41 |
+
'header' => $this->__('Type'),
|
42 |
+
'index' => 'type',
|
43 |
+
));
|
44 |
+
|
45 |
+
$this->addColumn('theme', array(
|
46 |
+
'header' => $this->__('Theme'),
|
47 |
+
'index' => 'theme',
|
48 |
+
));*/
|
49 |
+
|
50 |
+
$this->addColumn('nr_slides', array(
|
51 |
+
'header' => $this->__('Number of slides'),
|
52 |
+
'index' => 'nr_slides',
|
53 |
+
));
|
54 |
+
|
55 |
+
$this->addColumn('action', array(
|
56 |
+
'header' => $this->__('Action'),
|
57 |
+
'width' => '100px',
|
58 |
+
'type' => 'action',
|
59 |
+
'getter' => 'getId',
|
60 |
+
'actions' => array(
|
61 |
+
array(
|
62 |
+
'caption' => $this->__('Edit'),
|
63 |
+
'url' => array( 'base' => '*/*/edit' ),
|
64 |
+
'field' => 'id'
|
65 |
+
),
|
66 |
+
),
|
67 |
+
'filter' => false,
|
68 |
+
'sortable' => false,
|
69 |
+
));
|
70 |
+
|
71 |
+
return parent::_prepareColumns();
|
72 |
+
}
|
73 |
+
|
74 |
+
public function getRowUrl($row)
|
75 |
+
{
|
76 |
+
return $this->getUrl('*/*/edit', array('slideshow_id' => $row->getId()));
|
77 |
+
}
|
78 |
+
|
79 |
+
public function getGridUrl()
|
80 |
+
{
|
81 |
+
return $this->getUrl('*/*/grid', array('_current' => true));
|
82 |
+
}
|
83 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Slideshow/Preview.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Slideshow_Preview
|
3 |
+
extends Mage_Adminhtml_Block_Template
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
$nivoParams = json_encode(array(
|
8 |
+
'effect' => 'slideInLeft',
|
9 |
+
'animSpeed' => 400,
|
10 |
+
'pauseTime' => 5000,
|
11 |
+
'directionNav' => true,
|
12 |
+
'controlNav' => true,
|
13 |
+
'pauseOnHover' => false,
|
14 |
+
'manualAdvance' => false,
|
15 |
+
));
|
16 |
+
$slideshow = Mage::helper('slider')->getSlideshowInstance();
|
17 |
+
if (isset($slideshow) && $slideshow->getId()) {
|
18 |
+
$nivoParams = $slideshow->getNivoParams();
|
19 |
+
}
|
20 |
+
$this->setNivoParams($nivoParams);
|
21 |
+
}
|
22 |
+
}
|
app/code/community/Ereactor/Slider/Block/Adminhtml/Widget/Grid/Column/Renderer/Slideaction.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Adminhtml_Widget_Grid_Column_Renderer_Slideaction
|
3 |
+
extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Action
|
4 |
+
{
|
5 |
+
/**
|
6 |
+
* Renders column
|
7 |
+
*
|
8 |
+
* @param Varien_Object $row
|
9 |
+
* @return string
|
10 |
+
*/
|
11 |
+
public function render(Varien_Object $row)
|
12 |
+
{
|
13 |
+
$actions = $this->getColumn()->getActions();
|
14 |
+
if (empty($actions) || !is_array($actions)) {
|
15 |
+
return ' ';
|
16 |
+
}
|
17 |
+
|
18 |
+
$out = '';
|
19 |
+
|
20 |
+
foreach ($actions as $action) {
|
21 |
+
if (is_array($action)) {
|
22 |
+
$icon = '';
|
23 |
+
if (isset($action['icon'])) {
|
24 |
+
$icon = '<img src="' . $action['icon'] . '" />';
|
25 |
+
$action['caption'] = '{ICON}' . ( empty( $action['caption'] ) ? '' : ' ' . $action['caption'] );
|
26 |
+
unset($action['icon']);
|
27 |
+
}
|
28 |
+
$extraClasses = array();
|
29 |
+
if (isset($action['popup']) && $action['popup'] === true) {
|
30 |
+
$extraClasses[] = 'ereactor-ajax-modal';
|
31 |
+
unset($action['popup']);
|
32 |
+
} elseif (isset($action['ajax']) && $action['ajax'] === true) {
|
33 |
+
$extraClasses[] = 'ereactor-ajax-link';
|
34 |
+
unset($action['ajax']);
|
35 |
+
}
|
36 |
+
if (!empty($action['confirm'])) {
|
37 |
+
$extraClasses[] = 'ereactor-confirm';
|
38 |
+
$action['data-confirm'] = $action['confirm'];
|
39 |
+
unset($action['confirm']);
|
40 |
+
}
|
41 |
+
$action['class'] = (empty($action['class']) ? '' : $action['class'] . ' ') . implode(' ', $extraClasses);
|
42 |
+
$renderedAction = str_replace( '{ICON}', $icon, $this->_toLinkHtml($action, $row) );
|
43 |
+
$out .= $renderedAction . ' ';
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
return $out;
|
48 |
+
}
|
49 |
+
}
|
app/code/community/Ereactor/Slider/Block/Slide.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Ereactor_Slider_Block_Slide
|
3 |
+
extends Mage_Core_Block_Template
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
// This is always a frontend block, regardless of where it's called from
|
10 |
+
// This affects the paths that are generated for the templates
|
11 |
+
$this->setData('area', 'frontend');
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _prepareLayout()
|
15 |
+
{
|
16 |
+
$slide = $this->getSlide();
|
17 |
+
$this->setCaption($slide->getCaption());
|
18 |
+
|
19 |
+
$slideParams = json_decode($slide->getContent());
|
20 |
+
switch ($slide->getType()) {
|
21 |
+
case Ereactor_Slider_Model_Slide::TYPE_IMAGE:
|
22 |
+
$this->_prepareImage($slideParams);
|
23 |
+
break;
|
24 |
+
case Ereactor_Slider_Model_Slide::TYPE_HTML:
|
25 |
+
$this->_prepareHtml($slideParams);
|
26 |
+
break;
|
27 |
+
}
|
28 |
+
|
29 |
+
return parent::_prepareLayout();
|
30 |
+
}
|
31 |
+
|
32 |
+
protected function _prepareImage($params)
|
33 |
+
{
|
34 |
+
$this->setTemplate('ereactor/slider/slide/image.phtml');
|
35 |
+
$this->setImageUrl($params->image_url);
|
36 |
+
if (!empty($params->image_link)) {
|
37 |
+
$this->setImageLink($params->image_link);
|
38 |
+
$this->setTarget($params->image_target);
|
39 |
+
$this->setFollow($params->image_follow);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
protected function _prepareHtml($params)
|
44 |
+
{
|
45 |
+
$this->setTemplate('ereactor/slider/slide/html.phtml');
|
46 |
+
$this->setInnerHtml($params->html_html);
|
47 |
+
}
|
48 |
+
}
|
app/code/community/Ereactor/Slider/Block/Slider.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Block_Slider
|
4 |
+
extends Mage_Core_Block_Template
|
5 |
+
implements Mage_Widget_Block_Interface
|
6 |
+
{
|
7 |
+
private static $_includedScripts = false;
|
8 |
+
|
9 |
+
protected function _toHtml()
|
10 |
+
{
|
11 |
+
$this->setTemplate('ereactor/slider/slideshow.phtml');
|
12 |
+
|
13 |
+
$slideshow = Mage::getModel('ereactor_slider/slideshow')->load($this->getData('slideshowId'));
|
14 |
+
$this->setSlideshow($slideshow);
|
15 |
+
|
16 |
+
$slides = Mage::getModel('ereactor_slider/slide')->getCollection()
|
17 |
+
->addFilter('slideshow_id', $slideshow->getId())
|
18 |
+
->setOrder('slide_order', 'ASC');
|
19 |
+
|
20 |
+
$slidesHtml = array();
|
21 |
+
foreach ($slides as $slide) {
|
22 |
+
$block = Mage::app()->getLayout()->createBlock(
|
23 |
+
'Ereactor_Slider_Block_Slide',
|
24 |
+
'slide',
|
25 |
+
array('slide' => $slide)
|
26 |
+
);
|
27 |
+
$slidesHtml[] = $block->toHtml();
|
28 |
+
}
|
29 |
+
|
30 |
+
$this->setSlides($slidesHtml);
|
31 |
+
|
32 |
+
if (!self::$_includedScripts) {
|
33 |
+
$this->setIncludeScripts(true);
|
34 |
+
self::$_includedScripts = true;
|
35 |
+
}
|
36 |
+
|
37 |
+
return parent::_toHtml();
|
38 |
+
}
|
39 |
+
}
|
app/code/community/Ereactor/Slider/Helper/Admin.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Helper_Admin extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
public function isActionAllowed($action)
|
6 |
+
{
|
7 |
+
return Mage::getSingleton('Admin/session')->isAllowed('slideshow/manage/' . $action);
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Ereactor/Slider/Helper/Data.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
protected $_slideshowInstance;
|
6 |
+
protected $_slideInstance;
|
7 |
+
|
8 |
+
public function getSlideshowInstance() {
|
9 |
+
if (!$this->_slideshowInstance) {
|
10 |
+
$this->_slideshowInstance = Mage::registry('slideshow');
|
11 |
+
}
|
12 |
+
|
13 |
+
return $this->_slideshowInstance;
|
14 |
+
}
|
15 |
+
|
16 |
+
public function getSlideInstance() {
|
17 |
+
if (!$this->_slideInstance) {
|
18 |
+
$this->_slideInstance = Mage::registry('slide');
|
19 |
+
}
|
20 |
+
|
21 |
+
return $this->_slideInstance;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function noLicenseKey($errorLevel = 'warning') {
|
25 |
+
$url = $this->_getUrl('*/system_config/edit', array( 'section' => 'ereactor_slider' ));
|
26 |
+
$errorText = $this->__('You have not yet entered a license key for e-reactor Slider. You must do this before you are able to save any slides.') .
|
27 |
+
' <a href="' . $url . '" target="_blank">' . $this->__('Click here') . '</a>' . $this->__(' to enter a license key now.') . '<br />' .
|
28 |
+
$this->__('If you do not have a license key yet, you can go to %s and create one.', '<a href="http://shop.e-reactor.dk/licensemanager/license/" target="_blank">http://shop.e-reactor.dk</a>');
|
29 |
+
|
30 |
+
if ($errorLevel === 'warning') {
|
31 |
+
Mage::getSingleton('core/session')->addWarning($errorText);
|
32 |
+
} else {
|
33 |
+
Mage::throwException($errorText);
|
34 |
+
}
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Some form fields don't go straight to the database
|
39 |
+
* Instead, they are placed into a JSON-encoded field
|
40 |
+
* This method extracts those fields from the $data array
|
41 |
+
* and returns them encoded together as JSON
|
42 |
+
* Params:
|
43 |
+
* $data An array containing the form data (from $_POST)
|
44 |
+
* $data IS MODIFIED by this method
|
45 |
+
* $fields An array of fields to extract
|
46 |
+
*/
|
47 |
+
public function extractJsonFields(&$data, $fields) {
|
48 |
+
$result = array();
|
49 |
+
foreach ($fields as $field) {
|
50 |
+
if (!array_key_exists($field, $data)) {
|
51 |
+
continue;
|
52 |
+
}
|
53 |
+
$result[$field] = $data[$field];
|
54 |
+
unset($data[$field]);
|
55 |
+
}
|
56 |
+
|
57 |
+
return json_encode( $result );
|
58 |
+
}
|
59 |
+
}
|
app/code/community/Ereactor/Slider/Model/Resource/Slide.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Model_Resource_Slide extends Mage_Core_Model_Resource_Db_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('ereactor_slider/slide', 'slide_id');
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Ereactor/Slider/Model/Resource/Slide/Collection.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Model_Resource_Slide_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('ereactor_slider/slide');
|
8 |
+
}
|
9 |
+
|
10 |
+
public function getNextOrder($slideshow_id)
|
11 |
+
{
|
12 |
+
$this->getSelect()
|
13 |
+
->reset(Zend_Db_Select::COLUMNS)
|
14 |
+
->columns('MAX(slide_order) AS max_order')
|
15 |
+
->where('slideshow_id = ?', $slideshow_id);
|
16 |
+
return $this->fetchItem()->max_order + 1;
|
17 |
+
}
|
18 |
+
}
|
app/code/community/Ereactor/Slider/Model/Resource/Slideshow.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Model_Resource_Slideshow extends Mage_Core_Model_Resource_Db_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('ereactor_slider/slideshow', 'slideshow_id');
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Ereactor/Slider/Model/Resource/Slideshow/Collection.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Model_Resource_Slideshow_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('ereactor_slider/slideshow');
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Ereactor/Slider/Model/Slide.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$currentError = error_reporting();
|
3 |
+
error_reporting(0);
|
4 |
+
ob_start();
|
5 |
+
require_once(__DIR__ . '/Slide_src.php');
|
6 |
+
ob_end_clean();
|
7 |
+
error_reporting($currentError);
|
app/code/community/Ereactor/Slider/Model/Slide_src.php
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
//Obfuscation provided by FOPO - Free Online PHP Obfuscator v1.2: http://www.fopo.com.ar
|
3 |
+
$u9d982898a3b="\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65";@eval($u9d982898a3b(
|
4 |
+
"JGtiOGE0MzE0YWM1MGUzYjI0MmFkMTkxZTEwMzkzODc4PSJceDYyIjskbTM3NDU2ZjBhMDgxMmY0MTQzMjEyYmE
|
5 |
+
3ZTg3NjczZDc9Ilx4NjUiOyRuNjFkYTIyYTFhZTI2MTRjMDg1M2YzYWFjNzU1MjRhYj0iXHg2NiI7JGU2YjExMzd
|
6 |
+
lNmQ2MzM0MTcxZDAwYmNmMGVjMThjZGZjPSJceDY3IjskaDk3OWYwNWFiZjkzZjgxNDUwZTE0MDIzMTdjMmE0NGY
|
7 |
+
9Ilx4NmQiOyRvZjc5YjhkNWQxMzNmYThlMGFmNjBkYjVmMGJiNGY2MT0iXHg2ZiI7JGg3OWI5NzgyMDk2ZmIwNjc
|
8 |
+
xZDU3NDRmZTlmYTg3MDk2PSJceDZmIjskeWRhZDQyYmQ4Y2JiYWE3ZTI2MWYwN2I3YzM5ZjVhNDQ9Ilx4NmYiOyR
|
9 |
+
lYzI5MGUxNWE0NTJhMmJkOTQ2ODEyMDg0YWU5OTQ2Nz0iXHg2ZiI7JHM2ZjA2ZWQ4NWQxZDdkNWVmOTlhNjVhNjU
|
10 |
+
yODU3OTEzPSJceDczIjskdGFjNzgzYTE5Y2ZhNGIwYzlkYjE3Mjk1NzJmNGE3YTQ9Ilx4NzMiOyRzNTgyNzhjNTN
|
11 |
+
jNmUyZWE3OWFiOTA2OTI5NzZmNTg5ZT0iXHg3MyI7JHBkMTU2NDVmMjY5YTdhMDAwMTY1YzRiNzBkYTFjOGU5PSJ
|
12 |
+
ceDczIjska2I4YTQzMTRhYzUwZTNiMjQyYWQxOTFlMTAzOTM4NzguPSJcMTQxIjskbTM3NDU2ZjBhMDgxMmY0MTQ
|
13 |
+
zMjEyYmE3ZTg3NjczZDcuPSJcMTYyIjskbjYxZGEyMmExYWUyNjE0YzA4NTNmM2FhYzc1NTI0YWIuPSJcMTUxIjs
|
14 |
+
kZTZiMTEzN2U2ZDYzMzQxNzFkMDBiY2YwZWMxOGNkZmMuPSJcMTcyIjskaDk3OWYwNWFiZjkzZjgxNDUwZTE0MDI
|
15 |
+
zMTdjMmE0NGYuPSJcMTQ0Ijskb2Y3OWI4ZDVkMTMzZmE4ZTBhZjYwZGI1ZjBiYjRmNjEuPSJcMTQyIjskaDc5Yjk
|
16 |
+
3ODIwOTZmYjA2NzFkNTc0NGZlOWZhODcwOTYuPSJcMTQyIjskeWRhZDQyYmQ4Y2JiYWE3ZTI2MWYwN2I3YzM5ZjV
|
17 |
+
hNDQuPSJcMTQyIjskZWMyOTBlMTVhNDUyYTJiZDk0NjgxMjA4NGFlOTk0NjcuPSJcMTQyIjskczZmMDZlZDg1ZDF
|
18 |
+
kN2Q1ZWY5OWE2NWE2NTI4NTc5MTMuPSJcMTY0IjskdGFjNzgzYTE5Y2ZhNGIwYzlkYjE3Mjk1NzJmNGE3YTQuPSJ
|
19 |
+
cMTY0IjskczU4Mjc4YzUzYzZlMmVhNzlhYjkwNjkyOTc2ZjU4OWUuPSJcMTY0IjskcGQxNTY0NWYyNjlhN2EwMDA
|
20 |
+
xNjVjNGI3MGRhMWM4ZTkuPSJcMTY0Ijska2I4YTQzMTRhYzUwZTNiMjQyYWQxOTFlMTAzOTM4NzguPSJceDczIjs
|
21 |
+
kbTM3NDU2ZjBhMDgxMmY0MTQzMjEyYmE3ZTg3NjczZDcuPSJceDY1IjskbjYxZGEyMmExYWUyNjE0YzA4NTNmM2F
|
22 |
+
hYzc1NTI0YWIuPSJceDZjIjskZTZiMTEzN2U2ZDYzMzQxNzFkMDBiY2YwZWMxOGNkZmMuPSJceDY5IjskaDk3OWY
|
23 |
+
wNWFiZjkzZjgxNDUwZTE0MDIzMTdjMmE0NGYuPSJceDM1Ijskb2Y3OWI4ZDVkMTMzZmE4ZTBhZjYwZGI1ZjBiYjR
|
24 |
+
mNjEuPSJceDVmIjskaDc5Yjk3ODIwOTZmYjA2NzFkNTc0NGZlOWZhODcwOTYuPSJceDVmIjskeWRhZDQyYmQ4Y2J
|
25 |
+
iYWE3ZTI2MWYwN2I3YzM5ZjVhNDQuPSJceDVmIjskZWMyOTBlMTVhNDUyYTJiZDk0NjgxMjA4NGFlOTk0NjcuPSJ
|
26 |
+
ceDVmIjskczZmMDZlZDg1ZDFkN2Q1ZWY5OWE2NWE2NTI4NTc5MTMuPSJceDcyIjskdGFjNzgzYTE5Y2ZhNGIwYzl
|
27 |
+
kYjE3Mjk1NzJmNGE3YTQuPSJceDcyIjskczU4Mjc4YzUzYzZlMmVhNzlhYjkwNjkyOTc2ZjU4OWUuPSJceDcyIjs
|
28 |
+
kcGQxNTY0NWYyNjlhN2EwMDAxNjVjNGI3MGRhMWM4ZTkuPSJceDcyIjska2I4YTQzMTRhYzUwZTNiMjQyYWQxOTF
|
29 |
+
lMTAzOTM4NzguPSJcMTQ1IjskbTM3NDU2ZjBhMDgxMmY0MTQzMjEyYmE3ZTg3NjczZDcuPSJcMTQ3IjskbjYxZGE
|
30 |
+
yMmExYWUyNjE0YzA4NTNmM2FhYzc1NTI0YWIuPSJcMTQ1IjskZTZiMTEzN2U2ZDYzMzQxNzFkMDBiY2YwZWMxOGN
|
31 |
+
kZmMuPSJcMTU2Ijskb2Y3OWI4ZDVkMTMzZmE4ZTBhZjYwZGI1ZjBiYjRmNjEuPSJcMTQ1IjskaDc5Yjk3ODIwOTZ
|
32 |
+
mYjA2NzFkNTc0NGZlOWZhODcwOTYuPSJcMTQ1IjskeWRhZDQyYmQ4Y2JiYWE3ZTI2MWYwN2I3YzM5ZjVhNDQuPSJ
|
33 |
+
cMTQ3IjskZWMyOTBlMTVhNDUyYTJiZDk0NjgxMjA4NGFlOTk0NjcuPSJcMTYzIjskczZmMDZlZDg1ZDFkN2Q1ZWY
|
34 |
+
5OWE2NWE2NTI4NTc5MTMuPSJcMTM3IjskdGFjNzgzYTE5Y2ZhNGIwYzlkYjE3Mjk1NzJmNGE3YTQuPSJcMTM3Ijs
|
35 |
+
kczU4Mjc4YzUzYzZlMmVhNzlhYjkwNjkyOTc2ZjU4OWUuPSJcMTYwIjskcGQxNTY0NWYyNjlhN2EwMDAxNjVjNGI
|
36 |
+
3MGRhMWM4ZTkuPSJcMTY0Ijska2I4YTQzMTRhYzUwZTNiMjQyYWQxOTFlMTAzOTM4NzguPSJceDM2IjskbTM3NDU
|
37 |
+
2ZjBhMDgxMmY0MTQzMjEyYmE3ZTg3NjczZDcuPSJceDVmIjskbjYxZGEyMmExYWUyNjE0YzA4NTNmM2FhYzc1NTI
|
38 |
+
0YWIuPSJceDVmIjskZTZiMTEzN2U2ZDYzMzQxNzFkMDBiY2YwZWMxOGNkZmMuPSJceDY2Ijskb2Y3OWI4ZDVkMTM
|
39 |
+
zZmE4ZTBhZjYwZGI1ZjBiYjRmNjEuPSJceDZlIjskaDc5Yjk3ODIwOTZmYjA2NzFkNTc0NGZlOWZhODcwOTYuPSJ
|
40 |
+
ceDZlIjskeWRhZDQyYmQ4Y2JiYWE3ZTI2MWYwN2I3YzM5ZjVhNDQuPSJceDY1IjskZWMyOTBlMTVhNDUyYTJiZDk
|
41 |
+
0NjgxMjA4NGFlOTk0NjcuPSJceDc0IjskczZmMDZlZDg1ZDFkN2Q1ZWY5OWE2NWE2NTI4NTc5MTMuPSJceDcyIjs
|
42 |
+
kdGFjNzgzYTE5Y2ZhNGIwYzlkYjE3Mjk1NzJmNGE3YTQuPSJceDcyIjskczU4Mjc4YzUzYzZlMmVhNzlhYjkwNjk
|
43 |
+
yOTc2ZjU4OWUuPSJceDZmIjskcGQxNTY0NWYyNjlhN2EwMDAxNjVjNGI3MGRhMWM4ZTkuPSJceDZmIjska2I4YTQ
|
44 |
+
zMTRhYzUwZTNiMjQyYWQxOTFlMTAzOTM4NzguPSJcNjQiOyRtMzc0NTZmMGEwODEyZjQxNDMyMTJiYTdlODc2NzN
|
45 |
+
kNy49IlwxNjIiOyRuNjFkYTIyYTFhZTI2MTRjMDg1M2YzYWFjNzU1MjRhYi49IlwxNDciOyRlNmIxMTM3ZTZkNjM
|
46 |
+
zNDE3MWQwMGJjZjBlYzE4Y2RmYy49IlwxNTQiOyRvZjc5YjhkNWQxMzNmYThlMGFmNjBkYjVmMGJiNGY2MS49Ilw
|
47 |
+
xNDQiOyRoNzliOTc4MjA5NmZiMDY3MWQ1NzQ0ZmU5ZmE4NzA5Ni49IlwxNDQiOyR5ZGFkNDJiZDhjYmJhYTdlMjY
|
48 |
+
xZjA3YjdjMzlmNWE0NC49IlwxNjQiOyRlYzI5MGUxNWE0NTJhMmJkOTQ2ODEyMDg0YWU5OTQ2Ny49IlwxNDEiOyR
|
49 |
+
zNmYwNmVkODVkMWQ3ZDVlZjk5YTY1YTY1Mjg1NzkxMy49IlwxNDUiOyR0YWM3ODNhMTljZmE0YjBjOWRiMTcyOTU
|
50 |
+
3MmY0YTdhNC49IlwxNTciOyRzNTgyNzhjNTNjNmUyZWE3OWFiOTA2OTI5NzZmNTg5ZS49IlwxNjMiOyRwZDE1NjQ
|
51 |
+
1ZjI2OWE3YTAwMDE2NWM0YjcwZGExYzhlOS49IlwxNTMiOyRrYjhhNDMxNGFjNTBlM2IyNDJhZDE5MWUxMDM5Mzg
|
52 |
+
3OC49Ilx4NWYiOyRtMzc0NTZmMGEwODEyZjQxNDMyMTJiYTdlODc2NzNkNy49Ilx4NjUiOyRuNjFkYTIyYTFhZTI
|
53 |
+
2MTRjMDg1M2YzYWFjNzU1MjRhYi49Ilx4NjUiOyRlNmIxMTM3ZTZkNjMzNDE3MWQwMGJjZjBlYzE4Y2RmYy49Ilx
|
54 |
+
4NjEiOyRvZjc5YjhkNWQxMzNmYThlMGFmNjBkYjVmMGJiNGY2MS49Ilx4NWYiOyRoNzliOTc4MjA5NmZiMDY3MWQ
|
55 |
+
1NzQ0ZmU5ZmE4NzA5Ni49Ilx4NWYiOyR5ZGFkNDJiZDhjYmJhYTdlMjYxZjA3YjdjMzlmNWE0NC49Ilx4NWYiOyR
|
56 |
+
lYzI5MGUxNWE0NTJhMmJkOTQ2ODEyMDg0YWU5OTQ2Ny49Ilx4NzIiOyRzNmYwNmVkODVkMWQ3ZDVlZjk5YTY1YTY
|
57 |
+
1Mjg1NzkxMy49Ilx4NzAiOyR0YWM3ODNhMTljZmE0YjBjOWRiMTcyOTU3MmY0YTdhNC49Ilx4NzQiOyRrYjhhNDM
|
58 |
+
xNGFjNTBlM2IyNDJhZDE5MWUxMDM5Mzg3OC49IlwxNDQiOyRtMzc0NTZmMGEwODEyZjQxNDMyMTJiYTdlODc2NzN
|
59 |
+
kNy49IlwxNjAiOyRuNjFkYTIyYTFhZTI2MTRjMDg1M2YzYWFjNzU1MjRhYi49IlwxNjQiOyRlNmIxMTM3ZTZkNjM
|
60 |
+
zNDE3MWQwMGJjZjBlYzE4Y2RmYy49IlwxNjQiOyRvZjc5YjhkNWQxMzNmYThlMGFmNjBkYjVmMGJiNGY2MS49Ilw
|
61 |
+
xNDMiOyRoNzliOTc4MjA5NmZiMDY3MWQ1NzQ0ZmU5ZmE4NzA5Ni49IlwxNDYiOyR5ZGFkNDJiZDhjYmJhYTdlMjY
|
62 |
+
xZjA3YjdjMzlmNWE0NC49IlwxNDMiOyRlYzI5MGUxNWE0NTJhMmJkOTQ2ODEyMDg0YWU5OTQ2Ny49IlwxNjQiOyR
|
63 |
+
zNmYwNmVkODVkMWQ3ZDVlZjk5YTY1YTY1Mjg1NzkxMy49IlwxNTQiOyR0YWM3ODNhMTljZmE0YjBjOWRiMTcyOTU
|
64 |
+
3MmY0YTdhNC49Ilw2MSI7JGtiOGE0MzE0YWM1MGUzYjI0MmFkMTkxZTEwMzkzODc4Lj0iXHg2NSI7JG0zNzQ1NmY
|
65 |
+
wYTA4MTJmNDE0MzIxMmJhN2U4NzY3M2Q3Lj0iXHg2YyI7JG42MWRhMjJhMWFlMjYxNGMwODUzZjNhYWM3NTUyNGF
|
66 |
+
iLj0iXHg1ZiI7JGU2YjExMzdlNmQ2MzM0MTcxZDAwYmNmMGVjMThjZGZjLj0iXHg2NSI7JG9mNzliOGQ1ZDEzM2Z
|
67 |
+
hOGUwYWY2MGRiNWYwYmI0ZjYxLj0iXHg2YyI7JGg3OWI5NzgyMDk2ZmIwNjcxZDU3NDRmZTlmYTg3MDk2Lj0iXHg
|
68 |
+
2YyI7JHlkYWQ0MmJkOGNiYmFhN2UyNjFmMDdiN2MzOWY1YTQ0Lj0iXHg2ZiI7JHM2ZjA2ZWQ4NWQxZDdkNWVmOTl
|
69 |
+
hNjVhNjUyODU3OTEzLj0iXHg2MSI7JHRhYzc4M2ExOWNmYTRiMGM5ZGIxNzI5NTcyZjRhN2E0Lj0iXHgzMyI7JGt
|
70 |
+
iOGE0MzE0YWM1MGUzYjI0MmFkMTkxZTEwMzkzODc4Lj0iXDE0MyI7JG0zNzQ1NmYwYTA4MTJmNDE0MzIxMmJhN2U
|
71 |
+
4NzY3M2Q3Lj0iXDE0MSI7JG42MWRhMjJhMWFlMjYxNGMwODUzZjNhYWM3NTUyNGFiLj0iXDE0MyI7JG9mNzliOGQ
|
72 |
+
1ZDEzM2ZhOGUwYWY2MGRiNWYwYmI0ZjYxLj0iXDE0NSI7JGg3OWI5NzgyMDk2ZmIwNjcxZDU3NDRmZTlmYTg3MDk
|
73 |
+
2Lj0iXDE2NSI7JHlkYWQ0MmJkOGNiYmFhN2UyNjFmMDdiN2MzOWY1YTQ0Lj0iXDE1NiI7JHM2ZjA2ZWQ4NWQxZDd
|
74 |
+
kNWVmOTlhNjVhNjUyODU3OTEzLj0iXDE0MyI7JGtiOGE0MzE0YWM1MGUzYjI0MmFkMTkxZTEwMzkzODc4Lj0iXHg
|
75 |
+
2ZiI7JG0zNzQ1NmYwYTA4MTJmNDE0MzIxMmJhN2U4NzY3M2Q3Lj0iXHg2MyI7JG42MWRhMjJhMWFlMjYxNGMwODU
|
76 |
+
zZjNhYWM3NTUyNGFiLj0iXHg2ZiI7JG9mNzliOGQ1ZDEzM2ZhOGUwYWY2MGRiNWYwYmI0ZjYxLj0iXHg2MSI7JGg
|
77 |
+
3OWI5NzgyMDk2ZmIwNjcxZDU3NDRmZTlmYTg3MDk2Lj0iXHg3MyI7JHlkYWQ0MmJkOGNiYmFhN2UyNjFmMDdiN2M
|
78 |
+
zOWY1YTQ0Lj0iXHg3NCI7JHM2ZjA2ZWQ4NWQxZDdkNWVmOTlhNjVhNjUyODU3OTEzLj0iXHg2NSI7JGtiOGE0MzE
|
79 |
+
0YWM1MGUzYjI0MmFkMTkxZTEwMzkzODc4Lj0iXDE0NCI7JG0zNzQ1NmYwYTA4MTJmNDE0MzIxMmJhN2U4NzY3M2Q
|
80 |
+
3Lj0iXDE0NSI7JG42MWRhMjJhMWFlMjYxNGMwODUzZjNhYWM3NTUyNGFiLj0iXDE1NiI7JG9mNzliOGQ1ZDEzM2Z
|
81 |
+
hOGUwYWY2MGRiNWYwYmI0ZjYxLj0iXDE1NiI7JGg3OWI5NzgyMDk2ZmIwNjcxZDU3NDRmZTlmYTg3MDk2Lj0iXDE
|
82 |
+
1MCI7JHlkYWQ0MmJkOGNiYmFhN2UyNjFmMDdiN2MzOWY1YTQ0Lj0iXDE0NSI7JGtiOGE0MzE0YWM1MGUzYjI0MmF
|
83 |
+
kMTkxZTEwMzkzODc4Lj0iXHg2NSI7JG42MWRhMjJhMWFlMjYxNGMwODUzZjNhYWM3NTUyNGFiLj0iXHg3NCI7JHl
|
84 |
+
kYWQ0MmJkOGNiYmFhN2UyNjFmMDdiN2MzOWY1YTQ0Lj0iXHg2ZSI7JG42MWRhMjJhMWFlMjYxNGMwODUzZjNhYWM
|
85 |
+
3NTUyNGFiLj0iXDE0NSI7JHlkYWQ0MmJkOGNiYmFhN2UyNjFmMDdiN2MzOWY1YTQ0Lj0iXDE2NCI7JG42MWRhMjJ
|
86 |
+
hMWFlMjYxNGMwODUzZjNhYWM3NTUyNGFiLj0iXHg2ZSI7JHlkYWQ0MmJkOGNiYmFhN2UyNjFmMDdiN2MzOWY1YTQ
|
87 |
+
0Lj0iXHg3MyI7JG42MWRhMjJhMWFlMjYxNGMwODUzZjNhYWM3NTUyNGFiLj0iXDE2NCI7JG42MWRhMjJhMWFlMjY
|
88 |
+
xNGMwODUzZjNhYWM3NTUyNGFiLj0iXHg3MyI7JGVjMjkwZTE1YTQ1MmEyYmQ5NDY4MTIwODRhZTk5NDY3KCk7aWY
|
89 |
+
oJGg5NzlmMDVhYmY5M2Y4MTQ1MGUxNDAyMzE3YzJhNDRmKCRtMzc0NTZmMGEwODEyZjQxNDMyMTJiYTdlODc2NzN
|
90 |
+
kNygiXHg1Y1w1MFx4MjJcMTMzXHgzMFw1NVx4MzlcMTAxXHgyZFwxMzJceDYxXDU1XHg3YVwxMzRceDJiXDU3XHg
|
91 |
+
zZFwxMzVceDJhXDQyXHg1Y1w1MSIsIlx4MjhcNDJceDIyXDUxIiwkczZmMDZlZDg1ZDFkN2Q1ZWY5OWE2NWE2NTI
|
92 |
+
4NTc5MTMoIlxyXG4iLCIiLCRuNjFkYTIyYTFhZTI2MTRjMDg1M2YzYWFjNzU1MjRhYigkcGQxNTY0NWYyNjlhN2E
|
93 |
+
wMDAxNjVjNGI3MGRhMWM4ZTkoX19GSUxFX18sIlx4MjgiKSkpKSk9PSJceDM2XDY1XHgzN1w3MFx4MzlcMTQ0XHg
|
94 |
+
zNVw2NFx4NjJcMTQ1XHgzM1w2M1x4MzBcMTQ2XHg2NVw2M1x4NjVcNjFceDY1XDY0XHgzMVw3MVx4NjZcNjZceDM
|
95 |
+
3XDYxXHgzNFw2Mlx4MzlcNjFceDM0XDE0NCIpe0BldmFsKCRlNmIxMTM3ZTZkNjMzNDE3MWQwMGJjZjBlYzE4Y2R
|
96 |
+
mYygka2I4YTQzMTRhYzUwZTNiMjQyYWQxOTFlMTAzOTM4NzgoJHRhYzc4M2ExOWNmYTRiMGM5ZGIxNzI5NTcyZjR
|
97 |
+
hN2E0KCJtSXRBbzlBVFRDNGUxbHRQTzFkalJtZnpYRjBkb0xPYlNTT0dWSjFnTW9hMmhzU2o3WmsyblhpRS83NzM
|
98 |
+
0MmtzQ3RjUUxraGRJWnEzNzkzNzNDaTVhVzgrcGFpQ3NQc2Z1TXF6NFN0UStCZ3J6dEFjaEcwbXFSMmFvbTk2K3p
|
99 |
+
ZLytMaTVxUDVSeEN1U1ZIbjU5VlpsbDcxV1JicGw5NDZtSFBvOFZoRUFYcUJqUlpzK3lzREJmMWxkMkxDWWJma3V
|
100 |
+
5c3VHT1N5bnlCWTAxajh3bzNrODhVYng5YkY1ZDQrK0JHMStQNENKZWN0aVljWjRSUktjeS9PYlM2d3Y5VUxoUDV
|
101 |
+
3Mjg5bC9BSER1eDJ0NDFVc29TNjNtVDNnam93YUIrSDNzQmVxZlM1NUJuMWhLTUUweDZndHROZFloZjNCZW81L3N
|
102 |
+
xWjFtazZKVU1NeDhvcFQwVXBOQmFEZWI2NUJRajVVM0xLRGxzYThSTFVkTkFwOVhUTURsU0FSdlFwYjRGNElVZml
|
103 |
+
4dlhWMEJVWWtxR2hBdk05K1kwN3QwSFVDc05MMXFzZ2JKQ1VoWmJPL2toVkNDVWVqVXBPdnBlNU8yUG5SWTR0Nlh
|
104 |
+
qMXlnejg2Vk5CODJEZXpIUkt1dzRhK0p1VEtoNW1WZ3U4Qnk4STNFYWZjeFlhWjRSR2NqQkJFS2I3SVdUSldmNEV
|
105 |
+
janhIalkrTGg4ZXFxcWxLVlBSRlZDZm1GWGU0ay9zeW9sVjBsN0F4KzdzcTZ6cmZxZ2FRNTRZcVd0OXl0cXd2QTg
|
106 |
+
zTjdJQlRlcGdFTytVTnlRbWhveWVuUnFjUkMrNGdDaTdYc00yM2NUQ2pndGY4dEVNVnA3Vk1BUGtjVGtJR2E2Zmo
|
107 |
+
4TzY1cUZlSTVHallMZGMzeTJDb2JXNU9qOU1xRW5DcDlEMHJ6TGNBQ3p1OEFKYnJaZnpMSkR4V0ZtMEl4cDAxK21
|
108 |
+
RZjNLMXlVaVNmMkc4YlJGSThvS3NSSjJPK3pyOHhJczdITW5ZUzdKeWpkeEdvaEUwZmRJRmFrd09ZT2xnOFduckd
|
109 |
+
tdDRMVW55QjN3enZlWlJSQS9sRFcwTmJoeTF0OU5mOUplWnRwUDdpcm5rTXBYME5QQjIrZERsbVM2WGE5UTBWOVF
|
110 |
+
iNkJ5QnVIZlk4Z1FZbklOdnhkdjhuOEh0TjdPQlpsRkVTWXZUbW1qUWhlbHI0RXU2WnZYbktvZ2tyVHp0N21tTTN
|
111 |
+
ZNVhUY2ZBR21LVmoxQTFwSFEySU5qMWozT3FmZ3locHVHYWRuRmtNSitleXJtUU5jRkI0ZnYwVmg5dFdOajZDL0F
|
112 |
+
4ZWZJTmNkTUZXbE5MZWRtc20ySWhvbDNGWFlKTWxjVktwdERnNXpVeFVwNTh5MTNrSXZJbzc2MUNKMmFRZHhxbHd
|
113 |
+
NbzRieGpFVEtQc0pUWFM5dW1yZVZ5dWlEd3RUNE9aZDNBK2NKbURRMzkrU1VkakdxSlNsa3Y5a0RaMlp0bFVENHh
|
114 |
+
Sakw3ZFFYV005TnZlSjF1YmdUbVJ0bU45VFhpcEhSeGwyTjZZaEtaSlA3dndLRVVzQ3h2Z2VGT2NFR3lQWkdMTDR
|
115 |
+
hM1h4aEs1UUlHN0E0N3Q0aUpZWXBkS3dLTEdMSU9OOU9WZE5LZWREU2FCQ1dZMzJ1L2Jibzc4UFI0WXg1UXJEWmk
|
116 |
+
2RldXWFNKdDdzd2pLZUk1c0gweWVmakpTazVHWEllR1JEOHJ2UDF5RnVqNG4zUmxIRUJKWGRhZEhnbDY2QndkblB
|
117 |
+
BaVdpWmVsbmgza3I5U3lhZHVRUE9FLzk2VDJqVkx4MWxoUmV2QnZIMzhUc2RjRXpoKzF6VkUyTzhZenE4cm5ydlZ
|
118 |
+
yVFJDNkhCak5EUmZMbGswMjBHVUlPQ2d1NmRUSFlnZXRJUW96NGtCQ2I1Qm15R1NiNFBTU2dqU21PUWtJeXFJVFh
|
119 |
+
pQ1JINTgwcFRtZ0NGMkREYjF1WkRhMmtOV25FeVVaTHFQUXN3ZnN4REthWU1odFJ6MmZkV0VxdFM3TzRmOGpvUEQ
|
120 |
+
xK1h3YThwbDlxNkg1cWo3UEMxNVBwbTlSWExjWHlUQm5lanZvVGxkeWdNZ0Q5SEZJSjhVRytTdVlYc0dZWS9CNDF
|
121 |
+
WbmlqVS9NbDJVRkhtTzkzYzBsYk1ET1doZlEwMnY1bUNFd3luWGNSeWY0Z2dadTZFZk12bXM0YTIxT25JNmhmaTA
|
122 |
+
4aTdCRzhlSitIWUFDeVQ4UzZSYWNhd2JsMEpwdU83NWtUdXBEMW9YL0pmSXZwY3RwVjhYQXNaVUZJTWp4cHV5Wkx
|
123 |
+
yZU45bjdsTnFGbE15bmNuS251bUFDUjIwZnM2VlR1OFpibTJuR1piL0dkMkxxeXBSRy8vY3lTZzRucXNDS3FnY0d
|
124 |
+
uZVMramkweXhKeG0ya1NvWlQyb2NDalhlYUdsQUNmeDA1K1ErcWhoUHV3QXlvRjlIaHNIeExUUlVGNCtwQmpMNzU
|
125 |
+
vTCs2TkRqUitoTzV2SjRlejZaQmMzaUkzaytVUjdlZkUzOXhHc1NWLzRLOXF6aGJHekJXbVg0T0NmQWlKWVhuSUV
|
126 |
+
JNFIzZ0tOUkhSUEt4bksyR0J2K0pablZIdDBiOFJUUlVmbHZEU2dhWHJob2RkVWQrV1ZtOWlNMFZSMjdiOWRYVWQ
|
127 |
+
5ZWQ0ZGloa0lhL3VRdEswVDh0cFUxNmZHejYwUHhaeWE1UzlGa2kxMnhNZ3Rycy9MRDI5TWd2dlJ5bytNMFlHOWN
|
128 |
+
wdW5XekFKNmswNzN5M2FJalhRUlhtcDJrblVYSCtleFgxYTlDSTVxRDlpRTJMdzZXWEJFeHlHelJOc3dUR3ZKQlI
|
129 |
+
5dWdCcStCSTB6N2drS1R2TEFXQ3A3aXdIajc2NEp3eVpOeERNbHVzL0lUbGk2STc5aUxVOEl3WWJUVmhYbWRoRGs
|
130 |
+
vTzF1S0hRQVIwcEdCdGJCdnZzNHZiaVgvV29iRzVqaXE5eWs1ZTJYUmw0eFpOejFDR0dkeFUvY1MvVmJtdDFaUTF
|
131 |
+
uUDVETEF1bE12K25Eanllc1Bad0c2NFkwbmlrMUFsT1RPUS9rS1RDSlVOM1FMNWJDdTlrMHNFRmZxc2RVSGJHbXM
|
132 |
+
rK3ZJK1pCTlo0Sit4MXVuMzZFK1BLRkNDK1BJcHBjMXVDSzhJMXJsM0pKemxJbWhoKzVwR1pVSkwyWDdiYkloYUV
|
133 |
+
MeGhpYzV4TGFaL3NESTFrUXl5RnlFM3RNYXMrMllXQkFsWG1aU3dWMFFHUURocE1yK0dsWGN1TnZoSDR1TFQzQTc
|
134 |
+
0aDkxbmMxcTFZcHlhSGIzcEtVM1NqPT0iKSkpKTt9JHM1ODI3OGM1M2M2ZTJlYTc5YWI5MDY5Mjk3NmY1ODllKCR
|
135 |
+
5ZGFkNDJiZDhjYmJhYTdlMjYxZjA3YjdjMzlmNWE0NCgpLCJceDM3XDYzXHgzOFwxNDFceDM1XDE0NFx4MzNcMTQ
|
136 |
+
0XHg2Mlw2MFx4NjNcNjVceDMxXDcxXHgzMVw3MVx4MzFcNjJceDYyXDYwXHgzOVwxNDVceDMxXDY3XHgzM1w2MFx
|
137 |
+
4NjRcNjdceDMwXDY1XHgzNlw2NCIpPyRvZjc5YjhkNWQxMzNmYThlMGFmNjBkYjVmMGJiNGY2MSgpOiRoNzliOTc
|
138 |
+
4MjA5NmZiMDY3MWQ1NzQ0ZmU5ZmE4NzA5NigpOw=="));
|
139 |
+
?>
|
app/code/community/Ereactor/Slider/Model/Slideshow.php
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Model_Slideshow extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
public static $units = array(
|
6 |
+
0 => 'px',
|
7 |
+
1 => '%',
|
8 |
+
);
|
9 |
+
|
10 |
+
public static $transitionTypes = array (
|
11 |
+
'slideInLeft' => 'Slide left',
|
12 |
+
'slideInRight' => 'Slide right',
|
13 |
+
'slideInTop' => 'Slide top',
|
14 |
+
'slideInBottom' => 'Slide bottom',
|
15 |
+
'fade' => 'Fade',
|
16 |
+
'fold' => 'Fold',
|
17 |
+
'sliceDownRight' => 'Slice down right',
|
18 |
+
'sliceDownLeft' => 'Slice down left',
|
19 |
+
'sliceUpRight' => 'Slice up right',
|
20 |
+
'sliceUpLeft' => 'Slice up left',
|
21 |
+
'sliceUpDown' => 'Slice up down',
|
22 |
+
'sliceUpDownLeft' => 'Slice up down left',
|
23 |
+
'boxRandom' => 'Random boxes',
|
24 |
+
'boxRain' => 'Box rain',
|
25 |
+
'boxRainReverse' => 'Box rain reverse',
|
26 |
+
'boxRainGrow' => 'Box rain grow',
|
27 |
+
'boxRainGrowReverse'=> 'Box rain grow reverse',
|
28 |
+
'random' => 'Random',
|
29 |
+
);
|
30 |
+
|
31 |
+
public static $slideshowTypes = array(
|
32 |
+
0 => 'Manual',
|
33 |
+
1 => 'Automatic',
|
34 |
+
);
|
35 |
+
|
36 |
+
protected function _construct()
|
37 |
+
{
|
38 |
+
$this->_init( 'ereactor_slider/slideshow' );
|
39 |
+
}
|
40 |
+
|
41 |
+
protected function _beforeSave()
|
42 |
+
{
|
43 |
+
parent::_beforeSave();
|
44 |
+
|
45 |
+
return $this;
|
46 |
+
}
|
47 |
+
|
48 |
+
public function getTypeName()
|
49 |
+
{
|
50 |
+
return Mage::helper('slider')->__(self::$slideshowTypes[$this->type]);
|
51 |
+
}
|
52 |
+
|
53 |
+
public function getSlideshowTypes()
|
54 |
+
{
|
55 |
+
return self::$slideshowTypes;
|
56 |
+
}
|
57 |
+
|
58 |
+
public function toOptionArray()
|
59 |
+
{
|
60 |
+
$results = array();
|
61 |
+
foreach ($this->getCollection() as $slideshow)
|
62 |
+
{
|
63 |
+
$results[$slideshow->slideshow_id] = $slideshow->name;
|
64 |
+
}
|
65 |
+
return $results;
|
66 |
+
}
|
67 |
+
|
68 |
+
// An override that extracts the Json fields present in 'javascript'
|
69 |
+
public function getData($key = '', $index = null)
|
70 |
+
{
|
71 |
+
$data = parent::getData($key, $index);
|
72 |
+
if (is_array($data) && !empty($data['javascript'])) {
|
73 |
+
$data = array_merge($data, json_decode($data['javascript'], true));
|
74 |
+
}
|
75 |
+
return $data;
|
76 |
+
}
|
77 |
+
|
78 |
+
public function getNivoParams()
|
79 |
+
{
|
80 |
+
$params = json_decode($this->javascript, true);
|
81 |
+
$nivoParams = array(
|
82 |
+
'effect' => $params['transition_type'],
|
83 |
+
'animSpeed' => $params['transition_time'] >= 50 ? $params['transition_time'] : 400,
|
84 |
+
'pauseTime' => $params['autoplay_interval'] >= 50 ? $params['autoplay_interval'] : 5000,
|
85 |
+
'directionNav' => (bool)$params['show_arrows'],
|
86 |
+
'controlNav' => (bool)$params['show_buttons'],
|
87 |
+
'pauseOnHover' => (bool)$params['pause_on_hover'],
|
88 |
+
'manualAdvance' => (bool)$params['manual_advance'],
|
89 |
+
);
|
90 |
+
if ($params['show_buttons_overlay']) {
|
91 |
+
$nivoParams['controlNavClass'] = 'nivo-controlNav-hover';
|
92 |
+
}
|
93 |
+
return json_encode($nivoParams);
|
94 |
+
}
|
95 |
+
|
96 |
+
public function getFullWidth()
|
97 |
+
{
|
98 |
+
if (!isset(self::$units[ $this->width_unit ])) {
|
99 |
+
return '';
|
100 |
+
}
|
101 |
+
return $this->width . self::$units[ $this->width_unit ];
|
102 |
+
}
|
103 |
+
|
104 |
+
public function getFullHeight()
|
105 |
+
{
|
106 |
+
if (!isset(self::$units[ $this->height_unit ])) {
|
107 |
+
return '';
|
108 |
+
}
|
109 |
+
return $this->height . self::$units[ $this->height_unit ];
|
110 |
+
}
|
111 |
+
|
112 |
+
public function getDimensions()
|
113 |
+
{
|
114 |
+
return 'width:' . $this->getFullWidth() . ';height:' . $this->getFullHeight() . ';';
|
115 |
+
}
|
116 |
+
}
|
app/code/community/Ereactor/Slider/controllers/Adminhtml/Ereactor/Slider/ImagesController.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once( 'Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php' );
|
3 |
+
|
4 |
+
/**
|
5 |
+
* This class is an override of the standard images controller
|
6 |
+
* because we need to get the static URL of the selected images
|
7 |
+
* instead of the adminhtml URL which is normally returned.
|
8 |
+
* This method requires the least amount of core overrides.
|
9 |
+
*/
|
10 |
+
class Ereactor_Slider_Adminhtml_Ereactor_Slider_ImagesController
|
11 |
+
extends Mage_Adminhtml_Cms_Wysiwyg_ImagesController
|
12 |
+
{
|
13 |
+
/**
|
14 |
+
* Fired when an image is selected
|
15 |
+
*/
|
16 |
+
public function onInsertAction()
|
17 |
+
{
|
18 |
+
$helper = Mage::helper('cms/wysiwyg_images');
|
19 |
+
$storeId = $this->getRequest()->getParam('store');
|
20 |
+
|
21 |
+
$filename = $this->getRequest()->getParam('filename');
|
22 |
+
$filename = $helper->idDecode($filename);
|
23 |
+
//$asIs = $this->getRequest()->getParam('as_is');
|
24 |
+
|
25 |
+
Mage::helper('catalog')->setStoreId($storeId);
|
26 |
+
$helper->setStoreId($storeId);
|
27 |
+
|
28 |
+
// The actual override - get the static URL of the image instead of the directive URL
|
29 |
+
$image = $helper->getCurrentUrl() . $filename;
|
30 |
+
$this->getResponse()->setBody($image);
|
31 |
+
}
|
32 |
+
}
|
app/code/community/Ereactor/Slider/controllers/Adminhtml/Ereactor/Slider/SlideController.php
ADDED
@@ -0,0 +1,230 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Adminhtml_Ereactor_Slider_SlideController
|
4 |
+
extends Mage_Adminhtml_Controller_Action
|
5 |
+
{
|
6 |
+
protected function _initSlideshow()
|
7 |
+
{
|
8 |
+
$slideshowId = (int)$this->getRequest()->getParam('slideshow_id');
|
9 |
+
if (empty($slideshowId)) {
|
10 |
+
return;
|
11 |
+
}
|
12 |
+
|
13 |
+
$slideshow = Mage::getModel('ereactor_slider/slideshow')->load($slideshowId);
|
14 |
+
if (empty($slideshow) || !$slideshow->getId()) {
|
15 |
+
return;
|
16 |
+
}
|
17 |
+
|
18 |
+
Mage::register('slideshow', $slideshow);
|
19 |
+
}
|
20 |
+
|
21 |
+
protected function _initSlide()
|
22 |
+
{
|
23 |
+
$slideId = (int)$this->getRequest()->getParam('slide_id');
|
24 |
+
if (empty($slideId)) {
|
25 |
+
return;
|
26 |
+
}
|
27 |
+
|
28 |
+
$slide = Mage::getModel('ereactor_slider/slide')->load($slideId);
|
29 |
+
if (empty($slide) || !$slide->getId()) {
|
30 |
+
return;
|
31 |
+
}
|
32 |
+
|
33 |
+
Mage::register('slide', $slide);
|
34 |
+
$this->getRequest()->setParam('slideshow_id', $slide->slideshow_id);
|
35 |
+
$this->_initSlideshow();
|
36 |
+
}
|
37 |
+
|
38 |
+
public function batchAddImagesFormAction()
|
39 |
+
{
|
40 |
+
$this->_initSlideshow();
|
41 |
+
$this->loadLayout('popup');
|
42 |
+
$this->renderLayout();
|
43 |
+
}
|
44 |
+
|
45 |
+
public function batchAddAction() {
|
46 |
+
$data = $this->getRequest()->getParam('generate');
|
47 |
+
$this->getRequest()->setParam('slideshow_id', $data['slideshow_id']);
|
48 |
+
$this->_initSlideshow();
|
49 |
+
$slides = array();
|
50 |
+
$slides = Ereactor_Slider_Model_Slide::generateImageSlides($data['path']);
|
51 |
+
$totalSlides = count($slides);
|
52 |
+
$goodSlides = 0;
|
53 |
+
$slideNames = array();
|
54 |
+
foreach ($slides as $slide) {
|
55 |
+
$success = true;
|
56 |
+
try {
|
57 |
+
$slide->save();
|
58 |
+
} catch ( Exception $e ) {
|
59 |
+
$success = false;
|
60 |
+
}
|
61 |
+
if ($success) {
|
62 |
+
++$goodSlides;
|
63 |
+
$slideNames[] = $slide->getName();
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
$slideNames = implode(', ', $slideNames);
|
68 |
+
if ($goodSlides === 0) {
|
69 |
+
$this->_getSession()->addError(Mage::helper('slider')->__(
|
70 |
+
'Found %d %s but could not generate any slides.', $totalSlides, $source
|
71 |
+
));
|
72 |
+
} elseif( $goodSlides !== $totalSlides ) {
|
73 |
+
$this->_getSession()->addWarning(Mage::helper('slider')->__(
|
74 |
+
'Found %d %s but only %d slides could be created: %s.', $totalSlides, $source, $goodSlides, $slideNames
|
75 |
+
));
|
76 |
+
} else {
|
77 |
+
$this->_getSession()->addSuccess(Mage::helper('slider')->__(
|
78 |
+
'Successfully generated slides from %d %s: %s.', $totalSlides, $source, $slideNames
|
79 |
+
));
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
public function previewAction() {
|
84 |
+
$data = $this->getRequest()->getPost();
|
85 |
+
if (empty($data)) {
|
86 |
+
return;
|
87 |
+
}
|
88 |
+
$data = $this->_filterPostData($data);
|
89 |
+
|
90 |
+
$slide = Mage::getModel('ereactor_slider/slide')->addData( $data );
|
91 |
+
Mage::register('slide', $slide);
|
92 |
+
$slideshow = Mage::getModel('ereactor_slider/slideshow')->load((int)$slide->slideshow_id);
|
93 |
+
Mage::register('slideshow', $slideshow);
|
94 |
+
|
95 |
+
$this->loadLayout('popup')->renderLayout();
|
96 |
+
}
|
97 |
+
|
98 |
+
public function editAction() {
|
99 |
+
$this->_initSlide();
|
100 |
+
$this->loadLayout('popup')->renderLayout();
|
101 |
+
}
|
102 |
+
|
103 |
+
public function saveAction(){
|
104 |
+
$helper = Mage::helper('slider');
|
105 |
+
$redirectPath = '*/*';
|
106 |
+
$redirectParams = array();
|
107 |
+
|
108 |
+
$data = $this->getRequest()->getPost();
|
109 |
+
if (empty($data)) {
|
110 |
+
return;
|
111 |
+
}
|
112 |
+
$data = $this->_filterPostData($data);
|
113 |
+
$model = Mage::getModel('ereactor_slider/slide');
|
114 |
+
|
115 |
+
$slideId = isset($data['slide_id']) ? (int)$data['slide_id'] : null;
|
116 |
+
if ($slideId) {
|
117 |
+
$model->load($slideId);
|
118 |
+
}
|
119 |
+
$model->addData($data);
|
120 |
+
|
121 |
+
$success = true;
|
122 |
+
try {
|
123 |
+
$model->save();
|
124 |
+
$this->_getSession()->addSuccess($helper->__('The slide has been saved.'));
|
125 |
+
|
126 |
+
if ($this->getRequest()->getParam('back')) {
|
127 |
+
$redirectPath = '*/*/edit';
|
128 |
+
$redirectParams = array('slide_id' => $model->getId());
|
129 |
+
}
|
130 |
+
} catch (Mage_Core_Exception $e) {
|
131 |
+
$this->_getSession()->addError($e->getMessage());
|
132 |
+
} catch (Exception $e) {
|
133 |
+
$this->_getSession()->addException($e, $helper->__('An error occured while saving the slide.'));
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
public function deleteAction()
|
138 |
+
{
|
139 |
+
$this->_slideCallbackOperation('delete', null, 'The slide has been deleted.', 'An error occured while deleting the slide.');
|
140 |
+
}
|
141 |
+
|
142 |
+
public function moveUpAction()
|
143 |
+
{
|
144 |
+
$this->_slideMoveOperation(-1);
|
145 |
+
}
|
146 |
+
|
147 |
+
public function moveDownAction()
|
148 |
+
{
|
149 |
+
$this->_slideMoveOperation(1);
|
150 |
+
}
|
151 |
+
|
152 |
+
protected function _slideMoveOperation($offset)
|
153 |
+
{
|
154 |
+
return $this->_slideCallbackOperation('move', $offset, 'The slide has been moved.', 'An error occured while moving the slide.');
|
155 |
+
}
|
156 |
+
|
157 |
+
protected function _slideCallbackOperation($callback, $callbackParam, $successMessage, $exceptionMessage, $invalidMessage = 'Unable to find the slide.')
|
158 |
+
{
|
159 |
+
$helper = Mage::helper('slider');
|
160 |
+
$slideId = (int)$this->getRequest()->getParam('slide_id');
|
161 |
+
|
162 |
+
try {
|
163 |
+
if (empty($slideId)) {
|
164 |
+
Mage::throwException($helper->__($invalidMessage));
|
165 |
+
}
|
166 |
+
|
167 |
+
$model = Mage::getModel('ereactor_slider/slide')->load($slideId);
|
168 |
+
if (!$model->getId()) {
|
169 |
+
Mage::throwException($helper->__($invalidMessage));
|
170 |
+
}
|
171 |
+
|
172 |
+
// Originally there was an anonymous function here as a callback
|
173 |
+
// I switched to call_user_func for compatibility reasons
|
174 |
+
if (isset($callbackParam)) {
|
175 |
+
call_user_func(array($model, $callback), $callbackParam);
|
176 |
+
} else {
|
177 |
+
call_user_func(array($model, $callback));
|
178 |
+
}
|
179 |
+
|
180 |
+
$this->_getSession()->addSuccess($helper->__($successMessage));
|
181 |
+
} catch (Mage_Core_Exception $e) {
|
182 |
+
$this->_getSession()->addError($e->getMessage());
|
183 |
+
return false;
|
184 |
+
} catch (Exception $e) {
|
185 |
+
$this->_getSession()->addException($e, $helper->__($exceptionMessage));
|
186 |
+
return false;
|
187 |
+
}
|
188 |
+
|
189 |
+
return true;
|
190 |
+
}
|
191 |
+
|
192 |
+
public function gridAction()
|
193 |
+
{
|
194 |
+
$this->_initSlideshow();
|
195 |
+
$this->loadLayout()->renderLayout();
|
196 |
+
}
|
197 |
+
|
198 |
+
protected function _isAllowed()
|
199 |
+
{
|
200 |
+
$permissionName = '';
|
201 |
+
switch ($this->getRequest()->getActionName()) {
|
202 |
+
case 'new':
|
203 |
+
case 'save':
|
204 |
+
$permissionName = 'save';
|
205 |
+
break;
|
206 |
+
case 'delete':
|
207 |
+
$permissionName = 'delete';
|
208 |
+
break;
|
209 |
+
}
|
210 |
+
|
211 |
+
return Mage::getSingleton('Admin/session')->isAllowed('slideshow/manage' . ( $permissionName ? '/' . $permissionName : '' ));
|
212 |
+
}
|
213 |
+
|
214 |
+
protected function _filterPostData($data)
|
215 |
+
{
|
216 |
+
// Slide fields are inside a slide[ ] array
|
217 |
+
$data = $data['slide'];
|
218 |
+
|
219 |
+
// Make sure this is a valid slide type
|
220 |
+
if (!isset(Ereactor_Slider_Model_Slide::$slideTypes[$data['type']])) {
|
221 |
+
$data['type'] = Ereactor_Slider_Model_Slide::TYPE_IMAGE;
|
222 |
+
}
|
223 |
+
|
224 |
+
// Build the JSON content
|
225 |
+
$data['content'] = Mage::helper('slider')->extractJsonFields($data, array(
|
226 |
+
'image_url', 'image_link', 'image_target', 'image_follow', 'html_html',
|
227 |
+
));
|
228 |
+
return $data;
|
229 |
+
}
|
230 |
+
}
|
app/code/community/Ereactor/Slider/controllers/Adminhtml/Ereactor/SliderController.php
ADDED
@@ -0,0 +1,188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Ereactor_Slider_Adminhtml_Ereactor_SliderController
|
4 |
+
extends Mage_adminhtml_Controller_Action
|
5 |
+
{
|
6 |
+
protected function _initAction()
|
7 |
+
{
|
8 |
+
$helper = Mage::helper('slider');
|
9 |
+
|
10 |
+
// Check if the license key is missing
|
11 |
+
$licenseKey = Mage::getStoreConfig('ereactor_slider/activation/license_key');
|
12 |
+
if (empty($licenseKey)) {
|
13 |
+
$helper->noLicenseKey();
|
14 |
+
}
|
15 |
+
|
16 |
+
$this->loadLayout()
|
17 |
+
->_setActiveMenu('cms/ereactor_slider')
|
18 |
+
->_addBreadcrumb($helper->__('E-reactor Slider'), $helper->__('E-reactor Slider'))
|
19 |
+
->_addBreadcrumb($helper->__('Slideshows'), $helper->__('Slideshows'));
|
20 |
+
return $this;
|
21 |
+
}
|
22 |
+
|
23 |
+
protected function _initSlideshow()
|
24 |
+
{
|
25 |
+
$slideshowId = (int)$this->getRequest()->getParam('slideshow_id');
|
26 |
+
if (empty($slideshowId)) {
|
27 |
+
return;
|
28 |
+
}
|
29 |
+
|
30 |
+
$slideshow = Mage::getModel('ereactor_slider/slideshow')->load($slideshowId);
|
31 |
+
if (empty($slideshow) || !$slideshow->getId()) {
|
32 |
+
return;
|
33 |
+
}
|
34 |
+
|
35 |
+
Mage::register('slideshow', $slideshow);
|
36 |
+
}
|
37 |
+
|
38 |
+
public function indexAction()
|
39 |
+
{
|
40 |
+
$this->_title($this->__('Slideshows'))
|
41 |
+
->_title($this->__('E-reactor slider'));
|
42 |
+
|
43 |
+
$this->_initAction();
|
44 |
+
$this->renderLayout();
|
45 |
+
}
|
46 |
+
|
47 |
+
public function newAction()
|
48 |
+
{
|
49 |
+
$this->_forward('edit');
|
50 |
+
}
|
51 |
+
|
52 |
+
public function editAction()
|
53 |
+
{
|
54 |
+
$helper = Mage::helper('slider');
|
55 |
+
$this->_title($this->__('Slideshows'))
|
56 |
+
->_title($this->__('E-reactor slider'));
|
57 |
+
|
58 |
+
$model = Mage::getModel('ereactor_slider/slideshow');
|
59 |
+
$slideshowId = $this->getRequest()->getParam('slideshow_id');
|
60 |
+
if ($slideshowId) {
|
61 |
+
$model->load($slideshowId);
|
62 |
+
|
63 |
+
if (!$model->getId()) {
|
64 |
+
$this->_getSession()->addError($helper->__('The slideshow does not exist.'));
|
65 |
+
return $this->_redirect('*/*/');
|
66 |
+
}
|
67 |
+
|
68 |
+
$this->_title($model->getName());
|
69 |
+
$breadCrumb = $helper->__('Edit slideshow');
|
70 |
+
} else {
|
71 |
+
$this->_title($helper->__('New slideshow'));
|
72 |
+
$breadCrumb = $helper->__('New slideshow');
|
73 |
+
}
|
74 |
+
|
75 |
+
$data = Mage::getSingleton('adminhtml/session')->getFormData(true);
|
76 |
+
if (!empty($data)) {
|
77 |
+
$model->addData(true);
|
78 |
+
}
|
79 |
+
|
80 |
+
Mage::register('slideshow', $model);
|
81 |
+
|
82 |
+
$this->_initAction()->_addBreadcrumb($breadCrumb, $breadCrumb);
|
83 |
+
$this->renderLayout();
|
84 |
+
}
|
85 |
+
|
86 |
+
public function saveAction()
|
87 |
+
{
|
88 |
+
$helper = Mage::helper('slider');
|
89 |
+
$redirectPath = '*/*';
|
90 |
+
$redirectParams = array();
|
91 |
+
|
92 |
+
$data = $this->getRequest()->getPost();
|
93 |
+
if ($data) {
|
94 |
+
$data = $this->_filterPostData($data);
|
95 |
+
$model = Mage::getModel('ereactor_slider/slideshow');
|
96 |
+
|
97 |
+
$slideshowId = $this->getRequest()->getParam('slideshow_id');
|
98 |
+
if ($slideshowId) {
|
99 |
+
$model->load($slideshowId);
|
100 |
+
}
|
101 |
+
$model->addData($data);
|
102 |
+
|
103 |
+
$hasError = false;
|
104 |
+
try {
|
105 |
+
$model->save();
|
106 |
+
$this->_getSession()->addSuccess($helper->__('The slideshow has been saved.'));
|
107 |
+
|
108 |
+
if ($this->getRequest()->getParam('back')) {
|
109 |
+
$redirectPath = '*/*/edit';
|
110 |
+
$redirectParams = array('slideshow_id' => $model->getId());
|
111 |
+
}
|
112 |
+
} catch (Mage_Core_Exception $e) {
|
113 |
+
$hasError = true;
|
114 |
+
$this->_getSession()->addError($e->getMessage());
|
115 |
+
} catch (Exception $e) {
|
116 |
+
$hasError = true;
|
117 |
+
$this->_getSession()->addException($e, $helper->__('An error occured while saving the slideshow.'));
|
118 |
+
}
|
119 |
+
|
120 |
+
if ($hasError) {
|
121 |
+
$this->_getSession()->setFormData($data);
|
122 |
+
$redirectPath = '*/*/edit';
|
123 |
+
$redirectParams = array('slideshow_id' => $this->getRequest()->getParam('slideshow_id'));
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
$this->_redirect($redirectPath, $redirectParams);
|
128 |
+
}
|
129 |
+
|
130 |
+
public function deleteAction()
|
131 |
+
{
|
132 |
+
$helper = Mage::helper('slider');
|
133 |
+
$itemId = $this->getRequest()->getParam('slideshow_id');
|
134 |
+
if ($itemId) {
|
135 |
+
try {
|
136 |
+
$model = Mage::getModel('ereactor_slider/slideshow');
|
137 |
+
$model->load($itemId);
|
138 |
+
if (!$model->getId()) {
|
139 |
+
Mage::throwException($helper->__('Unable to find the slideshow.'));
|
140 |
+
}
|
141 |
+
$model->delete();
|
142 |
+
|
143 |
+
$this->_getSession()->addSuccess($helper->__('The slideshow has been deleted.'));
|
144 |
+
} catch (Mage_Core_Exception $e) {
|
145 |
+
$this->_getSession()->addError($e->getMessage());
|
146 |
+
} catch (Exception $e) {
|
147 |
+
$this->_getSession()->addException($e, $helper->__('An error occured while deleting the slideshow.'));
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
$this->redirect('*/*/');
|
152 |
+
}
|
153 |
+
|
154 |
+
public function gridAction()
|
155 |
+
{
|
156 |
+
$this->loadLayout()->renderLayout();
|
157 |
+
}
|
158 |
+
|
159 |
+
protected function _isAllowed()
|
160 |
+
{
|
161 |
+
$permissionName = '';
|
162 |
+
switch ($this->getRequest()->getActionName()) {
|
163 |
+
case 'new':
|
164 |
+
case 'save':
|
165 |
+
$permissionName = 'save';
|
166 |
+
break;
|
167 |
+
case 'delete':
|
168 |
+
$permissionName = 'delete';
|
169 |
+
break;
|
170 |
+
}
|
171 |
+
|
172 |
+
return Mage::getSingleton('Admin/session')->isAllowed('slideshow/manage' . ( $permissionName ? '/' . $permissionName : '' ));
|
173 |
+
}
|
174 |
+
|
175 |
+
protected function _filterPostData($data)
|
176 |
+
{
|
177 |
+
// The transition type must be one of the supported values
|
178 |
+
if (!isset(Ereactor_Slider_Model_Slideshow::$transitionTypes[$data['transition_type']])) {
|
179 |
+
$data['transition_type'] = 'slideInLeft';
|
180 |
+
}
|
181 |
+
$data['javascript'] = Mage::helper('slider')->extractJsonFields($data, array(
|
182 |
+
'show_arrows', 'show_buttons', 'show_buttons_overlay', 'mouse_scroll', 'keyboard_scroll', 'pause_on_hover',
|
183 |
+
'manual_advance', 'autoplay_interval', 'transition_type', 'transition_time', /*'transition_easing'*/
|
184 |
+
));
|
185 |
+
|
186 |
+
return $data;
|
187 |
+
}
|
188 |
+
}
|
app/code/community/Ereactor/Slider/etc/adminhtml.xml
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<menu>
|
4 |
+
<cms>
|
5 |
+
<children>
|
6 |
+
<ereactor_slider translate="title" module="slider">
|
7 |
+
<title>E-reactor Slideshows</title>
|
8 |
+
<action>adminhtml/ereactor_slider/index</action>
|
9 |
+
<sort_order>50</sort_order>
|
10 |
+
</ereactor_slider>
|
11 |
+
</children>
|
12 |
+
</cms>
|
13 |
+
</menu>
|
14 |
+
|
15 |
+
<acl>
|
16 |
+
<resources>
|
17 |
+
<admin>
|
18 |
+
<children>
|
19 |
+
<slideshow translate="title" module="slider">
|
20 |
+
<title>Slideshows</title>
|
21 |
+
<sort_order>65</sort_order>
|
22 |
+
<children>
|
23 |
+
<manage translate="title">
|
24 |
+
<title>Manage slideshows</title>
|
25 |
+
<sort_order>0</sort_order>
|
26 |
+
<children>
|
27 |
+
<save translate="title">
|
28 |
+
<title>Save slideshows</title>
|
29 |
+
<sort_order>0</sort_order>
|
30 |
+
</save>
|
31 |
+
<delete translate="title">
|
32 |
+
<title>Delete slideshows</title>
|
33 |
+
<sort_order>10</sort_order>
|
34 |
+
</delete>
|
35 |
+
</children>
|
36 |
+
</manage>
|
37 |
+
</children>
|
38 |
+
</slideshow>
|
39 |
+
<system>
|
40 |
+
<children>
|
41 |
+
<config>
|
42 |
+
<children>
|
43 |
+
<ereactor_slider>
|
44 |
+
<title>e-reactor Slider options</title>
|
45 |
+
</ereactor_slider>
|
46 |
+
</children>
|
47 |
+
</config>
|
48 |
+
</children>
|
49 |
+
</system>
|
50 |
+
</children>
|
51 |
+
</admin>
|
52 |
+
</resources>
|
53 |
+
</acl>
|
54 |
+
</config>
|
app/code/community/Ereactor/Slider/etc/config.xml
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Ereactor_Slider>
|
5 |
+
<version>1.0.0</version>
|
6 |
+
</Ereactor_Slider>
|
7 |
+
</modules>
|
8 |
+
|
9 |
+
<global>
|
10 |
+
<models>
|
11 |
+
<ereactor_slider>
|
12 |
+
<class>Ereactor_Slider_Model</class>
|
13 |
+
<resourceModel>ereactor_slider_resource</resourceModel>
|
14 |
+
</ereactor_slider>
|
15 |
+
<ereactor_slider_resource>
|
16 |
+
<class>Ereactor_Slider_Model_Resource</class>
|
17 |
+
<entities>
|
18 |
+
<slideshow>
|
19 |
+
<table>ereactor_slider_slideshow</table>
|
20 |
+
</slideshow>
|
21 |
+
<slide>
|
22 |
+
<table>ereactor_slider_slide</table>
|
23 |
+
</slide>
|
24 |
+
</entities>
|
25 |
+
</ereactor_slider_resource>
|
26 |
+
</models>
|
27 |
+
<helpers>
|
28 |
+
<slider>
|
29 |
+
<class>Ereactor_Slider_Helper</class>
|
30 |
+
</slider>
|
31 |
+
</helpers>
|
32 |
+
<blocks>
|
33 |
+
<slider>
|
34 |
+
<class>Ereactor_Slider_Block</class>
|
35 |
+
</slider>
|
36 |
+
</blocks>
|
37 |
+
<resources>
|
38 |
+
<ereactor_slider_setup>
|
39 |
+
<setup>
|
40 |
+
<module>Ereactor_Slider</module>
|
41 |
+
<class>Mage_Core_Model_Resource_Setup</class>
|
42 |
+
</setup>
|
43 |
+
</ereactor_slider_setup>
|
44 |
+
</resources>
|
45 |
+
</global>
|
46 |
+
|
47 |
+
<adminhtml>
|
48 |
+
<layout>
|
49 |
+
<updates>
|
50 |
+
<ereactor_slider>
|
51 |
+
<file>ereactor_slider.xml</file>
|
52 |
+
</ereactor_slider>
|
53 |
+
</updates>
|
54 |
+
</layout>
|
55 |
+
</adminhtml>
|
56 |
+
|
57 |
+
<admin>
|
58 |
+
<routers>
|
59 |
+
<adminhtml>
|
60 |
+
<args>
|
61 |
+
<modules>
|
62 |
+
<Ereactor_Slider before="Mage_Adminhtml">Ereactor_Slider_Adminhtml</Ereactor_Slider>
|
63 |
+
</modules>
|
64 |
+
</args>
|
65 |
+
</adminhtml>
|
66 |
+
</routers>
|
67 |
+
</admin>
|
68 |
+
</config>
|
app/code/community/Ereactor/Slider/etc/system.xml
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<ereactor_config translate="label" module="slider">
|
5 |
+
<label>e-reactor Extensions</label>
|
6 |
+
<sort_order>9000</sort_order>
|
7 |
+
</ereactor_config>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<ereactor_slider translate="label" module="slider">
|
11 |
+
<label>e-reactor Slider options</label>
|
12 |
+
<tab>ereactor_config</tab>
|
13 |
+
<frontend_type>text</frontend_type>
|
14 |
+
<sort_order>1</sort_order>
|
15 |
+
<show_in_default>1</show_in_default>
|
16 |
+
<show_in_website>1</show_in_website>
|
17 |
+
<show_in_store>1</show_in_store>
|
18 |
+
<groups>
|
19 |
+
<activation translate="label">
|
20 |
+
<label>Activation</label>
|
21 |
+
<frontend_type>text</frontend_type>
|
22 |
+
<sort_order>1</sort_order>
|
23 |
+
<show_in_default>1</show_in_default>
|
24 |
+
<show_in_website>1</show_in_website>
|
25 |
+
<show_in_store>1</show_in_store>
|
26 |
+
<fields>
|
27 |
+
<license_key translate="label comment">
|
28 |
+
<label>License key</label>
|
29 |
+
<comment>You must create a license key from the http://shop.e-reactor.dk website and enter it in this field</comment>
|
30 |
+
<frontend_type>text</frontend_type>
|
31 |
+
<sort_order>1</sort_order>
|
32 |
+
<show_in_default>1</show_in_default>
|
33 |
+
<show_in_website>1</show_in_website>
|
34 |
+
<show_in_store>1</show_in_store>
|
35 |
+
</license_key>
|
36 |
+
</fields>
|
37 |
+
</activation>
|
38 |
+
</groups>
|
39 |
+
</ereactor_slider>
|
40 |
+
</sections>
|
41 |
+
</config>
|
app/code/community/Ereactor/Slider/etc/widget.xml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<widgets>
|
3 |
+
<slider_slider type="slider/slider" translate="name description" module="slider">
|
4 |
+
<name>Ereactor Slideshow</name>
|
5 |
+
<description type="desc">Adds a slideshow</description>
|
6 |
+
<parameters>
|
7 |
+
<slideshowId translate="label">
|
8 |
+
<label>Slideshow</label>
|
9 |
+
<visible>1</visible>
|
10 |
+
<required>1</required>
|
11 |
+
<type>select</type>
|
12 |
+
<source_model>ereactor_slider/slideshow</source_model>
|
13 |
+
</slideshowId>
|
14 |
+
</parameters>
|
15 |
+
</slider_slider>
|
16 |
+
</widgets>
|
app/code/community/Ereactor/Slider/sql/ereactor_slider_setup/install-1.0.0.php
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$installer = $this;
|
3 |
+
$db = $installer->getConnection();
|
4 |
+
|
5 |
+
$slideshowTableName = $installer->getTable('ereactor_slider/slideshow');
|
6 |
+
$slideshowTableExists = $db->showTableStatus($slideshowTableName);
|
7 |
+
|
8 |
+
if ($slideshowTableExists === false) {
|
9 |
+
$slideshowTable = $db->newTable($slideshowTableName)
|
10 |
+
->addColumn('slideshow_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
|
11 |
+
'auto_increment' => true,
|
12 |
+
'unsigned' => true,
|
13 |
+
'identity' => true,
|
14 |
+
'nullable' => false,
|
15 |
+
'primary' => true,
|
16 |
+
), 'Slideshow id')
|
17 |
+
->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array(
|
18 |
+
'nullable' => true,
|
19 |
+
'default' => null,
|
20 |
+
), 'Name')
|
21 |
+
->addColumn('is_published', Varien_Db_Ddl_Table::TYPE_TINYINT, null, array(
|
22 |
+
'unsigned' => true,
|
23 |
+
'nullable' => false,
|
24 |
+
'default' => 1,
|
25 |
+
), 'Is published')
|
26 |
+
->addColumn('type', Varien_Db_Ddl_Table::TYPE_TINYINT, null, array(
|
27 |
+
'unsigned' => true,
|
28 |
+
'nullable' => false,
|
29 |
+
'default' => 0,
|
30 |
+
), 'Type')
|
31 |
+
->addColumn('theme', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array(
|
32 |
+
'nullable' => false,
|
33 |
+
'default' => 'default',
|
34 |
+
), 'Theme')
|
35 |
+
->addColumn('width', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
36 |
+
'unsigned' => true,
|
37 |
+
'nullable' => false,
|
38 |
+
'default' => 600,
|
39 |
+
), 'Width')
|
40 |
+
->addColumn('width_unit', Varien_Db_Ddl_Table::TYPE_TINYINT, null, array(
|
41 |
+
'unsigned' => true,
|
42 |
+
'nullable' => false,
|
43 |
+
'default' => 0,
|
44 |
+
), 'Width unit')
|
45 |
+
->addColumn('height', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
46 |
+
'unsigned' => true,
|
47 |
+
'nullable' => false,
|
48 |
+
'default' => 100,
|
49 |
+
), 'Height')
|
50 |
+
->addColumn('height_unit', Varien_Db_Ddl_Table::TYPE_TINYINT, null, array(
|
51 |
+
'unsigned' => true,
|
52 |
+
'nullable' => false,
|
53 |
+
'default' => 0,
|
54 |
+
), 'Height unit')
|
55 |
+
->addColumn('javascript', Varien_Db_Ddl_Table::TYPE_TEXT, '2M', array(
|
56 |
+
'nullable' => true,
|
57 |
+
'default' => null,
|
58 |
+
), 'Javascript parameters')
|
59 |
+
->addColumn('css', Varien_Db_Ddl_Table::TYPE_TEXT, '2M', array(
|
60 |
+
'nullable' => true,
|
61 |
+
'default' => null,
|
62 |
+
), 'CSS parameters');
|
63 |
+
$db->createTable($slideshowTable);
|
64 |
+
|
65 |
+
// Create the sample slideshow
|
66 |
+
$slideshow = Mage::getModel('ereactor_slider/slideshow');
|
67 |
+
$slideshow->setName('Sample slider');
|
68 |
+
$slideshow->setWidth(685);
|
69 |
+
$slideshow->setHeight(257);
|
70 |
+
$slideshow->setJavascript('{"show_arrows":"1","show_buttons":"1","show_buttons_overlay":"0","pause_on_hover":"1","manual_advance":"0","autoplay_interval":"5000","transition_type":"random","transition_time":"400"}');
|
71 |
+
try{
|
72 |
+
$slideshow->save();
|
73 |
+
$slideshowId = $slideshow->getId();
|
74 |
+
} catch (Exception $e) {
|
75 |
+
$slideshowId = null;
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
$slideTableName = $installer->getTable('ereactor_slider/slide');
|
80 |
+
$slideTableExists = $db->showTableStatus($slideTableName);
|
81 |
+
|
82 |
+
if ($slideTableExists === false) {
|
83 |
+
$slideTable = $db->newTable($slideTableName)
|
84 |
+
->addColumn('slide_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
|
85 |
+
'auto_increment' => true,
|
86 |
+
'unsigned' => true,
|
87 |
+
'identity' => true,
|
88 |
+
'nullable' => false,
|
89 |
+
'primary' => true,
|
90 |
+
), 'Slide id')
|
91 |
+
->addColumn('slideshow_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
|
92 |
+
'unsigned' => true,
|
93 |
+
'nullable' => false,
|
94 |
+
), 'Slideshow id')
|
95 |
+
->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array(
|
96 |
+
'nullable' => true,
|
97 |
+
'default' => null,
|
98 |
+
), 'Name')
|
99 |
+
->addColumn('is_published', Varien_Db_Ddl_Table::TYPE_TINYINT, null, array(
|
100 |
+
'unsigned' => true,
|
101 |
+
'nullable' => false,
|
102 |
+
'default' => 1,
|
103 |
+
), 'Is published')
|
104 |
+
->addColumn('caption', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array(
|
105 |
+
'nullable' => true,
|
106 |
+
'default' => null,
|
107 |
+
), 'Caption')
|
108 |
+
->addColumn('type', Varien_Db_Ddl_Table::TYPE_TINYINT, null, array(
|
109 |
+
'unsigned' => true,
|
110 |
+
'nullable' => false,
|
111 |
+
'default' => 0,
|
112 |
+
), 'Type')
|
113 |
+
->addColumn('content', Varien_Db_Ddl_Table::TYPE_TEXT, '2M', array(
|
114 |
+
'nullable' => true,
|
115 |
+
'default' => null,
|
116 |
+
), 'Content')
|
117 |
+
->addColumn('icon', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array(
|
118 |
+
'nullable' => true,
|
119 |
+
'default' => null,
|
120 |
+
), 'Icon')
|
121 |
+
->addColumn('slide_order', Varien_Db_Ddl_Table::TYPE_TINYINT, null, array(
|
122 |
+
'unsigned' => true,
|
123 |
+
'nullable' => false,
|
124 |
+
'default' => 0
|
125 |
+
), 'Order')
|
126 |
+
->addForeignKey(
|
127 |
+
'FK_SLIDE_RELATION_SLIDESHOW',
|
128 |
+
'slideshow_id',
|
129 |
+
$installer->getTable('ereactor_slider/slideshow'),
|
130 |
+
'slideshow_id',
|
131 |
+
'cascade',
|
132 |
+
'cascade')
|
133 |
+
->addIndex(
|
134 |
+
'IDX_ORDER',
|
135 |
+
array('slideshow_id', 'slide_order')
|
136 |
+
);
|
137 |
+
$db->createTable($slideTable);
|
138 |
+
|
139 |
+
// Create the sample slides if possible
|
140 |
+
if (isset($slideshowId)) {
|
141 |
+
$db->insertArray($slideTableName, array('slide_id', 'slideshow_id', 'type', 'slide_order', 'name', 'caption', 'content'), array(
|
142 |
+
array(
|
143 |
+
1, $slideshowId, Ereactor_Slider_Model_Slide::TYPE_IMAGE, 1,
|
144 |
+
'Woman on beach',
|
145 |
+
'Display large, stunning images anywhere on your website.',
|
146 |
+
'{"image_url":"\/media\/wysiwyg\/\/sample-slideshow\/womanonbeach.jpg","image_link":"","image_target":"_blank","image_follow":"follow","html_html":"","product_id":""}',
|
147 |
+
),
|
148 |
+
array(
|
149 |
+
2, $slideshowId, Ereactor_Slider_Model_Slide::TYPE_IMAGE, 2,
|
150 |
+
'Coffee cup',
|
151 |
+
'You can make the images link to other pages.',
|
152 |
+
'{"image_url":"\/media\/wysiwyg\/sample-slideshow\/coffeecup.jpg","image_link":"https:\/\/en.wikipedia.org\/wiki\/Coffee","image_target":"_blank","image_follow":"nofollow","html_html":"","product_id":""}',
|
153 |
+
),
|
154 |
+
array(
|
155 |
+
3, $slideshowId, Ereactor_Slider_Model_Slide::TYPE_HTML, 3,
|
156 |
+
'Padlock',
|
157 |
+
'And you can still include a caption if you need one.',
|
158 |
+
'{"image_url":"","image_link":"","image_target":"_blank","image_follow":"follow","html_html":"<img src=\"http:\/\/magentoslider.dk\/media\/wysiwyg\/sample-slideshow\/lock.jpg\" alt=\"Padlock\" \/>\n<div style=\"bottom:50px; left:20px; width: 200px; background:rgb(0,0,0); background:rgba(0,0,0,0.8); color:#fff; padding:20px; font-size:20px; line-height: 24px;\">With HTML slides, you can position content in any way you want!<\/div>","product_id":""}',
|
159 |
+
),
|
160 |
+
array(
|
161 |
+
4, $slideshowId, Ereactor_Slider_Model_Slide::TYPE_HTML, 4,
|
162 |
+
'More HTML',
|
163 |
+
'',
|
164 |
+
'{"image_url":"","image_link":"","image_target":"_blank","image_follow":"follow","html_html":"<div style=\"width: 100%; height: 100%; background: #6af;\nbackground: -moz-linear-gradient(-45deg, #6af 0%, #fff 100%);\nbackground: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#6af), color-stop(100%,#fff));\nbackground: -webkit-linear-gradient(-45deg, #6af 0%,#fff 100%);\nbackground: -o-linear-gradient(-45deg, #6af 0%,#fff 100%);\nbackground: -ms-linear-gradient(-45deg, #6af 0%,#fff 100%);\nbackground: linear-gradient(135deg, #6af 0%,#fff 100%);\nfilter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#6af\', endColorstr=\'#fff\',GradientType=1 );\">\n<div style=\"top:15%; left:50%; margin-left:-300px; width:600px; font-size:20px; line-height:24px;\">\nYou can include any HTML elements you want, such as <a href=\"#\">a link<\/a>, <button type=\"button\">a button<\/button>, <input type=\"text\" value=\"Editable form elements\" style=\"width:300px;\" \/>, or even more images.<\/div>\n<div style=\"top: 45%; width:100%; text-align:center;\">\n<img src=\"http:\/\/lorempixel.com\/g\/180\/100\/abstract\" alt=\"Sample image\" style=\"border: 1px solid #000974;\" \/> \n<img src=\"http:\/\/lorempixel.com\/230\/100\/abstract\" alt=\"Sample image\" style=\"border: 1px solid #000974;\" \/> \n<img src=\"http:\/\/lorempixel.com\/g\/200\/100\/abstract\" alt=\"Sample image\" style=\"border: 1px solid #000974;\" \/><\/div>\n<\/div>","product_id":""}',
|
165 |
+
),
|
166 |
+
));
|
167 |
+
}
|
168 |
+
}
|
app/design/adminhtml/default/default/layout/ereactor_slider.xml
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.0.1">
|
3 |
+
<adminhtml_ereactor_slider_index>
|
4 |
+
<reference name="content">
|
5 |
+
<block type="slider/adminhtml_slideshow" name="slideshow" />
|
6 |
+
</reference>
|
7 |
+
</adminhtml_ereactor_slider_index>
|
8 |
+
|
9 |
+
<adminhtml_ereactor_slider_grid>
|
10 |
+
<block type="slider/adminhtml_slideshow_grid" name="root" />
|
11 |
+
</adminhtml_ereactor_slider_grid>
|
12 |
+
|
13 |
+
<adminhtml_ereactor_slider_new>
|
14 |
+
<update handle="adminhtml_slideshow_edit" />
|
15 |
+
</adminhtml_ereactor_slider_new>
|
16 |
+
|
17 |
+
<adminhtml_ereactor_slider_edit>
|
18 |
+
<update handle="editor" />
|
19 |
+
<reference name="head">
|
20 |
+
<action method="addJs"><script>ereactor_slider/jquery-1.9.1.min.js</script></action>
|
21 |
+
<action method="addJs"><script>ereactor_slider/adminhtml/edit-slideshow.min.js</script></action>
|
22 |
+
<action method="addJs"><script>ereactor_slider/jquery.nivo-slider.js</script></action>
|
23 |
+
<action method="addCss"><stylesheet>../../../frontend/base/default/css/ereactor_slider/default.css</stylesheet></action>
|
24 |
+
<action method="addCss"><stylesheet>../../../frontend/base/default/css/ereactor_slider/nivo-slider.css</stylesheet></action>
|
25 |
+
<action method="addCss"><stylesheet>ereactor_slider/style.min.css</stylesheet></action>
|
26 |
+
</reference>
|
27 |
+
<reference name="content">
|
28 |
+
<block type="slider/adminhtml_slideshow_edit" name="slideshow_edit" />
|
29 |
+
</reference>
|
30 |
+
<reference name="left">
|
31 |
+
<block type="slider/adminhtml_slideshow_edit_tabs" name="slideshow_edit_tabs">
|
32 |
+
<block type="slider/adminhtml_slideshow_edit_tab_general" name="slideshow_edit_tab_general" />
|
33 |
+
<block type="slider/adminhtml_slideshow_edit_tab_slides" name="slideshow_edit_tab_slides">
|
34 |
+
<block type="slider/adminhtml_slide_quickadd" name="slide_quickadd" />
|
35 |
+
<block type="slider/adminhtml_slide_batch" name="slide_batch" template="ereactor/slider/slide/batch.phtml"/>
|
36 |
+
<block type="slider/adminhtml_slide_grid" name="slide_grid"/>
|
37 |
+
</block>
|
38 |
+
|
39 |
+
<action method="addTab">
|
40 |
+
<name>general</name>
|
41 |
+
<block>slideshow_edit_tab_general</block>
|
42 |
+
</action>
|
43 |
+
|
44 |
+
<action method="addTab">
|
45 |
+
<name>slides</name>
|
46 |
+
<block>slideshow_edit_tab_slides</block>
|
47 |
+
</action>
|
48 |
+
</block>
|
49 |
+
<block type="slider/adminhtml_slideshow_preview" name="slideshow_preview" template="ereactor/slider/slideshow/preview.phtml"/>
|
50 |
+
</reference>
|
51 |
+
</adminhtml_ereactor_slider_edit>
|
52 |
+
|
53 |
+
<adminhtml_ereactor_slider_slide_grid>
|
54 |
+
<block type="slider/adminhtml_slide_grid" name="root"/>
|
55 |
+
</adminhtml_ereactor_slider_slide_grid>
|
56 |
+
|
57 |
+
<adminhtml_ereactor_slider_slide_preview>
|
58 |
+
<block type="slider/adminhtml_slide_preview" name="root" template="ereactor/slider/slide/preview.phtml"/>
|
59 |
+
</adminhtml_ereactor_slider_slide_preview>
|
60 |
+
|
61 |
+
<adminhtml_ereactor_slider_slide_edit>
|
62 |
+
<block type="core/text_list" name="root">
|
63 |
+
<block type="slider/adminhtml_slide_preview" name="slide_preview" template="ereactor/slider/slide/preview.phtml"/>
|
64 |
+
<block type="slider/adminhtml_slide_quickadd" name="slide_quickedit"/>
|
65 |
+
</block>
|
66 |
+
</adminhtml_ereactor_slider_slide_edit>
|
67 |
+
|
68 |
+
<adminhtml_ereactor_slider_slide_batchaddimagesform>
|
69 |
+
<block type="slider/adminhtml_slide_batch_images" name="root"/>
|
70 |
+
</adminhtml_ereactor_slider_slide_batchaddimagesform>
|
71 |
+
</layout>
|
app/design/adminhtml/default/default/template/ereactor/slider/slide/batch.phtml
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<div id="generateSlides">
|
2 |
+
<?php echo $this->__('Generate many slides at once'); ?>
|
3 |
+
<a class="ereactor-batch-images form-button" href="<?php echo $this->getImagesUrl(); ?>"><?php echo $this->__('From images'); ?></a>
|
4 |
+
</div>
|
app/design/adminhtml/default/default/template/ereactor/slider/slide/preview.phtml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="ereactor-slide-preview nivo-slider-wrapper theme-default">
|
2 |
+
<div class="nivoSlider" style="width: <?php echo $this->getWidth(); ?>; height: <?php echo $this->getHeight(); ?>;">
|
3 |
+
<?php echo $this->getSlide(); ?>
|
4 |
+
</div>
|
5 |
+
</div>
|
6 |
+
<br />
|
app/design/adminhtml/default/default/template/ereactor/slider/slideshow/preview.phtml
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="ereactor-slider-preview" class="nivo-slider-wrapper theme-default">
|
2 |
+
<div id="slider-<?php echo $this->_nameInLayout; ?>" class="nivoSlider" style="width: 200px; height: 75px;">
|
3 |
+
<img src="/media/ereactor_slider/grey-small.gif" alt="Slide" />
|
4 |
+
<img src="/media/ereactor_slider/orange-small.gif" alt="Slide" />
|
5 |
+
<img src="/media/ereactor_slider/grey-small.gif" alt="Slide" />
|
6 |
+
<img src="/media/ereactor_slider/orange-small.gif" alt="Slide" />
|
7 |
+
</div>
|
8 |
+
</div>
|
9 |
+
<script type="text/javascript">
|
10 |
+
jQuery(function() {
|
11 |
+
jQuery('#slider-<?php echo $this->_nameInLayout; ?>').nivoSlider(<?php echo $this->getNivoParams(); ?>);
|
12 |
+
});
|
13 |
+
</script>
|
app/design/frontend/base/default/template/ereactor/slider/slide/html.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<div class="nivo-slide" <?php echo $this->getCaption() ? 'title="' . $this->getCaption() . '"' : ''; ?>><?php echo $this->getInnerHtml(); ?></div>
|
app/design/frontend/base/default/template/ereactor/slider/slide/image.phtml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$caption = $this->getCaption() ? 'title="' . $this->getCaption() . '"' : '';
|
3 |
+
if ($this->getImageLink()) :
|
4 |
+
$target = $this->getTarget() ? ('target="' . $this->getTarget() . '" ') : '';
|
5 |
+
$rel = $this->getFollow() ? ('rel="' . $this->getFollow() . '" ') : '';?>
|
6 |
+
<a href="<?php echo $this->getImageLink(); ?>" <?php echo $target . ' ' . $rel . ' ' . $caption; ?>><img src="<?php echo $this->getImageUrl(); ?>" alt="Slide" /></a>
|
7 |
+
<?php else: ?>
|
8 |
+
<img src="<?php echo $this->getImageUrl(); ?>" alt="Slide" <?php echo $caption; ?> />
|
9 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/ereactor/slider/slideshow.phtml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if ($this->getIncludeScripts()) : ?>
|
2 |
+
<script type="text/javascript" src="/js/ereactor_slider/jquery-1.9.1.min.js"></script>
|
3 |
+
<script type="text/javascript" src="/js/ereactor_slider/jquery.nivo-slider.js"></script>
|
4 |
+
<style>@import url("/skin/frontend/base/default/css/ereactor_slider/default.css")</style>
|
5 |
+
<style>@import url("/skin/frontend/base/default/css/ereactor_slider/nivo-slider.css")</style>
|
6 |
+
<?php endif; ?>
|
7 |
+
|
8 |
+
<div class="nivo-slider-wrapper theme-default">
|
9 |
+
<div id="slider-<?php echo $this->_nameInLayout; ?>" class="nivoSlider" style="<?php echo $this->getSlideshow()->getDimensions(); ?>">
|
10 |
+
<?php foreach ($this->getSlides() as $slide) : ?>
|
11 |
+
<?php echo $slide; ?>
|
12 |
+
<?php endforeach; ?>
|
13 |
+
</div>
|
14 |
+
</div>
|
15 |
+
<script type="text/javascript">
|
16 |
+
jQuery(function() {
|
17 |
+
jQuery('#slider-<?php echo $this->_nameInLayout; ?>').nivoSlider(<?php echo $this->getSlideshow()->getNivoParams(); ?>);
|
18 |
+
});
|
19 |
+
</script>
|
app/etc/modules/Ereactor_Slider.xml
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<config>
|
4 |
+
<modules>
|
5 |
+
<Ereactor_Slider>
|
6 |
+
<active>true</active>
|
7 |
+
<codePool>community</codePool>
|
8 |
+
<depends>
|
9 |
+
<Mage_Cms />
|
10 |
+
</depends>
|
11 |
+
</Ereactor_Slider>
|
12 |
+
</modules>
|
13 |
+
</config>
|
app/locale/en_US/Ereactor_Slider.csv
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"Action","Action"
|
2 |
+
"Actions","Actions"
|
3 |
+
"Add new slide","Add new slide"
|
4 |
+
"Add slide","Add slide"
|
5 |
+
"An error occured while deleting the slide.","An error occured while deleting the slide."
|
6 |
+
"An error occured while deleting the slideshow.","An error occured while deleting the slideshow."
|
7 |
+
"An error occured while moving the slide.","An error occured while moving the slide."
|
8 |
+
"An error occured while saving the slide.","An error occured while saving the slide."
|
9 |
+
"An error occured while saving the slideshow.","An error occured while saving the slideshow."
|
10 |
+
"Are you sure you want to delete this slide?","Are you sure you want to delete this slide?"
|
11 |
+
"Automatic","Automatic"
|
12 |
+
"Cancel","Cancel"
|
13 |
+
"Caption","Caption"
|
14 |
+
"Choose a product","Choose a product"
|
15 |
+
"Choose products","Choose products"
|
16 |
+
"Choose...","Choose..."
|
17 |
+
"Content","Content"
|
18 |
+
"Delete","Delete"
|
19 |
+
"Edit","Edit"
|
20 |
+
"Edit '%s'","Edit '%s'"
|
21 |
+
"Edit slide","Edit slide"
|
22 |
+
"Edit slideshow","Edit slideshow"
|
23 |
+
"Enable keyboard scroll?","Enable keyboard scroll?"
|
24 |
+
"Enable mouse wheel scroll?","Enable mouse wheel scroll?"
|
25 |
+
"E-reactor Slider","E-reactor Slider"
|
26 |
+
"Folder path","Folder path"
|
27 |
+
"For Product and HTML slides, only Slide and Fade are available.","For Product and HTML slides, only Slide and Fade are available."
|
28 |
+
"Found %d %s but could not generate any slides.","Found %d %s but could not generate any slides."
|
29 |
+
"Found %d %s but only %d slides could be created: %s.","Found %d %s but only %d slides could be created: %s."
|
30 |
+
"From images","From images"
|
31 |
+
"From products","From products"
|
32 |
+
"General","General"
|
33 |
+
"Generate","Generate"
|
34 |
+
"Generate many slides at once","Generate many slides at once"
|
35 |
+
"Generate slides from images","Generate slides from images"
|
36 |
+
"Generate slides from products","Generate slides from products"
|
37 |
+
"Height","Height"
|
38 |
+
"Height unit","Height unit"
|
39 |
+
"ID","ID"
|
40 |
+
"Image","Image"
|
41 |
+
"Image link","Image link"
|
42 |
+
"In a new window","In a new window"
|
43 |
+
"In the current window","In the current window"
|
44 |
+
"Link follow","Link follow"
|
45 |
+
"Manage slideshows","Manage slideshows"
|
46 |
+
"Manual","Manual"
|
47 |
+
"miliseconds","miliseconds"
|
48 |
+
"Move","Move"
|
49 |
+
"Name","Name"
|
50 |
+
"New slideshow","New slideshow"
|
51 |
+
"No","No"
|
52 |
+
"Not available if autoplay is disabled.","Not available if autoplay is disabled."
|
53 |
+
"Number of slides","Number of slides"
|
54 |
+
"or","or"
|
55 |
+
"Order","Order"
|
56 |
+
"Pause slideshow on mouseover","Pause slideshow on mouseover"
|
57 |
+
"Play automatically?","Play automatically?"
|
58 |
+
"Product","Product"
|
59 |
+
"Products","Products"
|
60 |
+
"Save","Save"
|
61 |
+
"Save and continue","Save and continue"
|
62 |
+
"Save changes","Save changes"
|
63 |
+
"Should search engines follow the link?","Should search engines follow the link?"
|
64 |
+
"Show navigation arrows","Show navigation arrows"
|
65 |
+
"Show navigation buttons as an overlay?","Show navigation buttons as an overlay?"
|
66 |
+
"Show navigation buttons?","Show navigation buttons?"
|
67 |
+
"Slide %d","Slide %d"
|
68 |
+
"Slide layout","Slide layout"
|
69 |
+
"Slide transition","Slide transition"
|
70 |
+
"Slide transitions","Slide transitions"
|
71 |
+
"Slides","Slides"
|
72 |
+
"Slideshow controls","Slideshow controls"
|
73 |
+
"Slideshow info","Slideshow info"
|
74 |
+
"Slideshows","Slideshows"
|
75 |
+
"Stretch","Stretch"
|
76 |
+
"Successfully generated slides from %d %s: %s.","Successfully generated slides from %d %s: %s."
|
77 |
+
"Text / HTML","Text / HTML"
|
78 |
+
"The path to the folder that contains the images","The path to the folder that contains the images"
|
79 |
+
"The slide has been deleted.","The slide has been deleted."
|
80 |
+
"The slide has been moved.","The slide has been moved."
|
81 |
+
"The slide has been saved.","The slide has been saved."
|
82 |
+
"The slideshow does not exist.","The slideshow does not exist."
|
83 |
+
"The slideshow has been deleted.","The slideshow has been deleted."
|
84 |
+
"The slideshow has been saved.","The slideshow has been saved."
|
85 |
+
"Theme","Theme"
|
86 |
+
"These are the arrows you use to move left/right between slides","These are the arrows you use to move left/right between slides"
|
87 |
+
"These are the buttons you use to jump between slides","These are the buttons you use to jump between slides"
|
88 |
+
"Time between slides","Time between slides"
|
89 |
+
"Title","Title"
|
90 |
+
"Transition easing","Transition easing"
|
91 |
+
"Transition time","Transition time"
|
92 |
+
"Type","Type"
|
93 |
+
"Unable to find the slide.","Unable to find the slide."
|
94 |
+
"Unable to find the slideshow.","Unable to find the slideshow."
|
95 |
+
"Values under 50 miliseconds are ignored.","Values under 50 miliseconds are ignored."
|
96 |
+
""When enabled, the buttons will appear over the slideshow"," when disabled, they will appear below."",""When enabled, the buttons will appear over the slideshow"," when disabled, they will appear below.""
|
97 |
+
"Where to open the link","Where to open the link"
|
98 |
+
"Width","Width"
|
99 |
+
"Width unit","Width unit"
|
100 |
+
"Yes","Yes"
|
js/ereactor_slider/adminhtml/edit-slideshow.js
ADDED
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var EREACTOR = { UTILS : { }, SLIDER : { } };
|
2 |
+
|
3 |
+
(function($) {
|
4 |
+
"use strict";
|
5 |
+
// Slideshow tab
|
6 |
+
$( function() {
|
7 |
+
var $preview = $('#ereactor-slider-preview .nivoSlider');
|
8 |
+
$( '#slideshow_general_stretch_width' ).click( function() {
|
9 |
+
$( '#slideshow_general_width' ).val( 100 );
|
10 |
+
$( '#slideshow_general_width_unit option' ).prop('selected', false).filter('[value="1"]' ).prop('selected', true);
|
11 |
+
});
|
12 |
+
$( '#slideshow_general_autoplay_interval' ).change(function() {
|
13 |
+
$preview.data( 'nivoslider' ).options({ pauseTime : parseInt(this.value, 10) });
|
14 |
+
});
|
15 |
+
$( '#slideshow_general_transition_type' ).change(function() {
|
16 |
+
$preview.data( 'nivoslider' ).options({ effect : this.value });
|
17 |
+
});
|
18 |
+
$( '#slideshow_general_transition_time' ).change(function() {
|
19 |
+
$preview.data( 'nivoslider' ).options({ animSpeed : parseInt(this.value, 10) });
|
20 |
+
});
|
21 |
+
$( '#page_tabs_general_content')
|
22 |
+
.find( 'input[name="pause_on_hover"]' ).change(function() {
|
23 |
+
if( $( this ).is( ':checked' ) ) {
|
24 |
+
$preview.data( 'nivoslider' ).setPauseOnHover(this.value === '1');
|
25 |
+
}
|
26 |
+
}).end()
|
27 |
+
.find( 'input[name="show_arrows"]' ).change(function() {
|
28 |
+
if( $( this ).is( ':checked' ) ) {
|
29 |
+
$( '.nivo-directionNav', $preview ).toggle( this.value === '1' );
|
30 |
+
}
|
31 |
+
}).end()
|
32 |
+
.find( 'input[name="show_buttons"]' ).change(function() {
|
33 |
+
if( $( this ).is( ':checked' ) ) {
|
34 |
+
$( '.nivo-controlNav', $preview.parent() ).toggle( this.value === '1' );
|
35 |
+
}
|
36 |
+
}).end()
|
37 |
+
.find( 'input[name="show_buttons_overlay"]' ).change(function() {
|
38 |
+
if( $( this ).is( ':checked' ) ) {
|
39 |
+
$( '.nivo-controlNav', $preview.parent() ).toggleClass( 'nivo-controlNav-hover', this.value === '1' );
|
40 |
+
}
|
41 |
+
}).end()
|
42 |
+
.find( 'input[name="manual_advance"]' ).change(function() {
|
43 |
+
if( $( this ).is( ':checked' ) ) {
|
44 |
+
$preview.data( 'nivoslider' ).options({ manualAdvance : (this.value === '1') });
|
45 |
+
}
|
46 |
+
}).end();
|
47 |
+
|
48 |
+
// varienGlobalEvents - global variable; used for event listening
|
49 |
+
varienGlobalEvents.attachEventHandler( 'showTab', function( e ) {
|
50 |
+
$('#ereactor-slider-preview').toggle( e.tab.name === 'general' );
|
51 |
+
});
|
52 |
+
});
|
53 |
+
|
54 |
+
// Slides tab
|
55 |
+
// slidesGridJsObject - global variable; it represents the grid of slides
|
56 |
+
$( function() {
|
57 |
+
// Fail early if the slides tab does not exist
|
58 |
+
if( $('#page_tabs_slides_content').length === 0 ) {
|
59 |
+
return;
|
60 |
+
}
|
61 |
+
function saveQuickAdd( $quickAdd ) {
|
62 |
+
EREACTOR.UTILS.ajaxSubmit( $quickAdd, EREACTOR.SLIDER.url.quickAddSave, function() { slideGridJsObject.reload(); } );
|
63 |
+
}
|
64 |
+
|
65 |
+
function registerQuickAdd( $quickAdd ) {
|
66 |
+
$quickAdd = $quickAdd.filter('.entry-edit');
|
67 |
+
|
68 |
+
// Add the save button functionality if we're not in a modal
|
69 |
+
if( $( '[name="slide[slide_id]"]', $quickAdd ).length === 0 ) {
|
70 |
+
$( 'button.save', $quickAdd ).click( function() {
|
71 |
+
saveQuickAdd( $quickAdd );
|
72 |
+
return false;
|
73 |
+
});
|
74 |
+
}
|
75 |
+
|
76 |
+
$quickAdd
|
77 |
+
// Show / hide form fields according to the slide type
|
78 |
+
.find( '[name="slide[type]"]' ).change( function() {
|
79 |
+
var current = '.field-t' + this.value;
|
80 |
+
$quickAdd
|
81 |
+
// Get all the fields
|
82 |
+
.find( '[class*="field-t"]' )
|
83 |
+
// Hide all that aren't the current type
|
84 |
+
.not( current ).closest( 'tr' ).hide().end().end()
|
85 |
+
// Show the current type
|
86 |
+
.filter( current ).closest( 'tr' ).show().end().end().end()
|
87 |
+
// Mark all the images as unselected
|
88 |
+
.find( '.ereactor-slide-type' ).removeClass( 'ereactor-selected' )
|
89 |
+
// Mark the current image as selected
|
90 |
+
.filter( '.ereactor-slide-t' + this.value ).addClass( 'ereactor-selected' );
|
91 |
+
}).change().end()
|
92 |
+
// Change the slide type according to the selected image
|
93 |
+
.find( '.ereactor-slide-type' ).click( function() {
|
94 |
+
$( '[name="slide[type]"]', $quickAdd ).val( $( this ).data( 'value' ) ).change();
|
95 |
+
return false;
|
96 |
+
}).end()
|
97 |
+
// Open the image chooser
|
98 |
+
.find( '.ereactor-image-chooser' ).click( function() {
|
99 |
+
EREACTOR.UTILS.openMediaBrowser( $( this ).prev()[0], EREACTOR.SLIDER.url.imageChooser, EREACTOR.SLIDER.url.imageInsert);
|
100 |
+
return false;
|
101 |
+
}).end()
|
102 |
+
.find( '[class*="field-t"]' ).change( function() {
|
103 |
+
var type = $( '[name="slide[type]"]', $quickAdd ).val();
|
104 |
+
// Check that the main field for our current type is filled
|
105 |
+
if( ( type === 'image' && $( '[name="slide[image_url]"]', $quickAdd ).val() === '' ) ||
|
106 |
+
( type === 'html' && $( '[name="slide[html_html]"]', $quickAdd ).val() === '' ) ) {
|
107 |
+
return;
|
108 |
+
}
|
109 |
+
EREACTOR.UTILS.ajaxSubmit( $quickAdd, EREACTOR.SLIDER.url.slidePreview, function(content){
|
110 |
+
$quickAdd.prevAll().remove().end().before( content.responseText );
|
111 |
+
});
|
112 |
+
}).end();
|
113 |
+
}
|
114 |
+
|
115 |
+
// If needed, displays a confirmation box with the appropriate text
|
116 |
+
function isConfirmed( elem ) {
|
117 |
+
var $elem = $( elem );
|
118 |
+
return !$elem.is( '.ereactor-confirm' ) || window.confirm( $elem.data('confirm') );
|
119 |
+
}
|
120 |
+
|
121 |
+
registerQuickAdd( $( '#page_tabs_slides_content .entry-edit' ) );
|
122 |
+
|
123 |
+
// Callback function that opens the quick edit modal
|
124 |
+
slideGridJsObject.rowClickCallback = function(grid, event) {
|
125 |
+
if( $( event.target ).is( 'td' ) ) {
|
126 |
+
EREACTOR.UTILS.openModal( event.currentTarget.title, registerQuickAdd, saveQuickAdd );
|
127 |
+
}
|
128 |
+
return false;
|
129 |
+
};
|
130 |
+
|
131 |
+
// Handlers for the various actions you can do in the slides grid
|
132 |
+
$( '#slideGrid' )
|
133 |
+
.on( 'click', '.ereactor-ajax-link', function() {
|
134 |
+
var ajaxRequest;
|
135 |
+
if( !isConfirmed( this ) ) {
|
136 |
+
return false;
|
137 |
+
}
|
138 |
+
ajaxRequest = new Ajax.Request(this.href, {
|
139 |
+
method : 'get',
|
140 |
+
onSuccess : function() { slideGridJsObject.reload(); }
|
141 |
+
});
|
142 |
+
return false;
|
143 |
+
})
|
144 |
+
.on( 'click', '.ereactor-ajax-modal', function() {
|
145 |
+
return EREACTOR.UTILS.openModal( this.href, registerQuickAdd, saveQuickAdd );
|
146 |
+
});
|
147 |
+
|
148 |
+
});
|
149 |
+
|
150 |
+
// Slide generation buttons
|
151 |
+
$( function() {
|
152 |
+
// Fail early if the slides tab does not exist
|
153 |
+
if( $('#page_tabs_slides_content').length === 0 ) {
|
154 |
+
return;
|
155 |
+
}
|
156 |
+
|
157 |
+
function submitGenerateForm( $form ) {
|
158 |
+
EREACTOR.UTILS.ajaxSubmit( $form, EREACTOR.SLIDER.url.batchAdd, function() { slideGridJsObject.reload(); } );
|
159 |
+
}
|
160 |
+
|
161 |
+
$( '#generateSlides' )
|
162 |
+
.find( '.ereactor-batch-images' ).click( function() {
|
163 |
+
return EREACTOR.UTILS.openModal( this.href, null, submitGenerateForm );
|
164 |
+
}).end();
|
165 |
+
});
|
166 |
+
|
167 |
+
// Media browser functionality
|
168 |
+
// MediabrowserUtility - global variable; we use it to instantiate a new media browser
|
169 |
+
// MediabrowserInstance - global variable; an instance of a media browser
|
170 |
+
// Windows - global variable; set by a prototype plugin and used to manage Magento's modal windows
|
171 |
+
$( function() {
|
172 |
+
// We don't receive an event when the media browser is loaded so we need to poll for it
|
173 |
+
EREACTOR.UTILS.openMediaBrowser = function( target, loadUrl, submitUrl ) {
|
174 |
+
var loadCheck;
|
175 |
+
MediabrowserUtility.openDialog( loadUrl + '?target_element_id=' + target.id );
|
176 |
+
loadCheck = setInterval( function() {
|
177 |
+
if( MediabrowserInstance ) {
|
178 |
+
// We replace the insertUrl with our own, so that we produce a correct filename
|
179 |
+
MediabrowserInstance.onInsertUrl = submitUrl;
|
180 |
+
clearInterval( loadCheck );
|
181 |
+
}
|
182 |
+
}, 100);
|
183 |
+
};
|
184 |
+
|
185 |
+
// Clear the media browser instance variable when the media browser is closed
|
186 |
+
// Also, fire the change event on the target field so we know it has been updated
|
187 |
+
Windows.addObserver( {
|
188 |
+
'onDestroy' : function( event, window ) {
|
189 |
+
if( window.element.id === MediabrowserUtility.dialogWindow.element.id && MediabrowserInstance ) {
|
190 |
+
var $target = $( '#' + MediabrowserInstance.targetElementId );
|
191 |
+
// At this point the value hasn't been updated yet; we assume it will happen soon
|
192 |
+
setTimeout( function() {
|
193 |
+
$target.change();
|
194 |
+
}, 100);
|
195 |
+
MediabrowserInstance = null;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
});
|
199 |
+
});
|
200 |
+
|
201 |
+
// Form serialization / AJAX submit
|
202 |
+
$( function() {
|
203 |
+
EREACTOR.UTILS.ajaxSubmit = function( $form, url, onSuccess ) {
|
204 |
+
var jsonData = {}, ajaxRequest;
|
205 |
+
$( ':input', $form ).each(function() {
|
206 |
+
jsonData[this.name] = this.value;
|
207 |
+
});
|
208 |
+
ajaxRequest = new Ajax.Request(url, {
|
209 |
+
method : 'post',
|
210 |
+
parameters : jsonData,
|
211 |
+
onSuccess : function( result ) {
|
212 |
+
if( onSuccess ) {
|
213 |
+
onSuccess( result );
|
214 |
+
}
|
215 |
+
}
|
216 |
+
});
|
217 |
+
};
|
218 |
+
});
|
219 |
+
|
220 |
+
// Modal dialogs functionality
|
221 |
+
$( function() {
|
222 |
+
var $container = $( '<div class="ereactor_modal_container"><div class="ereactor_modal_wrapper"></div></div>' ).hide().appendTo( 'body' );
|
223 |
+
EREACTOR.UTILS.openModal = function( url, onSuccess, onSubmit ) {
|
224 |
+
var ajaxRequest = new Ajax.Request( url, {
|
225 |
+
method : 'get',
|
226 |
+
onSuccess : function(result) {
|
227 |
+
var $root = $container.height( $( 'html' ).height() ).show().find( '.ereactor_modal_wrapper' ).html( result.responseText ).children();
|
228 |
+
if( onSuccess ) {
|
229 |
+
onSuccess( $root );
|
230 |
+
}
|
231 |
+
$('.save, .cancel', $root).click(function() {
|
232 |
+
if( $( this ).is('.save') && onSubmit ) {
|
233 |
+
onSubmit( $root );
|
234 |
+
}
|
235 |
+
$container.hide();
|
236 |
+
return false;
|
237 |
+
});
|
238 |
+
}
|
239 |
+
});
|
240 |
+
return false;
|
241 |
+
};
|
242 |
+
});
|
243 |
+
}(jQuery));
|
js/ereactor_slider/adminhtml/edit-slideshow.min.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var EREACTOR={UTILS:{},SLIDER:{}};
|
2 |
+
(function(a){a(function(){var b=a("#ereactor-slider-preview .nivoSlider");a("#slideshow_general_stretch_width").click(function(){a("#slideshow_general_width").val(100);a("#slideshow_general_width_unit option").prop("selected",!1).filter('[value="1"]').prop("selected",!0)});a("#slideshow_general_autoplay_interval").change(function(){b.data("nivoslider").options({pauseTime:parseInt(this.value,10)})});a("#slideshow_general_transition_type").change(function(){b.data("nivoslider").options({effect:this.value})});a("#slideshow_general_transition_time").change(function(){b.data("nivoslider").options({animSpeed:parseInt(this.value,
|
3 |
+
10)})});a("#page_tabs_general_content").find('input[name="pause_on_hover"]').change(function(){a(this).is(":checked")&&b.data("nivoslider").setPauseOnHover("1"===this.value)}).end().find('input[name="show_arrows"]').change(function(){a(this).is(":checked")&&a(".nivo-directionNav",b).toggle("1"===this.value)}).end().find('input[name="show_buttons"]').change(function(){a(this).is(":checked")&&a(".nivo-controlNav",b.parent()).toggle("1"===this.value)}).end().find('input[name="show_buttons_overlay"]').change(function(){a(this).is(":checked")&&
|
4 |
+
a(".nivo-controlNav",b.parent()).toggleClass("nivo-controlNav-hover","1"===this.value)}).end().find('input[name="manual_advance"]').change(function(){a(this).is(":checked")&&b.data("nivoslider").options({manualAdvance:"1"===this.value})}).end();varienGlobalEvents.attachEventHandler("showTab",function(b){a("#ereactor-slider-preview").toggle("general"===b.tab.name)})});a(function(){function b(a){EREACTOR.UTILS.ajaxSubmit(a,EREACTOR.SLIDER.url.quickAddSave,function(){slideGridJsObject.reload()})}function d(c){c=
|
5 |
+
c.filter(".entry-edit");0===a('[name="slide[slide_id]"]',c).length&&a("button.save",c).click(function(){b(c);return!1});c.find('[name="slide[type]"]').change(function(){var a=".field-t"+this.value;c.find('[class*="field-t"]').not(a).closest("tr").hide().end().end().filter(a).closest("tr").show().end().end().end().find(".ereactor-slide-type").removeClass("ereactor-selected").filter(".ereactor-slide-t"+this.value).addClass("ereactor-selected")}).change().end().find(".ereactor-slide-type").click(function(){a('[name="slide[type]"]',
|
6 |
+
c).val(a(this).data("value")).change();return!1}).end().find(".ereactor-image-chooser").click(function(){EREACTOR.UTILS.openMediaBrowser(a(this).prev()[0],EREACTOR.SLIDER.url.imageChooser,EREACTOR.SLIDER.url.imageInsert);return!1}).end().find('[class*="field-t"]').change(function(){var b=a('[name="slide[type]"]',c).val();"image"===b&&""===a('[name="slide[image_url]"]',c).val()||"html"===b&&""===a('[name="slide[html_html]"]',c).val()||EREACTOR.UTILS.ajaxSubmit(c,EREACTOR.SLIDER.url.slidePreview,function(a){c.prevAll().remove().end().before(a.responseText)})}).end()}
|
7 |
+
0!==a("#page_tabs_slides_content").length&&(d(a("#page_tabs_slides_content .entry-edit")),slideGridJsObject.rowClickCallback=function(c,e){a(e.target).is("td")&&EREACTOR.UTILS.openModal(e.currentTarget.title,d,b);return!1},a("#slideGrid").on("click",".ereactor-ajax-link",function(){var b=a(this);if(b.is(".ereactor-confirm")&&!window.confirm(b.data("confirm")))return!1;new Ajax.Request(this.href,{method:"get",onSuccess:function(){slideGridJsObject.reload()}});return!1}).on("click",".ereactor-ajax-modal",
|
8 |
+
function(){return EREACTOR.UTILS.openModal(this.href,d,b)}))});a(function(){function b(a){EREACTOR.UTILS.ajaxSubmit(a,EREACTOR.SLIDER.url.batchAdd,function(){slideGridJsObject.reload()})}0!==a("#page_tabs_slides_content").length&&a("#generateSlides").find(".ereactor-batch-images").click(function(){return EREACTOR.UTILS.openModal(this.href,null,b)}).end()});a(function(){EREACTOR.UTILS.openMediaBrowser=function(a,d,c){var e;MediabrowserUtility.openDialog(d+"?target_element_id="+a.id);e=setInterval(function(){MediabrowserInstance&&
|
9 |
+
(MediabrowserInstance.onInsertUrl=c,clearInterval(e))},100)};Windows.addObserver({onDestroy:function(b,d){if(d.element.id===MediabrowserUtility.dialogWindow.element.id&&MediabrowserInstance){var c=a("#"+MediabrowserInstance.targetElementId);setTimeout(function(){c.change()},100);MediabrowserInstance=null}}})});a(function(){EREACTOR.UTILS.ajaxSubmit=function(b,d,c){var e={};a(":input",b).each(function(){e[this.name]=this.value});new Ajax.Request(d,{method:"post",parameters:e,onSuccess:function(a){c&&
|
10 |
+
c(a)}})}});a(function(){var b=a('<div class="ereactor_modal_container"><div class="ereactor_modal_wrapper"></div></div>').hide().appendTo("body");EREACTOR.UTILS.openModal=function(d,c,e){new Ajax.Request(d,{method:"get",onSuccess:function(d){var f=b.height(a("html").height()).show().find(".ereactor_modal_wrapper").html(d.responseText).children();c&&c(f);a(".save, .cancel",f).click(function(){a(this).is(".save")&&e&&e(f);b.hide();return!1})}});return!1}})})(jQuery);
|
js/ereactor_slider/jquery-1.9.1.min.js
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
|
2 |
+
//@ sourceMappingURL=jquery.min.map
|
3 |
+
*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
|
4 |
+
return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
|
5 |
+
}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.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 contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window);
|
6 |
+
|
7 |
+
jQuery.noConflict();
|
js/ereactor_slider/jquery.nivo-slider.js
ADDED
@@ -0,0 +1,707 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery Nivo Slider v3.2
|
3 |
+
* http://nivo.dev7studios.com
|
4 |
+
*
|
5 |
+
* Copyright 2012, Dev7studios
|
6 |
+
* Free to use and abuse under the MIT license.
|
7 |
+
* http://www.opensource.org/licenses/mit-license.php
|
8 |
+
*
|
9 |
+
* Modified by E-reactor
|
10 |
+
*/
|
11 |
+
|
12 |
+
(function($) {
|
13 |
+
"use strict";
|
14 |
+
var NivoSlider = function(element, options){
|
15 |
+
// Defaults are below
|
16 |
+
var settings = $.extend({}, $.fn.nivoSlider.defaults, options);
|
17 |
+
|
18 |
+
// Useful variables. Play carefully.
|
19 |
+
var vars = {
|
20 |
+
currentSlide: 0,
|
21 |
+
previousSlide: false,
|
22 |
+
currentImage: '',
|
23 |
+
totalSlides: 0,
|
24 |
+
running: false,
|
25 |
+
paused: false,
|
26 |
+
stop: false,
|
27 |
+
controlNavEl: false
|
28 |
+
};
|
29 |
+
|
30 |
+
// Get this slider
|
31 |
+
var slider = $(element);
|
32 |
+
slider.data('nivo:vars', vars).addClass('nivoSlider');
|
33 |
+
|
34 |
+
// Find our slider children
|
35 |
+
var kids = slider.children();
|
36 |
+
kids.each(function() {
|
37 |
+
var child = $(this).hide();
|
38 |
+
var link = '';
|
39 |
+
if(child.is('a')){
|
40 |
+
child.addClass('nivo-imageLink');
|
41 |
+
link = child;
|
42 |
+
child = child.find('img:first');
|
43 |
+
}
|
44 |
+
// Get img width & height
|
45 |
+
//var childWidth = (childWidth === 0) ? child.attr('width') : child.width(),
|
46 |
+
// childHeight = (childHeight === 0) ? child.attr('height') : child.height();
|
47 |
+
|
48 |
+
/*if(link !== ''){
|
49 |
+
link.css('display','none');
|
50 |
+
}*/
|
51 |
+
++vars.totalSlides;
|
52 |
+
});
|
53 |
+
$( kids[0] ).show();
|
54 |
+
|
55 |
+
// If randomStart
|
56 |
+
if(settings.randomStart){
|
57 |
+
settings.startSlide = Math.floor(Math.random() * vars.totalSlides);
|
58 |
+
}
|
59 |
+
|
60 |
+
// Set startSlide
|
61 |
+
if(settings.startSlide > 0){
|
62 |
+
if(settings.startSlide >= vars.totalSlides) { settings.startSlide = vars.totalSlides - 1; }
|
63 |
+
vars.currentSlide = settings.startSlide;
|
64 |
+
}
|
65 |
+
|
66 |
+
// Get initial image
|
67 |
+
if($(kids[vars.currentSlide]).is('img')){
|
68 |
+
vars.currentImage = $(kids[vars.currentSlide]);
|
69 |
+
} else {
|
70 |
+
vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
|
71 |
+
}
|
72 |
+
|
73 |
+
// Show initial link
|
74 |
+
if($(kids[vars.currentSlide]).is('a')){
|
75 |
+
$(kids[vars.currentSlide]).css('display','block');
|
76 |
+
}
|
77 |
+
|
78 |
+
// Set first background
|
79 |
+
var sliderImg = $('<img/>').addClass('nivo-main-image');
|
80 |
+
sliderImg.attr('src', vars.currentImage.attr('src')).show();
|
81 |
+
slider.append(sliderImg);
|
82 |
+
|
83 |
+
// Detect Window Resize
|
84 |
+
$(window).resize(function() {
|
85 |
+
slider.children('img').width(slider.width());
|
86 |
+
sliderImg.attr('src', vars.currentImage.attr('src'));
|
87 |
+
sliderImg.stop().height('auto');
|
88 |
+
$('.nivo-slice').remove();
|
89 |
+
$('.nivo-box').remove();
|
90 |
+
});
|
91 |
+
|
92 |
+
//Create caption
|
93 |
+
slider.append($('<div class="nivo-caption"></div>'));
|
94 |
+
|
95 |
+
// Process caption function
|
96 |
+
var processCaption = function(settings){
|
97 |
+
var nivoCaption = $('.nivo-caption', slider);
|
98 |
+
var $currentSlide = $(kids[vars.currentSlide]);
|
99 |
+
if($currentSlide.attr('title') !== '' && $currentSlide.attr('title') !== undefined){
|
100 |
+
var title = $currentSlide.attr('title');
|
101 |
+
if( title.substr(0,1) === '#' ) {
|
102 |
+
title = $(title).html();
|
103 |
+
}
|
104 |
+
if(nivoCaption.css('display') === 'block'){
|
105 |
+
setTimeout(function(){
|
106 |
+
nivoCaption.html(title);
|
107 |
+
}, settings.animSpeed);
|
108 |
+
} else {
|
109 |
+
nivoCaption.html(title);
|
110 |
+
nivoCaption.stop().fadeIn(settings.animSpeed);
|
111 |
+
}
|
112 |
+
} else {
|
113 |
+
nivoCaption.stop().fadeOut(settings.animSpeed);
|
114 |
+
}
|
115 |
+
};
|
116 |
+
|
117 |
+
//Process initial caption
|
118 |
+
processCaption(settings);
|
119 |
+
|
120 |
+
// In the words of Super Mario "let's a go!"
|
121 |
+
var timer = 0;
|
122 |
+
if(!settings.manualAdvance && kids.length > 1){
|
123 |
+
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
|
124 |
+
}
|
125 |
+
|
126 |
+
// Add Direction nav
|
127 |
+
if(settings.directionNav){
|
128 |
+
slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+ settings.prevText +'</a><a class="nivo-nextNav">'+ settings.nextText +'</a></div>');
|
129 |
+
|
130 |
+
$(slider).on('click', 'a.nivo-prevNav', function(){
|
131 |
+
if(vars.running) { return false; }
|
132 |
+
clearInterval(timer);
|
133 |
+
timer = '';
|
134 |
+
vars.previousSlide = vars.currentSlide--;
|
135 |
+
nivoRun(slider, kids, settings, 'prev');
|
136 |
+
});
|
137 |
+
|
138 |
+
$(slider).on('click', 'a.nivo-nextNav', function(){
|
139 |
+
if(vars.running) { return false; }
|
140 |
+
clearInterval(timer);
|
141 |
+
timer = '';
|
142 |
+
vars.previousSlide = vars.currentSlide++;
|
143 |
+
nivoRun(slider, kids, settings, 'next');
|
144 |
+
});
|
145 |
+
}
|
146 |
+
|
147 |
+
// Add Control nav
|
148 |
+
if(settings.controlNav){
|
149 |
+
vars.controlNavEl = $('<div class="nivo-controlNav"></div>');
|
150 |
+
if( settings.controlNavClass !== false ) {
|
151 |
+
vars.controlNavEl.addClass( settings.controlNavClass );
|
152 |
+
}
|
153 |
+
slider.after(vars.controlNavEl);
|
154 |
+
for(var i = 0; i < kids.length; i++){
|
155 |
+
if(settings.controlNavThumbs){
|
156 |
+
vars.controlNavEl.addClass('nivo-thumbs-enabled');
|
157 |
+
var child = kids.eq(i);
|
158 |
+
if(!child.is('img')){
|
159 |
+
child = child.find('img:first');
|
160 |
+
}
|
161 |
+
if(child.attr('data-thumb')) vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('data-thumb') +'" alt="" /></a>');
|
162 |
+
} else {
|
163 |
+
vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'">'+ (i + 1) +'</a>');
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
//Set initial active link
|
168 |
+
$('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active');
|
169 |
+
|
170 |
+
$('a', vars.controlNavEl).bind('click', function(){
|
171 |
+
if(vars.running) return false;
|
172 |
+
if($(this).hasClass('active')) return false;
|
173 |
+
clearInterval(timer);
|
174 |
+
timer = '';
|
175 |
+
sliderImg.attr('src', vars.currentImage.attr('src'));
|
176 |
+
vars.previousSlide = vars.currentSlide;
|
177 |
+
vars.currentSlide = $(this).attr('rel');
|
178 |
+
nivoRun(slider, kids, settings, 'control');
|
179 |
+
});
|
180 |
+
}
|
181 |
+
|
182 |
+
// Pause / Resume
|
183 |
+
this.pause = function() {
|
184 |
+
vars.paused = true;
|
185 |
+
clearInterval(timer);
|
186 |
+
timer = '';
|
187 |
+
};
|
188 |
+
|
189 |
+
this.resume = function() {
|
190 |
+
vars.paused = false;
|
191 |
+
// Restart the timer
|
192 |
+
if(timer === '' && !settings.manualAdvance){
|
193 |
+
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
|
194 |
+
}
|
195 |
+
};
|
196 |
+
|
197 |
+
this.setPauseOnHover = function(pauseOnHover) {
|
198 |
+
if( settings.pauseOnHover === pauseOnHover ) {
|
199 |
+
return;
|
200 |
+
}
|
201 |
+
if( pauseOnHover ) {
|
202 |
+
slider.hover( this.pause, this.resume );
|
203 |
+
} else {
|
204 |
+
slider.off( { 'mouseenter' : this.pause, 'mouseleave' : this.resume } );
|
205 |
+
}
|
206 |
+
settings.pauseOnHover = pauseOnHover;
|
207 |
+
};
|
208 |
+
|
209 |
+
//For pauseOnHover setting
|
210 |
+
if(settings.pauseOnHover){
|
211 |
+
slider.hover(this.pause, this.resume);
|
212 |
+
}
|
213 |
+
|
214 |
+
// Event when Animation finishes
|
215 |
+
slider.bind('nivo:animFinished', function(){
|
216 |
+
sliderImg.attr('src', vars.currentImage.attr('src'));
|
217 |
+
vars.running = false;
|
218 |
+
// Hide child links
|
219 |
+
/*$(kids).each(function(){
|
220 |
+
if($(this).is('a')){
|
221 |
+
$(this).css('display','none');
|
222 |
+
}
|
223 |
+
});*/
|
224 |
+
// Show current link
|
225 |
+
/*if($(kids[vars.currentSlide]).is('a')){
|
226 |
+
$(kids[vars.currentSlide]).css('display','block');
|
227 |
+
}*/
|
228 |
+
if(vars.previousSlide !== false ) {
|
229 |
+
$( kids[vars.previousSlide] ).hide();
|
230 |
+
}
|
231 |
+
$( kids[vars.currentSlide] ).show();
|
232 |
+
|
233 |
+
// Remove any slices from last transition
|
234 |
+
$('.nivo-slice', slider).remove();
|
235 |
+
|
236 |
+
// Remove any boxes from last transition
|
237 |
+
$('.nivo-box', slider).remove();
|
238 |
+
|
239 |
+
// Restart the timer
|
240 |
+
if(timer === '' && !vars.paused && !settings.manualAdvance){
|
241 |
+
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
|
242 |
+
}
|
243 |
+
// Trigger the afterChange callback
|
244 |
+
settings.afterChange.call(this);
|
245 |
+
});
|
246 |
+
|
247 |
+
// Add slices for slice animations
|
248 |
+
var createSlices = function(slider, settings, vars) {
|
249 |
+
//if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block');
|
250 |
+
//$('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show();
|
251 |
+
var sliceHeight = ($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().is('a')) ? $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().height() : $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height();
|
252 |
+
|
253 |
+
for(var i = 0; i < settings.slices; i++){
|
254 |
+
var sliceWidth = Math.round(slider.width()/settings.slices);
|
255 |
+
|
256 |
+
if(i === settings.slices-1){
|
257 |
+
slider.append(
|
258 |
+
$('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0; left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({
|
259 |
+
left:(sliceWidth*i)+'px',
|
260 |
+
width:(slider.width()-(sliceWidth*i))+'px',
|
261 |
+
height:sliceHeight+'px',
|
262 |
+
opacity:'0',
|
263 |
+
overflow:'hidden'
|
264 |
+
})
|
265 |
+
);
|
266 |
+
} else {
|
267 |
+
slider.append(
|
268 |
+
$('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0; left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({
|
269 |
+
left:(sliceWidth*i)+'px',
|
270 |
+
width:sliceWidth+'px',
|
271 |
+
height:sliceHeight+'px',
|
272 |
+
opacity:'0',
|
273 |
+
overflow:'hidden'
|
274 |
+
})
|
275 |
+
);
|
276 |
+
}
|
277 |
+
}
|
278 |
+
|
279 |
+
$('.nivo-slice', slider).height(sliceHeight);
|
280 |
+
sliderImg.stop().animate({
|
281 |
+
height: $(vars.currentImage).height()
|
282 |
+
}, settings.animSpeed);
|
283 |
+
};
|
284 |
+
|
285 |
+
// Add boxes for box animations
|
286 |
+
var createBoxes = function(slider, settings, vars){
|
287 |
+
//if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block');
|
288 |
+
//$('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show();
|
289 |
+
var boxWidth = Math.round(slider.width()/settings.boxCols),
|
290 |
+
boxHeight = Math.round($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height() / settings.boxRows);
|
291 |
+
|
292 |
+
|
293 |
+
for(var rows = 0; rows < settings.boxRows; rows++){
|
294 |
+
for(var cols = 0; cols < settings.boxCols; cols++){
|
295 |
+
if(cols === settings.boxCols-1){
|
296 |
+
slider.append(
|
297 |
+
$('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({
|
298 |
+
opacity:0,
|
299 |
+
left:(boxWidth*cols)+'px',
|
300 |
+
top:(boxHeight*rows)+'px',
|
301 |
+
width:(slider.width()-(boxWidth*cols))+'px'
|
302 |
+
|
303 |
+
})
|
304 |
+
);
|
305 |
+
$('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px');
|
306 |
+
} else {
|
307 |
+
slider.append(
|
308 |
+
$('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({
|
309 |
+
opacity:0,
|
310 |
+
left:(boxWidth*cols)+'px',
|
311 |
+
top:(boxHeight*rows)+'px',
|
312 |
+
width:boxWidth+'px'
|
313 |
+
})
|
314 |
+
);
|
315 |
+
$('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px');
|
316 |
+
}
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
sliderImg.stop().animate({
|
321 |
+
height: $(vars.currentImage).height()
|
322 |
+
}, settings.animSpeed);
|
323 |
+
};
|
324 |
+
|
325 |
+
// Private run method
|
326 |
+
var nivoRun = function(slider, kids, settings, nudge){
|
327 |
+
// Get our vars
|
328 |
+
var vars = slider.data('nivo:vars'),
|
329 |
+
$currentSlide;
|
330 |
+
|
331 |
+
// Trigger the lastSlide callback
|
332 |
+
if(vars && (vars.currentSlide === vars.totalSlides - 1)){
|
333 |
+
settings.lastSlide.call(this);
|
334 |
+
}
|
335 |
+
|
336 |
+
// Stop
|
337 |
+
if((!vars || vars.stop) && !nudge) { return false; }
|
338 |
+
|
339 |
+
// Trigger the beforeChange callback
|
340 |
+
settings.beforeChange.call(this);
|
341 |
+
|
342 |
+
// Set current background before change
|
343 |
+
if(!nudge){
|
344 |
+
sliderImg.attr('src', vars.currentImage.attr('src'));
|
345 |
+
} else {
|
346 |
+
if(nudge === 'prev'){
|
347 |
+
sliderImg.attr('src', vars.currentImage.attr('src'));
|
348 |
+
}
|
349 |
+
if(nudge === 'next'){
|
350 |
+
sliderImg.attr('src', vars.currentImage.attr('src'));
|
351 |
+
}
|
352 |
+
}
|
353 |
+
|
354 |
+
if( ! nudge ) {
|
355 |
+
vars.previousSlide = vars.currentSlide;
|
356 |
+
vars.currentSlide++;
|
357 |
+
}
|
358 |
+
// Trigger the slideshowEnd callback
|
359 |
+
if(vars.currentSlide === vars.totalSlides){
|
360 |
+
vars.currentSlide = 0;
|
361 |
+
settings.slideshowEnd.call(this);
|
362 |
+
}
|
363 |
+
if(vars.currentSlide < 0) { vars.currentSlide = (vars.totalSlides - 1); }
|
364 |
+
|
365 |
+
$currentSlide = $(kids[vars.currentSlide]);
|
366 |
+
|
367 |
+
// Set vars.currentImage
|
368 |
+
if($currentSlide.is('img')){
|
369 |
+
vars.currentImage = $currentSlide;
|
370 |
+
} else {
|
371 |
+
vars.currentImage = $currentSlide.find('img:first');
|
372 |
+
}
|
373 |
+
|
374 |
+
// Set active links
|
375 |
+
if(settings.controlNav){
|
376 |
+
$('a', vars.controlNavEl).removeClass('active');
|
377 |
+
$('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active');
|
378 |
+
}
|
379 |
+
|
380 |
+
// Process caption
|
381 |
+
processCaption(settings);
|
382 |
+
|
383 |
+
var currentEffect = settings.effect,
|
384 |
+
anims = '';
|
385 |
+
|
386 |
+
// Generate random effect
|
387 |
+
if(settings.effect === 'random'){
|
388 |
+
anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade',
|
389 |
+
'boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse');
|
390 |
+
currentEffect = anims[Math.floor(Math.random()*(anims.length + 1))];
|
391 |
+
if(currentEffect === undefined) { currentEffect = 'fade'; }
|
392 |
+
}
|
393 |
+
|
394 |
+
// Run random effect from specified set (eg: effect:'fold,fade')
|
395 |
+
if(settings.effect.indexOf(',') !== -1){
|
396 |
+
anims = settings.effect.split(',');
|
397 |
+
currentEffect = anims[Math.floor(Math.random()*(anims.length))];
|
398 |
+
if(currentEffect === undefined) { currentEffect = 'fade'; }
|
399 |
+
}
|
400 |
+
|
401 |
+
// Custom transition as defined by "data-transition" attribute
|
402 |
+
if(vars.currentImage.attr('data-transition')){
|
403 |
+
currentEffect = vars.currentImage.attr('data-transition');
|
404 |
+
}
|
405 |
+
|
406 |
+
// For HTML slides we can only have sliding or fading as an effect
|
407 |
+
if($currentSlide.is('div') && currentEffect != 'fade' && currentEffect.indexOf('slideIn') !== 0) {
|
408 |
+
currentEffect = 'fade';
|
409 |
+
}
|
410 |
+
|
411 |
+
// Run effects
|
412 |
+
vars.running = true;
|
413 |
+
var timeBuff = 0,
|
414 |
+
i = 0,
|
415 |
+
slices = '',
|
416 |
+
firstSlice = '',
|
417 |
+
totalBoxes = '',
|
418 |
+
boxes = '';
|
419 |
+
|
420 |
+
if(currentEffect === 'sliceDown' || currentEffect === 'sliceDownRight' || currentEffect === 'sliceDownLeft'){
|
421 |
+
createSlices(slider, settings, vars);
|
422 |
+
timeBuff = 0;
|
423 |
+
i = 0;
|
424 |
+
slices = $('.nivo-slice', slider);
|
425 |
+
if(currentEffect === 'sliceDownLeft') { slices = $('.nivo-slice', slider).reverse(); }
|
426 |
+
|
427 |
+
slices.each(function(){
|
428 |
+
var slice = $(this);
|
429 |
+
slice.css({ 'top': '0px' });
|
430 |
+
if(i === settings.slices-1){
|
431 |
+
setTimeout(function(){
|
432 |
+
slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
433 |
+
}, (100 + timeBuff));
|
434 |
+
} else {
|
435 |
+
setTimeout(function(){
|
436 |
+
slice.animate({opacity:'1.0' }, settings.animSpeed);
|
437 |
+
}, (100 + timeBuff));
|
438 |
+
}
|
439 |
+
timeBuff += 50;
|
440 |
+
i++;
|
441 |
+
});
|
442 |
+
} else if(currentEffect === 'sliceUp' || currentEffect === 'sliceUpRight' || currentEffect === 'sliceUpLeft'){
|
443 |
+
createSlices(slider, settings, vars);
|
444 |
+
timeBuff = 0;
|
445 |
+
i = 0;
|
446 |
+
slices = $('.nivo-slice', slider);
|
447 |
+
if(currentEffect === 'sliceUpLeft') { slices = $('.nivo-slice', slider).reverse(); }
|
448 |
+
|
449 |
+
slices.each(function(){
|
450 |
+
var slice = $(this);
|
451 |
+
slice.css({ 'bottom': '0px' });
|
452 |
+
if(i === settings.slices-1){
|
453 |
+
setTimeout(function(){
|
454 |
+
slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
455 |
+
}, (100 + timeBuff));
|
456 |
+
} else {
|
457 |
+
setTimeout(function(){
|
458 |
+
slice.animate({opacity:'1.0' }, settings.animSpeed);
|
459 |
+
}, (100 + timeBuff));
|
460 |
+
}
|
461 |
+
timeBuff += 50;
|
462 |
+
i++;
|
463 |
+
});
|
464 |
+
} else if(currentEffect === 'sliceUpDown' || currentEffect === 'sliceUpDownRight' || currentEffect === 'sliceUpDownLeft'){
|
465 |
+
createSlices(slider, settings, vars);
|
466 |
+
timeBuff = 0;
|
467 |
+
i = 0;
|
468 |
+
var v = 0;
|
469 |
+
slices = $('.nivo-slice', slider);
|
470 |
+
if(currentEffect === 'sliceUpDownLeft') { slices = $('.nivo-slice', slider).reverse(); }
|
471 |
+
|
472 |
+
slices.each(function(){
|
473 |
+
var slice = $(this);
|
474 |
+
if(i === 0){
|
475 |
+
slice.css('top','0px');
|
476 |
+
i++;
|
477 |
+
} else {
|
478 |
+
slice.css('bottom','0px');
|
479 |
+
i = 0;
|
480 |
+
}
|
481 |
+
|
482 |
+
if(v === settings.slices-1){
|
483 |
+
setTimeout(function(){
|
484 |
+
slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
485 |
+
}, (100 + timeBuff));
|
486 |
+
} else {
|
487 |
+
setTimeout(function(){
|
488 |
+
slice.animate({opacity:'1.0' }, settings.animSpeed);
|
489 |
+
}, (100 + timeBuff));
|
490 |
+
}
|
491 |
+
timeBuff += 50;
|
492 |
+
v++;
|
493 |
+
});
|
494 |
+
} else if(currentEffect === 'fold'){
|
495 |
+
createSlices(slider, settings, vars);
|
496 |
+
timeBuff = 0;
|
497 |
+
i = 0;
|
498 |
+
|
499 |
+
$('.nivo-slice', slider).each(function(){
|
500 |
+
var slice = $(this);
|
501 |
+
var origWidth = slice.width();
|
502 |
+
slice.css({ top:'0px', width:'0px' });
|
503 |
+
if(i === settings.slices-1){
|
504 |
+
setTimeout(function(){
|
505 |
+
slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
506 |
+
}, (100 + timeBuff));
|
507 |
+
} else {
|
508 |
+
setTimeout(function(){
|
509 |
+
slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
|
510 |
+
}, (100 + timeBuff));
|
511 |
+
}
|
512 |
+
timeBuff += 50;
|
513 |
+
i++;
|
514 |
+
});
|
515 |
+
} else if(currentEffect === 'fade') {
|
516 |
+
$currentSlide.show().css( 'z-index', 50 ).css( 'opacity', '0.0' )
|
517 |
+
.animate( { opacity: '1.0' }, (settings.animSpeed*2), '', function() {
|
518 |
+
$currentSlide.css('z-index', '');
|
519 |
+
slider.trigger('nivo:animFinished');
|
520 |
+
});
|
521 |
+
} else if( currentEffect.indexOf('slideIn') === 0 ) {
|
522 |
+
var direction = 'left',
|
523 |
+
sign = '',
|
524 |
+
animation = {};
|
525 |
+
|
526 |
+
switch( currentEffect ) {
|
527 |
+
case 'slideInLeft' :
|
528 |
+
break;
|
529 |
+
case 'slideInRight' :
|
530 |
+
sign = '-';
|
531 |
+
break;
|
532 |
+
case 'slideInTop' :
|
533 |
+
direction = 'top';
|
534 |
+
sign = '-';
|
535 |
+
break;
|
536 |
+
case 'slideInBottom' :
|
537 |
+
direction = 'top';
|
538 |
+
break;
|
539 |
+
}
|
540 |
+
animation[direction] = 0;
|
541 |
+
$currentSlide.show().css( 'z-index', 50 ).css( direction, sign + '100%' )
|
542 |
+
.animate( animation, (settings.animSpeed*2), '', function() {
|
543 |
+
$currentSlide.css('z-index', '');
|
544 |
+
slider.trigger('nivo:animFinished');
|
545 |
+
});
|
546 |
+
} else if(currentEffect === 'boxRandom'){
|
547 |
+
createBoxes(slider, settings, vars);
|
548 |
+
|
549 |
+
totalBoxes = settings.boxCols * settings.boxRows;
|
550 |
+
i = 0;
|
551 |
+
timeBuff = 0;
|
552 |
+
|
553 |
+
boxes = shuffle($('.nivo-box', slider));
|
554 |
+
boxes.each(function(){
|
555 |
+
var box = $(this);
|
556 |
+
if(i === totalBoxes-1){
|
557 |
+
setTimeout(function(){
|
558 |
+
box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
559 |
+
}, (100 + timeBuff));
|
560 |
+
} else {
|
561 |
+
setTimeout(function(){
|
562 |
+
box.animate({ opacity:'1' }, settings.animSpeed);
|
563 |
+
}, (100 + timeBuff));
|
564 |
+
}
|
565 |
+
timeBuff += 20;
|
566 |
+
i++;
|
567 |
+
});
|
568 |
+
} else if(currentEffect === 'boxRain' || currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
|
569 |
+
createBoxes(slider, settings, vars);
|
570 |
+
|
571 |
+
totalBoxes = settings.boxCols * settings.boxRows;
|
572 |
+
i = 0;
|
573 |
+
timeBuff = 0;
|
574 |
+
|
575 |
+
// Split boxes into 2D array
|
576 |
+
var rowIndex = 0;
|
577 |
+
var colIndex = 0;
|
578 |
+
var box2Darr = [];
|
579 |
+
box2Darr[rowIndex] = [];
|
580 |
+
boxes = $('.nivo-box', slider);
|
581 |
+
if(currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrowReverse'){
|
582 |
+
boxes = $('.nivo-box', slider).reverse();
|
583 |
+
}
|
584 |
+
boxes.each(function(){
|
585 |
+
box2Darr[rowIndex][colIndex] = $(this);
|
586 |
+
colIndex++;
|
587 |
+
if(colIndex === settings.boxCols){
|
588 |
+
rowIndex++;
|
589 |
+
colIndex = 0;
|
590 |
+
box2Darr[rowIndex] = [];
|
591 |
+
}
|
592 |
+
});
|
593 |
+
|
594 |
+
// Run animation
|
595 |
+
for(var cols = 0; cols < (settings.boxCols * 2); cols++){
|
596 |
+
var prevCol = cols;
|
597 |
+
for(var rows = 0; rows < settings.boxRows; rows++){
|
598 |
+
if(prevCol >= 0 && prevCol < settings.boxCols){
|
599 |
+
/* Due to some weird JS bug with loop vars
|
600 |
+
being used in setTimeout, this is wrapped
|
601 |
+
with an anonymous function call */
|
602 |
+
(function(row, col, time, i, totalBoxes) {
|
603 |
+
var box = $(box2Darr[row][col]);
|
604 |
+
var w = box.width();
|
605 |
+
var h = box.height();
|
606 |
+
if(currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
|
607 |
+
box.width(0).height(0);
|
608 |
+
}
|
609 |
+
if(i === totalBoxes-1){
|
610 |
+
setTimeout(function(){
|
611 |
+
box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('nivo:animFinished'); });
|
612 |
+
}, (100 + time));
|
613 |
+
} else {
|
614 |
+
setTimeout(function(){
|
615 |
+
box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3);
|
616 |
+
}, (100 + time));
|
617 |
+
}
|
618 |
+
})(rows, prevCol, timeBuff, i, totalBoxes);
|
619 |
+
i++;
|
620 |
+
}
|
621 |
+
prevCol--;
|
622 |
+
}
|
623 |
+
timeBuff += 100;
|
624 |
+
}
|
625 |
+
}
|
626 |
+
};
|
627 |
+
|
628 |
+
// Shuffle an array
|
629 |
+
var shuffle = function(arr){
|
630 |
+
for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i, 10), x = arr[--i], arr[i] = arr[j], arr[j] = x) {}
|
631 |
+
return arr;
|
632 |
+
};
|
633 |
+
|
634 |
+
// For debugging
|
635 |
+
var trace = function(msg){
|
636 |
+
if(this.console && typeof console.log !== 'undefined') { console.log(msg); }
|
637 |
+
};
|
638 |
+
|
639 |
+
// Start / Stop
|
640 |
+
this.stop = function(){
|
641 |
+
if(!$(element).data('nivo:vars').stop){
|
642 |
+
$(element).data('nivo:vars').stop = true;
|
643 |
+
trace('Stop Slider');
|
644 |
+
}
|
645 |
+
};
|
646 |
+
|
647 |
+
this.start = function(){
|
648 |
+
if($(element).data('nivo:vars').stop){
|
649 |
+
$(element).data('nivo:vars').stop = false;
|
650 |
+
trace('Start Slider');
|
651 |
+
}
|
652 |
+
};
|
653 |
+
|
654 |
+
this.options = function(opt) {
|
655 |
+
$.extend(settings, opt);
|
656 |
+
this.pause();
|
657 |
+
this.resume();
|
658 |
+
};
|
659 |
+
|
660 |
+
// Trigger the afterLoad callback
|
661 |
+
settings.afterLoad.call(this);
|
662 |
+
|
663 |
+
return this;
|
664 |
+
};
|
665 |
+
|
666 |
+
$.fn.nivoSlider = function(options) {
|
667 |
+
return this.each(function(key, value){
|
668 |
+
var element = $(this);
|
669 |
+
// Return early if this element already has a plugin instance
|
670 |
+
if (element.data('nivoslider')) { return element.data('nivoslider'); }
|
671 |
+
// Pass options to plugin constructor
|
672 |
+
var nivoslider = new NivoSlider(this, options);
|
673 |
+
// Store plugin object in this element's data
|
674 |
+
element.data('nivoslider', nivoslider);
|
675 |
+
});
|
676 |
+
};
|
677 |
+
|
678 |
+
//Default settings
|
679 |
+
$.fn.nivoSlider.defaults = {
|
680 |
+
effect: 'random',
|
681 |
+
slices: 15,
|
682 |
+
boxCols: 8,
|
683 |
+
boxRows: 4,
|
684 |
+
animSpeed: 500,
|
685 |
+
pauseTime: 3000,
|
686 |
+
startSlide: 0,
|
687 |
+
directionNav: true,
|
688 |
+
controlNav: true,
|
689 |
+
controlNavThumbs: false,
|
690 |
+
controlNavClass : false,
|
691 |
+
pauseOnHover: true,
|
692 |
+
manualAdvance: false,
|
693 |
+
prevText: 'Prev',
|
694 |
+
nextText: 'Next',
|
695 |
+
randomStart: false,
|
696 |
+
beforeChange: function(){},
|
697 |
+
afterChange: function(){},
|
698 |
+
slideshowEnd: function(){},
|
699 |
+
lastSlide: function(){},
|
700 |
+
afterLoad: function(){}
|
701 |
+
};
|
702 |
+
|
703 |
+
$.fn.reverse = function() {
|
704 |
+
return this.pushStack(this.get().reverse(), arguments);
|
705 |
+
};
|
706 |
+
|
707 |
+
}(jQuery));
|
media/ereactor_slider/.thumbs/ereactor_slider/batch/nemo.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/batch/up.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/black-small.gif
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/grey-small.gif
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/nemo.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/orange-small.gif
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/toystory-small.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/toystory.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/up.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/walle-small.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/walle.jpg
ADDED
Binary file
|
media/ereactor_slider/.thumbs/ereactor_slider/white-small.gif
ADDED
Binary file
|
media/ereactor_slider/black-small.gif
ADDED
Binary file
|
media/ereactor_slider/grey-small.gif
ADDED
Binary file
|
media/ereactor_slider/orange-small.gif
ADDED
Binary file
|
media/ereactor_slider/white-small.gif
ADDED
Binary file
|
media/wysiwyg/sample-slideshow/coffeecup.jpg
ADDED
Binary file
|
media/wysiwyg/sample-slideshow/lock.jpg
ADDED
Binary file
|
media/wysiwyg/sample-slideshow/womanonbeach.jpg
ADDED
Binary file
|
package.xml
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Ereactor_Slider</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://opensource.org/licenses/GPL-3.0">GPL</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Create a slideshow featuring Images or HTML and display it as a widget anywhere in your store.</summary>
|
10 |
+
<description>This extension allows you to create slideshows featuring image banners (promotional campaigns, for example), or custom HTML code. Since the slideshows are widgets, you can place them anywhere on your site - in static blocks, CMS pages or other areas in your template.
|
11 |
+

|
12 |
+
Features
|
13 |
+
- Customize the dimensions and handling of your slideshow
|
14 |
+
- Choose from a large number of slide transitions
|
15 |
+
- 2 kinds of slides (image and HTML) that can used together in the same slideshow
|
16 |
+
- You can write captions for your slides, and the images can be assigned links
|
17 |
+
- Rich administration panel - easy to configure and use
|
18 |
+
- You can preview your slides as you are building them
|
19 |
+
- Create many slides at a time from a folder of images
|
20 |
+

|
21 |
+
Product slides
|
22 |
+
We also provide a Pro version of e-reactor Slider that can create slides featuring products from your store. Please refer to the following link for more information: http://www.magentocommerce.com/magento-connect/catalog/product/view/id/18754/
|
23 |
+

|
24 |
+
Demo site
|
25 |
+
You can see various examples of our slideshow in action on this page:
|
26 |
+
http://shop.e-reactor.dk/demo-ereactor-slider
|
27 |
+

|
28 |
+
How to activate
|
29 |
+
After e-reactor Slider is installed, it needs to be activated by providing a valid license key. Without a valid license key, you can still access the extension, but you will not be able to save any slides. You are entitled to 2 license keys - one for a production server and one for a development server. You can access these keys by registering on our site, http://shop.e-reactor.dk . After you register, navigate to "My Account" and then to "My License Keys". You can follow the instructions on that page to generate license keys for specific domains. The license key must be entered in the Configuration area of the Magento Admin panel, under the "e-reactor Slider options" tab.
|
30 |
+

|
31 |
+
Customer support
|
32 |
+
We will do our best to answer your questions, fix any problems you may encounter and make your experience with our software as productive as possible.
|
33 |
+
We take suggestions and feature requests very seriously and will try to fulfill them as well as we can.</description>
|
34 |
+
<notes>e-reactor Slider</notes>
|
35 |
+
<authors><author><name>Mihai Andrei Livadariu</name><user>alivadariu</user><email>livadariu.andrei@gmail.com</email></author></authors>
|
36 |
+
<date>2013-08-09</date>
|
37 |
+
<time>09:22:23</time>
|
38 |
+
<contents><target name="magecommunity"><dir name="Ereactor"><dir name="Slider"><dir name="Block"><dir name="Adminhtml"><dir name="Slide"><dir name="Batch"><file name="Images.php" hash="628a5e67a0f28ed0b40eb86e009bc0ff"/></dir><file name="Batch.php" hash="cdb06d55c7ff0f80fb2b29cbc84a030a"/><file name="Grid.php" hash="3daa8238df20e04abded6a987509f348"/><file name="Preview.php" hash="f429d3957a2fe65f37d234cf16b48ef0"/><file name="Quickadd.php" hash="565e01ba22e82ac6ee15e09153225e59"/></dir><dir name="Slideshow"><dir name="Edit"><file name="Form.php" hash="e365b6f864b670f3d0f0a79e4fb655c0"/><dir name="Tab"><file name="General.php" hash="188b3a27e639920a8dc9d0c6830a3a9c"/><file name="Slides.php" hash="656bdd13ef255e23b440ae4003fc9590"/></dir><file name="Tabs.php" hash="0e93a65ad09bcc7cb7249e941b951988"/></dir><file name="Edit.php" hash="78275684a0cf8d307b9abf3111bcc083"/><file name="Grid.php" hash="8fdd5c62a948fd854c122babdd26e826"/><file name="Preview.php" hash="4c2d44f83322ba26db6c2474d9c55cb2"/></dir><file name="Slideshow.php" hash="c29b7b54d856e229983de15bafe18bd5"/><dir name="Widget"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="Slideaction.php" hash="44830761b6f34475b15532105715ef2f"/></dir></dir></dir></dir></dir><file name="Slide.php" hash="314ee1cd06a9ee67fe328607d9d66042"/><file name="Slider.php" hash="89a0f782ffe96bc47f37fa5f0d60855d"/></dir><dir name="Helper"><file name="Admin.php" hash="60c8c0cb889a732b6ef49b70b5dd4914"/><file name="Data.php" hash="a02c1c9ce9900e29839688211155253c"/></dir><dir name="Model"><dir name="Resource"><dir name="Slide"><file name="Collection.php" hash="65e22f25d4ba263931b0e03cccd2bc0a"/></dir><file name="Slide.php" hash="6c31a1d51f1752dfaa050273690a1d27"/><dir name="Slideshow"><file name="Collection.php" hash="c52a9c027d0593b621288e8352c56602"/></dir><file name="Slideshow.php" hash="00e5c73bb01359b6fa698a7389b8e9db"/></dir><file name="Slide.php" hash="0f564b3ac27a46c9addb7ab56209d1d7"/><file name="Slide_src.php" hash="20d7eaa28e799d326bf18ee993e3f17c"/><file name="Slideshow.php" hash="70ae21f6cdbf719efdc3640888f1d1f6"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Ereactor"><dir name="Slider"><file name="ImagesController.php" hash="67468bcd41017f24a6b3e85a4f337091"/><file name="SlideController.php" hash="55ca25987cf7a7f0b03a854aeec2a935"/></dir><file name="SliderController.php" hash="91d8606e478e8ae29d4128af6ae3f804"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="a35b6de42e520017ffe6f1cd46fd94ff"/><file name="config.xml" hash="5e04cb6da109100c389b4b75f34b4bbf"/><file name="system.xml" hash="18c8d5ff57033e27e3b1dfa78b2be52f"/><file name="widget.xml" hash="b44ad80e2a81f717091e7eea812cc929"/></dir><dir name="sql"><dir name="ereactor_slider_setup"><file name="install-1.0.0.php" hash="1b87dbdbfecad9517935cf655b9f1a04"/></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Ereactor_Slider.csv" hash="535d0dff1f174d6f54e780dcb1137772"/></dir></dir></target><target name="mage"><dir name="js"><dir name="ereactor_slider"><dir name="adminhtml"><file name="edit-slideshow.js" hash="a70a77fb7b64a78be06e11472cb291c7"/><file name="edit-slideshow.min.js" hash="ce1f83a82811f09c5ce52f3b9e2731aa"/></dir><file name="jquery-1.9.1.min.js" hash="ceb631805d088bb6c25d61fa5d268191"/><file name="jquery.nivo-slider.js" hash="a657b2c19b33cf5794538405239c22a7"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="ereactor_slider"><file name="style.css" hash="541e372dc913201e4df2006179c2997e"/><file name="style.min.css" hash="fd63d8953ecafa9450b9a03cface69c5"/></dir><dir name="images"><dir name="ereactor_slider"><file name="slide_html.png" hash="1be259256203d4b7cb29f87c076d8f4b"/><file name="slide_image.png" hash="e630b1ec4ebbd84255a58445db0e8bb2"/><file name="slide_imagetext.png" hash="fb8e32307d4260dc5dbf45d2e7fb47b2"/><file name="slide_product.png" hash="775561053f2e0b75d5e208d84345f27b"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="ereactor_slider"><file name="default.css" hash="b41ea5c137c934dd0c3a3dbe438a261e"/><file name="nivo-slider.css" hash="65462bb9a083de8655490190bf0b58b3"/></dir></dir><dir name="images"><dir name="ereactor_slider"><file name="arrows.png" hash="09b24f1a73b9eeb5cc62db7ec0b60bca"/><file name="bullets.png" hash="acc66fce35a54d815a3aa3fd573cdd90"/><file name="loading.gif" hash="dd6b7b0bf5c3af22499abc0a9ee1e1b2"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="ereactor_slider.xml" hash="b2931cab283884fc21ee4d35891cfca3"/></dir><dir name="template"><dir name="ereactor"><dir name="slider"><dir name="slide"><file name="batch.phtml" hash="a93c7573427cbe42b264b61931ec096d"/><file name="preview.phtml" hash="36713057599598eff7a070821165eac7"/></dir><dir name="slideshow"><file name="preview.phtml" hash="a82086c91ff63984808947f20b6c363b"/></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="ereactor"><dir name="slider"><dir name="slide"><file name="html.phtml" hash="f89763f60f16d58e9955101359cfd20e"/><file name="image.phtml" hash="735c6a446ab8a50e54a71d1825f40e97"/></dir><file name="slideshow.phtml" hash="339d1ec638207219fdfb76b8e7cbf6a1"/></dir></dir></dir></dir></dir></dir></target><target name="magemedia"><dir name="ereactor_slider"><file name="black-small.gif" hash="fef4971f84692bc86c4ce86f12496349"/><file name="grey-small.gif" hash="115df342e4c6c3945a84482c35125f9b"/><file name="orange-small.gif" hash="fafc52983d8a3400a70cb1761f187b04"/><file name="white-small.gif" hash="471adc4a276ba05cbe4c7ae9aac94e58"/><dir name=".thumbs"><dir name="ereactor_slider"><dir name="batch"><file name="nemo.jpg" hash="0113c613da1d19ce78033fd15fd0dd7c"/><file name="up.jpg" hash="90a2ba5eac5f5f60eba2de06c211d88e"/></dir><file name="black-small.gif" hash="7e49115167f3cd8a8a99742dc7086886"/><file name="grey-small.gif" hash="79520ead9a4b56d612acbc619e7c2cd9"/><file name="nemo.jpg" hash="0113c613da1d19ce78033fd15fd0dd7c"/><file name="orange-small.gif" hash="7d789b1b26683d8c516833df63c8fc01"/><file name="toystory-small.jpg" hash="530ddb3e47c7c29a490722ebd3af2a8a"/><file name="toystory.jpg" hash="855e30c6168afb5ee9ae59af3a244654"/><file name="up.jpg" hash="90a2ba5eac5f5f60eba2de06c211d88e"/><file name="walle-small.jpg" hash="6078c0665b5c648921c7c7e72234b5f0"/><file name="walle.jpg" hash="c6ca6adb19dd08a51e956cd0e958eba2"/><file name="white-small.gif" hash="e960e81c886120aaf57e2145369ebf44"/></dir></dir></dir><dir name="wysiwyg"><dir name="sample-slideshow"><file name="coffeecup.jpg" hash="5f8d13f118ba674280d46fb7a1bcbc0d"/><file name="lock.jpg" hash="d44a2ace3dc88e915d0e29e3bcc7d642"/><file name="womanonbeach.jpg" hash="1c7fe28178fbf5bd7259f25ee0e8d245"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Ereactor_Slider.xml" hash="cd53bdd659f879bc338cfa7b66f29b8e"/></dir></target></contents>
|
39 |
+
<compatible/>
|
40 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.6.0.0</min><max>1.7</max></package></required></dependencies>
|
41 |
+
</package>
|
skin/adminhtml/base/default/ereactor_slider/style.css
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.ereactor_modal_container {
|
2 |
+
position: absolute;
|
3 |
+
top: 0;
|
4 |
+
left: 0;
|
5 |
+
width: 100%;
|
6 |
+
height: 100%;
|
7 |
+
background: rgba(0,0,0,0.6);
|
8 |
+
z-index: 300;
|
9 |
+
text-align: center;
|
10 |
+
display: table;
|
11 |
+
}
|
12 |
+
|
13 |
+
.ereactor_modal_wrapper {
|
14 |
+
display: table-cell;
|
15 |
+
vertical-align: middle;
|
16 |
+
}
|
17 |
+
|
18 |
+
.ereactor_modal_wrapper > div {
|
19 |
+
display: inline-block;
|
20 |
+
text-align: left;
|
21 |
+
}
|
22 |
+
|
23 |
+
#ereactor-slider-preview {
|
24 |
+
position: fixed;
|
25 |
+
bottom: 50%;
|
26 |
+
left: 30px;
|
27 |
+
}
|
28 |
+
|
29 |
+
.ereactor-slide-preview {
|
30 |
+
max-width: 800px;
|
31 |
+
}
|
32 |
+
|
33 |
+
.ereactor_modal_wrapper .ereactor-slide-preview {
|
34 |
+
width: 800px;
|
35 |
+
}
|
36 |
+
|
37 |
+
#ereactor-slider-preview .nivo-controlNav-hover {
|
38 |
+
margin-bottom: 10px;
|
39 |
+
}
|
40 |
+
|
41 |
+
#slideshow_quickadd_type {
|
42 |
+
display: none;
|
43 |
+
}
|
44 |
+
|
45 |
+
.ereactor-slide-type, .ereactor-slide-disabled {
|
46 |
+
display: inline-block;
|
47 |
+
border: 2px solid #3e3e3e;
|
48 |
+
width: 44px;
|
49 |
+
height: 34px;
|
50 |
+
padding: 14px 17px 0 40px;
|
51 |
+
text-transform: uppercase;
|
52 |
+
text-align: right;
|
53 |
+
margin: 0 10px 10px 0;
|
54 |
+
font-weight: bold;
|
55 |
+
cursor: pointer;
|
56 |
+
background: transparent no-repeat 4px 8px;
|
57 |
+
vertical-align: middle;
|
58 |
+
}
|
59 |
+
|
60 |
+
.ereactor-slide-disabled {
|
61 |
+
border-color: #BBB;
|
62 |
+
color: #BBB;
|
63 |
+
}
|
64 |
+
|
65 |
+
.ereactor-slide-type:hover, .ereactor-slide-type.ereactor-selected {
|
66 |
+
border-color: #ed6502;
|
67 |
+
color: #ed6502;
|
68 |
+
}
|
69 |
+
|
70 |
+
.ereactor-slide-t1 {
|
71 |
+
background-image: url(../images/ereactor_slider/slide_html.png);
|
72 |
+
padding-top: 6px;
|
73 |
+
height: 42px;
|
74 |
+
}
|
75 |
+
|
76 |
+
.ereactor-slide-t0 {
|
77 |
+
background-image: url(../images/ereactor_slider/slide_image.png);
|
78 |
+
}
|
79 |
+
|
80 |
+
.ereactor-slide-t4 {
|
81 |
+
background-image: url(../images/ereactor_slider/slide_imagetext.png);
|
82 |
+
padding-top: 6px;
|
83 |
+
height: 42px;
|
84 |
+
}
|
85 |
+
|
86 |
+
.ereactor-slide-t2 {
|
87 |
+
background-image: url(../images/ereactor_slider/slide_product.png);
|
88 |
+
}
|
89 |
+
|
90 |
+
a.form-button {
|
91 |
+
text-decoration: none;
|
92 |
+
}
|
93 |
+
|
94 |
+
a.form-button:hover {
|
95 |
+
color: #fff;
|
96 |
+
background: #f77c16;
|
97 |
+
}
|
98 |
+
|
99 |
+
button.btn-chooser {
|
100 |
+
display: inline-block;
|
101 |
+
}
|
102 |
+
|
103 |
+
#generateSlides {
|
104 |
+
margin-bottom: 15px;
|
105 |
+
}
|
106 |
+
|
107 |
+
textarea.disabled {
|
108 |
+
background: #eee;
|
109 |
+
}
|
110 |
+
|
111 |
+
#page_tabs_slides_content .form-list td.value {
|
112 |
+
width: 350px;
|
113 |
+
}
|
skin/adminhtml/base/default/ereactor_slider/style.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.ereactor_modal_container{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.6);z-index:300;text-align:center;display:table;}.ereactor_modal_wrapper{display:table-cell;vertical-align:middle;}.ereactor_modal_wrapper > div{display:inline-block;text-align:left;}#ereactor-slider-preview{position:fixed;bottom:50%;left:30px;}.ereactor-slide-preview{max-width:800px;}.ereactor_modal_wrapper .ereactor-slide-preview{width:800px;}#ereactor-slider-preview .nivo-controlNav-hover{margin-bottom:10px;}#slideshow_quickadd_type{display:none;}.ereactor-slide-type,.ereactor-slide-disabled{display:inline-block;border:2px solid #3e3e3e;width:44px;height:34px;text-transform:uppercase;text-align:right;font-weight:700;cursor:pointer;background:transparent no-repeat 4px 8px;vertical-align:middle;margin:0 10px 10px 0;padding:14px 17px 0 40px;}.ereactor-slide-disabled{color:#BBB;border-color:#BBB;}.ereactor-slide-type:hover,.ereactor-slide-type.ereactor-selected{color:#ed6502;border-color:#ed6502;}.ereactor-slide-t1{background-image:url(../images/ereactor_slider/slide_html.png);padding-top:6px;height:42px;}.ereactor-slide-t0{background-image:url(../images/ereactor_slider/slide_image.png);}.ereactor-slide-t4{background-image:url(../images/ereactor_slider/slide_imagetext.png);padding-top:6px;height:42px;}.ereactor-slide-t2{background-image:url(../images/ereactor_slider/slide_product.png);}a.form-button{text-decoration:none;}a.form-button:hover{color:#fff;background:#f77c16;}button.btn-chooser{display:inline-block;}#generateSlides{margin-bottom:15px;}textarea.disabled{background:#eee;}#page_tabs_slides_content .form-list td.value{width:350px;}
|
skin/adminhtml/base/default/images/ereactor_slider/slide_html.png
ADDED
Binary file
|
skin/adminhtml/base/default/images/ereactor_slider/slide_image.png
ADDED
Binary file
|
skin/adminhtml/base/default/images/ereactor_slider/slide_imagetext.png
ADDED
Binary file
|
skin/adminhtml/base/default/images/ereactor_slider/slide_product.png
ADDED
Binary file
|
skin/frontend/base/default/css/ereactor_slider/default.css
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
Skin Name: Nivo Slider Default Theme
|
3 |
+
Skin URI: http://nivo.dev7studios.com
|
4 |
+
Description: The default skin for the Nivo Slider.
|
5 |
+
Version: 1.3
|
6 |
+
Author: Gilbert Pellegrom
|
7 |
+
Author URI: http://dev7studios.com
|
8 |
+
Supports Thumbs: true
|
9 |
+
*/
|
10 |
+
|
11 |
+
.theme-default .nivoSlider {
|
12 |
+
position:relative;
|
13 |
+
background-color:#fff;
|
14 |
+
margin-bottom:10px;
|
15 |
+
-webkit-box-shadow: 0px 1px 5px 0px #4a4a4a;
|
16 |
+
-moz-box-shadow: 0px 1px 5px 0px #4a4a4a;
|
17 |
+
box-shadow: 0px 1px 5px 0px #4a4a4a;
|
18 |
+
}
|
19 |
+
.theme-default .nivoSlider img {
|
20 |
+
position:absolute;
|
21 |
+
top:0px;
|
22 |
+
left:0px;
|
23 |
+
/*display:none;*/
|
24 |
+
width: 100%;
|
25 |
+
}
|
26 |
+
|
27 |
+
.theme-default .nivo-controlNav {
|
28 |
+
text-align: center;
|
29 |
+
padding: 0;
|
30 |
+
}
|
31 |
+
.theme-default .nivo-controlNav a {
|
32 |
+
display:inline-block;
|
33 |
+
width:22px;
|
34 |
+
height:22px;
|
35 |
+
background:url(../../images/ereactor_slider/bullets.png) no-repeat;
|
36 |
+
text-indent:-9999px;
|
37 |
+
border:0;
|
38 |
+
margin: 0 2px;
|
39 |
+
}
|
40 |
+
.theme-default .nivo-controlNav a.active {
|
41 |
+
background-position:0 -22px;
|
42 |
+
}
|
43 |
+
|
44 |
+
.theme-default .nivo-directionNav a {
|
45 |
+
display:block;
|
46 |
+
width:30px;
|
47 |
+
height:30px;
|
48 |
+
background:url(../../images/ereactor_slider/arrows.png) no-repeat;
|
49 |
+
text-indent:-9999px;
|
50 |
+
border:0;
|
51 |
+
opacity: 0;
|
52 |
+
-webkit-transition: all 200ms ease-in-out;
|
53 |
+
-moz-transition: all 200ms ease-in-out;
|
54 |
+
-o-transition: all 200ms ease-in-out;
|
55 |
+
transition: all 200ms ease-in-out;
|
56 |
+
}
|
57 |
+
.theme-default:hover .nivo-directionNav a { opacity: 1; }
|
58 |
+
.theme-default a.nivo-nextNav {
|
59 |
+
background-position:-30px 0;
|
60 |
+
right:15px;
|
61 |
+
}
|
62 |
+
.theme-default a.nivo-prevNav {
|
63 |
+
left:15px;
|
64 |
+
}
|
65 |
+
|
66 |
+
.theme-default .nivo-caption {
|
67 |
+
font-family: Helvetica, Arial, sans-serif;
|
68 |
+
}
|
69 |
+
.theme-default .nivo-caption a {
|
70 |
+
color:#fff;
|
71 |
+
border-bottom:1px dotted #fff;
|
72 |
+
}
|
73 |
+
.theme-default .nivo-caption a:hover {
|
74 |
+
color:#fff;
|
75 |
+
}
|
76 |
+
|
77 |
+
.theme-default .nivo-controlNav.nivo-thumbs-enabled {
|
78 |
+
width: 100%;
|
79 |
+
}
|
80 |
+
.theme-default .nivo-controlNav.nivo-thumbs-enabled a {
|
81 |
+
width: auto;
|
82 |
+
height: auto;
|
83 |
+
background: none;
|
84 |
+
margin-bottom: 5px;
|
85 |
+
}
|
86 |
+
.theme-default .nivo-controlNav.nivo-thumbs-enabled img {
|
87 |
+
display: block;
|
88 |
+
width: 120px;
|
89 |
+
height: auto;
|
90 |
+
}
|
91 |
+
|
92 |
+
.theme-default .nivoSlider .nivo-slide img {
|
93 |
+
position: static;
|
94 |
+
width: auto;
|
95 |
+
}
|
skin/frontend/base/default/css/ereactor_slider/nivo-slider.css
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery Nivo Slider v3.2
|
3 |
+
* http://nivo.dev7studios.com
|
4 |
+
*
|
5 |
+
* Copyright 2012, Dev7studios
|
6 |
+
* Free to use and abuse under the MIT license.
|
7 |
+
* http://www.opensource.org/licenses/mit-license.php
|
8 |
+
*/
|
9 |
+
|
10 |
+
/* The Nivo Slider styles */
|
11 |
+
.nivoSlider {
|
12 |
+
position:relative;
|
13 |
+
width:100%;
|
14 |
+
height:auto;
|
15 |
+
overflow: hidden;
|
16 |
+
}
|
17 |
+
.nivoSlider img {
|
18 |
+
position:absolute;
|
19 |
+
top:0px;
|
20 |
+
left:0px;
|
21 |
+
max-width: none;
|
22 |
+
}
|
23 |
+
.nivo-main-image {
|
24 |
+
display: none !important;
|
25 |
+
position: relative !important;
|
26 |
+
width: 100% !important;
|
27 |
+
}
|
28 |
+
|
29 |
+
/* If an image is wrapped in a link */
|
30 |
+
.nivoSlider a.nivo-imageLink {
|
31 |
+
position:absolute;
|
32 |
+
top:0px;
|
33 |
+
left:0px;
|
34 |
+
width:100%;
|
35 |
+
height:100%;
|
36 |
+
border:0;
|
37 |
+
padding:0;
|
38 |
+
margin:0;
|
39 |
+
z-index:6;
|
40 |
+
display:none;
|
41 |
+
background:white;
|
42 |
+
/*filter:alpha(opacity=0);
|
43 |
+
opacity:0;*/
|
44 |
+
}
|
45 |
+
/* The slices and boxes in the Slider */
|
46 |
+
.nivo-slice {
|
47 |
+
display:block;
|
48 |
+
position:absolute;
|
49 |
+
z-index:50;
|
50 |
+
height:100%;
|
51 |
+
top:0;
|
52 |
+
}
|
53 |
+
.nivo-box {
|
54 |
+
display:block;
|
55 |
+
position:absolute;
|
56 |
+
z-index:50;
|
57 |
+
overflow:hidden;
|
58 |
+
}
|
59 |
+
.nivo-box img { display:block; }
|
60 |
+
|
61 |
+
/* Caption styles */
|
62 |
+
.nivo-caption {
|
63 |
+
position:absolute;
|
64 |
+
left:0px;
|
65 |
+
bottom:0px;
|
66 |
+
background:#000;
|
67 |
+
color:#fff;
|
68 |
+
width:100%;
|
69 |
+
z-index:80;
|
70 |
+
padding: 5px 10px;
|
71 |
+
opacity: 0.8;
|
72 |
+
overflow: hidden;
|
73 |
+
display: none;
|
74 |
+
-moz-opacity: 0.8;
|
75 |
+
filter:alpha(opacity=8);
|
76 |
+
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
|
77 |
+
-moz-box-sizing: border-box; /* Firefox, other Gecko */
|
78 |
+
box-sizing: border-box; /* Opera/IE 8+ */
|
79 |
+
}
|
80 |
+
.nivo-caption p {
|
81 |
+
padding:5px;
|
82 |
+
margin:0;
|
83 |
+
}
|
84 |
+
.nivo-caption a {
|
85 |
+
display:inline !important;
|
86 |
+
}
|
87 |
+
.nivo-html-caption {
|
88 |
+
display:none;
|
89 |
+
}
|
90 |
+
/* Direction nav styles (e.g. Next & Prev) */
|
91 |
+
.nivo-directionNav a {
|
92 |
+
position:absolute;
|
93 |
+
top:45%;
|
94 |
+
z-index:1000;
|
95 |
+
cursor:pointer;
|
96 |
+
}
|
97 |
+
.nivo-prevNav {
|
98 |
+
left:0px;
|
99 |
+
}
|
100 |
+
.nivo-nextNav {
|
101 |
+
right:0px;
|
102 |
+
}
|
103 |
+
/* Control nav styles (e.g. 1,2,3...) */
|
104 |
+
.nivo-controlNav {
|
105 |
+
text-align:center;
|
106 |
+
padding: 15px 0;
|
107 |
+
}
|
108 |
+
.nivo-controlNav a {
|
109 |
+
cursor:pointer;
|
110 |
+
}
|
111 |
+
.nivo-controlNav a.active {
|
112 |
+
font-weight:bold;
|
113 |
+
}
|
114 |
+
|
115 |
+
.nivo-slider-wrapper {
|
116 |
+
position: relative;
|
117 |
+
}
|
118 |
+
|
119 |
+
.nivo-controlNav-hover {
|
120 |
+
position: absolute;
|
121 |
+
bottom: 0;
|
122 |
+
right: 0;
|
123 |
+
padding: 0 !important;
|
124 |
+
z-index: 100;
|
125 |
+
}
|
126 |
+
|
127 |
+
div.nivo-slide {
|
128 |
+
position: absolute;
|
129 |
+
width: 100%;
|
130 |
+
height: 100%;
|
131 |
+
}
|
132 |
+
div.nivo-slide div {
|
133 |
+
position: absolute;
|
134 |
+
display: block;
|
135 |
+
}
|
skin/frontend/base/default/images/ereactor_slider/arrows.png
ADDED
Binary file
|
skin/frontend/base/default/images/ereactor_slider/bullets.png
ADDED
Binary file
|
skin/frontend/base/default/images/ereactor_slider/loading.gif
ADDED
Binary file
|