Modulesgarden_Base - Version 1.0.0

Version Notes

Initial Release

Download this release

Release Info

Developer ModulesGarden
Extension Modulesgarden_Base
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (59) hide show
  1. app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedmodulesgarden.php +41 -0
  2. app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedmodulesgardenthemes.php +41 -0
  3. app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedothers.php +41 -0
  4. app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedratio.php +64 -0
  5. app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Modulesgarden.php +35 -0
  6. app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Store.php +43 -0
  7. app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Twitter.php +37 -0
  8. app/code/community/Modulesgarden/Base/Helper/Data.php +39 -0
  9. app/code/community/Modulesgarden/Base/Model/Adminnotification/Inbox.php +39 -0
  10. app/code/community/Modulesgarden/Base/Model/Extension.php +141 -0
  11. app/code/community/Modulesgarden/Base/Model/Extension/Client.php +220 -0
  12. app/code/community/Modulesgarden/Base/Model/Mage.php +161 -0
  13. app/code/community/Modulesgarden/Base/Model/Observer.php +112 -0
  14. app/code/community/Modulesgarden/Base/Model/Resource/Extension.php +164 -0
  15. app/code/community/Modulesgarden/Base/Model/System/Config/Source/Notificationevents.php +45 -0
  16. app/code/community/Modulesgarden/Base/etc/adminhtml.xml +25 -0
  17. app/code/community/Modulesgarden/Base/etc/config.xml +90 -0
  18. app/code/community/Modulesgarden/Base/etc/system.xml +95 -0
  19. app/design/adminhtml/default/default/layout/modulesgardenbase.xml +10 -0
  20. app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedmodulesgarden.phtml +73 -0
  21. app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedmodulesgardenthemes.phtml +91 -0
  22. app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedothers.phtml +57 -0
  23. app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedratio.phtml +73 -0
  24. app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/store.phtml +75 -0
  25. app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/twitter.phtml +55 -0
  26. app/design/adminhtml/default/default/template/modulesgardenbase/widget/form.phtml +35 -0
  27. app/design/adminhtml/default/default/template/modulesgardenbase/widget/form/container.phtml +49 -0
  28. app/design/adminhtml/default/default/template/modulesgardenbase/widget/grid/container.phtml +42 -0
  29. app/design/adminhtml/default/default/template/modulesgardenbase/widget/tabs.phtml +56 -0
  30. app/etc/modules/Modulesgarden_Base.xml +9 -0
  31. package.xml +18 -0
  32. skin/adminhtml/base/default/modulesgardenbase/css/modulesgarden.css +339 -0
  33. skin/adminhtml/base/default/modulesgardenbase/img/arrows.png +0 -0
  34. skin/adminhtml/base/default/modulesgardenbase/img/arrows_both.png +0 -0
  35. skin/adminhtml/base/default/modulesgardenbase/img/arrows_down.png +0 -0
  36. skin/adminhtml/base/default/modulesgardenbase/img/arrows_down_dr.png +0 -0
  37. skin/adminhtml/base/default/modulesgardenbase/img/arrows_right.png +0 -0
  38. skin/adminhtml/base/default/modulesgardenbase/img/arrows_right_dr.png +0 -0
  39. skin/adminhtml/base/default/modulesgardenbase/img/arrows_up.png +0 -0
  40. skin/adminhtml/base/default/modulesgardenbase/img/icons/add_btn_icon.gif +0 -0
  41. skin/adminhtml/base/default/modulesgardenbase/img/icons/bkg_btn-close2.gif +0 -0
  42. skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_add-image_icon.gif +0 -0
  43. skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_add-widget_icon.gif +0 -0
  44. skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_go.gif +0 -0
  45. skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_save_icon.gif +0 -0
  46. skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_show-hide_icon.gif +0 -0
  47. skin/adminhtml/base/default/modulesgardenbase/img/icons/cancel_btn_icon.gif +0 -0
  48. skin/adminhtml/base/default/modulesgardenbase/img/icons/entry_edit_head_arrow_down.gif +0 -0
  49. skin/adminhtml/base/default/modulesgardenbase/img/icons/entry_edit_head_arrow_down2.gif +0 -0
  50. skin/adminhtml/base/default/modulesgardenbase/img/icons/entry_edit_head_arrow_up.gif +0 -0
  51. skin/adminhtml/base/default/modulesgardenbase/img/icons/error-msg.png +0 -0
  52. skin/adminhtml/base/default/modulesgardenbase/img/icons/error_msg_icon.gif +0 -0
  53. skin/adminhtml/base/default/modulesgardenbase/img/icons/icon_btn_add.gif +0 -0
  54. skin/adminhtml/base/default/modulesgardenbase/img/icons/module.png +0 -0
  55. skin/adminhtml/base/default/modulesgardenbase/img/icons/more_arrow.gif +0 -0
  56. skin/adminhtml/base/default/modulesgardenbase/img/icons/reload.png +0 -0
  57. skin/adminhtml/base/default/modulesgardenbase/img/icons/save_btn_icon.gif +0 -0
  58. skin/adminhtml/base/default/modulesgardenbase/img/mgcommerce-logo.png +0 -0
  59. skin/adminhtml/base/default/modulesgardenbase/img/modulesgarden.png +0 -0
app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedmodulesgarden.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-30, 12:01:48)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Block_Adminhtml_System_Config_Form_Fieldset_Installedmodulesgarden extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
30
+
31
+ protected $_template = 'modulesgardenbase/system/config/form/fieldset/installedmodulesgarden.phtml';
32
+
33
+ public function render(Varien_Data_Form_Element_Abstract $element) {
34
+ return $this->toHtml();
35
+ }
36
+
37
+ public function getExtensions(){
38
+ return Mage::getResourceModel('modulesgardenbase/extension')->getModulesgardenCollection();
39
+ }
40
+
41
+ }
app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedmodulesgardenthemes.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-30, 12:01:48)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Block_Adminhtml_System_Config_Form_Fieldset_Installedmodulesgardenthemes extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
30
+
31
+ protected $_template = 'modulesgardenbase/system/config/form/fieldset/installedmodulesgardenthemes.phtml';
32
+
33
+ public function render(Varien_Data_Form_Element_Abstract $element) {
34
+ return $this->toHtml();
35
+ }
36
+
37
+ public function getExtensions(){
38
+ return Mage::getResourceModel('modulesgardenbase/extension')->getModulesgardenCollection();
39
+ }
40
+
41
+ }
app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedothers.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-31, 10:30:00)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Block_Adminhtml_System_Config_Form_Fieldset_Installedothers extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
30
+
31
+ protected $_template = 'modulesgardenbase/system/config/form/fieldset/installedothers.phtml';
32
+
33
+ public function render(Varien_Data_Form_Element_Abstract $element) {
34
+ return $this->toHtml();
35
+ }
36
+
37
+ public function getExtensions(){
38
+ return Mage::getResourceModel('modulesgardenbase/extension')->getNonModulesgardenCollection();
39
+ }
40
+
41
+ }
app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Installedratio.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-31, 12:07:11)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Block_Adminhtml_System_Config_Form_Fieldset_Installedratio extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
30
+
31
+ protected $_template = 'modulesgardenbase/system/config/form/fieldset/installedratio.phtml';
32
+
33
+ protected $_calculated;
34
+
35
+ public function _construct() {
36
+ parent::_construct();
37
+
38
+ $this->_calculated = Mage::getModel('modulesgardenbase/mage')->calculateCustomization();
39
+ }
40
+
41
+ public function render(Varien_Data_Form_Element_Abstract $element) {
42
+ return $this->toHtml();
43
+ }
44
+
45
+ public function getRatio() {
46
+ return $this->_calculated['ratio'];
47
+ }
48
+
49
+ public function getRatioLabel() {
50
+ $labels = array_reverse(Modulesgarden_Base_Model_Mage::$ratioLabels, true);
51
+ $ratio = $this->getRatio();
52
+
53
+ foreach($labels as $minRatio => $label) {
54
+ if($ratio >= $minRatio) {
55
+ return Mage::helper('modulesgardenbase')->__($label);
56
+ }
57
+ }
58
+ }
59
+
60
+ public function getDebugString() {
61
+ return print_r($this->_calculated, true);
62
+ }
63
+
64
+ }
app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Modulesgarden.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-11-13, 12:00:32)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Block_Adminhtml_System_Config_Form_Fieldset_Modulesgarden extends Mage_Adminhtml_Block_System_Config_Form_Fieldset {
30
+
31
+ protected function _getFrontendClass($element){
32
+ return parent::_getFrontendClass($element) . ' modulesgarden_form_container';
33
+ }
34
+
35
+ }
app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Store.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-31, 13:02:39)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Block_Adminhtml_System_Config_Form_Fieldset_Store extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
30
+
31
+ protected $_template = 'modulesgardenbase/system/config/form/fieldset/store.phtml';
32
+
33
+ public function render(Varien_Data_Form_Element_Abstract $element) {
34
+ return $this->toHtml();
35
+ }
36
+
37
+ public function getExtensions() {
38
+ return Mage::getResourceModel('modulesgardenbase/extension')->getExtensionsObjectsFromModulesgardenCom(function($item) {
39
+ return $item->getPrice();
40
+ });
41
+ }
42
+
43
+ }
app/code/community/Modulesgarden/Base/Block/Adminhtml/System/Config/Form/Fieldset/Twitter.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-11-12, 14:00:46)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Block_Adminhtml_System_Config_Form_Fieldset_Twitter extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
30
+
31
+ protected $_template = 'modulesgardenbase/system/config/form/fieldset/twitter.phtml';
32
+
33
+ public function render(Varien_Data_Form_Element_Abstract $element) {
34
+ return $this->toHtml();
35
+ }
36
+
37
+ }
app/code/community/Modulesgarden/Base/Helper/Data.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-11-03, 08:13:58)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Helper_Data extends Mage_Core_Helper_Abstract {
30
+
31
+ public function arrayToBase64(array $array){
32
+ return base64_encode($this->arrayToString($array));
33
+ }
34
+
35
+ public function arrayToString(array $array){
36
+ return str_replace(array('Array',' '), array('',''), print_r($array, true));
37
+ }
38
+
39
+ }
app/code/community/Modulesgarden/Base/Model/Adminnotification/Inbox.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-11-12, 10:35:44)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Model_Adminnotification_Inbox extends Mage_AdminNotification_Model_Inbox {
30
+
31
+ public static function exists($title){
32
+ $resource = Mage::getSingleton('core/resource');
33
+ $sql = "SELECT 1 FROM ".$resource->getTableName('adminnotification_inbox')." WHERE title = :title";
34
+ return (bool)$resource->getConnection('core_read')->fetchOne($sql, array(
35
+ 'title' => $title
36
+ ));
37
+ }
38
+
39
+ }
app/code/community/Modulesgarden/Base/Model/Extension.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-30, 14:01:42)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ *
28
+ * @method string getName()
29
+ * @method string getActive()
30
+ * @method string getCodePool()
31
+ * @method string getDepends()
32
+ */
33
+ class Modulesgarden_Base_Model_Extension extends Varien_Object {
34
+
35
+ protected $_versionFileApplied = false;
36
+ protected $_remoteDetailsApplied = false;
37
+
38
+ public function getWikiUrl() {
39
+ $this->_applyVersionFileDetails();
40
+ return $this->getData('wiki_url');
41
+ }
42
+
43
+ public function getVersion() {
44
+ $this->_applyVersionFileDetails();
45
+ return $this->getData('version');
46
+ }
47
+
48
+ public function getFriendlyName() {
49
+ $this->_applyVersionFileDetails();
50
+ return $this->getData('friendly_name') ? $this->getData('friendly_name') : $this->getData('name');
51
+ }
52
+
53
+ public function getLatestVersion() {
54
+ $this->_applyRemoteDetails();
55
+ return $this->getData('latest_version');
56
+ }
57
+
58
+ public function getIconUrl($default = '') {
59
+ $this->_applyRemoteDetails();
60
+ return $this->getData('icon_url') ? $this->getData('icon_url') : $default;
61
+ }
62
+
63
+ public function getPrice() {
64
+ $this->_applyRemoteDetails();
65
+ return $this->getData('price');
66
+ }
67
+
68
+ public function getDescription() {
69
+ $this->_applyRemoteDetails();
70
+ return $this->getData('description');
71
+ }
72
+
73
+ public function getChangelogUrl() {
74
+ $this->_applyRemoteDetails();
75
+ return $this->getData('changelog_url');
76
+ }
77
+
78
+ /**
79
+ * @todo add API response field
80
+ * @return string
81
+ */
82
+ public function getBuyUrl() {
83
+ return str_replace('changelog', 'pricing', $this->getChangelogUrl());
84
+ }
85
+
86
+ /**
87
+ * @todo add API response field
88
+ * @return string
89
+ */
90
+ public function getFeaturesUrl() {
91
+ return str_replace('changelog', 'features', $this->getChangelogUrl());
92
+ }
93
+
94
+ public function isUpgardeAvailable() {
95
+ return $this->getVersion() && $this->getLatestVersion() && version_compare($this->getLatestVersion(), $this->getVersion()) === 1;
96
+ }
97
+
98
+ public function isModulesgarden() {
99
+ return strpos($this->getName(), 'Modulesgarden_') === 0;
100
+ }
101
+
102
+ public function isMage() {
103
+ return strpos($this->getName(), 'Mage_') === 0;
104
+ }
105
+
106
+ public function isModulesgardenTheme() {
107
+ return $this->isModulesgarden() AND strpos($this->getName(), 'Theme') !== false;
108
+ }
109
+
110
+ /**
111
+ * Used on store, it relys on Friendly Name
112
+ */
113
+ public function isAlreadyInstalled() {
114
+ $this->_applyVersionFileDetails();
115
+ $modulesgardenExtensionsInstalled = Mage::getResourceModel('modulesgardenbase/extension')->getModulesgardenCollection();
116
+ foreach ($modulesgardenExtensionsInstalled as $ext) {
117
+ if (trim(strtolower(htmlspecialchars_decode($ext->getFriendlyName()))) == trim(strtolower(htmlspecialchars_decode($this->getFriendlyName())))) {
118
+ return true;
119
+ }
120
+ }
121
+ return false;
122
+ }
123
+
124
+ protected function _applyRemoteDetails() {
125
+ if (!$this->_remoteDetailsApplied) {
126
+ $this->_applyVersionFileDetails();
127
+ Mage::getResourceModel('modulesgardenbase/extension')->applyRemoteDetails($this);
128
+ $this->_remoteDetailsApplied = true;
129
+ }
130
+ return $this;
131
+ }
132
+
133
+ protected function _applyVersionFileDetails() {
134
+ if (!$this->_versionFileApplied) {
135
+ Mage::getResourceModel('modulesgardenbase/extension')->applyVersionFileDetails($this);
136
+ $this->_versionFileApplied = true;
137
+ }
138
+ return $this;
139
+ }
140
+
141
+ }
app/code/community/Modulesgarden/Base/Model/Extension/Client.php ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-30, 14:39:18)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Mariusz Miodowski <mariusz@modulesgarden.com>
27
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
28
+ */
29
+ class Modulesgarden_Base_Model_Extension_Client {
30
+
31
+ CONST MODULE_NAME = 'Modules Garden Widget For Magento';
32
+ CONST MODULE_KEY = 'fhKzDqtZ3NloER4kV0olIHRIqba8VDf8';
33
+
34
+ /**
35
+ * Cache life time.
36
+ */
37
+ protected $cache = array(
38
+ 'getLatestModuleVersion' => 43200, /* 12 hours */
39
+ 'registerModuleInstance' => 43200, /* 12 hours */
40
+ 'getAvailableProducts' => 3600, /* 1 hour */
41
+ 'getActivePromotions' => 3600, /* 1 hour */
42
+ );
43
+ //Server Location
44
+ protected $url = 'https://modulesgarden.com/manage/modules/addons/ModuleInformation/server.php';
45
+ //This name will be send to modulesgarden.com
46
+ protected $module = '';
47
+ //Module Name
48
+ protected $moduleName = '';
49
+ //Encryption Key
50
+ protected $accessHash = '';
51
+ //Error?
52
+ protected $error = '';
53
+
54
+ public function __construct($moduleName = '', $accessHash = '', $url = '') {
55
+ $this->module = $moduleName;
56
+ $this->moduleName = $moduleName ? strtolower(str_replace(' ', '', $moduleName)) : self::MODULE_NAME;
57
+ $this->accessHash = $accessHash ? trim($accessHash) : self::MODULE_KEY;
58
+ if ($url) {
59
+ $this->url = $url;
60
+ }
61
+ }
62
+
63
+ public function setModule($moduleName, $accessHash) {
64
+ $this->module = $moduleName;
65
+ $this->moduleName = strtolower(str_replace(' ', '', $moduleName));
66
+ $this->accessHash = trim($accessHash);
67
+ }
68
+
69
+ public function setURL($url) {
70
+ $this->url = $url;
71
+ }
72
+
73
+ /**
74
+ * @param type $currentVersion
75
+ */
76
+ public function getLatestModuleVersion() {
77
+ $request = array(
78
+ 'action' => 'getLatestModuleVersion',
79
+ );
80
+
81
+ return $this->send($request);
82
+ }
83
+
84
+ public function getActivePromotions() {
85
+ $request = array(
86
+ 'action' => 'getActivePromotions'
87
+ );
88
+
89
+ return $this->send($request);
90
+ }
91
+
92
+ /**
93
+ * Register new module instance
94
+ * @param type $moduleVersion
95
+ * @param type $serverIP
96
+ * @param type $serverName
97
+ * @return type
98
+ */
99
+ public function registerModuleInstance($moduleVersion, $serverIP, $serverName) {
100
+ $request = array(
101
+ 'action' => 'registerModuleInstance',
102
+ 'data' => array
103
+ (
104
+ 'moduleVersion' => $moduleVersion,
105
+ 'serverIP' => $serverIP,
106
+ 'serverName' => $serverName,
107
+ )
108
+ );
109
+
110
+ return $this->send($request);
111
+ }
112
+
113
+ /**
114
+ * Get all available products
115
+ * @return type
116
+ */
117
+ public function getAvailableProducts($platform = null) {
118
+ $requst = array(
119
+ 'action' => 'getAvailableProducts',
120
+ 'data' => array(
121
+ 'platform' => $platform
122
+ )
123
+ );
124
+
125
+ return $this->send($requst);
126
+ }
127
+
128
+ private function send($data = array()) {
129
+ if (!$data) {
130
+ return false;
131
+ }
132
+
133
+ if (empty($data['action'])) {
134
+ return false;
135
+ }
136
+
137
+ //Add module name and access hash
138
+ $data['hash'] = $this->accessHash;
139
+ $data['module'] = $this->module;
140
+
141
+ //Are we have ane cache?
142
+
143
+ $json = $this->getFromCache($data);
144
+
145
+ if( ! empty($json) ) {
146
+ return $json;
147
+ }
148
+
149
+ //Encode data
150
+ $jsonData = json_encode($data);
151
+
152
+ //Prepare Curl
153
+ $ch = curl_init($this->url);
154
+ curl_setopt($ch, CURLOPT_HEADER, 0);
155
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
156
+ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
157
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
158
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
159
+ curl_setopt($ch, CURLOPT_TIMEOUT, 5);
160
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
161
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
162
+ curl_setopt($ch, CURLOPT_POSTREDIR, 3);
163
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: text/xml'));
164
+
165
+ $ret = curl_exec($ch);
166
+
167
+ if (!$ret) {
168
+ $this->error = 'Did not receive any data. ' . curl_error($ch);
169
+ return false;
170
+ }
171
+
172
+ $json = json_decode($ret);
173
+ if (!$json) {
174
+ $this->error = 'Invalid Format';
175
+ return false;
176
+ }
177
+
178
+ if (!$json->status) {
179
+ $this->error = $json->message;
180
+ return false;
181
+ }
182
+
183
+ $this->saveCache($data, $json);
184
+
185
+ return $json;
186
+ }
187
+
188
+ public function getError() {
189
+ return $this->error;
190
+ }
191
+
192
+ protected function setError($error) {
193
+ $this->error = $error;
194
+ }
195
+
196
+ private function getCacheKeyByData($data) {
197
+ return $this->moduleName . '_' . serialize($data);
198
+ }
199
+
200
+ private function saveCache($data, $json) {
201
+ $key = $this->getCacheKeyByData($data);
202
+ $action = $data['action'];
203
+
204
+ if( isset($this->cache[$action]) ) {
205
+ Mage::app()->getCache()->save(urlencode(serialize($json)), $key, array(), $this->cache[$action]);
206
+ }
207
+ }
208
+
209
+ private function getFromCache($data) {
210
+ $key = $this->getCacheKeyByData($data);
211
+ $object = Mage::app()->getCache()->load($key);
212
+
213
+ if($object !== false) {
214
+ return unserialize(urldecode($object));
215
+ }
216
+
217
+ return null;
218
+ }
219
+
220
+ }
app/code/community/Modulesgarden/Base/Model/Mage.php ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-11-03, 10:36:28)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Model_Mage {
30
+
31
+ CONST RATIO_CUSTOM_EXTENSION = 10; // Custom Extension (+X for custom customization)
32
+ CONST RATIO_CORE_EDITED = 300; // Core Files Edited (app/code/core/Mage)
33
+ CONST RATIO_CORE_INDEX_EDITED = 150; // Core Files Edited (index.php)
34
+ CONST RATIO_CORE_OLD_VERSION = 50; // < 1.7.0.2
35
+ CONST RATIO_MAIN_MODULE_OVERWRITTEN = 100; // Main Model Overwritten (Order, Quote, Customer, Product)
36
+ CONST RATIO_ANY_MODEL_OVERWRITTEN = 10;
37
+ CONST RATIO_ANY_BLOCK_OVERWRITTEN = 5;
38
+
39
+ // md5sum of app/code/core/Mage - find app/code/core/Mage -type f | xargs cat | md5sum
40
+ protected static $_MD5SUMS_CORE = array(
41
+ '1.9.1.0 CE' => '77e90f4bf4dc8391b91585fe8a742bbc',
42
+ '1.9.0.1 CE' => '1176ba35905e7ea5ac01d3ab5a10748e',
43
+ '1.9.0.0 CE' => 'f90e40b9cf7b4977e7570029b50fdf52',
44
+ '1.8.1.0 CE' => 'd0147d3811847e091e04322a93ca780d',
45
+ '1.7.0.2 CE' => '23b6c42a764c3d05018b568693585cb4',
46
+ '1.6.2.0 CE' => '42b05c40dccfdbe492f559d28142dfb1',
47
+ );
48
+
49
+ // md5sum of /index.php
50
+ protected static $_MD5SUMS_CORE_INDEX = array(
51
+ '1.9.1.0 CE' => '07f30524368e5f15ed8a2200525f694f',
52
+ '1.9.0.1 CE' => '73d62a354e51517afd247faa731f8ad3',
53
+ '1.9.0.0 CE' => '73d62a354e51517afd247faa731f8ad3',
54
+ '1.8.1.0 CE' => '73d62a354e51517afd247faa731f8ad3',
55
+ '1.7.0.2 CE' => '73d62a354e51517afd247faa731f8ad3',
56
+ '1.6.2.0 CE' => '20b1633bd332a08e643afa4590ab8564',
57
+ );
58
+
59
+ /* Min ratio values for labels */
60
+ public static $ratioLabels = array(
61
+ 0 => 'Clear Installation',
62
+ 30 => 'Almost Clear Installation',
63
+ 100 => 'Slightly Modified',
64
+ 350 => 'Modified',
65
+ 600 => 'Significantly Modified',
66
+ );
67
+
68
+ protected static $_calculation;
69
+
70
+ /**
71
+ * How much system is customized (non-standard)
72
+ */
73
+ public function calculateCustomization(){
74
+ if (self::$_calculation){
75
+ return self::$_calculation;
76
+ }
77
+
78
+ $extensions = Mage::getResourceModel('modulesgardenbase/extension')->getNonDefaultCollection();
79
+
80
+ $customization = array(
81
+ 'magento' => array(
82
+ 'version' => Mage::getVersion() . ' ' . (Mage::helper('core')->isModuleEnabled('Enterprise_Enterprise') ? 'EE' : 'CE'),
83
+ 'index' => 'UNKNOWN',
84
+ 'core' => 'UNKNOWN',
85
+ ),
86
+ 'extensions' => array(),
87
+ 'models' => array(),
88
+ 'blocks' => array(),
89
+ 'ratio' => $extensions->getSize() * self::RATIO_CUSTOM_EXTENSION
90
+ );
91
+ foreach ($extensions as $ext){
92
+ $customization['extensions'][] = $ext->getName() . ' ' . $ext->getVersion();
93
+ }
94
+
95
+ // === check models and blocks rewrites ===
96
+ $modelsRewrites = Mage::getConfig()->getNode()->xpath('//global/models//rewrite');
97
+ $blocksRewrites = Mage::getConfig()->getNode()->xpath('//global/blocks//rewrite');
98
+
99
+ foreach ($modelsRewrites as $extensionRewrite){
100
+ foreach ($extensionRewrite as $rewKey => $rewObject){
101
+ $customization['models'][(string)$rewKey] = (string)$rewObject;
102
+ $customization['ratio'] += self::RATIO_ANY_MODEL_OVERWRITTEN;
103
+ }
104
+ }
105
+
106
+ foreach ($blocksRewrites as $blockRewrite){
107
+ foreach ($blockRewrite as $rewKey => $rewObject){
108
+ $customization['blocks'][(string)$rewKey] = (string)$rewObject;
109
+ $customization['ratio'] += self::RATIO_ANY_BLOCK_OVERWRITTEN;
110
+ }
111
+ }
112
+
113
+ // === check main models ===
114
+ if (get_class(Mage::getModel('catalog/product')) != 'Mage_Catalog_Model_Product')
115
+ $customization['ratio'] += self::RATIO_MAIN_MODULE_OVERWRITTEN;
116
+ if (get_class(Mage::getModel('sales/order')) != 'Mage_Sales_Model_Order')
117
+ $customization['ratio'] += self::RATIO_MAIN_MODULE_OVERWRITTEN;
118
+ if (get_class(Mage::getModel('sales/quote')) != 'Mage_Sales_Model_Quote')
119
+ $customization['ratio'] += self::RATIO_MAIN_MODULE_OVERWRITTEN;
120
+ if (get_class(Mage::getModel('customer/customer')) != 'Mage_Customer_Model_Customer')
121
+ $customization['ratio'] += self::RATIO_MAIN_MODULE_OVERWRITTEN;
122
+
123
+ // === check whether core was edited ===
124
+ if (isset(self::$_MD5SUMS_CORE[$customization['magento']['version']])){
125
+ $md5sumCore = $this->_getMd5Sum(MAGENTO_ROOT.'/app/code/core/Mage');
126
+ if ($md5sumCore == self::$_MD5SUMS_CORE[$customization['magento']['version']]){
127
+ $customization['magento']['core'] = 'OK';
128
+ } else {
129
+ $customization['magento']['core'] = 'WRONG: ' . $md5sumCore;
130
+ $customization['ratio'] += self::RATIO_CORE_EDITED;
131
+ }
132
+ }
133
+ // === check whether index.php was edited ===
134
+ if (isset(self::$_MD5SUMS_CORE_INDEX[$customization['magento']['version']])){
135
+ $md5sumIndex = $this->_getMd5Sum(MAGENTO_ROOT.'/index.php');
136
+ if ($md5sumIndex == self::$_MD5SUMS_CORE_INDEX[$customization['magento']['version']]){
137
+ $customization['magento']['index'] = 'OK';
138
+ } else {
139
+ $customization['magento']['index'] = 'WRONG: ' . $md5sumIndex;
140
+ $customization['ratio'] += self::RATIO_CORE_INDEX_EDITED;
141
+ }
142
+ }
143
+
144
+ // === check whether magento version is old ===
145
+ if (!Mage::helper('core')->isModuleEnabled('Enterprise_Enterprise')){
146
+ if (version_compare(Mage::getVersion(), '1.7.0.2', '<')){
147
+ $customization['ratio'] += self::RATIO_CORE_OLD_VERSION;
148
+ }
149
+ }
150
+ // @todo checking EE version
151
+
152
+ self::$_calculation = $customization;
153
+ return self::$_calculation;
154
+ }
155
+
156
+ protected function _getMd5Sum($path){
157
+ $commandReturn = exec('find '.$path.' -type f | xargs cat | md5sum'); // | sort -u
158
+ return trim(str_replace(' -', '', $commandReturn));
159
+ }
160
+
161
+ }
app/code/community/Modulesgarden/Base/Model/Observer.php ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-30, 13:23:34)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ class Modulesgarden_Base_Model_Observer {
30
+
31
+ protected $_mgSections = array(
32
+ 'mgbase_installed_extensions' => 'Installed Extensions',
33
+ 'mgbase_store' => 'Store'
34
+ );
35
+
36
+ public function adminhtml_block_html_before(Varien_Event_Observer $observer){
37
+ $block = $observer->getEvent()->getBlock();
38
+ $section = Mage::app()->getRequest()->getParam('section');
39
+ if ($block instanceof Mage_Adminhtml_Block_System_Config_Edit && in_array($section, array_keys($this->_mgSections))){
40
+ if ($section == 'mgbase_installed_extensions')
41
+ $block->unsetChild('save_button');
42
+ $block->setTitle('<img src="'.Mage::getBaseUrl('skin').'/adminhtml/base/default/modulesgardenbase/img/mgcommerce-logo.png" style="vertical-align: bottom;" /> ' . $block->__($this->_mgSections[$section]));
43
+ $block->setHeaderCss('modulesgardenbase_config_header');
44
+ }
45
+ }
46
+
47
+ /**
48
+ * By Cron
49
+ */
50
+ public function fetchNotifications(){
51
+
52
+ $events = explode(',', Mage::getStoreConfig('mgbase_store/notifications/events'));
53
+ $client = new Modulesgarden_Base_Model_Extension_Client();
54
+
55
+ $version = (string)Mage::getConfig()->getNode()->modules->Modulesgarden_Base->version;
56
+ $helper = Mage::helper('modulesgardenbase');
57
+ $resource = Mage::getResourceModel('modulesgardenbase/extension');
58
+
59
+ $client->registerModuleInstance($version, $_SERVER['SERVER_ADDR'], $_SERVER['SERVER_NAME']);
60
+
61
+ if (in_array(Modulesgarden_Base_Model_System_Config_Source_Notificationevents::UPGRADES, $events)){
62
+ foreach ($resource->getModulesgardenCollection() as $installedMgExtension){
63
+ if ($installedMgExtension->isUpgardeAvailable()){
64
+ $msgTitle = $helper->__('Upgarde Of "%s" Extension From ModulesGarden Is Available (%s)', $installedMgExtension->getFriendlyName(), $installedMgExtension->getLatestVersion() );
65
+
66
+ if (!Modulesgarden_Base_Model_Adminnotification_Inbox::exists($msgTitle)){
67
+ Mage::getModel('modulesgardenbase/adminnotification_inbox')->addMajor(
68
+ $msgTitle,
69
+ $helper->__('New version: %s. Download extension from modulesgarden.com and install it in your magento.', $installedMgExtension->getLatestVersion()),
70
+ $installedMgExtension->getChangelogUrl()
71
+ );
72
+ }
73
+
74
+ }
75
+ }
76
+ }
77
+ if (in_array(Modulesgarden_Base_Model_System_Config_Source_Notificationevents::RELEASES, $events)){
78
+ $extensionsFromStore = Mage::getResourceModel('modulesgardenbase/extension')->getExtensionsObjectsFromModulesgardenCom();
79
+ foreach ($extensionsFromStore as $extensionFromStore){
80
+ if ($extensionFromStore->getIsNew()){
81
+ $msgTitle = $helper->__('New Extension From ModulesGarden: %s', $extensionFromStore->getFriendlyName());
82
+
83
+ if (!Modulesgarden_Base_Model_Adminnotification_Inbox::exists($msgTitle)){
84
+ Mage::getModel('modulesgardenbase/adminnotification_inbox')->addMajor(
85
+ $msgTitle,
86
+ $helper->__('Download extension from modulesgarden.com and install it in your magento.'),
87
+ $extensionFromStore->getChangelogUrl()
88
+ );
89
+ }
90
+
91
+ }
92
+ }
93
+ }
94
+ if (in_array(Modulesgarden_Base_Model_System_Config_Source_Notificationevents::PROMOTIONS, $events)){
95
+ $promotions = $client->getActivePromotions();
96
+ if ($promotions && isset($promotions->data->promotions)){
97
+ foreach ($promotions->data->promotions as $promo){
98
+ $msgTitle = $helper->__('New Promotion From ModulesGarden: %s', $promo->notes);
99
+
100
+ if (!Modulesgarden_Base_Model_Adminnotification_Inbox::exists($msgTitle)){
101
+ Mage::getModel('modulesgardenbase/adminnotification_inbox')->addMajor(
102
+ $msgTitle,
103
+ $helper->__('Promotion Code: %s', $promo->code),
104
+ 'http://www.modulesgarden.com'
105
+ );
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+
112
+ }
app/code/community/Modulesgarden/Base/Model/Resource/Extension.php ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-31, 08:37:18)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+ class Modulesgarden_Base_Model_Resource_Extension {
29
+
30
+ protected static $_remoteResponse;
31
+
32
+ public function getModulesgardenCollection() {
33
+ return $this->_getCollection(true);
34
+ }
35
+
36
+ public function getNonModulesgardenCollection($skipMage = true) {
37
+ return $this->_getCollection(null, true, $skipMage);
38
+ }
39
+
40
+ public function getNonDefaultCollection() {
41
+ return $this->_getCollection(false, false, true);
42
+ }
43
+
44
+ protected function _getCollection($modulesgardenOnly = null, $nonModulesgardenOnly = null, $skipMage = false) {
45
+ $collection = new Varien_Data_Collection();
46
+ $modulesArray = (array) Mage::getConfig()->getNode('modules')->children();
47
+ foreach ($modulesArray as $module => $moduleDetails) {
48
+ $ext = Mage::getModel('modulesgardenbase/extension');
49
+ $ext->setName($module);
50
+ $ext->setActive((string) $moduleDetails->active == 'true');
51
+ $ext->setCodePool((string) $moduleDetails->codePool);
52
+ $ext->setVersion(isset($moduleDetails->version) ? (string) $moduleDetails->version : $this->_getModuleVersionFromItsXml($ext) );
53
+
54
+ if (isset($moduleDetails->depends)) {
55
+ $depends = array();
56
+ foreach ($moduleDetails->depends as $dependModuleName => $dependModuleDetails) {
57
+ $depends[] = $dependModuleName;
58
+ }
59
+ $ext->setDepends($depends);
60
+ }
61
+
62
+ if ($modulesgardenOnly === true && !$ext->isModulesgarden())
63
+ continue;
64
+
65
+ if ($nonModulesgardenOnly === true && $ext->isModulesgarden())
66
+ continue;
67
+
68
+ if ($skipMage === true && $ext->isMage())
69
+ continue;
70
+
71
+ $collection->addItem($ext);
72
+ }
73
+
74
+ return $collection;
75
+ }
76
+
77
+ protected function _getModuleVersionFromItsXml(Modulesgarden_Base_Model_Extension $ext) {
78
+ $configXmlPath = Mage::getModuleDir('', $ext->getName()) . DIRECTORY_SEPARATOR . 'etc' . DIRECTORY_SEPARATOR . 'config.xml';
79
+ if (file_exists($configXmlPath)) {
80
+ $fileConfig = new Mage_Core_Model_Config_Base();
81
+ $fileConfig->loadFile($configXmlPath);
82
+ return (string) $fileConfig->getNode('modules/' . $ext->getName() . '/version');
83
+ }
84
+ return null;
85
+ }
86
+
87
+ /**
88
+ * @return array
89
+ */
90
+ public function getExtensionsFromModulesgardenCom() {
91
+ if (self::$_remoteResponse !== null)
92
+ return self::$_remoteResponse;
93
+
94
+ $client = new Modulesgarden_Base_Model_Extension_Client();
95
+
96
+ $response = $client->getAvailableProducts('MAGENTO');
97
+ if (isset($response->status) && $response->status) {
98
+ self::$_remoteResponse = $response->data->modules;
99
+ return self::$_remoteResponse;
100
+ }
101
+ return self::$_remoteResponse = array();
102
+ }
103
+
104
+ public function getExtensionsObjectsFromModulesgardenCom($sortableCallback = null) {
105
+ $extToReturn = array();
106
+ $extensions = $this->getExtensionsFromModulesgardenCom();
107
+ foreach ($extensions as $remoteExt) {
108
+ $ext = Mage::getModel('modulesgardenbase/extension');
109
+ $ext->setFriendlyName($remoteExt->name);
110
+ $this->applyRemoteDetails($ext);
111
+ $extToReturn[] = $ext;
112
+ }
113
+
114
+ if (is_callable($sortableCallback)) {
115
+ $collection = array();
116
+
117
+ foreach ($extToReturn as $key => $item) {
118
+ $collection[$key] = $sortableCallback($item);
119
+ }
120
+
121
+ asort($collection);
122
+
123
+ foreach (array_keys($collection) as $key) {
124
+ $collection[$key] = $extToReturn[$key];
125
+ }
126
+
127
+ return $collection;
128
+ }
129
+
130
+ return $extToReturn;
131
+ }
132
+
133
+ public function applyRemoteDetails(Modulesgarden_Base_Model_Extension $ext) {
134
+ $extensions = $this->getExtensionsFromModulesgardenCom();
135
+
136
+ foreach ($extensions as $remoteExt) {
137
+ if (trim(strtolower(htmlspecialchars_decode($ext->getFriendlyName()))) == trim(strtolower(htmlspecialchars_decode($remoteExt->name)))) {
138
+ $ext->setChangelogUrl(isset($remoteExt->site_url) ? $remoteExt->site_url : '');
139
+ $ext->setLatestVersion(isset($remoteExt->version) ? $remoteExt->version : '');
140
+ $ext->setIconUrl(isset($remoteExt->icon_url) ? $remoteExt->icon_url : '');
141
+ $ext->setPrice(isset($remoteExt->price) ? $remoteExt->price : '');
142
+ $ext->setDescription(isset($remoteExt->description) ? $remoteExt->description : '');
143
+ $ext->setIsPromotion(isset($remoteExt->is_promotion) && $remoteExt->is_promotion ? true : false);
144
+ $ext->setIsNew(isset($remoteExt->is_new) && $remoteExt->is_new ? true : false);
145
+ }
146
+ }
147
+ }
148
+
149
+ public function applyVersionFileDetails(Modulesgarden_Base_Model_Extension $ext) {
150
+ $modulePath = Mage::getModuleDir('', $ext->getName());
151
+ if (file_exists($modulePath . DIRECTORY_SEPARATOR . 'moduleVersion.php')) {
152
+ require $modulePath . DIRECTORY_SEPARATOR . 'moduleVersion.php';
153
+ $ext->setFriendlyName($moduleName);
154
+ $ext->setCurrentVersion($moduleVersion);
155
+ $ext->setWikiUrl($moduleWikiUrl);
156
+
157
+ // Non-standard variable
158
+ if (isset($moduleChangelogUrl)) {
159
+ $ext->setChangelogUrl($moduleChangelogUrl);
160
+ }
161
+ }
162
+ }
163
+
164
+ }
app/code/community/Modulesgarden/Base/Model/System/Config/Source/Notificationevents.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-11-10, 10:46:06)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+ class Modulesgarden_Base_Model_System_Config_Source_Notificationevents {
29
+
30
+ CONST UPGRADES = 'upgrade';
31
+ CONST RELEASES = 'release';
32
+ CONST PROMOTIONS = 'promotions';
33
+ CONST OTHER = 'other';
34
+
35
+ public function toOptionArray() {
36
+ $h = Mage::helper('modulesgardenbase');
37
+ return array(
38
+ array('value' => self::UPGRADES, 'label' => $h->__('Upgrade Is Ready')),
39
+ array('value' => self::RELEASES, 'label' => $h->__('ModulesGarden Release New Extension')),
40
+ array('value' => self::PROMOTIONS, 'label' => $h->__('Promotions/Discounts')),
41
+ array('value' => self::OTHER, 'label' => $h->__('Other Important Messages')),
42
+ );
43
+ }
44
+
45
+ }
app/code/community/Modulesgarden/Base/etc/adminhtml.xml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ <mgbase_installed_extensions>
12
+ <title>Modulesgarden Base - Installed Extensions</title>
13
+ </mgbase_installed_extensions>
14
+ <mgbase_store>
15
+ <title>Modulesgarden Base - Store</title>
16
+ </mgbase_store>
17
+ </children>
18
+ </config>
19
+ </children>
20
+ </system>
21
+ </children>
22
+ </admin>
23
+ </resources>
24
+ </acl>
25
+ </config>
app/code/community/Modulesgarden/Base/etc/config.xml ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <Modulesgarden_Base>
5
+ <version>1.0.0</version>
6
+ </Modulesgarden_Base>
7
+ </modules>
8
+
9
+ <admin>
10
+ <routers>
11
+ <modulesgardenbase>
12
+ <use>admin</use>
13
+ <args>
14
+ <module>Modulesgarden_Base</module>
15
+ <frontName>modulesgardenbase</frontName>
16
+ </args>
17
+ </modulesgardenbase>
18
+ </routers>
19
+ </admin>
20
+ <adminhtml>
21
+ <translate>
22
+ <modules>
23
+ <modulesgardenbase>
24
+ <files>
25
+ <default>Modulesgarden_Base.csv</default>
26
+ </files>
27
+ </modulesgardenbase>
28
+ </modules>
29
+ </translate>
30
+ <layout>
31
+ <updates>
32
+ <modulesgardenbase>
33
+ <file>modulesgardenbase.xml</file>
34
+ </modulesgardenbase>
35
+ </updates>
36
+ </layout>
37
+ <events>
38
+ <adminhtml_block_html_before>
39
+ <observers>
40
+ <modulesgardenbase_config>
41
+ <class>modulesgardenbase/observer</class>
42
+ <method>adminhtml_block_html_before</method>
43
+ <type>model</type>
44
+ </modulesgardenbase_config>
45
+ </observers>
46
+ </adminhtml_block_html_before>
47
+ </events>
48
+ </adminhtml>
49
+
50
+ <global>
51
+ <blocks>
52
+ <modulesgardenbase>
53
+ <class>Modulesgarden_Base_Block</class>
54
+ </modulesgardenbase>
55
+ </blocks>
56
+ <models>
57
+ <modulesgardenbase>
58
+ <class>Modulesgarden_Base_Model</class>
59
+ <resourceModel>modulesgardenbase_resource</resourceModel>
60
+ </modulesgardenbase>
61
+ <modulesgardenbase_resource>
62
+ <class>Modulesgarden_Base_Model_Resource</class>
63
+ </modulesgardenbase_resource>
64
+ </models>
65
+ <helpers>
66
+ <modulesgardenbase>
67
+ <class>Modulesgarden_Base_Helper</class>
68
+ </modulesgardenbase>
69
+ </helpers>
70
+ </global>
71
+ <default>
72
+ <modulesgardenbase>
73
+ <notifications>
74
+ <create_system_notification>upgrade,release,promotion,other</create_system_notification>
75
+ </notifications>
76
+ </modulesgardenbase>
77
+ </default>
78
+ <crontab>
79
+ <jobs>
80
+ <modulesgardenbase_notifications>
81
+ <schedule>
82
+ <cron_expr>0 6 * * *</cron_expr><!-- 6:00 AM -->
83
+ </schedule>
84
+ <run>
85
+ <model>modulesgardenbase/observer::fetchNotifications</model>
86
+ </run>
87
+ </modulesgardenbase_notifications>
88
+ </jobs>
89
+ </crontab>
90
+ </config>
app/code/community/Modulesgarden/Base/etc/system.xml ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <tabs>
4
+ <modulesgarden>
5
+ <label><![CDATA[<div style="line-height:0;"><img id="mg_logo_block" src="http://www.modulesgarden.com/images/magento/mgcommerce-logo-black.png" /></div>]]></label>
6
+ <sort_order>1100</sort_order>
7
+ </modulesgarden>
8
+ </tabs>
9
+ <sections>
10
+ <mgbase_installed_extensions translate="label">
11
+ <class>separator-top</class>
12
+ <label>Installed Extensions</label>
13
+ <tab>modulesgarden</tab>
14
+ <sort_order>15</sort_order>
15
+ <show_in_default>1</show_in_default>
16
+ <show_in_website>1</show_in_website>
17
+ <show_in_store>1</show_in_store>
18
+ <groups>
19
+ <modulesgarden>
20
+ <frontend_model>modulesgardenbase/adminhtml_system_config_form_fieldset_installedmodulesgarden</frontend_model>
21
+ <sort_order>5</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
+ </modulesgarden>
26
+ <modulesgardenthemes>
27
+ <frontend_model>modulesgardenbase/adminhtml_system_config_form_fieldset_installedmodulesgardenthemes</frontend_model>
28
+ <sort_order>5</sort_order>
29
+ <show_in_default>1</show_in_default>
30
+ <show_in_website>1</show_in_website>
31
+ <show_in_store>1</show_in_store>
32
+ </modulesgardenthemes>
33
+ <others>
34
+ <frontend_model>modulesgardenbase/adminhtml_system_config_form_fieldset_installedothers</frontend_model>
35
+ <sort_order>10</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
+ </others>
40
+ <customization_ratio>
41
+ <frontend_model>modulesgardenbase/adminhtml_system_config_form_fieldset_installedratio</frontend_model>
42
+ <sort_order>15</sort_order>
43
+ <show_in_default>1</show_in_default>
44
+ <show_in_website>1</show_in_website>
45
+ <show_in_store>1</show_in_store>
46
+ </customization_ratio>
47
+ </groups>
48
+ </mgbase_installed_extensions>
49
+ <mgbase_store translate="label">
50
+ <class>separator-top</class>
51
+ <label><![CDATA[Store & Notifications]]></label>
52
+ <tab>modulesgarden</tab>
53
+ <sort_order>20</sort_order>
54
+ <show_in_default>1</show_in_default>
55
+ <show_in_website>1</show_in_website>
56
+ <show_in_store>1</show_in_store>
57
+ <groups>
58
+ <store>
59
+ <frontend_model>modulesgardenbase/adminhtml_system_config_form_fieldset_store</frontend_model>
60
+ <sort_order>5</sort_order>
61
+ <show_in_default>1</show_in_default>
62
+ <show_in_website>1</show_in_website>
63
+ <show_in_store>1</show_in_store>
64
+ </store>
65
+ <notifications translate="label">
66
+ <label>Notifications Management</label>
67
+ <frontend_model>modulesgardenbase/adminhtml_system_config_form_fieldset_modulesgarden</frontend_model>
68
+ <sort_order>10</sort_order>
69
+ <show_in_default>1</show_in_default>
70
+ <show_in_website>0</show_in_website>
71
+ <show_in_store>0</show_in_store>
72
+ <fields>
73
+ <events translate="label">
74
+ <label>Add System Notification When</label>
75
+ <frontend_type>multiselect</frontend_type>
76
+ <source_model>modulesgardenbase/system_config_source_notificationevents</source_model>
77
+ <sort_order>1</sort_order>
78
+ <show_in_default>1</show_in_default>
79
+ <show_in_website>0</show_in_website>
80
+ <show_in_store>0</show_in_store>
81
+ <can_be_empty>1</can_be_empty>
82
+ </events>
83
+ </fields>
84
+ </notifications>
85
+ <twitter>
86
+ <frontend_model>modulesgardenbase/adminhtml_system_config_form_fieldset_twitter</frontend_model>
87
+ <sort_order>15</sort_order>
88
+ <show_in_default>1</show_in_default>
89
+ <show_in_website>1</show_in_website>
90
+ <show_in_store>1</show_in_store>
91
+ </twitter>
92
+ </groups>
93
+ </mgbase_store>
94
+ </sections>
95
+ </config>
app/design/adminhtml/default/default/layout/modulesgardenbase.xml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <layout>
3
+ <adminhtml_system_config_edit>
4
+ <reference name="head">
5
+ <action method="addCss">
6
+ <name>modulesgardenbase/css/modulesgarden.css</name>
7
+ </action>
8
+ </reference>
9
+ </adminhtml_system_config_edit>
10
+ </layout>
app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedmodulesgarden.phtml ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* * ********************************************************************
3
+ * Customization Services by ModulesGarden.com
4
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
5
+ * (2014-10-30, 12:11:38)
6
+ *
7
+ *
8
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
9
+ * CONTACT -> contact@modulesgarden.com
10
+ *
11
+ *
12
+ *
13
+ *
14
+ * This software is furnished under a license and may be used and copied
15
+ * only in accordance with the terms of such license and with the
16
+ * inclusion of the above copyright notice. This software or any other
17
+ * copies thereof may not be provided or otherwise made available to any
18
+ * other person. No title to and ownership of the software is hereby
19
+ * transferred.
20
+ *
21
+ *
22
+ * ******************************************************************** */
23
+
24
+ /**
25
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
26
+ * @author Marcin Kozak <marcin.ko@modulesgarden.com>
27
+ */
28
+ ?>
29
+
30
+ <div class="modulesgarden_grid_container">
31
+ <div class="grid">
32
+ <div class="hor-scroll">
33
+ <table cellspacing="0" class="data">
34
+ <thead>
35
+ <tr class="headings">
36
+ <th class=" no-link" style="width:50%;"><span class="nobr"><?php echo $this->__('Extension Name'); ?></span></th>
37
+ <th class=" no-link"><span class="nobr"><?php echo $this->__('Your Version'); ?></span></th>
38
+ <th class=" no-link" style="width:100px;"><span class="nobr"><?php echo $this->__('Documentation'); ?></span></th>
39
+ <th class=" no-link last" style="width:100px;"><span class="nobr"><?php echo $this->__('Changelog'); ?></span></th>
40
+ </tr>
41
+ </thead>
42
+ <tbody>
43
+ <?php foreach ($this->getExtensions() as $k => $extension): ?>
44
+ <?php if( ! $extension->isModulesgardenTheme()): ?>
45
+ <tr class="<?php echo $k % 2 == 0 ? 'even' : ''; ?>">
46
+ <td class="a-left"><?php echo $extension->getFriendlyName(); ?></td>
47
+ <td class="a-left">
48
+ <?php echo $extension->getVersion(); ?>
49
+ <?php if ($extension->isUpgardeAvailable()){ ?>
50
+ <strong style="padding-left: 10px;">
51
+ <?php echo $this->__('Upgrade Available!'); ?>
52
+ <a href="<?php echo $extension->getChangelogUrl(); ?>" target="_blank"><?php echo $extension->getLatestVersion(); ?></a>
53
+ </strong>
54
+ <?php } ?>
55
+ </td>
56
+ <td class="a-center">
57
+ <?php if ($extension->getWikiUrl()){ ?>
58
+ <a href="<?php echo $extension->getWikiUrl(); ?>" target="_blank"><?php echo $this->__('Documentation'); ?></a>
59
+ <?php } ?>
60
+ </td>
61
+ <td class="a-center last">
62
+ <?php if ($extension->getChangelogUrl()){ ?>
63
+ <a href="<?php echo $extension->getChangelogUrl(); ?>" target="_blank"><?php echo $this->__('Changelog'); ?></a>
64
+ <?php } ?>
65
+ </td>
66
+ </tr>
67
+ <?php endif ?>
68
+ <?php endforeach ?>
69
+ </tbody>
70
+ </table>
71
+ </div>
72
+ </div>
73
+ </div>
app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedmodulesgardenthemes.phtml ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* * ********************************************************************
3
+ * Customization Services by ModulesGarden.com
4
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
5
+ * (2014-10-30, 12:11:38)
6
+ *
7
+ *
8
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
9
+ * CONTACT -> contact@modulesgarden.com
10
+ *
11
+ *
12
+ *
13
+ *
14
+ * This software is furnished under a license and may be used and copied
15
+ * only in accordance with the terms of such license and with the
16
+ * inclusion of the above copyright notice. This software or any other
17
+ * copies thereof may not be provided or otherwise made available to any
18
+ * other person. No title to and ownership of the software is hereby
19
+ * transferred.
20
+ *
21
+ *
22
+ * ******************************************************************** */
23
+
24
+ /**
25
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
26
+ * @author Marcin Kozak <marcin.ko@modulesgarden.com>
27
+ */
28
+ ?>
29
+
30
+ <div class="modulesgarden_form_container">
31
+ <div class="content-header skip-header">
32
+ <h3 class="modulesgardenbase_config_header">
33
+ <img src="<?php echo Mage::getBaseUrl('skin') ?>/adminhtml/base/default/modulesgardenbase/img/mgcommerce-logo.png" style="vertical-align: bottom;" />
34
+ <?php echo $this->__('Installed Themes'); ?>
35
+ </h3>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="modulesgarden_grid_container">
40
+ <div class="grid">
41
+ <div class="hor-scroll">
42
+ <table cellspacing="0" class="data">
43
+ <thead>
44
+ <tr class="headings">
45
+ <th class=" no-link" style="width:50%;"><span class="nobr"><?php echo $this->__('Theme Name'); ?></span></th>
46
+ <th class=" no-link"><span class="nobr"><?php echo $this->__('Your Version'); ?></span></th>
47
+ <th class=" no-link" style="width:100px;"><span class="nobr"><?php echo $this->__('Documentation'); ?></span></th>
48
+ <th class=" no-link last" style="width:100px;"><span class="nobr"><?php echo $this->__('Changelog'); ?></span></th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+ <?php $themesCount = 0; ?>
53
+ <?php foreach ($this->getExtensions() as $k => $extension): ?>
54
+ <?php if($extension->isModulesgardenTheme()): $themesCount++; ?>
55
+ <tr class="<?php echo $k%2==0 ? 'even' : ''; ?>">
56
+ <td class="a-left"><?php echo $extension->getFriendlyName(); ?></td>
57
+ <td class="a-left">
58
+ <?php echo $extension->getVersion(); ?>
59
+ <?php if ($extension->isUpgardeAvailable()){ ?>
60
+ <strong style="padding-left: 10px;">
61
+ <?php echo $this->__('Upgrade Available!'); ?>
62
+ <a href="<?php echo $extension->getChangelogUrl(); ?>" target="_blank"><?php echo $extension->getLatestVersion(); ?></a>
63
+ </strong>
64
+ <?php } ?>
65
+ </td>
66
+ <td class="a-center">
67
+ <?php if ($extension->getWikiUrl()){ ?>
68
+ <a href="<?php echo $extension->getWikiUrl(); ?>" target="_blank"><?php echo $this->__('Documentation'); ?></a>
69
+ <?php } ?>
70
+ </td>
71
+ <td class="a-center last">
72
+ <?php if ($extension->getChangelogUrl()){ ?>
73
+ <a href="<?php echo $extension->getChangelogUrl(); ?>" target="_blank"><?php echo $this->__('Changelog'); ?></a>
74
+ <?php } ?>
75
+ </td>
76
+ </tr>
77
+ <?php endif ?>
78
+ <?php endforeach ?>
79
+
80
+ <?php if($themesCount === 0): ?>
81
+ <tr>
82
+ <td colspan="4">
83
+ <?php echo $this->__('Your does not have any installed themes of ModulesGarden') ?>
84
+ </td>
85
+ </tr>
86
+ <?php endif ?>
87
+ </tbody>
88
+ </table>
89
+ </div>
90
+ </div>
91
+ </div>
app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedothers.phtml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* * ********************************************************************
3
+ * Customization Services by ModulesGarden.com
4
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
5
+ * (2014-10-31, 10:30:40)
6
+ *
7
+ *
8
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
9
+ * CONTACT -> contact@modulesgarden.com
10
+ *
11
+ *
12
+ *
13
+ *
14
+ * This software is furnished under a license and may be used and copied
15
+ * only in accordance with the terms of such license and with the
16
+ * inclusion of the above copyright notice. This software or any other
17
+ * copies thereof may not be provided or otherwise made available to any
18
+ * other person. No title to and ownership of the software is hereby
19
+ * transferred.
20
+ *
21
+ *
22
+ * ******************************************************************** */
23
+
24
+ /**
25
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
26
+ */
27
+ ?>
28
+
29
+ <div class="modulesgarden_form_container">
30
+ <div class="content-header skip-header">
31
+ <h3 class="modulesgardenbase_config_header"><?php echo $this->__('Other Modules'); ?></h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="modulesgarden_grid_container">
36
+ <div class="grid">
37
+ <div class="hor-scroll">
38
+ <table cellspacing="0" class="data">
39
+ <thead>
40
+ <tr class="headings">
41
+ <th class=" no-link" style="width:50%;"><span class="nobr"><?php echo $this->__('Extension Name'); ?></span></th>
42
+ <th class=" no-link"><span class="nobr"><?php echo $this->__('Your Version'); ?></span></th>
43
+ </tr>
44
+ </thead>
45
+ <tbody>
46
+ <?php foreach ($this->getExtensions() as $k => $extension) { ?>
47
+ <tr class="<?php echo $k%2==0 ? 'even' : ''; ?>">
48
+ <td class="a-left"><?php echo $extension->getName(); ?></td>
49
+ <td class="a-left last"><?php echo $extension->getVersion(); ?></td>
50
+ </tr>
51
+ <?php } ?>
52
+ </tbody>
53
+ </table>
54
+ </div>
55
+ </div>
56
+ </div>
57
+
app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/installedratio.phtml ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* * ********************************************************************
3
+ * Customization Services by ModulesGarden.com
4
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
5
+ * (2014-10-31, 12:08:09)
6
+ *
7
+ *
8
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
9
+ * CONTACT -> contact@modulesgarden.com
10
+ *
11
+ *
12
+ *
13
+ *
14
+ * This software is furnished under a license and may be used and copied
15
+ * only in accordance with the terms of such license and with the
16
+ * inclusion of the above copyright notice. This software or any other
17
+ * copies thereof may not be provided or otherwise made available to any
18
+ * other person. No title to and ownership of the software is hereby
19
+ * transferred.
20
+ *
21
+ *
22
+ * ******************************************************************** */
23
+
24
+ /**
25
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
26
+ */
27
+ ?>
28
+
29
+ <div class="modulesgarden_form_container">
30
+ <div class="content-header skip-header">
31
+ <h3 class="modulesgardenbase_config_header"><?php echo $this->__('Customization Ratio'); ?></h3>
32
+ </div>
33
+
34
+ <div class="entry-edit">
35
+ <div class="entry-edit-head">
36
+ <h4 class="icon-head head-edit-form fieldset-legend">&nbsp;</h4>
37
+ </div>
38
+ <div class="fieldset ">
39
+ <div style="line-height:25px;">
40
+ <?php echo $this->__('Your Ratio Is:'); ?>
41
+ <strong><?php echo $this->getRatio(); ?></strong> (<strong><?php echo $this->getRatioLabel(); ?></strong>)
42
+ <div class="field-tooltip"><div><?php echo $this->__('These ratio is used by ModulesGarden for quotation of a Custom Projects. It tells us how much your system is non-standard.'); ?></div></div>
43
+ <br/>
44
+
45
+ <?php echo $this->__('Debug Details:'); ?>
46
+ <button onclick="return showMgDebugInfo();" id="mg_show_debug_info"><?php echo $this->__('Show'); ?></button>
47
+ <button onclick="return hideMgDebugInfo();" id="mg_hide_debug_info" style="display:none"><?php echo $this->__('Hide'); ?></button>
48
+ <div class="field-tooltip"><div><?php echo $this->__('This details are used by ModulesGarden for quotation of a Custom Projects. Please, provide it to us in case of a quotation request. It tells us more deeply, how much your system is non-standard.'); ?></div></div>
49
+ </div>
50
+
51
+ <div id="mg_debug_info" style="display:none;background-color: #eee;padding: 5px;margin-top:10px;">
52
+ <pre><?php echo $this->getDebugString(); ?></pre>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
57
+
58
+ <script type="text/javascript">
59
+ function showMgDebugInfo(){
60
+ document.getElementById("mg_show_debug_info").style.display = 'none';
61
+ document.getElementById("mg_hide_debug_info").style.display = 'inline-block';
62
+ document.getElementById("mg_debug_info").style.display = 'block';
63
+
64
+ return false;
65
+ }
66
+ function hideMgDebugInfo(){
67
+ document.getElementById("mg_hide_debug_info").style.display = 'none';
68
+ document.getElementById("mg_show_debug_info").style.display = 'inline-block';
69
+ document.getElementById("mg_debug_info").style.display = 'none';
70
+
71
+ return false;
72
+ }
73
+ </script>
app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/store.phtml ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-10-31, 13:03:09)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+ $defaultIcon = Mage::getBaseUrl('skin') . '/adminhtml/base/default/modulesgardenbase/img/icons/module.png';
29
+ ?>
30
+
31
+ <div class="modulesgarden_grid_container mg_store_container">
32
+ <table class="extension" cellspacing="0">
33
+ <?php foreach ($this->getExtensions() as $extension){ ?>
34
+ <tr>
35
+ <td class="img">
36
+ <img src="<?php echo $extension->getIconUrl($defaultIcon); ?>" />
37
+ </td>
38
+ <td class="content">
39
+ <h3><a href="<?php echo $extension->getFeaturesUrl(); ?>" target="_blank"><?php echo $extension->getFriendlyName(); ?></a></h3>
40
+ <small>Version <?php echo $extension->getLatestVersion(); ?></small>
41
+
42
+ <div>
43
+ <?php if ($extension->isAlreadyInstalled()){ ?>
44
+ <span class="storelabel installed"><?php echo $this->__('Already Installed'); ?></span>
45
+ <?php } ?>
46
+ <?php if ($extension->getIsNew()){ ?>
47
+ <a class="storelabel new" href="<?php echo $extension->getChangelogUrl(); ?>" target="_blank"><?php echo $this->__('New Version Available'); ?></a>
48
+ <?php } ?>
49
+ <?php if ($extension->getIsPromotion()){ ?>
50
+ <span class="storelabel promotion"><?php echo $this->__('Promotion'); ?></span>
51
+ <?php } ?>
52
+ </div>
53
+
54
+ <p class="description"><?php echo $extension->getDescription(); ?></p>
55
+ </td>
56
+ <td class="price">
57
+ <?php if ($extension->getPrice() > 0){ ?>
58
+ <strong>$<?php echo $extension->getPrice(); ?></strong>
59
+ <a href="<?php echo $extension->getBuyUrl(); ?>" class="form-button" target="_blank"><?php echo $this->__('Buy Now'); ?></a>
60
+ <?php } else { ?>
61
+ <strong><?php echo $this->__('FREE'); ?></strong>
62
+ <a href="<?php echo $extension->getFeaturesUrl(); ?>" class="form-button" target="_blank"><?php echo $this->__('Download'); ?></a>
63
+ <?php } ?>
64
+ </td>
65
+ </tr>
66
+ <?php } ?>
67
+ </table>
68
+ </div>
69
+
70
+ <script type="text/javascript">
71
+ document.observe("dom:loaded", function() {
72
+ // simple fix for "save" button color
73
+ $$('.form-buttons').invoke('addClassName', 'modulesgarden_form_container');
74
+ });
75
+ </script>
app/design/adminhtml/default/default/template/modulesgardenbase/system/config/form/fieldset/twitter.phtml ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-11-12, 14:02:17)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ **********************************************************************/
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ ?>
30
+
31
+ <div class="section-config active modulesgarden_form_container">
32
+ <div class="entry-edit-head collapseable">
33
+ <a id="mgbase_store_twitter-head" href="#" onclick="Fieldset.toggleCollapse('mgbase_store_twitter'); return false;" class="open"><?php echo $this->__('Latest News About Our Magento Extensions & Themes'); ?></a>
34
+ </div>
35
+ <input id="mgbase_store_twitter-state" name="config_state[mgbase_store_twitter]" type="hidden" value="1">
36
+ <fieldset id="mgbase_store_twitter" class="config collapseable">
37
+ <button onclick="return mgShowTwitterBox();"><?php echo $this->__('Tweets by @ModulesGarden'); ?></button>
38
+ </fieldset>
39
+ <script type="text/javascript">//<![CDATA[
40
+ Fieldset.applyCollapse('mgbase_store_twitter');
41
+ //]]></script>
42
+ </div>
43
+
44
+ <script type="text/javascript">
45
+ function mgShowTwitterBox(){
46
+ var twitterBoxWidth = $('mgbase_store_twitter').getWidth() - 30;
47
+ var twitterBoxCode = '<a class="twitter-timeline" href="https://twitter.com/search?q=%23Magento%20AND%20from%3A%40ModulesGarden" data-tweet-limit="5" data-widget-id="532534423783079936"></a>';
48
+ document.getElementById('mgbase_store_twitter').innerHTML = twitterBoxCode;
49
+
50
+ !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
51
+ return false;
52
+ }
53
+
54
+ mgShowTwitterBox();
55
+ </script>
app/design/adminhtml/default/default/template/modulesgardenbase/widget/form.phtml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-05-16, 12:14:56)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+ ?>
29
+
30
+ <div class="modulesgarden_form">
31
+ <div class="entry-edit">
32
+ <?php echo $this->getFormHtml();?>
33
+ </div>
34
+ <?php echo $this->getChildHtml('form_after');?>
35
+ </div>
app/design/adminhtml/default/default/template/modulesgardenbase/widget/form/container.phtml ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-05-16, 12:17:41)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+
29
+ $jsFormVar = $this->getJsFormVar() ? $this->getJsFormVar() : 'editForm';
30
+ $jsFormId = $this->getJsFormId() ? $this->getJsFormId() : 'edit_form';
31
+ ?>
32
+
33
+ <div class="modulesgarden_form_container">
34
+ <?php echo $this->getFormInitScripts() ?>
35
+ <div class="content-header <?php echo $this->getSkipHeaderCopy() ? 'skip-header' : ''; ?>">
36
+ <?php echo $this->getHeaderHtml() ?>
37
+ <p class="form-buttons"><?php echo $this->getButtonsHtml('header') ?></p>
38
+ </div>
39
+ <?php echo $this->getFormHtml() ?>
40
+ <?php if ($this->hasFooterButtons()): ?>
41
+ <div class="content-footer">
42
+ <p class="form-buttons"><?php echo $this->getButtonsHtml('footer') ?></p>
43
+ </div>
44
+ <?php endif; ?>
45
+ <script type="text/javascript">
46
+ <?php echo $jsFormVar; ?> = new varienForm('<?php echo $jsFormId; ?>', '<?php echo $this->getValidationUrl() ?>');
47
+ </script>
48
+ <?php echo $this->getFormScripts() ?>
49
+ </div>
app/design/adminhtml/default/default/template/modulesgardenbase/widget/grid/container.phtml ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-05-16, 11:24:43)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+ ?>
29
+
30
+ <div class="modulesgarden_grid_container">
31
+ <div class="content-header <?php echo $this->getSkipHeaderCopy() ? 'skip-header' : ''; ?>">
32
+ <table cellspacing="0">
33
+ <tr>
34
+ <td style="<?php echo $this->getHeaderWidth() ?>"><?php echo $this->getHeaderHtml() ?></td>
35
+ <td class="form-buttons"><?php echo $this->getButtonsHtml() ?></td>
36
+ </tr>
37
+ </table>
38
+ </div>
39
+ <div>
40
+ <?php echo $this->getGridHtml() ?>
41
+ </div>
42
+ </div>
app/design/adminhtml/default/default/template/modulesgardenbase/widget/tabs.phtml ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* * ********************************************************************
4
+ * Customization Services by ModulesGarden.com
5
+ * Copyright (c) ModulesGarden, INBS Group Brand, All Rights Reserved
6
+ * (2014-05-16, 09:10:13)
7
+ *
8
+ *
9
+ * CREATED BY MODULESGARDEN -> http://modulesgarden.com
10
+ * CONTACT -> contact@modulesgarden.com
11
+ *
12
+ *
13
+ *
14
+ *
15
+ * This software is furnished under a license and may be used and copied
16
+ * only in accordance with the terms of such license and with the
17
+ * inclusion of the above copyright notice. This software or any other
18
+ * copies thereof may not be provided or otherwise made available to any
19
+ * other person. No title to and ownership of the software is hereby
20
+ * transferred.
21
+ *
22
+ *
23
+ * ******************************************************************** */
24
+
25
+ /**
26
+ * @author Grzegorz Draganik <grzegorz@modulesgarden.com>
27
+ */
28
+ ?>
29
+
30
+ <div class="modulesgarden_tabs">
31
+ <?php if($this->getTitle()): ?>
32
+ <h3><?php echo $this->getTitle() ?></h3>
33
+ <?php endif ?>
34
+ <?php if(!empty($tabs)): ?>
35
+ <ul id="<?php echo $this->getId() ?>" class="tabs">
36
+ <?php foreach ($tabs as $_tab): ?>
37
+ <?php if (!$this->canShowTab($_tab)): continue; endif; ?>
38
+ <li <?php if($this->getTabIsHidden($_tab)): ?> style="display:none"<?php endif; ?>>
39
+ <a href="<?php echo $this->getTabUrl($_tab) ?>" id="<?php echo $this->getTabId($_tab) ?>" name="<?php echo $this->getTabId($_tab, false) ?>" title="<?php echo $this->getTabTitle($_tab) ?>" class="tab-item-link <?php echo $this->getTabClass($_tab) ?><?php if (preg_match('/\s?ajax\s?/', $_tab->getClass())) {?> notloaded<?php }?>">
40
+ <span><span class="changed" title="<?php echo $this->__('The information in this tab has been changed.') ?>"></span><span class="error" title="<?php echo $this->__('This tab contains invalid data. Please solve the problem before saving.') ?>"></span><?php echo $this->getTabLabel($_tab); ?></span>
41
+ </a>
42
+ <div id="<?php echo $this->getTabId($_tab) ?>_content" style="display:none;"><?php echo $this->getTabContent($_tab) ?></div>
43
+ </li>
44
+ <?php endforeach; ?>
45
+ </ul>
46
+ <script type="text/javascript">
47
+ <?php echo $this->getJsObjectName() ?> = new varienTabs('<?php echo $this->getId() ?>', '<?php echo $this->getDestElementId() ?>', '<?php echo $this->getActiveTabId() ?>', <?php echo $this->getAllShadowTabs()?>);
48
+ </script>
49
+ <?php endif; ?>
50
+
51
+ <div class="modulesgarden_logo">
52
+ <a href="http://www.modulesgarden.com/development/ecommerce/magento" target="_blank">
53
+ <img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN) ?>/adminhtml/base/default/modulesgardenbase/img/modulesgarden.png" />
54
+ </a>
55
+ </div>
56
+ </div>
app/etc/modules/Modulesgarden_Base.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <Modulesgarden_Base>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Modulesgarden_Base>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Modulesgarden_Base</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license>OSL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>ModulesGarden Base For Magento is a free addition to any of our extensions and themes. It allows you to be up to date with currently installed ModulesGarden extensions and themes as well as view other ModulesGarden products for Magento.</summary>
10
+ <description>ModulesGarden Base For Magento is a free addition to any of our extensions and themes. It allows you to be up to date with currently installed ModulesGarden extensions and themes as well as view other ModulesGarden products for Magento. The extensions will enable you to receive notifications about a new version of the extension you already have, a new extension or upgrade of an existing extension, ModulesGarden extensions or themes promotions/discounts, and the latest ModulesGarden tweets concerning Magento.</description>
11
+ <notes>Initial Release</notes>
12
+ <authors><author><name>ModulesGarden</name><user>ModulesGarden</user><email>peter@inbsgroup.com</email></author></authors>
13
+ <date>2015-05-14</date>
14
+ <time>11:26:25</time>
15
+ <contents><target name="magecommunity"><dir name="Modulesgarden"><dir name="Base"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Fieldset"><file name="Installedmodulesgarden.php" hash="3df0af37eca70802f63d831ba460f87b"/><file name="Installedmodulesgardenthemes.php" hash="da2d69d723ff9ece82665d1d70541dd0"/><file name="Installedothers.php" hash="f91396d22bfaa0620ba31e5b6bf92e38"/><file name="Installedratio.php" hash="1a1679fd99e74e8172d2952742c446ba"/><file name="Modulesgarden.php" hash="e79433fe6b0ec69bf1cd83e1a0b97055"/><file name="Store.php" hash="ba1d8a16cc9675c1b7de01e81cc0c7b7"/><file name="Twitter.php" hash="c1d0ffb9c445cb816a12e4675376f54a"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="a23cff97e79a0281b28e13bbb87c989d"/></dir><dir name="Model"><dir name="Adminnotification"><file name="Inbox.php" hash="428c27b1ec1d5bdff9cbbc9db5e82226"/></dir><dir name="Extension"><file name="Client.php" hash="f6cd0c6832db81bd01e696b456b4e016"/></dir><file name="Extension.php" hash="626db517c7c46dfc062ba1a8ac135fdc"/><file name="Mage.php" hash="79fbec924453acd685327a8db83e0c40"/><file name="Observer.php" hash="dbde463989a7f330e0421ce3d07d8c12"/><dir name="Resource"><file name="Extension.php" hash="2903749600ecda082a8f2c291fbfdd59"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Notificationevents.php" hash="4d164a1932238a388a16e75b04085a5a"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="c110e77231868a94bb734aad0cf9b30c"/><file name="config.xml" hash="d4a4d3de652488769909e595f57e449c"/><file name="system.xml" hash="5e5441576d62ec77b27ad5c9bae3b78b"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="modulesgardenbase.xml" hash="f9aa850ca502495cf6467686c5e1aa42"/></dir><dir name="template"><dir name="modulesgardenbase"><dir name="system"><dir name="config"><dir name="form"><dir name="fieldset"><file name="installedmodulesgarden.phtml" hash="633074ef64326710d4214b5309604cc9"/><file name="installedmodulesgardenthemes.phtml" hash="64313de5566b153377ba76947dfc354d"/><file name="installedothers.phtml" hash="fa40d98a17b6d1c9354d4c45471748a5"/><file name="installedratio.phtml" hash="939cfd21c0dbe0972cee9583ba20484b"/><file name="store.phtml" hash="ed4d3a670ee9a9d1ee5ff540b78c6166"/><file name="twitter.phtml" hash="d955abbc4a16c33c7169a9d219f75cf5"/></dir></dir></dir></dir><dir name="widget"><dir name="form"><file name="container.phtml" hash="7d255229c84eccfbe5f3edc15b88fddf"/></dir><file name="form.phtml" hash="885d4544407aed221582e79697b64e47"/><dir name="grid"><file name="container.phtml" hash="2560f0b75910ab22936a1cd05cab2e20"/></dir><file name="tabs.phtml" hash="ab51533c04ac6df20a721f33add3d8c8"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Modulesgarden_Base.xml" hash="7e08916cafe861737ef2c91956ba6600"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="modulesgardenbase"><dir name="css"><file name="modulesgarden.css" hash="650577b300aee71663f56162c3281473"/></dir><dir name="img"><file name="arrows.png" hash="8f6063c353557f32422521b2d7944734"/><file name="arrows_both.png" hash="0c1e461aa5a44b095a7522d08fa620bf"/><file name="arrows_down.png" hash="28b63c1742de966de6627d09047655d4"/><file name="arrows_down_dr.png" hash="58a61fbd2450542546e1a8bb46f990a7"/><file name="arrows_right.png" hash="e0e361c5792b26f5da2a2122b9f88d3f"/><file name="arrows_right_dr.png" hash="8b7af3a05c2b921313b39ae4fca2c3bf"/><file name="arrows_up.png" hash="f5210ec0865d4f2e59f878fc18506c61"/><dir name="icons"><file name="add_btn_icon.gif" hash="29ba6721f6188ffb67d1ce971a17509a"/><file name="bkg_btn-close2.gif" hash="efbc20287cea1d26712b4d9bd4a4d7b5"/><file name="btn_add-image_icon.gif" hash="b85039dd1dd204f348b6df6f3b11dcf7"/><file name="btn_add-widget_icon.gif" hash="eb7c1817b3706ce99cd1e4a0fbb619e7"/><file name="btn_go.gif" hash="0bfe09ca976da5ff1a6474305a40c95b"/><file name="btn_save_icon.gif" hash="bb25772f4f864f0ab4fd27255f027641"/><file name="btn_show-hide_icon.gif" hash="3e906aa321395f8828d457936dd5c4d9"/><file name="cancel_btn_icon.gif" hash="30a7d2003e8456ae2fb18eb52ad43305"/><file name="entry_edit_head_arrow_down.gif" hash="c0cc1a81d382db0f93d1acb243331c68"/><file name="entry_edit_head_arrow_down2.gif" hash="fd5c4bcf6ba5012262acb3b5108498ea"/><file name="entry_edit_head_arrow_up.gif" hash="fe7b94bd5c8984930143d3875523de3b"/><file name="error-msg.png" hash="dbcd59735bdd1fc9d8817f1ed3913ca9"/><file name="error_msg_icon.gif" hash="8855b0d4f318bf14e5f721617298447c"/><file name="icon_btn_add.gif" hash="29ba6721f6188ffb67d1ce971a17509a"/><file name="module.png" hash="7dfc67e00048390302bbabd7562e5510"/><file name="more_arrow.gif" hash="6702a983eba5b8273c60102c2d16d43e"/><file name="reload.png" hash="a6550016386975aa94cd36ae00e641b8"/><file name="save_btn_icon.gif" hash="bb25772f4f864f0ab4fd27255f027641"/></dir><file name="mgcommerce-logo.png" hash="8757e70e181c7360dbf280a94250a3ac"/><file name="modulesgarden.png" hash="60c4a74c9f6499dd1f0f62a668a1f777"/></dir></dir></dir></dir></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.2.13</min><max>5.6.0</max></php></required></dependencies>
18
+ </package>
skin/adminhtml/base/default/modulesgardenbase/css/modulesgarden.css ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* TABS */
2
+
3
+ .modulesgarden_tabs li a:link, .modulesgarden_tabs li a:visited {
4
+ color: #1c4b8c;
5
+ background: #f6f9fd;
6
+ line-height: 32px;
7
+ }
8
+
9
+ .modulesgarden_tabs a.active:link, .modulesgarden_tabs a.active:visited {
10
+ background: #1c4b8c !important;
11
+ color: #fff;
12
+ }
13
+
14
+ .modulesgarden_tabs a.active span {
15
+ background: inherit !important;
16
+ }
17
+
18
+ .modulesgarden_tabs li a:hover {
19
+ background: #2562b7;
20
+ color: #fff;
21
+ }
22
+
23
+ .modulesgarden_tabs h3 {
24
+ color: #2056a1;
25
+ font-weight: lighter;
26
+ font-size: 18px;
27
+ }
28
+
29
+ .modulesgarden_tabs ul.tabs a span.changed, .modulesgarden_tabs ul.tabs a:hover span.changed, .modulesgarden_tabs ul.tabs a span.error, .modulesgarden_tabs ul.tabs a:hover span.error {
30
+ margin-top: 7px;
31
+ }
32
+
33
+ .modulesgarden_tabs .error, .modulesgarden_tabs a.error span, .modulesgarden_tabs .required, .modulesgarden_tabs .validation-advice {
34
+ color: #1c4b8c;
35
+ /*font-size: 16px;*/;
36
+ }
37
+
38
+ .modulesgarden_tabs a.active.error span {
39
+ color: white !important;
40
+ }
41
+
42
+
43
+ /* LOGO */
44
+
45
+ div.modulesgarden_logo {
46
+ margin-top: 50px;
47
+ }
48
+
49
+ div.modulesgarden_logo img {
50
+ width: 100%;
51
+ }
52
+
53
+ /* GRIDS */
54
+
55
+ .modulesgarden_grid_container .grid tr.headings {
56
+ background: #2562b7 !important;
57
+ background-image:none !important;
58
+ color: white;
59
+ }
60
+
61
+ .modulesgarden_grid_container tr.headings a span {
62
+ padding: 0;
63
+ line-height: 22px;
64
+ }
65
+
66
+ .modulesgarden_grid_container tr.headings a, .modulesgarden_grid_container tr.headings span {
67
+ color: white;
68
+ }
69
+
70
+ .modulesgarden_grid_container tr.headings span.nobr {
71
+ padding: 5px;
72
+ display: inline-block;
73
+ height: 24px;
74
+ line-height: 24px;
75
+ }
76
+
77
+ .modulesgarden_grid_container tr.headings .sort-arrow-desc, .modulesgarden_grid_container tr.headings .sort-arrow-asc {
78
+ background: #457DCC !important;
79
+ border: 0 !important;
80
+ }
81
+
82
+ .modulesgarden_grid_container tr.headings .sort-arrow-desc span, .modulesgarden_grid_container tr.headings .sort-arrow-asc span {
83
+ padding: 0 12px 2px 8px !important;
84
+ line-height: 17px !important;
85
+ }
86
+
87
+ .modulesgarden_grid_container tr.headings th .sort-arrow-desc span.sort-title {
88
+ background-image: url('../img/arrows_down.png') !important;
89
+ }
90
+
91
+ .modulesgarden_grid_container tr.headings th .sort-arrow-asc span.sort-title {
92
+ background-image: url('../img/arrows_up.png') !important;
93
+ }
94
+
95
+ .modulesgarden_grid_container tr.headings th a {
96
+ padding: 5px 4px 1px 0;
97
+ }
98
+
99
+ .modulesgarden_grid_container h3, h3.modulesgardenbase_config_header {
100
+ color: #2056a1;
101
+ font-weight: lighter;
102
+ font-size: 18px;
103
+ }
104
+
105
+ .modulesgarden_grid_container table.actions {
106
+ background: #ddd;
107
+ padding: 10px;
108
+ margin: 0;
109
+ color: #2f2f2f;
110
+ }
111
+
112
+ .modulesgarden_grid_container table.actions td {
113
+ vertical-align: middle;
114
+ }
115
+
116
+ .modulesgarden_grid_container .grid tr.filter {
117
+ background: white;
118
+ }
119
+
120
+ .modulesgarden_grid_container div.grid td {
121
+ padding: 4px;
122
+ }
123
+
124
+ .modulesgarden_grid_container div.grid tr.even td {
125
+ background: #eee;
126
+ }
127
+
128
+ .modulesgarden_grid_container a:link, .modulesgarden_grid_container a:visited {
129
+ color: #1c4b8c;
130
+ }
131
+
132
+
133
+ /* EDIT FORM */
134
+
135
+ .modulesgarden_form_container h3 {
136
+ color: #2056a1;
137
+ font-weight: lighter;
138
+ font-size: 18px;
139
+ }
140
+
141
+ .modulesgarden_form_container div.entry-edit-head {
142
+ background: #2562b7;
143
+ padding: 6px;
144
+ }
145
+
146
+ /* BUTTONS */
147
+
148
+ .modulesgarden_grid_container button,
149
+ .modulesgarden_form_container button,
150
+ .modulesgarden_grid_container .form-button,
151
+ .modulesgarden_form_container .form-button,
152
+ .modulesgarden_grid_container button.save,
153
+ .modulesgarden_form_container button.save,
154
+ #mgbase_store_twitter button {
155
+ border-color: rgba(21,76,153,1) !important;
156
+ -webkit-border-radius:0 !important;
157
+ -moz-border-radius:0 !important;
158
+ border-radius:0 !important;
159
+ background: #428BCA !important;
160
+ color: #fff !important;
161
+ background-image: none !important;
162
+ border: 1px solid transparent !important;
163
+ border-color: #357ebd !important;
164
+ vertical-align: middle !important;
165
+ }
166
+
167
+ .modulesgarden_grid_container button:hover,
168
+ .modulesgarden_form_container button:hover {
169
+ background: #2562B7 !important;
170
+ }
171
+
172
+ .modulesgarden_grid_container button:active,
173
+ .modulesgarden_form_container button:active {
174
+ background: #2562B7 !important;
175
+ }
176
+
177
+ .modulesgarden_grid_container button span,
178
+ .modulesgarden_form_container button.span {
179
+ line-height: 1.35em !important;
180
+ background-repeat: no-repeat !important;
181
+ background-position: 0 50% !important;
182
+ }
183
+
184
+ .modulesgarden_grid_container button.back,
185
+ .modulesgarden_form_container button.back {
186
+ background: rgb(255, 255, 255) !important;
187
+ background: -moz-linear-gradient(90deg, rgb(255, 255, 255) 0%, rgb(216, 216, 216) 100%) !important;
188
+ background: -webkit-linear-gradient(90deg, rgb(255, 255, 255) 0%, rgb(216, 216, 216) 100%) !important;
189
+ background: -o-linear-gradient(90deg, rgb(255, 255, 255) 0%, rgb(216, 216, 216) 100%) !important;
190
+ background: -ms-linear-gradient(90deg, rgb(255, 255, 255) 0%, rgb(216, 216, 216) 100%) !important;
191
+ background: linear-gradient(180deg, rgb(255, 255, 255) 0%, rgb(216, 216, 216) 100%) !important;
192
+ border-left:1px solid rgb(204, 204, 204) !important;
193
+ border-top:1px solid rgb(204, 204, 204) !important;
194
+ border-right:1px solid rgb(170, 170, 170) !important;
195
+ border-bottom:1px solid rgb(170, 170, 170) !important;
196
+ color:rgb(85, 85, 85) !important;
197
+ }
198
+
199
+ .modulesgarden_grid_container button.back:hover,
200
+ .modulesgarden_form_container button.back:hover {
201
+ background-image:none !important;
202
+ background-color:white !important;
203
+ }
204
+
205
+ .modulesgarden_grid_container button.cancel,
206
+ .modulesgarden_grid_container button.delete,
207
+ .modulesgarden_form_container button.cancel,
208
+ .modulesgarden_form_container button.delete {
209
+ background: rgb(66, 139, 202) !important;
210
+ background: -moz-linear-gradient(90deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
211
+ background: -webkit-linear-gradient(90deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
212
+ background: -o-linear-gradient(90deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
213
+ background: -ms-linear-gradient(90deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
214
+ background: linear-gradient(180deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
215
+ border-color:#357ebd !important;
216
+ }
217
+
218
+ .modulesgarden_grid_container button.cancel:hover,
219
+ .modulesgarden_grid_container button.delete:hover,
220
+ .modulesgarden_form_container button.cancel:hover,
221
+ .modulesgarden_form_container button.delete:hover {
222
+ background: rgb(66, 139, 202) !important;
223
+ background: -moz-linear-gradient(270deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
224
+ background: -webkit-linear-gradient(270deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
225
+ background: -o-linear-gradient(270deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
226
+ background: -ms-linear-gradient(270deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
227
+ background: linear-gradient(0deg, rgb(66, 139, 202) 0%, rgb(37, 98, 183) 100%) !important;
228
+ border:1px solid #357ebd !important;
229
+ }
230
+
231
+ .modulesgarden_grid_container button.add span,
232
+ .modulesgarden_form_container button.add span {
233
+ background-image: url(../img/icons/add_btn_icon.gif);
234
+ }
235
+
236
+ .modulesgarden_grid_container button.save span,
237
+ .modulesgarden_form_container button.save span {
238
+ background-image: url(../img/icons/save_btn_icon.gif);
239
+ }
240
+
241
+ .modulesgarden_grid_container button.cancel span,
242
+ .modulesgarden_grid_container button.delete span,
243
+ .modulesgarden_form_container button.cancel span,
244
+ .modulesgarden_form_container button.delete span {
245
+ background-image: url(../img/icons/cancel_btn_icon.gif);
246
+ }
247
+
248
+ .modulesgarden_grid_container button.show-hide span,
249
+ .modulesgarden_form_container button.show-hide span {
250
+ background-image: url(../img/icons/btn_show-hide_icon.gif);
251
+ padding-left: 26px;
252
+ }
253
+
254
+ .modulesgarden_grid_container button.go span,
255
+ .modulesgarden_form_container button.go span {
256
+ background-image: url(../img/icons/btn_go.gif);
257
+ padding-left: 16px;
258
+ }
259
+
260
+ .modulesgarden_grid_container button.add-widget span,
261
+ .modulesgarden_form_container button.add-widget span {
262
+ background-image: url(../img/icons/btn_add-widget_icon.gif);
263
+ }
264
+
265
+ .modulesgarden_grid_container button.add-image span,
266
+ .modulesgarden_form_container button.add-image span {
267
+ background-image: url(../img/icons/btn_add-image_icon.gif);
268
+ }
269
+
270
+ /* STORE */
271
+
272
+ .mg_store_container table.extension {
273
+ width:100%;
274
+ margin-bottom:20px;
275
+ }
276
+ .mg_store_container table.extension td {
277
+ background-color: #f8f8f8;
278
+ border-bottom:2px solid #e7e7e7;
279
+ vertical-align: middle;
280
+ }
281
+ .mg_store_container table.extension h3 {
282
+ display: inline-block;
283
+ margin-right: 10px;
284
+ }
285
+ .mg_store_container table.extension h3 a {
286
+ text-decoration:none;
287
+ }
288
+ .mg_store_container table.extension td.img img {
289
+ display:block;
290
+ width: 80px;
291
+ }
292
+ .mg_store_container table.extension td.img {
293
+ text-align: center;
294
+ padding:5px;
295
+ width: 85px;
296
+ }
297
+ .mg_store_container table.extension .storelabel {
298
+ display: inline-block;
299
+ margin:-2px 0 10px;
300
+ padding:3px 10px;
301
+ color:white;
302
+ font-weight:bold;
303
+ text-decoration:none;
304
+ }
305
+ .mg_store_container table.extension span.installed {
306
+ background-color:#009933;
307
+ }
308
+ .mg_store_container table.extension .new {
309
+ background-color:#cc3333;
310
+ }
311
+ .mg_store_container table.extension .new:hover {
312
+ background-color:#a41515;
313
+ }
314
+ .mg_store_container table.extension span.promotion {
315
+ background-color:#990033;
316
+ }
317
+ .mg_store_container table.extension td.price {
318
+ text-align: center;
319
+ padding:0 10px;
320
+ line-height: 25px;
321
+ }
322
+ .mg_store_container table.extension td.price strong {
323
+ display:block;
324
+ font-size:18px;
325
+ color:#1c4b8c;
326
+ }
327
+ .mg_store_container table.extension td.price a, #mgbase_store_twitter button {
328
+ text-decoration: none;
329
+ padding:7px 16px;
330
+ }
331
+ .mg_store_container table.extension td.price a:hover, #mgbase_store_twitter button:hover {
332
+ background-color: #1c4b8c !important;
333
+ }
334
+
335
+
336
+ #mgbase_store_twitter iframe {
337
+ width: 100% !important;
338
+ }
339
+
skin/adminhtml/base/default/modulesgardenbase/img/arrows.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/arrows_both.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/arrows_down.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/arrows_down_dr.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/arrows_right.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/arrows_right_dr.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/arrows_up.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/add_btn_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/bkg_btn-close2.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_add-image_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_add-widget_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_go.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_save_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/btn_show-hide_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/cancel_btn_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/entry_edit_head_arrow_down.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/entry_edit_head_arrow_down2.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/entry_edit_head_arrow_up.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/error-msg.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/error_msg_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/icon_btn_add.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/module.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/more_arrow.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/reload.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/icons/save_btn_icon.gif ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/mgcommerce-logo.png ADDED
Binary file
skin/adminhtml/base/default/modulesgardenbase/img/modulesgarden.png ADDED
Binary file