Version Notes
Works from Magento 1.5 - 1.7
Download this release
Release Info
Developer | Magebuzz |
Extension | magebuzz_category_sidebar_navigation |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- app/code/community/Magebuzz/Catsidebarnav/Block/Catsidebarnav.php +37 -0
- app/code/community/Magebuzz/Catsidebarnav/Block/Sidebar.php +137 -0
- app/code/community/Magebuzz/Catsidebarnav/Helper/Category.php +31 -0
- app/code/community/Magebuzz/Catsidebarnav/Helper/Data.php +14 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/Catsidebarnav.php +10 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/Mysql4/Catsidebarnav.php +10 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/Mysql4/Catsidebarnav/Collection.php +10 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/Session.php +10 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/Status.php +15 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/System/Config/Position.php +14 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/System/Config/Showlevel.php +17 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/System/Config/Type.php +15 -0
- app/code/community/Magebuzz/Catsidebarnav/Model/Wysiwyg/Config.php +34 -0
- app/code/community/Magebuzz/Catsidebarnav/controllers/IndexController.php +9 -0
- app/code/community/Magebuzz/Catsidebarnav/etc/adminhtml.xml +26 -0
- app/code/community/Magebuzz/Catsidebarnav/etc/config.xml +134 -0
- app/code/community/Magebuzz/Catsidebarnav/etc/system.xml +69 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Edit.php +61 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Edit/Grid.php +322 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Edit/Renderer/Visibility.php +22 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts.php +12 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit.php +45 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit/Form.php +19 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit/Tab/Form.php +58 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit/Tabs.php +24 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Grid.php +116 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Featuredproducts.php +17 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Leftsidebar.php +50 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Listing.php +64 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Product/List.php +81 -0
- app/code/community/Magebuzz/Featuredproducts/Block/Rightsidebar.php +51 -0
- app/code/community/Magebuzz/Featuredproducts/Helper/Data.php +20 -0
- app/code/community/Magebuzz/Featuredproducts/Model/Featuredproducts.php +10 -0
- app/code/community/Magebuzz/Featuredproducts/Model/Mysql4/Featuredproducts.php +10 -0
- app/code/community/Magebuzz/Featuredproducts/Model/Mysql4/Featuredproducts/Collection.php +10 -0
- app/code/community/Magebuzz/Featuredproducts/Model/Status.php +15 -0
- app/code/community/Magebuzz/Featuredproducts/Model/System/Config/Source/Leftright.php +12 -0
- app/code/community/Magebuzz/Featuredproducts/Model/System/Config/Source/Sort.php +14 -0
- app/code/community/Magebuzz/Featuredproducts/controllers/Adminhtml/FeaturedproductsController.php +225 -0
- app/code/community/Magebuzz/Featuredproducts/controllers/IndexController.php +56 -0
- app/code/community/Magebuzz/Featuredproducts/etc/adminhtml.xml +39 -0
- app/code/community/Magebuzz/Featuredproducts/etc/config.xml +118 -0
- app/code/community/Magebuzz/Featuredproducts/etc/system.xml +135 -0
- app/code/community/Magebuzz/Featuredproducts/sql/featuredproducts_setup/mysql4-install-0.1.0.php +34 -0
- app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider.php +12 -0
- app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit.php +45 -0
- app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit/Form.php +19 -0
- app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit/Tab/Main.php +62 -0
- app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit/Tabs.php +23 -0
- app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Grid.php +121 -0
- app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/Bestseller.php +46 -0
- app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/Mostviewed.php +47 -0
- app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/Random.php +46 -0
- app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/RecentlyAdd.php +68 -0
- app/code/community/Magebuzz/Productslider/Block/Position.php +28 -0
- app/code/community/Magebuzz/Productslider/Block/Productslider.php +208 -0
- app/code/community/Magebuzz/Productslider/Helper/Data.php +6 -0
- app/code/community/Magebuzz/Productslider/Model/Mysql4/Productslider.php +10 -0
- app/code/community/Magebuzz/Productslider/Model/Mysql4/Productslider/Collection.php +10 -0
- app/code/community/Magebuzz/Productslider/Model/Productslider.php +10 -0
- app/code/community/Magebuzz/Productslider/Model/Session.php +10 -0
- app/code/community/Magebuzz/Productslider/Model/Status.php +15 -0
- app/code/community/Magebuzz/Productslider/Model/System/Config/Position.php +13 -0
- app/code/community/Magebuzz/Productslider/Model/System/Config/Styles.php +13 -0
- app/code/community/Magebuzz/Productslider/Model/System/Config/Type.php +15 -0
- app/code/community/Magebuzz/Productslider/Model/Wysiwyg/Config.php +34 -0
- app/code/community/Magebuzz/Productslider/controllers/BestsellerController.php +9 -0
- app/code/community/Magebuzz/Productslider/controllers/IndexController.php +9 -0
- app/code/community/Magebuzz/Productslider/controllers/MostviewedController.php +9 -0
- app/code/community/Magebuzz/Productslider/controllers/RandomController.php +9 -0
- app/code/community/Magebuzz/Productslider/controllers/RecentlyAddController.php +9 -0
- app/code/community/Magebuzz/Productslider/etc/adminhtml.xml +26 -0
- app/code/community/Magebuzz/Productslider/etc/config.xml +148 -0
- app/code/community/Magebuzz/Productslider/etc/system.xml +113 -0
- app/code/community/Magebuzz/Productslider/sql/productslider_setup/mysql4-install-0.1.0.php +9 -0
- app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial.php +14 -0
- app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit.php +45 -0
- app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit/Form.php +19 -0
- app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit/Tab/Form.php +114 -0
- app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit/Tabs.php +24 -0
- app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Grid.php +153 -0
- app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Renderer/Image.php +19 -0
- app/code/community/Magebuzz/Testimonial/Block/Captcha.php +6 -0
- app/code/community/Magebuzz/Testimonial/Block/Form.php +27 -0
- app/code/community/Magebuzz/Testimonial/Block/Form/Login.php +5 -0
- app/code/community/Magebuzz/Testimonial/Block/Sidebar.php +28 -0
- app/code/community/Magebuzz/Testimonial/Block/Testimonial.php +48 -0
- app/code/community/Magebuzz/Testimonial/Helper/Data.php +11 -0
- app/code/community/Magebuzz/Testimonial/Model/Mysql4/Testimonial.php +9 -0
- app/code/community/Magebuzz/Testimonial/Model/Mysql4/Testimonial/Collection.php +10 -0
- app/code/community/Magebuzz/Testimonial/Model/Session.php +8 -0
- app/code/community/Magebuzz/Testimonial/Model/Status.php +17 -0
- app/code/community/Magebuzz/Testimonial/Model/Testimonial.php +32 -0
- app/code/community/Magebuzz/Testimonial/controllers/Adminhtml/TestimonialController.php +267 -0
- app/code/community/Magebuzz/Testimonial/controllers/FormController.php +172 -0
- app/code/community/Magebuzz/Testimonial/controllers/IndexController.php +34 -0
- app/code/community/Magebuzz/Testimonial/etc/adminhtml.xml +51 -0
- app/code/community/Magebuzz/Testimonial/etc/config.xml +140 -0
- app/code/community/Magebuzz/Testimonial/etc/system.xml +187 -0
- app/code/community/Magebuzz/Testimonial/sql/testimonial_setup/mysql4-install-0.1.0.php +28 -0
- app/design/adminhtml/default/default/layout/catsidebarnav.xml +12 -0
- app/design/frontend/default/default/layout/catsidebarnav.xml +20 -0
- app/design/frontend/default/default/template/catsidebarnav/catsidebarnav.phtml +85 -0
- app/etc/modules/Magebuzz_Catsidebarnav.xml +9 -0
- app/locale/en_US/Magebuzz_Catsidebarnav.csv +0 -0
- package.xml +19 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/click.css +22 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/fly-out.css +124 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/images/arrow.png +0 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/images/arrow_active.png +0 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/images/bg_title.gif +0 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/images/sub_icon.gif +0 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/images/sub_icon_2.gif +0 -0
- skin/frontend/default/default/css/magebuzz/catsidebarnav/static.css +18 -0
- skin/frontend/default/default/js/magebuzz/catsidebarnav/hoverIntent.js +84 -0
- skin/frontend/default/default/js/magebuzz/catsidebarnav/jquery-1.2.6.min.js +32 -0
- skin/frontend/default/default/js/magebuzz/catsidebarnav/superfish.js +121 -0
app/code/community/Magebuzz/Catsidebarnav/Block/Catsidebarnav.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Catsidebarnav_Block_Catsidebarnav extends Mage_Catalog_Block_Navigation
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
return parent::_prepareLayout();
|
7 |
+
}
|
8 |
+
|
9 |
+
public function getCatsidebarnav()
|
10 |
+
{
|
11 |
+
if (!$this->hasData('catsidebarnav')) {
|
12 |
+
$this->setData('catsidebarnav', Mage::registry('catsidebarnav'));
|
13 |
+
}
|
14 |
+
return $this->getData('catsidebarnav');
|
15 |
+
|
16 |
+
}
|
17 |
+
public function leftSidebarBlock() {
|
18 |
+
$block = $this->getParentBlock();
|
19 |
+
if($block) {
|
20 |
+
|
21 |
+
if(Mage::helper('catsidebarnav')->displayOnSideBar() == 'left') {
|
22 |
+
$sidebarBlock = $this->getLayout()->createBlock('catsidebarnav/sidebar');
|
23 |
+
$block->insert($sidebarBlock,'', true, 'cat-sidebar');
|
24 |
+
}
|
25 |
+
}
|
26 |
+
}
|
27 |
+
public function rightSidebarBlock() {
|
28 |
+
$block = $this->getParentBlock();
|
29 |
+
if($block) {
|
30 |
+
if(Mage::helper('catsidebarnav')->displayOnSideBar() == 'right') {
|
31 |
+
$sidebarBlock = $this->getLayout()->createBlock('catsidebarnav/sidebar');
|
32 |
+
|
33 |
+
$block->insert($sidebarBlock, '', true, 'cat-sidebar');
|
34 |
+
}
|
35 |
+
}
|
36 |
+
}
|
37 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Block/Sidebar.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Catsidebarnav_Block_Sidebar extends Magebuzz_Catsidebarnav_Block_Catsidebarnav
|
3 |
+
{
|
4 |
+
public function _construct() {
|
5 |
+
$this->setTemplate('catsidebarnav/catsidebarnav.phtml');
|
6 |
+
return parent::_construct();
|
7 |
+
}
|
8 |
+
public function _prepareLayout()
|
9 |
+
{
|
10 |
+
return parent::_prepareLayout();
|
11 |
+
}
|
12 |
+
public function getStoreCategories()
|
13 |
+
{
|
14 |
+
$helper = Mage::helper('catsidebarnav/category');
|
15 |
+
return $helper->getAllCategories();
|
16 |
+
}
|
17 |
+
protected function _renderCategoryMenuItemHtml($category, $level = 0, $isLast = false, $isFirst = false,
|
18 |
+
$isOutermost = false, $outermostItemClass = '', $childrenWrapClass = '', $noEventAttributes = false)
|
19 |
+
{
|
20 |
+
$showType=Mage::getStoreConfig('catsidebarnav/display_settings/show_type');
|
21 |
+
if (!$category->getIsActive()) {
|
22 |
+
return '';
|
23 |
+
}
|
24 |
+
$html = array();
|
25 |
+
|
26 |
+
// get all children
|
27 |
+
if (Mage::helper('catalog/category_flat')->isEnabled()) {
|
28 |
+
$children = (array)$category->getChildrenNodes();
|
29 |
+
$childrenCount = count($children);
|
30 |
+
} else {
|
31 |
+
$children = $category->getChildren();
|
32 |
+
$childrenCount = $children->count();
|
33 |
+
}
|
34 |
+
$hasChildren = ($children && $childrenCount);
|
35 |
+
|
36 |
+
// select active children
|
37 |
+
$activeChildren = array();
|
38 |
+
foreach ($children as $child) {
|
39 |
+
if ($child->getIsActive()) {
|
40 |
+
$activeChildren[] = $child;
|
41 |
+
}
|
42 |
+
}
|
43 |
+
$activeChildrenCount = count($activeChildren);
|
44 |
+
$hasActiveChildren = ($activeChildrenCount > 0);
|
45 |
+
|
46 |
+
// prepare list item html classes
|
47 |
+
$classes = array();
|
48 |
+
$classes[] = 'level' . $level;
|
49 |
+
$classes[] = 'nav-' . $this->_getItemPosition($level);
|
50 |
+
if ($this->isCategoryActive($category)) {
|
51 |
+
$classes[] = 'active';
|
52 |
+
}
|
53 |
+
$linkClass = '';
|
54 |
+
if ($isOutermost && $outermostItemClass) {
|
55 |
+
$classes[] = $outermostItemClass;
|
56 |
+
$linkClass = ' class="'.$outermostItemClass.'"';
|
57 |
+
}
|
58 |
+
if ($isFirst) {
|
59 |
+
$classes[] = 'first';
|
60 |
+
}
|
61 |
+
if ($isLast) {
|
62 |
+
$classes[] = 'last';
|
63 |
+
}
|
64 |
+
if ($hasActiveChildren) {
|
65 |
+
$classes[] = 'parent';
|
66 |
+
}
|
67 |
+
|
68 |
+
// prepare list item attributes
|
69 |
+
$attributes = array();
|
70 |
+
if (count($classes) > 0) {
|
71 |
+
$attributes['class'] = implode(' ', $classes);
|
72 |
+
}
|
73 |
+
if ($hasActiveChildren && !$noEventAttributes) {
|
74 |
+
$attributes['onmouseover'] = 'toggleMenu(this,1)';
|
75 |
+
$attributes['onmouseout'] = 'toggleMenu(this,0)';
|
76 |
+
}
|
77 |
+
|
78 |
+
// assemble list item with attributes
|
79 |
+
$htmlLi = '<li';
|
80 |
+
foreach ($attributes as $attrName => $attrValue) {
|
81 |
+
$htmlLi .= ' ' . $attrName . '="' . str_replace('"', '\"', $attrValue) . '"';
|
82 |
+
}
|
83 |
+
$htmlLi .= '>';
|
84 |
+
$html[] = $htmlLi;
|
85 |
+
if ($hasActiveChildren) {
|
86 |
+
if($showType == 'click-2-click'){
|
87 |
+
$html[] = '<a href="'.$this->getCategoryUrl($category).'"'.$linkClass.'>';
|
88 |
+
$html[] = '<span>' . $this->escapeHtml($category->getName()) . '</span>';
|
89 |
+
$html[] = '</a>';
|
90 |
+
$html[] = '<a href="javascript://" class="right show-cat"> ';
|
91 |
+
$html[] = '</a>';
|
92 |
+
}
|
93 |
+
else{
|
94 |
+
$html[] = '<a href="'.$this->getCategoryUrl($category).'"'.$linkClass.'>';
|
95 |
+
$html[] = '<span>' . $this->escapeHtml($category->getName()) . '</span>';
|
96 |
+
$html[] = '</a>';
|
97 |
+
}
|
98 |
+
}
|
99 |
+
else{
|
100 |
+
$html[] = '<a href="'.$this->getCategoryUrl($category).'"'.$linkClass.'>';
|
101 |
+
$html[] = '<span>' . $this->escapeHtml($category->getName()) . '</span>';
|
102 |
+
$html[] = '</a>';
|
103 |
+
}
|
104 |
+
// render children
|
105 |
+
$htmlChildren = '';
|
106 |
+
$j = 0;
|
107 |
+
foreach ($activeChildren as $child) {
|
108 |
+
$htmlChildren .= $this->_renderCategoryMenuItemHtml(
|
109 |
+
$child,
|
110 |
+
($level + 1),
|
111 |
+
($j == $activeChildrenCount - 1),
|
112 |
+
($j == 0),
|
113 |
+
false,
|
114 |
+
$outermostItemClass,
|
115 |
+
$childrenWrapClass,
|
116 |
+
$noEventAttributes
|
117 |
+
);
|
118 |
+
$j++;
|
119 |
+
}
|
120 |
+
if (!empty($htmlChildren)) {
|
121 |
+
if ($childrenWrapClass) {
|
122 |
+
$html[] = '<div class="' . $childrenWrapClass . '">';
|
123 |
+
}
|
124 |
+
$html[] = '<ul class="level' . $level . '">';
|
125 |
+
$html[] = $htmlChildren;
|
126 |
+
$html[] = '</ul>';
|
127 |
+
if ($childrenWrapClass) {
|
128 |
+
$html[] = '</div>';
|
129 |
+
}
|
130 |
+
}
|
131 |
+
|
132 |
+
$html[] = '</li>';
|
133 |
+
|
134 |
+
$html = implode("\n", $html);
|
135 |
+
return $html;
|
136 |
+
}
|
137 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Helper/Category.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Helper_Category extends Mage_Catalog_Helper_Category
|
4 |
+
{
|
5 |
+
public function getAllCategories($sorted=false, $asCollection=false, $toLoad=true)
|
6 |
+
{
|
7 |
+
$parent = Mage::app()->getStore()->getRootCategoryId();
|
8 |
+
$cacheKey = sprintf('%d-%d-%d-%d', $parent, $sorted, $asCollection, $toLoad);
|
9 |
+
if (isset($this->_storeCategories[$cacheKey])) {
|
10 |
+
return $this->_storeCategories[$cacheKey];
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Check if parent node of the store still exists
|
15 |
+
*/
|
16 |
+
$category = Mage::getModel('catalog/category');
|
17 |
+
/* @var $category Mage_Catalog_Model_Category */
|
18 |
+
if (!$category->checkId($parent)) {
|
19 |
+
if ($asCollection) {
|
20 |
+
return new Varien_Data_Collection();
|
21 |
+
}
|
22 |
+
return array();
|
23 |
+
}
|
24 |
+
|
25 |
+
$categoryDepth = max(0, (int)Mage::getStoreConfig('catsidebarnav/display_settings/category_level'));
|
26 |
+
$storeCategories = $category->getCategories($parent, $categoryDepth, $sorted, $asCollection, $toLoad);
|
27 |
+
|
28 |
+
$this->_storeCategories[$cacheKey] = $storeCategories;
|
29 |
+
return $storeCategories;
|
30 |
+
}
|
31 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Helper/Data.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
public function isEnabled() {
|
6 |
+
return (int)Mage::getStoreConfig('catsidebarnav/display_settings/enabled');
|
7 |
+
}
|
8 |
+
public function displayOnSideBar() {
|
9 |
+
return Mage::getStoreConfig('catsidebarnav/display_settings/position');
|
10 |
+
}
|
11 |
+
public function getShowType(){
|
12 |
+
return Mage::getStoreConfig('catsidebarnav/display_settings/show_type');
|
13 |
+
}
|
14 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/Catsidebarnav.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_Catsidebarnav extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('catsidebarnav/catsidebarnav');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/Mysql4/Catsidebarnav.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_Mysql4_Catsidebarnav extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
// Note that the catsidebarnav_id refers to the key field in your database table.
|
8 |
+
$this->_init('catsidebarnav/catsidebarnav', 'catsidebarnav_id');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/Mysql4/Catsidebarnav/Collection.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_Mysql4_Catsidebarnav_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('catsidebarnav/catsidebarnav');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/Session.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_Session extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('catsidebarnav');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/Status.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_Status extends Varien_Object
|
4 |
+
{
|
5 |
+
const STATUS_ENABLED = 1;
|
6 |
+
const STATUS_DISABLED = 2;
|
7 |
+
|
8 |
+
static public function getOptionArray()
|
9 |
+
{
|
10 |
+
return array(
|
11 |
+
self::STATUS_ENABLED => Mage::helper('catsidebarnav')->__('Enabled'),
|
12 |
+
self::STATUS_DISABLED => Mage::helper('catsidebarnav')->__('Disabled')
|
13 |
+
);
|
14 |
+
}
|
15 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/System/Config/Position.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_System_Config_Position
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
$options = array(
|
8 |
+
array('value'=>'left','label'=> Mage::helper('catsidebarnav')->__('Left Sidebar')),
|
9 |
+
array('value'=>'right','label'=> Mage::helper('catsidebarnav')->__('Right Sidebar')),
|
10 |
+
);
|
11 |
+
|
12 |
+
return $options;
|
13 |
+
}
|
14 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/System/Config/Showlevel.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_System_Config_Showlevel
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
$options = array(
|
8 |
+
array('value'=>'all','label'=> Mage::helper('catsidebarnav')->__('All')),
|
9 |
+
array('value'=>1,'label'=> Mage::helper('catsidebarnav')->__('1')),
|
10 |
+
array('value'=>2,'label'=> Mage::helper('catsidebarnav')->__('2')),
|
11 |
+
array('value'=>3,'label'=> Mage::helper('catsidebarnav')->__('3')),
|
12 |
+
array('value'=>4,'label'=> Mage::helper('catsidebarnav')->__('4')),
|
13 |
+
);
|
14 |
+
|
15 |
+
return $options;
|
16 |
+
}
|
17 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/System/Config/Type.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Catsidebarnav_Model_System_Config_Type
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
$options = array(
|
8 |
+
array('value'=>'static','label'=> Mage::helper('catsidebarnav')->__('Static')),
|
9 |
+
array('value'=>'click-2-click','label'=> Mage::helper('catsidebarnav')->__('Click to Click')),
|
10 |
+
array('value'=>'fly-out','label'=> Mage::helper('catsidebarnav')->__('Fly Out')),
|
11 |
+
);
|
12 |
+
|
13 |
+
return $options;
|
14 |
+
}
|
15 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/Model/Wysiwyg/Config.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Catsidebarnav_Model_Wysiwyg_Config extends Mage_Cms_Model_Wysiwyg_Config
|
3 |
+
{
|
4 |
+
public function getConfig($data = array())
|
5 |
+
{
|
6 |
+
$config = new Varien_Object();
|
7 |
+
|
8 |
+
$config->setData(array(
|
9 |
+
'enabled' => $this->isEnabled(),
|
10 |
+
'hidden' => $this->isHidden(),
|
11 |
+
'use_container' => false,
|
12 |
+
'add_variables' => false,
|
13 |
+
'add_widgets' => false,
|
14 |
+
'no_display' => false,
|
15 |
+
'translator' => Mage::helper('cms'),
|
16 |
+
'files_browser_window_url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg_images/index'),
|
17 |
+
'files_browser_window_width' => (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_width'),
|
18 |
+
'files_browser_window_height' => (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_height'),
|
19 |
+
'encode_directives' => true,
|
20 |
+
'directives_url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg/directive'),
|
21 |
+
'popup_css' => Mage::getBaseUrl('js').'mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/dialog.css',
|
22 |
+
'content_css' => Mage::getBaseUrl('js').'mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/content.css',
|
23 |
+
'width' => '100%',
|
24 |
+
'plugins' => array()
|
25 |
+
));
|
26 |
+
|
27 |
+
$config->setData('directives_url_quoted', preg_quote($config->getData('directives_url')));
|
28 |
+
|
29 |
+
if (is_array($data)) {
|
30 |
+
$config->addData($data);
|
31 |
+
}
|
32 |
+
return $config;
|
33 |
+
}
|
34 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/controllers/IndexController.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Catsidebarnav_IndexController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
$this->loadLayout();
|
7 |
+
$this->renderLayout();
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Magebuzz/Catsidebarnav/etc/adminhtml.xml
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<acl>
|
4 |
+
<resources>
|
5 |
+
<all>
|
6 |
+
<title>Allow Everything</title>
|
7 |
+
</all>
|
8 |
+
<admin>
|
9 |
+
<children>
|
10 |
+
<system>
|
11 |
+
<children>
|
12 |
+
<config>
|
13 |
+
<children>
|
14 |
+
<catsidebarnav translate="title">
|
15 |
+
<title>Catsidebarnav Permission Setting</title>
|
16 |
+
<sort_order>50</sort_order>
|
17 |
+
</catsidebarnav>
|
18 |
+
</children>
|
19 |
+
</config>
|
20 |
+
</children>
|
21 |
+
</system>
|
22 |
+
</children>
|
23 |
+
</admin>
|
24 |
+
</resources>
|
25 |
+
</acl>
|
26 |
+
</config>
|
app/code/community/Magebuzz/Catsidebarnav/etc/config.xml
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Magebuzz_Catsidebarnav>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Magebuzz_Catsidebarnav>
|
7 |
+
</modules>
|
8 |
+
<frontend>
|
9 |
+
<secure_url>
|
10 |
+
<catsidebarnav>/catsidebarnav/</catsidebarnav>
|
11 |
+
</secure_url>
|
12 |
+
<routers>
|
13 |
+
<catsidebarnav>
|
14 |
+
<use>standard</use>
|
15 |
+
<args>
|
16 |
+
<module>Magebuzz_Catsidebarnav</module>
|
17 |
+
<frontName>catsidebarnav</frontName>
|
18 |
+
</args>
|
19 |
+
</catsidebarnav>
|
20 |
+
</routers>
|
21 |
+
<layout>
|
22 |
+
<updates>
|
23 |
+
<catsidebarnav>
|
24 |
+
<file>catsidebarnav.xml</file>
|
25 |
+
</catsidebarnav>
|
26 |
+
</updates>
|
27 |
+
</layout>
|
28 |
+
</frontend>
|
29 |
+
<admin>
|
30 |
+
<routers>
|
31 |
+
<catsidebarnav>
|
32 |
+
<use>admin</use>
|
33 |
+
<args>
|
34 |
+
<module>Magebuzz_Catsidebarnav</module>
|
35 |
+
<frontName>catsidebarnav</frontName>
|
36 |
+
</args>
|
37 |
+
</catsidebarnav>
|
38 |
+
</routers>
|
39 |
+
</admin>
|
40 |
+
<adminhtml>
|
41 |
+
<layout>
|
42 |
+
<updates>
|
43 |
+
<catsidebarnav>
|
44 |
+
<file>catsidebarnav.xml</file>
|
45 |
+
</catsidebarnav>
|
46 |
+
</updates>
|
47 |
+
</layout>
|
48 |
+
</adminhtml>
|
49 |
+
<global>
|
50 |
+
<models>
|
51 |
+
<catsidebarnav>
|
52 |
+
<class>Magebuzz_Catsidebarnav_Model</class>
|
53 |
+
<resourceModel>catsidebarnav_mysql4</resourceModel>
|
54 |
+
</catsidebarnav>
|
55 |
+
<catsidebarnav_mysql4>
|
56 |
+
<class>Magebuzz_Catsidebarnav_Model_Mysql4</class>
|
57 |
+
<entities>
|
58 |
+
<catsidebarnav>
|
59 |
+
<table>catsidebarnav</table>
|
60 |
+
</catsidebarnav>
|
61 |
+
</entities>
|
62 |
+
</catsidebarnav_mysql4>
|
63 |
+
</models>
|
64 |
+
<resources>
|
65 |
+
<catsidebarnav_setup>
|
66 |
+
<setup>
|
67 |
+
<module>Magebuzz_Catsidebarnav</module>
|
68 |
+
</setup>
|
69 |
+
<connection>
|
70 |
+
<use>core_setup</use>
|
71 |
+
</connection>
|
72 |
+
</catsidebarnav_setup>
|
73 |
+
<catsidebarnav_write>
|
74 |
+
<connection>
|
75 |
+
<use>core_write</use>
|
76 |
+
</connection>
|
77 |
+
</catsidebarnav_write>
|
78 |
+
<catsidebarnav_read>
|
79 |
+
<connection>
|
80 |
+
<use>core_read</use>
|
81 |
+
</connection>
|
82 |
+
</catsidebarnav_read>
|
83 |
+
</resources>
|
84 |
+
<blocks>
|
85 |
+
<catsidebarnav>
|
86 |
+
<class>Magebuzz_Catsidebarnav_Block</class>
|
87 |
+
</catsidebarnav>
|
88 |
+
<catalog>
|
89 |
+
<rewrite>
|
90 |
+
<navigation>Magebuzz_Catsidebarnav_Block_Catsidebarnav</navigation>
|
91 |
+
</rewrite>
|
92 |
+
</catalog>
|
93 |
+
</blocks>
|
94 |
+
<helpers>
|
95 |
+
<catsidebarnav>
|
96 |
+
<class>Magebuzz_Catsidebarnav_Helper</class>
|
97 |
+
</catsidebarnav>
|
98 |
+
<catalog>
|
99 |
+
<rewrite>
|
100 |
+
<category>Magebuzz_Catsidebarnav_Helper_Category</category>
|
101 |
+
</rewrite>
|
102 |
+
</catalog>
|
103 |
+
</helpers>
|
104 |
+
<template>
|
105 |
+
<email>
|
106 |
+
<catsidebarnav_general_email_template>
|
107 |
+
<label>Title Email</label>
|
108 |
+
<file>catsidebarnav_example.html</file>
|
109 |
+
<type>html</type>
|
110 |
+
</catsidebarnav_general_email_template>
|
111 |
+
</email>
|
112 |
+
</template>
|
113 |
+
</global>
|
114 |
+
<!--Set Default Value For Setting Options-->
|
115 |
+
<default>
|
116 |
+
<catsidebarnav>
|
117 |
+
<display_settings>
|
118 |
+
<enabled>1</enabled>
|
119 |
+
<position>left</position>
|
120 |
+
<category_level>0</category_level>
|
121 |
+
<show_type>static</show_type>
|
122 |
+
</display_settings>
|
123 |
+
</catsidebarnav>
|
124 |
+
</default>
|
125 |
+
<translate>
|
126 |
+
<modules>
|
127 |
+
<Magebuzz_Catsidebarnav>
|
128 |
+
<files>
|
129 |
+
<default>Magebuzz_Catsidebarnav.csv</default>
|
130 |
+
</files>
|
131 |
+
</Magebuzz_Catsidebarnav>
|
132 |
+
</modules>
|
133 |
+
</translate>
|
134 |
+
</config>
|
app/code/community/Magebuzz/Catsidebarnav/etc/system.xml
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<magebuzz translate="label">
|
5 |
+
<label>Magebuzz Add-ons</label>
|
6 |
+
<sort_order>400</sort_order>
|
7 |
+
</magebuzz>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<catsidebarnav translate="label" module="catsidebarnav">
|
11 |
+
<label>Category Sidebar Navigation</label>
|
12 |
+
<tab>magebuzz</tab>
|
13 |
+
<frontend_type>text</frontend_type>
|
14 |
+
<sort_order>299</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 |
+
<display_settings translate="label">
|
20 |
+
<label>General Setting</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 |
+
<enabled translate="label comment">
|
28 |
+
<label>Enabled</label>
|
29 |
+
<frontend_type>select</frontend_type>
|
30 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
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 |
+
</enabled>
|
36 |
+
<position translate="label comment">
|
37 |
+
<label>Position of Sidebar</label>
|
38 |
+
<frontend_type>select</frontend_type>
|
39 |
+
<source_model>catsidebarnav/system_config_position</source_model>
|
40 |
+
<sort_order>2</sort_order>
|
41 |
+
<show_in_default>1</show_in_default>
|
42 |
+
<show_in_website>1</show_in_website>
|
43 |
+
<show_in_store>1</show_in_store>
|
44 |
+
<comment>Display list category on left (or right) sidebar</comment>
|
45 |
+
</position>
|
46 |
+
<category_level translate="label comment">
|
47 |
+
<label>Category Depth</label>
|
48 |
+
<frontend_type>text</frontend_type>
|
49 |
+
<sort_order>3</sort_order>
|
50 |
+
<show_in_default>1</show_in_default>
|
51 |
+
<show_in_website>1</show_in_website>
|
52 |
+
<show_in_store>1</show_in_store>
|
53 |
+
<comment>Category level to show(0 - show all)</comment>
|
54 |
+
</category_level>
|
55 |
+
<show_type translate="label comment">
|
56 |
+
<label>Show Type</label>
|
57 |
+
<frontend_type>select</frontend_type>
|
58 |
+
<source_model>catsidebarnav/system_config_type</source_model>
|
59 |
+
<sort_order>4</sort_order>
|
60 |
+
<show_in_default>1</show_in_default>
|
61 |
+
<show_in_website>1</show_in_website>
|
62 |
+
<show_in_store>1</show_in_store>
|
63 |
+
</show_type>
|
64 |
+
</fields>
|
65 |
+
</display_settings>
|
66 |
+
</groups>
|
67 |
+
</catsidebarnav>
|
68 |
+
</sections>
|
69 |
+
</config>
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Edit.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Edit extends Mage_Adminhtml_Block_Widget_Grid_Container {
|
4 |
+
|
5 |
+
protected $_saveButtonLabel = 'Save Featured Products';
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
$this->_blockGroup = 'featuredproducts';
|
9 |
+
$this->_controller = 'adminhtml_edit';
|
10 |
+
|
11 |
+
$this->_headerText = Mage::helper('adminhtml')->__('Featured products');
|
12 |
+
|
13 |
+
parent::__construct();
|
14 |
+
|
15 |
+
$this->_removeButton('add');
|
16 |
+
|
17 |
+
$this->_addButton('save', array(
|
18 |
+
'label' => $this->_saveButtonLabel,
|
19 |
+
'onclick' => 'categorySubmit(\'' . $this->getSaveUrl() . '\')',
|
20 |
+
'class' => 'Save',
|
21 |
+
));
|
22 |
+
}
|
23 |
+
|
24 |
+
public function getSaveUrl() {
|
25 |
+
return $this->getUrl('*/*/save', array('store' => $this->getRequest()->getParam('store')));
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function _afterToHtml($html) {
|
29 |
+
return $this->_prependHtml() . parent::_afterToHtml($html);
|
30 |
+
}
|
31 |
+
|
32 |
+
private function _prependHtml() {
|
33 |
+
$html = '
|
34 |
+
|
35 |
+
<form id="featured_edit_form" action="' . $this->getSaveUrl() . '" method="post" enctype="multipart/form-data">
|
36 |
+
<input name="form_key" type="hidden" value="' . $this->getFormKey() . '" />
|
37 |
+
<div class="no-display">
|
38 |
+
<input type="hidden" name="featured_products" id="in_featured_products" value="" />
|
39 |
+
</div>
|
40 |
+
</form>
|
41 |
+
';
|
42 |
+
|
43 |
+
return $html;
|
44 |
+
}
|
45 |
+
|
46 |
+
public function getHeaderHtml() {
|
47 |
+
return '<h3 style="background-image: url(' . $this->getSkinUrl('images/product_rating_full_star.gif') . ');" class="' . $this->getHeaderCssClass() . '">' . $this->getHeaderText() . '</h3>';
|
48 |
+
}
|
49 |
+
|
50 |
+
protected function _prepareLayout() {
|
51 |
+
$this->setChild('store_switcher', $this->getLayout()->createBlock('adminhtml/store_switcher', 'store_switcher')->setUseConfirm(false)
|
52 |
+
);
|
53 |
+
return parent::_prepareLayout();
|
54 |
+
}
|
55 |
+
|
56 |
+
public function getGridHtml() {
|
57 |
+
|
58 |
+
return $this->getChildHtml('store_switcher') . $this->getChildHtml('grid');
|
59 |
+
}
|
60 |
+
|
61 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Edit/Grid.php
ADDED
@@ -0,0 +1,322 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Edit_Grid extends Mage_Adminhtml_Block_Widget_Grid {
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
|
8 |
+
$this->setId('magebuzz_featured_products');
|
9 |
+
$this->setDefaultSort('entity_id');
|
10 |
+
$this->setUseAjax(true);
|
11 |
+
|
12 |
+
$this->setRowClickCallback('FeaturedRowClick');
|
13 |
+
}
|
14 |
+
|
15 |
+
public function getProduct() {
|
16 |
+
return Mage::registry('product');
|
17 |
+
}
|
18 |
+
|
19 |
+
protected function _getStore() {
|
20 |
+
$storeId = (int) $this->getRequest()->getParam('store', 0);
|
21 |
+
return Mage::app()->getStore($storeId);
|
22 |
+
}
|
23 |
+
|
24 |
+
protected function _addColumnFilterToCollection($column) {
|
25 |
+
|
26 |
+
if ($this->getCollection()) {
|
27 |
+
if ($column->getId() == 'websites') {
|
28 |
+
|
29 |
+
$this->getCollection()->joinField('websites', 'catalog/product_website', 'website_id', 'product_id=entity_id', null, 'left');
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
|
34 |
+
if ($column->getId() == "featured") {
|
35 |
+
$productIds = $this->_getSelectedProducts();
|
36 |
+
|
37 |
+
if (empty($productIds)) {
|
38 |
+
$productIds = 0;
|
39 |
+
}
|
40 |
+
if ($column->getFilter()->getValue()) {
|
41 |
+
$this->getCollection()->addFieldToFilter('entity_id', array('in' => $productIds));
|
42 |
+
} elseif (!empty($productIds)) {
|
43 |
+
$this->getCollection()->addFieldToFilter('entity_id', array('nin' => $productIds));
|
44 |
+
}
|
45 |
+
} else {
|
46 |
+
|
47 |
+
parent::_addColumnFilterToCollection($column);
|
48 |
+
}
|
49 |
+
|
50 |
+
return $this;
|
51 |
+
}
|
52 |
+
|
53 |
+
protected function _prepareCollection() {
|
54 |
+
$store = $this->_getStore();
|
55 |
+
|
56 |
+
|
57 |
+
$collection = Mage::getModel('catalog/product')->getCollection()
|
58 |
+
->addAttributeToSelect('name')
|
59 |
+
->addAttributeToSelect('sku')
|
60 |
+
->addAttributeToSelect('magebuzz_featured_product')
|
61 |
+
->addAttributeToSelect('type_id')
|
62 |
+
->addAttributeToFilter('visibility', array('nin' => array(1,3)));
|
63 |
+
|
64 |
+
|
65 |
+
if ($store->getId()) {
|
66 |
+
//$collection->setStoreId($store->getId());
|
67 |
+
$collection->addStoreFilter($store);
|
68 |
+
$collection->joinAttribute('custom_name', 'catalog_product/name', 'entity_id', null, 'inner', $store->getId());
|
69 |
+
$collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner', $store->getId());
|
70 |
+
$collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', 1, 'inner', $store->getId());
|
71 |
+
$collection->joinAttribute('price', 'catalog_product/price', 'entity_id', null, 'left', $store->getId());
|
72 |
+
} else {
|
73 |
+
$collection->addAttributeToSelect('price');
|
74 |
+
$collection->addAttributeToSelect('status');
|
75 |
+
$collection->addAttributeToSelect('visibility');
|
76 |
+
}
|
77 |
+
|
78 |
+
|
79 |
+
|
80 |
+
$this->setCollection($collection);
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
parent::_prepareCollection();
|
85 |
+
|
86 |
+
$this->getCollection()->addWebsiteNamesToResult();
|
87 |
+
return $this;
|
88 |
+
}
|
89 |
+
|
90 |
+
protected function _prepareColumns() {
|
91 |
+
|
92 |
+
|
93 |
+
$this->addColumn('featured', array(
|
94 |
+
'header_css_class' => 'a-center',
|
95 |
+
'type' => 'checkbox',
|
96 |
+
'name' => 'featured',
|
97 |
+
'values' => $this->_getSelectedProducts(),
|
98 |
+
'align' => 'center',
|
99 |
+
'index' => 'entity_id'
|
100 |
+
));
|
101 |
+
|
102 |
+
$this->addColumn('entity_id', array(
|
103 |
+
'header' => Mage::helper('catalog')->__('ID'),
|
104 |
+
'sortable' => true,
|
105 |
+
'width' => '60',
|
106 |
+
'index' => 'entity_id'
|
107 |
+
));
|
108 |
+
|
109 |
+
$this->addColumn('name', array(
|
110 |
+
'header' => Mage::helper('catalog')->__('Name'),
|
111 |
+
'index' => 'name'
|
112 |
+
));
|
113 |
+
|
114 |
+
$this->addColumn('type',
|
115 |
+
array(
|
116 |
+
'header'=> Mage::helper('catalog')->__('Type'),
|
117 |
+
'width' => '60px',
|
118 |
+
'index' => 'type_id',
|
119 |
+
'type' => 'options',
|
120 |
+
'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(),
|
121 |
+
));
|
122 |
+
|
123 |
+
$this->addColumn('sku', array(
|
124 |
+
'header' => Mage::helper('catalog')->__('SKU'),
|
125 |
+
'width' => '140',
|
126 |
+
'index' => 'sku'
|
127 |
+
));
|
128 |
+
|
129 |
+
$this->addColumn('visibility', array(
|
130 |
+
'header' => Mage::helper('catalog')->__('Visibility'),
|
131 |
+
'width' => '140',
|
132 |
+
'index' => 'visibility',
|
133 |
+
'filter' => false,
|
134 |
+
'renderer' => 'featuredproducts/adminhtml_edit_renderer_visibility',
|
135 |
+
));
|
136 |
+
|
137 |
+
if (!Mage::app()->isSingleStoreMode()) {
|
138 |
+
$this->addColumn('websites', array(
|
139 |
+
'header' => Mage::helper('catalog')->__('Websites'),
|
140 |
+
'width' => '100px',
|
141 |
+
'sortable' => false,
|
142 |
+
'index' => 'websites',
|
143 |
+
'type' => 'options',
|
144 |
+
'options' => Mage::getModel('core/website')->getCollection()->toOptionHash(),
|
145 |
+
));
|
146 |
+
}
|
147 |
+
|
148 |
+
/*
|
149 |
+
$this->addColumn('visibility',
|
150 |
+
array(
|
151 |
+
'header'=> Mage::helper('catalog')->__('Visibility'),
|
152 |
+
'width' => '70px',
|
153 |
+
'index' => 'visibility',
|
154 |
+
'type' => 'options',
|
155 |
+
'options' => Mage::getModel('catalog/product_visibility')->getOptionArray(),
|
156 |
+
));
|
157 |
+
*/
|
158 |
+
|
159 |
+
|
160 |
+
|
161 |
+
$store = $this->_getStore();
|
162 |
+
$this->addColumn('price',
|
163 |
+
array(
|
164 |
+
'header'=> Mage::helper('catalog')->__('Price'),
|
165 |
+
'type' => 'price',
|
166 |
+
'currency_code' => $store->getBaseCurrency()->getCode(),
|
167 |
+
'index' => 'price',
|
168 |
+
));
|
169 |
+
|
170 |
+
/*
|
171 |
+
$this->addColumn('price', array(
|
172 |
+
'header' => Mage::helper('catalog')->__('Price'),
|
173 |
+
'type' => 'currency',
|
174 |
+
'width' => '1',
|
175 |
+
'currency_code' => (string) Mage::getStoreConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_BASE),
|
176 |
+
'index' => 'price'
|
177 |
+
));
|
178 |
+
*/
|
179 |
+
|
180 |
+
|
181 |
+
|
182 |
+
return parent::_prepareColumns();
|
183 |
+
}
|
184 |
+
|
185 |
+
public function getGridUrl() {
|
186 |
+
return $this->getUrl('*/*/grid', array('_current' => true));
|
187 |
+
}
|
188 |
+
|
189 |
+
protected function _getSelectedProducts($json=false) {
|
190 |
+
$temp = $this->getRequest()->getPost('featured_ids');
|
191 |
+
$store = $this->_getStore();
|
192 |
+
|
193 |
+
if ($temp) {
|
194 |
+
parse_str($temp, $featured_ids);
|
195 |
+
}
|
196 |
+
|
197 |
+
$_prod = Mage::getModel('catalog/product')->getCollection()
|
198 |
+
->joinAttribute('magebuzz_featured_product', 'catalog_product/magebuzz_featured_product', 'entity_id', null, 'left', $store->getId())
|
199 |
+
->addAttributeToFilter('magebuzz_featured_product', '1');
|
200 |
+
|
201 |
+
$products = $_prod->getColumnValues('entity_id');
|
202 |
+
$selected_products = array();
|
203 |
+
|
204 |
+
|
205 |
+
if ($json == true) {
|
206 |
+
foreach ($products as $key => $value) {
|
207 |
+
$selected_products[$value] = '1';
|
208 |
+
}
|
209 |
+
return Zend_Json::encode($selected_products);
|
210 |
+
} else {
|
211 |
+
|
212 |
+
foreach ($products as $key => $value) {
|
213 |
+
if ((isset($featured_ids[$value])) && ($featured_ids[$value] == 0)) {
|
214 |
+
|
215 |
+
}else
|
216 |
+
$selected_products[$value] = '0';
|
217 |
+
}
|
218 |
+
|
219 |
+
if (isset($featured_ids))
|
220 |
+
foreach ($featured_ids as $key => $value) {
|
221 |
+
if ($value == 1)
|
222 |
+
$selected_products[$key] = '0';
|
223 |
+
}
|
224 |
+
|
225 |
+
return array_keys($selected_products);
|
226 |
+
}
|
227 |
+
|
228 |
+
return $products;
|
229 |
+
}
|
230 |
+
|
231 |
+
//add javascript before/after grid html
|
232 |
+
protected function _afterToHtml($html) {
|
233 |
+
return $this->_prependHtml() . parent::_afterToHtml($html). $this->_appendHtml();
|
234 |
+
}
|
235 |
+
|
236 |
+
private function _prependHtml() {
|
237 |
+
$gridName = $this->getJsObjectName();
|
238 |
+
|
239 |
+
$html =
|
240 |
+
<<<EndHTML
|
241 |
+
<script type="text/javascript">
|
242 |
+
//<![CDATA[
|
243 |
+
|
244 |
+
categoryForm = new varienForm('featured_edit_form');
|
245 |
+
categoryForm.submit= function (url) {
|
246 |
+
|
247 |
+
this._submit();
|
248 |
+
|
249 |
+
return true;
|
250 |
+
|
251 |
+
|
252 |
+
};
|
253 |
+
|
254 |
+
function categorySubmit(url) {
|
255 |
+
|
256 |
+
var params = {};
|
257 |
+
var fields = $('featured_edit_form').getElementsBySelector('input', 'select');
|
258 |
+
|
259 |
+
categoryForm.submit();
|
260 |
+
}
|
261 |
+
|
262 |
+
function FeaturedRowClick(grid, event)
|
263 |
+
{
|
264 |
+
var trElement = Event.findElement(event, 'tr');
|
265 |
+
var isInput = Event.element(event).tagName == 'INPUT';
|
266 |
+
|
267 |
+
var checkbox = Element.getElementsBySelector(trElement, 'input.checkbox').first();
|
268 |
+
if(!checkbox) return;
|
269 |
+
|
270 |
+
if(checkbox.checked) checkBoxes.set(checkbox.value, 1);
|
271 |
+
else checkBoxes.set(checkbox.value, 0);
|
272 |
+
|
273 |
+
//else checkBoxes.unset(checkbox.value);
|
274 |
+
|
275 |
+
|
276 |
+
$("in_featured_products").value = checkBoxes.toQueryString();
|
277 |
+
//console.log("Products", checkBoxes);
|
278 |
+
$gridName.reloadParams = {'featured_ids':checkBoxes.toQueryString()};
|
279 |
+
}
|
280 |
+
|
281 |
+
//]]>
|
282 |
+
|
283 |
+
|
284 |
+
|
285 |
+
|
286 |
+
</script>
|
287 |
+
EndHTML;
|
288 |
+
|
289 |
+
return $html;
|
290 |
+
}
|
291 |
+
|
292 |
+
private function _appendHtml() {
|
293 |
+
$html =
|
294 |
+
'
|
295 |
+
<script type="text/javascript">
|
296 |
+
var checkBoxes = $H();
|
297 |
+
|
298 |
+
var checkbox_all = $$("#magebuzz_featured_products_table thead input.checkbox").first();
|
299 |
+
var everycheckbox = $$("#magebuzz_featured_products_table tbody input.checkbox");
|
300 |
+
|
301 |
+
checkbox_all.observe("click", function(event) {
|
302 |
+
|
303 |
+
if(checkbox_all.checked)
|
304 |
+
{
|
305 |
+
everycheckbox.each(function(element, index) {
|
306 |
+
checkBoxes.set(element.value, 1)
|
307 |
+
});
|
308 |
+
} else
|
309 |
+
{
|
310 |
+
everycheckbox.each(function(element, index) {
|
311 |
+
checkBoxes.set(element.value, 0)
|
312 |
+
});
|
313 |
+
}
|
314 |
+
$("in_featured_products").value = checkBoxes.toQueryString();
|
315 |
+
});
|
316 |
+
</script>
|
317 |
+
';
|
318 |
+
|
319 |
+
return $html;
|
320 |
+
}
|
321 |
+
|
322 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Edit/Renderer/Visibility.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Edit_Renderer_Visibility extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
|
4 |
+
{
|
5 |
+
protected $_values;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Renders grid column
|
9 |
+
*
|
10 |
+
* @param Varien_Object $row
|
11 |
+
* @return string
|
12 |
+
*/
|
13 |
+
public function render(Varien_Object $row)
|
14 |
+
{
|
15 |
+
|
16 |
+
$this->_values = Mage::getModel('catalog/product_visibility')->getOptionArray();
|
17 |
+
|
18 |
+
$html = $this->_values[$row->getData($this->getColumn()->getIndex())];
|
19 |
+
|
20 |
+
return $html;
|
21 |
+
}
|
22 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Featuredproducts extends Mage_Adminhtml_Block_Widget_Grid_Container
|
3 |
+
{
|
4 |
+
public function __construct()
|
5 |
+
{
|
6 |
+
$this->_controller = 'adminhtml_featuredproducts';
|
7 |
+
$this->_blockGroup = 'featuredproducts';
|
8 |
+
$this->_headerText = Mage::helper('featuredproducts')->__('Item Manager');
|
9 |
+
$this->_addButtonLabel = Mage::helper('featuredproducts')->__('Add Item');
|
10 |
+
parent::__construct();
|
11 |
+
}
|
12 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Featuredproducts_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
$this->_objectId = 'id';
|
10 |
+
$this->_blockGroup = 'featuredproducts';
|
11 |
+
$this->_controller = 'adminhtml_featuredproducts';
|
12 |
+
|
13 |
+
$this->_updateButton('save', 'label', Mage::helper('featuredproducts')->__('Save Item'));
|
14 |
+
$this->_updateButton('delete', 'label', Mage::helper('featuredproducts')->__('Delete Item'));
|
15 |
+
|
16 |
+
$this->_addButton('saveandcontinue', array(
|
17 |
+
'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
|
18 |
+
'onclick' => 'saveAndContinueEdit()',
|
19 |
+
'class' => 'save',
|
20 |
+
), -100);
|
21 |
+
|
22 |
+
$this->_formScripts[] = "
|
23 |
+
function toggleEditor() {
|
24 |
+
if (tinyMCE.getInstanceById('featuredproducts_content') == null) {
|
25 |
+
tinyMCE.execCommand('mceAddControl', false, 'featuredproducts_content');
|
26 |
+
} else {
|
27 |
+
tinyMCE.execCommand('mceRemoveControl', false, 'featuredproducts_content');
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
function saveAndContinueEdit(){
|
32 |
+
editForm.submit($('edit_form').action+'back/edit/');
|
33 |
+
}
|
34 |
+
";
|
35 |
+
}
|
36 |
+
|
37 |
+
public function getHeaderText()
|
38 |
+
{
|
39 |
+
if( Mage::registry('featuredproducts_data') && Mage::registry('featuredproducts_data')->getId() ) {
|
40 |
+
return Mage::helper('featuredproducts')->__("Edit Item '%s'", $this->htmlEscape(Mage::registry('featuredproducts_data')->getTitle()));
|
41 |
+
} else {
|
42 |
+
return Mage::helper('featuredproducts')->__('Add Item');
|
43 |
+
}
|
44 |
+
}
|
45 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit/Form.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Featuredproducts_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
protected function _prepareForm()
|
6 |
+
{
|
7 |
+
$form = new Varien_Data_Form(array(
|
8 |
+
'id' => 'edit_form',
|
9 |
+
'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
|
10 |
+
'method' => 'post',
|
11 |
+
'enctype' => 'multipart/form-data'
|
12 |
+
)
|
13 |
+
);
|
14 |
+
|
15 |
+
$form->setUseContainer(true);
|
16 |
+
$this->setForm($form);
|
17 |
+
return parent::_prepareForm();
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit/Tab/Form.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Featuredproducts_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
protected function _prepareForm()
|
6 |
+
{
|
7 |
+
$form = new Varien_Data_Form();
|
8 |
+
$this->setForm($form);
|
9 |
+
$fieldset = $form->addFieldset('featuredproducts_form', array('legend'=>Mage::helper('featuredproducts')->__('Item information')));
|
10 |
+
|
11 |
+
$fieldset->addField('title', 'text', array(
|
12 |
+
'label' => Mage::helper('featuredproducts')->__('Title'),
|
13 |
+
'class' => 'required-entry',
|
14 |
+
'required' => true,
|
15 |
+
'name' => 'title',
|
16 |
+
));
|
17 |
+
|
18 |
+
$fieldset->addField('filename', 'file', array(
|
19 |
+
'label' => Mage::helper('featuredproducts')->__('File'),
|
20 |
+
'required' => false,
|
21 |
+
'name' => 'filename',
|
22 |
+
));
|
23 |
+
|
24 |
+
$fieldset->addField('status', 'select', array(
|
25 |
+
'label' => Mage::helper('featuredproducts')->__('Status'),
|
26 |
+
'name' => 'status',
|
27 |
+
'values' => array(
|
28 |
+
array(
|
29 |
+
'value' => 1,
|
30 |
+
'label' => Mage::helper('featuredproducts')->__('Enabled'),
|
31 |
+
),
|
32 |
+
|
33 |
+
array(
|
34 |
+
'value' => 2,
|
35 |
+
'label' => Mage::helper('featuredproducts')->__('Disabled'),
|
36 |
+
),
|
37 |
+
),
|
38 |
+
));
|
39 |
+
|
40 |
+
$fieldset->addField('content', 'editor', array(
|
41 |
+
'name' => 'content',
|
42 |
+
'label' => Mage::helper('featuredproducts')->__('Content'),
|
43 |
+
'title' => Mage::helper('featuredproducts')->__('Content'),
|
44 |
+
'style' => 'width:700px; height:500px;',
|
45 |
+
'wysiwyg' => false,
|
46 |
+
'required' => true,
|
47 |
+
));
|
48 |
+
|
49 |
+
if ( Mage::getSingleton('adminhtml/session')->getFeaturedProductsData() )
|
50 |
+
{
|
51 |
+
$form->setValues(Mage::getSingleton('adminhtml/session')->getFeaturedProductsData());
|
52 |
+
Mage::getSingleton('adminhtml/session')->setFeaturedProductsData(null);
|
53 |
+
} elseif ( Mage::registry('featuredproducts_data') ) {
|
54 |
+
$form->setValues(Mage::registry('featuredproducts_data')->getData());
|
55 |
+
}
|
56 |
+
return parent::_prepareForm();
|
57 |
+
}
|
58 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Edit/Tabs.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Featuredproducts_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
|
4 |
+
{
|
5 |
+
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
parent::__construct();
|
9 |
+
$this->setId('featuredproducts_tabs');
|
10 |
+
$this->setDestElementId('edit_form');
|
11 |
+
$this->setTitle(Mage::helper('featuredproducts')->__('Item Information'));
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _beforeToHtml()
|
15 |
+
{
|
16 |
+
$this->addTab('form_section', array(
|
17 |
+
'label' => Mage::helper('featuredproducts')->__('Item Information'),
|
18 |
+
'title' => Mage::helper('featuredproducts')->__('Item Information'),
|
19 |
+
'content' => $this->getLayout()->createBlock('featuredproducts/adminhtml_featuredproducts_edit_tab_form')->toHtml(),
|
20 |
+
));
|
21 |
+
|
22 |
+
return parent::_beforeToHtml();
|
23 |
+
}
|
24 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Adminhtml/Featuredproducts/Grid.php
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Adminhtml_Featuredproducts_Grid extends Mage_Adminhtml_Block_Widget_Grid
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
$this->setId('featuredproductsGrid');
|
9 |
+
$this->setDefaultSort('featuredproducts_id');
|
10 |
+
$this->setDefaultDir('ASC');
|
11 |
+
$this->setSaveParametersInSession(true);
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _prepareCollection()
|
15 |
+
{
|
16 |
+
$collection = Mage::getModel('featuredproducts/featuredproducts')->getCollection();
|
17 |
+
$this->setCollection($collection);
|
18 |
+
return parent::_prepareCollection();
|
19 |
+
}
|
20 |
+
|
21 |
+
protected function _prepareColumns()
|
22 |
+
{
|
23 |
+
$this->addColumn('featuredproducts_id', array(
|
24 |
+
'header' => Mage::helper('featuredproducts')->__('ID'),
|
25 |
+
'align' =>'right',
|
26 |
+
'width' => '50px',
|
27 |
+
'index' => 'featuredproducts_id',
|
28 |
+
));
|
29 |
+
|
30 |
+
$this->addColumn('title', array(
|
31 |
+
'header' => Mage::helper('featuredproducts')->__('Title'),
|
32 |
+
'align' =>'left',
|
33 |
+
'index' => 'title',
|
34 |
+
));
|
35 |
+
|
36 |
+
/*
|
37 |
+
$this->addColumn('content', array(
|
38 |
+
'header' => Mage::helper('featuredproducts')->__('Item Content'),
|
39 |
+
'width' => '150px',
|
40 |
+
'index' => 'content',
|
41 |
+
));
|
42 |
+
*/
|
43 |
+
|
44 |
+
$this->addColumn('status', array(
|
45 |
+
'header' => Mage::helper('featuredproducts')->__('Status'),
|
46 |
+
'align' => 'left',
|
47 |
+
'width' => '80px',
|
48 |
+
'index' => 'status',
|
49 |
+
'type' => 'options',
|
50 |
+
'options' => array(
|
51 |
+
1 => 'Enabled',
|
52 |
+
2 => 'Disabled',
|
53 |
+
),
|
54 |
+
));
|
55 |
+
|
56 |
+
$this->addColumn('action',
|
57 |
+
array(
|
58 |
+
'header' => Mage::helper('featuredproducts')->__('Action'),
|
59 |
+
'width' => '100',
|
60 |
+
'type' => 'action',
|
61 |
+
'getter' => 'getId',
|
62 |
+
'actions' => array(
|
63 |
+
array(
|
64 |
+
'caption' => Mage::helper('featuredproducts')->__('Edit'),
|
65 |
+
'url' => array('base'=> '*/*/edit'),
|
66 |
+
'field' => 'id'
|
67 |
+
)
|
68 |
+
),
|
69 |
+
'filter' => false,
|
70 |
+
'sortable' => false,
|
71 |
+
'index' => 'stores',
|
72 |
+
'is_system' => true,
|
73 |
+
));
|
74 |
+
|
75 |
+
$this->addExportType('*/*/exportCsv', Mage::helper('featuredproducts')->__('CSV'));
|
76 |
+
$this->addExportType('*/*/exportXml', Mage::helper('featuredproducts')->__('XML'));
|
77 |
+
|
78 |
+
return parent::_prepareColumns();
|
79 |
+
}
|
80 |
+
|
81 |
+
protected function _prepareMassaction()
|
82 |
+
{
|
83 |
+
$this->setMassactionIdField('featuredproducts_id');
|
84 |
+
$this->getMassactionBlock()->setFormFieldName('featuredproducts');
|
85 |
+
|
86 |
+
$this->getMassactionBlock()->addItem('delete', array(
|
87 |
+
'label' => Mage::helper('featuredproducts')->__('Delete'),
|
88 |
+
'url' => $this->getUrl('*/*/massDelete'),
|
89 |
+
'confirm' => Mage::helper('featuredproducts')->__('Are you sure?')
|
90 |
+
));
|
91 |
+
|
92 |
+
$statuses = Mage::getSingleton('featuredproducts/status')->getOptionArray();
|
93 |
+
|
94 |
+
array_unshift($statuses, array('label'=>'', 'value'=>''));
|
95 |
+
$this->getMassactionBlock()->addItem('status', array(
|
96 |
+
'label'=> Mage::helper('featuredproducts')->__('Change status'),
|
97 |
+
'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)),
|
98 |
+
'additional' => array(
|
99 |
+
'visibility' => array(
|
100 |
+
'name' => 'status',
|
101 |
+
'type' => 'select',
|
102 |
+
'class' => 'required-entry',
|
103 |
+
'label' => Mage::helper('featuredproducts')->__('Status'),
|
104 |
+
'values' => $statuses
|
105 |
+
)
|
106 |
+
)
|
107 |
+
));
|
108 |
+
return $this;
|
109 |
+
}
|
110 |
+
|
111 |
+
public function getRowUrl($row)
|
112 |
+
{
|
113 |
+
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
|
114 |
+
}
|
115 |
+
|
116 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Featuredproducts.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_Block_Featuredproducts extends Mage_Core_Block_Template
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
return parent::_prepareLayout();
|
7 |
+
}
|
8 |
+
|
9 |
+
public function getFeaturedProducts()
|
10 |
+
{
|
11 |
+
if (!$this->hasData('featuredproducts')) {
|
12 |
+
$this->setData('featuredproducts', Mage::registry('featuredproducts'));
|
13 |
+
}
|
14 |
+
return $this->getData('featuredproducts');
|
15 |
+
|
16 |
+
}
|
17 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Leftsidebar.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_Block_Leftsidebar extends Mage_Core_Block_Template
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
return parent::_prepareLayout();
|
7 |
+
}
|
8 |
+
|
9 |
+
public function getFeaturedProducts()
|
10 |
+
{
|
11 |
+
if (!$this->hasData('featuredproducts')) {
|
12 |
+
$this->setData('featuredproducts', Mage::registry('featuredproducts'));
|
13 |
+
}
|
14 |
+
return $this->getData('featuredproducts');
|
15 |
+
}
|
16 |
+
|
17 |
+
protected function _getProductCollection()
|
18 |
+
{
|
19 |
+
if (is_null($this->_productCollection)) {
|
20 |
+
$collection = Mage::getModel('catalog/product')->getCollection();
|
21 |
+
|
22 |
+
$attributes = Mage::getSingleton('catalog/config')
|
23 |
+
->getProductAttributes();
|
24 |
+
|
25 |
+
$collection->addAttributeToSelect($attributes)
|
26 |
+
->addMinimalPrice()
|
27 |
+
->addFinalPrice()
|
28 |
+
->addTaxPercents()
|
29 |
+
->addAttributeToFilter('magebuzz_featured_product', 1, 'left')
|
30 |
+
->addStoreFilter();
|
31 |
+
|
32 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
33 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
|
34 |
+
$this->_productCollection = $collection;
|
35 |
+
}
|
36 |
+
return $this->_productCollection;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function getFeaturedProductCollection()
|
40 |
+
{
|
41 |
+
return $this->_getProductCollection();
|
42 |
+
}
|
43 |
+
|
44 |
+
public function getFilteredProductCollection($category)
|
45 |
+
{
|
46 |
+
$_filteredProductCollection = $this->_getProductCollection();
|
47 |
+
$_filteredProductCollection->addCategoryFilter($category)->addAttributeToSelect('*');
|
48 |
+
return $_filteredProductCollection;
|
49 |
+
}
|
50 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Listing.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Block_Listing extends Mage_Catalog_Block_Product_Abstract
|
4 |
+
{
|
5 |
+
/*
|
6 |
+
* Check sort option and limits set in System->Configuration and apply them
|
7 |
+
* Additionally, set template to block so call from CMS will look like {{block type="featuredproducts/listing"}}
|
8 |
+
*/
|
9 |
+
public function __construct()
|
10 |
+
{
|
11 |
+
$this->setTemplate('magebuzz/featuredproducts/block_featured_products.phtml');
|
12 |
+
|
13 |
+
$this->setLimit((int)Mage::getStoreConfig("featuredproducts/general/number_of_items"));
|
14 |
+
$sort_by = Mage::getStoreConfig("featuredproducts/general/product_sort_by");
|
15 |
+
//$this->setItemsPerRow((int)Mage::getStoreConfig("featuredproducts/general/number_of_items_per_row"));
|
16 |
+
|
17 |
+
switch ($sort_by) {
|
18 |
+
case 0:
|
19 |
+
$this->setSortBy("rand()");
|
20 |
+
break;
|
21 |
+
case 1:
|
22 |
+
$this->setSortBy("created_at desc");
|
23 |
+
break;
|
24 |
+
default:
|
25 |
+
$this->setSortBy("rand()");
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
/*
|
30 |
+
* Load featured products collection
|
31 |
+
* */
|
32 |
+
protected function _beforeToHtml()
|
33 |
+
{
|
34 |
+
$collection = Mage::getResourceModel('catalog/product_collection');
|
35 |
+
|
36 |
+
$attributes = Mage::getSingleton('catalog/config')
|
37 |
+
->getProductAttributes();
|
38 |
+
|
39 |
+
$collection->addAttributeToSelect($attributes)
|
40 |
+
->addMinimalPrice()
|
41 |
+
->addFinalPrice()
|
42 |
+
->addTaxPercents()
|
43 |
+
->addAttributeToFilter('magebuzz_featured_product', 1, 'left')
|
44 |
+
->addStoreFilter()
|
45 |
+
->getSelect()->order($this->getSortBy())->limit($this->getLimit());
|
46 |
+
|
47 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
48 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
|
49 |
+
|
50 |
+
$this->_productCollection = $collection;
|
51 |
+
|
52 |
+
$this->setProductCollection($collection);
|
53 |
+
return parent::_beforeToHtml();
|
54 |
+
}
|
55 |
+
|
56 |
+
/*
|
57 |
+
* Return label for CMS block output
|
58 |
+
* */
|
59 |
+
protected function getBlockLabel()
|
60 |
+
{
|
61 |
+
return $this->helper('featuredproducts')->getCmsBlockLabel();
|
62 |
+
}
|
63 |
+
|
64 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Product/List.php
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_Block_Product_List extends Mage_Catalog_Block_Product_List
|
3 |
+
{
|
4 |
+
protected $_productCollection;
|
5 |
+
protected $_sort_by;
|
6 |
+
|
7 |
+
|
8 |
+
protected function _prepareLayout()
|
9 |
+
{
|
10 |
+
if ($breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs')) {
|
11 |
+
$breadcrumbsBlock->addCrumb('home', array(
|
12 |
+
'label'=>Mage::helper('catalog')->__('Home'),
|
13 |
+
'title'=>Mage::helper('catalog')->__('Go to Home Page'),
|
14 |
+
'link'=>Mage::getBaseUrl()
|
15 |
+
));
|
16 |
+
}
|
17 |
+
|
18 |
+
parent::_prepareLayout();
|
19 |
+
}
|
20 |
+
|
21 |
+
/*
|
22 |
+
* Remove "Position" option from Sort By dropdown
|
23 |
+
* */
|
24 |
+
protected function _beforeToHtml()
|
25 |
+
{
|
26 |
+
parent::_beforeToHtml();
|
27 |
+
$toolbar = $this->getToolbarBlock();
|
28 |
+
$toolbar->removeOrderFromAvailableOrders('position');
|
29 |
+
return $this;
|
30 |
+
}
|
31 |
+
|
32 |
+
|
33 |
+
/*
|
34 |
+
* Load featured products collection
|
35 |
+
* */
|
36 |
+
protected function _getProductCollection()
|
37 |
+
{
|
38 |
+
if (is_null($this->_productCollection)) {
|
39 |
+
$collection = Mage::getModel('catalog/product')->getCollection();
|
40 |
+
|
41 |
+
$attributes = Mage::getSingleton('catalog/config')
|
42 |
+
->getProductAttributes();
|
43 |
+
|
44 |
+
$collection->addAttributeToSelect($attributes)
|
45 |
+
->addMinimalPrice()
|
46 |
+
->addFinalPrice()
|
47 |
+
->addTaxPercents()
|
48 |
+
->addAttributeToFilter('magebuzz_featured_product', 1, 'left')
|
49 |
+
->addStoreFilter();
|
50 |
+
|
51 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
52 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
|
53 |
+
$this->_productCollection = $collection;
|
54 |
+
}
|
55 |
+
return $this->_productCollection;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Retrieve loaded featured products collection
|
60 |
+
*
|
61 |
+
* @return Mage_Eav_Model_Entity_Collection_Abstract
|
62 |
+
*/
|
63 |
+
public function getFeaturedProductCollection()
|
64 |
+
{
|
65 |
+
return $this->_getProductCollection();
|
66 |
+
}
|
67 |
+
|
68 |
+
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Get HTML if there's anything to show
|
72 |
+
*/
|
73 |
+
protected function _toHtml()
|
74 |
+
{
|
75 |
+
if ($this->_getProductCollection()->count()){
|
76 |
+
return parent::_toHtml();
|
77 |
+
}
|
78 |
+
return '';
|
79 |
+
}
|
80 |
+
|
81 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Block/Rightsidebar.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_Block_Rightsidebar extends Mage_Core_Block_Template
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
return parent::_prepareLayout();
|
7 |
+
}
|
8 |
+
|
9 |
+
public function getFeaturedProducts()
|
10 |
+
{
|
11 |
+
if (!$this->hasData('featuredproducts')) {
|
12 |
+
$this->setData('featuredproducts', Mage::registry('featuredproducts'));
|
13 |
+
}
|
14 |
+
return $this->getData('featuredproducts');
|
15 |
+
|
16 |
+
}
|
17 |
+
|
18 |
+
protected function _getProductCollection()
|
19 |
+
{
|
20 |
+
if (is_null($this->_productCollection)) {
|
21 |
+
$collection = Mage::getModel('catalog/product')->getCollection();
|
22 |
+
|
23 |
+
$attributes = Mage::getSingleton('catalog/config')
|
24 |
+
->getProductAttributes();
|
25 |
+
|
26 |
+
$collection->addAttributeToSelect($attributes)
|
27 |
+
->addMinimalPrice()
|
28 |
+
->addFinalPrice()
|
29 |
+
->addTaxPercents()
|
30 |
+
->addAttributeToFilter('magebuzz_featured_product', 1, 'left')
|
31 |
+
->addStoreFilter();
|
32 |
+
|
33 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
34 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
|
35 |
+
$this->_productCollection = $collection;
|
36 |
+
}
|
37 |
+
return $this->_productCollection;
|
38 |
+
}
|
39 |
+
|
40 |
+
public function getFeaturedProductCollection()
|
41 |
+
{
|
42 |
+
return $this->_getProductCollection();
|
43 |
+
}
|
44 |
+
|
45 |
+
public function getFilteredProductCollection($category)
|
46 |
+
{
|
47 |
+
$_filteredProductCollection = $this->_getProductCollection();
|
48 |
+
$_filteredProductCollection->addCategoryFilter($category)->addAttributeToSelect('*');
|
49 |
+
return $_filteredProductCollection;
|
50 |
+
}
|
51 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Helper/Data.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
const PATH_PAGE_HEADING = 'featuredproducts/general/title';
|
6 |
+
const PATH_CMS_HEADING = 'featuredproducts/general/title';
|
7 |
+
const DEFAULT_LABEL = 'Featured Products';
|
8 |
+
|
9 |
+
public function getCmsBlockLabel()
|
10 |
+
{
|
11 |
+
$configValue = Mage::getStoreConfig(self::PATH_CMS_HEADING);
|
12 |
+
return strlen($configValue) > 0 ? $configValue : self::DEFAULT_LABEL;
|
13 |
+
}
|
14 |
+
|
15 |
+
public function getPageLabel()
|
16 |
+
{
|
17 |
+
$configValue = Mage::getStoreConfig(self::PATH_PAGE_HEADING);
|
18 |
+
return strlen($configValue) > 0 ? $configValue : self::DEFAULT_LABEL;
|
19 |
+
}
|
20 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Model/Featuredproducts.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Model_Featuredproducts extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('featuredproducts/featuredproducts');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Model/Mysql4/Featuredproducts.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Model_Mysql4_Featuredproducts extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
// Note that the featuredproducts_id refers to the key field in your database table.
|
8 |
+
$this->_init('featuredproducts/featuredproducts', 'featuredproducts_id');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Model/Mysql4/Featuredproducts/Collection.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Model_Mysql4_Featuredproducts_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('featuredproducts/featuredproducts');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Model/Status.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Model_Status extends Varien_Object
|
4 |
+
{
|
5 |
+
const STATUS_ENABLED = 1;
|
6 |
+
const STATUS_DISABLED = 2;
|
7 |
+
|
8 |
+
static public function getOptionArray()
|
9 |
+
{
|
10 |
+
return array(
|
11 |
+
self::STATUS_ENABLED => Mage::helper('featuredproducts')->__('Enabled'),
|
12 |
+
self::STATUS_DISABLED => Mage::helper('featuredproducts')->__('Disabled')
|
13 |
+
);
|
14 |
+
}
|
15 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Model/System/Config/Source/Leftright.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_Model_System_Config_Source_Leftright
|
3 |
+
{
|
4 |
+
public function toOptionArray()
|
5 |
+
{
|
6 |
+
return array(
|
7 |
+
array('value' => 0, 'label'=>Mage::helper('adminhtml')->__('Left')),
|
8 |
+
array('value' => 1, 'label'=>Mage::helper('adminhtml')->__('Right')),
|
9 |
+
);
|
10 |
+
}
|
11 |
+
|
12 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/Model/System/Config/Source/Sort.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_Model_System_Config_Source_Sort
|
3 |
+
{
|
4 |
+
/*
|
5 |
+
* Prepare data for System->Configuration dropdown
|
6 |
+
* */
|
7 |
+
public function toOptionArray()
|
8 |
+
{
|
9 |
+
return array(
|
10 |
+
0 => Mage::helper('adminhtml')->__('Random'),
|
11 |
+
1 => Mage::helper('adminhtml')->__('Last Added')
|
12 |
+
);
|
13 |
+
}
|
14 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/controllers/Adminhtml/FeaturedproductsController.php
ADDED
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Featuredproducts_Adminhtml_FeaturedproductsController extends Mage_Adminhtml_Controller_Action
|
4 |
+
{
|
5 |
+
|
6 |
+
protected function _initProduct()
|
7 |
+
{
|
8 |
+
|
9 |
+
$product = Mage::getModel('catalog/product')
|
10 |
+
->setStoreId($this->getRequest()->getParam('store', 0));
|
11 |
+
|
12 |
+
|
13 |
+
if ($setId = (int) $this->getRequest()->getParam('set')) {
|
14 |
+
$product->setAttributeSetId($setId);
|
15 |
+
}
|
16 |
+
|
17 |
+
if ($typeId = $this->getRequest()->getParam('type')) {
|
18 |
+
$product->setTypeId($typeId);
|
19 |
+
}
|
20 |
+
|
21 |
+
$product->setData('_edit_mode', true);
|
22 |
+
|
23 |
+
Mage::register('product', $product);
|
24 |
+
|
25 |
+
return $product;
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function _initAction() {
|
29 |
+
$this->loadLayout()
|
30 |
+
->_setActiveMenu('featuredproducts/items')
|
31 |
+
->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
|
32 |
+
|
33 |
+
return $this;
|
34 |
+
}
|
35 |
+
|
36 |
+
public function indexAction() {
|
37 |
+
$this->_initProduct();
|
38 |
+
$this->loadLayout()->_setActiveMenu('catalog/featuredproduct');
|
39 |
+
$this->_addContent($this->getLayout()->createBlock('featuredproducts/adminhtml_edit'));
|
40 |
+
$this->renderLayout();
|
41 |
+
}
|
42 |
+
|
43 |
+
public function manageAction() {
|
44 |
+
$this->_initProduct();
|
45 |
+
$this->loadLayout()->_setActiveMenu('catalog/featuredproduct');
|
46 |
+
$this->_addContent($this->getLayout()->createBlock('featuredproducts/adminhtml_edit'));
|
47 |
+
$this->renderLayout();
|
48 |
+
}
|
49 |
+
|
50 |
+
public function gridAction()
|
51 |
+
{
|
52 |
+
$this->getResponse()->setBody($this->getLayout()->createBlock('featuredproducts/adminhtml_edit_grid')->toHtml());
|
53 |
+
}
|
54 |
+
|
55 |
+
public function editAction() {
|
56 |
+
$id = $this->getRequest()->getParam('id');
|
57 |
+
$model = Mage::getModel('featuredproducts/featuredproducts')->load($id);
|
58 |
+
|
59 |
+
if ($model->getId() || $id == 0) {
|
60 |
+
$data = Mage::getSingleton('adminhtml/session')->getFormData(true);
|
61 |
+
if (!empty($data)) {
|
62 |
+
$model->setData($data);
|
63 |
+
}
|
64 |
+
|
65 |
+
Mage::register('featuredproducts_data', $model);
|
66 |
+
|
67 |
+
$this->loadLayout();
|
68 |
+
$this->_setActiveMenu('featuredproducts/items');
|
69 |
+
|
70 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
|
71 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
|
72 |
+
|
73 |
+
$this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
|
74 |
+
|
75 |
+
$this->_addContent($this->getLayout()->createBlock('featuredproducts/adminhtml_featuredproducts_edit'))
|
76 |
+
->_addLeft($this->getLayout()->createBlock('featuredproducts/adminhtml_featuredproducts_edit_tabs'));
|
77 |
+
|
78 |
+
$this->renderLayout();
|
79 |
+
} else {
|
80 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('featuredproducts')->__('Item does not exist'));
|
81 |
+
$this->_redirect('*/*/');
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
public function newAction() {
|
86 |
+
$this->_forward('edit');
|
87 |
+
}
|
88 |
+
|
89 |
+
public function saveAction() {
|
90 |
+
$data = $this->getRequest()->getPost();
|
91 |
+
$collection = Mage::getModel('catalog/product')->getCollection();
|
92 |
+
$storeId = $this->getRequest()->getParam('store', 0);
|
93 |
+
|
94 |
+
|
95 |
+
parse_str($data['featured_products'], $featured_products);
|
96 |
+
|
97 |
+
|
98 |
+
$collection->addIdFilter(array_keys($featured_products));
|
99 |
+
|
100 |
+
try {
|
101 |
+
foreach($collection->getItems() as $product)
|
102 |
+
{
|
103 |
+
|
104 |
+
$product->setData('magebuzz_featured_product',$featured_products[$product->getEntityId()]);
|
105 |
+
$product->setStoreId($storeId);
|
106 |
+
$product->save();
|
107 |
+
}
|
108 |
+
|
109 |
+
$this->_getSession()->addSuccess($this->__('Featured product was successfully saved.'));
|
110 |
+
$this->_redirect('*/*/index', array('store'=> $this->getRequest()->getParam('store')));
|
111 |
+
|
112 |
+
} catch (Exception $e){
|
113 |
+
$this->_getSession()->addError($e->getMessage());
|
114 |
+
$this->_redirect('*/*/index', array('store'=> $this->getRequest()->getParam('store')));
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
protected function _validateSecretKey()
|
119 |
+
{
|
120 |
+
return true;
|
121 |
+
}
|
122 |
+
|
123 |
+
protected function _isAllowed()
|
124 |
+
{
|
125 |
+
return Mage::getSingleton('admin/session')->isAllowed('admin/catalog/featuredproduct');
|
126 |
+
}
|
127 |
+
|
128 |
+
public function deleteAction() {
|
129 |
+
if( $this->getRequest()->getParam('id') > 0 ) {
|
130 |
+
try {
|
131 |
+
$model = Mage::getModel('featuredproducts/featuredproducts');
|
132 |
+
|
133 |
+
$model->setId($this->getRequest()->getParam('id'))
|
134 |
+
->delete();
|
135 |
+
|
136 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
|
137 |
+
$this->_redirect('*/*/');
|
138 |
+
} catch (Exception $e) {
|
139 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
140 |
+
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
|
141 |
+
}
|
142 |
+
}
|
143 |
+
$this->_redirect('*/*/');
|
144 |
+
}
|
145 |
+
|
146 |
+
public function massDeleteAction() {
|
147 |
+
$featuredproductsIds = $this->getRequest()->getParam('featuredproducts');
|
148 |
+
if(!is_array($featuredproductsIds)) {
|
149 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
|
150 |
+
} else {
|
151 |
+
try {
|
152 |
+
foreach ($featuredproductsIds as $featuredproductsId) {
|
153 |
+
$featuredproducts = Mage::getModel('featuredproducts/featuredproducts')->load($featuredproductsId);
|
154 |
+
$featuredproducts->delete();
|
155 |
+
}
|
156 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(
|
157 |
+
Mage::helper('adminhtml')->__(
|
158 |
+
'Total of %d record(s) were successfully deleted', count($featuredproductsIds)
|
159 |
+
)
|
160 |
+
);
|
161 |
+
} catch (Exception $e) {
|
162 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
163 |
+
}
|
164 |
+
}
|
165 |
+
$this->_redirect('*/*/index');
|
166 |
+
}
|
167 |
+
|
168 |
+
public function massStatusAction()
|
169 |
+
{
|
170 |
+
$featuredproductsIds = $this->getRequest()->getParam('featuredproducts');
|
171 |
+
if(!is_array($featuredproductsIds)) {
|
172 |
+
Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
|
173 |
+
} else {
|
174 |
+
try {
|
175 |
+
foreach ($featuredproductsIds as $featuredproductsId) {
|
176 |
+
$featuredproducts = Mage::getSingleton('featuredproducts/featuredproducts')
|
177 |
+
->load($featuredproductsId)
|
178 |
+
->setStatus($this->getRequest()->getParam('status'))
|
179 |
+
->setIsMassupdate(true)
|
180 |
+
->save();
|
181 |
+
}
|
182 |
+
$this->_getSession()->addSuccess(
|
183 |
+
$this->__('Total of %d record(s) were successfully updated', count($featuredproductsIds))
|
184 |
+
);
|
185 |
+
} catch (Exception $e) {
|
186 |
+
$this->_getSession()->addError($e->getMessage());
|
187 |
+
}
|
188 |
+
}
|
189 |
+
$this->_redirect('*/*/index');
|
190 |
+
}
|
191 |
+
|
192 |
+
public function exportCsvAction()
|
193 |
+
{
|
194 |
+
$fileName = 'featuredproducts.csv';
|
195 |
+
$content = $this->getLayout()->createBlock('featuredproducts/adminhtml_featuredproducts_grid')
|
196 |
+
->getCsv();
|
197 |
+
|
198 |
+
$this->_sendUploadResponse($fileName, $content);
|
199 |
+
}
|
200 |
+
|
201 |
+
public function exportXmlAction()
|
202 |
+
{
|
203 |
+
$fileName = 'featuredproducts.xml';
|
204 |
+
$content = $this->getLayout()->createBlock('featuredproducts/adminhtml_featuredproducts_grid')
|
205 |
+
->getXml();
|
206 |
+
|
207 |
+
$this->_sendUploadResponse($fileName, $content);
|
208 |
+
}
|
209 |
+
|
210 |
+
protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
|
211 |
+
{
|
212 |
+
$response = $this->getResponse();
|
213 |
+
$response->setHeader('HTTP/1.1 200 OK','');
|
214 |
+
$response->setHeader('Pragma', 'public', true);
|
215 |
+
$response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
|
216 |
+
$response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
|
217 |
+
$response->setHeader('Last-Modified', date('r'));
|
218 |
+
$response->setHeader('Accept-Ranges', 'bytes');
|
219 |
+
$response->setHeader('Content-Length', strlen($content));
|
220 |
+
$response->setHeader('Content-type', $contentType);
|
221 |
+
$response->setBody($content);
|
222 |
+
$response->sendResponse();
|
223 |
+
die;
|
224 |
+
}
|
225 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/controllers/IndexController.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Featuredproducts_IndexController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
|
7 |
+
/*
|
8 |
+
* Load an object by id
|
9 |
+
* Request looking like:
|
10 |
+
* http://site.com/featuredproducts?id=15
|
11 |
+
* or
|
12 |
+
* http://site.com/featuredproducts/id/15
|
13 |
+
*/
|
14 |
+
/*
|
15 |
+
$featuredproducts_id = $this->getRequest()->getParam('id');
|
16 |
+
|
17 |
+
if($featuredproducts_id != null && $featuredproducts_id != '') {
|
18 |
+
$featuredproducts = Mage::getModel('featuredproducts/featuredproducts')->load($featuredproducts_id)->getData();
|
19 |
+
} else {
|
20 |
+
$featuredproducts = null;
|
21 |
+
}
|
22 |
+
*/
|
23 |
+
|
24 |
+
/*
|
25 |
+
* If no param we load a the last created item
|
26 |
+
*/
|
27 |
+
/*
|
28 |
+
if($featuredproducts == null) {
|
29 |
+
$resource = Mage::getSingleton('core/resource');
|
30 |
+
$read= $resource->getConnection('core_read');
|
31 |
+
$featuredproductsTable = $resource->getTableName('featuredproducts');
|
32 |
+
|
33 |
+
$select = $read->select()
|
34 |
+
->from($featuredproductsTable,array('featuredproducts_id','title','content','status'))
|
35 |
+
->where('status',1)
|
36 |
+
->order('created_time DESC') ;
|
37 |
+
|
38 |
+
$featuredproducts = $read->fetchRow($select);
|
39 |
+
}
|
40 |
+
Mage::register('featuredproducts', $featuredproducts);
|
41 |
+
*/
|
42 |
+
$template = Mage::getConfig()->getNode('global/page/layouts/'.Mage::getStoreConfig("featuredproducts/general/layout").'/template');
|
43 |
+
|
44 |
+
$this->loadLayout();
|
45 |
+
|
46 |
+
$this->getLayout()->getBlock('root')->setTemplate($template);
|
47 |
+
|
48 |
+
$breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs');
|
49 |
+
$breadcrumbsBlock->addCrumb('featured_products', array(
|
50 |
+
'label'=>Mage::helper('featuredproducts')->__(Mage::helper('featuredproducts')->getPageLabel()),
|
51 |
+
'title'=>Mage::helper('featuredproducts')->__(Mage::helper('featuredproducts')->getPageLabel()),
|
52 |
+
));
|
53 |
+
|
54 |
+
$this->renderLayout();
|
55 |
+
}
|
56 |
+
}
|
app/code/community/Magebuzz/Featuredproducts/etc/adminhtml.xml
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<menu>
|
4 |
+
<featuredproducts module="featuredproducts">
|
5 |
+
<title>Featured Products</title>
|
6 |
+
<sort_order>71</sort_order>
|
7 |
+
<children>
|
8 |
+
<items module="featuredproducts">
|
9 |
+
<title>Manage Featured Products</title>
|
10 |
+
<sort_order>0</sort_order>
|
11 |
+
<action>featuredproducts/adminhtml_featuredproducts/manage</action>
|
12 |
+
</items>
|
13 |
+
</children>
|
14 |
+
</featuredproducts>
|
15 |
+
</menu>
|
16 |
+
<acl>
|
17 |
+
<resources>
|
18 |
+
<all>
|
19 |
+
<title>Allow Everything</title>
|
20 |
+
</all>
|
21 |
+
<admin>
|
22 |
+
<children>
|
23 |
+
<system>
|
24 |
+
<children>
|
25 |
+
<config>
|
26 |
+
<children>
|
27 |
+
<featuredproducts translate="title">
|
28 |
+
<title>Featured Products Setting</title>
|
29 |
+
<sort_order>50</sort_order>
|
30 |
+
</featuredproducts>
|
31 |
+
</children>
|
32 |
+
</config>
|
33 |
+
</children>
|
34 |
+
</system>
|
35 |
+
</children>
|
36 |
+
</admin>
|
37 |
+
</resources>
|
38 |
+
</acl>
|
39 |
+
</config>
|
app/code/community/Magebuzz/Featuredproducts/etc/config.xml
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Magebuzz_Featuredproducts>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Magebuzz_Featuredproducts>
|
7 |
+
</modules>
|
8 |
+
<frontend>
|
9 |
+
<routers>
|
10 |
+
<featuredproducts>
|
11 |
+
<use>standard</use>
|
12 |
+
<args>
|
13 |
+
<module>Magebuzz_Featuredproducts</module>
|
14 |
+
<frontName>featuredproducts</frontName>
|
15 |
+
</args>
|
16 |
+
</featuredproducts>
|
17 |
+
</routers>
|
18 |
+
<layout>
|
19 |
+
<updates>
|
20 |
+
<featuredproducts>
|
21 |
+
<file>featuredproducts.xml</file>
|
22 |
+
</featuredproducts>
|
23 |
+
</updates>
|
24 |
+
</layout>
|
25 |
+
</frontend>
|
26 |
+
<admin>
|
27 |
+
<routers>
|
28 |
+
<featuredproducts>
|
29 |
+
<use>admin</use>
|
30 |
+
<args>
|
31 |
+
<module>Magebuzz_Featuredproducts</module>
|
32 |
+
<frontName>featuredproducts</frontName>
|
33 |
+
</args>
|
34 |
+
</featuredproducts>
|
35 |
+
<adminhtml>
|
36 |
+
<args>
|
37 |
+
<modules>
|
38 |
+
<featuredproducts before="Mage_Adminhtml">Magebuzz_Featuredproducts_Adminhtml</featuredproducts>
|
39 |
+
</modules>
|
40 |
+
</args>
|
41 |
+
</adminhtml>
|
42 |
+
</routers>
|
43 |
+
</admin>
|
44 |
+
<adminhtml>
|
45 |
+
<!-- <layout>
|
46 |
+
<updates>
|
47 |
+
<featuredproducts>
|
48 |
+
<file>featuredproducts.xml</file>
|
49 |
+
</featuredproducts>
|
50 |
+
</updates>
|
51 |
+
</layout> -->
|
52 |
+
</adminhtml>
|
53 |
+
<global>
|
54 |
+
<models>
|
55 |
+
<featuredproducts>
|
56 |
+
<class>Magebuzz_Featuredproducts_Model</class>
|
57 |
+
<resourceModel>featuredproducts_mysql4</resourceModel>
|
58 |
+
</featuredproducts>
|
59 |
+
<featuredproducts_mysql4>
|
60 |
+
<class>Magebuzz_Featuredproducts_Model_Mysql4</class>
|
61 |
+
<entities>
|
62 |
+
<featuredproducts>
|
63 |
+
<table>featuredproducts</table>
|
64 |
+
</featuredproducts>
|
65 |
+
</entities>
|
66 |
+
</featuredproducts_mysql4>
|
67 |
+
</models>
|
68 |
+
<resources>
|
69 |
+
<featuredproducts_setup>
|
70 |
+
<setup>
|
71 |
+
<module>Magebuzz_Featuredproducts</module>
|
72 |
+
<class>Mage_Eav_Model_Entity_Setup</class>
|
73 |
+
</setup>
|
74 |
+
<connection>
|
75 |
+
<use>core_setup</use>
|
76 |
+
</connection>
|
77 |
+
</featuredproducts_setup>
|
78 |
+
<featuredproducts_write>
|
79 |
+
<connection>
|
80 |
+
<use>core_write</use>
|
81 |
+
</connection>
|
82 |
+
</featuredproducts_write>
|
83 |
+
<featuredproducts_read>
|
84 |
+
<connection>
|
85 |
+
<use>core_read</use>
|
86 |
+
</connection>
|
87 |
+
</featuredproducts_read>
|
88 |
+
</resources>
|
89 |
+
<blocks>
|
90 |
+
<featuredproducts>
|
91 |
+
<class>Magebuzz_Featuredproducts_Block</class>
|
92 |
+
</featuredproducts>
|
93 |
+
</blocks>
|
94 |
+
<helpers>
|
95 |
+
<featuredproducts>
|
96 |
+
<class>Magebuzz_Featuredproducts_Helper</class>
|
97 |
+
</featuredproducts>
|
98 |
+
</helpers>
|
99 |
+
</global>
|
100 |
+
|
101 |
+
<default>
|
102 |
+
<featuredproducts>
|
103 |
+
<general>
|
104 |
+
<title>Featured Products</title>
|
105 |
+
<product_sort_by>random</product_sort_by>
|
106 |
+
<number_of_items>5</number_of_items>
|
107 |
+
<layout>two_columns_right</layout>
|
108 |
+
<enable_module>1</enable_module>
|
109 |
+
<display_on_sidebar>1</display_on_sidebar>
|
110 |
+
<position_of_sidebar>0</position_of_sidebar>
|
111 |
+
<filter_by_category>0</filter_by_category>
|
112 |
+
<number_of_products_to_show>5</number_of_products_to_show>
|
113 |
+
<number_of_products_per_row>5</number_of_products_per_row>
|
114 |
+
</general>
|
115 |
+
</featuredproducts>
|
116 |
+
</default>
|
117 |
+
|
118 |
+
</config>
|
app/code/community/Magebuzz/Featuredproducts/etc/system.xml
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
|
4 |
+
<tabs>
|
5 |
+
<magebuzz module="featuredproducts">
|
6 |
+
<label>Magebuzz add-ons</label>
|
7 |
+
<sort_order>110</sort_order>
|
8 |
+
</magebuzz>
|
9 |
+
</tabs>
|
10 |
+
|
11 |
+
<sections>
|
12 |
+
<featuredproducts translate="label" module="featuredproducts">
|
13 |
+
<class>separator-top</class>
|
14 |
+
<label>Featured Products</label>
|
15 |
+
<tab>magebuzz</tab>
|
16 |
+
<sort_order>10</sort_order>
|
17 |
+
<show_in_default>1</show_in_default>
|
18 |
+
<show_in_website>1</show_in_website>
|
19 |
+
<show_in_store>1</show_in_store>
|
20 |
+
<groups>
|
21 |
+
<general translate="label">
|
22 |
+
<label>General</label>
|
23 |
+
<frontend_type>text</frontend_type>
|
24 |
+
<sort_order>1</sort_order>
|
25 |
+
<show_in_default>1</show_in_default>
|
26 |
+
<show_in_website>1</show_in_website>
|
27 |
+
<show_in_store>1</show_in_store>
|
28 |
+
<fields>
|
29 |
+
<enable_module translate="label comment">
|
30 |
+
<label>Enable Module</label>
|
31 |
+
<frontend_type>select</frontend_type>
|
32 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
33 |
+
<sort_order>0</sort_order>
|
34 |
+
<show_in_default>1</show_in_default>
|
35 |
+
<show_in_website>1</show_in_website>
|
36 |
+
<show_in_store>1</show_in_store>
|
37 |
+
</enable_module>
|
38 |
+
|
39 |
+
<title translate="label comment">
|
40 |
+
<label>Title</label>
|
41 |
+
<frontend_type>text</frontend_type>
|
42 |
+
<sort_order>1</sort_order>
|
43 |
+
<show_in_default>1</show_in_default>
|
44 |
+
<show_in_website>1</show_in_website>
|
45 |
+
<show_in_store>1</show_in_store>
|
46 |
+
</title>
|
47 |
+
|
48 |
+
<display_on_sidebar translate="label comment">
|
49 |
+
<label>Display On Sidebar</label>
|
50 |
+
<frontend_type>select</frontend_type>
|
51 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
52 |
+
<sort_order>2</sort_order>
|
53 |
+
<show_in_default>1</show_in_default>
|
54 |
+
<show_in_website>1</show_in_website>
|
55 |
+
<show_in_store>1</show_in_store>
|
56 |
+
</display_on_sidebar>
|
57 |
+
|
58 |
+
<position_of_sidebar translate="label comment">
|
59 |
+
<label>Position of sidebar</label>
|
60 |
+
<comment>Select which side to display </comment>
|
61 |
+
<frontend_type>select</frontend_type>
|
62 |
+
<source_model>featuredproducts/system_config_source_leftright</source_model>
|
63 |
+
<sort_order>3</sort_order>
|
64 |
+
<show_in_default>1</show_in_default>
|
65 |
+
<show_in_website>1</show_in_website>
|
66 |
+
<show_in_store>1</show_in_store>
|
67 |
+
</position_of_sidebar>
|
68 |
+
|
69 |
+
<filter_by_category translate="label comment">
|
70 |
+
<label>Filter by category</label>
|
71 |
+
<frontend_type>select</frontend_type>
|
72 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
73 |
+
<sort_order>4</sort_order>
|
74 |
+
<show_in_default>1</show_in_default>
|
75 |
+
<show_in_website>1</show_in_website>
|
76 |
+
<show_in_store>1</show_in_store>
|
77 |
+
</filter_by_category>
|
78 |
+
|
79 |
+
<number_of_products_to_show translate="label comment">
|
80 |
+
<label>Number of product to show</label>
|
81 |
+
<comment>On both main site, category site or sidebar</comment>
|
82 |
+
<frontend_type>text</frontend_type>
|
83 |
+
<sort_order>5</sort_order>
|
84 |
+
<show_in_default>1</show_in_default>
|
85 |
+
<show_in_website>1</show_in_website>
|
86 |
+
<show_in_store>1</show_in_store>
|
87 |
+
</number_of_products_to_show>
|
88 |
+
|
89 |
+
<layout translate="label">
|
90 |
+
<label>Layout</label>
|
91 |
+
<frontend_type>select</frontend_type>
|
92 |
+
<source_model>page/source_layout</source_model>
|
93 |
+
<sort_order>6</sort_order>
|
94 |
+
<show_in_default>1</show_in_default>
|
95 |
+
<show_in_website>0</show_in_website>
|
96 |
+
<show_in_store>0</show_in_store>
|
97 |
+
</layout>
|
98 |
+
|
99 |
+
<product_sort_by translate="label">
|
100 |
+
<label>Sort By in Main Block</label>
|
101 |
+
<comment>Main block is used in content section of the site</comment>
|
102 |
+
<frontend_type>select</frontend_type>
|
103 |
+
<source_model>featuredproducts/system_config_source_sort</source_model>
|
104 |
+
<sort_order>7</sort_order>
|
105 |
+
<show_in_default>1</show_in_default>
|
106 |
+
<show_in_website>0</show_in_website>
|
107 |
+
<show_in_store>0</show_in_store>
|
108 |
+
</product_sort_by>
|
109 |
+
|
110 |
+
<number_of_items translate="label comment">
|
111 |
+
<label>Number Of Items in Main Block</label>
|
112 |
+
<comment>How many featured products will be showed in main block?</comment>
|
113 |
+
<frontend_type>text</frontend_type>
|
114 |
+
<sort_order>8</sort_order>
|
115 |
+
<show_in_default>1</show_in_default>
|
116 |
+
<show_in_website>1</show_in_website>
|
117 |
+
<show_in_store>1</show_in_store>
|
118 |
+
</number_of_items>
|
119 |
+
|
120 |
+
<number_of_products_per_row translate="label comment">
|
121 |
+
<label>Products Per Row</label>
|
122 |
+
<comment>How many featured products will be showed in a row in grid mode?</comment>
|
123 |
+
<frontend_type>text</frontend_type>
|
124 |
+
<sort_order>9</sort_order>
|
125 |
+
<show_in_default>1</show_in_default>
|
126 |
+
<show_in_website>1</show_in_website>
|
127 |
+
<show_in_store>1</show_in_store>
|
128 |
+
</number_of_products_per_row>
|
129 |
+
|
130 |
+
</fields>
|
131 |
+
</general>
|
132 |
+
</groups>
|
133 |
+
</featuredproducts>
|
134 |
+
</sections>
|
135 |
+
</config>
|
app/code/community/Magebuzz/Featuredproducts/sql/featuredproducts_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
$installer->addAttribute('catalog_product', 'magebuzz_featured_product', array(
|
8 |
+
'group' => 'General',
|
9 |
+
'type' => 'int',
|
10 |
+
'backend' => '',
|
11 |
+
'frontend' => '',
|
12 |
+
'label' => 'Featured product',
|
13 |
+
'input' => 'boolean',
|
14 |
+
'class' => '',
|
15 |
+
'source' => '',
|
16 |
+
'is_global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
|
17 |
+
'visible' => true,
|
18 |
+
'required' => false,
|
19 |
+
'user_defined' => false,
|
20 |
+
'default' => '0',
|
21 |
+
'searchable' => false,
|
22 |
+
'filterable' => false,
|
23 |
+
'comparable' => false,
|
24 |
+
'visible_on_front' => false,
|
25 |
+
'unique' => false,
|
26 |
+
'apply_to' => 'simple,configurable,virtual,bundle,downloadable',
|
27 |
+
'is_configurable' => false,
|
28 |
+
'used_in_product_listing'=> '1'
|
29 |
+
));
|
30 |
+
|
31 |
+
|
32 |
+
$installer->updateAttribute('catalog_product', 'magebuzz_featured_product', 'used_in_product_listing', '1');
|
33 |
+
|
34 |
+
$installer->endSetup();
|
app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Block_Adminhtml_Productslider extends Mage_Adminhtml_Block_Widget_Grid_Container
|
3 |
+
{
|
4 |
+
public function __construct()
|
5 |
+
{
|
6 |
+
$this->_controller = 'adminhtml_productslider';
|
7 |
+
$this->_blockGroup = 'productslider';
|
8 |
+
$this->_headerText = Mage::helper('productslider')->__('Item Manager');
|
9 |
+
$this->_addButtonLabel = Mage::helper('productslider')->__('Add Item');
|
10 |
+
parent::__construct();
|
11 |
+
}
|
12 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Block_Adminhtml_Productslider_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
$this->_objectId = 'id';
|
10 |
+
$this->_blockGroup = 'productslider';
|
11 |
+
$this->_controller = 'adminhtml_productslider';
|
12 |
+
|
13 |
+
$this->_updateButton('save', 'label', Mage::helper('productslider')->__('Save Item'));
|
14 |
+
$this->_updateButton('delete', 'label', Mage::helper('productslider')->__('Delete Item'));
|
15 |
+
|
16 |
+
$this->_addButton('saveandcontinue', array(
|
17 |
+
'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
|
18 |
+
'onclick' => 'saveAndContinueEdit()',
|
19 |
+
'class' => 'save',
|
20 |
+
), -100);
|
21 |
+
|
22 |
+
$this->_formScripts[] = "
|
23 |
+
function toggleEditor() {
|
24 |
+
if (tinyMCE.getInstanceById('productslider_content') == null) {
|
25 |
+
tinyMCE.execCommand('mceAddControl', false, 'productslider_content');
|
26 |
+
} else {
|
27 |
+
tinyMCE.execCommand('mceRemoveControl', false, 'productslider_content');
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
function saveAndContinueEdit(){
|
32 |
+
editForm.submit($('edit_form').action+'back/edit/');
|
33 |
+
}
|
34 |
+
";
|
35 |
+
}
|
36 |
+
|
37 |
+
public function getHeaderText()
|
38 |
+
{
|
39 |
+
if( Mage::registry('productslider_data') && Mage::registry('productslider_data')->getId() ) {
|
40 |
+
return Mage::helper('productslider')->__("Edit Item '%s'", $this->htmlEscape(Mage::registry('productslider_data')->getTitle()));
|
41 |
+
} else {
|
42 |
+
return Mage::helper('productslider')->__('Add Item');
|
43 |
+
}
|
44 |
+
}
|
45 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit/Form.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Block_Adminhtml_Productslider_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
protected function _prepareForm()
|
6 |
+
{
|
7 |
+
$form = new Varien_Data_Form(array(
|
8 |
+
'id' => 'edit_form',
|
9 |
+
'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
|
10 |
+
'method' => 'post',
|
11 |
+
'enctype' => 'multipart/form-data'
|
12 |
+
)
|
13 |
+
);
|
14 |
+
|
15 |
+
$form->setUseContainer(true);
|
16 |
+
$this->setForm($form);
|
17 |
+
return parent::_prepareForm();
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit/Tab/Main.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Block_Adminhtml_Productslider_Edit_Tab_Main extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
|
6 |
+
protected function _prepareForm()
|
7 |
+
{
|
8 |
+
$form = new Varien_Data_Form();
|
9 |
+
$form->setHtmlIdPrefix('productslider_');
|
10 |
+
$this->setForm($form);
|
11 |
+
$fieldset = $form->addFieldset('productslider_form', array('legend'=>Mage::helper('productslider')->__('Item information')));
|
12 |
+
|
13 |
+
$fieldset->addField('title', 'text', array(
|
14 |
+
'label' => Mage::helper('productslider')->__('Title'),
|
15 |
+
'class' => 'required-entry',
|
16 |
+
'required' => true,
|
17 |
+
'name' => 'title',
|
18 |
+
));
|
19 |
+
|
20 |
+
$fieldset->addField('filename', 'file', array(
|
21 |
+
'label' => Mage::helper('productslider')->__('File'),
|
22 |
+
'required' => false,
|
23 |
+
'name' => 'filename',
|
24 |
+
));
|
25 |
+
|
26 |
+
$fieldset->addField('status', 'select', array(
|
27 |
+
'label' => Mage::helper('productslider')->__('Status'),
|
28 |
+
'name' => 'status',
|
29 |
+
'values' => array(
|
30 |
+
array(
|
31 |
+
'value' => 1,
|
32 |
+
'label' => Mage::helper('productslider')->__('Enabled'),
|
33 |
+
),
|
34 |
+
|
35 |
+
array(
|
36 |
+
'value' => 2,
|
37 |
+
'label' => Mage::helper('productslider')->__('Disabled'),
|
38 |
+
),
|
39 |
+
),
|
40 |
+
));
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
$fieldset->addField('content', 'editor', array(
|
45 |
+
'name' => 'content',
|
46 |
+
'label' => Mage::helper('productslider')->__('Content'),
|
47 |
+
'title' => Mage::helper('productslider')->__('Content'),
|
48 |
+
'style' => 'width:500px; height:300px;',
|
49 |
+
'config' => Mage::getSingleton('productslider/wysiwyg_config')->getConfig(),
|
50 |
+
'required' => true,
|
51 |
+
));
|
52 |
+
|
53 |
+
if ( Mage::getSingleton('adminhtml/session')->getProductsliderData() )
|
54 |
+
{
|
55 |
+
$form->setValues(Mage::getSingleton('adminhtml/session')->getProductsliderData());
|
56 |
+
Mage::getSingleton('adminhtml/session')->setProductsliderData(null);
|
57 |
+
} elseif ( Mage::registry('productslider_data') ) {
|
58 |
+
$form->setValues(Mage::registry('productslider_data')->getData());
|
59 |
+
}
|
60 |
+
return parent::_prepareForm();
|
61 |
+
}
|
62 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Edit/Tabs.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Block_Adminhtml_Productslider_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
|
4 |
+
{
|
5 |
+
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
parent::__construct();
|
9 |
+
$this->setId('productslider_tabs');
|
10 |
+
$this->setDestElementId('edit_form');
|
11 |
+
$this->setTitle(Mage::helper('productslider')->__('Item Information'));
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _beforeToHtml()
|
15 |
+
{
|
16 |
+
$this->addTab('form_section', array(
|
17 |
+
'label' => Mage::helper('productslider')->__('Item Information'),
|
18 |
+
'title' => Mage::helper('productslider')->__('Item Information'),
|
19 |
+
'content' => $this->getLayout()->createBlock('productslider/adminhtml_productslider_edit_tab_main')->toHtml(),
|
20 |
+
));
|
21 |
+
return parent::_beforeToHtml();
|
22 |
+
}
|
23 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Adminhtml/Productslider/Grid.php
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Block_Adminhtml_Productslider_Grid extends Mage_Adminhtml_Block_Widget_Grid
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
$this->setId('productsliderGrid');
|
9 |
+
$this->setUseAjax(true);
|
10 |
+
$this->setDefaultSort('productslider_id');
|
11 |
+
$this->setDefaultDir('ASC');
|
12 |
+
$this->setSaveParametersInSession(true);
|
13 |
+
}
|
14 |
+
|
15 |
+
protected function _prepareCollection()
|
16 |
+
{
|
17 |
+
$collection = Mage::getModel('productslider/productslider')->getCollection();
|
18 |
+
$this->setCollection($collection);
|
19 |
+
return parent::_prepareCollection();
|
20 |
+
}
|
21 |
+
|
22 |
+
protected function _prepareColumns()
|
23 |
+
{
|
24 |
+
$this->addColumn('productslider_id', array(
|
25 |
+
'header' => Mage::helper('productslider')->__('ID'),
|
26 |
+
'align' =>'right',
|
27 |
+
'width' => '50px',
|
28 |
+
'index' => 'productslider_id',
|
29 |
+
));
|
30 |
+
|
31 |
+
$this->addColumn('title', array(
|
32 |
+
'header' => Mage::helper('productslider')->__('Title'),
|
33 |
+
'align' =>'left',
|
34 |
+
'index' => 'title',
|
35 |
+
));
|
36 |
+
|
37 |
+
/*
|
38 |
+
$this->addColumn('content', array(
|
39 |
+
'header' => Mage::helper('productslider')->__('Item Content'),
|
40 |
+
'width' => '150px',
|
41 |
+
'index' => 'content',
|
42 |
+
));
|
43 |
+
*/
|
44 |
+
|
45 |
+
$this->addColumn('status', array(
|
46 |
+
'header' => Mage::helper('productslider')->__('Status'),
|
47 |
+
'align' => 'left',
|
48 |
+
'width' => '80px',
|
49 |
+
'index' => 'status',
|
50 |
+
'type' => 'options',
|
51 |
+
'options' => array(
|
52 |
+
1 => 'Enabled',
|
53 |
+
2 => 'Disabled',
|
54 |
+
),
|
55 |
+
));
|
56 |
+
|
57 |
+
$this->addColumn('action',
|
58 |
+
array(
|
59 |
+
'header' => Mage::helper('productslider')->__('Action'),
|
60 |
+
'width' => '100',
|
61 |
+
'type' => 'action',
|
62 |
+
'getter' => 'getId',
|
63 |
+
'actions' => array(
|
64 |
+
array(
|
65 |
+
'caption' => Mage::helper('productslider')->__('Edit'),
|
66 |
+
'url' => array('base'=> '*/*/edit'),
|
67 |
+
'field' => 'id'
|
68 |
+
)
|
69 |
+
),
|
70 |
+
'filter' => false,
|
71 |
+
'sortable' => false,
|
72 |
+
'index' => 'stores',
|
73 |
+
'is_system' => true,
|
74 |
+
));
|
75 |
+
|
76 |
+
$this->addExportType('*/*/exportCsv', Mage::helper('productslider')->__('CSV'));
|
77 |
+
$this->addExportType('*/*/exportXml', Mage::helper('productslider')->__('XML'));
|
78 |
+
|
79 |
+
return parent::_prepareColumns();
|
80 |
+
}
|
81 |
+
|
82 |
+
protected function _prepareMassaction()
|
83 |
+
{
|
84 |
+
$this->setMassactionIdField('productslider_id');
|
85 |
+
$this->getMassactionBlock()->setFormFieldName('productslider');
|
86 |
+
|
87 |
+
$this->getMassactionBlock()->addItem('delete', array(
|
88 |
+
'label' => Mage::helper('productslider')->__('Delete'),
|
89 |
+
'url' => $this->getUrl('*/*/massDelete'),
|
90 |
+
'confirm' => Mage::helper('productslider')->__('Are you sure?')
|
91 |
+
));
|
92 |
+
|
93 |
+
$statuses = Mage::getSingleton('productslider/status')->getOptionArray();
|
94 |
+
|
95 |
+
array_unshift($statuses, array('label'=>'', 'value'=>''));
|
96 |
+
$this->getMassactionBlock()->addItem('status', array(
|
97 |
+
'label'=> Mage::helper('productslider')->__('Change status'),
|
98 |
+
'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)),
|
99 |
+
'additional' => array(
|
100 |
+
'visibility' => array(
|
101 |
+
'name' => 'status',
|
102 |
+
'type' => 'select',
|
103 |
+
'class' => 'required-entry',
|
104 |
+
'label' => Mage::helper('productslider')->__('Status'),
|
105 |
+
'values' => $statuses
|
106 |
+
)
|
107 |
+
)
|
108 |
+
));
|
109 |
+
return $this;
|
110 |
+
}
|
111 |
+
|
112 |
+
public function getRowUrl($row)
|
113 |
+
{
|
114 |
+
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
|
115 |
+
}
|
116 |
+
public function getGridUrl()
|
117 |
+
{
|
118 |
+
return $this->getUrl('*/*/grid', array('_current'=> true));
|
119 |
+
}
|
120 |
+
|
121 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/Bestseller.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Block_Catalog_Product_List_Bestseller extends Mage_Catalog_Block_Product_List
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
return parent::_prepareLayout();
|
7 |
+
}
|
8 |
+
protected function _getProductCollection()
|
9 |
+
{
|
10 |
+
if (is_null($this->_productCollection)) {
|
11 |
+
$this->_productCollection = Mage::getResourceModel('reports/product_collection')
|
12 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
13 |
+
->addOrderedQty()
|
14 |
+
->addMinimalPrice()
|
15 |
+
->addTaxPercents()
|
16 |
+
->addStoreFilter();
|
17 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection);
|
18 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($this->_productCollection);
|
19 |
+
}
|
20 |
+
return $this->_productCollection;
|
21 |
+
}
|
22 |
+
protected function _beforeToHtml()
|
23 |
+
{
|
24 |
+
$toolbar = $this->getToolbarBlock();
|
25 |
+
$collection = $this->_getProductCollection();
|
26 |
+
|
27 |
+
$toolbar->setAvailableOrders(array(
|
28 |
+
'ordered_qty' => $this->__('Most Purchased'),
|
29 |
+
'name' => $this->__('Name'),
|
30 |
+
'price' => $this->__('Price')
|
31 |
+
))
|
32 |
+
->setDefaultOrder('ordered_qty')
|
33 |
+
->setDefaultDirection('desc');
|
34 |
+
|
35 |
+
$toolbar->setCollection($collection);
|
36 |
+
|
37 |
+
$this->setChild('toolbar', $toolbar);
|
38 |
+
Mage::dispatchEvent('catalog_block_product_list_collection', array(
|
39 |
+
'collection'=>$this->_getProductCollection(),
|
40 |
+
));
|
41 |
+
|
42 |
+
$this->_getProductCollection()->load();
|
43 |
+
Mage::getModel('review/review')->appendSummary($this->_getProductCollection());
|
44 |
+
return parent::_beforeToHtml();
|
45 |
+
}
|
46 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/Mostviewed.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Block_Catalog_Product_List_Mostviewed extends Mage_Catalog_Block_Product_List
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
return parent::_prepareLayout();
|
7 |
+
}
|
8 |
+
protected function _getProductCollection()
|
9 |
+
{
|
10 |
+
if (is_null($this->_productCollection)) {
|
11 |
+
$this->_productCollection = Mage::getResourceModel('reports/product_collection')
|
12 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
13 |
+
->addViewsCount()
|
14 |
+
->addMinimalPrice()
|
15 |
+
->addTaxPercents()
|
16 |
+
->addStoreFilter();
|
17 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection);
|
18 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($this->_productCollection);
|
19 |
+
}
|
20 |
+
return $this->_productCollection;
|
21 |
+
}
|
22 |
+
protected function _beforeToHtml()
|
23 |
+
{
|
24 |
+
$toolbar = $this->getToolbarBlock();
|
25 |
+
$collection = $this->_getProductCollection();
|
26 |
+
|
27 |
+
$toolbar
|
28 |
+
->setAvailableOrders(array(
|
29 |
+
'views_count' => $this->__('View Count'),
|
30 |
+
'name' => $this->__('Name'),
|
31 |
+
'price' => $this->__('Price')
|
32 |
+
))
|
33 |
+
->setDefaultOrder('views_count')
|
34 |
+
->setDefaultDirection('desc');
|
35 |
+
|
36 |
+
$toolbar->setCollection($collection);
|
37 |
+
|
38 |
+
$this->setChild('toolbar', $toolbar);
|
39 |
+
Mage::dispatchEvent('catalog_block_product_list_collection', array(
|
40 |
+
'collection'=>$this->_getProductCollection(),
|
41 |
+
));
|
42 |
+
|
43 |
+
$this->_getProductCollection()->load();
|
44 |
+
Mage::getModel('review/review')->appendSummary($this->_getProductCollection());
|
45 |
+
return parent::_beforeToHtml();
|
46 |
+
}
|
47 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/Random.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Block_Catalog_Product_List_Random extends Mage_Catalog_Block_Product_List
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
parent::_prepareLayout();
|
7 |
+
if (!$this->getTemplate()) {
|
8 |
+
$this->setTemplate('productslider/productslider.phtml');
|
9 |
+
}
|
10 |
+
return $this;
|
11 |
+
}
|
12 |
+
protected function _getProductCollection()
|
13 |
+
{
|
14 |
+
$this->_productCollection = Mage::getResourceModel('catalog/product_collection')
|
15 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
16 |
+
->addMinimalPrice()
|
17 |
+
->addTaxPercents()
|
18 |
+
->addStoreFilter();
|
19 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection);
|
20 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($this->_productCollection);
|
21 |
+
return $this->_productCollection;
|
22 |
+
}
|
23 |
+
protected function _beforeToHtml()
|
24 |
+
{
|
25 |
+
$toolbar = $this->getToolbarBlock();
|
26 |
+
$collection = $this->_getProductCollection();
|
27 |
+
|
28 |
+
$toolbar->setAvailableOrders(array(
|
29 |
+
'name' => $this->__('Name'),
|
30 |
+
'price' => $this->__('Price')
|
31 |
+
))
|
32 |
+
->setDefaultOrder('price')
|
33 |
+
->setDefaultDirection('desc');
|
34 |
+
|
35 |
+
$toolbar->setCollection($collection);
|
36 |
+
|
37 |
+
$this->setChild('toolbar', $toolbar);
|
38 |
+
Mage::dispatchEvent('catalog_block_product_list_collection', array(
|
39 |
+
'collection'=>$this->_getProductCollection(),
|
40 |
+
));
|
41 |
+
|
42 |
+
$this->_getProductCollection()->load();
|
43 |
+
Mage::getModel('review/review')->appendSummary($this->_getProductCollection());
|
44 |
+
return parent::_beforeToHtml();
|
45 |
+
}
|
46 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Catalog/Product/List/RecentlyAdd.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Block_Catalog_Product_List_RecentlyAdd extends Mage_Catalog_Block_Product_List
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
parent::_prepareLayout();
|
7 |
+
if (!$this->getTemplate()) {
|
8 |
+
$this->setTemplate('productslider/productslider.phtml');
|
9 |
+
}
|
10 |
+
return $this;
|
11 |
+
}
|
12 |
+
|
13 |
+
protected function _getProductCollection()
|
14 |
+
{
|
15 |
+
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
|
16 |
+
|
17 |
+
if (is_null($this->_productCollection)) {
|
18 |
+
$this->_productCollection = Mage::getResourceModel('catalog/product_collection')
|
19 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
20 |
+
->addAttributeToSelect('*') //Need this so products show up correctly in product listing
|
21 |
+
->addAttributeToFilter('news_from_date', array('or'=> array(
|
22 |
+
0 => array('date' => true, 'to' => $todayDate),
|
23 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
24 |
+
), 'left')
|
25 |
+
->addAttributeToFilter('news_to_date', array('or'=> array(
|
26 |
+
0 => array('date' => true, 'from' => $todayDate),
|
27 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
28 |
+
), 'left')
|
29 |
+
->addAttributeToFilter(
|
30 |
+
array(
|
31 |
+
array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
|
32 |
+
array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
|
33 |
+
)
|
34 |
+
)
|
35 |
+
->addAttributeToSort('news_from_date', 'desc')
|
36 |
+
->addMinimalPrice()
|
37 |
+
->addTaxPercents()
|
38 |
+
->addStoreFilter();
|
39 |
+
|
40 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection);
|
41 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($this->_productCollection);
|
42 |
+
}
|
43 |
+
return $this->_productCollection;
|
44 |
+
}
|
45 |
+
protected function _beforeToHtml()
|
46 |
+
{
|
47 |
+
$toolbar = $this->getToolbarBlock();
|
48 |
+
$collection = $this->_getProductCollection();
|
49 |
+
|
50 |
+
$toolbar->setAvailableOrders(array(
|
51 |
+
'name' => $this->__('Name'),
|
52 |
+
'price' => $this->__('Price')
|
53 |
+
))
|
54 |
+
->setDefaultOrder('price')
|
55 |
+
->setDefaultDirection('desc');
|
56 |
+
|
57 |
+
$toolbar->setCollection($collection);
|
58 |
+
|
59 |
+
$this->setChild('toolbar', $toolbar);
|
60 |
+
Mage::dispatchEvent('catalog_block_product_list_collection', array(
|
61 |
+
'collection'=>$this->_getProductCollection(),
|
62 |
+
));
|
63 |
+
|
64 |
+
$this->_getProductCollection()->load();
|
65 |
+
Mage::getModel('review/review')->appendSummary($this->_getProductCollection());
|
66 |
+
return parent::_beforeToHtml();
|
67 |
+
}
|
68 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Position.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Block_Position extends Magebuzz_Productslider_Block_Productslider
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
$is_homepage = false;
|
7 |
+
$slider_position = Mage::getStoreConfig('productslider/slider_setting/slider_position');
|
8 |
+
$current_category = Mage::registry('current_category');
|
9 |
+
$in_category = $this->inCategoryPage();
|
10 |
+
if($this->getUrl('') == $this->getUrl('*/*/*', array('_use_rewrite'=>true)))
|
11 |
+
{
|
12 |
+
$is_homepage = true;
|
13 |
+
}
|
14 |
+
parent::_prepareLayout();
|
15 |
+
if (!$this->getTemplate() && $slider_position == 'only_home' && $is_homepage == true) {
|
16 |
+
$this->setTemplate('productslider/productslider.phtml');
|
17 |
+
}
|
18 |
+
if (!$this->getTemplate() && $slider_position == 'only_category_page' && $in_category == 'catalog_category_view') {
|
19 |
+
$this->setTemplate('productslider/productslider.phtml');
|
20 |
+
}
|
21 |
+
if (!$this->getTemplate() && $slider_position == 'both_home_category') {
|
22 |
+
if($in_category == 'catalog_category_view' || $is_homepage == true){
|
23 |
+
$this->setTemplate('productslider/productslider.phtml');
|
24 |
+
}
|
25 |
+
}
|
26 |
+
return $this;
|
27 |
+
}
|
28 |
+
}
|
app/code/community/Magebuzz/Productslider/Block/Productslider.php
ADDED
@@ -0,0 +1,208 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Block_Productslider extends Mage_Catalog_Block_Product_Abstract
|
3 |
+
{
|
4 |
+
public function _prepareLayout()
|
5 |
+
{
|
6 |
+
return parent::_prepareLayout();
|
7 |
+
}
|
8 |
+
|
9 |
+
public function getProductslider()
|
10 |
+
{
|
11 |
+
if (!$this->hasData('productslider')) {
|
12 |
+
$this->setData('productslider', Mage::registry('productslider'));
|
13 |
+
}
|
14 |
+
return $this->getData('productslider');
|
15 |
+
|
16 |
+
}
|
17 |
+
public function __construct() {
|
18 |
+
$productType = $this->getProductsType();
|
19 |
+
if(!$this->getProductCollection()){
|
20 |
+
switch ($productType) {
|
21 |
+
case 'random':
|
22 |
+
$this->setProductCollection($this->getRandomProducts());
|
23 |
+
$this->setPageTitle('Random Products');
|
24 |
+
break;
|
25 |
+
case 'bestseller':
|
26 |
+
$this->setProductCollection($this->getBestsellerProducts());
|
27 |
+
$this->setPageTitle('Bestseller Products');
|
28 |
+
break;
|
29 |
+
case 'mostviewed':
|
30 |
+
$this->setProductCollection($this->getMostviewedProducts());
|
31 |
+
$this->setPageTitle('Most Viewed Products');
|
32 |
+
break;
|
33 |
+
case 'recentlyadded':
|
34 |
+
$this->setProductCollection($this->getRecentlyAdded());
|
35 |
+
$this->setPageTitle('Recently Added');
|
36 |
+
break;
|
37 |
+
case 'special':
|
38 |
+
$this->setProductCollection($this->getSpecialProducts());
|
39 |
+
$this->setPageTitle('Special Products');
|
40 |
+
break;
|
41 |
+
default:
|
42 |
+
$this->setProductCollection($this->getRandomProducts());
|
43 |
+
$this->setPageTitle('Random Products');
|
44 |
+
break;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
return $this;
|
48 |
+
}
|
49 |
+
public function getBestsellerProducts(){
|
50 |
+
$_limit = $this->getNumProduct();
|
51 |
+
$current_category = Mage::registry('current_category');
|
52 |
+
$is_category_filter = Mage::getStoreConfig('productslider/product_setting/category_filter');
|
53 |
+
$collection = Mage::getResourceModel('reports/product_collection')
|
54 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
55 |
+
->addOrderedQty()
|
56 |
+
->addMinimalPrice()
|
57 |
+
->addTaxPercents()
|
58 |
+
->addStoreFilter();
|
59 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
60 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
|
61 |
+
if($current_category && $is_category_filter == '1'){
|
62 |
+
$current_category_id = Mage::registry('current_category')->getId();
|
63 |
+
$currentCategory = Mage::getModel('catalog/category')->load($current_category_id);
|
64 |
+
$collection->addCategoryFilter($currentCategory);
|
65 |
+
}
|
66 |
+
$collection->setPageSize($_limit);
|
67 |
+
return $collection;
|
68 |
+
}
|
69 |
+
public function getMostviewedProducts(){
|
70 |
+
$_limit = $this->getNumProduct();
|
71 |
+
$current_category = Mage::registry('current_category');
|
72 |
+
$is_category_filter = Mage::getStoreConfig('productslider/product_setting/category_filter');
|
73 |
+
$collection = Mage::getResourceModel('reports/product_collection')
|
74 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
75 |
+
->addViewsCount()
|
76 |
+
->addMinimalPrice()
|
77 |
+
->addTaxPercents()
|
78 |
+
->addStoreFilter();
|
79 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
80 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
|
81 |
+
if($current_category && $is_category_filter == '1'){
|
82 |
+
$current_category_id = Mage::registry('current_category')->getId();
|
83 |
+
$currentCategory = Mage::getModel('catalog/category')->load($current_category_id);
|
84 |
+
$collection->addCategoryFilter($currentCategory);
|
85 |
+
}
|
86 |
+
$collection->setPageSize($_limit);
|
87 |
+
return $collection;
|
88 |
+
}
|
89 |
+
public function getRandomProducts() {
|
90 |
+
$_limit = $this->getNumProduct();
|
91 |
+
$current_category = Mage::registry('current_category');
|
92 |
+
$is_category_filter = Mage::getStoreConfig('productslider/product_setting/category_filter');
|
93 |
+
$collection = Mage::getResourceModel('catalog/product_collection')
|
94 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
95 |
+
->addMinimalPrice()
|
96 |
+
->addTaxPercents()
|
97 |
+
->addStoreFilter();
|
98 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
99 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
|
100 |
+
$collection->getSelect()->order('rand()');
|
101 |
+
if($current_category && $is_category_filter == '1'){
|
102 |
+
$current_category_id = Mage::registry('current_category')->getId();
|
103 |
+
$currentCategory = Mage::getModel('catalog/category')->load($current_category_id);
|
104 |
+
$collection->addCategoryFilter($currentCategory);
|
105 |
+
}
|
106 |
+
$collection->setPageSize($_limit);
|
107 |
+
return $collection;
|
108 |
+
}
|
109 |
+
public function getRecentlyAdded() {
|
110 |
+
$_limit = $this->getNumProduct();
|
111 |
+
$current_category = Mage::registry('current_category');
|
112 |
+
$is_category_filter = Mage::getStoreConfig('productslider/product_setting/category_filter');
|
113 |
+
//var_dump($is_category_filter); die();
|
114 |
+
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
|
115 |
+
$collection = Mage::getResourceModel('catalog/product_collection')
|
116 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
117 |
+
->addAttributeToSelect('*') //Need this so products show up correctly in product listing
|
118 |
+
->addAttributeToFilter('news_from_date', array('or'=> array(
|
119 |
+
0 => array('date' => true, 'to' => $todayDate),
|
120 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
121 |
+
), 'left')
|
122 |
+
->addAttributeToFilter('news_to_date', array('or'=> array(
|
123 |
+
0 => array('date' => true, 'from' => $todayDate),
|
124 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
125 |
+
), 'left')
|
126 |
+
->addAttributeToFilter(
|
127 |
+
array(
|
128 |
+
array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
|
129 |
+
array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
|
130 |
+
)
|
131 |
+
)
|
132 |
+
->addAttributeToSort('news_from_date', 'desc')
|
133 |
+
->addMinimalPrice()
|
134 |
+
->addTaxPercents()
|
135 |
+
->addStoreFilter();
|
136 |
+
|
137 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
138 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
|
139 |
+
if($current_category && $is_category_filter == '1'){
|
140 |
+
$current_category_id = Mage::registry('current_category')->getId();
|
141 |
+
$currentCategory = Mage::getModel('catalog/category')->load($current_category_id);
|
142 |
+
$collection->addCategoryFilter($currentCategory);
|
143 |
+
}
|
144 |
+
$collection->setPageSize($_limit);
|
145 |
+
return $collection;
|
146 |
+
}
|
147 |
+
public function getSpecialProducts() {
|
148 |
+
$_limit = $this->getNumProduct();
|
149 |
+
$current_category = Mage::registry('current_category');
|
150 |
+
$is_category_filter = Mage::getStoreConfig('productslider/product_setting/category_filter');
|
151 |
+
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
|
152 |
+
$collection = Mage::getResourceModel('catalog/product_collection')
|
153 |
+
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
|
154 |
+
->addAttributeToFilter('special_from_date', array('or'=> array(
|
155 |
+
0 => array('date' => true, 'to' => $todayDate),
|
156 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
157 |
+
), 'left')
|
158 |
+
->addAttributeToFilter('special_to_date', array('or'=> array(
|
159 |
+
0 => array('date' => true, 'from' => $todayDate),
|
160 |
+
1 => array('is' => new Zend_Db_Expr('null')))
|
161 |
+
), 'left')
|
162 |
+
->addAttributeToFilter(
|
163 |
+
array(
|
164 |
+
array('attribute' => 'special_from_date', 'is'=>new Zend_Db_Expr('not null')),
|
165 |
+
array('attribute' => 'special_to_date', 'is'=>new Zend_Db_Expr('not null'))
|
166 |
+
)
|
167 |
+
)
|
168 |
+
->addAttributeToSort('special_to_date','desc')
|
169 |
+
->addTaxPercents()
|
170 |
+
->addStoreFilter();
|
171 |
+
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
|
172 |
+
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
|
173 |
+
if($current_category && $is_category_filter == '1'){
|
174 |
+
$current_category_id = Mage::registry('current_category')->getId();
|
175 |
+
$currentCategory = Mage::getModel('catalog/category')->load($current_category_id);
|
176 |
+
$collection->addCategoryFilter($currentCategory);
|
177 |
+
}
|
178 |
+
$collection->setPageSize($_limit);
|
179 |
+
return $collection;
|
180 |
+
}
|
181 |
+
public function inCategoryPage($check='_')
|
182 |
+
{
|
183 |
+
return $this->getRequest()->getRequestedRouteName().$check.
|
184 |
+
$this->getRequest()->getRequestedControllerName().$check.
|
185 |
+
$this->getRequest()->getRequestedActionName();
|
186 |
+
}
|
187 |
+
public function getProductsType(){
|
188 |
+
$producttype = Mage::getStoreConfig('productslider/product_setting/type_product');
|
189 |
+
return $producttype;
|
190 |
+
}
|
191 |
+
public function getWidthSlider() {
|
192 |
+
$width_slider = (int) Mage::getStoreConfig('productslider/slider_setting/width_slider');
|
193 |
+
return $width_slider;
|
194 |
+
}
|
195 |
+
public function getHeightSlider() {
|
196 |
+
$height_slider = (int) Mage::getStoreConfig('productslider/slider_setting/height_slider');
|
197 |
+
return $height_slider;
|
198 |
+
}
|
199 |
+
public function getSliderStyle(){
|
200 |
+
return Mage::getStoreConfig('productslider/slider_setting/type_slider');
|
201 |
+
}
|
202 |
+
public function getNumProduct(){
|
203 |
+
return (int)Mage::getStoreConfig('productslider/product_setting/num_products');
|
204 |
+
}
|
205 |
+
public function showDescription(){
|
206 |
+
return (int)Mage::getStoreConfig('productslider/product_setting/show_description');
|
207 |
+
}
|
208 |
+
}
|
app/code/community/Magebuzz/Productslider/Helper/Data.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Helper_Data extends Mage_Core_Helper_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/Mysql4/Productslider.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_Mysql4_Productslider extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
// Note that the productslider_id refers to the key field in your database table.
|
8 |
+
$this->_init('productslider/productslider', 'productslider_id');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/Mysql4/Productslider/Collection.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_Mysql4_Productslider_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('productslider/productslider');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/Productslider.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_Productslider extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('productslider/productslider');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/Session.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_Session extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('productslider');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/Status.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_Status extends Varien_Object
|
4 |
+
{
|
5 |
+
const STATUS_ENABLED = 1;
|
6 |
+
const STATUS_DISABLED = 2;
|
7 |
+
|
8 |
+
static public function getOptionArray()
|
9 |
+
{
|
10 |
+
return array(
|
11 |
+
self::STATUS_ENABLED => Mage::helper('productslider')->__('Enabled'),
|
12 |
+
self::STATUS_DISABLED => Mage::helper('productslider')->__('Disabled')
|
13 |
+
);
|
14 |
+
}
|
15 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/System/Config/Position.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_System_Config_Position
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
return array(
|
8 |
+
array('value' => 'only_home', 'label'=>Mage::helper('adminhtml')->__('Home')),
|
9 |
+
array('value' => 'only_category_page', 'label'=>Mage::helper('adminhtml')->__('Category Page')),
|
10 |
+
array('value' => 'both_home_category', 'label'=>Mage::helper('adminhtml')->__('Home page & Category page')),
|
11 |
+
);
|
12 |
+
}
|
13 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/System/Config/Styles.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_System_Config_Styles
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
return array(
|
8 |
+
array('value' => 'simple-slider', 'label'=>Mage::helper('adminhtml')->__('Simple Slider')),
|
9 |
+
array('value' => 'slider-scrollbar', 'label'=>Mage::helper('adminhtml')->__('Slider With Horizontal Scrollbar')),
|
10 |
+
array('value' => 'slider-lightbox', 'label'=>Mage::helper('adminhtml')->__('Slider With Lightbox')),
|
11 |
+
);
|
12 |
+
}
|
13 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/System/Config/Type.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Productslider_Model_System_Config_Type
|
4 |
+
{
|
5 |
+
public function toOptionArray()
|
6 |
+
{
|
7 |
+
return array(
|
8 |
+
array('value' => 'random', 'label'=>Mage::helper('adminhtml')->__('Random Products')),
|
9 |
+
array('value' => 'bestseller', 'label'=>Mage::helper('adminhtml')->__('Bestseller')),
|
10 |
+
array('value' => 'mostviewed', 'label'=>Mage::helper('adminhtml')->__('Most Viewed')),
|
11 |
+
array('value' => 'recentlyadded', 'label'=>Mage::helper('adminhtml')->__('Recently Added')),
|
12 |
+
array('value' => 'special', 'label'=>Mage::helper('adminhtml')->__('Special Products')),
|
13 |
+
);
|
14 |
+
}
|
15 |
+
}
|
app/code/community/Magebuzz/Productslider/Model/Wysiwyg/Config.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_Model_Wysiwyg_Config extends Mage_Cms_Model_Wysiwyg_Config
|
3 |
+
{
|
4 |
+
public function getConfig($data = array())
|
5 |
+
{
|
6 |
+
$config = new Varien_Object();
|
7 |
+
|
8 |
+
$config->setData(array(
|
9 |
+
'enabled' => $this->isEnabled(),
|
10 |
+
'hidden' => $this->isHidden(),
|
11 |
+
'use_container' => false,
|
12 |
+
'add_variables' => false,
|
13 |
+
'add_widgets' => false,
|
14 |
+
'no_display' => false,
|
15 |
+
'translator' => Mage::helper('cms'),
|
16 |
+
'files_browser_window_url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg_images/index'),
|
17 |
+
'files_browser_window_width' => (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_width'),
|
18 |
+
'files_browser_window_height' => (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_height'),
|
19 |
+
'encode_directives' => true,
|
20 |
+
'directives_url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg/directive'),
|
21 |
+
'popup_css' => Mage::getBaseUrl('js').'mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/dialog.css',
|
22 |
+
'content_css' => Mage::getBaseUrl('js').'mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/content.css',
|
23 |
+
'width' => '100%',
|
24 |
+
'plugins' => array()
|
25 |
+
));
|
26 |
+
|
27 |
+
$config->setData('directives_url_quoted', preg_quote($config->getData('directives_url')));
|
28 |
+
|
29 |
+
if (is_array($data)) {
|
30 |
+
$config->addData($data);
|
31 |
+
}
|
32 |
+
return $config;
|
33 |
+
}
|
34 |
+
}
|
app/code/community/Magebuzz/Productslider/controllers/BestsellerController.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_BestsellerController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
$this->loadLayout();
|
7 |
+
$this->renderLayout();
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Magebuzz/Productslider/controllers/IndexController.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_IndexController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
$this->loadLayout();
|
7 |
+
$this->renderLayout();
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Magebuzz/Productslider/controllers/MostviewedController.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_MostviewedController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
$this->loadLayout();
|
7 |
+
$this->renderLayout();
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Magebuzz/Productslider/controllers/RandomController.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_RandomController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
$this->loadLayout();
|
7 |
+
$this->renderLayout();
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Magebuzz/Productslider/controllers/RecentlyAddController.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Productslider_RecentlyAddController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
public function indexAction()
|
5 |
+
{
|
6 |
+
$this->loadLayout();
|
7 |
+
$this->renderLayout();
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Magebuzz/Productslider/etc/adminhtml.xml
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<acl>
|
4 |
+
<resources>
|
5 |
+
<all>
|
6 |
+
<title>Allow Everything</title>
|
7 |
+
</all>
|
8 |
+
<admin>
|
9 |
+
<children>
|
10 |
+
<system>
|
11 |
+
<children>
|
12 |
+
<config>
|
13 |
+
<children>
|
14 |
+
<productslider translate="title">
|
15 |
+
<title>Productslider Permission Setting</title>
|
16 |
+
<sort_order>50</sort_order>
|
17 |
+
</productslider>
|
18 |
+
</children>
|
19 |
+
</config>
|
20 |
+
</children>
|
21 |
+
</system>
|
22 |
+
</children>
|
23 |
+
</admin>
|
24 |
+
</resources>
|
25 |
+
</acl>
|
26 |
+
</config>
|
app/code/community/Magebuzz/Productslider/etc/config.xml
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Magebuzz_Productslider>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Magebuzz_Productslider>
|
7 |
+
</modules>
|
8 |
+
<frontend>
|
9 |
+
<secure_url>
|
10 |
+
<productslider>/productslider/</productslider>
|
11 |
+
</secure_url>
|
12 |
+
<routers>
|
13 |
+
<productslider>
|
14 |
+
<use>standard</use>
|
15 |
+
<args>
|
16 |
+
<module>Magebuzz_Productslider</module>
|
17 |
+
<frontName>productslider</frontName>
|
18 |
+
</args>
|
19 |
+
</productslider>
|
20 |
+
</routers>
|
21 |
+
<layout>
|
22 |
+
<updates>
|
23 |
+
<productslider>
|
24 |
+
<file>productslider.xml</file>
|
25 |
+
</productslider>
|
26 |
+
</updates>
|
27 |
+
</layout>
|
28 |
+
</frontend>
|
29 |
+
<admin>
|
30 |
+
<routers>
|
31 |
+
<productslider>
|
32 |
+
<use>admin</use>
|
33 |
+
<args>
|
34 |
+
<module>Magebuzz_Productslider</module>
|
35 |
+
<frontName>productslider</frontName>
|
36 |
+
</args>
|
37 |
+
</productslider>
|
38 |
+
</routers>
|
39 |
+
</admin>
|
40 |
+
<adminhtml>
|
41 |
+
<layout>
|
42 |
+
<updates>
|
43 |
+
<productslider>
|
44 |
+
<file>productslider.xml</file>
|
45 |
+
</productslider>
|
46 |
+
</updates>
|
47 |
+
</layout>
|
48 |
+
</adminhtml>
|
49 |
+
<global>
|
50 |
+
<models>
|
51 |
+
<productslider>
|
52 |
+
<class>Magebuzz_Productslider_Model</class>
|
53 |
+
<resourceModel>productslider_mysql4</resourceModel>
|
54 |
+
</productslider>
|
55 |
+
<productslider_mysql4>
|
56 |
+
<class>Magebuzz_Productslider_Model_Mysql4</class>
|
57 |
+
<entities>
|
58 |
+
<productslider>
|
59 |
+
<table>productslider</table>
|
60 |
+
</productslider>
|
61 |
+
</entities>
|
62 |
+
</productslider_mysql4>
|
63 |
+
</models>
|
64 |
+
<resources>
|
65 |
+
<productslider_setup>
|
66 |
+
<setup>
|
67 |
+
<module>Magebuzz_Productslider</module>
|
68 |
+
</setup>
|
69 |
+
<connection>
|
70 |
+
<use>core_setup</use>
|
71 |
+
</connection>
|
72 |
+
</productslider_setup>
|
73 |
+
<productslider_write>
|
74 |
+
<connection>
|
75 |
+
<use>core_write</use>
|
76 |
+
</connection>
|
77 |
+
</productslider_write>
|
78 |
+
<productslider_read>
|
79 |
+
<connection>
|
80 |
+
<use>core_read</use>
|
81 |
+
</connection>
|
82 |
+
</productslider_read>
|
83 |
+
</resources>
|
84 |
+
<blocks>
|
85 |
+
<productslider>
|
86 |
+
<class>Magebuzz_Productslider_Block</class>
|
87 |
+
</productslider>
|
88 |
+
<!--Emplement Rewrite Block In Module-->
|
89 |
+
<!--<target_module>
|
90 |
+
<rewrite>
|
91 |
+
<path_to>Magebuzz_Productslider_Block_Example</path_to>
|
92 |
+
</rewrite>
|
93 |
+
</target_module>-->
|
94 |
+
</blocks>
|
95 |
+
<helpers>
|
96 |
+
<productslider>
|
97 |
+
<class>Magebuzz_Productslider_Helper</class>
|
98 |
+
</productslider>
|
99 |
+
</helpers>
|
100 |
+
<!--Emplement Events Used In Module-->
|
101 |
+
<!--<events>
|
102 |
+
<event_name>
|
103 |
+
<observers>
|
104 |
+
<productslider>
|
105 |
+
<type>singleton</type>
|
106 |
+
<class>productslider/observer</class>
|
107 |
+
<method>methodName</method>
|
108 |
+
</productslider>
|
109 |
+
</observers>
|
110 |
+
</event_name>
|
111 |
+
</events>-->
|
112 |
+
<template>
|
113 |
+
<email>
|
114 |
+
<productslider_general_email_template>
|
115 |
+
<label>Title Email</label>
|
116 |
+
<file>productslider_example.html</file>
|
117 |
+
<type>html</type>
|
118 |
+
</productslider_general_email_template>
|
119 |
+
</email>
|
120 |
+
</template>
|
121 |
+
</global>
|
122 |
+
<!--Set Default Value For Setting Options-->
|
123 |
+
<default>
|
124 |
+
<productslider>
|
125 |
+
<slider_setting>
|
126 |
+
<width_slider>685</width_slider>
|
127 |
+
<height_slider>210</height_slider>
|
128 |
+
<type_slider>simple-slider</type_slider>
|
129 |
+
<slider_position>only_home</slider_position>
|
130 |
+
</slider_setting>
|
131 |
+
<product_setting>
|
132 |
+
<type_product>random</type_product>
|
133 |
+
<category_filter>1</category_filter>
|
134 |
+
<num_products>6</num_products>
|
135 |
+
<show_description>1</show_description>
|
136 |
+
</product_setting>
|
137 |
+
</productslider>
|
138 |
+
</default>
|
139 |
+
<translate>
|
140 |
+
<modules>
|
141 |
+
<Magebuzz_Productslider>
|
142 |
+
<files>
|
143 |
+
<default>Magebuzz_Productslider.csv</default>
|
144 |
+
</files>
|
145 |
+
</Magebuzz_Productslider>
|
146 |
+
</modules>
|
147 |
+
</translate>
|
148 |
+
</config>
|
app/code/community/Magebuzz/Productslider/etc/system.xml
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<magebuzz translate="label">
|
5 |
+
<label>Magebuzz Add-ons</label>
|
6 |
+
<sort_order>400</sort_order>
|
7 |
+
</magebuzz>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<productslider translate="label" module="productslider">
|
11 |
+
<label>Product Slider</label>
|
12 |
+
<tab>magebuzz</tab>
|
13 |
+
<frontend_type>text</frontend_type>
|
14 |
+
<sort_order>299</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 |
+
<slider_setting translate="label">
|
20 |
+
<label>Slider Setting</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 |
+
<width_slider translate="label comment">
|
28 |
+
<label>Slider Width</label>
|
29 |
+
<frontend_type>text</frontend_type>
|
30 |
+
<sort_order>1</sort_order>
|
31 |
+
<show_in_default>1</show_in_default>
|
32 |
+
<show_in_website>1</show_in_website>
|
33 |
+
<show_in_store>1</show_in_store>
|
34 |
+
</width_slider>
|
35 |
+
<height_slider translate="label comment">
|
36 |
+
<label>Slider Height</label>
|
37 |
+
<frontend_type>text</frontend_type>
|
38 |
+
<sort_order>2</sort_order>
|
39 |
+
<show_in_default>1</show_in_default>
|
40 |
+
<show_in_website>1</show_in_website>
|
41 |
+
<show_in_store>1</show_in_store>
|
42 |
+
</height_slider>
|
43 |
+
<type_slider translate="label, comment">
|
44 |
+
<label>Type of slider</label>
|
45 |
+
<comment><![CDATA[Choose the style of slider]]></comment>
|
46 |
+
<frontend_type>select</frontend_type>
|
47 |
+
<source_model>productslider/system_config_styles</source_model>
|
48 |
+
<sort_order>3</sort_order>
|
49 |
+
<show_in_default>1</show_in_default>
|
50 |
+
<show_in_website>1</show_in_website>
|
51 |
+
<show_in_store>1</show_in_store>
|
52 |
+
</type_slider>
|
53 |
+
<slider_position translate="label, comment">
|
54 |
+
<label>Slider Position</label>
|
55 |
+
<comment><![CDATA[Choose position of slider]]></comment>
|
56 |
+
<frontend_type>select</frontend_type>
|
57 |
+
<source_model>productslider/system_config_position</source_model>
|
58 |
+
<sort_order>5</sort_order>
|
59 |
+
<show_in_default>1</show_in_default>
|
60 |
+
<show_in_website>1</show_in_website>
|
61 |
+
<show_in_store>1</show_in_store>
|
62 |
+
</slider_position>
|
63 |
+
</fields>
|
64 |
+
</slider_setting>
|
65 |
+
<product_setting translate="label">
|
66 |
+
<label>Product Setting</label>
|
67 |
+
<frontend_type>text</frontend_type>
|
68 |
+
<sort_order>2</sort_order>
|
69 |
+
<show_in_default>1</show_in_default>
|
70 |
+
<show_in_website>1</show_in_website>
|
71 |
+
<show_in_store>1</show_in_store>
|
72 |
+
<fields>
|
73 |
+
<type_product translate="label comment">
|
74 |
+
<label>Product Type</label>
|
75 |
+
<frontend_type>select</frontend_type>
|
76 |
+
<source_model>productslider/system_config_type</source_model>
|
77 |
+
<sort_order>1</sort_order>
|
78 |
+
<show_in_default>1</show_in_default>
|
79 |
+
<show_in_website>1</show_in_website>
|
80 |
+
<show_in_store>1</show_in_store>
|
81 |
+
</type_product>
|
82 |
+
<category_filter translate="label comment">
|
83 |
+
<label>Category Filter</label>
|
84 |
+
<frontend_type>select</frontend_type>
|
85 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
86 |
+
<sort_order>2</sort_order>
|
87 |
+
<show_in_default>1</show_in_default>
|
88 |
+
<show_in_website>1</show_in_website>
|
89 |
+
<show_in_store>1</show_in_store>
|
90 |
+
</category_filter>
|
91 |
+
<num_products translate="label, comment">
|
92 |
+
<label>Number of Product Show</label>
|
93 |
+
<frontend_type>text</frontend_type>
|
94 |
+
<sort_order>3</sort_order>
|
95 |
+
<show_in_default>1</show_in_default>
|
96 |
+
<show_in_website>1</show_in_website>
|
97 |
+
<show_in_store>1</show_in_store>
|
98 |
+
</num_products>
|
99 |
+
<show_description translate="label comment">
|
100 |
+
<label>Show Product Description</label>
|
101 |
+
<frontend_type>select</frontend_type>
|
102 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
103 |
+
<sort_order>4</sort_order>
|
104 |
+
<show_in_default>1</show_in_default>
|
105 |
+
<show_in_website>1</show_in_website>
|
106 |
+
<show_in_store>1</show_in_store>
|
107 |
+
</show_description>
|
108 |
+
</fields>
|
109 |
+
</product_setting>
|
110 |
+
</groups>
|
111 |
+
</productslider>
|
112 |
+
</sections>
|
113 |
+
</config>
|
app/code/community/Magebuzz/Productslider/sql/productslider_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
$installer->endSetup();
|
8 |
+
|
9 |
+
?>
|
app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Block_Adminhtml_Testimonial extends Mage_Adminhtml_Block_Widget_Grid_Container {
|
3 |
+
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
$this->_controller = 'adminhtml_testimonial';
|
7 |
+
$this->_blockGroup = 'testimonial';
|
8 |
+
$this->_headerText = Mage::helper('testimonial')->__('Manage Testimonials');
|
9 |
+
$this->_addButtonLabel = Mage::helper('testimonial')->__('Add New Testimonial');
|
10 |
+
parent::__construct();
|
11 |
+
}
|
12 |
+
|
13 |
+
|
14 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Block_Adminhtml_Testimonial_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
|
9 |
+
$this->_objectId = 'id';
|
10 |
+
$this->_blockGroup = 'testimonial';
|
11 |
+
$this->_controller = 'adminhtml_testimonial';
|
12 |
+
|
13 |
+
$this->_updateButton('save', 'label', Mage::helper('testimonial')->__('Save Testimonial'));
|
14 |
+
$this->_updateButton('delete', 'label', Mage::helper('testimonial')->__('Delete Testimonial'));
|
15 |
+
|
16 |
+
$this->_addButton('saveandcontinue', array(
|
17 |
+
'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
|
18 |
+
'onclick' => 'saveAndContinueEdit()',
|
19 |
+
'class' => 'save',
|
20 |
+
), -100);
|
21 |
+
|
22 |
+
$this->_formScripts[] = "
|
23 |
+
function toggleEditor() {
|
24 |
+
if (tinyMCE.getInstanceById('testimonial_content') == null) {
|
25 |
+
tinyMCE.execCommand('mceAddControl', false, 'testimonial_content');
|
26 |
+
} else {
|
27 |
+
tinyMCE.execCommand('mceRemoveControl', false, 'testimonial_content');
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
function saveAndContinueEdit(){
|
32 |
+
editForm.submit($('edit_form').action+'back/edit/');
|
33 |
+
}
|
34 |
+
";
|
35 |
+
}
|
36 |
+
|
37 |
+
public function getHeaderText()
|
38 |
+
{
|
39 |
+
if( Mage::registry('testimonial_data') && Mage::registry('testimonial_data')->getId() ) {
|
40 |
+
return Mage::helper('testimonial')->__("Edit Testimonial '%s'", $this->htmlEscape(Mage::registry('testimonial_data')->getName()));
|
41 |
+
} else {
|
42 |
+
return Mage::helper('testimonial')->__('Add new testimonial');
|
43 |
+
}
|
44 |
+
}
|
45 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit/Form.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Block_Adminhtml_Testimonial_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
protected function _prepareForm()
|
6 |
+
{
|
7 |
+
$form = new Varien_Data_Form(array(
|
8 |
+
'id' => 'edit_form',
|
9 |
+
'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
|
10 |
+
'method' => 'post',
|
11 |
+
'enctype' => 'multipart/form-data'
|
12 |
+
)
|
13 |
+
);
|
14 |
+
|
15 |
+
$form->setUseContainer(true);
|
16 |
+
$this->setForm($form);
|
17 |
+
return parent::_prepareForm();
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit/Tab/Form.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Block_Adminhtml_Testimonial_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
|
4 |
+
{
|
5 |
+
protected function _prepareForm()
|
6 |
+
{
|
7 |
+
$form = new Varien_Data_Form();
|
8 |
+
$this->setForm($form);
|
9 |
+
$form->setHtmlIdPrefix('testimonial_');
|
10 |
+
$fieldset = $form->addFieldset('testimonial_form', array('legend'=>Mage::helper('testimonial')->__('General Information')));
|
11 |
+
|
12 |
+
if ( Mage::getSingleton('adminhtml/session')->getTestimonialData() )
|
13 |
+
{
|
14 |
+
$data = Mage::getSingleton('adminhtml/session')->getTestimonialData();
|
15 |
+
Mage::getSingleton('adminhtml/session')->setTestimonialData(null);
|
16 |
+
} elseif ( Mage::registry('testimonial_data') ) {
|
17 |
+
$data = Mage::registry('testimonial_data')->getData();
|
18 |
+
}
|
19 |
+
|
20 |
+
$fieldset->addField('name', 'text', array(
|
21 |
+
'label' => Mage::helper('testimonial')->__('Name'),
|
22 |
+
'class' => 'required-entry',
|
23 |
+
'required' => true,
|
24 |
+
'name' => 'name',
|
25 |
+
));
|
26 |
+
|
27 |
+
$fieldset->addField('email', 'text', array(
|
28 |
+
'label' => Mage::helper('testimonial')->__('Email'),
|
29 |
+
'required' => true,
|
30 |
+
'name' => 'email',
|
31 |
+
));
|
32 |
+
|
33 |
+
//If avatar exists -> view
|
34 |
+
$data['change_avatar'] = 'Change Avatar';
|
35 |
+
if(isset($data['avatar_name']) && $data['avatar_name'] != ''){
|
36 |
+
$avatarLink = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) .'magebuzz/avatar/'.$data['avatar_name'];
|
37 |
+
$avatarName = $data['avatar_name'];
|
38 |
+
$fieldset->addField('image', 'label', array(
|
39 |
+
'label' => Mage::helper('testimonial')->__('Avatar'),
|
40 |
+
'name' =>'image',
|
41 |
+
'value' => $avatarLink,
|
42 |
+
'after_element_html' => '<img src="'.$avatarLink .'" alt=" '. $avatarName .'" height="120" width="120" />',
|
43 |
+
));
|
44 |
+
|
45 |
+
$fieldset->addField('avatar', 'image', array(
|
46 |
+
'label' => Mage::helper('testimonial')->__('Change Avatar'),
|
47 |
+
'required' => false,
|
48 |
+
'name' => 'avatar',
|
49 |
+
));
|
50 |
+
|
51 |
+
}else{
|
52 |
+
$fieldset->addField('avatar', 'image', array(
|
53 |
+
'label' => Mage::helper('testimonial')->__('Avatar'),
|
54 |
+
'required' => false,
|
55 |
+
'name' => 'avatar',
|
56 |
+
));
|
57 |
+
}
|
58 |
+
|
59 |
+
|
60 |
+
$fieldset->addField('website', 'link', array(
|
61 |
+
'label' => Mage::helper('testimonial')->__('Website'),
|
62 |
+
'required' => false,
|
63 |
+
'name' => 'website',
|
64 |
+
'href' => 'website',
|
65 |
+
));
|
66 |
+
|
67 |
+
$fieldset->addField('company', 'text', array(
|
68 |
+
'label' => Mage::helper('testimonial')->__('Company'),
|
69 |
+
'required' => false,
|
70 |
+
'name' => 'company',
|
71 |
+
));
|
72 |
+
|
73 |
+
$fieldset->addField('address', 'text', array(
|
74 |
+
'label' => Mage::helper('testimonial')->__('Address'),
|
75 |
+
'required' => false,
|
76 |
+
'name' => 'address',
|
77 |
+
));
|
78 |
+
|
79 |
+
$fieldset->addField('testimonial', 'textarea', array(
|
80 |
+
'label' => Mage::helper('testimonial')->__('Testimonial'),
|
81 |
+
'required' => true,
|
82 |
+
'name' => 'testimonial',
|
83 |
+
));
|
84 |
+
|
85 |
+
|
86 |
+
|
87 |
+
$fieldset->addField('status', 'select', array(
|
88 |
+
'label' => Mage::helper('testimonial')->__('Status'),
|
89 |
+
'name' => 'status',
|
90 |
+
'values' => array(
|
91 |
+
array(
|
92 |
+
'value' => 1,
|
93 |
+
'label' => Mage::helper('testimonial')->__('Approved'),
|
94 |
+
),
|
95 |
+
|
96 |
+
array(
|
97 |
+
'value' => 2,
|
98 |
+
'label' => Mage::helper('testimonial')->__('Not Approved'),
|
99 |
+
),
|
100 |
+
|
101 |
+
array(
|
102 |
+
'value' => 3,
|
103 |
+
'label' => Mage::helper('testimonial')->__('Pending'),
|
104 |
+
),
|
105 |
+
),
|
106 |
+
));
|
107 |
+
|
108 |
+
|
109 |
+
$form->setValues($data);
|
110 |
+
return parent::_prepareForm();
|
111 |
+
|
112 |
+
|
113 |
+
}
|
114 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Edit/Tabs.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Block_Adminhtml_Testimonial_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
|
4 |
+
{
|
5 |
+
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
parent::__construct();
|
9 |
+
$this->setId('testimonial_tabs');
|
10 |
+
$this->setDestElementId('edit_form');
|
11 |
+
$this->setTitle(Mage::helper('testimonial')->__('Testimonial Information'));
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _beforeToHtml()
|
15 |
+
{
|
16 |
+
$this->addTab('form_section', array(
|
17 |
+
'label' => Mage::helper('testimonial')->__('General'),
|
18 |
+
'title' => Mage::helper('testimonial')->__('General'),
|
19 |
+
'content' => $this->getLayout()->createBlock('testimonial/adminhtml_testimonial_edit_tab_form')->toHtml(),
|
20 |
+
));
|
21 |
+
|
22 |
+
return parent::_beforeToHtml();
|
23 |
+
}
|
24 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Grid.php
ADDED
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Block_Adminhtml_Testimonial_Grid extends Mage_Adminhtml_Block_Widget_Grid
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
parent::__construct();
|
8 |
+
$this->setId('testimonialGrid');
|
9 |
+
$this->setDefaultSort('testimonial_id');
|
10 |
+
$this->setDefaultDir('DESC');
|
11 |
+
$this->setSaveParametersInSession(true);
|
12 |
+
}
|
13 |
+
|
14 |
+
protected function _prepareCollection()
|
15 |
+
{
|
16 |
+
$collection = Mage::getModel('testimonial/testimonial')->getCollection();
|
17 |
+
$this->setCollection($collection);
|
18 |
+
return parent::_prepareCollection();
|
19 |
+
}
|
20 |
+
|
21 |
+
protected function _prepareColumns()
|
22 |
+
{
|
23 |
+
$this->addColumn('testimonial_id', array(
|
24 |
+
'header' => Mage::helper('testimonial')->__('ID'),
|
25 |
+
'align' =>'right',
|
26 |
+
'width' => '50px',
|
27 |
+
'index' => 'testimonial_id',
|
28 |
+
));
|
29 |
+
|
30 |
+
$this->addColumn('name', array(
|
31 |
+
'header' => Mage::helper('testimonial')->__('Name'),
|
32 |
+
'align' =>'left',
|
33 |
+
'index' => 'name',
|
34 |
+
));
|
35 |
+
|
36 |
+
$this->addColumn('email', array(
|
37 |
+
'header' => Mage::helper('testimonial')->__('Email'),
|
38 |
+
'align' =>'left',
|
39 |
+
'index' => 'email',
|
40 |
+
));
|
41 |
+
|
42 |
+
$this->addColumn('avatar_name', array(
|
43 |
+
'header' => Mage::helper('testimonial')->__('Avatar'),
|
44 |
+
'align' =>'center',
|
45 |
+
'index' => 'avatar_name',
|
46 |
+
'width' => '100px',
|
47 |
+
'type' => 'image',
|
48 |
+
'escape' => true,
|
49 |
+
'sortable' => false,
|
50 |
+
'filter' => false,
|
51 |
+
'renderer' => new Magebuzz_Testimonial_Block_Adminhtml_Testimonial_Renderer_Image
|
52 |
+
));
|
53 |
+
|
54 |
+
$this->addColumn('website', array(
|
55 |
+
'header' => Mage::helper('testimonial')->__('Website'),
|
56 |
+
'align' =>'left',
|
57 |
+
'index' => 'website',
|
58 |
+
));
|
59 |
+
|
60 |
+
$this->addColumn('company', array(
|
61 |
+
'header' => Mage::helper('testimonial')->__('Company'),
|
62 |
+
'align' =>'left',
|
63 |
+
'index' => 'company',
|
64 |
+
));
|
65 |
+
|
66 |
+
$this->addColumn('address', array(
|
67 |
+
'header' => Mage::helper('testimonial')->__('Address'),
|
68 |
+
'align' =>'left',
|
69 |
+
'index' => 'address',
|
70 |
+
));
|
71 |
+
|
72 |
+
|
73 |
+
$this->addColumn('created_time', array(
|
74 |
+
'header' => Mage::helper('testimonial')->__('Created Time'),
|
75 |
+
'align' =>'left',
|
76 |
+
'type' =>'date',
|
77 |
+
'index' => 'created_time',
|
78 |
+
));
|
79 |
+
|
80 |
+
$this->addColumn('status', array(
|
81 |
+
'header' => Mage::helper('testimonial')->__('Status'),
|
82 |
+
'align' => 'left',
|
83 |
+
'width' => '80px',
|
84 |
+
'index' => 'status',
|
85 |
+
'type' => 'options',
|
86 |
+
'options' => array(
|
87 |
+
1 => 'Approved',
|
88 |
+
2 => 'Not Approved',
|
89 |
+
3 => 'Pending',
|
90 |
+
),
|
91 |
+
));
|
92 |
+
|
93 |
+
$this->addColumn('action',
|
94 |
+
array(
|
95 |
+
'header' => Mage::helper('testimonial')->__('Action'),
|
96 |
+
'width' => '100',
|
97 |
+
'type' => 'action',
|
98 |
+
'getter' => 'getId',
|
99 |
+
'actions' => array(
|
100 |
+
array(
|
101 |
+
'caption' => Mage::helper('testimonial')->__('Edit'),
|
102 |
+
'url' => array('base'=> '*/*/edit'),
|
103 |
+
'field' => 'id'
|
104 |
+
)
|
105 |
+
),
|
106 |
+
'filter' => false,
|
107 |
+
'sortable' => false,
|
108 |
+
'index' => 'stores',
|
109 |
+
'is_system' => true,
|
110 |
+
));
|
111 |
+
|
112 |
+
$this->addExportType('*/*/exportCsv', Mage::helper('testimonial')->__('CSV'));
|
113 |
+
$this->addExportType('*/*/exportXml', Mage::helper('testimonial')->__('XML'));
|
114 |
+
|
115 |
+
return parent::_prepareColumns();
|
116 |
+
}
|
117 |
+
|
118 |
+
protected function _prepareMassaction()
|
119 |
+
{
|
120 |
+
$this->setMassactionIdField('testimonial_id');
|
121 |
+
$this->getMassactionBlock()->setFormFieldName('testimonial');
|
122 |
+
|
123 |
+
$this->getMassactionBlock()->addItem('delete', array(
|
124 |
+
'label' => Mage::helper('testimonial')->__('Delete'),
|
125 |
+
'url' => $this->getUrl('*/*/massDelete'),
|
126 |
+
'confirm' => Mage::helper('testimonial')->__('Are you sure?')
|
127 |
+
));
|
128 |
+
|
129 |
+
$statuses = Mage::getSingleton('testimonial/status')->getOptionArray();
|
130 |
+
|
131 |
+
array_unshift($statuses, array('label'=>'', 'value'=>''));
|
132 |
+
$this->getMassactionBlock()->addItem('status', array(
|
133 |
+
'label'=> Mage::helper('testimonial')->__('Change status'),
|
134 |
+
'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)),
|
135 |
+
'additional' => array(
|
136 |
+
'visibility' => array(
|
137 |
+
'name' => 'status',
|
138 |
+
'type' => 'select',
|
139 |
+
'class' => 'required-entry',
|
140 |
+
'label' => Mage::helper('testimonial')->__('Status'),
|
141 |
+
'values' => $statuses
|
142 |
+
)
|
143 |
+
)
|
144 |
+
));
|
145 |
+
return $this;
|
146 |
+
}
|
147 |
+
|
148 |
+
public function getRowUrl($row)
|
149 |
+
{
|
150 |
+
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
|
151 |
+
}
|
152 |
+
|
153 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Adminhtml/Testimonial/Renderer/Image.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Block_Adminhtml_Testimonial_Renderer_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract{
|
3 |
+
|
4 |
+
public function render(Varien_Object $row)
|
5 |
+
{
|
6 |
+
if($row->getData($this->getColumn()->getIndex())==""){
|
7 |
+
return "";
|
8 |
+
}else{
|
9 |
+
$html = '<img ';
|
10 |
+
$html .= 'id="' . $this->getColumn()->getId() . '" ';
|
11 |
+
$html .= 'width="80" ';
|
12 |
+
$html .= 'height="80" ';
|
13 |
+
$html .= 'src="' . Mage::getBaseUrl("media") .'magebuzz/avatar/' . $row->getData($this->getColumn()->getIndex()) . '"';
|
14 |
+
$html .= 'class="grid-image ' . $this->getColumn()->getInlineCss() . '"/>';
|
15 |
+
}
|
16 |
+
|
17 |
+
return $html;
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Captcha.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Block_Captcha extends Mage_Core_Block_Template {
|
3 |
+
public function __construct() {
|
4 |
+
parent::__construct();
|
5 |
+
}
|
6 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Form.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Block_Form extends Mage_Core_Block_Template {
|
3 |
+
|
4 |
+
|
5 |
+
public function _prepareLayout() {
|
6 |
+
$this->getLayout()->getBlock('head')->setTitle(Mage::helper('testimonial')->__('Testimonial Form'));
|
7 |
+
$this->setTemplate('testimonial/form.phtml');
|
8 |
+
return parent::_prepareLayout();
|
9 |
+
}
|
10 |
+
|
11 |
+
|
12 |
+
public function isCustomerLoggedIn() {
|
13 |
+
return Mage::getSingleton('customer/session')->isLoggedIn();
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
+
public function getCustomer () {
|
18 |
+
return Mage::getSingleton('customer/session')->getCustomer();
|
19 |
+
}
|
20 |
+
|
21 |
+
|
22 |
+
public function getBack() {
|
23 |
+
return $this->helper('testimonial')->getBack();
|
24 |
+
}
|
25 |
+
|
26 |
+
|
27 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Form/Login.php
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Block_Form_Login extends Mage_Customer_Block_Form_Login {
|
4 |
+
|
5 |
+
}
|
app/code/community/Magebuzz/Testimonial/Block/Sidebar.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Block_Sidebar extends Mage_Core_Block_Template {
|
3 |
+
public function getTestimonialsLast(){
|
4 |
+
$collection = Mage::getModel('testimonial/testimonial')->getCollection();
|
5 |
+
$collection->setOrder('created_time', 'DESC');
|
6 |
+
$collection->addFieldToFilter('status',1);
|
7 |
+
$collection->setPageSize(5);
|
8 |
+
return $collection;
|
9 |
+
}
|
10 |
+
|
11 |
+
public function getContentTestimonialSidebar($_description, $count){
|
12 |
+
$short_desc = substr($_description, 0, $count);
|
13 |
+
|
14 |
+
if(substr($short_desc, 0, strrpos($short_desc, ' '))!='') {
|
15 |
+
$short_desc = substr($short_desc, 0, strrpos($short_desc, ' '));
|
16 |
+
$short_desc = $short_desc.'...';
|
17 |
+
}
|
18 |
+
|
19 |
+
|
20 |
+
return $short_desc;
|
21 |
+
}
|
22 |
+
|
23 |
+
public function getNumberWordsOnSidebar(){
|
24 |
+
$countWord = Mage::getStoreConfig('testimonial/general_option/number_words');
|
25 |
+
return $countWord;
|
26 |
+
}
|
27 |
+
}
|
28 |
+
?>
|
app/code/community/Magebuzz/Testimonial/Block/Testimonial.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Block_Testimonial extends Mage_Core_Block_Template {
|
3 |
+
|
4 |
+
|
5 |
+
public function __construct() {
|
6 |
+
parent::__construct();
|
7 |
+
$collection = Mage::getModel('testimonial/testimonial')->getCollection();
|
8 |
+
$collection->setOrder('testimonial_id', 'DESC');
|
9 |
+
$collection->addFieldToFilter('status',1);
|
10 |
+
$this->setTestimonial($collection);
|
11 |
+
|
12 |
+
}
|
13 |
+
|
14 |
+
|
15 |
+
public function _prepareLayout() {
|
16 |
+
parent::_prepareLayout();
|
17 |
+
$this->getLayout()->getBlock('head')->setTitle(Mage::helper('testimonial')->__('Testimonial'));
|
18 |
+
$pager = $this->getLayout()->createBlock('page/html_pager', 'testimonial.pager');
|
19 |
+
|
20 |
+
if(Mage::getStoreConfig('testimonial/general_option/enable_testimonial_paging')){
|
21 |
+
$fieldPerPage = Mage::getStoreConfig('testimonial/general_option/divide_page');
|
22 |
+
$fieldPerPage = explode(',', $fieldPerPage);
|
23 |
+
$fieldPerPage = array_combine($fieldPerPage, $fieldPerPage);
|
24 |
+
$pager->setAvailableLimit($fieldPerPage);
|
25 |
+
}else{
|
26 |
+
$pager->setAvailableLimit(array('all'=>'all'));
|
27 |
+
}
|
28 |
+
|
29 |
+
$pager->setCollection($this->getTestimonial());
|
30 |
+
$this->setChild('pager', $pager);
|
31 |
+
$this->getTestimonial()->load();
|
32 |
+
|
33 |
+
return $this;
|
34 |
+
}
|
35 |
+
|
36 |
+
|
37 |
+
public function getPagerHtml() {
|
38 |
+
return $this->getChildHtml('pager');
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
|
43 |
+
public function getFormUrl() {
|
44 |
+
return $this->helper('testimonial')->getFormUrl();
|
45 |
+
}
|
46 |
+
|
47 |
+
|
48 |
+
}
|
app/code/community/Magebuzz/Testimonial/Helper/Data.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Helper_Data extends Mage_Core_Helper_Abstract {
|
3 |
+
|
4 |
+
public function getFormUrl() {
|
5 |
+
return $this->_getUrl('testimonial/index/check');
|
6 |
+
}
|
7 |
+
|
8 |
+
public function getBack() {
|
9 |
+
return $this->_getUrl('testimonial/index');
|
10 |
+
}
|
11 |
+
}
|
app/code/community/Magebuzz/Testimonial/Model/Mysql4/Testimonial.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Model_Mysql4_Testimonial extends Mage_Core_Model_Mysql4_Abstract {
|
4 |
+
|
5 |
+
public function _construct() {
|
6 |
+
// Note that the testimonial_id refers to the key field in your database table.
|
7 |
+
$this->_init('testimonial/testimonial', 'testimonial_id');
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Magebuzz/Testimonial/Model/Mysql4/Testimonial/Collection.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Model_Mysql4_Testimonial_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
public function _construct()
|
6 |
+
{
|
7 |
+
parent::_construct();
|
8 |
+
$this->_init('testimonial/testimonial');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Magebuzz/Testimonial/Model/Session.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_Model_Session extends Mage_Core_Model_Session_Abstract {
|
3 |
+
|
4 |
+
public function __construct() {
|
5 |
+
$this->init('testimonial');
|
6 |
+
}
|
7 |
+
|
8 |
+
}
|
app/code/community/Magebuzz/Testimonial/Model/Status.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Model_Status extends Varien_Object {
|
4 |
+
|
5 |
+
const STATUS_ENABLED = 1;
|
6 |
+
const STATUS_DISABLED = 2;
|
7 |
+
const STATUS_PENDING = 3;
|
8 |
+
|
9 |
+
static public function getOptionArray() {
|
10 |
+
return array(
|
11 |
+
self::STATUS_ENABLED => Mage::helper('testimonial')->__('Approved'),
|
12 |
+
self::STATUS_DISABLED => Mage::helper('testimonial')->__('Not Approved'),
|
13 |
+
self::STATUS_PENDING => Mage::helper('testimonial')->__('Pending')
|
14 |
+
);
|
15 |
+
}
|
16 |
+
|
17 |
+
}
|
app/code/community/Magebuzz/Testimonial/Model/Testimonial.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Model_Testimonial extends Mage_Core_Model_Abstract {
|
4 |
+
|
5 |
+
public function _construct() {
|
6 |
+
parent::_construct();
|
7 |
+
$this->_init('testimonial/testimonial');
|
8 |
+
}
|
9 |
+
|
10 |
+
public function loadTestimonials(){
|
11 |
+
$this->getResource()->loadTestimonials();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function getNewFileName($destFile)
|
15 |
+
{
|
16 |
+
$fileInfo = pathinfo($destFile);
|
17 |
+
if (file_exists($destFile)) {
|
18 |
+
$index = 1;
|
19 |
+
$baseName = $fileInfo['filename'] . '.' . $fileInfo['extension'];
|
20 |
+
while( file_exists($fileInfo['dirname'] . DIRECTORY_SEPARATOR . $baseName) ) {
|
21 |
+
$baseName = $fileInfo['filename']. '_' . $index . '.' . $fileInfo['extension'];
|
22 |
+
$index ++;
|
23 |
+
}
|
24 |
+
$destFileName = $baseName;
|
25 |
+
} else {
|
26 |
+
return $fileInfo['basename'];
|
27 |
+
}
|
28 |
+
|
29 |
+
return $destFileName;
|
30 |
+
}
|
31 |
+
|
32 |
+
}
|
app/code/community/Magebuzz/Testimonial/controllers/Adminhtml/TestimonialController.php
ADDED
@@ -0,0 +1,267 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Magebuzz_Testimonial_Adminhtml_TestimonialController extends Mage_Adminhtml_Controller_action {
|
4 |
+
|
5 |
+
const XML_PATH_EMAIL_SELECT_TEMPLATE_AFTER_APPROVE = 'testimonial/email_configuration/select_template_approve';
|
6 |
+
|
7 |
+
public function _getTestimonial() {
|
8 |
+
|
9 |
+
return Mage::getSingleton('testimonial/testimonial');
|
10 |
+
}
|
11 |
+
|
12 |
+
protected function _initAction() {
|
13 |
+
$this->loadLayout()
|
14 |
+
->_setActiveMenu('testimonial/items')
|
15 |
+
->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
|
16 |
+
|
17 |
+
return $this;
|
18 |
+
}
|
19 |
+
|
20 |
+
public function indexAction() {
|
21 |
+
$this->_initAction();
|
22 |
+
$this->renderLayout();
|
23 |
+
|
24 |
+
}
|
25 |
+
|
26 |
+
public function editAction() {
|
27 |
+
$id = $this->getRequest()->getParam('id');
|
28 |
+
$model = Mage::getModel('testimonial/testimonial')->load($id);
|
29 |
+
|
30 |
+
if ($model->getId() || $id == 0) {
|
31 |
+
$data = Mage::getSingleton('adminhtml/session')->getFormData(true);
|
32 |
+
if (!empty($data)) {
|
33 |
+
$model->setData($data);
|
34 |
+
}
|
35 |
+
|
36 |
+
Mage::register('testimonial_data', $model);
|
37 |
+
|
38 |
+
$this->loadLayout();
|
39 |
+
$this->_setActiveMenu('testimonial/items');
|
40 |
+
|
41 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Manager Testimonial'), Mage::helper('adminhtml')->__('Manager Testimonial'));
|
42 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
|
43 |
+
|
44 |
+
$this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
|
45 |
+
|
46 |
+
$this->_addContent($this->getLayout()->createBlock('testimonial/adminhtml_testimonial_edit'))
|
47 |
+
->_addLeft($this->getLayout()->createBlock('testimonial/adminhtml_testimonial_edit_tabs'));
|
48 |
+
|
49 |
+
$this->renderLayout();
|
50 |
+
} else {
|
51 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('testimonial')->__('Item does not exist'));
|
52 |
+
$this->_redirect('*/*/');
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
public function newAction() {
|
57 |
+
$this->_forward('edit');
|
58 |
+
}
|
59 |
+
|
60 |
+
public function saveAction() {
|
61 |
+
$model = Mage::getModel('testimonial/testimonial');
|
62 |
+
if ($data = $this->getRequest()->getPost()) {
|
63 |
+
if(isset($_FILES['avatar']['name']) && $_FILES['avatar']['name'] != '') {
|
64 |
+
try
|
65 |
+
{
|
66 |
+
$path = Mage::getBaseDir().DS.'media/magebuzz/avatar'.DS;
|
67 |
+
$fname = $_FILES['avatar']['name'];
|
68 |
+
$fname = str_replace(' ', '_', $fname);
|
69 |
+
$uploader = new Varien_File_Uploader('avatar');
|
70 |
+
$uploader->setAllowedExtensions(array('jpg','jpeg','png','gif'));
|
71 |
+
$uploader->setAllowCreateFolders(true);
|
72 |
+
$uploader->setAllowRenameFiles(true);
|
73 |
+
$uploader->setFilesDispersion(false);
|
74 |
+
$destFile = $path.$fname;
|
75 |
+
$fname = $model->getNewFileName($destFile);
|
76 |
+
$uploader->save($path,$fname);
|
77 |
+
}
|
78 |
+
catch (Exception $e)
|
79 |
+
{
|
80 |
+
echo 'Error Message: '.$e->getMessage();
|
81 |
+
}
|
82 |
+
//this way the name is saved in DB
|
83 |
+
$data['avatar'] = $_FILES['avatar']['name'];
|
84 |
+
}else{
|
85 |
+
unset($data['avatar']);
|
86 |
+
}
|
87 |
+
|
88 |
+
$model->setData($data)
|
89 |
+
->setId($this->getRequest()->getParam('id'));
|
90 |
+
|
91 |
+
if(isset($_FILES['avatar']['name']) && $_FILES['avatar']['name'] != ''){
|
92 |
+
$model->setAvatarName($fname);
|
93 |
+
$model->setAvatarPath($path);
|
94 |
+
}
|
95 |
+
|
96 |
+
try {
|
97 |
+
if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
|
98 |
+
$model->setCreatedTime(now())
|
99 |
+
->setUpdateTime(now());
|
100 |
+
} else {
|
101 |
+
$model->setUpdateTime(now());
|
102 |
+
}
|
103 |
+
|
104 |
+
$model->save();
|
105 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('testimonial')->__('Item was successfully saved'));
|
106 |
+
Mage::getSingleton('adminhtml/session')->setFormData(false);
|
107 |
+
|
108 |
+
if ($this->getRequest()->getParam('back')) {
|
109 |
+
$this->_redirect('*/*/edit', array('id' => $model->getId()));
|
110 |
+
return;
|
111 |
+
}
|
112 |
+
$this->_redirect('*/*/');
|
113 |
+
return;
|
114 |
+
} catch (Exception $e) {
|
115 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
116 |
+
Mage::getSingleton('adminhtml/session')->setFormData($data);
|
117 |
+
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
|
118 |
+
return;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('testimonial')->__('Unable to find item to save'));
|
122 |
+
$this->_redirect('*/*/');
|
123 |
+
}
|
124 |
+
|
125 |
+
public function deleteAction() {
|
126 |
+
if( $this->getRequest()->getParam('id') > 0 ) {
|
127 |
+
try {
|
128 |
+
$model = Mage::getModel('testimonial/testimonial');
|
129 |
+
|
130 |
+
$model->setId($this->getRequest()->getParam('id'))
|
131 |
+
->delete();
|
132 |
+
|
133 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
|
134 |
+
$this->_redirect('*/*/');
|
135 |
+
} catch (Exception $e) {
|
136 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
137 |
+
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
|
138 |
+
}
|
139 |
+
}
|
140 |
+
$this->_redirect('*/*/');
|
141 |
+
}
|
142 |
+
|
143 |
+
public function massDeleteAction() {
|
144 |
+
$testimonialIds = $this->getRequest()->getParam('testimonial');
|
145 |
+
if(!is_array($testimonialIds)) {
|
146 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
|
147 |
+
} else {
|
148 |
+
try {
|
149 |
+
foreach ($testimonialIds as $testimonialId) {
|
150 |
+
$testimonial = Mage::getModel('testimonial/testimonial')->load($testimonialId);
|
151 |
+
$testimonial->delete();
|
152 |
+
}
|
153 |
+
Mage::getSingleton('adminhtml/session')->addSuccess(
|
154 |
+
Mage::helper('adminhtml')->__(
|
155 |
+
'Total of %d record(s) were successfully deleted', count($testimonialIds)
|
156 |
+
)
|
157 |
+
);
|
158 |
+
} catch (Exception $e) {
|
159 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
160 |
+
}
|
161 |
+
}
|
162 |
+
$this->_redirect('*/*/index');
|
163 |
+
}
|
164 |
+
|
165 |
+
public function massStatusAction() {
|
166 |
+
$testimonialIds = $this->getRequest()->getParam('testimonial');
|
167 |
+
if(!is_array($testimonialIds)) {
|
168 |
+
Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
|
169 |
+
} else {
|
170 |
+
try {
|
171 |
+
foreach ($testimonialIds as $testimonialId) {
|
172 |
+
$current_status= $this->_getTestimonial()->load($testimonialId)->getStatus();
|
173 |
+
$updated_status= $this->getRequest()->getParam('status');
|
174 |
+
if ((Mage::getStoreConfig('testimonial/email_configuration/send_email_after_approve_testimonial', Mage::app()->getStore())=="1")and ($current_status=="3" and $updated_status=="1") ) {
|
175 |
+
$to = array('email'=>$this->_getTestimonial()->load($testimonialId)->getEmail(), 'name'=>$this->_getTestimonial()->load($testimonialId)->getName());
|
176 |
+
$this->sendemailAction($to, $templateConfigPath=self::XML_PATH_EMAIL_SELECT_TEMPLATE_AFTER_APPROVE);
|
177 |
+
Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Admin has just sent the email to customer for approving their testimonials'));
|
178 |
+
|
179 |
+
|
180 |
+
}
|
181 |
+
|
182 |
+
$testimonial = $this->_getTestimonial()->load($testimonialId)
|
183 |
+
->setStatus($this->getRequest()->getParam('status'))
|
184 |
+
->setIsMassupdate(true)
|
185 |
+
->save();
|
186 |
+
}
|
187 |
+
$this->_getSession()->addSuccess(
|
188 |
+
$this->__('Total of %d record(s) were successfully updated', count($testimonialIds))
|
189 |
+
);
|
190 |
+
}catch (Exception $e) {
|
191 |
+
$this->_getSession()->addError($e->getMessage());
|
192 |
+
}
|
193 |
+
}
|
194 |
+
$this->_redirect('*/*/index');
|
195 |
+
}
|
196 |
+
|
197 |
+
public function exportCsvAction() {
|
198 |
+
$fileName = 'testimonial.csv';
|
199 |
+
$content = $this->getLayout()->createBlock('testimonial/adminhtml_testimonial_grid')
|
200 |
+
->getCsv();
|
201 |
+
|
202 |
+
$this->_sendUploadResponse($fileName, $content);
|
203 |
+
}
|
204 |
+
|
205 |
+
public function exportXmlAction()
|
206 |
+
{
|
207 |
+
$fileName = 'testimonial.xml';
|
208 |
+
$content = $this->getLayout()->createBlock('testimonial/adminhtml_testimonial_grid')
|
209 |
+
->getXml();
|
210 |
+
|
211 |
+
$this->_sendUploadResponse($fileName, $content);
|
212 |
+
}
|
213 |
+
|
214 |
+
protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream') {
|
215 |
+
$response = $this->getResponse();
|
216 |
+
$response->setHeader('HTTP/1.1 200 OK','');
|
217 |
+
$response->setHeader('Pragma', 'public', true);
|
218 |
+
$response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
|
219 |
+
$response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
|
220 |
+
$response->setHeader('Last-Modified', date('r'));
|
221 |
+
$response->setHeader('Accept-Ranges', 'bytes');
|
222 |
+
$response->setHeader('Content-Length', strlen($content));
|
223 |
+
$response->setHeader('Content-type', $contentType);
|
224 |
+
$response->setBody($content);
|
225 |
+
$response->sendResponse();
|
226 |
+
die;
|
227 |
+
}
|
228 |
+
|
229 |
+
public function sendemailAction($to, $templateConfigPath) {
|
230 |
+
if(!$to) return;
|
231 |
+
$translate=Mage::getSingleton('core/translate');
|
232 |
+
$translate->setTranslateInline(false);
|
233 |
+
$mailTemplate=Mage::getModel('core/email_template');
|
234 |
+
$template=Mage::getStoreConfig($templateConfigPath, Mage::app()->getStore()->getId());
|
235 |
+
$sendTo=array();
|
236 |
+
foreach($to as $recipient) {
|
237 |
+
if(is_array($recipient)) {
|
238 |
+
$sendTo[]=$recipient;
|
239 |
+
}
|
240 |
+
else {
|
241 |
+
$sendTo[]=array(
|
242 |
+
'email'=>$recipient,
|
243 |
+
'name'=>null
|
244 |
+
);
|
245 |
+
}
|
246 |
+
|
247 |
+
}
|
248 |
+
foreach ($sendTo as $recipient ) {
|
249 |
+
$mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>Mage::app()->getStore()->getId()))
|
250 |
+
->sendTransactional(
|
251 |
+
$template,
|
252 |
+
Mage::getStoreConfig(Mage_Sales_Model_Order::XML_PATH_EMAIL_IDENTITY, Mage::app()->getStore()->getId()),
|
253 |
+
$recipient['email'],
|
254 |
+
$recipient['name'],
|
255 |
+
array('customer_name' =>$this->_getTestimonial()->load($testimonialId)->getName(),
|
256 |
+
'customer_email' =>$this->_getTestimonial()->load($testimonialId)->getEmail(),
|
257 |
+
'address' =>$this->_getTestimonial()->load($testimonialId)->getAddress(),
|
258 |
+
'website' =>$this->_getTestimonial()->load($testimonialId)->getWebsite(),
|
259 |
+
'company' =>$this->_getTestimonial()->load($testimonialId)->getCompany(),
|
260 |
+
'testimonial' =>$this->_getTestimonial()->load($testimonialId)->getTestimonial()
|
261 |
+
)
|
262 |
+
);
|
263 |
+
}
|
264 |
+
$translate->setTranslateInline(true);
|
265 |
+
return $this;
|
266 |
+
}
|
267 |
+
}
|
app/code/community/Magebuzz/Testimonial/controllers/FormController.php
ADDED
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_FormController extends Mage_Core_Controller_Front_Action {
|
3 |
+
|
4 |
+
const STATUS_ENABLED = 1;
|
5 |
+
const STATUS_DISABLED = 2;
|
6 |
+
const STATUS_PENDING = 3;
|
7 |
+
const XML_PATH_EMAIL_SELECT_TEMPLATE_AFTER_POST = 'testimonial/email_configuration/select_template_post';
|
8 |
+
|
9 |
+
public function indexAction() {
|
10 |
+
$this->loadLayout();
|
11 |
+
$this->_initLayoutMessages('testimonial/session');
|
12 |
+
$this->renderLayout();
|
13 |
+
}
|
14 |
+
|
15 |
+
public function _getSession() {
|
16 |
+
return Mage::getSingleton('testimonial/session');
|
17 |
+
}
|
18 |
+
|
19 |
+
public function captchaAction() {
|
20 |
+
require_once(Mage::getBaseDir('lib').DS.'captcha'.DS.'class.simplecaptcha.php');
|
21 |
+
//Background Image
|
22 |
+
$config['BackgroundImage'] = Mage::getBaseDir('lib') . DS .'captcha'. DS . "white.png";
|
23 |
+
|
24 |
+
//Background Color- HEX
|
25 |
+
$config['BackgroundColor'] = "FFFC00";
|
26 |
+
|
27 |
+
//image height - same as background image
|
28 |
+
$config['Height']=30;
|
29 |
+
|
30 |
+
//image width - same as background image
|
31 |
+
$config['Width']=100;
|
32 |
+
|
33 |
+
//text font size
|
34 |
+
$config['Font_Size']=20;
|
35 |
+
|
36 |
+
//text font style
|
37 |
+
$config['Font']= Mage::getBaseDir('lib') . DS .'captcha'. DS . "ARLRDBD.TTF";
|
38 |
+
|
39 |
+
//text angle to the left
|
40 |
+
$config['TextMinimumAngle']=15;
|
41 |
+
|
42 |
+
//text angle to the right
|
43 |
+
$config['TextMaximumAngle']=45;
|
44 |
+
|
45 |
+
//Text Color - HEX
|
46 |
+
$config['TextColor']='000000';
|
47 |
+
|
48 |
+
//Number of Captcha Code Character
|
49 |
+
$config['TextLength']=6;
|
50 |
+
|
51 |
+
//Background Image Transparency
|
52 |
+
// 0 - Not Visible, 100 - Fully Visible
|
53 |
+
$config['Transparency']=70;
|
54 |
+
|
55 |
+
$captcha = new SimpleCaptcha($config);
|
56 |
+
//Mage::getSingleton('customer/session')->setData('captcha_code', $captcha->Code);
|
57 |
+
Mage::getSingleton('testimonial/session')->setData('captcha_code', $captcha->Code);
|
58 |
+
|
59 |
+
}
|
60 |
+
|
61 |
+
|
62 |
+
public function save() {
|
63 |
+
$model= Mage::getModel('testimonial/testimonial');
|
64 |
+
$post = $this->getRequest()->getPost();
|
65 |
+
|
66 |
+
if ($post) {
|
67 |
+
//Upload avatar
|
68 |
+
if(isset($_FILES['avatar']['name']) && $_FILES['avatar']['name'] != '')
|
69 |
+
{
|
70 |
+
try
|
71 |
+
{
|
72 |
+
$path = Mage::getBaseDir().DS.'media/magebuzz/avatar'.DS;
|
73 |
+
$fname = $_FILES['avatar']['name'];
|
74 |
+
$fname = str_replace(' ', '_', $fname);
|
75 |
+
$uploader = new Varien_File_Uploader('avatar');
|
76 |
+
$uploader->setAllowedExtensions(array('jpg','jpeg','png','gif'));
|
77 |
+
$uploader->setAllowCreateFolders(true);
|
78 |
+
$uploader->setAllowRenameFiles(true);
|
79 |
+
$uploader->setFilesDispersion(false);
|
80 |
+
$destFile = $path.$fname;
|
81 |
+
$fname = $model->getNewFileName($destFile);
|
82 |
+
$uploader->save($path,$fname);
|
83 |
+
}
|
84 |
+
catch (Exception $e)
|
85 |
+
{
|
86 |
+
echo 'Error Message: '.$e->getMessage();
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
//Save to datatabase
|
91 |
+
try {
|
92 |
+
|
93 |
+
$model->setData($post);
|
94 |
+
$model->setAvatarName($fname);
|
95 |
+
$model->setAvatarPath($path);
|
96 |
+
$now = Mage::getModel('core/date')->timestamp(now());
|
97 |
+
$model->setCreatedTime(date('Y-m-d H:i:s',$now));
|
98 |
+
|
99 |
+
if(Mage::getStoreConfig('testimonial/testimonial_options/approve_testimonial', Mage::app()->getStore())==true) {
|
100 |
+
$model->setData('status',self::STATUS_PENDING);
|
101 |
+
}
|
102 |
+
else {
|
103 |
+
$model->setData('status',self::STATUS_ENABLED);
|
104 |
+
}
|
105 |
+
$model->save();
|
106 |
+
|
107 |
+
//Send mail after customer post testimonial
|
108 |
+
|
109 |
+
if (Mage::getStoreConfig('testimonial/email_configuration/send_email_after_post_testimonial', Mage::app()->getStore())=="1") {
|
110 |
+
$to = array('email'=>$post['email'], 'name'=> $post['name']);
|
111 |
+
$this->sendemailAction($to, $templateConfigPath=self::XML_PATH_EMAIL_SELECT_TEMPLATE_AFTER_POST);
|
112 |
+
}
|
113 |
+
|
114 |
+
$this->_redirect('*/index/thankmessage');
|
115 |
+
}
|
116 |
+
catch (Exception $e) {
|
117 |
+
echo $e->getMessage();
|
118 |
+
}
|
119 |
+
}
|
120 |
+
else
|
121 |
+
$this->_redirect('');
|
122 |
+
}
|
123 |
+
|
124 |
+
public function sendemailAction($to, $templateConfigPath) {
|
125 |
+
if(!$to) return;
|
126 |
+
$translate=Mage::getSingleton('core/translate');
|
127 |
+
$translate->setTranslateInline(false);
|
128 |
+
$mailTemplate=Mage::getModel('core/email_template');
|
129 |
+
$template=Mage::getStoreConfig($templateConfigPath, Mage::app()->getStore()->getId());
|
130 |
+
$sendTo=array();
|
131 |
+
foreach($to as $recipient) {
|
132 |
+
if(is_array($recipient)) {
|
133 |
+
$sendTo[]=$recipient;
|
134 |
+
}
|
135 |
+
else {
|
136 |
+
$sendTo[]=array(
|
137 |
+
'email'=>$recipient,
|
138 |
+
'name'=>null
|
139 |
+
);
|
140 |
+
}
|
141 |
+
|
142 |
+
}
|
143 |
+
foreach ($sendTo as $recipient ) {
|
144 |
+
$mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>Mage::app()->getStore()->getId()))
|
145 |
+
->sendTransactional(
|
146 |
+
$template,
|
147 |
+
Mage::getStoreConfig(Mage_Sales_Model_Order::XML_PATH_EMAIL_IDENTITY, Mage::app()->getStore()->getId()),
|
148 |
+
$recipient['email'],
|
149 |
+
$recipient['name'],
|
150 |
+
null
|
151 |
+
);
|
152 |
+
}
|
153 |
+
$translate->setTranslateInline(true);
|
154 |
+
return $this;
|
155 |
+
}
|
156 |
+
|
157 |
+
public function postAction() {
|
158 |
+
if(Mage::getStoreConfig('testimonial/testimonial_options/testimonial_captcha_enabled', Mage::app()->getStore())==true) {
|
159 |
+
$code=$this->_getSession()->getCaptchaCode();
|
160 |
+
$captcha_code=$_POST['captcha_code'];
|
161 |
+
if ($code != $captcha_code) {
|
162 |
+
Mage::getSingleton('core/session')->addError('The security code entered was incorrect. Please try again!');
|
163 |
+
$this->_redirect('*/form');
|
164 |
+
}
|
165 |
+
else $this->save();
|
166 |
+
}
|
167 |
+
else $this->save();
|
168 |
+
}
|
169 |
+
|
170 |
+
}
|
171 |
+
|
172 |
+
|
app/code/community/Magebuzz/Testimonial/controllers/IndexController.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Magebuzz_Testimonial_IndexController extends Mage_Core_Controller_Front_Action {
|
3 |
+
public function indexAction() {
|
4 |
+
$this->loadLayout();
|
5 |
+
$this->renderLayout();
|
6 |
+
}
|
7 |
+
|
8 |
+
public function checkAction() {
|
9 |
+
if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
|
10 |
+
if(Mage::getStoreConfig('testimonial/testimonial_options/allow_guest_write_testimonial', Mage::app()->getStore())=="1") {
|
11 |
+
$this->_redirect('*/form');
|
12 |
+
}
|
13 |
+
else {
|
14 |
+
Mage::getSingleton('customer/session')->authenticate($this);
|
15 |
+
}
|
16 |
+
}
|
17 |
+
else {
|
18 |
+
$this->_redirect('*/form');
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
|
23 |
+
public function thankmessageAction() {
|
24 |
+
$message=Mage::getStoreConfig('testimonial/testimonial_options/thank_message', Mage::app()->getStore());
|
25 |
+
if(Mage::getStoreConfig('testimonial/testimonial_options/approve_testimonial', Mage::app()->getStore())==true) {
|
26 |
+
Mage::getSingleton('core/session')->addSuccess($message);
|
27 |
+
}
|
28 |
+
else
|
29 |
+
Mage::getSingleton('core/session')->addSuccess($message);
|
30 |
+
|
31 |
+
$this->_redirect('*/index');
|
32 |
+
|
33 |
+
}
|
34 |
+
}
|
app/code/community/Magebuzz/Testimonial/etc/adminhtml.xml
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<menu>
|
4 |
+
<testimonial module="testimonial">
|
5 |
+
<title>Testimonial</title>
|
6 |
+
<sort_order>71</sort_order>
|
7 |
+
<children>
|
8 |
+
<testimonial_manage module="testimonial">
|
9 |
+
<title>Manage Testimonials</title>
|
10 |
+
<sort_order>100</sort_order>
|
11 |
+
<action>testimonial/adminhtml_testimonial/</action>
|
12 |
+
</testimonial_manage>
|
13 |
+
</children>
|
14 |
+
</testimonial>
|
15 |
+
</menu>
|
16 |
+
<acl>
|
17 |
+
<resources>
|
18 |
+
<all>
|
19 |
+
<title>Allow Everything</title>
|
20 |
+
</all>
|
21 |
+
<admin>
|
22 |
+
<children>
|
23 |
+
<system>
|
24 |
+
<children>
|
25 |
+
<config>
|
26 |
+
<children>
|
27 |
+
<testimonial translate="title" module="testimonial">
|
28 |
+
<title>Testimonials Permission Setting</title>
|
29 |
+
</testimonial>
|
30 |
+
</children>
|
31 |
+
</config>
|
32 |
+
</children>
|
33 |
+
</system>
|
34 |
+
<testimonial module="testimonial">
|
35 |
+
<title>Testimonial</title>
|
36 |
+
<sort_order>71</sort_order>
|
37 |
+
<children>
|
38 |
+
<testimonial_manage module="testimonial">
|
39 |
+
<title>Manage Testimonials</title>
|
40 |
+
<sort_order>100</sort_order>
|
41 |
+
<action>testimonial/adminhtml_testimonial/</action>
|
42 |
+
</testimonial_manage>
|
43 |
+
</children>
|
44 |
+
</testimonial>
|
45 |
+
</children>
|
46 |
+
</admin>
|
47 |
+
</resources>
|
48 |
+
</acl>
|
49 |
+
</config>
|
50 |
+
|
51 |
+
|
app/code/community/Magebuzz/Testimonial/etc/config.xml
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<websites>
|
4 |
+
<!--<admin>-->
|
5 |
+
<!--<dev>-->
|
6 |
+
<!--<debug>-->
|
7 |
+
<!--<template_hints>1</template_hints>-->
|
8 |
+
<!--<template_hints_blocks>1</template_hints_blocks>-->
|
9 |
+
<!--</debug>-->
|
10 |
+
<!--</dev>-->
|
11 |
+
<!--</admin>-->
|
12 |
+
</websites>
|
13 |
+
<default>
|
14 |
+
<testimonial>
|
15 |
+
<general_option>
|
16 |
+
<show_link_testimonial>1</show_link_testimonial>
|
17 |
+
<enable_sidebar>1</enable_sidebar>
|
18 |
+
<enable_testimonial_paging>1</enable_testimonial_paging>
|
19 |
+
<divide_page>9, 15, 30, 'all'</divide_page>
|
20 |
+
<number_words>150</number_words>
|
21 |
+
</general_option>
|
22 |
+
<testimonial_options>
|
23 |
+
<testimonial_captcha_enabled>1</testimonial_captcha_enabled>
|
24 |
+
<allow_customers_write_testimonial >1</allow_customers_write_testimonial >
|
25 |
+
<allow_guest_write_testimonial>0</allow_guest_write_testimonial>
|
26 |
+
<approve_testimonial>1</approve_testimonial>
|
27 |
+
<thank_message><![CDATA[Your testimonial was successfully posted and waiting for approval.]]></thank_message>
|
28 |
+
</testimonial_options>
|
29 |
+
<email_configuration>
|
30 |
+
<send_email_after_post_testimonial>1</send_email_after_post_testimonial>
|
31 |
+
<send_email_after_approve_testimonial>1</send_email_after_approve_testimonial>
|
32 |
+
<select_template_post>testimonial_email_configuration_select_template_post</select_template_post>
|
33 |
+
<select_template_approve>testimonial_email_configuration_select_template_approve</select_template_approve>
|
34 |
+
</email_configuration>
|
35 |
+
</testimonial>
|
36 |
+
</default>
|
37 |
+
<modules>
|
38 |
+
<Magebuzz_Testimonial>
|
39 |
+
<version>0.1.0</version>
|
40 |
+
</Magebuzz_Testimonial>
|
41 |
+
</modules>
|
42 |
+
<frontend>
|
43 |
+
<routers>
|
44 |
+
<testimonial>
|
45 |
+
<use>standard</use>
|
46 |
+
<args>
|
47 |
+
<module>Magebuzz_Testimonial</module>
|
48 |
+
<frontName>testimonial</frontName>
|
49 |
+
</args>
|
50 |
+
</testimonial>
|
51 |
+
</routers>
|
52 |
+
<layout>
|
53 |
+
<updates>
|
54 |
+
<testimonial>
|
55 |
+
<file>testimonial.xml</file>
|
56 |
+
</testimonial>
|
57 |
+
</updates>
|
58 |
+
</layout>
|
59 |
+
</frontend>
|
60 |
+
<admin>
|
61 |
+
<routers>
|
62 |
+
<testimonial>
|
63 |
+
<use>admin</use>
|
64 |
+
<args>
|
65 |
+
<module>Magebuzz_Testimonial</module>
|
66 |
+
<frontName>testimonial</frontName>
|
67 |
+
</args>
|
68 |
+
</testimonial>
|
69 |
+
</routers>
|
70 |
+
</admin>
|
71 |
+
<adminhtml>
|
72 |
+
<layout>
|
73 |
+
<updates>
|
74 |
+
<testimonial>
|
75 |
+
<file>testimonial.xml</file>
|
76 |
+
</testimonial>
|
77 |
+
</updates>
|
78 |
+
</layout>
|
79 |
+
</adminhtml>
|
80 |
+
<global>
|
81 |
+
<models>
|
82 |
+
<testimonial>
|
83 |
+
<class>Magebuzz_Testimonial_Model</class>
|
84 |
+
<resourceModel>testimonial_mysql4</resourceModel>
|
85 |
+
</testimonial>
|
86 |
+
<testimonial_mysql4>
|
87 |
+
<class>Magebuzz_Testimonial_Model_Mysql4</class>
|
88 |
+
<entities>
|
89 |
+
<testimonial>
|
90 |
+
<table>magebuzz_testimonial</table>
|
91 |
+
</testimonial>
|
92 |
+
</entities>
|
93 |
+
</testimonial_mysql4>
|
94 |
+
</models>
|
95 |
+
<resources>
|
96 |
+
<testimonial_setup>
|
97 |
+
<setup>
|
98 |
+
<module>Magebuzz_Testimonial</module>
|
99 |
+
</setup>
|
100 |
+
<connection>
|
101 |
+
<use>core_setup</use>
|
102 |
+
</connection>
|
103 |
+
</testimonial_setup>
|
104 |
+
<testimonial_write>
|
105 |
+
<connection>
|
106 |
+
<use>core_write</use>
|
107 |
+
</connection>
|
108 |
+
</testimonial_write>
|
109 |
+
<testimonial_read>
|
110 |
+
<connection>
|
111 |
+
<use>core_read</use>
|
112 |
+
</connection>
|
113 |
+
</testimonial_read>
|
114 |
+
</resources>
|
115 |
+
<blocks>
|
116 |
+
<testimonial>
|
117 |
+
<class>Magebuzz_Testimonial_Block</class>
|
118 |
+
</testimonial>
|
119 |
+
</blocks>
|
120 |
+
<helpers>
|
121 |
+
<testimonial>
|
122 |
+
<class>Magebuzz_Testimonial_Helper</class>
|
123 |
+
</testimonial>
|
124 |
+
</helpers>
|
125 |
+
<template>
|
126 |
+
<email>
|
127 |
+
<testimonial_email_configuration_select_template_post translate="label" module="testimonial">
|
128 |
+
<label>Custom Email Template After Post Testimonial</label>
|
129 |
+
<file>email_template_after_post_testimonial.html</file>
|
130 |
+
<type>html</type>
|
131 |
+
</testimonial_email_configuration_select_template_post >
|
132 |
+
<testimonial_email_configuration_select_template_approve translate="label" module="testimonial">
|
133 |
+
<label>Custom Email Template After Approve Testimonial</label>
|
134 |
+
<file>email_template_after_approve_testimonial.html</file>
|
135 |
+
<type>html</type>
|
136 |
+
</testimonial_email_configuration_select_template_approve >
|
137 |
+
</email>
|
138 |
+
</template>
|
139 |
+
</global>
|
140 |
+
</config>
|
app/code/community/Magebuzz/Testimonial/etc/system.xml
ADDED
@@ -0,0 +1,187 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<magebuzz translate="label" module="testimonial">
|
5 |
+
<label>MAGEBUZZ ADD-ONS</label>
|
6 |
+
<sort_order>1001</sort_order>
|
7 |
+
</magebuzz>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<testimonial translate="label" module="testimonial">
|
11 |
+
<label>Testimonial</label>
|
12 |
+
<tab>magebuzz</tab>
|
13 |
+
<sort_order>1000</sort_order>
|
14 |
+
<show_in_default>1</show_in_default>
|
15 |
+
<show_in_website>1</show_in_website>
|
16 |
+
<show_in_store>1</show_in_store>
|
17 |
+
<groups>
|
18 |
+
<general_option translate="label">
|
19 |
+
<label>General Options</label>
|
20 |
+
<frontend_type>text</frontend_type>
|
21 |
+
<sort_order>1</sort_order>
|
22 |
+
<show_in_default>1</show_in_default>
|
23 |
+
<show_in_website>1</show_in_website>
|
24 |
+
<show_in_store>1</show_in_store>
|
25 |
+
<fields>
|
26 |
+
<show_link_testimonial translate="label">
|
27 |
+
<label>Show Testimonial link in TopLink</label>
|
28 |
+
<frontend_type>select</frontend_type>
|
29 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
30 |
+
<sort_order>1</sort_order>
|
31 |
+
<show_in_default>1</show_in_default>
|
32 |
+
<show_in_website>1</show_in_website>
|
33 |
+
<show_in_store>1</show_in_store>
|
34 |
+
</show_link_testimonial>
|
35 |
+
<enable_sidebar>
|
36 |
+
<label>Enable Testimonial Sidebar</label>
|
37 |
+
<frontend_type>select</frontend_type>
|
38 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
39 |
+
<sort_order>2</sort_order>
|
40 |
+
<show_in_default>1</show_in_default>
|
41 |
+
<show_in_website>1</show_in_website>
|
42 |
+
<show_in_store>1</show_in_store>
|
43 |
+
</enable_sidebar>
|
44 |
+
<enable_testimonial_paging>
|
45 |
+
<label>Enable Show Testimonial Paging</label>
|
46 |
+
<frontend_type>select</frontend_type>
|
47 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
48 |
+
<sort_order>3</sort_order>
|
49 |
+
<show_in_default>1</show_in_default>
|
50 |
+
<show_in_website>1</show_in_website>
|
51 |
+
<show_in_store>1</show_in_store>
|
52 |
+
</enable_testimonial_paging>
|
53 |
+
<divide_page>
|
54 |
+
<label>Testimonials Per Page</label>
|
55 |
+
<frontend_type>text</frontend_type>
|
56 |
+
<sort_order>5</sort_order>
|
57 |
+
<show_in_default>1</show_in_default>
|
58 |
+
<show_in_website>1</show_in_website>
|
59 |
+
<show_in_store>1</show_in_store>
|
60 |
+
<comment>Comma-separated.</comment>
|
61 |
+
</divide_page>
|
62 |
+
<number_words>
|
63 |
+
<label> Amount word of testiomonil</label>
|
64 |
+
<frontend_type>text</frontend_type>
|
65 |
+
<sort_order>6</sort_order>
|
66 |
+
<show_in_default>1</show_in_default>
|
67 |
+
<show_in_website>1</show_in_website>
|
68 |
+
<show_in_store>1</show_in_store>
|
69 |
+
<comment>Comma-separated.</comment>
|
70 |
+
</number_words>
|
71 |
+
</fields>
|
72 |
+
</general_option>
|
73 |
+
<testimonial_options translate="label">
|
74 |
+
<label>Testimonial Configuration</label>
|
75 |
+
<frontend_type>text</frontend_type>
|
76 |
+
<sort_order>2</sort_order>
|
77 |
+
<show_in_default>1</show_in_default>
|
78 |
+
<show_in_website>1</show_in_website>
|
79 |
+
<show_in_store>1</show_in_store>
|
80 |
+
<fields>
|
81 |
+
<allow_customers_write_testimonial translate="label">
|
82 |
+
<label>Allow customers to submit testimonial</label>
|
83 |
+
<frontend_type>select</frontend_type>
|
84 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
85 |
+
<sort_order>4</sort_order>
|
86 |
+
<show_in_default>1</show_in_default>
|
87 |
+
<show_in_website>1</show_in_website>
|
88 |
+
<show_in_store>1</show_in_store>
|
89 |
+
</allow_customers_write_testimonial>
|
90 |
+
<testimonial_captcha_enabled translate="label">
|
91 |
+
<label>Enable tesimonial captcha</label>
|
92 |
+
<frontend_type>select</frontend_type>
|
93 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
94 |
+
<sort_order>5</sort_order>
|
95 |
+
<show_in_default>1</show_in_default>
|
96 |
+
<show_in_website>1</show_in_website>
|
97 |
+
<show_in_store>1</show_in_store>
|
98 |
+
</testimonial_captcha_enabled>
|
99 |
+
<!--<customer_write_testimonial_enabled translate="label">
|
100 |
+
<label>Enable customer to write testimonials</label>
|
101 |
+
<frontend_type>select</frontend_type>
|
102 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
103 |
+
<sort_order>6</sort_order>
|
104 |
+
<show_in_default>1</show_in_default>
|
105 |
+
<show_in_website>1</show_in_website>
|
106 |
+
<show_in_store>1</show_in_store>
|
107 |
+
</customer_write_testimonial_enabled>-->
|
108 |
+
<allow_guest_write_testimonial translate="label">
|
109 |
+
<label>Allow guest to write testimonials</label>
|
110 |
+
<frontend_type>select</frontend_type>
|
111 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
112 |
+
<sort_order>7</sort_order>
|
113 |
+
<show_in_default>1</show_in_default>
|
114 |
+
<show_in_website>1</show_in_website>
|
115 |
+
<show_in_store>1</show_in_store>
|
116 |
+
</allow_guest_write_testimonial>
|
117 |
+
<thank_message translate="label">
|
118 |
+
<label>Thank you Message </label>
|
119 |
+
<frontend_type>textarea</frontend_type>
|
120 |
+
<comment>Message displayed after testimonial submission</comment>
|
121 |
+
<sort_order>8</sort_order>
|
122 |
+
<show_in_default>1</show_in_default>
|
123 |
+
<show_in_website>1</show_in_website>
|
124 |
+
<show_in_store>1</show_in_store>
|
125 |
+
</thank_message>
|
126 |
+
<approve_testimonial translate="label">
|
127 |
+
<label>Approve testimonials</label>
|
128 |
+
<frontend_type>select</frontend_type>
|
129 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
130 |
+
<sort_order>9</sort_order>
|
131 |
+
<show_in_default>1</show_in_default>
|
132 |
+
<show_in_website>1</show_in_website>
|
133 |
+
<show_in_store>1</show_in_store>
|
134 |
+
</approve_testimonial>
|
135 |
+
</fields>
|
136 |
+
</testimonial_options>
|
137 |
+
<email_configuration>
|
138 |
+
<label>Email Configuration</label>
|
139 |
+
<frontend_type>text</frontend_type>
|
140 |
+
<sort_order>3</sort_order>
|
141 |
+
<show_in_default>1</show_in_default>
|
142 |
+
<show_in_website>1</show_in_website>
|
143 |
+
<show_in_store>1</show_in_store>
|
144 |
+
<fields>
|
145 |
+
<send_email_after_post_testimonial translate="label">
|
146 |
+
<label>Enable sending email after posting testimonial</label>
|
147 |
+
<frontend_type>select</frontend_type>
|
148 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
149 |
+
<sort_order>1</sort_order>
|
150 |
+
<show_in_default>1</show_in_default>
|
151 |
+
<show_in_website>1</show_in_website>
|
152 |
+
<show_in_store>1</show_in_store>
|
153 |
+
</send_email_after_post_testimonial>
|
154 |
+
<send_email_after_approve_testimonial translate="label">
|
155 |
+
<label>Enable sending email after testimonial is approved</label>
|
156 |
+
<frontend_type>select</frontend_type>
|
157 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
158 |
+
<sort_order>2</sort_order>
|
159 |
+
<show_in_default>1</show_in_default>
|
160 |
+
<show_in_website>1</show_in_website>
|
161 |
+
<show_in_store>1</show_in_store>
|
162 |
+
</send_email_after_approve_testimonial>
|
163 |
+
<select_template_post translate="label">
|
164 |
+
<label>Select email template for posting testimonial </label>
|
165 |
+
<frontend_type>select</frontend_type>
|
166 |
+
<source_model>adminhtml/system_config_source_email_template</source_model>
|
167 |
+
<sort_order>3</sort_order>
|
168 |
+
<show_in_default>1</show_in_default>
|
169 |
+
<show_in_website>1</show_in_website>
|
170 |
+
<show_in_store>1</show_in_store>
|
171 |
+
</select_template_post>
|
172 |
+
<select_template_approve translate="label">
|
173 |
+
<label>Select email template for approving testimonial </label>
|
174 |
+
<frontend_type>select</frontend_type>
|
175 |
+
<source_model>adminhtml/system_config_source_email_template</source_model>
|
176 |
+
<sort_order>4</sort_order>
|
177 |
+
<show_in_default>1</show_in_default>
|
178 |
+
<show_in_website>1</show_in_website>
|
179 |
+
<show_in_store>1</show_in_store>
|
180 |
+
</select_template_approve>
|
181 |
+
</fields>
|
182 |
+
</email_configuration>
|
183 |
+
</groups>
|
184 |
+
</testimonial>
|
185 |
+
</sections>
|
186 |
+
</config>
|
187 |
+
|
app/code/community/Magebuzz/Testimonial/sql/testimonial_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
$installer->run("
|
8 |
+
|
9 |
+
-- DROP TABLE IF EXISTS {$this->getTable('magebuzz_testimonial')};
|
10 |
+
CREATE TABLE {$this->getTable('magebuzz_testimonial')} (
|
11 |
+
`testimonial_id` int(11) unsigned NOT NULL auto_increment,
|
12 |
+
`name` varchar(255) NOT NULL default '',
|
13 |
+
`email` varchar(255) NOT NULL default '',
|
14 |
+
`avatar_name` varchar(255) NULL default '',
|
15 |
+
`avatar_path` varchar(255) NULL default '',
|
16 |
+
`website` varchar(255) NOT NULL default '',
|
17 |
+
`company` varchar(255) NOT NULL default '',
|
18 |
+
`address` varchar(255) NOT NULL default '',
|
19 |
+
`testimonial` text NOT NULL default '',
|
20 |
+
`status` smallint(6) NOT NULL default '0',
|
21 |
+
`created_time` datetime NULL,
|
22 |
+
`update_time` datetime NULL,
|
23 |
+
PRIMARY KEY (`testimonial_id`)
|
24 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
25 |
+
|
26 |
+
");
|
27 |
+
|
28 |
+
$installer->endSetup();
|
app/design/adminhtml/default/default/layout/catsidebarnav.xml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<catsidebarnav_adminhtml_catsidebarnav_edit>
|
4 |
+
<update handle="editor"/>
|
5 |
+
</catsidebarnav_adminhtml_catsidebarnav_edit>
|
6 |
+
<catsidebarnav_adminhtml_catsidebarnav_index>
|
7 |
+
<update handle="editor"/>
|
8 |
+
<reference name="content">
|
9 |
+
<block type="catsidebarnav/adminhtml_catsidebarnav" name="catsidebarnav" />
|
10 |
+
</reference>
|
11 |
+
</catsidebarnav_adminhtml_catsidebarnav_index>
|
12 |
+
</layout>
|
app/design/frontend/default/default/layout/catsidebarnav.xml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<default>
|
4 |
+
<reference name="left">
|
5 |
+
<block type="catsidebarnav/catsidebarnav" name="left.catsidebarnav" before="-">
|
6 |
+
<action method="leftSidebarBlock" />
|
7 |
+
</block>
|
8 |
+
</reference>
|
9 |
+
<reference name="right">
|
10 |
+
<block type="catsidebarnav/catsidebarnav" name="right.catsidebarnav" before="-">
|
11 |
+
<action method="rightSidebarBlock" />
|
12 |
+
</block>
|
13 |
+
</reference>
|
14 |
+
</default>
|
15 |
+
<catsidebarnav_index_index>
|
16 |
+
<reference name="content">
|
17 |
+
<block type="catsidebarnav/catsidebarnav" name="catsidebarnav" template="catsidebarnav/catsidebarnav.phtml" />
|
18 |
+
</reference>
|
19 |
+
</catsidebarnav_index_index>
|
20 |
+
</layout>
|
app/design/frontend/default/default/template/catsidebarnav/catsidebarnav.phtml
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $_helper = Mage::helper('catsidebarnav'); ?>
|
2 |
+
<?php $showtype = $_helper->getShowType();?>
|
3 |
+
<?php $_menu = $this->renderCategoriesMenuHtml(0,'level-top') ?>
|
4 |
+
<?php if($_helper->isEnabled()): ?>
|
5 |
+
<?php if($showtype == 'static'):?>
|
6 |
+
<link rel="stylesheet" type="text/css" href="<?php echo $this->getSkinUrl('css/magebuzz/catsidebarnav/static.css');?>" media="all" />
|
7 |
+
<?php if($_menu): ?>
|
8 |
+
<div class="block block-category-nav">
|
9 |
+
<div class="block-title">
|
10 |
+
<strong><span><?php echo $this->__('Categories') ?></span></strong>
|
11 |
+
</div>
|
12 |
+
<div class="block-content">
|
13 |
+
<ul id="sidenav">
|
14 |
+
<?php echo $_menu ?>
|
15 |
+
</ul>
|
16 |
+
</div>
|
17 |
+
</div>
|
18 |
+
<?php endif ?>
|
19 |
+
<?php elseif ($showtype == 'click-2-click'):?>
|
20 |
+
<link rel="stylesheet" type="text/css" href="<?php echo $this->getSkinUrl('css/magebuzz/catsidebarnav/click.css');?>" media="all" />
|
21 |
+
<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" type="text/javascript"></script>
|
22 |
+
<script type="text/javascript">
|
23 |
+
var $j = jQuery.noConflict();
|
24 |
+
$j(document).ready(function () {
|
25 |
+
$j('#sidenav > li > a.show-cat').click(function(){
|
26 |
+
$j('#sidenav li ul').slideUp();
|
27 |
+
if (!$j(this).hasClass('active')){
|
28 |
+
$j(this).next().slideToggle();
|
29 |
+
$j('#sidenav li a.show-cat').removeClass('active');
|
30 |
+
$j(this).addClass('active');
|
31 |
+
}
|
32 |
+
else if ($j(this).hasClass('active')) {
|
33 |
+
$j(this).removeClass('active');
|
34 |
+
}
|
35 |
+
});
|
36 |
+
$j('#sidenav > li > ul > li > a.show-cat').click(function(){
|
37 |
+
$j('#sidenav li ul li ul').slideUp();
|
38 |
+
if (!$j(this).hasClass('active')){
|
39 |
+
$j(this).next().slideToggle();
|
40 |
+
$j('#sidenav li ul li a.show-cat').removeClass('active');
|
41 |
+
$j(this).addClass('active');
|
42 |
+
}
|
43 |
+
else if ($j(this).hasClass('active')) {
|
44 |
+
$j(this).removeClass('active');
|
45 |
+
}
|
46 |
+
});
|
47 |
+
});
|
48 |
+
</script>
|
49 |
+
<?php if($_menu): ?>
|
50 |
+
<div class="block block-category-nav">
|
51 |
+
<div class="block-title">
|
52 |
+
<strong><span><?php echo $this->__('Categories') ?></span></strong>
|
53 |
+
</div>
|
54 |
+
<div class="block-content">
|
55 |
+
<ul id="sidenav">
|
56 |
+
<?php echo $_menu ?>
|
57 |
+
</ul>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
<?php endif ?>
|
61 |
+
<?php elseif ($showtype == 'fly-out'):?>
|
62 |
+
<link rel="stylesheet" type="text/css" href="<?php echo $this->getSkinUrl('css/magebuzz/catsidebarnav/fly-out.css')?>" media="screen">
|
63 |
+
<script type="text/javascript" src="<?php echo $this->getSkinUrl('js/magebuzz/catsidebarnav/jquery-1.2.6.min.js')?>"></script>
|
64 |
+
<script type="text/javascript" src="<?php echo $this->getSkinUrl('js/magebuzz/catsidebarnav/hoverIntent.js')?>"></script>
|
65 |
+
<script type="text/javascript" src="<?php echo $this->getSkinUrl('js/magebuzz/catsidebarnav/superfish.js')?>"></script>
|
66 |
+
<script type="text/javascript">
|
67 |
+
jQuery.noConflict();
|
68 |
+
jQuery(function(){
|
69 |
+
jQuery('ul.sf-menu').superfish();
|
70 |
+
});
|
71 |
+
</script>
|
72 |
+
<?php if($_menu): ?>
|
73 |
+
<div class="block block-category-nav">
|
74 |
+
<div class="block-title">
|
75 |
+
<strong><span><?php echo $this->__('Categories') ?></span></strong>
|
76 |
+
</div>
|
77 |
+
<div class="block-content">
|
78 |
+
<ul class="sf-menu" id="left-nav">
|
79 |
+
<?php echo $_menu ?>
|
80 |
+
</ul>
|
81 |
+
</div>
|
82 |
+
</div>
|
83 |
+
<?php endif ?>
|
84 |
+
<?php endif ?>
|
85 |
+
<?php endif ?>
|
app/etc/modules/Magebuzz_Catsidebarnav.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Magebuzz_Catsidebarnav>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</Magebuzz_Catsidebarnav>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/locale/en_US/Magebuzz_Catsidebarnav.csv
ADDED
File without changes
|
package.xml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>magebuzz_category_sidebar_navigation</name>
|
4 |
+
<version>0.1.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>GNU General Public License</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Category Sidebar Navigation is a simple solution for your Magento Store appearance which allows you to move the categories navigation to the left or right column.</summary>
|
10 |
+
<description>Category Sidebar Navigation extension add the navigation of category in the left / right column of Magento site.
|
11 |
+
Support Magento 1.5 to 1.7</description>
|
12 |
+
<notes>Works from Magento 1.5 - 1.7</notes>
|
13 |
+
<authors><author><name>Magebuzz</name><user>magebuzz</user><email>magebuzz@gmail.com</email></author></authors>
|
14 |
+
<date>2012-08-25</date>
|
15 |
+
<time>08:09:49</time>
|
16 |
+
<contents><target name="magecommunity"><dir name="Magebuzz"><dir name="Catsidebarnav"><dir name="Block"><file name="Catsidebarnav.php" hash="4082037a222818367677206ac7c4d610"/><file name="Sidebar.php" hash="b8cbfd8cfadc03a1e55e6d284999d131"/></dir><dir name="Helper"><file name="Category.php" hash="2b9d7291653830969d232d58ea98e754"/><file name="Data.php" hash="d360eb17b9aca0a7a99af9a3134dc744"/></dir><dir name="Model"><file name="Catsidebarnav.php" hash="0b43dc19c684b3ab974eb7bebcfd4102"/><dir name="Mysql4"><dir name="Catsidebarnav"><file name="Collection.php" hash="cd82814f4021ac3ecdb9f51394d71046"/></dir><file name="Catsidebarnav.php" hash="913c1c2be3e2d5736190c1fbd841917f"/></dir><file name="Session.php" hash="a26bbbd765aa44ab1228c4c64daf52bf"/><file name="Status.php" hash="48ee9b59935a7d083685ff384a3f61e2"/><dir name="System"><dir name="Config"><file name="Position.php" hash="7eee11a78f3440a857a0c2d71ca70cda"/><file name="Showlevel.php" hash="d8a9e30d1bd52474ef3703a5fb96128d"/><file name="Type.php" hash="b113ef52d5863af047be5f8fbc1681f6"/></dir></dir><dir name="Wysiwyg"><file name="Config.php" hash="6f59457a7e0ca5548e3d459950ff9d0c"/></dir></dir><dir name="controllers"><file name="IndexController.php" hash="28c3fe51908c33beb180fc34a1252a88"/></dir><dir name="etc"><file name="adminhtml.xml" hash="1d350724418c884ac3e561eb766ee984"/><file name="config.xml" hash="b3b721abf55ade07b2dbe4909bf745f5"/><file name="system.xml" hash="45bc566bce07f5d73dd702ddf1af0e68"/></dir></dir><dir name="Featuredproducts"><dir name="Block"><dir name="Adminhtml"><dir name="Edit"><file name="Grid.php" hash="a485c779c0a0d4759aa5642633030c69"/><dir name="Renderer"><file name="Visibility.php" hash="8e3cc5e22167daaf3ae82ce14beb0436"/></dir></dir><file name="Edit.php" hash="57e80f4968ba08194af75c8a7eaa64aa"/><dir name="Featuredproducts"><dir name="Edit"><file name="Form.php" hash="700b9a515897b81162979d2a96865164"/><dir name="Tab"><file name="Form.php" hash="eb0e466fb033d947cfaf0a501cdea233"/></dir><file name="Tabs.php" hash="39047b56cc7c8a4306cd66df7ec282e2"/></dir><file name="Edit.php" hash="31409a55324fc7a460775a9e8ec37b8c"/><file name="Grid.php" hash="1efdc2c819af4b7e6ce53c037bf268a4"/></dir><file name="Featuredproducts.php" hash="01b0f3fe9d82b9252139fe210c37c1f2"/></dir><file name="Featuredproducts.php" hash="2594fbfb04bad5ac5b26683fa2ed2c72"/><file name="Leftsidebar.php" hash="5f9e45d57e96cb32d57811c7dd882a1f"/><file name="Listing.php" hash="f722cb7c44a02aab8c6d71e684e4f9b3"/><dir name="Product"><file name="List.php" hash="c337c3351c297961802ca1dca07f2ab6"/></dir><file name="Rightsidebar.php" hash="dd19d630fcca62a73f3eb26061b520a2"/></dir><dir name="Helper"><file name="Data.php" hash="821fba0e28638539e136dd458f330851"/></dir><dir name="Model"><file name="Featuredproducts.php" hash="ad641a1770a4bdc3e4e6f0e830bd944f"/><dir name="Mysql4"><dir name="Featuredproducts"><file name="Collection.php" hash="f1839ba38bf88fdeb858f1f3c11fc641"/></dir><file name="Featuredproducts.php" hash="8b7b47b7d30b263024f555b0eed0c4ce"/></dir><file name="Status.php" hash="cc047f94153dbd4e2f05428895e49ac9"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Leftright.php" hash="9d6e089174c809e9eb2442c45131fe2b"/><file name="Sort.php" hash="749aeb40e48b63f83e90080a98e11a4c"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="FeaturedproductsController.php" hash="3499f5828ff61c337cd238e4d23f6cdb"/></dir><file name="IndexController.php" hash="a4206044dc53a5d89a178be2345c3467"/></dir><dir name="etc"><file name="adminhtml.xml" hash="fedeb460a37424d9ea3f2746a1d0c14e"/><file name="config.xml" hash="418c1b338548fb4afdb3cf34770fcdc7"/><file name="system.xml" hash="4d4b9954c0b01628d3f91fe6992e1356"/></dir><dir name="sql"><dir name="featuredproducts_setup"><file name="mysql4-install-0.1.0.php" hash="de6ec78b4f661e34a0ca22c0829ddd4e"/></dir></dir></dir><dir name="Productslider"><dir name="Block"><dir name="Adminhtml"><dir name="Productslider"><dir name="Edit"><file name="Form.php" hash="951ef8539702342595b653927700316d"/><dir name="Tab"><file name="Main.php" hash="a48d6aa9e62139228be7f3c8d59ff95d"/></dir><file name="Tabs.php" hash="ebac0af25c27cb2ce1d7b5383443a5ef"/></dir><file name="Edit.php" hash="0e5d80da43865f7550c16c667282f5a1"/><file name="Grid.php" hash="5bdeb3b696d53b8d2109def8b2f88c9e"/></dir><file name="Productslider.php" hash="a5603d383a9e2de1a6bbc8aec091fbbf"/></dir><dir name="Catalog"><dir name="Product"><dir name="List"><file name="Bestseller.php" hash="0f4962439ab852d088ed5f117514677f"/><file name="Mostviewed.php" hash="b4cb5b0710e7fe8d6b26b1a1d562a126"/><file name="Random.php" hash="90a6added83c59fa675122b57ee2aabc"/><file name="RecentlyAdd.php" hash="2acc2184220e065ae3c47966c6b19c62"/></dir></dir></dir><file name="Position.php" hash="8c2dcc009401d2ff8c0e4658c18d458c"/><file name="Productslider.php" hash="4809a7300a01ed28f6c2320fe97727a3"/></dir><dir name="Helper"><file name="Data.php" hash="8d3efdb728fe4095d21bb5d0cdfb96cc"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Productslider"><file name="Collection.php" hash="d8f906e20263052254d5c433c977fe02"/></dir><file name="Productslider.php" hash="974a67289ccf8b463c76a333e8b75df1"/></dir><file name="Productslider.php" hash="8ddbb5ececbc0af7b50ab5362b74c768"/><file name="Session.php" hash="9f7420294267b43d454ce37bdff9f076"/><file name="Status.php" hash="33a773eef771f4528a6445e44444ecfe"/><dir name="System"><dir name="Config"><file name="Position.php" hash="4ac40a43d758bd1cce98b048547a1d0e"/><file name="Styles.php" hash="6d8f546a74a2f1a78e3a9f934c30801e"/><file name="Type.php" hash="f0ff237b6b91ae4fd27a0e231851b277"/></dir></dir><dir name="Wysiwyg"><file name="Config.php" hash="9a85327ffe6fea993c66b221a3efc7ce"/></dir></dir><dir name="controllers"><file name="BestsellerController.php" hash="3df65dc89f5bbd6c975f2f002d6de33f"/><file name="IndexController.php" hash="7fe0c83e90c4ee89308034c9b4b4a6dc"/><file name="MostviewedController.php" hash="146aef7a8b16a0799ee41b8fb18a23c6"/><file name="RandomController.php" hash="e7bc2e270dc46368c1c7ce11808f20d7"/><file name="RecentlyAddController.php" hash="22760bbdc2e842087662f39f6da3b210"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8c901bd992f9aa7a15d90b9cb19681c3"/><file name="config.xml" hash="cfaa58ee2a770d5a0334da2a7255e0f3"/><file name="system.xml" hash="8ccb375f53fee8c8049e7008bf871f92"/></dir><dir name="sql"><dir name="productslider_setup"><file name="mysql4-install-0.1.0.php" hash="17de854fd861f292843548f2f773ddc4"/></dir></dir></dir><dir name="Testimonial"><dir name="Block"><dir name="Adminhtml"><dir name="Testimonial"><dir name="Edit"><file name="Form.php" hash="ba270c9e6a0649640158a4e7296db7c0"/><dir name="Tab"><file name="Form.php" hash="23e8a99b175b14c3ee9e3929f6f9fd91"/></dir><file name="Tabs.php" hash="27cd556e98b32d812ed192786cdbc236"/></dir><file name="Edit.php" hash="847d5da7c41a2ecb1d52f2d0660d2b27"/><file name="Grid.php" hash="b2f8b1feb9f362ad88aaef0fe9b9acc4"/><dir name="Renderer"><file name="Image.php" hash="147db531f94f22aaf1fe2b4729da6958"/></dir></dir><file name="Testimonial.php" hash="4a96c929664199cad9f0b72fe9a54a4e"/></dir><file name="Captcha.php" hash="a77c988ba4dbcf27b542e6dae3719161"/><dir name="Form"><file name="Login.php" hash="1395941197aa0eb970e2ef7b1cdb820a"/></dir><file name="Form.php" hash="98adb7736a84392c5488b6cccd908b5c"/><file name="Sidebar.php" hash="69e2c2e7b494d876c2fb5aa1f1c42c1e"/><file name="Testimonial.php" hash="ef4ac0d339d53a9495cc5b7546c79590"/></dir><dir name="Helper"><file name="Data.php" hash="023de35c1c21d35e56ff4c992ca62ce1"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Testimonial"><file name="Collection.php" hash="0d2b5d81eca0b4cf42e0eaf29e03609b"/></dir><file name="Testimonial.php" hash="a68ee4d85402ae35e9c1d72bda057874"/></dir><file name="Session.php" hash="56af2e711e6686960eab7cbbadf5c6e0"/><file name="Status.php" hash="5d48c605820f8e20036f12e97cef08a3"/><file name="Testimonial.php" hash="85f59b4e3982ed4231796361c46da714"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="TestimonialController.php" hash="9517d8377bef9353f37963dc07c6a9b1"/></dir><file name="FormController.php" hash="de182113ae350664ac6cb2781c48b26f"/><file name="IndexController.php" hash="d8154ae35cf66cd27659f53fdb19a6a5"/></dir><dir name="etc"><file name="adminhtml.xml" hash="452febe214597b66d420141d124b9865"/><file name="config.xml" hash="55111ef7d6edd7439587c06ca0b197af"/><file name="system.xml" hash="36889d525f04bbc4e3b4af73a338e75a"/></dir><dir name="sql"><dir name="testimonial_setup"><file name="mysql4-install-0.1.0.php" hash="0d1bcca311aeba673098445bd52d5eb6"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="catsidebarnav.xml" hash="f1854e38a5be14abb77fd5797dcc79f0"/></dir><dir name="template"><dir name="catsidebarnav"><file name="catsidebarnav.phtml" hash="769b7d7a12e006959c602f0c200d7bce"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="catsidebarnav.xml" hash="707d493135c99a869be49649082f9556"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Magebuzz_Catsidebarnav.xml" hash="67a8647237adc1df2a7c263dcb1398b1"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Magebuzz_Catsidebarnav.csv" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="css"><dir name="magebuzz"><dir name="catsidebarnav"><file name="click.css" hash="84a4ef0f55d118f56b4695ad947869af"/><file name="fly-out.css" hash="9af59c42d604983ff5344b164656a36f"/><dir name="images"><file name="arrow.png" hash="e8e9d70926d376f3648b9774bc7ca5aa"/><file name="arrow_active.png" hash="4b4fd980e8d907ac96f74530f3b2947b"/><file name="bg_title.gif" hash="55d53ef258d04e2d64c26ceb2b3009e4"/><file name="sub_icon.gif" hash="36821f0d22f8c48a2f474097a424b928"/><file name="sub_icon_2.gif" hash="dbd0c9671b6adf1a894ee11a8fce79c6"/></dir><file name="static.css" hash="3a1372fe66fc5ac7e6c0b2b1edd8b450"/></dir></dir></dir><dir name="js"><dir name="magebuzz"><dir name="catsidebarnav"><file name="hoverIntent.js" hash="1a27531c68df91ec891a075b0832c2e8"/><file name="jquery-1.2.6.min.js" hash="a9331828c517ac5d97f93b3cfdbcc9bc"/><file name="superfish.js" hash="fc0e58c643434b422425d32999e10fec"/></dir></dir></dir></dir></dir></dir></target></contents>
|
17 |
+
<compatible/>
|
18 |
+
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
19 |
+
</package>
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/click.css
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/********Css For Category Sidebar Navigation ************/
|
2 |
+
.block-category-nav{border:0 none;}
|
3 |
+
.block-category-nav .block-title{background:#f7931d; border:0 none;padding: 5px 10px;border-radius: 5px 5px 0 0;}
|
4 |
+
.block-category-nav .block-title strong{color: #FFFFFF; display: block; padding:0; font: bold 13px/16px Arial,Helvetica,sans-serif; min-height: 16px;text-transform: capitalize;}
|
5 |
+
.block-category-nav .block-content{background:#FFFFFF; border:1px solid #DDDDDD; border-top:0 none; padding:0;}
|
6 |
+
#sidenav{}
|
7 |
+
#sidenav li{border-bottom:1px solid #DDDDDD; padding:3px 0;}
|
8 |
+
#sidenav li.last{border:0 none;}
|
9 |
+
/* #sidenav li:hover{background:#d9ecf2} */
|
10 |
+
#sidenav li a{font-size:12px; font-weight:normal; color:#333333; text-decoration:none; padding-left:10px;}
|
11 |
+
#sidenav li a.show-cat{background:url(images/arrow.png) center center no-repeat; padding-right:10px;}
|
12 |
+
#sidenav li a.active{background:url(images/arrow_active.png) center center no-repeat; padding-right:10px;}
|
13 |
+
#sidenav li a:hover{color:#f7931d;/* text-decoration:underline; */}
|
14 |
+
/* Level 0 */
|
15 |
+
#sidenav li.level-top{line-height:25px;}
|
16 |
+
#sidenav li.level-top a.level-top{ font-weight:bold;}
|
17 |
+
#sidenav li ul.level0{padding:0 10px; display:none;}
|
18 |
+
#sidenav li ul.level0 li{border-bottom:1px dotted #cacaca;}
|
19 |
+
#sidenav li ul.level0 li.last{border:0 none;}
|
20 |
+
/* Level 1 */
|
21 |
+
#sidenav li ul li ul{ display:none;padding:0 10px;}
|
22 |
+
#sidenav li ul li ul li a{color:#5a5a5a;}
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/fly-out.css
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.block-category-nav{border:0 none;}
|
2 |
+
.block-category-nav .block-title{background:#f7931d; border:0 none;padding: 5px 10px;border-radius: 3px 3px 0 0;}
|
3 |
+
.block-category-nav .block-title strong{color: #FFFFFF; display: block; padding:0; font: bold 13px/16px Arial,Helvetica,sans-serif; min-height: 16px;text-transform: capitalize;}
|
4 |
+
.block-category-nav .block-content{background:#FFFFFF; border:1px solid #DDDDDD; border-top:0 none; padding:5px 10px;}
|
5 |
+
/*** ESSENTIAL STYLES ***/
|
6 |
+
.sf-menu, .sf-menu * {
|
7 |
+
margin: 0;
|
8 |
+
padding: 0;
|
9 |
+
list-style: none;
|
10 |
+
}
|
11 |
+
.sf-menu ul {
|
12 |
+
position: absolute;
|
13 |
+
top: -999em;
|
14 |
+
}
|
15 |
+
.sf-menu ul li {
|
16 |
+
/* width: 100%; */
|
17 |
+
}
|
18 |
+
.sf-menu li:hover {
|
19 |
+
visibility: inherit; /* fixes IE7 'sticky bug' */
|
20 |
+
}
|
21 |
+
.sf-menu li {
|
22 |
+
position: relative;
|
23 |
+
}
|
24 |
+
.sf-menu a {
|
25 |
+
display: block;
|
26 |
+
position: relative;
|
27 |
+
}
|
28 |
+
.sf-menu a:hover{color:#f26522}
|
29 |
+
.sf-menu li:hover ul,
|
30 |
+
.sf-menu li.sfHover ul {
|
31 |
+
background: none repeat scroll 0 0 #FFFFFF;
|
32 |
+
border: 1px solid #DDDDDD;
|
33 |
+
box-shadow: 3px 3px 3px #464646;
|
34 |
+
left: 185px;
|
35 |
+
padding:10px;
|
36 |
+
top: 2.5px;
|
37 |
+
width: 180px;
|
38 |
+
z-index: 99999;
|
39 |
+
}
|
40 |
+
ul.sf-menu li:hover li ul,
|
41 |
+
ul.sf-menu li.sfHover li ul {
|
42 |
+
top: -999em;
|
43 |
+
}
|
44 |
+
ul.sf-menu li li:hover ul,
|
45 |
+
ul.sf-menu li li.sfHover ul {
|
46 |
+
left: 185px; /* match ul width */
|
47 |
+
top: 0;
|
48 |
+
}
|
49 |
+
ul.sf-menu li li:hover li ul,
|
50 |
+
ul.sf-menu li li.sfHover li ul {
|
51 |
+
top: -999em;
|
52 |
+
}
|
53 |
+
ul.sf-menu li li li:hover ul,
|
54 |
+
ul.sf-menu li li li.sfHover ul {
|
55 |
+
left: 10em; /* match ul width */
|
56 |
+
top: 0;
|
57 |
+
}
|
58 |
+
|
59 |
+
/*** DEMO SKIN ***/
|
60 |
+
.sf-menu {}
|
61 |
+
.sf-menu a {font-size:13px; font-weight:normal; color:#333333; text-decoration:none;}
|
62 |
+
.sf-menu a, .sf-menu a:visited {}
|
63 |
+
.sf-menu li.last {background: none transparent!important;}
|
64 |
+
.sf-menu li {padding:3px 0;}
|
65 |
+
.sf-menu li li {
|
66 |
+
background:0 none;
|
67 |
+
width:100%;
|
68 |
+
float:left;
|
69 |
+
}
|
70 |
+
.sf-menu li li li {
|
71 |
+
|
72 |
+
}
|
73 |
+
.sf-menu li li li a:hover{color:#f26522}
|
74 |
+
.sf-menu li.sfHover,
|
75 |
+
.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
|
76 |
+
outline: 0;
|
77 |
+
}
|
78 |
+
|
79 |
+
/*** arrows **/
|
80 |
+
.sf-menu a.sf-with-ul {min-width: 1px;}
|
81 |
+
.sf-menu li.parent a.sf-with-ul {background: url(images/sub_icon.gif) no-repeat scroll right center transparent;}
|
82 |
+
.sf-menu li.sfHover a{color:#595959;}
|
83 |
+
.sf-menu li.sfHover ul li a:hover{color:#f26522}
|
84 |
+
.sf-menu li.sfHover ul li.sfHover{/* background:#f26522!important; */}
|
85 |
+
.sf-menu li.sfHover li a{border:0 none;height: auto;}
|
86 |
+
.sf-menu li.sfHover li.parent li a{background: none transparent!important;}
|
87 |
+
.sf-menu li.sfHover li.parent a{
|
88 |
+
background: url(images/sub_icon_2.gif) no-repeat scroll right center transparent;
|
89 |
+
color: #595959;
|
90 |
+
margin-right: 10px;
|
91 |
+
}
|
92 |
+
.sf-menu li.sfHover li li a{color:#595959;}
|
93 |
+
.sf-menu li.sfHover ul li a{ padding-left: 0;padding-right: 10px;}
|
94 |
+
.sf-menu li.sfHover ul li.sfHover a.hover{ color:#f26522}
|
95 |
+
.sf-menu li.sfHover a.level-top .sf-sub-indicator{ background:0 none;}
|
96 |
+
a > .sf-sub-indicator { /* give all except IE6 the correct values */
|
97 |
+
|
98 |
+
}
|
99 |
+
/* apply hovers to modern browsers */
|
100 |
+
a:focus > .sf-sub-indicator,
|
101 |
+
a:hover > .sf-sub-indicator,
|
102 |
+
a:active > .sf-sub-indicator,
|
103 |
+
li:hover > a > .sf-sub-indicator,
|
104 |
+
li.sfHover > a > .sf-sub-indicator {
|
105 |
+
}
|
106 |
+
|
107 |
+
/* point right for anchors in subs */
|
108 |
+
.sf-menu ul .sf-sub-indicator { background-position: -10px 0; }
|
109 |
+
.sf-menu ul a > .sf-sub-indicator { background-position: 0 0; }
|
110 |
+
/* apply hovers to modern browsers */
|
111 |
+
.sf-menu ul a:focus > .sf-sub-indicator,
|
112 |
+
.sf-menu ul a:hover > .sf-sub-indicator,
|
113 |
+
.sf-menu ul a:active > .sf-sub-indicator,
|
114 |
+
.sf-menu ul li:hover > a > .sf-sub-indicator,
|
115 |
+
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
|
116 |
+
background-position: -10px 0; /* arrow hovers for modern browsers*/
|
117 |
+
}
|
118 |
+
|
119 |
+
/*** shadows for all but IE6 ***/
|
120 |
+
.sf-shadow ul {
|
121 |
+
}
|
122 |
+
.sf-shadow ul.sf-shadow-off {
|
123 |
+
background: transparent;
|
124 |
+
}
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/images/arrow.png
ADDED
Binary file
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/images/arrow_active.png
ADDED
Binary file
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/images/bg_title.gif
ADDED
Binary file
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/images/sub_icon.gif
ADDED
Binary file
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/images/sub_icon_2.gif
ADDED
Binary file
|
skin/frontend/default/default/css/magebuzz/catsidebarnav/static.css
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/********Css For Category Sidebar Navigation ************/
|
2 |
+
.block-category-nav{border:0 none;}
|
3 |
+
.block-category-nav .block-title{background:#f7931d; border:0 none;padding: 5px 10px;border-radius: 5px 5px 0 0;}
|
4 |
+
.block-category-nav .block-title strong{color: #FFFFFF; display: block; padding:0; font: bold 13px/16px Arial,Helvetica,sans-serif; min-height: 16px;text-transform: capitalize;}
|
5 |
+
.block-category-nav .block-content{background:#FFFFFF; border:1px solid #DDDDDD; border-top:0 none; padding:5px 10px;}
|
6 |
+
#sidenav{}
|
7 |
+
#sidenav li{border-bottom:1px solid #cacaca; padding:3px 0;}
|
8 |
+
#sidenav li.last{border:0 none;}
|
9 |
+
#sidenav li a{font-size:13px; font-weight:normal; color:#333333; text-decoration:none;}
|
10 |
+
#sidenav li a:hover{color:#f7931d;/* text-decoration:underline; */}
|
11 |
+
/* Level 0 */
|
12 |
+
#sidenav li.level-top a.level-top{ font-weight:bold;}
|
13 |
+
#sidenav li ul.level0{padding-left:10px;}
|
14 |
+
#sidenav li ul.level0 li{border-bottom:1px dotted #cacaca;}
|
15 |
+
#sidenav li ul.level0 li.last{border:0 none;}
|
16 |
+
/* Level 1 */
|
17 |
+
#sidenav li ul li ul{padding-left:10px;}
|
18 |
+
#sidenav li ul li ul li a{color:#5a5a5a;}
|
skin/frontend/default/default/js/magebuzz/catsidebarnav/hoverIntent.js
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function($){
|
2 |
+
/* hoverIntent by Brian Cherne */
|
3 |
+
$.fn.hoverIntent = function(f,g) {
|
4 |
+
// default configuration options
|
5 |
+
var cfg = {
|
6 |
+
sensitivity: 7,
|
7 |
+
interval: 100,
|
8 |
+
timeout: 0
|
9 |
+
};
|
10 |
+
// override configuration options with user supplied object
|
11 |
+
cfg = $.extend(cfg, g ? { over: f, out: g } : f );
|
12 |
+
|
13 |
+
// instantiate variables
|
14 |
+
// cX, cY = current X and Y position of mouse, updated by mousemove event
|
15 |
+
// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
|
16 |
+
var cX, cY, pX, pY;
|
17 |
+
|
18 |
+
// A private function for getting mouse position
|
19 |
+
var track = function(ev) {
|
20 |
+
cX = ev.pageX;
|
21 |
+
cY = ev.pageY;
|
22 |
+
};
|
23 |
+
|
24 |
+
// A private function for comparing current and previous mouse position
|
25 |
+
var compare = function(ev,ob) {
|
26 |
+
ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
|
27 |
+
// compare mouse positions to see if they've crossed the threshold
|
28 |
+
if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
|
29 |
+
$(ob).unbind("mousemove",track);
|
30 |
+
// set hoverIntent state to true (so mouseOut can be called)
|
31 |
+
ob.hoverIntent_s = 1;
|
32 |
+
return cfg.over.apply(ob,[ev]);
|
33 |
+
} else {
|
34 |
+
// set previous coordinates for next time
|
35 |
+
pX = cX; pY = cY;
|
36 |
+
// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
|
37 |
+
ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
|
38 |
+
}
|
39 |
+
};
|
40 |
+
|
41 |
+
// A private function for delaying the mouseOut function
|
42 |
+
var delay = function(ev,ob) {
|
43 |
+
ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
|
44 |
+
ob.hoverIntent_s = 0;
|
45 |
+
return cfg.out.apply(ob,[ev]);
|
46 |
+
};
|
47 |
+
|
48 |
+
// A private function for handling mouse 'hovering'
|
49 |
+
var handleHover = function(e) {
|
50 |
+
// next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
|
51 |
+
var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
|
52 |
+
while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
|
53 |
+
if ( p == this ) { return false; }
|
54 |
+
|
55 |
+
// copy objects to be passed into t (required for event object to be passed in IE)
|
56 |
+
var ev = jQuery.extend({},e);
|
57 |
+
var ob = this;
|
58 |
+
|
59 |
+
// cancel hoverIntent timer if it exists
|
60 |
+
if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
|
61 |
+
|
62 |
+
// else e.type == "onmouseover"
|
63 |
+
if (e.type == "mouseover") {
|
64 |
+
// set "previous" X and Y position based on initial entry point
|
65 |
+
pX = ev.pageX; pY = ev.pageY;
|
66 |
+
// update "current" X and Y position based on mousemove
|
67 |
+
$(ob).bind("mousemove",track);
|
68 |
+
// start polling interval (self-calling timeout) to compare mouse coordinates over time
|
69 |
+
if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
|
70 |
+
|
71 |
+
// else e.type == "onmouseout"
|
72 |
+
} else {
|
73 |
+
// unbind expensive mousemove event
|
74 |
+
$(ob).unbind("mousemove",track);
|
75 |
+
// if hoverIntent state is true, then call the mouseOut function after the specified delay
|
76 |
+
if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
|
77 |
+
}
|
78 |
+
};
|
79 |
+
|
80 |
+
// bind the function to the two event listeners
|
81 |
+
return this.mouseover(handleHover).mouseout(handleHover);
|
82 |
+
};
|
83 |
+
|
84 |
+
})(jQuery);
|
skin/frontend/default/default/js/magebuzz/catsidebarnav/jquery-1.2.6.min.js
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery 1.2.6 - New Wave Javascript
|
3 |
+
*
|
4 |
+
* Copyright (c) 2008 John Resig (jquery.com)
|
5 |
+
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
6 |
+
* and GPL (GPL-LICENSE.txt) licenses.
|
7 |
+
*
|
8 |
+
* $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
|
9 |
+
* $Rev: 5685 $
|
10 |
+
*/
|
11 |
+
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
|
12 |
+
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
|
13 |
+
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
|
14 |
+
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
|
15 |
+
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
|
16 |
+
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
|
17 |
+
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
|
18 |
+
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&©&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
|
19 |
+
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
|
20 |
+
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
|
21 |
+
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
|
22 |
+
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
|
23 |
+
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
|
24 |
+
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
|
25 |
+
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
|
26 |
+
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
|
27 |
+
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
|
28 |
+
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
|
29 |
+
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
|
30 |
+
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
|
31 |
+
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
|
32 |
+
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
|
skin/frontend/default/default/js/magebuzz/catsidebarnav/superfish.js
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
/*
|
3 |
+
* Superfish v1.4.8 - jQuery menu widget
|
4 |
+
* Copyright (c) 2008 Joel Birch
|
5 |
+
*
|
6 |
+
* Dual licensed under the MIT and GPL licenses:
|
7 |
+
* http://www.opensource.org/licenses/mit-license.php
|
8 |
+
* http://www.gnu.org/licenses/gpl.html
|
9 |
+
*
|
10 |
+
* CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
|
11 |
+
*/
|
12 |
+
|
13 |
+
;(function($){
|
14 |
+
$.fn.superfish = function(op){
|
15 |
+
|
16 |
+
var sf = $.fn.superfish,
|
17 |
+
c = sf.c,
|
18 |
+
$arrow = $(['<span class="',c.arrowClass,'"></span>'].join('')),
|
19 |
+
over = function(){
|
20 |
+
var $$ = $(this), menu = getMenu($$);
|
21 |
+
clearTimeout(menu.sfTimer);
|
22 |
+
$$.showSuperfishUl().siblings().hideSuperfishUl();
|
23 |
+
},
|
24 |
+
out = function(){
|
25 |
+
var $$ = $(this), menu = getMenu($$), o = sf.op;
|
26 |
+
clearTimeout(menu.sfTimer);
|
27 |
+
menu.sfTimer=setTimeout(function(){
|
28 |
+
o.retainPath=($.inArray($$[0],o.$path)>-1);
|
29 |
+
$$.hideSuperfishUl();
|
30 |
+
if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
|
31 |
+
},o.delay);
|
32 |
+
},
|
33 |
+
getMenu = function($menu){
|
34 |
+
var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
|
35 |
+
sf.op = sf.o[menu.serial];
|
36 |
+
return menu;
|
37 |
+
},
|
38 |
+
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
|
39 |
+
|
40 |
+
return this.each(function() {
|
41 |
+
var s = this.serial = sf.o.length;
|
42 |
+
var o = $.extend({},sf.defaults,op);
|
43 |
+
o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
|
44 |
+
$(this).addClass([o.hoverClass,c.bcClass].join(' '))
|
45 |
+
.filter('li:has(ul)').removeClass(o.pathClass);
|
46 |
+
});
|
47 |
+
sf.o[s] = sf.op = o;
|
48 |
+
|
49 |
+
$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
|
50 |
+
if (o.autoArrows) addArrow( $('>a:first-child',this) );
|
51 |
+
})
|
52 |
+
.not('.'+c.bcClass)
|
53 |
+
.hideSuperfishUl();
|
54 |
+
|
55 |
+
var $a = $('a',this);
|
56 |
+
$a.each(function(i){
|
57 |
+
var $li = $a.eq(i).parents('li');
|
58 |
+
$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
|
59 |
+
});
|
60 |
+
o.onInit.call(this);
|
61 |
+
|
62 |
+
}).each(function() {
|
63 |
+
var menuClasses = [c.menuClass];
|
64 |
+
if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
|
65 |
+
$(this).addClass(menuClasses.join(' '));
|
66 |
+
});
|
67 |
+
};
|
68 |
+
|
69 |
+
var sf = $.fn.superfish;
|
70 |
+
sf.o = [];
|
71 |
+
sf.op = {};
|
72 |
+
sf.IE7fix = function(){
|
73 |
+
var o = sf.op;
|
74 |
+
if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
|
75 |
+
this.toggleClass(sf.c.shadowClass+'-off');
|
76 |
+
};
|
77 |
+
sf.c = {
|
78 |
+
bcClass : 'sf-breadcrumb',
|
79 |
+
menuClass : 'sf-js-enabled',
|
80 |
+
anchorClass : 'sf-with-ul',
|
81 |
+
arrowClass : 'sf-sub-indicator',
|
82 |
+
shadowClass : 'sf-shadow'
|
83 |
+
};
|
84 |
+
sf.defaults = {
|
85 |
+
hoverClass : 'sfHover',
|
86 |
+
pathClass : 'overideThisToUse',
|
87 |
+
pathLevels : 1,
|
88 |
+
delay : 800,
|
89 |
+
animation : {opacity:'show'},
|
90 |
+
speed : 'normal',
|
91 |
+
autoArrows : true,
|
92 |
+
dropShadows : true,
|
93 |
+
disableHI : false, // true disables hoverIntent detection
|
94 |
+
onInit : function(){}, // callback functions
|
95 |
+
onBeforeShow: function(){},
|
96 |
+
onShow : function(){},
|
97 |
+
onHide : function(){}
|
98 |
+
};
|
99 |
+
$.fn.extend({
|
100 |
+
hideSuperfishUl : function(){
|
101 |
+
var o = sf.op,
|
102 |
+
not = (o.retainPath===true) ? o.$path : '';
|
103 |
+
o.retainPath = false;
|
104 |
+
var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
|
105 |
+
.find('>ul').hide().css('visibility','hidden');
|
106 |
+
o.onHide.call($ul);
|
107 |
+
return this;
|
108 |
+
},
|
109 |
+
showSuperfishUl : function(){
|
110 |
+
var o = sf.op,
|
111 |
+
sh = sf.c.shadowClass+'-off',
|
112 |
+
$ul = this.addClass(o.hoverClass)
|
113 |
+
.find('>ul:hidden').css('visibility','visible');
|
114 |
+
sf.IE7fix.call($ul);
|
115 |
+
o.onBeforeShow.call($ul);
|
116 |
+
$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
|
117 |
+
return this;
|
118 |
+
}
|
119 |
+
});
|
120 |
+
|
121 |
+
})(jQuery);
|