PageRenderTime 52ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/magento/app/code/core/Mage/Adminhtml/controllers/System/Email/TemplateController.php

https://bitbucket.org/jit_bec/shopifine
PHP | 225 lines | 136 code | 28 blank | 61 comment | 11 complexity | 1d8273321c6eb996d5700797c018bfb9 MD5 | raw file
Possible License(s): LGPL-3.0
  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) 2012 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. * System Template admin controller
  28. *
  29. * @category Mage
  30. * @package Mage_Adminhtml
  31. * @author Magento Core Team <core@magentocommerce.com>
  32. */
  33. class Mage_Adminhtml_System_Email_TemplateController extends Mage_Adminhtml_Controller_Action
  34. {
  35. public function indexAction()
  36. {
  37. $this->_title($this->__('System'))->_title($this->__('Transactional Emails'));
  38. if ($this->getRequest()->getQuery('ajax')) {
  39. $this->_forward('grid');
  40. return;
  41. }
  42. $this->loadLayout();
  43. $this->_setActiveMenu('system/email_template');
  44. $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Transactional Emails'), Mage::helper('adminhtml')->__('Transactional Emails'));
  45. $this->_addContent($this->getLayout()->createBlock('adminhtml/system_email_template', 'template'));
  46. $this->renderLayout();
  47. }
  48. public function gridAction()
  49. {
  50. $this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/system_email_template_grid')->toHtml());
  51. }
  52. /**
  53. * New transactional email action
  54. *
  55. */
  56. public function newAction()
  57. {
  58. $this->_forward('edit');
  59. }
  60. /**
  61. * Edit transactioanl email action
  62. *
  63. */
  64. public function editAction()
  65. {
  66. $this->loadLayout();
  67. $template = $this->_initTemplate('id');
  68. $this->_setActiveMenu('system/email_template');
  69. $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Transactional Emails'), Mage::helper('adminhtml')->__('Transactional Emails'), $this->getUrl('*/*'));
  70. if ($this->getRequest()->getParam('id')) {
  71. $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Edit Template'), Mage::helper('adminhtml')->__('Edit System Template'));
  72. } else {
  73. $this->_addBreadcrumb(Mage::helper('adminhtml')->__('New Template'), Mage::helper('adminhtml')->__('New System Template'));
  74. }
  75. $this->_title($template->getId() ? $template->getTemplateCode() : $this->__('New Template'));
  76. $this->_addContent($this->getLayout()->createBlock('adminhtml/system_email_template_edit', 'template_edit')
  77. ->setEditMode((bool)$this->getRequest()->getParam('id')));
  78. $this->renderLayout();
  79. }
  80. public function saveAction()
  81. {
  82. $request = $this->getRequest();
  83. $id = $this->getRequest()->getParam('id');
  84. $template = $this->_initTemplate('id');
  85. if (!$template->getId() && $id) {
  86. Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('This Email template no longer exists.'));
  87. $this->_redirect('*/*/');
  88. return;
  89. }
  90. try {
  91. $template->setTemplateSubject($request->getParam('template_subject'))
  92. ->setTemplateCode($request->getParam('template_code'))
  93. /*
  94. ->setTemplateSenderEmail($request->getParam('sender_email'))
  95. ->setTemplateSenderName($request->getParam('sender_name'))
  96. */
  97. ->setTemplateText($request->getParam('template_text'))
  98. ->setTemplateStyles($request->getParam('template_styles'))
  99. ->setModifiedAt(Mage::getSingleton('core/date')->gmtDate())
  100. ->setOrigTemplateCode($request->getParam('orig_template_code'))
  101. ->setOrigTemplateVariables($request->getParam('orig_template_variables'));
  102. if (!$template->getId()) {
  103. //$type = constant(Mage::getConfig()->getModelClassName('core/email_template') . "::TYPE_HTML");
  104. $template->setTemplateType(Mage_Core_Model_Email_Template::TYPE_HTML);
  105. }
  106. if($request->getParam('_change_type_flag')) {
  107. //$type = constant(Mage::getConfig()->getModelClassName('core/email_template') . "::TYPE_TEXT");
  108. $template->setTemplateType(Mage_Core_Model_Email_Template::TYPE_TEXT);
  109. $template->setTemplateStyles('');
  110. }
  111. $template->save();
  112. Mage::getSingleton('adminhtml/session')->setFormData(false);
  113. Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('The email template has been saved.'));
  114. $this->_redirect('*/*');
  115. }
  116. catch (Exception $e) {
  117. Mage::getSingleton('adminhtml/session')->setData('email_template_form_data', $this->getRequest()->getParams());
  118. Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
  119. $this->_forward('new');
  120. }
  121. }
  122. public function deleteAction() {
  123. $template = $this->_initTemplate('id');
  124. if($template->getId()) {
  125. try {
  126. $template->delete();
  127. // display success message
  128. Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('The email template has been deleted.'));
  129. // go to grid
  130. $this->_redirect('*/*/');
  131. return;
  132. }
  133. catch (Mage_Core_Exception $e) {
  134. $this->_getSession()->addError($e->getMessage());
  135. }
  136. catch (Exception $e) {
  137. $this->_getSession()->addError(Mage::helper('adminhtml')->__('An error occurred while deleting email template data. Please review log and try again.'));
  138. Mage::logException($e);
  139. // save data in session
  140. Mage::getSingleton('adminhtml/session')->setFormData($data);
  141. // redirect to edit form
  142. $this->_redirect('*/*/edit', array('id' => $id));
  143. return;
  144. }
  145. }
  146. // display error message
  147. Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Unable to find a Email Template to delete.'));
  148. // go to grid
  149. $this->_redirect('*/*/');
  150. }
  151. public function previewAction()
  152. {
  153. $this->loadLayout('systemPreview');
  154. $this->renderLayout();
  155. }
  156. /**
  157. * Set template data to retrieve it in template info form
  158. *
  159. */
  160. public function defaultTemplateAction()
  161. {
  162. $template = $this->_initTemplate('id');
  163. $templateCode = $this->getRequest()->getParam('code');
  164. $template->loadDefault($templateCode, $this->getRequest()->getParam('locale'));
  165. $template->setData('orig_template_code', $templateCode);
  166. $template->setData('template_variables', Zend_Json::encode($template->getVariablesOptionArray(true)));
  167. $templateBlock = $this->getLayout()->createBlock('adminhtml/system_email_template_edit');
  168. $template->setData('orig_template_used_default_for', $templateBlock->getUsedDefaultForPaths(false));
  169. $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($template->getData()));
  170. }
  171. /**
  172. * Load email template from request
  173. *
  174. * @param string $idFieldName
  175. * @return Mage_Adminhtml_Model_Email_Template $model
  176. */
  177. protected function _initTemplate($idFieldName = 'template_id')
  178. {
  179. $this->_title($this->__('System'))->_title($this->__('Transactional Emails'));
  180. $id = (int)$this->getRequest()->getParam($idFieldName);
  181. $model = Mage::getModel('adminhtml/email_template');
  182. if ($id) {
  183. $model->load($id);
  184. }
  185. if (!Mage::registry('email_template')) {
  186. Mage::register('email_template', $model);
  187. }
  188. if (!Mage::registry('current_email_template')) {
  189. Mage::register('current_email_template', $model);
  190. }
  191. return $model;
  192. }
  193. protected function _isAllowed()
  194. {
  195. return Mage::getSingleton('admin/session')->isAllowed('system/email_template');
  196. }
  197. }