Version Notes
If you like Wordpress' "Preview Post" button, then this extension is for you.
Download this release
Release Info
Developer | Demac Media |
Extension | Demac_Preview |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- app/code/local/Demac/Adminhtml/Block/Catalog/Product/Edit.php +262 -0
- app/code/local/Demac/Adminhtml/etc/config.xml +17 -0
- app/code/local/Demac/All/Block/Notification/Window.php +55 -0
- app/code/local/Demac/All/Block/System/Config/Form/Fieldset/Demacall/Extensions.php +174 -0
- app/code/local/Demac/All/Helper/Config.php +28 -0
- app/code/local/Demac/All/Helper/Data.php +24 -0
- app/code/local/Demac/All/Model/Feed.php +88 -0
- app/code/local/Demac/All/Model/Feed/Abstract.php +67 -0
- app/code/local/Demac/All/Model/Feed/Extensions.php +136 -0
- app/code/local/Demac/All/Model/Feed/Updates.php +93 -0
- app/code/local/Demac/All/Model/Source/Updates/Type.php +74 -0
- app/code/local/Demac/All/etc/adminhtml.xml +49 -0
- app/code/local/Demac/All/etc/config.xml +119 -0
- app/code/local/Demac/All/etc/system.xml +53 -0
- app/design/adminhtml/default/default/template/demac/catalog/product/edit.phtml +134 -0
- app/design/adminhtml/default/default/template/demac_all/notification/window.phtml +75 -0
- app/design/adminhtml/default/default/template/demac_all/notification/window/first-run.phtml +59 -0
- app/etc/modules/Demac_Adminhtml.xml +9 -0
- app/etc/modules/Demac_all.xml +9 -0
- package.xml +18 -0
app/code/local/Demac/Adminhtml/Block/Catalog/Product/Edit.php
ADDED
@@ -0,0 +1,262 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Adminhtml
|
23 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Customer edit block
|
29 |
+
*
|
30 |
+
* @category Mage
|
31 |
+
* @package Mage_Adminhtml
|
32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
33 |
+
*/
|
34 |
+
class Demac_Adminhtml_Block_Catalog_Product_Edit extends Mage_Adminhtml_Block_Widget
|
35 |
+
{
|
36 |
+
public function __construct()
|
37 |
+
{
|
38 |
+
parent::__construct();
|
39 |
+
$this->setTemplate('demac/catalog/product/edit.phtml');
|
40 |
+
$this->setId('product_edit');
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Retrieve currently edited product object
|
45 |
+
*
|
46 |
+
* @return Mage_Catalog_Model_Product
|
47 |
+
*/
|
48 |
+
public function getProduct()
|
49 |
+
{
|
50 |
+
return Mage::registry('current_product');
|
51 |
+
}
|
52 |
+
|
53 |
+
protected function _prepareLayout()
|
54 |
+
{
|
55 |
+
$_product = $this->getProduct();
|
56 |
+
if (!$this->getRequest()->getParam('popup')) {
|
57 |
+
$this->setChild('back_button',
|
58 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
59 |
+
->setData(array(
|
60 |
+
'label' => Mage::helper('catalog')->__('Back'),
|
61 |
+
'onclick' => 'setLocation(\''.$this->getUrl('*/*/', array('store'=>$this->getRequest()->getParam('store', 0))).'\')',
|
62 |
+
'class' => 'back'
|
63 |
+
))
|
64 |
+
);
|
65 |
+
$this->setChild('preview_button',
|
66 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
67 |
+
->setData(array(
|
68 |
+
'label' => Mage::helper('catalog')->__('Preview'),
|
69 |
+
'onclick' => 'window.open(\''. Mage::getModel('core/store')->load(0)->getUrl() . $_product->getUrlPath().'\')'
|
70 |
+
))
|
71 |
+
);
|
72 |
+
} else {
|
73 |
+
$this->setChild('back_button',
|
74 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
75 |
+
->setData(array(
|
76 |
+
'label' => Mage::helper('catalog')->__('Close Window'),
|
77 |
+
'onclick' => 'window.close()',
|
78 |
+
'class' => 'cancel'
|
79 |
+
))
|
80 |
+
);
|
81 |
+
}
|
82 |
+
|
83 |
+
if (!$this->getProduct()->isReadonly()) {
|
84 |
+
$this->setChild('reset_button',
|
85 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
86 |
+
->setData(array(
|
87 |
+
'label' => Mage::helper('catalog')->__('Reset'),
|
88 |
+
'onclick' => 'setLocation(\''.$this->getUrl('*/*/*', array('_current'=>true)).'\')'
|
89 |
+
))
|
90 |
+
);
|
91 |
+
|
92 |
+
$this->setChild('save_button',
|
93 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
94 |
+
->setData(array(
|
95 |
+
'label' => Mage::helper('catalog')->__('Save'),
|
96 |
+
'onclick' => 'productForm.submit()',
|
97 |
+
'class' => 'save'
|
98 |
+
))
|
99 |
+
);
|
100 |
+
}
|
101 |
+
|
102 |
+
if (!$this->getRequest()->getParam('popup')) {
|
103 |
+
if (!$this->getProduct()->isReadonly()) {
|
104 |
+
$this->setChild('save_and_edit_button',
|
105 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
106 |
+
->setData(array(
|
107 |
+
'label' => Mage::helper('catalog')->__('Save and Continue Edit'),
|
108 |
+
'onclick' => 'saveAndContinueEdit(\''.$this->getSaveAndContinueUrl().'\')',
|
109 |
+
'class' => 'save'
|
110 |
+
))
|
111 |
+
);
|
112 |
+
}
|
113 |
+
if ($this->getProduct()->isDeleteable()) {
|
114 |
+
$this->setChild('delete_button',
|
115 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
116 |
+
->setData(array(
|
117 |
+
'label' => Mage::helper('catalog')->__('Delete'),
|
118 |
+
'onclick' => 'confirmSetLocation(\''.Mage::helper('catalog')->__('Are you sure?').'\', \''.$this->getDeleteUrl().'\')',
|
119 |
+
'class' => 'delete'
|
120 |
+
))
|
121 |
+
);
|
122 |
+
}
|
123 |
+
|
124 |
+
if ($this->getProduct()->isDuplicable()) {
|
125 |
+
$this->setChild('duplicate_button',
|
126 |
+
$this->getLayout()->createBlock('adminhtml/widget_button')
|
127 |
+
->setData(array(
|
128 |
+
'label' => Mage::helper('catalog')->__('Duplicate'),
|
129 |
+
'onclick' => 'setLocation(\'' . $this->getDuplicateUrl() . '\')',
|
130 |
+
'class' => 'add'
|
131 |
+
))
|
132 |
+
);
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
return parent::_prepareLayout();
|
137 |
+
}
|
138 |
+
|
139 |
+
public function getBackButtonHtml()
|
140 |
+
{
|
141 |
+
return $this->getChildHtml('back_button');
|
142 |
+
}
|
143 |
+
|
144 |
+
public function getPreviewButtonHtml()
|
145 |
+
{
|
146 |
+
return $this->getChildHtml('preview_button');
|
147 |
+
}
|
148 |
+
|
149 |
+
public function getCancelButtonHtml()
|
150 |
+
{
|
151 |
+
return $this->getChildHtml('reset_button');
|
152 |
+
}
|
153 |
+
|
154 |
+
public function getSaveButtonHtml()
|
155 |
+
{
|
156 |
+
return $this->getChildHtml('save_button');
|
157 |
+
}
|
158 |
+
|
159 |
+
public function getSaveAndEditButtonHtml()
|
160 |
+
{
|
161 |
+
return $this->getChildHtml('save_and_edit_button');
|
162 |
+
}
|
163 |
+
|
164 |
+
public function getDeleteButtonHtml()
|
165 |
+
{
|
166 |
+
return $this->getChildHtml('delete_button');
|
167 |
+
}
|
168 |
+
|
169 |
+
public function getDuplicateButtonHtml()
|
170 |
+
{
|
171 |
+
return $this->getChildHtml('duplicate_button');
|
172 |
+
}
|
173 |
+
|
174 |
+
public function getValidationUrl()
|
175 |
+
{
|
176 |
+
return $this->getUrl('*/*/validate', array('_current'=>true));
|
177 |
+
}
|
178 |
+
|
179 |
+
public function getSaveUrl()
|
180 |
+
{
|
181 |
+
return $this->getUrl('*/*/save', array('_current'=>true, 'back'=>null));
|
182 |
+
}
|
183 |
+
|
184 |
+
public function getSaveAndContinueUrl()
|
185 |
+
{
|
186 |
+
return $this->getUrl('*/*/save', array(
|
187 |
+
'_current' => true,
|
188 |
+
'back' => 'edit',
|
189 |
+
'tab' => '{{tab_id}}',
|
190 |
+
'active_tab' => null
|
191 |
+
));
|
192 |
+
}
|
193 |
+
|
194 |
+
public function getProductId()
|
195 |
+
{
|
196 |
+
return $this->getProduct()->getId();
|
197 |
+
}
|
198 |
+
|
199 |
+
public function getProductSetId()
|
200 |
+
{
|
201 |
+
$setId = false;
|
202 |
+
if (!($setId = $this->getProduct()->getAttributeSetId()) && $this->getRequest()) {
|
203 |
+
$setId = $this->getRequest()->getParam('set', null);
|
204 |
+
}
|
205 |
+
return $setId;
|
206 |
+
}
|
207 |
+
|
208 |
+
public function getIsGrouped()
|
209 |
+
{
|
210 |
+
return $this->getProduct()->isGrouped();
|
211 |
+
}
|
212 |
+
|
213 |
+
public function getDeleteUrl()
|
214 |
+
{
|
215 |
+
return $this->getUrl('*/*/delete', array('_current'=>true));
|
216 |
+
}
|
217 |
+
|
218 |
+
public function getDuplicateUrl()
|
219 |
+
{
|
220 |
+
return $this->getUrl('*/*/duplicate', array('_current'=>true));
|
221 |
+
}
|
222 |
+
|
223 |
+
public function getHeader()
|
224 |
+
{
|
225 |
+
$header = '';
|
226 |
+
if ($this->getProduct()->getId()) {
|
227 |
+
$header = $this->htmlEscape($this->getProduct()->getName());
|
228 |
+
}
|
229 |
+
else {
|
230 |
+
$header = Mage::helper('catalog')->__('New Product');
|
231 |
+
}
|
232 |
+
if ($setName = $this->getAttributeSetName()) {
|
233 |
+
$header.= ' (' . $setName . ')';
|
234 |
+
}
|
235 |
+
return $header;
|
236 |
+
}
|
237 |
+
|
238 |
+
public function getAttributeSetName()
|
239 |
+
{
|
240 |
+
if ($setId = $this->getProduct()->getAttributeSetId()) {
|
241 |
+
$set = Mage::getModel('eav/entity_attribute_set')
|
242 |
+
->load($setId);
|
243 |
+
return $set->getAttributeSetName();
|
244 |
+
}
|
245 |
+
return '';
|
246 |
+
}
|
247 |
+
|
248 |
+
public function getIsConfigured()
|
249 |
+
{
|
250 |
+
if ($this->getProduct()->isConfigurable()
|
251 |
+
&& !($superAttributes = $this->getProduct()->getTypeInstance(true)->getUsedProductAttributeIds($this->getProduct()))) {
|
252 |
+
$superAttributes = false;
|
253 |
+
}
|
254 |
+
|
255 |
+
return !$this->getProduct()->isConfigurable() || $superAttributes !== false;
|
256 |
+
}
|
257 |
+
|
258 |
+
public function getSelectedTabId()
|
259 |
+
{
|
260 |
+
return addslashes(htmlspecialchars($this->getRequest()->getParam('tab')));
|
261 |
+
}
|
262 |
+
}
|
app/code/local/Demac/Adminhtml/etc/config.xml
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Demac_Adminhtml>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Demac_Adminhtml>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<blocks>
|
10 |
+
<adminhtml>
|
11 |
+
<rewrite>
|
12 |
+
<catalog_product_edit>Demac_Adminhtml_Block_Catalog_Product_Edit</catalog_product_edit>
|
13 |
+
</rewrite>
|
14 |
+
</adminhtml>
|
15 |
+
</blocks>
|
16 |
+
</global>
|
17 |
+
</config>
|
app/code/local/Demac/All/Block/Notification/Window.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
class Demac_All_Block_Notification_Window extends Mage_Adminhtml_Block_Notification_Window{
|
19 |
+
protected function _construct(){
|
20 |
+
parent::_construct();
|
21 |
+
|
22 |
+
if(!Mage::getStoreConfig('demacall/install/run')){
|
23 |
+
$c = Mage::getModel('core/config_data');
|
24 |
+
$c
|
25 |
+
->setScope('default')
|
26 |
+
->setPath('demacall/install/run')
|
27 |
+
->setValue(time())
|
28 |
+
->save();
|
29 |
+
$this->setHeaderText($this->__("Demac Media Notifications Setup"));
|
30 |
+
$this->setIsFirstRun(1);
|
31 |
+
$this->setIsHtml(1);
|
32 |
+
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function _toHtml(){
|
37 |
+
if($this->getIsHtml()){
|
38 |
+
$this->setTemplate('demac_all/notification/window.phtml');
|
39 |
+
}
|
40 |
+
return parent::_toHtml();
|
41 |
+
}
|
42 |
+
public function presetFirstSetup(){
|
43 |
+
|
44 |
+
}
|
45 |
+
public function getNoticeMessageText(){
|
46 |
+
if($this->getIsFirstRun()){
|
47 |
+
$child = $this->getLayout()->createBlock('core/template')->setTemplate('demac_all/notification/window/first-run.phtml')->toHtml();
|
48 |
+
return $child;
|
49 |
+
}else{
|
50 |
+
return $this->getData('notice_message_text');
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
+
}
|
app/code/local/Demac/All/Block/System/Config/Form/Fieldset/Demacall/Extensions.php
ADDED
@@ -0,0 +1,174 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
|
19 |
+
class Demac_All_Block_System_Config_Form_Fieldset_Demacall_Extensions extends Mage_Adminhtml_Block_System_Config_Form_Fieldset{
|
20 |
+
|
21 |
+
protected $_dummyElement;
|
22 |
+
protected $_fieldRenderer;
|
23 |
+
protected $_values;
|
24 |
+
|
25 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
26 |
+
{
|
27 |
+
$html = $this->_getHeaderHtml($element);
|
28 |
+
$modules = array_keys((array)Mage::getConfig()->getNode('modules')->children());
|
29 |
+
sort($modules);
|
30 |
+
|
31 |
+
foreach ($modules as $moduleName) {
|
32 |
+
if (strstr($moduleName,'Demac_') === false) {
|
33 |
+
continue;
|
34 |
+
}
|
35 |
+
|
36 |
+
if($moduleName == 'Demac_Core' || $moduleName == 'Demac_All'){
|
37 |
+
continue;
|
38 |
+
}
|
39 |
+
|
40 |
+
$html.= $this->_getFieldHtml($element, $moduleName);
|
41 |
+
}
|
42 |
+
$html .= $this->_getFooterHtml($element);
|
43 |
+
|
44 |
+
return $html;
|
45 |
+
}
|
46 |
+
|
47 |
+
protected function _getDummyElement()
|
48 |
+
{
|
49 |
+
if (empty($this->_dummyElement)) {
|
50 |
+
$this->_dummyElement = new Varien_Object(array('show_in_default'=>1, 'show_in_website'=>1));
|
51 |
+
}
|
52 |
+
return $this->_dummyElement;
|
53 |
+
}
|
54 |
+
|
55 |
+
protected function _getFieldRenderer()
|
56 |
+
{
|
57 |
+
if (empty($this->_fieldRenderer)) {
|
58 |
+
$this->_fieldRenderer = Mage::getBlockSingleton('adminhtml/system_config_form_field');
|
59 |
+
}
|
60 |
+
return $this->_fieldRenderer;
|
61 |
+
}
|
62 |
+
|
63 |
+
protected function _getFieldHtml($fieldset, $moduleName)
|
64 |
+
{
|
65 |
+
$configData = $this->getConfigData();
|
66 |
+
|
67 |
+
try{
|
68 |
+
if($platform = Mage::getConfig()->getNode("modules/$moduleName/platform")){
|
69 |
+
$platform = strtolower($platform);
|
70 |
+
$ignore_platform = false;
|
71 |
+
}else{
|
72 |
+
throw new Exception();
|
73 |
+
}
|
74 |
+
}catch(Exception $e){
|
75 |
+
$platform="ce";
|
76 |
+
$ignore_platform = true;
|
77 |
+
}
|
78 |
+
|
79 |
+
|
80 |
+
$path = 'advanced/modules_disable_output/'.$moduleName; //TODO: move as property of form
|
81 |
+
$data = isset($configData[$path]) ? $configData[$path] : array();
|
82 |
+
|
83 |
+
$e = $this->_getDummyElement();
|
84 |
+
|
85 |
+
$moduleKey = substr($moduleName, strpos($moduleName,'_')+1);
|
86 |
+
$ver = (Mage::getConfig()->getModuleConfig($moduleName)->version);
|
87 |
+
$id = $moduleName;
|
88 |
+
|
89 |
+
$warning = "";
|
90 |
+
if(!$ignore_platform){
|
91 |
+
$magentoVersion = $this->_convertVersion(Mage::getVersion());
|
92 |
+
|
93 |
+
if($magentoVersion >= $this->_convertVersion(demac_all_Helper_Config::ENTERPRISE_VERSION)){
|
94 |
+
// EE
|
95 |
+
if($platform == 'ce' || $platform=='pe'){
|
96 |
+
$warning = $this->__("This extension can't be run under Magento Enterprise platform. You need Enterprise version of the extension.");
|
97 |
+
}
|
98 |
+
|
99 |
+
}elseif($magentoVersion >= $this->_convertVersion(demac_all_Helper_Config::PROFESSIONAL_EDITION)){
|
100 |
+
// PE
|
101 |
+
if($platform == 'ce' ){
|
102 |
+
$warning = $this->__("This extension can't be run under Magento Professional platform. You need Professional version of the extension.");
|
103 |
+
}
|
104 |
+
}else{
|
105 |
+
// CE
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
|
110 |
+
|
111 |
+
|
112 |
+
$hasUpdate = false;
|
113 |
+
if($displayNames = Mage::app()->loadCache('demac_all_extensions_feed')){
|
114 |
+
if($displayNames = unserialize($displayNames)){
|
115 |
+
if(isset($displayNames[$moduleName])){
|
116 |
+
$url = @$displayNames[$moduleName]['url'];
|
117 |
+
$name = @$displayNames[$moduleName]['display_name'];
|
118 |
+
$version = @$displayNames[$moduleName]['version'];
|
119 |
+
|
120 |
+
$moduleName = '<a href="'.$url.'" target="_blank" title="'.$name.'">'.$name."</a>";
|
121 |
+
|
122 |
+
if($warning){
|
123 |
+
$update = '<a target="_blank"><img src="'.$this->getSkinUrl('demac_all/images/bad.gif').'" title="'.$this->__("Wrong Extension Platform").'"/></a>';
|
124 |
+
$moduleName ="$update $moduleName";
|
125 |
+
}else{
|
126 |
+
|
127 |
+
if($this->_convertVersion($ver) < $this->_convertVersion($version)){
|
128 |
+
$update = '<a href="'.$url.'" target="_blank"><img src="'.$this->getSkinUrl('demac_all/images/update.gif').'" title="'.$this->__("Update available").'"/></a>';
|
129 |
+
$hasUpdate = 1;
|
130 |
+
$moduleName ="$update $moduleName";
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
if(!$hasUpdate && !$warning){
|
138 |
+
$update = '<a target="_blank"><img src="'.$this->getSkinUrl('demac_all/images/ok.gif').'" title="'.$this->__("Installed").'"/></a>';
|
139 |
+
$moduleName ="$update $moduleName";
|
140 |
+
}elseif($warning && (!@$displayNames || !@$name)){
|
141 |
+
$update = '<a target="_blank"><img src="'.$this->getSkinUrl('demac_all/images/bad.gif').'" title="'.$this->__("Wrong Extension Platform").'"/></a>';
|
142 |
+
$moduleName ="$update $moduleName";
|
143 |
+
}
|
144 |
+
|
145 |
+
|
146 |
+
|
147 |
+
if($ver){
|
148 |
+
$field = $fieldset->addField($id, 'label',
|
149 |
+
array(
|
150 |
+
'name' => 'ssssss',
|
151 |
+
'label' => $moduleName,
|
152 |
+
'value' => $warning ? $warning : $ver,
|
153 |
+
|
154 |
+
))->setRenderer($this->_getFieldRenderer());
|
155 |
+
return $field->toHtml();
|
156 |
+
}
|
157 |
+
return '';
|
158 |
+
|
159 |
+
}
|
160 |
+
|
161 |
+
|
162 |
+
|
163 |
+
protected function _convertVersion($v){
|
164 |
+
$digits = @explode(".", $v);
|
165 |
+
$version = 0;
|
166 |
+
if(is_array($digits)){
|
167 |
+
foreach($digits as $k=>$v){
|
168 |
+
$version += ($v * pow(10, max(0, (3-$k))));
|
169 |
+
}
|
170 |
+
|
171 |
+
}
|
172 |
+
return $version;
|
173 |
+
}
|
174 |
+
}
|
app/code/local/Demac/All/Helper/Config.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
|
19 |
+
class Demac_All_Helper_Config extends Mage_Core_Helper_Abstract{
|
20 |
+
/** Extensions feed path */
|
21 |
+
const EXTENSIONS_FEED_URL = 'http://feeds.feedburner.com/DemacMediaMagentoExtensionsUpdates';
|
22 |
+
/** Updates Feed path */
|
23 |
+
const UPDATES_FEED_URL = 'http://feeds.feedburner.com/DemacMediaMagentoExtensionsUpdates';
|
24 |
+
|
25 |
+
const ENTERPRISE_VERSION = '1.7';
|
26 |
+
|
27 |
+
const PROFESSIONAL_EDITION = '1.6';
|
28 |
+
}
|
app/code/local/Demac/All/Helper/Data.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
class Demac_All_Helper_Data extends Mage_Core_Helper_Abstract{
|
19 |
+
|
20 |
+
|
21 |
+
|
22 |
+
}
|
23 |
+
|
24 |
+
|
app/code/local/Demac/All/Model/Feed.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* aheadWorks Co.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category AW
|
13 |
+
* @package AW_All
|
14 |
+
* @copyright Copyright (c) 2009-2010 aheadWorks Co. (http://www.aheadworks.com)
|
15 |
+
* @license http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
class Demac_All_Model_Feed extends Mage_AdminNotification_Model_Feed
|
19 |
+
{
|
20 |
+
const XML_USE_HTTPS_PATH = 'demacall/feed/use_https';
|
21 |
+
const XML_FEED_URL_PATH = 'demacall/feed/url';
|
22 |
+
const XML_FREQUENCY_PATH = 'demacall/feed/check_frequency';
|
23 |
+
const XML_FREQUENCY_ENABLE = 'demacall/feed/enabled';
|
24 |
+
const XML_LAST_UPDATE_PATH = 'demacall/feed/last_update';
|
25 |
+
|
26 |
+
|
27 |
+
public static function check(){
|
28 |
+
if(!Mage::getStoreConfig(self::XML_FREQUENCY_ENABLE)){
|
29 |
+
return;
|
30 |
+
}
|
31 |
+
return Mage::getModel('demacall/feed')->checkUpdate();
|
32 |
+
}
|
33 |
+
|
34 |
+
public function getFrequency(){
|
35 |
+
return Mage::getStoreConfig(self::XML_FREQUENCY_PATH) * 30;
|
36 |
+
}
|
37 |
+
|
38 |
+
public function getLastUpdate(){
|
39 |
+
//return 100;
|
40 |
+
return Mage::app()->loadCache('demacall_notifications_lastcheck');
|
41 |
+
}
|
42 |
+
|
43 |
+
public function setLastUpdate()
|
44 |
+
{
|
45 |
+
Mage::app()->saveCache(time(), 'demacall_notifications_lastcheck');
|
46 |
+
return $this;
|
47 |
+
}
|
48 |
+
public function getFeedUrl(){
|
49 |
+
if (is_null($this->_feedUrl)) {
|
50 |
+
$this->_feedUrl = (Mage::getStoreConfigFlag(self::XML_USE_HTTPS_PATH) ? 'https://' : 'http://')
|
51 |
+
. Mage::getStoreConfig(self::XML_FEED_URL_PATH);
|
52 |
+
}
|
53 |
+
return $this->_feedUrl;
|
54 |
+
}
|
55 |
+
|
56 |
+
public function checkUpdate(){
|
57 |
+
if (($this->getFrequency() + $this->getLastUpdate()) > time()) {
|
58 |
+
return $this;
|
59 |
+
}
|
60 |
+
|
61 |
+
$feedData = array();
|
62 |
+
|
63 |
+
$feedXml = $this->getFeedData();
|
64 |
+
Mage::log('Feed xml');
|
65 |
+
Mage::log($feedData);
|
66 |
+
if ($feedXml && $feedXml->channel && $feedXml->channel->item) {
|
67 |
+
foreach ($feedXml->channel->item as $item) {
|
68 |
+
$feedData[] = array(
|
69 |
+
'severity' => (int)$item->severity ? (int)$item->severity : 3,
|
70 |
+
'date_added' => $this->getDate((string)$item->pubDate),
|
71 |
+
'title' => (string)$item->title,
|
72 |
+
'description' => (string)$item->description,
|
73 |
+
'url' => (string)$item->link,
|
74 |
+
);
|
75 |
+
}
|
76 |
+
Mage::log('Feed Data');
|
77 |
+
Mage::log($feedData);
|
78 |
+
if ($feedData) {
|
79 |
+
Mage::getModel('adminnotification/inbox')->parse(array_reverse($feedData));
|
80 |
+
}
|
81 |
+
|
82 |
+
}
|
83 |
+
$this->setLastUpdate();
|
84 |
+
|
85 |
+
return $this;
|
86 |
+
}
|
87 |
+
|
88 |
+
}
|
app/code/local/Demac/All/Model/Feed/Abstract.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
|
19 |
+
class Demac_All_Model_Feed_Abstract extends Mage_Core_Model_Abstract{
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Retrieve feed data as XML element
|
23 |
+
*
|
24 |
+
* @return SimpleXMLElement
|
25 |
+
*/
|
26 |
+
public function getFeedData()
|
27 |
+
{
|
28 |
+
$curl = new Varien_Http_Adapter_Curl();
|
29 |
+
$curl->setConfig(array(
|
30 |
+
'timeout' => 1
|
31 |
+
));
|
32 |
+
$curl->write(Zend_Http_Client::GET, $this->getFeedUrl(), '1.0');
|
33 |
+
$data = $curl->read();
|
34 |
+
if ($data === false) {
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
$data = preg_split('/^\r?$/m', $data, 2);
|
38 |
+
$data = trim($data[1]);
|
39 |
+
$curl->close();
|
40 |
+
|
41 |
+
try {
|
42 |
+
$xml = new SimpleXMLElement($data);
|
43 |
+
}
|
44 |
+
catch (Exception $e) {
|
45 |
+
Mage::log($e);
|
46 |
+
return false;
|
47 |
+
}
|
48 |
+
//Mage::log($this->getFeedUrl());
|
49 |
+
//Mage::log($xml);
|
50 |
+
return $xml;
|
51 |
+
}
|
52 |
+
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Retrieve DB date from RSS date
|
56 |
+
*
|
57 |
+
* @param string $rssDate
|
58 |
+
* @return string YYYY-MM-DD YY:HH:SS
|
59 |
+
*/
|
60 |
+
public function getDate($rssDate)
|
61 |
+
{
|
62 |
+
return gmdate('Y-m-d H:i:s', strtotime($rssDate));
|
63 |
+
}
|
64 |
+
|
65 |
+
|
66 |
+
|
67 |
+
}
|
app/code/local/Demac/All/Model/Feed/Extensions.php
ADDED
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
|
19 |
+
class Demac_All_Model_Feed_Extensions extends Demac_All_Model_Feed_Abstract{
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Retrieve feed url
|
23 |
+
*
|
24 |
+
* @return string
|
25 |
+
*/
|
26 |
+
public function getFeedUrl(){
|
27 |
+
return Demac_All_Helper_Config::EXTENSIONS_FEED_URL;
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Checks feed
|
33 |
+
* @return
|
34 |
+
*/
|
35 |
+
public function check(){
|
36 |
+
if(!(Mage::app()->loadCache('demac_all_extensions_feed')) || (time()-Mage::app()->loadCache('demac_all_extensions_feed_lastcheck')) > Mage::getStoreConfig('demacall/feed/check_frequency')){
|
37 |
+
$this->refresh();
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
public function refresh(){
|
42 |
+
$exts = array();
|
43 |
+
try{
|
44 |
+
$Node = $this->getFeedData();
|
45 |
+
if(!$Node) return false;
|
46 |
+
foreach($Node->children() as $ext){
|
47 |
+
$exts[(string)$ext->name] = array(
|
48 |
+
'display_name' => (string)$ext->display_name,
|
49 |
+
'version' => (string)$ext->version,
|
50 |
+
'url' => (string)$ext->url
|
51 |
+
);
|
52 |
+
}
|
53 |
+
|
54 |
+
Mage::app()->saveCache(serialize($exts), 'demac_all_extensions_feed');
|
55 |
+
Mage::app()->saveCache(time(), 'demac_all_extensions_feed_lastcheck');
|
56 |
+
return true;
|
57 |
+
}catch(Exception $E){
|
58 |
+
return false;
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
public function checkExtensions(){
|
63 |
+
$modules = array_keys((array)Mage::getConfig()->getNode('modules')->children());
|
64 |
+
sort($modules);
|
65 |
+
$magentoVersion = $this->_convertVersion(Mage::getVersion());
|
66 |
+
|
67 |
+
foreach ($modules as $extensionName) {
|
68 |
+
if (strstr($extensionName,'Demac_') === false) {
|
69 |
+
continue;
|
70 |
+
}
|
71 |
+
if($extensionName == 'Demac_Core' || $extensionName == 'Demac_All'){
|
72 |
+
continue;
|
73 |
+
}
|
74 |
+
// echo $extensionName; die();
|
75 |
+
|
76 |
+
if($platform = $this->getExtensionPlatform($extensionName)){
|
77 |
+
if($magentoVersion >= $this->_convertVersion(Demac_All_Helper_Config::ENTERPRISE_VERSION)){
|
78 |
+
// EE
|
79 |
+
if($platform == 'ce' || $platform=='pe'){
|
80 |
+
$this->disableExtensionOutput($extensionName);
|
81 |
+
}
|
82 |
+
|
83 |
+
}elseif($magentoVersion >= $this->_convertVersion(Demac_All_Helper_Config::PROFESSIONAL_EDITION)){
|
84 |
+
// PE
|
85 |
+
if($platform == 'ce' ){
|
86 |
+
$this->disableExtensionOutput($extensionName);
|
87 |
+
}
|
88 |
+
}
|
89 |
+
}
|
90 |
+
}
|
91 |
+
return $this;
|
92 |
+
}
|
93 |
+
|
94 |
+
public function getExtensionPlatform($extensionName){
|
95 |
+
try{
|
96 |
+
if($platform = Mage::getConfig()->getNode("modules/$extensionName/platform")){
|
97 |
+
$platform = strtolower($platform);
|
98 |
+
return $platform;
|
99 |
+
}else{
|
100 |
+
throw new Exception();
|
101 |
+
}
|
102 |
+
}catch(Exception $e){
|
103 |
+
return false;
|
104 |
+
}
|
105 |
+
}
|
106 |
+
|
107 |
+
|
108 |
+
public function disableExtensionOutput($extensionName){
|
109 |
+
$coll = Mage::getModel('core/config_data')->getCollection();
|
110 |
+
$coll->getSelect()->where("path='advanced/modules_disable_output/$extensionName'");
|
111 |
+
$i=0;
|
112 |
+
foreach($coll as $cd){
|
113 |
+
$i++;
|
114 |
+
$cd->setValue(1)->save();
|
115 |
+
}
|
116 |
+
if($i==0){
|
117 |
+
Mage::getModel('core/config_data')
|
118 |
+
->setPath("advanced/modules_disable_output/$extensionName")
|
119 |
+
->setValue(1)
|
120 |
+
->save();
|
121 |
+
}
|
122 |
+
return $this;
|
123 |
+
}
|
124 |
+
|
125 |
+
protected function _convertVersion($v){
|
126 |
+
$digits = @explode(".", $v);
|
127 |
+
$version = 0;
|
128 |
+
if(is_array($digits)){
|
129 |
+
foreach($digits as $k=>$v){
|
130 |
+
$version += ($v * pow(10, max(0, (3-$k))));
|
131 |
+
}
|
132 |
+
|
133 |
+
}
|
134 |
+
return $version;
|
135 |
+
}
|
136 |
+
}
|
app/code/local/Demac/All/Model/Feed/Updates.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
class Demac_All_Model_Feed_Updates extends Demac_All_Model_Feed_Abstract{
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Retrieve feed url
|
22 |
+
*
|
23 |
+
* @return string
|
24 |
+
*/
|
25 |
+
public function getFeedUrl(){
|
26 |
+
return Demac_All_Helper_Config::UPDATES_FEED_URL;
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Checks feed
|
31 |
+
* @return
|
32 |
+
*/
|
33 |
+
public function check(){
|
34 |
+
if((time()-Mage::app()->loadCache('demac_all_updates_feed_lastcheck')) > Mage::getStoreConfig('demacall/feed/check_frequency')){
|
35 |
+
$this->refresh();
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
public function refresh(){
|
40 |
+
$feedData = array();
|
41 |
+
|
42 |
+
try{
|
43 |
+
|
44 |
+
//$Node = $this->getFeedData();
|
45 |
+
//if(!$Node) return false;
|
46 |
+
//foreach($Node->children() as $item){
|
47 |
+
|
48 |
+
//if($this->isInteresting($item)){
|
49 |
+
$feedXml = $this->getFeedData();
|
50 |
+
Mage::log('Feed xml');
|
51 |
+
Mage::log($feedXml);
|
52 |
+
if ($feedXml && $feedXml->channel && $feedXml->channel->item) {
|
53 |
+
foreach ($feedXml->channel->item as $item) {
|
54 |
+
//$date = strtotime((string)$item->date);
|
55 |
+
//if(!Mage::getStoreConfig('demacall/install/run') || (Mage::getStoreConfig('demacall/install/run') < $date)){
|
56 |
+
Mage::log('item');
|
57 |
+
Mage::log($item);
|
58 |
+
$feedData[] = array(
|
59 |
+
'severity' => 3,
|
60 |
+
'date_added' => $this->getDate((string)$item->pubDate),
|
61 |
+
'title' => (string)$item->title,
|
62 |
+
'description' => (string)$item->description,
|
63 |
+
'url' => (string)$item->link,
|
64 |
+
);
|
65 |
+
//}
|
66 |
+
}
|
67 |
+
}
|
68 |
+
Mage::log('Feed Data');
|
69 |
+
Mage::log($feedData);
|
70 |
+
if ($feedData) {
|
71 |
+
Mage::getModel('adminnotification/inbox')->parse(($feedData));
|
72 |
+
}
|
73 |
+
|
74 |
+
Mage::app()->saveCache(time(), 'demac_all_updates_feed_lastcheck');
|
75 |
+
return true;
|
76 |
+
}catch(Exception $E){
|
77 |
+
return false;
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
|
82 |
+
public function isExtensionInstalled($code){
|
83 |
+
$modules = array_keys((array)Mage::getConfig()->getNode('modules')->children());
|
84 |
+
|
85 |
+
foreach ($modules as $moduleName) {
|
86 |
+
if($moduleName == $code){
|
87 |
+
return true;
|
88 |
+
}
|
89 |
+
}
|
90 |
+
return false;
|
91 |
+
}
|
92 |
+
|
93 |
+
}
|
app/code/local/Demac/All/Model/Source/Updates/Type.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
|
19 |
+
class Demac_All_Model_Source_Updates_Type extends Mage_Eav_Model_Entity_Attribute_Source_Abstract{
|
20 |
+
|
21 |
+
const TYPE_PROMO = 'PROMO';
|
22 |
+
const TYPE_NEW_RELEASE = 'NEW_RELEASE';
|
23 |
+
const TYPE_UPDATE_RELEASE = 'UPDATE_RELEASE';
|
24 |
+
const TYPE_INFO = 'INFO';
|
25 |
+
const TYPE_INSTALLED_UPDATE = 'INSTALLED_UPDATE';
|
26 |
+
|
27 |
+
|
28 |
+
public function toOptionArray(){
|
29 |
+
return array(
|
30 |
+
array('value' => self::TYPE_UPDATE_RELEASE, 'label' => Mage::helper('demacall')->__('Extensions updates')),
|
31 |
+
array('value' => self::TYPE_NEW_RELEASE, 'label' => Mage::helper('demacall')->__('New Releases')),
|
32 |
+
array('value' => self::TYPE_INFO, 'label' => Mage::helper('demacall')->__('Other information'))
|
33 |
+
);
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Retrive all attribute options
|
38 |
+
*
|
39 |
+
* @return array
|
40 |
+
*/
|
41 |
+
public function getAllOptions()
|
42 |
+
{
|
43 |
+
return $this->toOptionArray();
|
44 |
+
}
|
45 |
+
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Returns label for value
|
49 |
+
* @param string $value
|
50 |
+
* @return string
|
51 |
+
*/
|
52 |
+
public function getLabel($value){
|
53 |
+
$options = $this->toOptionArray();
|
54 |
+
foreach($options as $v){
|
55 |
+
if($v['value'] == $value){
|
56 |
+
return $v['label'];
|
57 |
+
}
|
58 |
+
}
|
59 |
+
return '';
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Returns array ready for use by grid
|
64 |
+
* @return array
|
65 |
+
*/
|
66 |
+
public function getGridOptions(){
|
67 |
+
$items = $this->getAllOptions();
|
68 |
+
$out = array();
|
69 |
+
foreach($items as $item){
|
70 |
+
$out[$item['value']] = $item['label'];
|
71 |
+
}
|
72 |
+
return $out;
|
73 |
+
}
|
74 |
+
}
|
app/code/local/Demac/All/etc/adminhtml.xml
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<layout>
|
4 |
+
<updates>
|
5 |
+
<demacall module="Demac_All">
|
6 |
+
<file>demac_all.xml</file>
|
7 |
+
</demacall>
|
8 |
+
</updates>
|
9 |
+
</layout>
|
10 |
+
|
11 |
+
<acl>
|
12 |
+
<resources>
|
13 |
+
<all>
|
14 |
+
<title>Allow Everything</title>
|
15 |
+
</all>
|
16 |
+
<admin>
|
17 |
+
<children>
|
18 |
+
<system>
|
19 |
+
<children>
|
20 |
+
<config>
|
21 |
+
<children>
|
22 |
+
<demacall>
|
23 |
+
<title>Demac - All</title>
|
24 |
+
</demacall>
|
25 |
+
</children>
|
26 |
+
</config>
|
27 |
+
</children>
|
28 |
+
</system>
|
29 |
+
</children>
|
30 |
+
</admin>
|
31 |
+
</resources>
|
32 |
+
</acl>
|
33 |
+
<events>
|
34 |
+
<controller_action_predispatch>
|
35 |
+
<observers>
|
36 |
+
<demacall_exts>
|
37 |
+
<type>singleton</type>
|
38 |
+
<class>demacall/feed_extensions</class>
|
39 |
+
<method>check</method>
|
40 |
+
</demacall_exts>
|
41 |
+
<demacall_upds>
|
42 |
+
<type>singleton</type>
|
43 |
+
<class>demacall/feed_updates</class>
|
44 |
+
<method>check</method>
|
45 |
+
</demacall_upds>
|
46 |
+
</observers>
|
47 |
+
</controller_action_predispatch>
|
48 |
+
</events>
|
49 |
+
</config>
|
app/code/local/Demac/All/etc/config.xml
ADDED
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
|
4 |
+
<config>
|
5 |
+
<modules>
|
6 |
+
<Demac_All>
|
7 |
+
<version>1.0.0</version><platform>ce</platform>
|
8 |
+
</Demac_All>
|
9 |
+
</modules>
|
10 |
+
|
11 |
+
<global>
|
12 |
+
<blocks>
|
13 |
+
<demacall>
|
14 |
+
<class>Demac_All_Block</class>
|
15 |
+
</demacall>
|
16 |
+
<adminhtml>
|
17 |
+
<rewrite>
|
18 |
+
<notification_window>Demac_All_Block_Notification_Window</notification_window>
|
19 |
+
</rewrite>
|
20 |
+
</adminhtml>
|
21 |
+
</blocks>
|
22 |
+
<resources>
|
23 |
+
<demacall_setup>
|
24 |
+
<setup>
|
25 |
+
<module>Demac_All</module>
|
26 |
+
</setup>
|
27 |
+
<connection>
|
28 |
+
<use>core_setup</use>
|
29 |
+
</connection>
|
30 |
+
</demacall_setup>
|
31 |
+
<demacall_write>
|
32 |
+
<connection>
|
33 |
+
<use>core_write</use>
|
34 |
+
</connection>
|
35 |
+
</demacall_write>
|
36 |
+
<demacall_read>
|
37 |
+
<connection>
|
38 |
+
<use>core_read</use>
|
39 |
+
</connection>
|
40 |
+
</demacall_read>
|
41 |
+
</resources>
|
42 |
+
<models>
|
43 |
+
<demacall>
|
44 |
+
<class>Demac_All_Model</class>
|
45 |
+
</demacall>
|
46 |
+
</models>
|
47 |
+
|
48 |
+
<helpers>
|
49 |
+
<demacall>
|
50 |
+
<class>Demac_All_Helper</class>
|
51 |
+
</demacall>
|
52 |
+
</helpers>
|
53 |
+
</global>
|
54 |
+
|
55 |
+
<adminhtml>
|
56 |
+
<layout>
|
57 |
+
<updates>
|
58 |
+
<demacall module="Demac_All">
|
59 |
+
<file>Demac_All.xml</file>
|
60 |
+
</demacall>
|
61 |
+
</updates>
|
62 |
+
</layout>
|
63 |
+
|
64 |
+
<acl>
|
65 |
+
<resources>
|
66 |
+
<all>
|
67 |
+
<title>Allow Everything</title>
|
68 |
+
</all>
|
69 |
+
<admin>
|
70 |
+
<children>
|
71 |
+
<system>
|
72 |
+
<children>
|
73 |
+
<config>
|
74 |
+
<children>
|
75 |
+
<demacall>
|
76 |
+
<title>Demac - All</title>
|
77 |
+
</demacall>
|
78 |
+
</children>
|
79 |
+
</config>
|
80 |
+
</children>
|
81 |
+
</system>
|
82 |
+
</children>
|
83 |
+
</admin>
|
84 |
+
</resources>
|
85 |
+
</acl>
|
86 |
+
<events>
|
87 |
+
<controller_action_predispatch>
|
88 |
+
<observers>
|
89 |
+
<demacall_exts>
|
90 |
+
<type>singleton</type>
|
91 |
+
<class>demacall/feed_extensions</class>
|
92 |
+
<method>check</method>
|
93 |
+
</demacall_exts>
|
94 |
+
<demacall_check>
|
95 |
+
<type>singleton</type>
|
96 |
+
<class>demacall/feed_extensions</class>
|
97 |
+
<method>checkExtensions</method>
|
98 |
+
</demacall_check>
|
99 |
+
<demacall_upds>
|
100 |
+
<type>singleton</type>
|
101 |
+
<class>demacall/feed_updates</class>
|
102 |
+
<method>check</method>
|
103 |
+
</demacall_upds>
|
104 |
+
</observers>
|
105 |
+
</controller_action_predispatch>
|
106 |
+
</events>
|
107 |
+
</adminhtml>
|
108 |
+
<default>
|
109 |
+
<demacall>
|
110 |
+
<feed>
|
111 |
+
<url>ecommerce.aheadworks.com/blog/feed/?tag=feed&community=1</url>
|
112 |
+
<use_https>0</use_https>
|
113 |
+
<check_frequency>86400</check_frequency>
|
114 |
+
<enabled>1</enabled>
|
115 |
+
<interests>INFO,PROMO,UPDATE_RELEASE,NEW_RELEASE,INSTALLED_UPDATE</interests>
|
116 |
+
</feed>
|
117 |
+
</demacall>
|
118 |
+
</default>
|
119 |
+
</config>
|
app/code/local/Demac/All/etc/system.xml
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<demacall translate="label" module="demacall">
|
5 |
+
<label>Demac Media Extensions</label>
|
6 |
+
<sort_order>300</sort_order>
|
7 |
+
</demacall>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<demacall translate="label" module="demacall">
|
11 |
+
<label>Info</label>
|
12 |
+
<tab>demacall</tab>
|
13 |
+
<frontend_type>text</frontend_type>
|
14 |
+
<sort_order>99999</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 |
+
<extensions translate="label">
|
20 |
+
<label>Installed Demac Media Extensions</label>
|
21 |
+
<frontend_type>text</frontend_type>
|
22 |
+
<frontend_model>demacall/system_config_form_fieldset_demacall_extensions</frontend_model>
|
23 |
+
<sort_order>2</sort_order>
|
24 |
+
<show_in_default>1</show_in_default>
|
25 |
+
<show_in_website>1</show_in_website>
|
26 |
+
<show_in_store>1</show_in_store>
|
27 |
+
</extensions>
|
28 |
+
<feed>
|
29 |
+
<label>Notifications</label>
|
30 |
+
<frontend_type>text</frontend_type>
|
31 |
+
<sort_order>60</sort_order>
|
32 |
+
<show_in_default>1</show_in_default>
|
33 |
+
<show_in_website>1</show_in_website>
|
34 |
+
<show_in_store>1</show_in_store>
|
35 |
+
<fields>
|
36 |
+
<interests translate="label">
|
37 |
+
<label>I'd like to be informed by Demac Media about:</label>
|
38 |
+
<comment></comment>
|
39 |
+
<frontend_type>multiselect</frontend_type>
|
40 |
+
<sort_order>100</sort_order>
|
41 |
+
<show_in_default>1</show_in_default>
|
42 |
+
<show_in_website>1</show_in_website>
|
43 |
+
<show_in_store>1</show_in_store>
|
44 |
+
<can_be_empty>1</can_be_empty>
|
45 |
+
<source_model>demacall/source_updates_type</source_model>
|
46 |
+
</interests>
|
47 |
+
|
48 |
+
</fields>
|
49 |
+
</feed>
|
50 |
+
</groups>
|
51 |
+
</demacall>
|
52 |
+
</sections>
|
53 |
+
</config>
|
app/design/adminhtml/default/default/template/demac/catalog/product/edit.phtml
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package default_default
|
23 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
+
*/
|
26 |
+
?>
|
27 |
+
<?php
|
28 |
+
/**
|
29 |
+
* Template for Mage_Adminhtml_Block_Catalog_Product_Edit
|
30 |
+
*/
|
31 |
+
?>
|
32 |
+
|
33 |
+
|
34 |
+
|
35 |
+
<div class="content-header">
|
36 |
+
<h3 class="icon-head head-products"><?php echo $this->getHeader() ?></h3>
|
37 |
+
<p class="content-buttons form-buttons"><?php echo $this->getBackButtonHtml() ?>
|
38 |
+
<?php echo $this->getCancelButtonHtml() ?>
|
39 |
+
<?php if($this->getProductId()): ?>
|
40 |
+
<?php echo $this->getPreviewButtonHtml() ?>
|
41 |
+
<?php echo $this->getDeleteButtonHtml() ?>
|
42 |
+
<?php if($this->getProductSetId() && $this->getIsConfigured()): ?>
|
43 |
+
<?php echo $this->getDuplicateButtonHtml() ?>
|
44 |
+
<?php endif; ?>
|
45 |
+
<?php endif; ?>
|
46 |
+
<?php if($this->getProductSetId() && $this->getIsConfigured()): ?>
|
47 |
+
<?php echo $this->getSaveButtonHtml() ?>
|
48 |
+
<?php echo $this->getSaveAndEditButtonHtml() ?>
|
49 |
+
<?php endif; ?>
|
50 |
+
</p>
|
51 |
+
</div>
|
52 |
+
<form action="<?php echo $this->getSaveUrl() ?>" method="post" id="product_edit_form" enctype="multipart/form-data">
|
53 |
+
<?php echo $this->getBlockHtml('formkey')?>
|
54 |
+
<div style="display:none"></div>
|
55 |
+
</form>
|
56 |
+
<script type="text/javascript">
|
57 |
+
//<![CDATA[
|
58 |
+
var productTemplateSyntax = /(^|.|\r|\n)({{(\w+)}})/;
|
59 |
+
var productForm = new varienForm('product_edit_form', '<?php echo $this->getValidationUrl() ?>');
|
60 |
+
productForm._processValidationResult = function(transport) {
|
61 |
+
var response = transport.responseText.evalJSON();
|
62 |
+
if (response.error){
|
63 |
+
if (response.attribute && $(response.attribute)) {
|
64 |
+
$(response.attribute).setHasError(true, productForm);
|
65 |
+
Validation.ajaxError($(response.attribute), response.message);
|
66 |
+
if (!Prototype.Browser.IE){
|
67 |
+
$(response.attribute).focus();
|
68 |
+
}
|
69 |
+
}
|
70 |
+
else if ($('messages')) {
|
71 |
+
$('messages').innerHTML = '<ul class="messages"><li class="error-msg"><ul><li>' + response.message + '</li></ul></li></ul>';
|
72 |
+
}
|
73 |
+
}
|
74 |
+
else{
|
75 |
+
productForm._submit();
|
76 |
+
}
|
77 |
+
};
|
78 |
+
function saveAndContinueEdit(urlTemplate) {
|
79 |
+
var template = new Template(urlTemplate, productTemplateSyntax);
|
80 |
+
var url = template.evaluate({tab_id:product_info_tabsJsTabs.activeTab.id});
|
81 |
+
productForm.submit(url);
|
82 |
+
}
|
83 |
+
function setSettings(urlTemplate, setElement, typeElement) {
|
84 |
+
var template = new Template(urlTemplate, productTemplateSyntax);
|
85 |
+
setLocation(template.evaluate({attribute_set:$F(setElement),type:$F(typeElement)}));
|
86 |
+
}
|
87 |
+
|
88 |
+
function setSuperSettings(urlTemplate, attributesClass, validateField) {
|
89 |
+
var attributesFields = $$('.' + attributesClass);
|
90 |
+
var attributes = Form.serializeElements(attributesFields, true).attribute;
|
91 |
+
if(typeof attributes == 'string') {
|
92 |
+
attributes = [attributes];
|
93 |
+
}
|
94 |
+
|
95 |
+
if(!attributes) {
|
96 |
+
$(validateField).value = 'no-attributes';
|
97 |
+
} else {
|
98 |
+
$(validateField).value = 'has-attributes';
|
99 |
+
}
|
100 |
+
|
101 |
+
if (productForm.validator.validate()) {
|
102 |
+
var template = new Template(urlTemplate, productTemplateSyntax);
|
103 |
+
var url = template.evaluate({
|
104 |
+
attributes: encode_base64(attributes.join(',')).replace(new RegExp('/','g'),'%2F').replace(new RegExp('=','g'),'%3D')
|
105 |
+
});
|
106 |
+
setLocation(url);
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
function checkMaxLength(Object, MaxLen)
|
111 |
+
{
|
112 |
+
if (Object.value.length > MaxLen-1) {
|
113 |
+
Object.value = Object.value.substr(0, MaxLen);
|
114 |
+
}
|
115 |
+
return 1;
|
116 |
+
}
|
117 |
+
|
118 |
+
Event.observe(window, 'load', function() {
|
119 |
+
var objName = '<?php echo $this->getSelectedTabId() ?>';
|
120 |
+
if (objName) {
|
121 |
+
obj = $(objName);
|
122 |
+
//IE fix (bubbling event model)
|
123 |
+
product_info_tabsJsTabs.setSkipDisplayFirstTab();
|
124 |
+
product_info_tabsJsTabs.showTabContent(obj);
|
125 |
+
}
|
126 |
+
Product.AttributesBridge.setTabsObject(product_info_tabsJsTabs);
|
127 |
+
});
|
128 |
+
|
129 |
+
Validation.addAllThese([
|
130 |
+
['validate-super-product-attributes', '<?php echo Mage::helper('catalog')->__('Please select one or more attributes.') ?>', function(v) {
|
131 |
+
return (v != "no-attributes");
|
132 |
+
}]]);
|
133 |
+
//]]>
|
134 |
+
</script>
|
app/design/adminhtml/default/default/template/demac_all/notification/window.phtml
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
?>
|
19 |
+
<div id="message-popup-window-mask" style="display:none;"></div>
|
20 |
+
|
21 |
+
<div style="position:relative;margin-left:-390px;">
|
22 |
+
<div id="demac_notif" class="notification" style="display:none;">
|
23 |
+
<div class="head">
|
24 |
+
<h3><?php echo $this->getHeaderText();?></h3>
|
25 |
+
<button type="button" class="close" onclick="closeMessagePopupWindow()"><span ><?php echo $this->getCloseText(); ?></span></button>
|
26 |
+
</div>
|
27 |
+
<div class="content">
|
28 |
+
<?php echo $this->getNoticeMessageText(); ?>
|
29 |
+
</div>
|
30 |
+
</div>
|
31 |
+
</div>
|
32 |
+
<script>
|
33 |
+
function showAwNotificator(){
|
34 |
+
openMessagePopupWindow();
|
35 |
+
Effect.Appear('demac_notif', { duration: 1.0 });
|
36 |
+
}
|
37 |
+
Event.observe(window, 'load', showAwNotificator);
|
38 |
+
|
39 |
+
|
40 |
+
function openMessagePopupWindow(){
|
41 |
+
var height = $('html-body').getHeight();
|
42 |
+
$('message-popup-window-mask').setStyle({'height':height+'px'});
|
43 |
+
toggleSelectsUnderBlock($('message-popup-window-mask'), false);
|
44 |
+
Element.show('message-popup-window-mask');
|
45 |
+
}
|
46 |
+
|
47 |
+
function closeMessagePopupWindow()
|
48 |
+
{
|
49 |
+
toggleSelectsUnderBlock($('message-popup-window-mask'), true);
|
50 |
+
Effect.Fade('demac_notif', { duration: 0.5 });
|
51 |
+
Element.hide('message-popup-window-mask');
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
+
function saveCloseMessagePopupWindow()
|
56 |
+
{
|
57 |
+
$('aw-save-button-content').innerHTML = '<?php echo $this->__("Saving, please wait...")?>';
|
58 |
+
$('aw-save-button').addClassName('disabled');
|
59 |
+
$('aw_firstrun').request({
|
60 |
+
onComplete: function(){
|
61 |
+
toggleSelectsUnderBlock($('message-popup-window-mask'), true);
|
62 |
+
Effect.Fade('demac_notif', { duration: 0.5 });
|
63 |
+
Element.hide('message-popup-window-mask');
|
64 |
+
}
|
65 |
+
})
|
66 |
+
|
67 |
+
}
|
68 |
+
|
69 |
+
</script>
|
70 |
+
|
71 |
+
|
72 |
+
<?php /*
|
73 |
+
|
74 |
+
|
75 |
+
*/?>
|
app/design/adminhtml/default/default/template/demac_all/notification/window/first-run.phtml
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Demac Media Inc.
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://ecommerce.aheadworks.com/LICENSE-M1.txt
|
11 |
+
*
|
12 |
+
* @category Demac
|
13 |
+
* @package Demac_All
|
14 |
+
* @copyright Copyright (c) 20010-2011 aheadWorks Co. (http://www.demacmedia.com)
|
15 |
+
* @license http://www.demacmedia.com/LICENSE.txt
|
16 |
+
*/
|
17 |
+
|
18 |
+
?>
|
19 |
+
<form method="post" action="<?php echo $this->getUrl('adminhtml/system_config/save', array('section'=>'demacall'))?>" id="demac_firstrun">
|
20 |
+
<table class="form-list" cellspacing="0">
|
21 |
+
<colgroup class="label"/>
|
22 |
+
<colgroup class="value"/>
|
23 |
+
<tbody>
|
24 |
+
|
25 |
+
<tr>
|
26 |
+
<td class="label">
|
27 |
+
<label for="general_locale_timezone"><?php echo $this->__('I wish to be informed about')?>:</label>
|
28 |
+
</td>
|
29 |
+
<td class="value">
|
30 |
+
|
31 |
+
|
32 |
+
<select name="groups[feed][fields][interests][value][]" style="width:214px" size="6" multiple="multiple" id="interests">
|
33 |
+
<?php foreach(Mage::getModel('demacall/source_updates_type')->getGridOptions() as $k=>$v):?>
|
34 |
+
<option selected="selected" value="<?php echo $k?>"><?php echo $this->__($v)?></option>
|
35 |
+
<?php endforeach;?>
|
36 |
+
</select><br/>
|
37 |
+
<a href="#" onclick="$$($('interests').options).each(function(el){el.selected=1});return false;"><?php echo $this->__("Select all")?></a>
|
38 |
+
/
|
39 |
+
<a href="#" onclick="$('interests').selectedIndex = -1;return false;"><?php echo $this->__("Deselect all")?></a>
|
40 |
+
</td>
|
41 |
+
</tr>
|
42 |
+
<tr>
|
43 |
+
<td class="label"></td>
|
44 |
+
<td class="value">
|
45 |
+
<button id="demac-save-button" class="scalable save" style="" onclick="saveCloseMessagePopupWindow()" type="button">
|
46 |
+
<span id="demac-save-button-content"> <?php echo $this->__('Save & Close')?></span>
|
47 |
+
</button>
|
48 |
+
</td>
|
49 |
+
</tr>
|
50 |
+
<tr>
|
51 |
+
<td colspan="2" align="right">
|
52 |
+
<div style="width:365px"><small><?php echo $this->__("This message appears only once. At any time you can change these preferences
|
53 |
+
from System > Configuration > Demac Media extensions > Info. <br/><a href=\"%s\">Visit it now</a>", $this->getUrl('adminhtml/system_config/edit', array('section'=>'demacall')))?></small>
|
54 |
+
</div>
|
55 |
+
</td>
|
56 |
+
</tr>
|
57 |
+
</tbody>
|
58 |
+
</table>
|
59 |
+
</form>
|
app/etc/modules/Demac_Adminhtml.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Demac_Adminhtml>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>local</codePool>
|
7 |
+
</Demac_Adminhtml>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/etc/modules/Demac_all.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Demac_All>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>local</codePool>
|
7 |
+
</Demac_All>
|
8 |
+
</modules>
|
9 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Demac_Preview</name>
|
4 |
+
<version>0.1.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://www.opensource.org/licenses/gpl-license.php">GPL</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>If you like Wordpress' "Preview Post" button, then this extension is for you.</summary>
|
10 |
+
<description>This is an extension of convenience. It adds a button to the product edit interface in the backend of Magento so that you can quickly open a product on the front end of your store. Really nice if you are tired of searching for products on the front end while you are editing them.</description>
|
11 |
+
<notes>If you like Wordpress' "Preview Post" button, then this extension is for you.</notes>
|
12 |
+
<authors><author><name>Demac Media</name><user>demacmedia</user><email>support@demacmedia.com</email></author></authors>
|
13 |
+
<date>2011-04-26</date>
|
14 |
+
<time>18:35:28</time>
|
15 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Demac_Adminhtml.xml" hash="b3eda708c1ba49ccc0550e8018463b32"/><file name="Demac_all.xml" hash="c2edd8bcc7339d392e443201d93924a2"/></dir></target><target name="magelocal"><dir name="Demac"><dir name="Adminhtml"><dir name="Block"><dir name="Catalog"><dir name="Product"><file name="Edit.php" hash="3a899410c7ae28887a4788d553be8a35"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="9fc93194d36959f2cf83ff0cab0555bc"/></dir></dir><dir name="All"><dir name="Block"><dir name="Notification"><file name="Window.php" hash="91cf969480289e345c097f2f2a6fbcaa"/></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Fieldset"><dir name="Demacall"><file name="Extensions.php" hash="2efe8c461785763c5b6122414e67bd31"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Config.php" hash="94d522c40d67a2929e790ded5673053e"/><file name="Data.php" hash="efd712db99f7f32e8604db84403ce6c9"/></dir><dir name="Model"><dir name="Feed"><file name="Abstract.php" hash="2dbd2497cb307e315146c83e872888ce"/><file name="Extensions.php" hash="a9354e637dec1a6242be13215953d7cc"/><file name="Updates.php" hash="65129954bd8573a135b9638f1f97c7af"/></dir><file name="Feed.php" hash="bdc8872860b91042fe749574f0808f31"/><dir name="Source"><dir name="Updates"><file name="Type.php" hash="8f205a098d78c3a31058f898b685c115"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="210d1c12d354e92141f90779202df5f8"/><file name="config.xml" hash="a75bfd89a84233358d7f969b05dd4a34"/><file name="system.xml" hash="acffd64488ba9e8e74c143a6d7e31767"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="demac_all"><dir name="notification"><dir name="window"><file name="first-run.phtml" hash="361711c60c4598df1057af9c6370d38f"/></dir><file name="window.phtml" hash="366c85ce977892fbeb0ef48174997dff"/></dir></dir><dir name="demac"><dir name="catalog"><dir name="product"><file name="edit.phtml" hash="ba5336b11c6367f5b7edf2cb0fb15526"/></dir></dir></dir></dir></dir></dir></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.2.0</min><max>5.3.0</max></php></required></dependencies>
|
18 |
+
</package>
|