facebook-mag-ex - Version 1.0.0

Version Notes

Version 1.0.0

Download this release

Release Info

Developer Sulopa Sulotion
Extension facebook-mag-ex
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (43) hide show
  1. app/code/local/Sulopa/Fbfanbox/Block/Fbfanbox.php +40 -0
  2. app/code/local/Sulopa/Fbfanbox/Helper/Data.php +6 -0
  3. app/code/local/Sulopa/Fbfanbox/etc/adminhtml.xml +52 -0
  4. app/code/local/Sulopa/Fbfanbox/etc/config.xml +104 -0
  5. app/code/local/Sulopa/Fbfanbox/etc/system.xml +70 -0
  6. app/code/local/Sulopa/Fbfanbox/sql/fbfanbox_setup/mysql4-install-0.1.0.php +23 -0
  7. app/code/local/Sulopa/Featuredproduct/Block/Featuredproduct.php +62 -0
  8. app/code/local/Sulopa/Featuredproduct/Helper/Data.php +6 -0
  9. app/code/local/Sulopa/Featuredproduct/Model/Config/Direction.php +13 -0
  10. app/code/local/Sulopa/Featuredproduct/Model/Config/Sort.php +13 -0
  11. app/code/local/Sulopa/Featuredproduct/etc/adminhtml.xml +33 -0
  12. app/code/local/Sulopa/Featuredproduct/etc/config.xml +143 -0
  13. app/code/local/Sulopa/Featuredproduct/etc/system.xml +208 -0
  14. app/code/local/Sulopa/Featuredproduct/sql/featuredproduct_setup/mysql4-install-0.1.0.php +11 -0
  15. app/code/local/Sulopa/Newssubscribers/Block/Newssubscribers.php +39 -0
  16. app/code/local/Sulopa/Newssubscribers/Helper/Data.php +6 -0
  17. app/code/local/Sulopa/Newssubscribers/Model/Subscriber.php +34 -0
  18. app/code/local/Sulopa/Newssubscribers/Model/System/Config/Coupon.php +13 -0
  19. app/code/local/Sulopa/Newssubscribers/Model/System/Config/Couponlist.php +19 -0
  20. app/code/local/Sulopa/Newssubscribers/Model/System/Config/Template.php +12 -0
  21. app/code/local/Sulopa/Newssubscribers/controllers/SubscriberController.php +64 -0
  22. app/code/local/Sulopa/Newssubscribers/etc/adminhtml.xml +23 -0
  23. app/code/local/Sulopa/Newssubscribers/etc/config.xml +95 -0
  24. app/code/local/Sulopa/Newssubscribers/etc/system.xml +154 -0
  25. app/code/local/Sulopa/Producttabs/Block/Adminhtml/Edit.php +69 -0
  26. app/code/local/Sulopa/Producttabs/Block/Adminhtml/Edit/Grid.php +218 -0
  27. app/code/local/Sulopa/Producttabs/Block/Adminhtml/Edit/Renderer/Visibility.php +17 -0
  28. app/code/local/Sulopa/Producttabs/Block/Product/List.php +249 -0
  29. app/code/local/Sulopa/Producttabs/Block/Producttabs.php +61 -0
  30. app/code/local/Sulopa/Producttabs/Helper/Data.php +14 -0
  31. app/code/local/Sulopa/Producttabs/Model/Resource/Product/Bestseller.php +73 -0
  32. app/code/local/Sulopa/Producttabs/Model/System/Config/Action.php +17 -0
  33. app/code/local/Sulopa/Producttabs/Model/System/Config/Sort.php +11 -0
  34. app/code/local/Sulopa/Producttabs/Model/System/Config/Type.php +15 -0
  35. app/code/local/Sulopa/Producttabs/controllers/Adminhtml/FeaturedController.php +56 -0
  36. app/code/local/Sulopa/Producttabs/controllers/IndexController.php +12 -0
  37. app/code/local/Sulopa/Producttabs/etc/adminhtml.xml +22 -0
  38. app/code/local/Sulopa/Producttabs/etc/config.xml +138 -0
  39. app/code/local/Sulopa/Producttabs/etc/system.xml +196 -0
  40. app/code/local/Sulopa/Producttabs/sql/producttabs_setup/mysql4-install-0.1.0.php +26 -0
  41. app/etc/modules/Sulopa_Fbfanbox.xml +9 -0
  42. js/tinybox/tinybox.js +126 -0
  43. package.xml +18 -0
app/code/local/Sulopa/Fbfanbox/Block/Fbfanbox.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Fbfanbox_Block_Fbfanbox extends Mage_Core_Block_Template
3
+ {
4
+ public function _prepareLayout()
5
+ {
6
+ return parent::_prepareLayout();
7
+ }
8
+
9
+ public function getFbfanbox()
10
+ {
11
+ if (!$this->hasData('fbfanbox')) {
12
+ $fbfanbox = array();
13
+
14
+ $enable = Mage::getStoreConfig('fbfanbox/general/enable');
15
+ $fb_page_url = Mage::getStoreConfig('fbfanbox/general/fb_page_url');
16
+ $box_width = Mage::getStoreConfig('fbfanbox/general/box_width');
17
+ $box_height = Mage::getStoreConfig('fbfanbox/general/box_height');
18
+ $connection = Mage::getStoreConfig('fbfanbox/general/connection');
19
+ $stream = Mage::getStoreConfig('fbfanbox/general/stream');
20
+ $header = Mage::getStoreConfig('fbfanbox/general/header');
21
+
22
+ if(!$connection)
23
+ {
24
+ $connection = 10;
25
+ }
26
+
27
+ $fbfanbox['enable'] =$enable;
28
+ $fbfanbox['fb_page_url'] = $fb_page_url;
29
+ $fbfanbox['box_width'] =$box_width;
30
+ $fbfanbox['box_height'] =$box_height;
31
+ $fbfanbox['connection'] =$connection;
32
+ $fbfanbox['stream'] =$stream;
33
+ $fbfanbox['header'] =$header;
34
+
35
+ $this->setData('fbfanbox', $fbfanbox);
36
+ }
37
+ return $this->getData('fbfanbox');
38
+
39
+ }
40
+ }
app/code/local/Sulopa/Fbfanbox/Helper/Data.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Sulopa_Fbfanbox_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+
6
+ }
app/code/local/Sulopa/Fbfanbox/etc/adminhtml.xml ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <menu>
4
+ <sulopa>
5
+ <title>Sulopa Extension</title>
6
+ <sort_order>71</sort_order>
7
+ <children>
8
+ <fbfanbox module="fbfanbox">
9
+ <title>Fbfanbox</title>
10
+ <sort_order>71</sort_order>
11
+ <children>
12
+ <items module="fbfanbox">
13
+ <title>FbFanBox Setting </title>
14
+ <sort_order>0</sort_order>
15
+ <action>adminhtml/system_config/edit/section/fbfanbox</action>
16
+ </items>
17
+ </children>
18
+ </fbfanbox>
19
+ </children>
20
+ </sulopa>
21
+
22
+
23
+ </menu>
24
+
25
+ <acl>
26
+ <resources>
27
+ <all>
28
+ <title>Allow Everything</title>
29
+ </all>
30
+ <admin>
31
+ <children>
32
+ <system>
33
+ <children>
34
+ <config>
35
+ <children>
36
+ <fbfanbox translate="title">
37
+ <title>FBFanBox</title>
38
+ <sort_order>50</sort_order>
39
+ </fbfanbox>
40
+ </children>
41
+ </config>
42
+ </children>
43
+ </system>
44
+ <Sulopa_Fbfanbox>
45
+ <title>Fbfanbox Module</title>
46
+ <sort_order>10</sort_order>
47
+ </Sulopa_Fbfanbox>
48
+ </children>
49
+ </admin>
50
+ </resources>
51
+ </acl>
52
+ </config>
app/code/local/Sulopa/Fbfanbox/etc/config.xml ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <default>
4
+ <fbfanbox>
5
+ <general>
6
+ <enable>1</enable>
7
+ <fb_page_url><![CDATA[https://www.facebook.com/sulopastore]]></fb_page_url>
8
+ <header>1</header>
9
+ <box_width>292</box_width>
10
+ <connection>10</connection>
11
+ </general>
12
+
13
+ </fbfanbox>
14
+ </default>
15
+ <modules>
16
+ <Sulopa_Fbfanbox>
17
+ <version>0.1.2</version>
18
+ </Sulopa_Fbfanbox>
19
+ </modules>
20
+ <frontend>
21
+ <routers>
22
+ <fbfanbox>
23
+ <use>standard</use>
24
+ <args>
25
+ <module>Sulopa_Fbfanbox</module>
26
+ <frontName>fbfanbox</frontName>
27
+ </args>
28
+ </fbfanbox>
29
+ </routers>
30
+ <layout>
31
+ <updates>
32
+ <fbfanbox>
33
+ <file>fbfanbox.xml</file>
34
+ </fbfanbox>
35
+ </updates>
36
+ </layout>
37
+ </frontend>
38
+ <admin>
39
+ <routers>
40
+ <fbfanbox>
41
+ <use>admin</use>
42
+ <args>
43
+ <module>Sulopa_Fbfanbox</module>
44
+ <frontName>fbfanbox</frontName>
45
+ </args>
46
+ </fbfanbox>
47
+ </routers>
48
+ </admin>
49
+ <adminhtml>
50
+ <layout>
51
+ <updates>
52
+ <fbfanbox>
53
+ <file>fbfanbox.xml</file>
54
+ </fbfanbox>
55
+ </updates>
56
+ </layout>
57
+ </adminhtml>
58
+ <global>
59
+ <models>
60
+ <fbfanbox>
61
+ <class>Sulopa_Fbfanbox_Model</class>
62
+ <resourceModel>fbfanbox_mysql4</resourceModel>
63
+ </fbfanbox>
64
+ <fbfanbox_mysql4>
65
+ <class>Sulopa_Fbfanbox_Model_Mysql4</class>
66
+ <entities>
67
+ <fbfanbox>
68
+ <table>fbfanbox</table>
69
+ </fbfanbox>
70
+ </entities>
71
+ </fbfanbox_mysql4>
72
+ </models>
73
+ <resources>
74
+ <fbfanbox_setup>
75
+ <setup>
76
+ <module>Sulopa_Fbfanbox</module>
77
+ </setup>
78
+ <connection>
79
+ <use>core_setup</use>
80
+ </connection>
81
+ </fbfanbox_setup>
82
+ <fbfanbox_write>
83
+ <connection>
84
+ <use>core_write</use>
85
+ </connection>
86
+ </fbfanbox_write>
87
+ <fbfanbox_read>
88
+ <connection>
89
+ <use>core_read</use>
90
+ </connection>
91
+ </fbfanbox_read>
92
+ </resources>
93
+ <blocks>
94
+ <fbfanbox>
95
+ <class>Sulopa_Fbfanbox_Block</class>
96
+ </fbfanbox>
97
+ </blocks>
98
+ <helpers>
99
+ <fbfanbox>
100
+ <class>Sulopa_Fbfanbox_Helper</class>
101
+ </fbfanbox>
102
+ </helpers>
103
+ </global>
104
+ </config>
app/code/local/Sulopa/Fbfanbox/etc/system.xml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <sulopa translate="label">
5
+ <label>Sulopa Extension</label>
6
+ <sort_order>400</sort_order>
7
+ </sulopa>
8
+ </tabs>
9
+ <sections>
10
+ <fbfanbox translate="label" module="fbfanbox">
11
+ <class>separator-top</class>
12
+ <label>FBFanBox</label>
13
+ <tab>sulopa</tab>
14
+ <frontend_type>text</frontend_type>
15
+ <sort_order>300</sort_order>
16
+ <show_in_default>1</show_in_default>
17
+ <show_in_website>1</show_in_website>
18
+ <show_in_store>1</show_in_store>
19
+ <groups> <general translate="label"> <label>FBFanBox Configuration</label> <frontend_type>text</frontend_type> <sort_order>1</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> <fields>
20
+ <enable translate="label">
21
+ <label>Enable FBFanBox</label>
22
+ <frontend_type>select</frontend_type>
23
+ <source_model>adminhtml/system_config_source_yesno</source_model>
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
+ </enable> <fb_page_url translate="label"> <label>Facebook Page URL</label> <frontend_type>text</frontend_type> <sort_order>2</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <comment></comment> </fb_page_url> <box_width translate="label"> <label>Width of the box in pixel</label> <frontend_type>text</frontend_type> <sort_order>3</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <comment>Width of the box in pixel</comment> </box_width>
29
+ <box_height translate="label">
30
+ <label>Height of the box in pixel</label>
31
+ <frontend_type>text</frontend_type>
32
+ <sort_order>4</sort_order>
33
+ <show_in_default>1</show_in_default>
34
+ <show_in_website>1</show_in_website>
35
+ <show_in_store>1</show_in_store>
36
+ <comment>Height of the box in pixel</comment>
37
+ </box_height>
38
+ <connection translate="label">
39
+ <label>Connections</label>
40
+ <frontend_type>text</frontend_type>
41
+ <sort_order>5</sort_order>
42
+ <show_in_default>1</show_in_default>
43
+ <show_in_website>1</show_in_website>
44
+ <show_in_store>1</show_in_store>
45
+ <comment>Show a sample of this many users who have liked this page</comment>
46
+ </connection>
47
+ <stream translate="label">
48
+ <label>Streams</label>
49
+ <frontend_type>select</frontend_type>
50
+ <source_model>adminhtml/system_config_source_yesno</source_model>
51
+ <sort_order>6</sort_order>
52
+ <show_in_default>1</show_in_default>
53
+ <show_in_website>1</show_in_website>
54
+ <show_in_store>1</show_in_store>
55
+ <comment>Show the profile stream for the public profile</comment>
56
+ </stream>
57
+ <header translate="label">
58
+ <label>Header</label>
59
+ <frontend_type>select</frontend_type>
60
+ <source_model>adminhtml/system_config_source_yesno</source_model>
61
+ <sort_order>7</sort_order>
62
+ <show_in_default>1</show_in_default>
63
+ <show_in_website>1</show_in_website>
64
+ <show_in_store>1</show_in_store>
65
+ <comment>Show the 'find us on Facebook' bar at top</comment>
66
+ </header> </fields> </general>
67
+ </groups>
68
+ </fbfanbox>
69
+ </sections>
70
+ </config>
app/code/local/Sulopa/Fbfanbox/sql/fbfanbox_setup/mysql4-install-0.1.0.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+
5
+ $installer->startSetup();
6
+
7
+ $installer->run("
8
+
9
+ -- DROP TABLE IF EXISTS {$this->getTable('fbfanbox')};
10
+ CREATE TABLE {$this->getTable('fbfanbox')} (
11
+ `fbfanbox_id` int(11) unsigned NOT NULL auto_increment,
12
+ `title` varchar(255) NOT NULL default '',
13
+ `filename` varchar(255) NOT NULL default '',
14
+ `content` text NOT NULL default '',
15
+ `status` smallint(6) NOT NULL default '0',
16
+ `created_time` datetime NULL,
17
+ `update_time` datetime NULL,
18
+ PRIMARY KEY (`fbfanbox_id`)
19
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
20
+
21
+ ");
22
+
23
+ $installer->endSetup();
app/code/local/Sulopa/Featuredproduct/Block/Featuredproduct.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Featuredproduct_Block_Featuredproduct extends Mage_Catalog_Block_Product_Abstract
3
+ {
4
+ public function _prepareLayout()
5
+ {
6
+ return parent::_prepareLayout();
7
+ }
8
+
9
+ public function getFeaturedproduct()
10
+ {
11
+ if (!$this->hasData('featuredproduct')) {
12
+ $this->setData('featuredproduct', Mage::registry('featuredproduct'));
13
+ }
14
+ return $this->getData('featuredproduct');
15
+ }
16
+ public function getProducts()
17
+ {
18
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
19
+ $storeId = Mage::app()->getStore()->getId();
20
+ $products = Mage::getResourceModel('catalog/product_collection')
21
+ ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
22
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
23
+ ->addMinimalPrice()
24
+ ->addUrlRewrite()
25
+ ->addTaxPercents()
26
+ ->addStoreFilter()
27
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID))
28
+ ->addFieldToFilter(array(
29
+ array('attribute'=>'featured','eq'=>'1'),
30
+ ));
31
+
32
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
33
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
34
+ $products->setPageSize($this->getConfig('qty'))->setCurPage(1);
35
+ $this->setProductCollection($products);
36
+ }
37
+ public function getConfig($att)
38
+ {
39
+ $config = Mage::getStoreConfig('featuredproduct');
40
+ if (isset($config['featuredproduct_config']) ) {
41
+ $value = $config['featuredproduct_config'][$att];
42
+ return $value;
43
+ } else {
44
+ throw new Exception($att.' value not set');
45
+ }
46
+ }
47
+
48
+ function cut_string_featuredproduct($string,$number){
49
+ if(strlen($string) <= $number) {
50
+ return $string;
51
+ }
52
+ else {
53
+ if(strpos($string," ",$number) > $number){
54
+ $new_space = strpos($string," ",$number);
55
+ $new_string = substr($string,0,$new_space)."..";
56
+ return $new_string;
57
+ }
58
+ $new_string = substr($string,0,$number)."..";
59
+ return $new_string;
60
+ }
61
+ }
62
+ }
app/code/local/Sulopa/Featuredproduct/Helper/Data.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Sulopa_Featuredproduct_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+
6
+ }
app/code/local/Sulopa/Featuredproduct/Model/Config/Direction.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Featuredproduct_Model_Config_Direction
3
+ {
4
+
5
+ public function toOptionArray()
6
+ {
7
+ return array(
8
+ array('value'=>'asc', 'label'=>Mage::helper('adminhtml')->__('Ascending')),
9
+ array('value'=>'desc', 'label'=>Mage::helper('adminhtml')->__('Descending'))
10
+ );
11
+ }
12
+
13
+ }
app/code/local/Sulopa/Featuredproduct/Model/Config/Sort.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Featuredproduct_Model_Config_Sort
3
+ {
4
+
5
+ public function toOptionArray()
6
+ {
7
+ return array(
8
+ array('value'=>'name', 'label'=>Mage::helper('adminhtml')->__('Name')),
9
+ array('value'=>'price', 'label'=>Mage::helper('adminhtml')->__('Price'))
10
+ );
11
+ }
12
+
13
+ }
app/code/local/Sulopa/Featuredproduct/etc/adminhtml.xml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <admin>
6
+ <children>
7
+ <system>
8
+ <children>
9
+ <config>
10
+ <children>
11
+ <featuredproduct>
12
+ <title>Featured Products</title>
13
+ </featuredproduct>
14
+ </children>
15
+ </config>
16
+ </children>
17
+ </system>
18
+ <sulopa translate="title" module="featuredproduct">
19
+ <title>Sulopa Store</title>
20
+ <sort_order>71</sort_order>
21
+ <children>
22
+ <featuredproduct translate="title" module="featuredproduct">
23
+ <title>Featured Products Slider</title>
24
+ <sort_order>0</sort_order>
25
+ <action>adminhtml/system_config/edit/section/featuredproduct</action>
26
+ </featuredproduct>
27
+ </children>
28
+ </sulopa>
29
+ </children>
30
+ </admin>
31
+ </resources>
32
+ </acl>
33
+ </config>
app/code/local/Sulopa/Featuredproduct/etc/config.xml ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sulopa_Featuredproduct>
5
+ <version>1.1.3</version>
6
+ </Sulopa_Featuredproduct>
7
+ </modules>
8
+ <frontend>
9
+ <routers>
10
+ <featuredproduct>
11
+ <use>standard</use>
12
+ <args>
13
+ <module>Sulopa_Featuredproduct</module>
14
+ <frontName>featuredproduct</frontName>
15
+ </args>
16
+ </featuredproduct>
17
+ </routers>
18
+ <layout>
19
+ <updates>
20
+ <featuredproduct>
21
+ <file>featuredproduct.xml</file>
22
+ </featuredproduct>
23
+ </updates>
24
+ </layout>
25
+ </frontend>
26
+ <admin>
27
+ <routers>
28
+ <featuredproduct>
29
+ <use>admin</use>
30
+ <args>
31
+ <module>Sulopa_Featuredproduct</module>
32
+ <frontName>featuredproduct</frontName>
33
+ </args>
34
+ </featuredproduct>
35
+ </routers>
36
+ </admin>
37
+ <adminhtml>
38
+ <menu>
39
+ <sulopa translate="title" module="featuredproduct">
40
+ <title>Sulopa Store</title>
41
+ <sort_order>71</sort_order>
42
+ <children>
43
+ <featuredproduct translate="title" module="featuredproduct">
44
+ <title>Featured Products</title>
45
+ <sort_order>0</sort_order>
46
+ <action>adminhtml/system_config/edit/section/featuredproduct</action>
47
+ </featuredproduct>
48
+ </children>
49
+ </sulopa>
50
+ </menu>
51
+ <acl>
52
+ <resources>
53
+ <all>
54
+ <title>Allow Everything</title>
55
+ </all>
56
+ <admin>
57
+ <children>
58
+ <Sulopa_Featuredproduct>
59
+ <title>Featuredproduct Module</title>
60
+ <sort_order>10</sort_order>
61
+ </Sulopa_Featuredproduct>
62
+ </children>
63
+ </admin>
64
+ </resources>
65
+ </acl>
66
+ <layout>
67
+ <updates>
68
+ <featuredproduct>
69
+ <file>featuredproduct.xml</file>
70
+ </featuredproduct>
71
+ </updates>
72
+ </layout>
73
+ </adminhtml>
74
+ <global>
75
+ <models>
76
+ <featuredproduct>
77
+ <class>Sulopa_Featuredproduct_Model</class>
78
+ <resourceModel>featuredproduct_mysql4</resourceModel>
79
+ </featuredproduct>
80
+ <featuredproduct_mysql4>
81
+ <class>Sulopa_Featuredproduct_Model_Mysql4</class>
82
+ <entities>
83
+ <featuredproduct>
84
+ <table>featuredproduct</table>
85
+ </featuredproduct>
86
+ </entities>
87
+ </featuredproduct_mysql4>
88
+ </models>
89
+ <resources>
90
+ <featuredproduct_setup>
91
+ <setup>
92
+ <module>Sulopa_Featuredproduct</module>
93
+ </setup>
94
+ <connection>
95
+ <use>core_setup</use>
96
+ </connection>
97
+ </featuredproduct_setup>
98
+ <featuredproduct_write>
99
+ <connection>
100
+ <use>core_write</use>
101
+ </connection>
102
+ </featuredproduct_write>
103
+ <featuredproduct_read>
104
+ <connection>
105
+ <use>core_read</use>
106
+ </connection>
107
+ </featuredproduct_read>
108
+ </resources>
109
+ <blocks>
110
+ <featuredproduct>
111
+ <class>Sulopa_Featuredproduct_Block</class>
112
+ </featuredproduct>
113
+ </blocks>
114
+ <helpers>
115
+ <featuredproduct>
116
+ <class>Sulopa_Featuredproduct_Helper</class>
117
+ </featuredproduct>
118
+ </helpers>
119
+ </global>
120
+ <default>
121
+ <featuredproduct>
122
+ <featuredproduct_config>
123
+ <enabled>1</enabled>
124
+ <title>Featured Product</title>
125
+ <auto>0</auto>
126
+ <speed>3000</speed>
127
+ <show_price>1</show_price>
128
+ <addtocart>1</addtocart>
129
+ <addtowishlist>0</addtowishlist>
130
+ <addtocompare>0</addtocompare>
131
+ <review>0</review>
132
+ <description>0</description>
133
+ <maxlength></maxlength>
134
+ <qty>9</qty>
135
+ <items_show>4</items_show>
136
+ <width_thumbnail>270</width_thumbnail>
137
+ <height_thumbnail>320</height_thumbnail>
138
+ <next_back>1</next_back>
139
+ <nav_ctrl>0</nav_ctrl>
140
+ </featuredproduct_config>
141
+ </featuredproduct>
142
+ </default>
143
+ </config>
app/code/local/Sulopa/Featuredproduct/etc/system.xml ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <sulopa translate="label" module="featuredproduct">
5
+ <label>Sulopa Store</label>
6
+ <sort_order>205</sort_order>
7
+ </sulopa>
8
+ </tabs>
9
+ <sections>
10
+ <featuredproduct translate="label" module="featuredproduct">
11
+ <label>Featured Product Slider</label>
12
+ <tab>sulopa</tab>
13
+ <sort_order>138</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
+ <featuredproduct_config translate="label">
19
+ <label>Featured Product Slider Config</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
+ <enabled translate="label comment">
27
+ <label>Enabled: </label>
28
+ <frontend_type>select</frontend_type>
29
+ <source_model>
30
+ adminhtml/system_config_source_yesno
31
+ </source_model>
32
+ <sort_order>0</sort_order>
33
+ <show_in_default>1</show_in_default>
34
+ <show_in_website>1</show_in_website>
35
+ <show_in_store>1</show_in_store>
36
+ </enabled>
37
+ <auto translate="label comment">
38
+ <label>Auto slide: </label>
39
+ <frontend_type>select</frontend_type>
40
+ <source_model>
41
+ adminhtml/system_config_source_yesno
42
+ </source_model>
43
+ <sort_order>1</sort_order>
44
+ <show_in_default>1</show_in_default>
45
+ <show_in_website>1</show_in_website>
46
+ <show_in_store>1</show_in_store>
47
+ </auto>
48
+ <title translate="label">
49
+ <label>Title: </label>
50
+ <frontend_type>text</frontend_type>
51
+ <sort_order>2</sort_order>
52
+ <show_in_default>1</show_in_default>
53
+ <show_in_website>1</show_in_website>
54
+ <show_in_store>1</show_in_store>
55
+ </title>
56
+ <speed translate="label">
57
+ <label>Slideshow Speed: </label>
58
+ <frontend_type>text</frontend_type>
59
+ <sort_order>16></sort_order>
60
+ <show_in_default>1</show_in_default>
61
+ <show_in_store>1</show_in_store>
62
+ <show_in_website>1</show_in_website>
63
+ </speed>
64
+ <show_price translate="label comment">
65
+ <label>Show Price: </label>
66
+ <frontend_type>select</frontend_type>
67
+ <source_model>
68
+ adminhtml/system_config_source_yesno
69
+ </source_model>
70
+ <sort_order>18</sort_order>
71
+ <show_in_default>1</show_in_default>
72
+ <show_in_website>1</show_in_website>
73
+ <show_in_store>1</show_in_store>
74
+ </show_price>
75
+ <addtocart translate="label comment">
76
+ <label>Show Add To Cart: </label>
77
+ <frontend_type>select</frontend_type>
78
+ <source_model>
79
+ adminhtml/system_config_source_yesno
80
+ </source_model>
81
+ <sort_order>19</sort_order>
82
+ <show_in_default>1</show_in_default>
83
+ <show_in_website>1</show_in_website>
84
+ <show_in_store>1</show_in_store>
85
+ </addtocart>
86
+ <addtowishlist translate="label comment">
87
+ <label>Show Add To Wishlist: </label>
88
+ <frontend_type>select</frontend_type>
89
+ <source_model>
90
+ adminhtml/system_config_source_yesno
91
+ </source_model>
92
+ <sort_order>20</sort_order>
93
+ <show_in_default>1</show_in_default>
94
+ <show_in_website>1</show_in_website>
95
+ <show_in_store>1</show_in_store>
96
+ </addtowishlist>
97
+ <addtocompare translate="label comment">
98
+ <label>Show Add To Compare: </label>
99
+ <frontend_type>select</frontend_type>
100
+ <source_model>
101
+ adminhtml/system_config_source_yesno
102
+ </source_model>
103
+ <sort_order>21</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
+ </addtocompare>
108
+ <review translate="label comment">
109
+ <label>Show Review Rating: </label>
110
+ <frontend_type>select</frontend_type>
111
+ <source_model>
112
+ adminhtml/system_config_source_yesno
113
+ </source_model>
114
+ <sort_order>22</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
+ </review>
119
+ <description translate="label comment">
120
+ <label>Show Short Description: </label>
121
+ <frontend_type>select</frontend_type>
122
+ <source_model>
123
+ adminhtml/system_config_source_yesno
124
+ </source_model>
125
+ <sort_order>23</sort_order>
126
+ <show_in_default>1</show_in_default>
127
+ <show_in_website>1</show_in_website>
128
+ <show_in_store>1</show_in_store>
129
+ </description>
130
+ <maxlength translate="label">
131
+ <label>Short Description Max Length: </label>
132
+ <frontend_type>text</frontend_type>
133
+ <comment>Empty for display all short description.</comment>
134
+ <sort_order>24</sort_order>
135
+ <show_in_default>1</show_in_default>
136
+ <show_in_website>1</show_in_website>
137
+ <show_in_store>1</show_in_store>
138
+ </maxlength>
139
+ <qty translate="label">
140
+ <label>Qty of Product: </label>
141
+ <frontend_type>text</frontend_type>
142
+ <sort_order>25</sort_order>
143
+ <show_in_default>1</show_in_default>
144
+ <show_in_website>1</show_in_website>
145
+ <show_in_store>1</show_in_store>
146
+ </qty>
147
+ <items_show translate="label">
148
+ <label>Number Product Show: </label>
149
+ <frontend_type>text</frontend_type>
150
+ <sort_order>26</sort_order>
151
+ <show_in_default>1</show_in_default>
152
+ <show_in_website>1</show_in_website>
153
+ <show_in_store>1</show_in_store>
154
+ </items_show>
155
+ <row_show translate="label">
156
+ <label>Number Rows Show: </label>
157
+ <frontend_type>text</frontend_type>
158
+ <sort_order>27</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
+ </row_show>
163
+ <width_thumbnail translate="label">
164
+ <label>Width of Thumbnail: </label>
165
+ <frontend_type>text</frontend_type>
166
+ <sort_order>29</sort_order>
167
+ <show_in_default>1</show_in_default>
168
+ <show_in_website>1</show_in_website>
169
+ <show_in_store>1</show_in_store>
170
+ </width_thumbnail>
171
+ <height_thumbnail translate="label">
172
+ <label>Height of Thumbnail: </label>
173
+ <frontend_type>text</frontend_type>
174
+ <sort_order>30</sort_order>
175
+ <show_in_default>1</show_in_default>
176
+ <show_in_website>1</show_in_website>
177
+ <show_in_store>1</show_in_store>
178
+ </height_thumbnail>
179
+ <next_back translate="label">
180
+ <label>Show Next/Back control: </label>
181
+ <frontend_type>select</frontend_type>
182
+ <source_model>
183
+ adminhtml/system_config_source_yesno
184
+ </source_model>
185
+ <sort_order>40</sort_order>
186
+ <show_in_default>1</show_in_default>
187
+ <show_in_website>1</show_in_website>
188
+ <show_in_store>1</show_in_store>
189
+ </next_back>
190
+ <nav_ctrl translate="label">
191
+ <label>Show navigation control: </label>
192
+ <frontend_type>select</frontend_type>
193
+ <source_model>
194
+ adminhtml/system_config_source_yesno
195
+ </source_model>
196
+ <sort_order>42</sort_order>
197
+ <show_in_default>1</show_in_default>
198
+ <show_in_website>1</show_in_website>
199
+ <show_in_store>1</show_in_store>
200
+ </nav_ctrl>
201
+ </fields>
202
+ </featuredproduct_config>
203
+ </groups>
204
+ </featuredproduct>
205
+ </sections>
206
+ </config>
207
+
208
+
app/code/local/Sulopa/Featuredproduct/sql/featuredproduct_setup/mysql4-install-0.1.0.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
3
+ $setup->addAttribute('catalog_product', 'featured', array(
4
+ 'label' => 'Featured',
5
+ 'type' => 'int',
6
+ 'input' => 'select',
7
+ 'source' => 'eav/entity_attribute_source_boolean',
8
+ 'visible' => true,
9
+ 'required' => false,
10
+ 'position' => 10,
11
+ ));
app/code/local/Sulopa/Newssubscribers/Block/Newssubscribers.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Newssubscribers_Block_Newssubscribers extends Mage_Core_Block_Template
3
+ {
4
+
5
+ public function getCookieName()
6
+ {
7
+ return Mage::getStoreConfig('newsletter/general/cookiename');
8
+ }
9
+
10
+ public function getCookieLifeTime()
11
+ {
12
+ return Mage::getStoreConfig('newsletter/general/cookielifetime');
13
+ }
14
+
15
+ public function isActivePopUp()
16
+ {
17
+ return Mage::getStoreConfig('newsletter/general/isactive');
18
+ }
19
+
20
+ public function getTheme()
21
+ {
22
+ return Mage::getStoreConfig('newsletter/general/theme');
23
+ }
24
+
25
+ public function getFirstTitle()
26
+ {
27
+ return Mage::getStoreConfig('newsletter/general/firsttitle');
28
+ }
29
+
30
+ public function getSecondTitle()
31
+ {
32
+ return Mage::getStoreConfig('newsletter/general/secondtitle');
33
+ }
34
+
35
+ public function getText()
36
+ {
37
+ return Mage::getStoreConfig('newsletter/general/message');
38
+ }
39
+ }
app/code/local/Sulopa/Newssubscribers/Helper/Data.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Sulopa_Newssubscribers_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+
6
+ }
app/code/local/Sulopa/Newssubscribers/Model/Subscriber.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Sulopa_Newssubscribers_Model_Subscriber extends Mage_Newsletter_Model_Subscriber
4
+ {
5
+
6
+ public function getCouponCode()
7
+ {
8
+ if (!Mage::getStoreConfig('newsletter/coupon/isactive'))
9
+ return '';
10
+
11
+ $model = Mage::getModel('salesrule/rule');
12
+ $model->load(Mage::getStoreConfig('newsletter/coupon/roleid'));
13
+ $massGenerator = $model->getCouponMassGenerator();
14
+ $massGenerator->setData(array(
15
+ 'rule_id' => Mage::getStoreConfig('newsletter/coupon/roleid'),
16
+ 'qty' => 1,
17
+ 'length' => Mage::getStoreConfig('newsletter/coupon/length'),
18
+ 'format' => Mage::getStoreConfig('newsletter/coupon/format'),
19
+ 'prefix' => Mage::getStoreConfig('newsletter/coupon/prefix'),
20
+ 'suffix' => Mage::getStoreConfig('newsletter/coupon/suffix'),
21
+ 'dash' => Mage::getStoreConfig('newsletter/coupon/dash'),
22
+ 'uses_per_coupon' => 1,
23
+ 'uses_per_customer' => 1
24
+ ));
25
+ $massGenerator->generatePool();
26
+ $generated = $massGenerator->getGeneratedCount();
27
+ $latestCuopon = max($model->getCoupons());
28
+ $couponData = $latestCuopon->getData();
29
+ if ($generated != 1)
30
+ Mage::throwException($this->__('There was a problem with coupon generation.'));
31
+
32
+ return $couponData['code'];
33
+ }
34
+ }
app/code/local/Sulopa/Newssubscribers/Model/System/Config/Coupon.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Sulopa_Newssubscribers_Model_System_Config_Coupon
4
+ {
5
+ public function toOptionArray()
6
+ {
7
+ return array(
8
+ array('value' => 'alphanum', 'label'=>Mage::helper('adminhtml')->__('Alphanumeric')),
9
+ array('value' => 'alpha', 'label'=>Mage::helper('adminhtml')->__('Alphabetical')),
10
+ array('value' => 'num', 'label'=>Mage::helper('adminhtml')->__('Numeric')),
11
+ );
12
+ }
13
+ }
app/code/local/Sulopa/Newssubscribers/Model/System/Config/Couponlist.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Sulopa_Newssubscribers_Model_System_Config_Couponlist
4
+ {
5
+ public function toOptionArray()
6
+ {
7
+ $rules = Mage::getResourceModel('salesrule/rule_collection')->load();
8
+ $list = array(
9
+ '' => Mage::helper('adminhtml')->__('Please choose rule')
10
+ );
11
+ if ($rules) {
12
+ foreach ($rules as $rule) {
13
+ if ($rule->getCouponType()==2)
14
+ $list[$rule->getId()] = $rule->getName();
15
+ }
16
+ }
17
+ return $list;
18
+ }
19
+ }
app/code/local/Sulopa/Newssubscribers/Model/System/Config/Template.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Sulopa_Newssubscribers_Model_System_Config_Template
4
+ {
5
+ public function toOptionArray()
6
+ {
7
+ return array(
8
+ array('value' => 'default', 'label'=>Mage::helper('adminhtml')->__('Default')),
9
+ array('value' => 'label', 'label'=>Mage::helper('adminhtml')->__('Label')),
10
+ );
11
+ }
12
+ }
app/code/local/Sulopa/Newssubscribers/controllers/SubscriberController.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ include_once('Mage/Newsletter/controllers/SubscriberController.php');
4
+
5
+ class Sulopa_Newssubscribers_SubscriberController extends Mage_Newsletter_SubscriberController
6
+ {
7
+
8
+ public function newAction()
9
+ {
10
+ parent::newAction();
11
+
12
+ if (!Mage::getStoreConfig('newsletter/common/isactive'))
13
+ return '';
14
+
15
+ $session = Mage::getSingleton('core/session');
16
+ $errorMsg = '';
17
+ $errors = $session->getMessages(false)->getErrors();
18
+ $email = (string) $this->getRequest()->getPost('email');
19
+ if ($errors)
20
+ $errorMsg = $errors[0]->getText();
21
+
22
+ if (!$errorMsg) {
23
+ try {
24
+
25
+ /*$mailTemplate = Mage::getModel('core/email_template');
26
+ $mailTemplate->sendTransactional(1, array(
27
+ 'name' => Mage::getStoreConfig('trans_email/ident_general/name'),
28
+ 'email' => Mage::getStoreConfig('trans_email/ident_general/email')
29
+ ), $email, 'newsletter_subscr_coupon', array(
30
+ 'couponCode' => $couponData['code']
31
+ ));*/
32
+
33
+ }
34
+ catch (Mage_Core_Exception $e) {
35
+ $session->addException($e, $this->__('There was a problem with the subscription: %s', $e->getMessage()));
36
+ }
37
+ catch (Exception $e) {
38
+ $session->addException($e, $this->__('There was a problem with the subscription.'));
39
+ }
40
+ }
41
+ }
42
+
43
+ public function newajaxAction()
44
+ {
45
+ $this->newAction();
46
+ $session = Mage::getSingleton('core/session');
47
+ $messages = $session->getMessages(true);
48
+ $errors = $messages->getErrors();
49
+ $response = array(
50
+ 'errorMsg' => '',
51
+ 'successMsg' => ''
52
+ );
53
+
54
+ if ($errors) {
55
+ $response['errorMsg'] = $errors[0]->getText();
56
+ } else {
57
+ $success = $messages->getItemsByType('success');
58
+ $response['successMsg'] = $success[0]->getText();
59
+ }
60
+
61
+ echo Mage::helper('core')->jsonEncode($response);
62
+ exit;
63
+ }
64
+ }
app/code/local/Sulopa/Newssubscribers/etc/adminhtml.xml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <admin>
6
+ <children>
7
+ <system>
8
+ <children>
9
+ <config>
10
+ <children>
11
+ <newsletter translate="title" module="newssubscribers">
12
+ <title></title>
13
+ <sort_order>60</sort_order>
14
+ </newsletter>
15
+ </children>
16
+ </config>
17
+ </children>
18
+ </system>
19
+ </children>
20
+ </admin>
21
+ </resources>
22
+ </acl>
23
+ </config>
app/code/local/Sulopa/Newssubscribers/etc/config.xml ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sulopa_Newssubscribers>
5
+ <version>0.1.0</version>
6
+ </Sulopa_Newssubscribers>
7
+ </modules>
8
+
9
+ <frontend>
10
+ <routers>
11
+ <newsletter>
12
+ <args>
13
+ <modules>
14
+ <Sulopa_Newssubscribers before="Mage_Newsletter">Sulopa_Newssubscribers</Sulopa_Newssubscribers>
15
+ </modules>
16
+ </args>
17
+ </newsletter>
18
+ </routers>
19
+
20
+ <layout>
21
+ <updates>
22
+ <newssubscribers>
23
+ <file>newssubscribers.xml</file>
24
+ </newssubscribers>
25
+ </updates>
26
+ </layout>
27
+
28
+ <translate>
29
+ <modules>
30
+ <Sulopa_Newssubscribers>
31
+ <files>
32
+ <default>Sulopa_Newssubscribers.csv</default>
33
+ </files>
34
+ </Sulopa_Newssubscribers>
35
+ </modules>
36
+ </translate>
37
+ </frontend>
38
+
39
+ <adminhtml>
40
+ <translate>
41
+ <modules>
42
+ <Sulopa_Newssubscribers>
43
+ <files>
44
+ <default>Sulopa_Adminhtml_Newssubscribers.csv</default>
45
+ </files>
46
+ </Sulopa_Newssubscribers>
47
+ </modules>
48
+ </translate>
49
+ </adminhtml>
50
+
51
+ <global>
52
+ <blocks>
53
+ <newssubscribers>
54
+ <class>Sulopa_Newssubscribers_Block</class>
55
+ </newssubscribers>
56
+ </blocks>
57
+
58
+ <helpers>
59
+ <newssubscribers>
60
+ <class>Sulopa_Newssubscribers_Helper</class>
61
+ </newssubscribers>
62
+ </helpers>
63
+
64
+ <models>
65
+ <newssubscribers>
66
+ <class>Sulopa_Newssubscribers_Model</class>
67
+ </newssubscribers>
68
+ <newsletter>
69
+ <rewrite>
70
+ <subscriber>Sulopa_Newssubscribers_Model_Subscriber</subscriber>
71
+ </rewrite>
72
+ </newsletter>
73
+ </models>
74
+
75
+ </global>
76
+
77
+ <default>
78
+ <newsletter>
79
+ <general>
80
+ <isactive>1</isactive>
81
+ <cookielifetime>60</cookielifetime>
82
+ <cookiename>su_newssubscribers</cookiename>
83
+ <theme>default</theme>
84
+ <firsttitle>Newsletter Sign Up</firsttitle>
85
+ <secondtitle></secondtitle>
86
+ <message>Would you like to be one of the first to receive exclusive information about the latest collections, offers and events from this online shop? Then just subscribe to our free newsletter now.</message>
87
+ </general>
88
+ <coupon>
89
+ <isactive>0</isactive>
90
+ <format>alphanum</format>
91
+ <length>8</length>
92
+ </coupon>
93
+ </newsletter>
94
+ </default>
95
+ </config>
app/code/local/Sulopa/Newssubscribers/etc/system.xml ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <sections>
4
+ <newsletter translate="label" module="newssubscribers">
5
+ <groups>
6
+ <general translate="label">
7
+ <label>"Newsletter subscription with gift" Popup settings</label>
8
+ <frontend_type>text</frontend_type>
9
+ <sort_order>10</sort_order>
10
+ <show_in_default>1</show_in_default>
11
+ <show_in_website>1</show_in_website>
12
+ <show_in_store>1</show_in_store>
13
+ <fields>
14
+ <isactive translate="label">
15
+ <label>Show Popup</label>
16
+ <frontend_type>select</frontend_type>
17
+ <sort_order>1</sort_order>
18
+ <show_in_default>1</show_in_default>
19
+ <show_in_website>1</show_in_website>
20
+ <show_in_store>1</show_in_store>
21
+ <source_model>adminhtml/system_config_source_yesno</source_model>
22
+ </isactive>
23
+ <theme translate="label">
24
+ <label>Theme</label>
25
+ <frontend_type>select</frontend_type>
26
+ <sort_order>1</sort_order>
27
+ <show_in_default>1</show_in_default>
28
+ <show_in_website>1</show_in_website>
29
+ <show_in_store>1</show_in_store>
30
+ <source_model>newssubscribers/system_config_template</source_model>
31
+ </theme>
32
+ <firsttitle translate="label">
33
+ <label>Title row 1</label>
34
+ <frontend_type>text</frontend_type>
35
+ <sort_order>2</sort_order>
36
+ <show_in_default>1</show_in_default>
37
+ <show_in_website>1</show_in_website>
38
+ <show_in_store>1</show_in_store>
39
+ </firsttitle>
40
+ <secondtitle translate="label">
41
+ <label>Title row 2</label>
42
+ <frontend_type>text</frontend_type>
43
+ <sort_order>3</sort_order>
44
+ <show_in_default>1</show_in_default>
45
+ <show_in_website>1</show_in_website>
46
+ <show_in_store>1</show_in_store>
47
+ </secondtitle>
48
+ <message translate="label">
49
+ <label>Text</label>
50
+ <frontend_type>Textarea</frontend_type>
51
+ <sort_order>4</sort_order>
52
+ <show_in_default>1</show_in_default>
53
+ <show_in_website>1</show_in_website>
54
+ <show_in_store>1</show_in_store>
55
+ </message>
56
+ <cookiename translate="label">
57
+ <label>Cookie Name</label>
58
+ <frontend_type>text</frontend_type>
59
+ <sort_order>5</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
+ <comment>If you change this name, popup show again for all customers</comment>
64
+ </cookiename>
65
+ <cookielifetime translate="label">
66
+ <label>Cookie Life Time (days)</label>
67
+ <frontend_type>text</frontend_type>
68
+ <sort_order>7</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
+ <comment>After days popup show again</comment>
73
+ </cookielifetime>
74
+ </fields>
75
+ </general>
76
+
77
+ <coupon translate="label">
78
+ <label>"Newsletter subscription with gift" Coupon settings</label>
79
+ <frontend_type>text</frontend_type>
80
+ <sort_order>20</sort_order>
81
+ <show_in_default>1</show_in_default>
82
+ <show_in_website>1</show_in_website>
83
+ <show_in_store>1</show_in_store>
84
+ <fields>
85
+ <isactive translate="label">
86
+ <label>Send coupon</label>
87
+ <frontend_type>select</frontend_type>
88
+ <sort_order>1</sort_order>
89
+ <show_in_default>1</show_in_default>
90
+ <show_in_website>1</show_in_website>
91
+ <show_in_store>1</show_in_store>
92
+ <source_model>adminhtml/system_config_source_yesno</source_model>
93
+ </isactive>
94
+ <roleid translate="label">
95
+ <label>Shopping Cart Price Rule</label>
96
+ <frontend_type>select</frontend_type>
97
+ <sort_order>1</sort_order>
98
+ <show_in_default>1</show_in_default>
99
+ <show_in_website>1</show_in_website>
100
+ <show_in_store>1</show_in_store>
101
+ <comment>Add new rule: "Admin -> Promotion -> Shopping Cart Price Rule" </comment>
102
+ <source_model>newssubscribers/system_config_couponlist</source_model>
103
+ </roleid>
104
+ <length translate="label">
105
+ <label>Length</label>
106
+ <frontend_type>text</frontend_type>
107
+ <sort_order>2</sort_order>
108
+ <show_in_default>1</show_in_default>
109
+ <show_in_website>1</show_in_website>
110
+ <show_in_store>1</show_in_store>
111
+ <comment>Excluding prefix, suffix and separators.</comment>
112
+ </length>
113
+ <format translate="label">
114
+ <label>Format</label>
115
+ <frontend_type>select</frontend_type>
116
+ <source_model>newssubscribers/system_config_coupon</source_model>
117
+ <sort_order>3</sort_order>
118
+ <show_in_default>1</show_in_default>
119
+ <show_in_website>1</show_in_website>
120
+ <show_in_store>1</show_in_store>
121
+ </format>
122
+ <prefix translate="label">
123
+ <label>Prefix</label>
124
+ <frontend_type>text</frontend_type>
125
+ <sort_order>4</sort_order>
126
+ <show_in_default>1</show_in_default>
127
+ <show_in_website>1</show_in_website>
128
+ <show_in_store>1</show_in_store>
129
+ </prefix>
130
+ <suffix translate="label">
131
+ <label>Suffix</label>
132
+ <frontend_type>text</frontend_type>
133
+ <sort_order>5</sort_order>
134
+ <show_in_default>1</show_in_default>
135
+ <show_in_website>1</show_in_website>
136
+ <show_in_store>1</show_in_store>
137
+ </suffix>
138
+ <dash translate="label">
139
+ <label>Dash</label>
140
+ <frontend_type>text</frontend_type>
141
+ <sort_order>6</sort_order>
142
+ <show_in_default>1</show_in_default>
143
+ <show_in_website>1</show_in_website>
144
+ <show_in_store>1</show_in_store>
145
+ <comment>If empty no separation.</comment>
146
+ </dash>
147
+ </fields>
148
+ </coupon>
149
+ </groups>
150
+ </newsletter>
151
+ </sections>
152
+
153
+
154
+ </config>
app/code/local/Sulopa/Producttabs/Block/Adminhtml/Edit.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Block_Adminhtml_Edit extends Mage_Adminhtml_Block_Widget_Grid_Container {
3
+ protected $_saveButtonLabel = 'Save Featured Products';
4
+ public function __construct() {
5
+ $this->_blockGroup = 'producttabs';
6
+ $this->_controller = 'adminhtml_edit';
7
+ $this->_headerText = Mage::helper('adminhtml')->__('Featured products');
8
+ parent::__construct();
9
+ $this->_removeButton('add');
10
+ $this->_addButton('save', array(
11
+ 'label' => $this->_saveButtonLabel,
12
+ 'onclick' => 'categorySubmit(\'' . $this->getSaveUrl() . '\')',
13
+ 'class' => 'Save',
14
+ ));
15
+ }
16
+ public function getSaveUrl() {
17
+ return $this->getUrl('*/*/save', array('store' => $this->getRequest()->getParam('store')));
18
+ }
19
+ protected function _afterToHtml($html) {
20
+ return $this->_prependHtml() . parent::_afterToHtml($html) . $this->_appendHtml();
21
+ }
22
+ private function _prependHtml() {
23
+ $html = '
24
+ <form id="featured_edit_form" action="' . $this->getSaveUrl() . '" method="post" enctype="multipart/form-data">
25
+ <input name="form_key" type="hidden" value="' . $this->getFormKey() . '" />
26
+ <div class="no-display">
27
+ <input type="hidden" name="featured_products" id="in_featured_products" value="" />
28
+ </div>
29
+ </form>
30
+ ';
31
+ return $html;
32
+ }
33
+ private function _appendHtml() {
34
+ $html =
35
+ '
36
+ <style type="text/css">
37
+ <!--
38
+ #logo_wrapp a{
39
+ display:block;
40
+ width:75px;
41
+ float:right;
42
+ padding:0px 0px 0px 0px;
43
+ margin:5px 0px 0px 0px;
44
+ background:url(' . $this->getSkinUrl('images/logo.png') . ') no-repeat 0px 0px;
45
+ text-indent: -9999px;
46
+ font-size: 0px;
47
+ line-height: 0px;
48
+ height:13px;
49
+ }
50
+ #logo_wrapp a:hover {background:url(' . $this->getSkinUrl('images/logo.png') . ') no-repeat 0px -13px; }
51
+ -->
52
+ </style>
53
+ <div style="text-align:right;">Community version of <a href="' . $this->homeUrl . '/ecommerce/magento/featured-products-on-magento-frontpage/" target="_blank">Featured Products Extension</a></div>
54
+ <div id="logo_wrapp"><a href="' . $this->homeUrl . '" target="_blank">SulopaStore</a></div>
55
+ ';
56
+ return $html;
57
+ }
58
+ public function getHeaderHtml() {
59
+ return '<h3 style="background-image: url(' . $this->getSkinUrl('images/product_rating_full_star.gif') . ');" class="' . $this->getHeaderCssClass() . '">' . $this->getHeaderText() . '</h3>';
60
+ }
61
+ protected function _prepareLayout() {
62
+ $this->setChild('store_switcher', $this->getLayout()->createBlock('adminhtml/store_switcher', 'store_switcher')->setUseConfirm(false)
63
+ );
64
+ return parent::_prepareLayout();
65
+ }
66
+ public function getGridHtml() {
67
+ return $this->getChildHtml('store_switcher') . $this->getChildHtml('grid');
68
+ }
69
+ }
app/code/local/Sulopa/Producttabs/Block/Adminhtml/Edit/Grid.php ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Block_Adminhtml_Edit_Grid extends Mage_Adminhtml_Block_Widget_Grid {
3
+ public function __construct() {
4
+ parent::__construct();
5
+ $this->setId('su_featured_products');
6
+ $this->setDefaultSort('entity_id');
7
+ $this->setUseAjax(true);
8
+ $this->setRowClickCallback('FeaturedRowClick');
9
+ }
10
+ public function getProduct() {
11
+ return Mage::registry('product');
12
+ }
13
+ protected function _getStore() {
14
+ $storeId = (int) $this->getRequest()->getParam('store', 0);
15
+ return Mage::app()->getStore($storeId);
16
+ }
17
+ protected function _addColumnFilterToCollection($column) {
18
+ if ($this->getCollection()) {
19
+ if ($column->getId() == 'websites') {
20
+ $this->getCollection()->joinField('websites', 'catalog/product_website', 'website_id', 'product_id=entity_id', null, 'left');
21
+ }
22
+ }
23
+ if ($column->getId() == "featured") {
24
+ $productIds = $this->_getSelectedProducts();
25
+ if (empty($productIds)) {
26
+ $productIds = 0;
27
+ }
28
+ if ($column->getFilter()->getValue()) {
29
+ $this->getCollection()->addFieldToFilter('entity_id', array('in' => $productIds));
30
+ } elseif (!empty($productIds)) {
31
+ $this->getCollection()->addFieldToFilter('entity_id', array('nin' => $productIds));
32
+ }
33
+ } else {
34
+ parent::_addColumnFilterToCollection($column);
35
+ }
36
+ return $this;
37
+ }
38
+ protected function _prepareCollection() {
39
+ $store = $this->_getStore();
40
+ $collection = Mage::getModel('catalog/product')->getCollection()
41
+ ->addAttributeToSelect('name')
42
+ ->addAttributeToSelect('sku')
43
+ ->addAttributeToSelect('su_featured_product')
44
+ ->addAttributeToSelect('type_id')
45
+ ->addAttributeToFilter('visibility', array('nin' => array(1,3)));
46
+ if ($store->getId()) {
47
+ $collection->addStoreFilter($store);
48
+ $collection->joinAttribute('custom_name', 'catalog_product/name', 'entity_id', null, 'inner', $store->getId());
49
+ $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner', $store->getId());
50
+ $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', 1, 'inner', $store->getId());
51
+ $collection->joinAttribute('price', 'catalog_product/price', 'entity_id', null, 'left', $store->getId());
52
+ } else {
53
+ $collection->addAttributeToSelect('price');
54
+ $collection->addAttributeToSelect('status');
55
+ $collection->addAttributeToSelect('visibility');
56
+ }
57
+ $this->setCollection($collection);
58
+ parent::_prepareCollection();
59
+ $this->getCollection()->addWebsiteNamesToResult();
60
+ return $this;
61
+ }
62
+ protected function _prepareColumns() {
63
+ $this->addColumn('featured', array(
64
+ 'header_css_class' => 'a-center',
65
+ 'type' => 'checkbox',
66
+ 'name' => 'featured',
67
+ 'values' => $this->_getSelectedProducts(),
68
+ 'align' => 'center',
69
+ 'index' => 'entity_id'
70
+ ));
71
+ $this->addColumn('entity_id', array(
72
+ 'header' => Mage::helper('catalog')->__('ID'),
73
+ 'sortable' => true,
74
+ 'width' => '60',
75
+ 'index' => 'entity_id'
76
+ ));
77
+ $this->addColumn('name', array(
78
+ 'header' => Mage::helper('catalog')->__('Name'),
79
+ 'index' => 'name'
80
+ ));
81
+ $this->addColumn('type',
82
+ array(
83
+ 'header'=> Mage::helper('catalog')->__('Type'),
84
+ 'width' => '60px',
85
+ 'index' => 'type_id',
86
+ 'type' => 'options',
87
+ 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(),
88
+ ));
89
+ $this->addColumn('sku', array(
90
+ 'header' => Mage::helper('catalog')->__('SKU'),
91
+ 'width' => '140',
92
+ 'index' => 'sku'
93
+ ));
94
+ $this->addColumn('visibility', array(
95
+ 'header' => Mage::helper('catalog')->__('Visibility'),
96
+ 'width' => '140',
97
+ 'index' => 'visibility',
98
+ 'filter' => false,
99
+ 'renderer' => 'producttabs/adminhtml_edit_renderer_visibility',
100
+ ));
101
+ if (!Mage::app()->isSingleStoreMode()) {
102
+ $this->addColumn('websites', array(
103
+ 'header' => Mage::helper('catalog')->__('Websites'),
104
+ 'width' => '100px',
105
+ 'sortable' => false,
106
+ 'index' => 'websites',
107
+ 'type' => 'options',
108
+ 'options' => Mage::getModel('core/website')->getCollection()->toOptionHash(),
109
+ ));
110
+ }
111
+ $store = $this->_getStore();
112
+ $this->addColumn('price',
113
+ array(
114
+ 'header'=> Mage::helper('catalog')->__('Price'),
115
+ 'type' => 'price',
116
+ 'currency_code' => $store->getBaseCurrency()->getCode(),
117
+ 'index' => 'price',
118
+ ));
119
+ return parent::_prepareColumns();
120
+ }
121
+ public function getGridUrl() {
122
+ return $this->getUrl('*/*/grid', array('_current' => true));
123
+ }
124
+ protected function _getSelectedProducts($json=false) {
125
+ $temp = $this->getRequest()->getPost('featured_ids');
126
+ $store = $this->_getStore();
127
+ if ($temp) {
128
+ parse_str($temp, $featured_ids);
129
+ }
130
+ $_prod = Mage::getModel('catalog/product')->getCollection()
131
+ ->joinAttribute('su_featured_product', 'catalog_product/su_featured_product', 'entity_id', null, 'left', $store->getId())
132
+ ->addAttributeToFilter('su_featured_product', '1');
133
+ $products = $_prod->getColumnValues('entity_id');
134
+ $selected_products = array();
135
+ if ($json == true) {
136
+ foreach ($products as $key => $value) {
137
+ $selected_products[$value] = '1';
138
+ }
139
+ return Zend_Json::encode($selected_products);
140
+ } else {
141
+ foreach ($products as $key => $value) {
142
+ if ((isset($featured_ids[$value])) && ($featured_ids[$value] == 0)) {
143
+ }else
144
+ $selected_products[$value] = '0';
145
+ }
146
+ if (isset($featured_ids))
147
+ foreach ($featured_ids as $key => $value) {
148
+ if ($value == 1)
149
+ $selected_products[$key] = '0';
150
+ }
151
+ return array_keys($selected_products);
152
+ }
153
+ return $products;
154
+ }
155
+ //add javascript before/after grid html
156
+ protected function _afterToHtml($html) {
157
+ return $this->_prependHtml() . parent::_afterToHtml($html) . $this->_appendHtml();
158
+ }
159
+ private function _prependHtml() {
160
+ $gridName = $this->getJsObjectName();
161
+ $html =
162
+ <<<EndHTML
163
+ <script type="text/javascript">
164
+ //<![CDATA[
165
+ categoryForm = new varienForm('featured_edit_form');
166
+ categoryForm.submit= function (url) {
167
+ this._submit();
168
+ return true;
169
+ };
170
+ function categorySubmit(url) {
171
+ var params = {};
172
+ var fields = $('featured_edit_form').getElementsBySelector('input', 'select');
173
+ categoryForm.submit();
174
+ }
175
+ function FeaturedRowClick(grid, event)
176
+ {
177
+ var trElement = Event.findElement(event, 'tr');
178
+ var isInput = Event.element(event).tagName == 'INPUT';
179
+ var checkbox = Element.getElementsBySelector(trElement, 'input.checkbox').first();
180
+ if(!checkbox) return;
181
+ if(checkbox.checked) checkBoxes.set(checkbox.value, 1);
182
+ else checkBoxes.set(checkbox.value, 0);
183
+ //else checkBoxes.unset(checkbox.value);
184
+ $("in_featured_products").value = checkBoxes.toQueryString();
185
+ //console.log("Products", checkBoxes);
186
+ $gridName.reloadParams = {'featured_ids':checkBoxes.toQueryString()};
187
+ }
188
+ //]]>
189
+ </script>
190
+ EndHTML;
191
+ return $html;
192
+ }
193
+ private function _appendHtml() {
194
+ $html =
195
+ '
196
+ <script type="text/javascript">
197
+ var checkBoxes = $H();
198
+ var checkbox_all = $$("#su_featured_products_table thead input.checkbox").first();
199
+ var everycheckbox = $$("#su_featured_products_table tbody input.checkbox");
200
+ checkbox_all.observe("click", function(event) {
201
+ if(checkbox_all.checked)
202
+ {
203
+ everycheckbox.each(function(element, index) {
204
+ checkBoxes.set(element.value, 1)
205
+ });
206
+ } else
207
+ {
208
+ everycheckbox.each(function(element, index) {
209
+ checkBoxes.set(element.value, 0)
210
+ });
211
+ }
212
+ $("in_featured_products").value = checkBoxes.toQueryString();
213
+ });
214
+ </script>
215
+ ';
216
+ return $html;
217
+ }
218
+ }
app/code/local/Sulopa/Producttabs/Block/Adminhtml/Edit/Renderer/Visibility.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Block_Adminhtml_Edit_Renderer_Visibility extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
3
+ {
4
+ protected $_values;
5
+ /**
6
+ * Renders grid column
7
+ *
8
+ * @param Varien_Object $row
9
+ * @return string
10
+ */
11
+ public function render(Varien_Object $row)
12
+ {
13
+ $this->_values = Mage::getModel('catalog/product_visibility')->getOptionArray();
14
+ $html = $this->_values[$row->getData($this->getColumn()->getIndex())];
15
+ return $html;
16
+ }
17
+ }
app/code/local/Sulopa/Producttabs/Block/Product/List.php ADDED
@@ -0,0 +1,249 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Block_Product_List extends Mage_Catalog_Block_Product_List
3
+ {
4
+ public function getTabCfg($cfg)
5
+ {
6
+ return Mage::helper('producttabs')->getTabCfg($cfg);
7
+ }
8
+ public function getProductCfg($cfg)
9
+ {
10
+ return Mage::helper('producttabs')->getProductCfg($cfg);
11
+ }
12
+ public function useFlatCatalogProduct()
13
+ {
14
+ return Mage::getStoreConfig('catalog/frontend/flat_catalog_product');
15
+ }
16
+ public function getColumnCount()
17
+ {
18
+ return $this->getNumProduct();
19
+ }
20
+ public function getNumProduct()
21
+ {
22
+ return $this->getProductCfg('product_number');
23
+ }
24
+ public function getCategoryId()
25
+ {
26
+ $categoryId = (int) $this->getRequest()->getPost('category_id');
27
+ return $categoryId;
28
+ }
29
+ protected function _getProductCollection()
30
+ {
31
+ $productType = $this->getRequest()->getParam('type');
32
+ switch ($productType) {
33
+ case 'bestseller':
34
+ $Collection = $this->getBestsellerProducts();
35
+ $this->_TitleProduct = $this->__('Bestseller');
36
+ break;
37
+ case 'featured':
38
+ $Collection = $this->getFeaturedProducts();
39
+ break;
40
+ case 'mostviewed':
41
+ $Collection = $this->getMostviewedProducts();
42
+ break;
43
+ case 'newproduct':
44
+ $Collection = $this->getNewProducts();
45
+ break;
46
+ case 'random':
47
+ $Collection = $this->getRandomProducts();
48
+ break;
49
+ case 'saleproduct':
50
+ $Collection = $this->getSaleProducts();
51
+ break;
52
+ case 'specialproduct':
53
+ $Collection = $this->getSpecialProducts();
54
+ break;
55
+ default:
56
+ $Collection = $this->getFeaturedProducts();
57
+ break;
58
+ }
59
+ return $Collection;
60
+ }
61
+ public function getBestsellerProducts(){
62
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
63
+ $collection = Mage::getResourceModel('producttabs/product_bestseller');
64
+ $collection = $this->_addProductAttributesAndPrices($collection)
65
+ ->addOrderedQty()
66
+ ->addMinimalPrice()
67
+ ->setOrder('ordered_qty', 'desc');
68
+ $collection->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
69
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID));
70
+ $collection->setPageSize($this->getNumProduct()); // require before foreach
71
+ if($this->useFlatCatalogProduct())
72
+ {
73
+ // fix error mat image vs name while Enable useFlatCatalogProduct
74
+ foreach ($collection as $product)
75
+ {
76
+ $productId = $product->_data['entity_id'];
77
+ $_product = Mage::getModel('catalog/product')->load($productId); //Product ID
78
+ $product->_data['name'] = $_product->getName();
79
+ $product->_data['thumbnail'] = $_product->getThumbnail();
80
+ $product->_data['small_image'] = $_product->getSmallImage();
81
+ }
82
+ }
83
+ return $collection;
84
+ }
85
+ public function getFeaturedProducts(){
86
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
87
+ $collection = Mage::getModel('catalog/product')->getCollection()
88
+ ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
89
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
90
+ ->addAttributeToFilter('su_featured_product', 1, 'left')
91
+ ->addMinimalPrice()
92
+ ->addTaxPercents()
93
+ ->addStoreFilter()
94
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID));
95
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
96
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
97
+ // getNumProduct
98
+ $collection->setPageSize($this->getNumProduct());
99
+ return $collection;
100
+ }
101
+ public function getMostviewedProducts(){
102
+ //Magento get popular products by total number of views
103
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
104
+ $collection = Mage::getResourceModel('reports/product_collection')
105
+ ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
106
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
107
+ ->addViewsCount()
108
+ ->addMinimalPrice()
109
+ ->addTaxPercents()
110
+ ->addStoreFilter()
111
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID));
112
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
113
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
114
+ // getNumProduct
115
+ $collection->setPageSize($this->getNumProduct()); // require before foreach
116
+ if($this->useFlatCatalogProduct())
117
+ {
118
+ // fix error mat image vs name while Enable useFlatCatalogProduct
119
+ foreach ($collection as $product)
120
+ {
121
+ $productId = $product->_data['entity_id'];
122
+ $_product = Mage::getModel('catalog/product')->load($productId); //Product ID
123
+ $product->_data['name'] = $_product->getName();
124
+ $product->_data['thumbnail'] = $_product->getThumbnail();
125
+ $product->_data['small_image'] = $_product->getSmallImage();
126
+ }
127
+ }
128
+ return $collection;
129
+ }
130
+ public function getNewProducts() {
131
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
132
+ $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
133
+ $collection = Mage::getResourceModel('catalog/product_collection')
134
+ ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
135
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
136
+ ->addAttributeToSelect('*') //Need this so products show up correctly in product listing
137
+ ->addAttributeToFilter('news_from_date', array('or'=> array(
138
+ 0 => array('date' => true, 'to' => $todayDate),
139
+ 1 => array('is' => new Zend_Db_Expr('null')))
140
+ ), 'left')
141
+ ->addAttributeToFilter('news_to_date', array('or'=> array(
142
+ 0 => array('date' => true, 'from' => $todayDate),
143
+ 1 => array('is' => new Zend_Db_Expr('null')))
144
+ ), 'left')
145
+ ->addAttributeToFilter(
146
+ array(
147
+ array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
148
+ array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
149
+ )
150
+ )
151
+ ->addAttributeToSort('news_from_date', 'desc')
152
+ ->addMinimalPrice()
153
+ ->addTaxPercents()
154
+ ->addStoreFilter()
155
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID));
156
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
157
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
158
+ // getNumProduct
159
+ $collection->setPageSize($this->getNumProduct());
160
+ return $collection;
161
+ }
162
+ public function getRandomProducts() {
163
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
164
+ $collection = Mage::getResourceModel('catalog/product_collection')
165
+ ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
166
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
167
+ ->addMinimalPrice()
168
+ ->addTaxPercents()
169
+ ->addStoreFilter()
170
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID));
171
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
172
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
173
+ $collection->getSelect()->order('rand()');
174
+ // getNumProduct
175
+ $collection->setPageSize($this->getNumProduct());
176
+ return $collection;
177
+ }
178
+ public function getSaleProducts(){
179
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
180
+ $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
181
+ $collection = Mage::getResourceModel('catalog/product_collection')
182
+ ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
183
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
184
+ ->addAttributeToFilter('special_from_date', array('or'=> array(
185
+ 0 => array('date' => true, 'to' => $todayDate),
186
+ 1 => array('is' => new Zend_Db_Expr('null')))
187
+ ), 'left')
188
+ ->addAttributeToFilter('special_to_date', array('or'=> array(
189
+ 0 => array('date' => true, 'from' => $todayDate),
190
+ 1 => array('is' => new Zend_Db_Expr('null')))
191
+ ), 'left')
192
+ ->addAttributeToFilter(
193
+ array(
194
+ array('attribute' => 'special_from_date', 'is'=>new Zend_Db_Expr('not null')),
195
+ array('attribute' => 'special_to_date', 'is'=>new Zend_Db_Expr('not null'))
196
+ )
197
+ )
198
+ ->addAttributeToSort('special_to_date','desc')
199
+ ->addTaxPercents()
200
+ ->addStoreFilter()
201
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID));
202
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
203
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
204
+ // get Sale off
205
+ foreach ($collection as $key => $product) {
206
+ if($product->getSpecialPrice() == '') $collection->removeItemByKey($key); // remove product not set SpecialPrice
207
+ if($product->getSpecialPrice() && $product->getSpecialPrice() >= $product->getPrice())
208
+ {
209
+ $collection->removeItemByKey($key); // remove product price increase
210
+ }
211
+ }
212
+ // getNumProduct
213
+ $collection->setPageSize($this->getNumProduct());
214
+ return $collection;
215
+ }
216
+ public function getSpecialProducts() {
217
+ $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
218
+ $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
219
+ $collection = Mage::getResourceModel('catalog/product_collection')
220
+ ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
221
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
222
+ ->addAttributeToFilter('special_from_date', array('or'=> array(
223
+ 0 => array('date' => true, 'to' => $todayDate),
224
+ 1 => array('is' => new Zend_Db_Expr('null')))
225
+ ), 'left')
226
+ ->addAttributeToFilter('special_to_date', array('or'=> array(
227
+ 0 => array('date' => true, 'from' => $todayDate),
228
+ 1 => array('is' => new Zend_Db_Expr('null')))
229
+ ), 'left')
230
+ ->addAttributeToFilter(
231
+ array(
232
+ array('attribute' => 'special_from_date', 'is'=>new Zend_Db_Expr('not null')),
233
+ array('attribute' => 'special_to_date', 'is'=>new Zend_Db_Expr('not null'))
234
+ )
235
+ )
236
+ ->addAttributeToSort('special_to_date','desc')
237
+ ->addTaxPercents()
238
+ ->addStoreFilter()
239
+ ->addAttributeToFilter('category_id', array('in' => $_rootcatID));
240
+ Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
241
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);
242
+ // CategoryFilter
243
+ $Category = Mage::getModel('catalog/category')->load($this->getCategoryId());
244
+ $collection->addCategoryFilter($Category);
245
+ // getNumProduct
246
+ $collection->setPageSize($this->getNumProduct());
247
+ return $collection;
248
+ }
249
+ }
app/code/local/Sulopa/Producttabs/Block/Producttabs.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Block_Producttabs extends Mage_Core_Block_Template
3
+ {
4
+ public function getProducttabsCfg($cfg)
5
+ {
6
+ return Mage::helper('producttabs')->getProducttabsCfg($cfg);
7
+ }
8
+ public function getProductCfg($cfg)
9
+ {
10
+ return Mage::helper('producttabs')->getProductCfg($cfg);
11
+ }
12
+ public function getTypeDefault()
13
+ {
14
+ $cfg = $this->getProductCfg('product_type');
15
+ $cfg = explode(',', $cfg);
16
+ return $cfg[0];
17
+ }
18
+ public function sortTabs()
19
+ {
20
+ return $this->getProducttabsCfg('sort_name');
21
+ }
22
+ public function getTabs()
23
+ {
24
+ $types = Mage::getSingleton("producttabs/system_config_type")->toOptionArray();
25
+ $cfg = $this->getProductCfg('product_type');
26
+ $cfg = explode(',', $cfg);
27
+ $tabs = array();
28
+ foreach ($types as $type) {
29
+ if(in_array($type['value'], $cfg)){
30
+ $tabs[$type['value']] = $type['label'];
31
+ }
32
+ }
33
+ return $tabs;
34
+ }
35
+ public function setBxslider()
36
+ {
37
+ $auto = (int) $this->getProducttabsCfg('auto');
38
+ $speed = (int) $this->getProducttabsCfg('speed');
39
+ $video = (int) $this->getProducttabsCfg('video');
40
+ $pager = (int) $this->getProducttabsCfg('pager');
41
+ $vertical = (int) $this->getProducttabsCfg('vertical');
42
+ $minSlides = (int) $this->getProducttabsCfg('minslides');
43
+ $maxSlides = (int) $this->getProducttabsCfg('maxslides');
44
+ $moveSlides = (int) $this->getProducttabsCfg('moveslides');
45
+ $startSlide = (int) $this->getProducttabsCfg('startslide');
46
+ $slideWidth = (int) $this->getProducttabsCfg('slidewidth');
47
+ $slideMargin = (int) $this->getProducttabsCfg('slidemargin');
48
+ $script = 'infiniteLoop:false,';
49
+ if($auto) $script .= "auto: $auto,";
50
+ if($speed) $script .= "speed: $speed,";
51
+ if(!$pager) $script .= "pager: $pager,";
52
+ if($vertical) $script .= "mode: 'vertical',";
53
+ if($minSlides) $script .= "minSlides: $minSlides,";
54
+ if($maxSlides) $script .= "maxSlides: $maxSlides,";
55
+ if($moveSlides) $script .= "moveSlides: $moveSlides,";
56
+ if($startSlide) $script .= "startSlide: $startSlide,";
57
+ if($slideWidth) $script .= "slideWidth: $slideWidth,";
58
+ if($slideMargin) $script .= "slideMargin: $slideMargin,";
59
+ return $script;
60
+ }
61
+ }
app/code/local/Sulopa/Producttabs/Helper/Data.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Helper_Data extends Mage_Core_Helper_Abstract
3
+ {
4
+ public function getProducttabsCfg($cfg)
5
+ {
6
+ $config = Mage::getStoreConfig('producttabs/producttabs_config');
7
+ if(isset($config[$cfg])) return $config[$cfg];
8
+ }
9
+ public function getProductCfg($cfg)
10
+ {
11
+ $config = Mage::getStoreConfig('producttabs/product_show');
12
+ if(isset($config[$cfg])) return $config[$cfg];
13
+ }
14
+ }
app/code/local/Sulopa/Producttabs/Model/Resource/Product/Bestseller.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Model_Resource_Product_Bestseller extends Mage_Reports_Model_Resource_Product_Collection
3
+ {
4
+ public function addOrderedQty($from = '', $to = '') // rewirte method addOrderedQty
5
+ {
6
+ $adapter = $this->getConnection();
7
+ $orderTableAliasName = $adapter->quoteIdentifier('order');
8
+ $orderJoinCondition = array(
9
+ $orderTableAliasName . '.entity_id = order_items.order_id',
10
+ $adapter->quoteInto("{$orderTableAliasName}.state <> ?",
11
+ Mage_Sales_Model_Order::STATE_CANCELED),
12
+ );
13
+ $productJoinCondition = array(
14
+ 'e.entity_id = T1.final_product_id',
15
+ $adapter->quoteInto('e.entity_type_id = ?',
16
+ $this->getProductEntityTypeId())
17
+ );
18
+ if ($from != '' && $to != '')
19
+ {
20
+ $fieldName = $orderTableAliasName . '.created_at';
21
+ $orderJoinCondition[] = $this->_prepareBetweenSql($fieldName, $from, $to);
22
+ }
23
+ $subSelect = $this->getSelect()->reset()
24
+ ->from( array('order_items' => $this->getTable('sales/order_item')),
25
+ array( 'qty_ordered',
26
+ 'name',
27
+ 'final_product_id' => new Zend_Db_Expr(
28
+ "IF(parent_id IS NOT NULL AND visibility != " . Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH . ", parent_id, order_items.product_id)"
29
+ ),
30
+ )
31
+ )
32
+ ->joinInner(array('order' => $this->getTable('sales/order')),
33
+ implode(' AND ', $orderJoinCondition),
34
+ array()
35
+ )
36
+ ->joinLeft( array('cpr' => $this->getTable('catalog/product_relation')),
37
+ 'cpr.child_id = order_items.product_id',
38
+ array( 'parent_id',)
39
+ )
40
+ ->joinLeft( array('cat_index' => $this->getTable('catalog/category_product_index')),
41
+ 'cat_index.product_id = order_items.product_id',
42
+ array( 'store_id', 'visibility', 'category_id', )
43
+ )
44
+ ->where('parent_item_id IS NULL')
45
+ ->where('cat_index.store_id = ?',
46
+ Mage::app()->getStore()->getId()
47
+ )
48
+ ->where('category_id = ?',
49
+ Mage::app()->getStore()->getRootCategoryId()
50
+ );
51
+ $subSelectString = '(' . $subSelect->__toString() . ')';
52
+ $this->getSelect()->reset()
53
+ ->from( array('T1' => new Zend_Db_Expr($subSelectString)),
54
+ array( 'ordered_qty' => 'SUM(qty_ordered)',
55
+ 'order_items_name' => 'name',
56
+ 'entity_id' => 'final_product_id',
57
+ )
58
+ )
59
+ ->joinLeft( array('e' => $this->getProductEntityTableName()),
60
+ implode(' AND ', $productJoinCondition),
61
+ array( 'entity_type_id' => 'e.entity_type_id',
62
+ 'attribute_set_id' => 'e.attribute_set_id',
63
+ 'type_id' => 'e.type_id',
64
+ 'sku' => 'e.sku',
65
+ 'has_options' => 'e.has_options',
66
+ 'required_options' => 'e.required_options',
67
+ 'created_at' => 'e.created_at',
68
+ 'updated_at' => 'e.updated_at' )
69
+ )
70
+ ->group('final_product_id');
71
+ return $this;
72
+ }
73
+ }
app/code/local/Sulopa/Producttabs/Model/System/Config/Action.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Model_System_Config_Action
3
+ {
4
+ public function toOptionArray()
5
+ {
6
+ return array(
7
+ array('value'=>'0', 'label'=>Mage::helper('adminhtml')->__('None')),
8
+ array('value'=>'cart', 'label'=>Mage::helper('adminhtml')->__('Add to Cart')),
9
+ array('value'=>'compare', 'label'=>Mage::helper('adminhtml')->__('Add to Compare')),
10
+ array('value'=>'wishlist', 'label'=>Mage::helper('adminhtml')->__('Wishlist')),
11
+ array('value'=>'cart,compare', 'label'=>Mage::helper('adminhtml')->__('Cart with Compare')),
12
+ array('value'=>'cart,wishlist', 'label'=>Mage::helper('adminhtml')->__('Cart with Wishlist')),
13
+ array('value'=>'compare,wishlist', 'label'=>Mage::helper('adminhtml')->__('Compare with Wishlist')),
14
+ array('value'=>'compare,cart,wishlist', 'label'=>Mage::helper('adminhtml')->__('Display all')),
15
+ );
16
+ }
17
+ }
app/code/local/Sulopa/Producttabs/Model/System/Config/Sort.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Model_System_Config_Sort
3
+ {
4
+ public function toOptionArray()
5
+ {
6
+ return array(
7
+ array('value'=>'asc', 'label'=>Mage::helper('adminhtml')->__('Ascending')),
8
+ array('value'=>'desc', 'label'=>Mage::helper('adminhtml')->__('Descending'))
9
+ );
10
+ }
11
+ }
app/code/local/Sulopa/Producttabs/Model/System/Config/Type.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Model_System_Config_Type
3
+ {
4
+ public function toOptionArray()
5
+ {
6
+ return array(
7
+ array('value' => 'bestseller', 'label'=>Mage::helper('adminhtml')->__('Bestseller')),
8
+ array('value' => 'featured', 'label'=>Mage::helper('adminhtml')->__('Featured Products')),
9
+ array('value' => 'mostviewed', 'label'=>Mage::helper('adminhtml')->__('Most Viewed')),
10
+ array('value' => 'newproduct', 'label'=>Mage::helper('adminhtml')->__('New Products')),
11
+ array('value' => 'random', 'label'=>Mage::helper('adminhtml')->__('Random Products')),
12
+ array('value' => 'saleproduct', 'label'=>Mage::helper('adminhtml')->__('Sale Products')),
13
+ );
14
+ }
15
+ }
app/code/local/Sulopa/Producttabs/controllers/Adminhtml/FeaturedController.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_Adminhtml_FeaturedController extends Mage_Adminhtml_Controller_Action
3
+ {
4
+ protected function _initProduct()
5
+ {
6
+ $product = Mage::getModel('catalog/product')
7
+ ->setStoreId($this->getRequest()->getParam('store', 0));
8
+ if ($setId = (int) $this->getRequest()->getParam('set')) {
9
+ $product->setAttributeSetId($setId);
10
+ }
11
+ if ($typeId = $this->getRequest()->getParam('type')) {
12
+ $product->setTypeId($typeId);
13
+ }
14
+ $product->setData('_edit_mode', true);
15
+ Mage::register('product', $product);
16
+ return $product;
17
+ }
18
+ public function indexAction()
19
+ {
20
+ $this->_initProduct();
21
+ $this->loadLayout()->_setActiveMenu('producttabs/featuredproduct');
22
+ $this->_addContent($this->getLayout()->createBlock('producttabs/adminhtml_edit'));
23
+ $this->renderLayout();
24
+ }
25
+ public function gridAction()
26
+ {
27
+ $this->getResponse()->setBody(
28
+ $this->getLayout()->createBlock('producttabs/adminhtml_edit_grid')->toHtml()
29
+ );
30
+ }
31
+ public function saveAction()
32
+ {
33
+ $data = $this->getRequest()->getPost();
34
+ $collection = Mage::getModel('catalog/product')->getCollection();
35
+ $storeId = $this->getRequest()->getParam('store', 0);
36
+ parse_str($data['featured_products'], $featured_products);
37
+ $collection->addIdFilter(array_keys($featured_products));
38
+ try {
39
+ foreach($collection->getItems() as $product)
40
+ {
41
+ $product->setData('su_featured_product',$featured_products[$product->getEntityId()]);
42
+ $product->setStoreId($storeId);
43
+ $product->save();
44
+ }
45
+ $this->_getSession()->addSuccess($this->__('Featured product was successfully saved.'));
46
+ $this->_redirect('*/*/index', array('store'=> $this->getRequest()->getParam('store')));
47
+ }catch (Exception $e){
48
+ $this->_getSession()->addError($e->getMessage());
49
+ $this->_redirect('*/*/index', array('store'=> $this->getRequest()->getParam('store')));
50
+ }
51
+ }
52
+ protected function _validateSecretKey()
53
+ {
54
+ return true;
55
+ }
56
+ }
app/code/local/Sulopa/Producttabs/controllers/IndexController.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Producttabs_IndexController extends Mage_Core_Controller_Front_Action
3
+ {
4
+ public function resultAction()
5
+ {
6
+ if ($this->getRequest()->isAjax()) {
7
+ $this->loadLayout();
8
+ $this->renderLayout();
9
+ return $this;
10
+ }
11
+ }
12
+ }
app/code/local/Sulopa/Producttabs/etc/adminhtml.xml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <admin>
6
+ <children>
7
+ <system>
8
+ <children>
9
+ <config>
10
+ <children>
11
+ <producttabs>
12
+ <title>Product Tabs</title>
13
+ </producttabs>
14
+ </children>
15
+ </config>
16
+ </children>
17
+ </system>
18
+ </children>
19
+ </admin>
20
+ </resources>
21
+ </acl>
22
+ </config>
app/code/local/Sulopa/Producttabs/etc/config.xml ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sulopa_Producttabs>
5
+ <version>0.1.0</version>
6
+ </Sulopa_Producttabs>
7
+ </modules>
8
+ <frontend>
9
+ <routers>
10
+ <producttabs>
11
+ <use>standard</use>
12
+ <args>
13
+ <module>Sulopa_Producttabs</module>
14
+ <frontName>producttabs</frontName>
15
+ </args>
16
+ </producttabs>
17
+ </routers>
18
+ <layout>
19
+ <updates>
20
+ <producttabs>
21
+ <file>producttabs.xml</file>
22
+ </producttabs>
23
+ </updates>
24
+ </layout>
25
+ </frontend>
26
+ <admin>
27
+ <routers>
28
+ <producttabs>
29
+ <use>admin</use>
30
+ <args>
31
+ <module>Sulopa_Producttabs</module>
32
+ <frontName>producttabs</frontName>
33
+ </args>
34
+ </producttabs>
35
+ <adminhtml>
36
+ <args>
37
+ <modules>
38
+ <productslide before="Mage_Adminhtml">Sulopa_Producttabs_Adminhtml</productslide>
39
+ </modules>
40
+ </args>
41
+ </adminhtml>
42
+ </routers>
43
+ </admin>
44
+ <adminhtml>
45
+ <acl>
46
+ <resources>
47
+ <all>
48
+ <title>Allow Everything</title>
49
+ </all>
50
+ <admin>
51
+ <children>
52
+ <Sulopa_Producttabs>
53
+ <title>Producttabs Module</title>
54
+ <sort_order>10</sort_order>
55
+ </Sulopa_Producttabs>
56
+ </children>
57
+ </admin>
58
+ </resources>
59
+ </acl>
60
+ <layout>
61
+ <updates>
62
+ <producttabs>
63
+ <file>producttabs.xml</file>
64
+ </producttabs>
65
+ </updates>
66
+ </layout>
67
+ </adminhtml>
68
+ <global>
69
+ <models>
70
+ <producttabs>
71
+ <class>Sulopa_Producttabs_Model</class>
72
+ <resourceModel>producttabs_resource</resourceModel>
73
+ </producttabs>
74
+ <producttabs_resource>
75
+ <class>Sulopa_Producttabs_Model_Resource</class>
76
+ </producttabs_resource>
77
+ </models>
78
+ <resources>
79
+ <producttabs_setup>
80
+ <setup>
81
+ <module>Sulopa_Producttabs</module>
82
+ <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
83
+ </setup>
84
+ <connection>
85
+ <use>core_setup</use>
86
+ </connection>
87
+ </producttabs_setup>
88
+ <producttabs_write>
89
+ <connection>
90
+ <use>core_write</use>
91
+ </connection>
92
+ </producttabs_write>
93
+ <producttabs_read>
94
+ <connection>
95
+ <use>core_read</use>
96
+ </connection>
97
+ </producttabs_read>
98
+ </resources>
99
+ <blocks>
100
+ <producttabs>
101
+ <class>Sulopa_Producttabs_Block</class>
102
+ </producttabs>
103
+ </blocks>
104
+ <helpers>
105
+ <producttabs>
106
+ <class>Sulopa_Producttabs_Helper</class>
107
+ </producttabs>
108
+ </helpers>
109
+ </global>
110
+ <default>
111
+ <producttabs>
112
+ <producttabs_config>
113
+ <enabled>1</enabled>
114
+ <jquery>1</jquery>
115
+ <title>Product Tabs</title>
116
+ <auto>0</auto>
117
+ <speed>3000</speed>
118
+ <minslides>3</minslides>
119
+ <maxslides>5</maxslides>
120
+ <sort_name>asc</sort_name>
121
+ <slidewidth>270</slidewidth>
122
+ <width_thumbnail>272</width_thumbnail>
123
+ <height_thumbnail>272</height_thumbnail> <width_large_thumbnail>569</width_large_thumbnail> <height_large_thumbnail>569</height_large_thumbnail>
124
+ <product_review>0</product_review>
125
+ </producttabs_config>
126
+ <featured_product>
127
+ <title>Featured Products</title>
128
+ <heading_block>Featured Products</heading_block>
129
+ <enable_featuredproduct>1</enable_featuredproduct>
130
+ </featured_product>
131
+ <product_show>
132
+ <product_type>featured,bestseller</product_type>
133
+ <product_number>10</product_number>
134
+ <product_action>compare,cart,wishlist</product_action>
135
+ </product_show>
136
+ </producttabs>
137
+ </default>
138
+ </config>
app/code/local/Sulopa/Producttabs/etc/system.xml ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <sulopa translate="label">
5
+ <label>Sulopa Extension</label>
6
+ <sort_order>300</sort_order>
7
+ </sulopa>
8
+ </tabs>
9
+ <sections>
10
+ <producttabs translate="label" module="producttabs">
11
+ <label>Product Tabs</label>
12
+ <tab>sulopa</tab>
13
+ <sort_order>200</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
+ <producttabs_config translate="label">
19
+ <label>Product Tabs Config</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
+ <enabled translate="label comment">
27
+ <label>Enabled: </label>
28
+ <frontend_type>select</frontend_type>
29
+ <source_model>
30
+ adminhtml/system_config_source_yesno
31
+ </source_model>
32
+ <sort_order>0</sort_order>
33
+ <show_in_default>1</show_in_default>
34
+ <show_in_website>1</show_in_website>
35
+ <show_in_store>1</show_in_store>
36
+ </enabled>
37
+ <auto translate="label comment">
38
+ <label>Auto slide: </label>
39
+ <frontend_type>select</frontend_type>
40
+ <source_model>
41
+ adminhtml/system_config_source_yesno
42
+ </source_model>
43
+ <sort_order>1</sort_order>
44
+ <show_in_default>1</show_in_default>
45
+ <show_in_website>1</show_in_website>
46
+ <show_in_store>1</show_in_store>
47
+ </auto>
48
+ <title translate="label">
49
+ <label>Title: </label>
50
+ <frontend_type>text</frontend_type>
51
+ <sort_order>2</sort_order>
52
+ <show_in_default>1</show_in_default>
53
+ <show_in_website>1</show_in_website>
54
+ <show_in_store>1</show_in_store>
55
+ </title>
56
+ <speed translate="label">
57
+ <label>Slide Speed: </label>
58
+ <frontend_type>text</frontend_type>
59
+ <sort_order>16></sort_order>
60
+ <show_in_default>1</show_in_default>
61
+ <show_in_store>1</show_in_store>
62
+ <show_in_website>1</show_in_website>
63
+ </speed>
64
+ <minslides translate="label">
65
+ <label>Min Item Slider: </label>
66
+ <frontend_type>text</frontend_type>
67
+ <sort_order>18</sort_order>
68
+ <show_in_default>1</show_in_default>
69
+ <show_in_website>1</show_in_website>
70
+ <show_in_store>1</show_in_store>
71
+ </minslides>
72
+ <maxslides translate="label">
73
+ <label>Max Item Slider: </label>
74
+ <frontend_type>text</frontend_type>
75
+ <sort_order>20</sort_order>
76
+ <show_in_default>1</show_in_default>
77
+ <show_in_website>1</show_in_website>
78
+ <show_in_store>1</show_in_store>
79
+ </maxslides>
80
+ <pager translate="label comment">
81
+ <label>Show navigation control: </label>
82
+ <frontend_type>select</frontend_type>
83
+ <source_model>
84
+ adminhtml/system_config_source_yesno
85
+ </source_model>
86
+ <sort_order>21</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
+ </pager>
91
+ <slidewidth translate="label">
92
+ <label>Width of Item: </label>
93
+ <frontend_type>text</frontend_type>
94
+ <sort_order>27</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
+ </slidewidth>
99
+ <width_thumbnail translate="label">
100
+ <label>Width of Thumbnail: </label>
101
+ <frontend_type>text</frontend_type>
102
+ <sort_order>28</sort_order>
103
+ <show_in_default>1</show_in_default>
104
+ <show_in_website>1</show_in_website>
105
+ <show_in_store>1</show_in_store>
106
+ </width_thumbnail>
107
+ <height_thumbnail translate="label">
108
+ <label>Height of Thumbnail: </label>
109
+ <frontend_type>text</frontend_type>
110
+ <sort_order>30</sort_order>
111
+ <show_in_default>1</show_in_default>
112
+ <show_in_website>1</show_in_website>
113
+ <show_in_store>1</show_in_store>
114
+ </height_thumbnail> <width_large_thumbnail translate="label"> <label>Width (Large) of Thumbnail: </label> <frontend_type>text</frontend_type> <sort_order>31</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </width_large_thumbnail> <height_large_thumbnail translate="label"> <label>Height (Large Item) of Thumbnail: </label> <frontend_type>text</frontend_type> <sort_order>32</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </height_large_thumbnail>
115
+ <product_review>
116
+ <label>Review</label>
117
+ <frontend_type>select</frontend_type>
118
+ <source_model>
119
+ adminhtml/system_config_source_yesno
120
+ </source_model>
121
+ <sort_order>33</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
+ </product_review>
126
+ </fields>
127
+ </producttabs_config>
128
+ <featured_product translate="label">
129
+ <label>Featured Product Setting</label>
130
+ <frontend_type>text</frontend_type>
131
+ <sort_order>3</sort_order>
132
+ <show_in_default>1</show_in_default>
133
+ <show_in_website>1</show_in_website>
134
+ <show_in_store>1</show_in_store>
135
+ <fields>
136
+ <enable_featuredproduct translate="label">
137
+ <label>Enable Featured Products</label>
138
+ <frontend_type>select</frontend_type>
139
+ <source_model>adminhtml/system_config_source_yesno</source_model>
140
+ <sort_order>0</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
+ </enable_featuredproduct>
145
+ <title translate="label comment">
146
+ <label>Title</label>
147
+ <frontend_type>text</frontend_type>
148
+ <sort_order>5</sort_order>
149
+ <show_in_default>1</show_in_default>
150
+ <show_in_website>1</show_in_website>
151
+ <show_in_store>1</show_in_store>
152
+ </title>
153
+ </fields>
154
+ </featured_product>
155
+ <product_show>
156
+ <label>Product show</label>
157
+ <frontend_type>text</frontend_type>
158
+ <sort_order>10</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
+ <fields>
163
+ <product_type translate="label comment">
164
+ <label>Show Type Product: </label>
165
+ <frontend_type>multiselect</frontend_type>
166
+ <source_model>
167
+ producttabs/system_config_type
168
+ </source_model>
169
+ <sort_order>0</sort_order>
170
+ <show_in_default>1</show_in_default>
171
+ <show_in_website>1</show_in_website>
172
+ <show_in_store>1</show_in_store>
173
+ </product_type>
174
+ <product_number translate="label">
175
+ <label>Number Product Show: </label>
176
+ <frontend_type>text</frontend_type>
177
+ <sort_order>20</sort_order>
178
+ <show_in_default>1</show_in_default>
179
+ <show_in_website>1</show_in_website>
180
+ <show_in_store>1</show_in_store>
181
+ </product_number>
182
+ <product_action translate="label">
183
+ <label>Show Action Product: </label>
184
+ <frontend_type>select</frontend_type>
185
+ <source_model>producttabs/system_config_action</source_model>
186
+ <sort_order>40</sort_order>
187
+ <show_in_default>1</show_in_default>
188
+ <show_in_website>1</show_in_website>
189
+ <show_in_store>1</show_in_store>
190
+ </product_action>
191
+ </fields>
192
+ </product_show>
193
+ </groups>
194
+ </producttabs>
195
+ </sections>
196
+ </config>
app/code/local/Sulopa/Producttabs/sql/producttabs_setup/mysql4-install-0.1.0.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $this->startSetup();
3
+ $this->addAttribute('catalog_product', 'su_featured_product', array(
4
+ 'group' => 'General',
5
+ 'type' => 'int',
6
+ 'backend' => '',
7
+ 'frontend' => '',
8
+ 'label' => 'Featured product',
9
+ 'input' => 'boolean',
10
+ 'class' => '',
11
+ 'source' => '',
12
+ 'is_global', Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
13
+ 'visible' => true,
14
+ 'required' => false,
15
+ 'user_defined' => false,
16
+ 'default' => '0',
17
+ 'searchable' => false,
18
+ 'filterable' => false,
19
+ 'comparable' => false,
20
+ 'visible_on_front' => false,
21
+ 'unique' => false,
22
+ 'apply_to' => 'simple,configurable,virtual,bundle,downloadable',
23
+ 'is_configurable' => false,
24
+ 'used_in_product_listing', '1'
25
+ ));
26
+ $this->endSetup();
app/etc/modules/Sulopa_Fbfanbox.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sulopa_Fbfanbox>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ </Sulopa_Fbfanbox>
8
+ </modules>
9
+ </config>
js/tinybox/tinybox.js ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var TINY={};
2
+
3
+ function T$(i){return document.getElementById(i)}
4
+
5
+ TINY.box=function(){
6
+ var p,m,b,fn,ic,iu,iw,ih,ia,f=0;
7
+ return{
8
+ show:function(c,u,w,h,a,t){
9
+ if(!f){
10
+ p=document.createElement('div'); p.id='tinybox';
11
+ m=document.createElement('div'); m.id='tinymask';
12
+ b=document.createElement('div'); b.id='tinycontent';
13
+ document.body.appendChild(m); document.body.appendChild(p); p.appendChild(b);
14
+ m.onclick=TINY.box.hide; window.onresize=TINY.box.resize; f=1
15
+ }
16
+ if(!a&&!u){
17
+ p.style.width=w?w+'px':'auto'; p.style.height=h?h+'px':'auto';
18
+ p.style.backgroundImage='none'; b.innerHTML=c
19
+ }else{
20
+ b.style.display='none'; p.style.width=p.style.height='100px'
21
+ }
22
+ this.mask();
23
+ ic=c; iu=u; iw=w; ih=h; ia=a; this.alpha(m,1,80,3);
24
+ if(t){setTimeout(function(){TINY.box.hide()},1000*t)}
25
+ },
26
+ fill:function(c,u,w,h,a){
27
+ if(u){
28
+ p.style.backgroundImage='';
29
+ var x=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
30
+ x.onreadystatechange=function(){
31
+ if(x.readyState==4&&x.status==200){TINY.box.psh(x.responseText,w,h,a)}
32
+ };
33
+ x.open('GET',c,1); x.send(null)
34
+ }else{
35
+ this.psh(c,w,h,a)
36
+ }
37
+ },
38
+ psh:function(c,w,h,a){
39
+ if(a){
40
+ if(!w||!h){
41
+ var x=p.style.width, y=p.style.height; b.innerHTML=c;
42
+ p.style.width=w?w+'px':''; p.style.height=h?h+'px':'';
43
+ b.style.display='';
44
+ w=parseInt(b.offsetWidth); h=parseInt(b.offsetHeight);
45
+ b.style.display='none'; p.style.width=x; p.style.height=y;
46
+ }else{
47
+ b.innerHTML=c
48
+ }
49
+ this.size(p,w,h)
50
+ }else{
51
+ p.style.backgroundImage='none'
52
+ }
53
+ },
54
+ hide:function(){
55
+ TINY.box.alpha(p,-1,0,3)
56
+ },
57
+ resize:function(){
58
+ TINY.box.pos(); TINY.box.mask()
59
+ },
60
+ mask:function(){
61
+ m.style.height=TINY.page.total(1)+'px';
62
+ m.style.width=''; m.style.width=TINY.page.total(0)+'px'
63
+ },
64
+ pos:function(){
65
+ var t=(TINY.page.height()/2)-(p.offsetHeight/2); t=t<10?10:t;
66
+ p.style.top=(t+TINY.page.top())+'px';
67
+ p.style.left=(TINY.page.width()/2)-(p.offsetWidth/2)+'px'
68
+ },
69
+ alpha:function(e,d,a){
70
+ clearInterval(e.ai);
71
+ if(d==1){
72
+ e.style.opacity=0; e.style.filter='alpha(opacity=0)';
73
+ e.style.display='block'; this.pos()
74
+ }
75
+ e.ai=setInterval(function(){TINY.box.ta(e,a,d)},20)
76
+ },
77
+ ta:function(e,a,d){
78
+ var o=Math.round(e.style.opacity*100);
79
+ if(o==a){
80
+ clearInterval(e.ai);
81
+ if(d==-1){
82
+ e.style.display='none';
83
+ e==p?TINY.box.alpha(m,-1,0,2):b.innerHTML=p.style.backgroundImage=''
84
+ }else{
85
+ e==m?this.alpha(p,1,100):TINY.box.fill(ic,iu,iw,ih,ia)
86
+ }
87
+ }else{
88
+ var n=Math.ceil((o+((a-o)*.5))); n=n==1?0:n;
89
+ e.style.opacity=n/100; e.style.filter='alpha(opacity='+n+')'
90
+ }
91
+ },
92
+ size:function(e,w,h){
93
+ e=typeof e=='object'?e:T$(e); clearInterval(e.si);
94
+ var ow=e.offsetWidth, oh=e.offsetHeight,
95
+ wo=ow-parseInt(e.style.width), ho=oh-parseInt(e.style.height);
96
+ var wd=ow-wo>w?0:1, hd=(oh-ho>h)?0:1;
97
+ e.si=setInterval(function(){TINY.box.ts(e,w,wo,wd,h,ho,hd)},20)
98
+ },
99
+ ts:function(e,w,wo,wd,h,ho,hd){
100
+ var ow=e.offsetWidth-wo, oh=e.offsetHeight-ho;
101
+ if(ow==w&&oh==h){
102
+ clearInterval(e.si); p.style.backgroundImage='none'; b.style.display='block'
103
+ }else{
104
+ if(ow!=w){var n=ow+((w-ow)*.5); e.style.width=wd?Math.ceil(n)+'px':Math.floor(n)+'px'}
105
+ if(oh!=h){var n=oh+((h-oh)*.5); e.style.height=hd?Math.ceil(n)+'px':Math.floor(n)+'px'}
106
+ this.pos()
107
+ }
108
+ }
109
+ }
110
+ }();
111
+
112
+ TINY.page=function(){
113
+ return{
114
+ top:function(){return document.documentElement.scrollTop||document.body.scrollTop},
115
+ width:function(){return self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},
116
+ height:function(){return self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},
117
+ total:function(d){
118
+ var b=document.body, e=document.documentElement;
119
+ return d?Math.max(Math.max(b.scrollHeight,e.scrollHeight),Math.max(b.clientHeight,e.clientHeight)):
120
+ Math.max(Math.max(b.scrollWidth,e.scrollWidth),Math.max(b.clientWidth,e.clientWidth))
121
+ }
122
+ }
123
+ }();
124
+
125
+
126
+
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>facebook-mag-ex</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Fanbox is a free extension that enables you to show a box of Fanpage on your site.</summary>
10
+ <description>Facebook is the most popular social networking site these days. To sell more products and connect to network citizens, many companies, organizations and stores have created their own Facebook fan page. But how to attract a lot of facebook users to join you? We would like to introduce an easy way to achieve that goal; that is using our free Magento extension Facebook fanbox. The fanbox of your Facebook fanpage will appear right in your website, enabling visitors to click &#x201C;like&#x201D; to become a fan and keep up with your store&#x2019;s updates.</description>
11
+ <notes>Version 1.0.0</notes>
12
+ <authors><author><name>Sulopa Sulotion</name><user>sulopa</user><email>info@sulopa.com</email></author></authors>
13
+ <date>2015-08-03</date>
14
+ <time>08:01:41</time>
15
+ <contents><target name="magelocal"><dir name="Sulopa"><dir name="Fbfanbox"><dir name="Block"><file name="Fbfanbox.php" hash="76bf6e399d86304dc08c3336fdd8899d"/></dir><dir name="Helper"><file name="Data.php" hash="733b5deccba10fc896fb28176c763889"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8c1436ed4c187e1f266fdb831edd0505"/><file name="config.xml" hash="0ea0f3ff50005950457bdb2e5c4031fc"/><file name="system.xml" hash="d4b16877368ebff6fd5fd42383f109b9"/></dir><dir name="sql"><dir name="fbfanbox_setup"><file name="mysql4-install-0.1.0.php" hash="a3c7f4644d12a2696f421b8d1d86e548"/></dir></dir></dir><dir name="Featuredproduct"><dir name="Block"><file name="Featuredproduct.php" hash="f17bae730adba396eaab630fa6552ef2"/></dir><dir name="Helper"><file name="Data.php" hash="76d53ff0206ecc190a225be4eddc941a"/></dir><dir name="Model"><dir name="Config"><file name="Direction.php" hash="374cbe2ef865efe0a6864475cb0a8aae"/><file name="Sort.php" hash="6483687753647d19a9cc8010e1cb44d3"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="3a9946ab6f70c3315a78f7f624d77f55"/><file name="config.xml" hash="a59c2a674ff1d23ccad409a032e72840"/><file name="system.xml" hash="082315def4910781d3de26a560d67368"/></dir><dir name="sql"><dir name="featuredproduct_setup"><file name="mysql4-install-0.1.0.php" hash="a6edcbc6aff141cda4518363476adbfe"/></dir></dir></dir><dir name="Newssubscribers"><dir name="Block"><file name="Newssubscribers.php" hash="7e3e66ae5a9322598166c5e9e5f03fa4"/></dir><dir name="Helper"><file name="Data.php" hash="891bd04d325cbb13babcbbcc8cbd3c32"/></dir><dir name="Model"><file name="Subscriber.php" hash="88a254863e8d77cfc66073a2bf4a26c3"/><dir name="System"><dir name="Config"><file name="Coupon.php" hash="51bb46e223fb15980a182a67542b2b47"/><file name="Couponlist.php" hash="a327dfd388bd6c619633702f24f3c3b6"/><file name="Template.php" hash="a60ec6cef1593ea81b31f4d8c013a9a4"/></dir></dir></dir><dir name="controllers"><file name="SubscriberController.php" hash="d7f19c081ab70af849c6ff5368eb0478"/></dir><dir name="etc"><file name="adminhtml.xml" hash="60bc14247201f67f9ec06f7f6a7ddcf9"/><file name="config.xml" hash="f232e97cec9b9b754b9f15184e290758"/><file name="system.xml" hash="be13b69f577d4b844dd83a2d3d044c60"/></dir></dir><dir name="Producttabs"><dir name="Block"><dir name="Adminhtml"><dir name="Edit"><file name="Grid.php" hash="88eef9c023b26d11c8da411fd6775605"/><dir name="Renderer"><file name="Visibility.php" hash="fec7470ada4d065a37f6da7555666e24"/></dir></dir><file name="Edit.php" hash="6bfe4efc0d7902b6a20d2c5103799edb"/></dir><dir name="Product"><file name="List.php" hash="a496a8f6b37e0d5b0c88cd1b695b6d32"/></dir><file name="Producttabs.php" hash="6870b1b5b97a1f04f444d17978b5835b"/></dir><dir name="Helper"><file name="Data.php" hash="ad57074b2fdaaa044a6fc0c9807ae81d"/></dir><dir name="Model"><dir name="Resource"><dir name="Product"><file name="Bestseller.php" hash="10e631131fb2ea1d7956590b4394f601"/></dir></dir><dir name="System"><dir name="Config"><file name="Action.php" hash="c6fe0fecd5ae38b91bc95fe1dc7c64f2"/><file name="Sort.php" hash="484833d9e93c9ae9ee3fb22e998b3c48"/><file name="Type.php" hash="2a0511f6ebcef0f959ad23dd87754b04"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="FeaturedController.php" hash="9e7174afbb5b0a84c87920fa260be1aa"/></dir><file name="IndexController.php" hash="4d082fc5bb085e10661dfb3c7d16469b"/></dir><dir name="etc"><file name="adminhtml.xml" hash="dbe25da4cc537d318be3134aeb596781"/><file name="config.xml" hash="789aee3d805df7c7e7969f72526f2032"/><file name="system.xml" hash="9caf0fcc0d369d5cbfe3783c545563a7"/></dir><dir name="sql"><dir name="producttabs_setup"><file name="mysql4-install-0.1.0.php" hash="0a0bc915fc3022c8fd48dee6214e6434"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Sulopa_Fbfanbox.xml" hash="0f7dd5cbb14e44d7efb927beb73e4d02"/></dir></target><target name="mage"><dir name="js"><dir name="tinybox"><file name="tinybox.js" hash="2ca7fcb7fefc5e8d85887f3c6dc6e315"/></dir></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>