Prometheus - Version 0.1.1

Version Notes

v0.1.1
- Filter user data on general settings tab;
- Get actual system tabs instead of hardcoded values;
- Add "Save and Continue Edit" button to extension edit page;
-Update system source model to return existent configuration tabs, instead of hardcoded;
- Add system source model to return top admin menu items;
- Fix default configuration tab name selection on extension new/edit page;
- Hide extension grid if prometheus is disabled.

Download this release

Release Info

Developer Ricardo Tonet
Extension Prometheus
Version 0.1.1
Comparing to
See all releases


Code changes from version 0.1.0 to 0.1.1

app/code/community/BlackChacal/Prometheus/Block/Adminhtml/Prometheus/Edit.php CHANGED
@@ -33,6 +33,14 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit extends Mage_Adminh
33
  // Define edit page button labels
34
  $this->_updateButton('save', 'label', $this->__('Save Extension'));
35
  $this->_updateButton('delete', 'label', $this->__('Delete Extension'));
 
 
 
 
 
 
 
 
36
  }
37
 
38
  /**
@@ -49,4 +57,19 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit extends Mage_Adminh
49
  return $this->__('New Extension');
50
  }
51
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
33
  // Define edit page button labels
34
  $this->_updateButton('save', 'label', $this->__('Save Extension'));
35
  $this->_updateButton('delete', 'label', $this->__('Delete Extension'));
36
+
37
+ // Add "Save and Continue Edit" button to extension edit page.
38
+ $this->_addButton('saveandcontinue', array(
39
+ 'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
40
+ 'onclick' => 'saveAndContinueEdit(\''.$this->getSaveAndContinueUrl().'\')',
41
+ 'class' => 'save',
42
+ ), 100);
43
+ $this->_formScripts[] = " function saveAndContinueEdit(url) { editForm.submit(url); }";
44
  }
45
 
46
  /**
57
  return $this->__('New Extension');
58
  }
59
  }
60
+
61
+ /**
62
+ * Returns the save and continue url for the button.
63
+ *
64
+ * @return string
65
+ */
66
+ public function getSaveAndContinueUrl()
67
+ {
68
+ return $this->getUrl('*/*/save', array(
69
+ '_current' => true,
70
+ 'back' => 'edit',
71
+ 'tab' => 'blackchacal_prometheus_extension_info_tabs_general_section',
72
+ 'active_tab' => null
73
+ ));
74
+ }
75
  }
app/code/community/BlackChacal/Prometheus/Block/Adminhtml/Prometheus/Edit/Tab/General.php CHANGED
@@ -70,21 +70,35 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
70
  'method' => 'post'
71
  ));
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  $infoFieldset = $form->addFieldset('base_fieldset', array(
74
  'legend' => Mage::helper('blackchacal_prometheus')->__('Extension Information'),
75
  'class' => 'fieldset-wide',
76
  'expanded' => true,
77
  ));
78
- $configFieldset = $form->addFieldset('config_fieldset', array(
79
- 'legend' => Mage::helper('blackchacal_prometheus')->__('Extension Configuration'),
80
- 'class' => 'fieldset-wide',
81
- 'expanded' => false,
82
- ));
83
- $menuFieldset = $form->addFieldset('menu_fieldset', array(
84
- 'legend' => Mage::helper('blackchacal_prometheus')->__('Extension Admin Menu'),
85
- 'class' => 'fieldset-wide',
86
- 'expanded' => false,
87
- ));
88
 
89
  if ($model->getId()) {
90
  $infoFieldset->addField('extension_id', 'hidden', array(
@@ -92,13 +106,14 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
92
  ));
93
  }
94
 
 
95
  $infoFieldset->addField('namespace', 'text', array(
96
  'name' => 'namespace',
97
  'label' => Mage::helper('blackchacal_prometheus')->__('Namespace'),
98
  'title' => Mage::helper('blackchacal_prometheus')->__('Namespace'),
99
  'required' => true,
100
  'value' => ($model->getNamespace()) ? $model->getNamespace() :
101
- Mage::helper('blackchacal_prometheus')->getConfig('namespace')
102
  ));
103
  $infoFieldset->addField('name', 'text', array(
104
  'name' => 'name',
@@ -113,7 +128,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
113
  'title' => Mage::helper('blackchacal_prometheus')->__('Code Pool'),
114
  'required' => true,
115
  'value' => ($model->getCodepool()) ? $model->getCodepool() :
116
- Mage::helper('blackchacal_prometheus')->getConfig('codepool'),
117
  'values' => Mage::getModel('blackchacal_prometheus/system_config_source_codepool')->toOptionArray()
118
  ));
119
  $infoFieldset->addField('version', 'text', array(
@@ -122,7 +137,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
122
  'title' => Mage::helper('blackchacal_prometheus')->__('Version'),
123
  'required' => true,
124
  'value' => ($model->getVersion()) ? $model->getVersion() :
125
- Mage::helper('blackchacal_prometheus')->getConfig('version')
126
  ));
127
  $infoFieldset->addField('license', 'textarea', array(
128
  'name' => 'license',
@@ -130,7 +145,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
130
  'title' => Mage::helper('blackchacal_prometheus')->__('License'),
131
  'required' => false,
132
  'value' => ($model->getLicense()) ? $model->getLicense() :
133
- Mage::helper('blackchacal_prometheus')->getConfig('license')
134
  ));
135
  $infoFieldset->addField('author_name', 'text', array(
136
  'name' => 'author_name',
@@ -152,7 +167,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
152
  'title' => Mage::helper('blackchacal_prometheus')->__('Action'),
153
  'required' => false,
154
  'value' => ($model->getAction()) ? $model->getAction() :
155
- Mage::helper('blackchacal_prometheus')->getConfig('action'),
156
  'values' => Mage::getModel('blackchacal_prometheus/system_config_source_action')->toOptionArray()
157
  ));
158
  $infoFieldset->addField('rewrite', 'select', array(
@@ -185,34 +200,78 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
185
  ->addFieldDependence('rewrite', 'action', 'install')
186
  );
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  $configFieldset->addField('config_tab_type', 'select', array(
189
  'name' => 'config_tab_type',
190
  'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Type'),
191
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Type'),
192
  'value' => ($model->getConfigTabType()) ? $model->getConfigTabType() :
193
- Mage::helper('blackchacal_prometheus')->getConfig('config_tab'),
194
  'values' => Mage::getModel('blackchacal_prometheus/system_config_source_tabtypes')->toOptionArray()
195
  ));
196
  $configFieldset->addField('config_tab_name', 'text', array(
197
- 'name' => 'config_tab_name',
198
- 'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Name'),
199
- 'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Name'),
200
- 'value' => ($model->getConfigTabName()) ? $model->getConfigTabName() :
201
- $this->getConfigTabName(Mage::helper('blackchacal_prometheus')->getConfig('config_tab'))
202
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  $configFieldset->addField('config_tab_label', 'text', array(
204
  'name' => 'config_tab_label',
205
  'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Label'),
206
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Label'),
207
  'value' => ($model->getConfigTabLabel()) ? $model->getConfigTabLabel() :
208
- $this->getConfigTabLabel(Mage::helper('blackchacal_prometheus')->getConfig('config_tab'))
209
  ));
210
  $configFieldset->addField('config_tab_position', 'text', array(
211
  'name' => 'config_tab_position',
212
  'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Position'),
213
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Position'),
214
  'value' => ($model->getConfigTabPosition()) ? $model->getConfigTabPosition() :
215
- $this->getConfigTabPositions(Mage::helper('blackchacal_prometheus')->getConfig('config_tab'))
216
  ));
217
  $configFieldset->addField('config_section_name', 'text', array(
218
  'name' => 'config_section_name',
@@ -225,10 +284,44 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
225
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Section Label')
226
  ));
227
 
228
- $menuFieldset->addField('admin_menu_parent', 'text', array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  'name' => 'admin_menu_parent',
230
  'label' => Mage::helper('blackchacal_prometheus')->__('Admin Menu Parent'),
231
- 'title' => Mage::helper('blackchacal_prometheus')->__('Admin Menu Parent')
 
 
232
  ));
233
  $menuFieldset->addField('admin_menu_name', 'text', array(
234
  'name' => 'admin_menu_name',
@@ -251,16 +344,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
251
  'title' => Mage::helper('blackchacal_prometheus')->__('Admin Menu Position')
252
  ));
253
 
254
- $this->setForm($form);
255
- /**
256
- * If is "edit" page use model values. If is "new" page use default
257
- * configuration data.
258
- */
259
- if ($this->getRequest()->getParam('id')) {
260
- $form->setValues($model->getData());
261
- }
262
-
263
- return parent::_prepareForm();
264
  }
265
 
266
  /**
@@ -269,7 +353,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
269
  * @param $type string
270
  * @return string
271
  */
272
- private function getConfigTabLabel($type)
273
  {
274
  switch ($type) {
275
  case 'namespace':
@@ -299,7 +383,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
299
  * @param $type string
300
  * @return string
301
  */
302
- private function getConfigTabName($type)
303
  {
304
  switch ($type) {
305
  case 'namespace':
@@ -329,7 +413,7 @@ class BlackChacal_Prometheus_Block_Adminhtml_Prometheus_Edit_Tab_General extends
329
  * @param $type string
330
  * @return string
331
  */
332
- private function getConfigTabPositions($type)
333
  {
334
  switch ($type) {
335
  case 'namespace':
70
  'method' => 'post'
71
  ));
72
 
73
+ $form = $this->_prepareInfoFieldset($model, $form);
74
+ $form = $this->_prepareConfigFieldset($model, $form);
75
+ $form = $this->_prepareAdminMenuFieldset($model, $form);
76
+
77
+ $this->setForm($form);
78
+ /**
79
+ * If is "edit" page use model values. If is "new" page use default
80
+ * configuration data.
81
+ */
82
+ if ($this->getRequest()->getParam('id')) {
83
+ $form->setValues($model->getData());
84
+ }
85
+
86
+ return parent::_prepareForm();
87
+ }
88
+
89
+ /**
90
+ * Prepares the "Extension Information" fieldset.
91
+ *
92
+ * @param $model BlackChacal_Prometheus_Model_Extension
93
+ * @param $form Varien_Data_Form
94
+ */
95
+ private function _prepareInfoFieldset($model, $form)
96
+ {
97
  $infoFieldset = $form->addFieldset('base_fieldset', array(
98
  'legend' => Mage::helper('blackchacal_prometheus')->__('Extension Information'),
99
  'class' => 'fieldset-wide',
100
  'expanded' => true,
101
  ));
 
 
 
 
 
 
 
 
 
 
102
 
103
  if ($model->getId()) {
104
  $infoFieldset->addField('extension_id', 'hidden', array(
106
  ));
107
  }
108
 
109
+ // Fields on "Extension Information" fieldset
110
  $infoFieldset->addField('namespace', 'text', array(
111
  'name' => 'namespace',
112
  'label' => Mage::helper('blackchacal_prometheus')->__('Namespace'),
113
  'title' => Mage::helper('blackchacal_prometheus')->__('Namespace'),
114
  'required' => true,
115
  'value' => ($model->getNamespace()) ? $model->getNamespace() :
116
+ Mage::helper('blackchacal_prometheus')->escapeStrings(Mage::helper('blackchacal_prometheus')->getConfig('namespace'))
117
  ));
118
  $infoFieldset->addField('name', 'text', array(
119
  'name' => 'name',
128
  'title' => Mage::helper('blackchacal_prometheus')->__('Code Pool'),
129
  'required' => true,
130
  'value' => ($model->getCodepool()) ? $model->getCodepool() :
131
+ Mage::helper('blackchacal_prometheus')->getConfig('codepool'),
132
  'values' => Mage::getModel('blackchacal_prometheus/system_config_source_codepool')->toOptionArray()
133
  ));
134
  $infoFieldset->addField('version', 'text', array(
137
  'title' => Mage::helper('blackchacal_prometheus')->__('Version'),
138
  'required' => true,
139
  'value' => ($model->getVersion()) ? $model->getVersion() :
140
+ Mage::helper('blackchacal_prometheus')->getConfig('version')
141
  ));
142
  $infoFieldset->addField('license', 'textarea', array(
143
  'name' => 'license',
145
  'title' => Mage::helper('blackchacal_prometheus')->__('License'),
146
  'required' => false,
147
  'value' => ($model->getLicense()) ? $model->getLicense() :
148
+ Mage::helper('blackchacal_prometheus')->getConfig('license')
149
  ));
150
  $infoFieldset->addField('author_name', 'text', array(
151
  'name' => 'author_name',
167
  'title' => Mage::helper('blackchacal_prometheus')->__('Action'),
168
  'required' => false,
169
  'value' => ($model->getAction()) ? $model->getAction() :
170
+ Mage::helper('blackchacal_prometheus')->getConfig('action'),
171
  'values' => Mage::getModel('blackchacal_prometheus/system_config_source_action')->toOptionArray()
172
  ));
173
  $infoFieldset->addField('rewrite', 'select', array(
200
  ->addFieldDependence('rewrite', 'action', 'install')
201
  );
202
 
203
+ return $form;
204
+ }
205
+
206
+ /**
207
+ * Prepares the "Extension Configuration" fieldset.
208
+ *
209
+ * @param $model BlackChacal_Prometheus_Model_Extension
210
+ * @param $form Varien_Data_Form
211
+ */
212
+ private function _prepareConfigFieldset($model, $form)
213
+ {
214
+ $configFieldset = $form->addFieldset('config_fieldset', array(
215
+ 'legend' => Mage::helper('blackchacal_prometheus')->__('Extension Configuration'),
216
+ 'class' => 'fieldset-wide',
217
+ 'expanded' => false,
218
+ ));
219
+
220
+ // Fields on "Extension Configuration" fieldset
221
  $configFieldset->addField('config_tab_type', 'select', array(
222
  'name' => 'config_tab_type',
223
  'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Type'),
224
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Type'),
225
  'value' => ($model->getConfigTabType()) ? $model->getConfigTabType() :
226
+ Mage::helper('blackchacal_prometheus')->getConfig('config_tab_type'),
227
  'values' => Mage::getModel('blackchacal_prometheus/system_config_source_tabtypes')->toOptionArray()
228
  ));
229
  $configFieldset->addField('config_tab_name', 'text', array(
230
+ 'name' => 'config_tab_name',
231
+ 'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Name'),
232
+ 'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Name'),
233
+ 'value' => ($model->getConfigTabName()) ? $model->getConfigTabName() :
234
+ $this->_getConfigTabName(Mage::helper('blackchacal_prometheus')->getConfig('config_tab_type'))
235
+ ))->setAfterElementHtml("<script type='text/javascript'>
236
+ //<![CDATA[
237
+ (function() {
238
+ var onloadName = '".$model->getConfigTabName()."',
239
+ namespaceName = '".$this->_getConfigTabName('namespace')."',
240
+ namespaceLabel = '".$this->_getConfigTabLabel('namespace')."',
241
+ systemName = '".$this->_getConfigTabName('system')."',
242
+ systemLabel = '".$this->_getConfigTabLabel('system')."';
243
+
244
+ setDefaultConfigTabName(onloadName, namespaceName, namespaceLabel, systemName, systemLabel);
245
+ })();
246
+ //]]>
247
+ </script>");
248
+ $configFieldset->addField('config_system_tab_name', 'select', array(
249
+ 'name' => 'config_tab_name',
250
+ 'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Name'),
251
+ 'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Name'),
252
+ 'value' => ($model->getConfigTabName()) ? $model->getConfigTabName() :
253
+ $this->_getConfigTabName(Mage::helper('blackchacal_prometheus')->getConfig('config_tab_type')),
254
+ 'values' => Mage::getModel('blackchacal_prometheus/system_config_source_systemtabs')->toOptionArray()
255
+ ))->setAfterElementHtml("<script type='text/javascript'>
256
+ //<![CDATA[
257
+ (function() {
258
+ setDefaultConfigSystemTabLabel();
259
+ })();
260
+ //]]>
261
+ </script>");
262
  $configFieldset->addField('config_tab_label', 'text', array(
263
  'name' => 'config_tab_label',
264
  'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Label'),
265
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Label'),
266
  'value' => ($model->getConfigTabLabel()) ? $model->getConfigTabLabel() :
267
+ $this->_getConfigTabLabel(Mage::helper('blackchacal_prometheus')->getConfig('config_tab_type'))
268
  ));
269
  $configFieldset->addField('config_tab_position', 'text', array(
270
  'name' => 'config_tab_position',
271
  'label' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Position'),
272
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Tab Position'),
273
  'value' => ($model->getConfigTabPosition()) ? $model->getConfigTabPosition() :
274
+ $this->_getConfigTabPositions(Mage::helper('blackchacal_prometheus')->getConfig('config_tab_type'))
275
  ));
276
  $configFieldset->addField('config_section_name', 'text', array(
277
  'name' => 'config_section_name',
284
  'title' => Mage::helper('blackchacal_prometheus')->__('Configuration Section Label')
285
  ));
286
 
287
+ // Add fields dependencies
288
+ $this->setChild('form_after', $this->getLayout()
289
+ ->createBlock('adminhtml/widget_form_element_dependence')
290
+ ->addFieldMap('config_tab_type', 'config_tab_type')
291
+ ->addFieldMap('config_system_tab_name', 'config_system_tab_name')
292
+ ->addFieldMap('config_tab_name', 'config_tab_name')
293
+ ->addFieldMap('config_tab_label', 'config_tab_label')
294
+ ->addFieldMap('config_tab_position', 'config_tab_position')
295
+ ->addFieldDependence('config_system_tab_name', 'config_tab_type', 'system')
296
+ ->addFieldDependence('config_tab_name', 'config_tab_type', array('namespace', 'custom'))
297
+ ->addFieldDependence('config_tab_label', 'config_tab_type', array('namespace', 'custom'))
298
+ ->addFieldDependence('config_tab_position', 'config_tab_type', array('namespace', 'custom'))
299
+ );
300
+
301
+ return $form;
302
+ }
303
+
304
+ /**
305
+ * Prepares the "Extension Admin Menu" fieldset.
306
+ *
307
+ * @param $model BlackChacal_Prometheus_Model_Extension
308
+ * @param $form Varien_Data_Form
309
+ */
310
+ private function _prepareAdminMenuFieldset($model, $form)
311
+ {
312
+ $menuFieldset = $form->addFieldset('menu_fieldset', array(
313
+ 'legend' => Mage::helper('blackchacal_prometheus')->__('Extension Admin Menu'),
314
+ 'class' => 'fieldset-wide',
315
+ 'expanded' => false,
316
+ ));
317
+
318
+ // Fields on "Extension Admin Menu" fieldset
319
+ $menuFieldset->addField('admin_menu_parent', 'select', array(
320
  'name' => 'admin_menu_parent',
321
  'label' => Mage::helper('blackchacal_prometheus')->__('Admin Menu Parent'),
322
+ 'title' => Mage::helper('blackchacal_prometheus')->__('Admin Menu Parent'),
323
+ 'value' => $model->getAdminMenuParent(),
324
+ 'values' => Mage::getModel('blackchacal_prometheus/system_config_source_systemmenu')->toOptionArray()
325
  ));
326
  $menuFieldset->addField('admin_menu_name', 'text', array(
327
  'name' => 'admin_menu_name',
344
  'title' => Mage::helper('blackchacal_prometheus')->__('Admin Menu Position')
345
  ));
346
 
347
+ return $form;
 
 
 
 
 
 
 
 
 
348
  }
349
 
350
  /**
353
  * @param $type string
354
  * @return string
355
  */
356
+ private function _getConfigTabLabel($type)
357
  {
358
  switch ($type) {
359
  case 'namespace':
383
  * @param $type string
384
  * @return string
385
  */
386
+ private function _getConfigTabName($type)
387
  {
388
  switch ($type) {
389
  case 'namespace':
413
  * @param $type string
414
  * @return string
415
  */
416
+ private function _getConfigTabPositions($type)
417
  {
418
  switch ($type) {
419
  case 'namespace':
app/code/community/BlackChacal/Prometheus/Helper/Data.php CHANGED
@@ -42,8 +42,8 @@ class BlackChacal_Prometheus_Helper_Data extends Mage_Core_Helper_Data
42
  /**
43
  * System configuration paths for "General" tab
44
  */
45
- const XML_PATH_GENERAL_ACTIVE = 'prometheus/general/enabled';
46
- const XML_PATH_GENERAL_HELP = 'prometheus/general/help';
47
 
48
  /**
49
  * General constants
@@ -73,7 +73,7 @@ class BlackChacal_Prometheus_Helper_Data extends Mage_Core_Helper_Data
73
  */
74
  public function isPrometheusActive()
75
  {
76
- return Mage::getStoreConfig(self::XML_PATH_GENERAL_ACTIVE);
77
  }
78
 
79
  /**
@@ -145,4 +145,51 @@ class BlackChacal_Prometheus_Helper_Data extends Mage_Core_Helper_Data
145
  {
146
  return preg_replace('/[^ \w+]/', '', $str);
147
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
42
  /**
43
  * System configuration paths for "General" tab
44
  */
45
+ const XML_PATH_GENERAL_ACTIVE = 'blackchacal_prometheus/general/enabled';
46
+ const XML_PATH_GENERAL_HELP = 'blackchacal_prometheus/general/help';
47
 
48
  /**
49
  * General constants
73
  */
74
  public function isPrometheusActive()
75
  {
76
+ return (bool)Mage::getStoreConfig(self::XML_PATH_GENERAL_ACTIVE);
77
  }
78
 
79
  /**
145
  {
146
  return preg_replace('/[^ \w+]/', '', $str);
147
  }
148
+
149
+ /**
150
+ * Remove all characters that aren't numbers and ".".
151
+ *
152
+ * @param $str
153
+ */
154
+ public function escapeVersionStrings($str)
155
+ {
156
+ return preg_replace('/[^0-9.+]/', '', $str);
157
+ }
158
+
159
+ /**
160
+ * Remove all characters that aren't numbers.
161
+ *
162
+ * @param $str
163
+ */
164
+ public function escapeNumberStrings($str)
165
+ {
166
+ return preg_replace('/[^0-9+]/', '', $str);
167
+ }
168
+
169
+ /**
170
+ * Escapes the extension model strings for invalid characters before saving to db.
171
+ *
172
+ * @param $model BlackChacal_Prometheus_Model_Extension
173
+ * @return mixed
174
+ */
175
+ public function escapeExtensionModel($model)
176
+ {
177
+ $validModel = $model;
178
+ $validModel->setNamespace($this->escapeStrings($model->getNamespace()));
179
+ $validModel->setName($this->escapeStrings($model->getName()));
180
+ $validModel->setVersion($this->escapeVersionStrings($model->getVersion()));
181
+ $validModel->setAuthorEmail(!Zend_Validate::is($model->getAuthorEmail(), 'EmailAddress') ? '' : $model->getAuthorEmail());
182
+ $validModel->setConfigNodeCode($this->escapeStrings($model->getConfigNodeCode()));
183
+ $validModel->setConfigTabName($this->escapeStrings($model->getConfigTabName()));
184
+ $validModel->setConfigTabLabel($this->escapeStrings($model->getConfigTabLabel()));
185
+ $validModel->setConfigTabPosition($this->escapeNumberStrings($model->getConfigTabPosition()));
186
+ $validModel->setConfigSectionName($this->escapeStrings($model->getConfigSectionName()));
187
+ $validModel->setConfigSectionLabel($this->escapeStrings($model->getConfigSectionLabel()));
188
+ $validModel->setAdminMenuName($this->escapeStrings($model->getAdminMenuName()));
189
+ $validModel->setAdminMenuTitle($this->escapeStrings($model->getAdminMenuTitle()));
190
+ $validModel->setAdminMenuAction($this->escapeStrings($model->getAdminMenuAction()));
191
+ $validModel->setAdminMenuPosition($this->escapeNumberStrings($model->getAdminMenuPosition()));
192
+
193
+ return $validModel;
194
+ }
195
  }
app/code/community/BlackChacal/Prometheus/Model/System/Config/Source/Systemmenu.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * BlackChacal_Prometheus
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
+ *
12
+ * DISCLAIMER
13
+ *
14
+ * Do not edit or add to this file if you wish to upgrade Prometheus to newer
15
+ * versions in the future. If you wish to customize Prometheus for your
16
+ * needs please contact the author for more information.
17
+ *
18
+ * @category BlackChacal
19
+ * @package BlackChacal_Prometheus
20
+ * @copyright Copyright (c) 2015 BlackChacal <ribeiro.tonet@gmail.com>
21
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
22
+ */
23
+
24
+ class BlackChacal_Prometheus_Model_System_Config_Source_Systemmenu
25
+ {
26
+ /**
27
+ * Returns the top admin menu items.
28
+ *
29
+ * @access public
30
+ * @return array Admin Menu Items
31
+ */
32
+ public function toOptionArray()
33
+ {
34
+ $helper = Mage::helper('blackchacal_prometheus');
35
+ $adminMenu = Mage::getSingleton('admin/config')->getAdminhtmlConfig()->getNode('menu');
36
+ $options = array();
37
+
38
+ foreach($adminMenu as $adminMenuData) {
39
+ foreach($adminMenuData as $menuItemCode => $menuItemInfo) {
40
+ $options[] = array(
41
+ 'value' => $menuItemCode,
42
+ 'label' => $helper->__((string)$menuItemInfo->title)
43
+ );
44
+ }
45
+ }
46
+
47
+ return $options;
48
+ }
49
+ }
app/code/community/BlackChacal/Prometheus/Model/System/Config/Source/Systemtabs.php CHANGED
@@ -34,32 +34,18 @@ class BlackChacal_Prometheus_Model_System_Config_Source_Systemtabs
34
  public function toOptionArray()
35
  {
36
  $helper = Mage::helper('blackchacal_prometheus');
37
-
38
  $options = array();
39
- $options[] = array(
40
- 'value' => 'general',
41
- 'label' => $helper->__('General')
42
- );
43
- $options[] = array(
44
- 'value' => 'catalog',
45
- 'label' => $helper->__('Catalog')
46
- );
47
- $options[] = array(
48
- 'value' => 'customer',
49
- 'label' => $helper->__('Customers')
50
- );
51
- $options[] = array(
52
- 'value' => 'sales',
53
- 'label' => $helper->__('Sales')
54
- );
55
- $options[] = array(
56
- 'value' => 'service',
57
- 'label' => $helper->__('Services')
58
- );
59
- $options[] = array(
60
- 'value' => 'advanced',
61
- 'label' => $helper->__('Advanced')
62
- );
63
 
64
  return $options;
65
  }
34
  public function toOptionArray()
35
  {
36
  $helper = Mage::helper('blackchacal_prometheus');
37
+ $tabs = Mage::getSingleton('adminhtml/config')->getTabs();
38
  $options = array();
39
+
40
+ foreach($tabs as $tabData) {
41
+
42
+ foreach($tabData as $tabCode => $tabInfo) {
43
+ $options[] = array(
44
+ 'value' => $tabCode,
45
+ 'label' => $helper->__((string)$tabInfo->label)
46
+ );
47
+ }
48
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
  return $options;
51
  }
app/code/community/BlackChacal/Prometheus/controllers/Adminhtml/PrometheusController.php CHANGED
@@ -30,9 +30,13 @@ class BlackChacal_Prometheus_Adminhtml_PrometheusController extends Mage_Adminht
30
  */
31
  public function indexAction()
32
  {
33
- // Let's call our initAction method which will set some basic params for each action
34
- $this->_initAction();
35
- $this->renderLayout();
 
 
 
 
36
  }
37
 
38
  /**
@@ -47,6 +51,25 @@ class BlackChacal_Prometheus_Adminhtml_PrometheusController extends Mage_Adminht
47
  $this->_forward('edit');
48
  }
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  /**
51
  * Controller action for extension editing/creation.
52
  *
@@ -54,38 +77,42 @@ class BlackChacal_Prometheus_Adminhtml_PrometheusController extends Mage_Adminht
54
  */
55
  public function editAction()
56
  {
57
- $this->_initAction();
 
 
 
58
 
59
- // Get id if available
60
- $id = $this->getRequest()->getParam('id');
61
- $extensionModel = Mage::getModel('blackchacal_prometheus/extension');
62
 
63
- if ($id) {
64
- // Load record
65
- $extensionModel->load($id);
66
 
67
- // Check if record is loaded
68
- if (!$extensionModel->getExtensionId()) {
69
- Mage::getSingleton('adminhtml/session')->addError($this->__('This extension no longer exists.'));
70
- $this->_redirect('*/*/');
71
 
72
- return;
 
73
  }
74
- }
75
 
76
- $this->_title($extensionModel->getExtensionId() ? $extensionModel->getName() : $this->__('New Extension'));
77
 
78
- $data = Mage::getSingleton('adminhtml/session')->getExtensionData(true);
79
- if (!empty($data)) {
80
- $extensionModel->setData($data);
81
- }
82
 
83
- Mage::register('blackchacal_prometheus', $extensionModel);
84
 
85
- $this->_initAction()
86
- ->_addBreadcrumb($id ? $this->__('Edit Extension') : $this->__('New Extension'), $id ? $this->__('Edit Extension') : $this->__('New Extension'))
87
- ->_addContent($this->getLayout()->createBlock('blackchacal_prometheus/adminhtml_prometheus_edit')->setData('action', $this->getUrl('*/*/save')))
88
- ->renderLayout();
 
89
  }
90
 
91
  /**
@@ -96,49 +123,64 @@ class BlackChacal_Prometheus_Adminhtml_PrometheusController extends Mage_Adminht
96
  */
97
  public function saveAction()
98
  {
99
- if ($postData = $this->getRequest()->getPost()) {
100
- $extensionModel = Mage::getSingleton('blackchacal_prometheus/extension');
101
- $extensionModel->setData($postData);
102
- if (isset($postData['id'])) {
103
- $extensionModel->setExtensionId($postData['id']);
104
- }
105
-
106
- try {
107
- $extensionModel->save();
108
-
109
- switch ($postData['action']) {
110
- case 'package':
111
- break;
112
- case 'install':
113
- $installed = $extensionModel->install();
114
- if ($installed) {
115
- $extensionModel->setInstalled(true);
116
- $extensionModel->save();
117
- }
118
- break;
119
- case 'uninstall':
120
- $uninstalled = $extensionModel->uninstall();
121
- if ($uninstalled) {
122
- $extensionModel->setInstalled(false);
123
- $extensionModel->save();
124
- }
125
- break;
126
- default:
127
- break;
128
  }
 
129
 
130
- Mage::getSingleton('adminhtml/session')->addSuccess($this->__('The extension was saved.'));
131
- $this->_redirect('*/*/');
132
 
133
- return;
134
- } catch (Mage_Core_Exception $e) {
135
- Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
136
- } catch (Exception $e) {
137
- Mage::getSingleton('adminhtml/session')->addError($this->__('An error occurred while saving this extension.'));
138
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
 
140
- Mage::getSingleton('adminhtml/session')->setExtensionData($postData);
141
- $this->_redirectReferer();
 
142
  }
143
  }
144
 
@@ -150,23 +192,27 @@ class BlackChacal_Prometheus_Adminhtml_PrometheusController extends Mage_Adminht
150
  */
151
  public function deleteAction()
152
  {
153
- // Get id if available
154
- $id = $this->getRequest()->getParam('id');
155
-
156
- if ($id) {
157
- try {
158
- // Delete record
159
- $extensionModel = Mage::getModel('blackchacal_prometheus/extension');
160
- $extensionModel->load($id)->delete();
161
- $extensionModel->uninstall();
162
-
163
- Mage::getSingleton('adminhtml/session')->addSuccess($this->__('The extension was deleted.'));
164
- } catch (Exception $e) {
165
- Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
 
 
 
 
166
  }
167
- }
168
 
169
- $this->_redirect('*/*/index');
 
170
  }
171
 
172
  /**
@@ -176,45 +222,30 @@ class BlackChacal_Prometheus_Adminhtml_PrometheusController extends Mage_Adminht
176
  */
177
  public function massDeleteAction()
178
  {
179
- $extensionIds = $this->getRequest()->getParam('extensions');
180
-
181
- if (!is_array($extensionIds)) {
182
- Mage::getSingleton('adminhtml/session')->addError($this->__('Please select extension(s).'));
183
  } else {
184
- try {
185
- $extensionModel = Mage::getModel('blackchacal_prometheus/extension');
186
 
187
- foreach ($extensionIds as $extensionId) {
188
- $extensionModel->load($extensionId)->delete();
189
- $extensionModel->uninstall();
190
- }
191
-
192
- Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Total of %d record(s) were deleted.', count($extensionIds)));
193
- } catch (Exception $e) {
194
- Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
195
- }
196
- }
197
 
198
- $this->_redirect('*/*/index');
199
- }
 
 
200
 
201
- /**
202
- * Initialize action
203
- *
204
- * Here, we set the breadcrumbs and the active menu.
205
- *
206
- * @return Mage_Adminhtml_Controller_Action
207
- */
208
- protected function _initAction()
209
- {
210
- $this->loadLayout()
211
- // Make the active menu match the menu config nodes (without 'children' inbetween)
212
- ->_setActiveMenu('system/blackchacal_prometheus')
213
- ->_title($this->__('System'))->_title($this->__('Prometheus'))
214
- ->_addBreadcrumb($this->__('System'), $this->__('System'))
215
- ->_addBreadcrumb($this->__('Prometheus - Create Extensions'), $this->__('Prometheus - Create Extensions'));
216
 
217
- return $this;
 
218
  }
219
 
220
  /**
30
  */
31
  public function indexAction()
32
  {
33
+ if (!Mage::helper('blackchacal_prometheus')->isPrometheusActive()) {
34
+ $this->_redirect('adminhtml/dashboard/index');
35
+ } else {
36
+ // Let's call our initAction method which will set some basic params for each action
37
+ $this->_initAction();
38
+ $this->renderLayout();
39
+ }
40
  }
41
 
42
  /**
51
  $this->_forward('edit');
52
  }
53
 
54
+ /**
55
+ * Initialize action
56
+ *
57
+ * Here, we set the breadcrumbs and the active menu.
58
+ *
59
+ * @return Mage_Adminhtml_Controller_Action
60
+ */
61
+ protected function _initAction()
62
+ {
63
+ $this->loadLayout()
64
+ // Make the active menu match the menu config nodes (without 'children' inbetween)
65
+ ->_setActiveMenu('system/blackchacal_prometheus')
66
+ ->_title($this->__('System'))->_title($this->__('Prometheus'))
67
+ ->_addBreadcrumb($this->__('System'), $this->__('System'))
68
+ ->_addBreadcrumb($this->__('Prometheus - Create Extensions'), $this->__('Prometheus - Create Extensions'));
69
+
70
+ return $this;
71
+ }
72
+
73
  /**
74
  * Controller action for extension editing/creation.
75
  *
77
  */
78
  public function editAction()
79
  {
80
+ if (!Mage::helper('blackchacal_prometheus')->isPrometheusActive()) {
81
+ $this->_redirect('adminhtml/dashboard/index');
82
+ } else {
83
+ $this->_initAction();
84
 
85
+ // Get id if available
86
+ $id = $this->getRequest()->getParam('id');
87
+ $extensionModel = Mage::getModel('blackchacal_prometheus/extension');
88
 
89
+ if ($id) {
90
+ // Load record
91
+ $extensionModel->load($id);
92
 
93
+ // Check if record is loaded
94
+ if (!$extensionModel->getExtensionId()) {
95
+ Mage::getSingleton('adminhtml/session')->addError($this->__('This extension no longer exists.'));
96
+ $this->_redirect('*/*/');
97
 
98
+ return;
99
+ }
100
  }
 
101
 
102
+ $this->_title($extensionModel->getExtensionId() ? $extensionModel->getName() : $this->__('New Extension'));
103
 
104
+ $data = Mage::getSingleton('adminhtml/session')->getExtensionData(true);
105
+ if (!empty($data)) {
106
+ $extensionModel->setData($data);
107
+ }
108
 
109
+ Mage::register('blackchacal_prometheus', $extensionModel);
110
 
111
+ $this->_initAction()
112
+ ->_addBreadcrumb($id ? $this->__('Edit Extension') : $this->__('New Extension'), $id ? $this->__('Edit Extension') : $this->__('New Extension'))
113
+ ->_addContent($this->getLayout()->createBlock('blackchacal_prometheus/adminhtml_prometheus_edit')->setData('action', $this->getUrl('*/*/save')))
114
+ ->renderLayout();
115
+ }
116
  }
117
 
118
  /**
123
  */
124
  public function saveAction()
125
  {
126
+ if (!Mage::helper('blackchacal_prometheus')->isPrometheusActive()) {
127
+ $this->_redirect('adminhtml/dashboard/index');
128
+ } else {
129
+ if ($postData = $this->getRequest()->getPost()) {
130
+ $extensionModel = Mage::getSingleton('blackchacal_prometheus/extension');
131
+ $extensionModel->setData($postData);
132
+ if (isset($postData['id'])) {
133
+ $extensionModel->setExtensionId($postData['id']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  }
135
+ $extensionModel = Mage::helper('blackchacal_prometheus')->escapeExtensionModel($extensionModel);
136
 
137
+ try {
138
+ $extensionModel->save();
139
 
140
+ switch ($postData['action']) {
141
+ case 'package':
142
+ break;
143
+ case 'install':
144
+ $installed = $extensionModel->install();
145
+ if ($installed) {
146
+ $extensionModel->setInstalled(true);
147
+ $extensionModel->save();
148
+ }
149
+ break;
150
+ case 'uninstall':
151
+ $uninstalled = $extensionModel->uninstall();
152
+ if ($uninstalled) {
153
+ $extensionModel->setInstalled(false);
154
+ $extensionModel->save();
155
+ }
156
+ break;
157
+ default:
158
+ break;
159
+ }
160
+
161
+ // Handle save and continue edit case.
162
+ if ($this->getRequest()->getParam('back')) {
163
+ $this->_redirect(
164
+ '*/*/edit',
165
+ array(
166
+ 'id' => $extensionModel->getId(),
167
+ )
168
+ );
169
+ return;
170
+ }
171
+
172
+ Mage::getSingleton('adminhtml/session')->addSuccess($this->__('The extension was saved.'));
173
+ $this->_redirect('*/*/');
174
+ return;
175
+ } catch (Mage_Core_Exception $e) {
176
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
177
+ } catch (Exception $e) {
178
+ Mage::getSingleton('adminhtml/session')->addError($this->__('An error occurred while saving this extension.'));
179
+ }
180
 
181
+ Mage::getSingleton('adminhtml/session')->setExtensionData($postData);
182
+ $this->_redirectReferer();
183
+ }
184
  }
185
  }
186
 
192
  */
193
  public function deleteAction()
194
  {
195
+ if (!Mage::helper('blackchacal_prometheus')->isPrometheusActive()) {
196
+ $this->_redirect('adminhtml/dashboard/index');
197
+ } else {
198
+ // Get id if available
199
+ $id = $this->getRequest()->getParam('id');
200
+
201
+ if ($id) {
202
+ try {
203
+ // Delete record
204
+ $extensionModel = Mage::getModel('blackchacal_prometheus/extension');
205
+ $extensionModel->load($id)->delete();
206
+ $extensionModel->uninstall();
207
+
208
+ Mage::getSingleton('adminhtml/session')->addSuccess($this->__('The extension was deleted.'));
209
+ } catch (Exception $e) {
210
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
211
+ }
212
  }
 
213
 
214
+ $this->_redirect('*/*/index');
215
+ }
216
  }
217
 
218
  /**
222
  */
223
  public function massDeleteAction()
224
  {
225
+ if (!Mage::helper('blackchacal_prometheus')->isPrometheusActive()) {
226
+ $this->_redirect('adminhtml/dashboard/index');
 
 
227
  } else {
228
+ $extensionIds = $this->getRequest()->getParam('extensions');
 
229
 
230
+ if (!is_array($extensionIds)) {
231
+ Mage::getSingleton('adminhtml/session')->addError($this->__('Please select extension(s).'));
232
+ } else {
233
+ try {
234
+ $extensionModel = Mage::getModel('blackchacal_prometheus/extension');
 
 
 
 
 
235
 
236
+ foreach ($extensionIds as $extensionId) {
237
+ $extensionModel->load($extensionId)->delete();
238
+ $extensionModel->uninstall();
239
+ }
240
 
241
+ Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Total of %d record(s) were deleted.', count($extensionIds)));
242
+ } catch (Exception $e) {
243
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
244
+ }
245
+ }
 
 
 
 
 
 
 
 
 
 
246
 
247
+ $this->_redirect('*/*/index');
248
+ }
249
  }
250
 
251
  /**
app/code/community/BlackChacal/Prometheus/etc/system.xml CHANGED
@@ -118,8 +118,8 @@
118
  <show_in_website>0</show_in_website>
119
  <show_in_store>0</show_in_store>
120
  </license>
121
- <config_tab translate="label,comment" module="blackchacal_prometheus">
122
- <label>Configuration Tab Name</label>
123
  <comment><![CDATA[Name for the extension tab on the menu System -> Configuration.]]></comment>
124
  <frontend_type>select</frontend_type>
125
  <source_model>blackchacal_prometheus/system_config_source_tabtypes</source_model>
@@ -127,7 +127,7 @@
127
  <show_in_default>1</show_in_default>
128
  <show_in_website>0</show_in_website>
129
  <show_in_store>0</show_in_store>
130
- </config_tab>
131
  <config_tab_custom translate="label,comment" module="blackchacal_prometheus">
132
  <label>Configuration Tab Name - Custom Name</label>
133
  <comment><![CDATA[]]></comment>
@@ -137,7 +137,7 @@
137
  <show_in_website>0</show_in_website>
138
  <show_in_store>0</show_in_store>
139
  <depends>
140
- <config_tab>custom</config_tab>
141
  </depends>
142
  </config_tab_custom>
143
  <config_tab_system translate="label,comment" module="blackchacal_prometheus">
@@ -150,7 +150,7 @@
150
  <show_in_website>0</show_in_website>
151
  <show_in_store>0</show_in_store>
152
  <depends>
153
- <config_tab>system</config_tab>
154
  </depends>
155
  </config_tab_system>
156
  <config_tab_namespace_position translate="label,comment" module="blackchacal_prometheus">
@@ -162,7 +162,7 @@
162
  <show_in_website>0</show_in_website>
163
  <show_in_store>0</show_in_store>
164
  <depends>
165
- <config_tab>namespace</config_tab>
166
  </depends>
167
  </config_tab_namespace_position>
168
  <config_tab_custom_position translate="label,comment" module="blackchacal_prometheus">
@@ -174,7 +174,7 @@
174
  <show_in_website>0</show_in_website>
175
  <show_in_store>0</show_in_store>
176
  <depends>
177
- <config_tab>custom</config_tab>
178
  </depends>
179
  </config_tab_custom_position>
180
  </fields>
118
  <show_in_website>0</show_in_website>
119
  <show_in_store>0</show_in_store>
120
  </license>
121
+ <config_tab_type translate="label,comment" module="blackchacal_prometheus">
122
+ <label>Configuration Tab Type</label>
123
  <comment><![CDATA[Name for the extension tab on the menu System -> Configuration.]]></comment>
124
  <frontend_type>select</frontend_type>
125
  <source_model>blackchacal_prometheus/system_config_source_tabtypes</source_model>
127
  <show_in_default>1</show_in_default>
128
  <show_in_website>0</show_in_website>
129
  <show_in_store>0</show_in_store>
130
+ </config_tab_type>
131
  <config_tab_custom translate="label,comment" module="blackchacal_prometheus">
132
  <label>Configuration Tab Name - Custom Name</label>
133
  <comment><![CDATA[]]></comment>
137
  <show_in_website>0</show_in_website>
138
  <show_in_store>0</show_in_store>
139
  <depends>
140
+ <config_tab_type>custom</config_tab_type>
141
  </depends>
142
  </config_tab_custom>
143
  <config_tab_system translate="label,comment" module="blackchacal_prometheus">
150
  <show_in_website>0</show_in_website>
151
  <show_in_store>0</show_in_store>
152
  <depends>
153
+ <config_tab_type>system</config_tab_type>
154
  </depends>
155
  </config_tab_system>
156
  <config_tab_namespace_position translate="label,comment" module="blackchacal_prometheus">
162
  <show_in_website>0</show_in_website>
163
  <show_in_store>0</show_in_store>
164
  <depends>
165
+ <config_tab_type>namespace</config_tab_type>
166
  </depends>
167
  </config_tab_namespace_position>
168
  <config_tab_custom_position translate="label,comment" module="blackchacal_prometheus">
174
  <show_in_website>0</show_in_website>
175
  <show_in_store>0</show_in_store>
176
  <depends>
177
+ <config_tab_type>custom</config_tab_type>
178
  </depends>
179
  </config_tab_custom_position>
180
  </fields>
app/design/adminhtml/default/default/layout/blackchacal_prometheus.xml CHANGED
@@ -29,6 +29,9 @@
29
  </reference>
30
  </adminhtml_prometheus_index>
31
  <adminhtml_prometheus_edit>
 
 
 
32
  <reference name="left">
33
  <block type="blackchacal_prometheus/adminhtml_prometheus_edit_tabs" name="prometheus_edit_tabs">
34
  <block type="blackchacal_prometheus/adminhtml_prometheus_edit_tab_general" name="prometheus_edit_tab_general" />
29
  </reference>
30
  </adminhtml_prometheus_index>
31
  <adminhtml_prometheus_edit>
32
+ <reference name="head">
33
+ <action method="addItem"><type>skin_js</type><name>blackchacal_prometheus/js/prometheus.js</name></action>
34
+ </reference>
35
  <reference name="left">
36
  <block type="blackchacal_prometheus/adminhtml_prometheus_edit_tabs" name="prometheus_edit_tabs">
37
  <block type="blackchacal_prometheus/adminhtml_prometheus_edit_tab_general" name="prometheus_edit_tab_general" />
package.xml CHANGED
@@ -1,18 +1,25 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Prometheus</name>
4
- <version>0.1.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Prometheus allows the creation of Magento 1.7+ extensions.</summary>
10
  <description>Prometheus allows the creation of Magento 1.7+ extensions.</description>
11
- <notes>v0.1.0</notes>
 
 
 
 
 
 
 
12
  <authors><author><name>Ricardo Tonet</name><user>BlackChacal</user><email>ribeiro.tonet@gmail.com</email></author></authors>
13
- <date>2015-11-17</date>
14
- <time>22:50:03</time>
15
- <contents><target name="magecommunity"><dir name="BlackChacal"><dir name="Prometheus"><dir name="Block"><dir name="Adminhtml"><dir name="Prometheus"><dir name="Edit"><file name="Form.php" hash="4d11e041c904626d17e6d3ac42fe8751"/><dir name="Tab"><file name="General.php" hash="f23097b7d1062caa6322f631a729c40c"/></dir><file name="Tabs.php" hash="702875cbf02284f8d814a144fd145e26"/></dir><file name="Edit.php" hash="20a2f8292dcb677acf2d14bfe18a8a70"/><file name="Grid.php" hash="d3000488bb6dadfd4c0d57005edb5c1b"/></dir><file name="Prometheus.php" hash="5b3e6f76247ceab03051320fa633294b"/></dir></dir><dir name="Helper"><file name="Data.php" hash="3fa380a0030fc8a446621e470d258544"/></dir><dir name="Model"><dir name="Config"><file name="Group.php" hash="6baeb301a5ab0e0492a1bdd579a3f0af"/><file name="Option.php" hash="c91c72e19bd6e8d642a56d688091a893"/></dir><dir name="Extension"><dir name="File"><dir name="Content"><dir name="Php"><file name="Classwriter.php" hash="8a9f344cb3f9adba8c23bff08d2ca2d5"/></dir><file name="Writer.php" hash="c949f0b3a652312326cdbdc38a4cd8e9"/><dir name="Xml"><file name="Configwriter.php" hash="ad846114d78652575a316a43bd1113ff"/><file name="Layoutwriter.php" hash="3dcadb828efd2e0c97b5c0a07b5a404e"/></dir></dir><file name="Writer.php" hash="e8f0eb3557f106b2bda753d576b60b0a"/></dir><file name="Writer.php" hash="9552c4663155d233a783f156d1530b41"/></dir><file name="Extension.php" hash="e42125754d11314e6d520b0ede4bad31"/><dir name="Resource"><dir name="Config"><dir name="Group"><file name="Collection.php" hash="ee5e7b5e6d090b196fa57a3a6683971b"/></dir><file name="Group.php" hash="a438c8ec8eb55064f2541d8fda8074fb"/><dir name="Option"><file name="Collection.php" hash="ec817a6630b1609f5a0154c125168baa"/></dir><file name="Option.php" hash="efcff0253a8ffba267d3791dde7c4a4d"/></dir><dir name="Extension"><file name="Collection.php" hash="ce629599b9bf4a7cc04ca308799a98ed"/></dir><file name="Extension.php" hash="b63ebbc48862e54f6e90b88bb87e98ea"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Action.php" hash="10ab280188e3b5586c90739cca331754"/><file name="Codepool.php" hash="c9d809872cacbefb3ea000a5d3ff3520"/><file name="Systemtabs.php" hash="fef12a72ad8781954b93b70bc2560bbf"/><file name="Tabtypes.php" hash="deb9c86eb9fcccc178171f04be460118"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="PrometheusController.php" hash="d5c0ba69628c5a72a4f71db8b3576116"/></dir></dir><dir name="etc"><file name="LICENSE_AFL.txt" hash="45a399f2095030865fb962263ccd7506"/><file name="adminhtml.xml" hash="8da979de8efdd5d05f7e2830c51a15cc"/><file name="config.xml" hash="f7a42e6ae2ad09c9a56cf27de2d23620"/><dir name="source"><file name="extension_adminhtml_xml.txt" hash="e8c5ab77459217f71895d8f19f4dc2b3"/><file name="extension_config_xml.txt" hash="2dc1c45292ace28bfc6e4beda3c85365"/><file name="extension_system_xml.txt" hash="2f4c1d4b7d58956cac55b374bcff2622"/><file name="extension_system_xml_field.txt" hash="96d5122efded479cc4f8360463374e4b"/><file name="extension_system_xml_group.txt" hash="c998dbba9aa842cad17a1477e517fbd4"/><file name="modules_config_xml.txt" hash="e0e32c7bec4447e6911471ebb7cb9cb8"/></dir><file name="system.xml" hash="5b03dd4921d658aa9cf5e8be6094069f"/></dir><dir name="sql"><dir name="prometheus_setup"><file name="install-0.1.0.php" hash="e460eb721e7faff97b1b5ea5799de363"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="BlackChacal_Prometheus.csv" hash="b7463ebfb30d1413701916b897a02039"/></dir></target><target name="mageetc"><dir name="modules"><file name="BlackChacal_Prometheus.xml" hash="817f978ce49863913d49625a9b7662e5"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="blackchacal_prometheus.xml" hash="5da71bdbdae99d14da67b359058df741"/></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Prometheus</name>
4
+ <version>0.1.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Prometheus allows the creation of Magento 1.7+ extensions.</summary>
10
  <description>Prometheus allows the creation of Magento 1.7+ extensions.</description>
11
+ <notes>v0.1.1&#xD;
12
+ - Filter user data on general settings tab;&#xD;
13
+ - Get actual system tabs instead of hardcoded values;&#xD;
14
+ - Add "Save and Continue Edit" button to extension edit page;&#xD;
15
+ -Update system source model to return existent configuration tabs, instead of hardcoded;&#xD;
16
+ - Add system source model to return top admin menu items;&#xD;
17
+ - Fix default configuration tab name selection on extension new/edit page;&#xD;
18
+ - Hide extension grid if prometheus is disabled.</notes>
19
  <authors><author><name>Ricardo Tonet</name><user>BlackChacal</user><email>ribeiro.tonet@gmail.com</email></author></authors>
20
+ <date>2015-12-06</date>
21
+ <time>19:22:48</time>
22
+ <contents><target name="magecommunity"><dir name="BlackChacal"><dir name="Prometheus"><dir name="Block"><dir name="Adminhtml"><dir name="Prometheus"><dir name="Edit"><file name="Form.php" hash="4d11e041c904626d17e6d3ac42fe8751"/><dir name="Tab"><file name="General.php" hash="ce559e828a2dc25104101d6b89535546"/></dir><file name="Tabs.php" hash="702875cbf02284f8d814a144fd145e26"/></dir><file name="Edit.php" hash="e8eea35c7217b76d5cc239a3aa37feb8"/><file name="Grid.php" hash="d3000488bb6dadfd4c0d57005edb5c1b"/></dir><file name="Prometheus.php" hash="5b3e6f76247ceab03051320fa633294b"/></dir></dir><dir name="Helper"><file name="Data.php" hash="c73f9831be34d8c18e909c5e2c38becc"/></dir><dir name="Model"><dir name="Config"><file name="Group.php" hash="6baeb301a5ab0e0492a1bdd579a3f0af"/><file name="Option.php" hash="c91c72e19bd6e8d642a56d688091a893"/></dir><dir name="Extension"><dir name="File"><dir name="Content"><dir name="Php"><file name="Classwriter.php" hash="8a9f344cb3f9adba8c23bff08d2ca2d5"/></dir><file name="Writer.php" hash="c949f0b3a652312326cdbdc38a4cd8e9"/><dir name="Xml"><file name="Configwriter.php" hash="ad846114d78652575a316a43bd1113ff"/><file name="Layoutwriter.php" hash="3dcadb828efd2e0c97b5c0a07b5a404e"/></dir></dir><file name="Writer.php" hash="e8f0eb3557f106b2bda753d576b60b0a"/></dir><file name="Writer.php" hash="9552c4663155d233a783f156d1530b41"/></dir><file name="Extension.php" hash="e42125754d11314e6d520b0ede4bad31"/><dir name="Resource"><dir name="Config"><dir name="Group"><file name="Collection.php" hash="ee5e7b5e6d090b196fa57a3a6683971b"/></dir><file name="Group.php" hash="a438c8ec8eb55064f2541d8fda8074fb"/><dir name="Option"><file name="Collection.php" hash="ec817a6630b1609f5a0154c125168baa"/></dir><file name="Option.php" hash="efcff0253a8ffba267d3791dde7c4a4d"/></dir><dir name="Extension"><file name="Collection.php" hash="ce629599b9bf4a7cc04ca308799a98ed"/></dir><file name="Extension.php" hash="b63ebbc48862e54f6e90b88bb87e98ea"/></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Action.php" hash="10ab280188e3b5586c90739cca331754"/><file name="Codepool.php" hash="c9d809872cacbefb3ea000a5d3ff3520"/><file name="Systemmenu.php" hash="852b66a1dd823d7d05e56f080417a0c6"/><file name="Systemtabs.php" hash="2ed23a64facd33e0718c0b1e24387308"/><file name="Tabtypes.php" hash="deb9c86eb9fcccc178171f04be460118"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="PrometheusController.php" hash="29b402cfeda16311d6490914cccce236"/></dir></dir><dir name="etc"><file name="LICENSE_AFL.txt" hash="45a399f2095030865fb962263ccd7506"/><file name="adminhtml.xml" hash="8da979de8efdd5d05f7e2830c51a15cc"/><file name="config.xml" hash="f7a42e6ae2ad09c9a56cf27de2d23620"/><dir name="source"><file name="extension_adminhtml_xml.txt" hash="e8c5ab77459217f71895d8f19f4dc2b3"/><file name="extension_config_xml.txt" hash="2dc1c45292ace28bfc6e4beda3c85365"/><file name="extension_system_xml.txt" hash="2f4c1d4b7d58956cac55b374bcff2622"/><file name="extension_system_xml_field.txt" hash="96d5122efded479cc4f8360463374e4b"/><file name="extension_system_xml_group.txt" hash="c998dbba9aa842cad17a1477e517fbd4"/><file name="modules_config_xml.txt" hash="e0e32c7bec4447e6911471ebb7cb9cb8"/></dir><file name="system.xml" hash="7227a13ad7e2aa4f70c22db12de99833"/></dir><dir name="sql"><dir name="prometheus_setup"><file name="install-0.1.0.php" hash="e460eb721e7faff97b1b5ea5799de363"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="BlackChacal_Prometheus.csv" hash="b7463ebfb30d1413701916b897a02039"/></dir></target><target name="mageetc"><dir name="modules"><file name="BlackChacal_Prometheus.xml" hash="817f978ce49863913d49625a9b7662e5"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="blackchacal_prometheus.xml" hash="518f3848dd8944adfe24de40f5846849"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="blackchacal_prometheus"><dir name="js"><file name="prometheus.js" hash="1a984ba1d7e66efd38e2796066fc6aa6"/></dir></dir></dir></dir></dir></target></contents>
23
  <compatible/>
24
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
25
  </package>
skin/adminhtml/default/default/blackchacal_prometheus/js/prometheus.js ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * BlackChacal_Prometheus
3
+ *
4
+ * NOTICE OF LICENSE
5
+ *
6
+ * This source file is subject to the Academic Free License (AFL 3.0)
7
+ * that is bundled with this package in the file LICENSE_AFL.txt.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://opensource.org/licenses/afl-3.0.php
10
+ *
11
+ * DISCLAIMER
12
+ *
13
+ * Do not edit or add to this file if you wish to upgrade Prometheus to newer
14
+ * versions in the future. If you wish to customize Prometheus for your
15
+ * needs please contact the author for more information.
16
+ *
17
+ * @category BlackChacal
18
+ * @package BlackChacal_Prometheus
19
+ * @copyright Copyright (c) 2015 BlackChacal <ribeiro.tonet@gmail.com>
20
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
21
+ */
22
+
23
+
24
+ /**
25
+ * This file contains several Js functions necessary for the proper working of the BlackChacal_Prometheus extension.
26
+ */
27
+
28
+ /**
29
+ * Sets the default configuration tab name based on the configuration tab type value. It sets the value on page load and
30
+ * when the configuration tab type value changes.
31
+ *
32
+ * @public
33
+ *
34
+ * @param {string} onloadName
35
+ * @param {string} namespaceName
36
+ * @param {string} namespaceLabel
37
+ * @param {string} systemName
38
+ * @param {string} systemLabel
39
+ * @return {void}
40
+ */
41
+ function setDefaultConfigTabName(onloadName, namespaceName, namespaceLabel, systemName, systemLabel)
42
+ {
43
+ document.observe('dom:loaded', function() {
44
+ $('config_system_tab_name').setValue(onloadName);
45
+ $('config_tab_type').on('change', function () {
46
+ var name,
47
+ label,
48
+ $tabType = $('config_tab_type').getValue();
49
+
50
+ switch ($tabType) {
51
+ case 'system':
52
+ name = systemName;
53
+ label = systemLabel;
54
+ break;
55
+ case 'namespace':
56
+ name = namespaceName;
57
+ label = namespaceLabel;
58
+ break;
59
+ default:
60
+ name = '';
61
+ label = '';
62
+ break;
63
+ }
64
+ $('config_tab_name').setValue(name);
65
+ $('config_tab_label').setValue(label);
66
+ $('config_system_tab_name').setValue(name);
67
+ });
68
+ });
69
+ }
70
+
71
+ /**
72
+ * Sets the default configuration system tab label when the configuration tab name select changes.
73
+ *
74
+ * @public
75
+ *
76
+ * @return {void}
77
+ */
78
+ function setDefaultConfigSystemTabLabel()
79
+ {
80
+ document.observe('dom:loaded', function() {
81
+ $('config_system_tab_name').on('change', function () {
82
+ var label = this.options[this.selectedIndex].innerHTML;
83
+ $('config_tab_label').setValue(label);
84
+ });
85
+ });
86
+ }