further comment fixes
[civicrm-core.git] / CRM / Admin / Form / MessageTemplates.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.7 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2015 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
26 */
27
28 /**
29 *
30 * @package CRM
31 * @copyright CiviCRM LLC (c) 2004-2015
32 */
33
34 /**
35 * This class generates form components for Message templates
36 * used by membership, contributions, event registrations, etc.
37 */
38 class CRM_Admin_Form_MessageTemplates extends CRM_Admin_Form {
39 // which (and whether) mailing workflow this template belongs to
40 protected $_workflow_id = NULL;
41
42 public function preProcess() {
43 $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
44 $this->_action = CRM_Utils_Request::retrieve('action', 'String',
45 $this, FALSE, 'add'
46 );
47 $this->assign('action', $this->_action);
48
49 $this->_BAOName = 'CRM_Core_BAO_MessageTemplate';
50 $this->set('BAOName', $this->_BAOName);
51 parent::preProcess();
52 }
53
54 /**
55 * Set default values for the form.
56 *
57 * The default values are retrieved from the database.
58 */
59 public function setDefaultValues() {
60 $defaults = $this->_values;
61
62 if (empty($defaults['pdf_format_id'])) {
63 $defaults['pdf_format_id'] = 'null';
64 }
65
66 $this->_workflow_id = CRM_Utils_Array::value('workflow_id', $defaults);
67 $this->assign('workflow_id', $this->_workflow_id);
68 if ($this->_action & CRM_Core_Action::ADD) {
69 $defaults['is_active'] = 1;
70 //set the context for redirection after form submit or cancel
71 $session = CRM_Core_Session::singleton();
72 $session->replaceUserContext(CRM_Utils_System::url('civicrm/admin/messageTemplates',
73 'selectedChild=user&reset=1'
74 ));
75 }
76
77 // FIXME: we need to fix the Cancel button here as we don’t know whether it’s a workflow template in buildQuickForm()
78 if ($this->_action & CRM_Core_Action::UPDATE) {
79 if ($this->_workflow_id) {
80 $selectedChild = 'workflow';
81 }
82 else {
83 $selectedChild = 'user';
84 }
85 $cancelURL = CRM_Utils_System::url('civicrm/admin/messageTemplates', "selectedChild={$selectedChild}&reset=1");
86 $cancelURL = str_replace('&amp;', '&', $cancelURL);
87 $this->addButtons(
88 array(
89 array(
90 'type' => 'next',
91 'name' => ts('Save'),
92 'isDefault' => TRUE,
93 ),
94 array(
95 'type' => 'cancel',
96 'name' => ts('Cancel'),
97 'js' => array('onclick' => "location.href='{$cancelURL}'; return false;"),
98 ),
99 )
100 );
101 }
102
103 return $defaults;
104 }
105
106 /**
107 * Build the form object.
108 */
109 public function buildQuickForm() {
110
111 // For VIEW we only want Done button
112 if ($this->_action & CRM_Core_Action::VIEW) {
113 // currently, the above action is used solely for previewing default workflow templates
114 $cancelURL = CRM_Utils_System::url('civicrm/admin/messageTemplates', 'selectedChild=workflow&reset=1');
115 $cancelURL = str_replace('&amp;', '&', $cancelURL);
116 $this->addButtons(array(
117 array(
118 'type' => 'cancel',
119 'name' => ts('Done'),
120 'js' => array('onclick' => "location.href='{$cancelURL}'; return false;"),
121 'isDefault' => TRUE,
122 ),
123 )
124 );
125 }
126 else {
127 parent::buildQuickForm();
128 }
129
130 if ($this->_action & CRM_Core_Action::DELETE) {
131 return;
132 }
133
134 $breadCrumb = array(
135 array(
136 'title' => ts('Message Templates'),
137 'url' => CRM_Utils_System::url('civicrm/admin/messageTemplates',
138 'action=browse&reset=1'
139 ),
140 ),
141 );
142 CRM_Utils_System::appendBreadCrumb($breadCrumb);
143
144 $this->applyFilter('__ALL__', 'trim');
145 $this->add('text', 'msg_title', ts('Message Title'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_MessageTemplate', 'msg_title'), TRUE);
146
147 $this->add('text', 'msg_subject',
148 ts('Message Subject'),
149 CRM_Core_DAO::getAttribute('CRM_Core_DAO_MessageTemplate', 'msg_subject')
150 );
151
152 //get the tokens.
153 $tokens = CRM_Core_SelectValues::contactTokens();
154
155 $this->assign('tokens', CRM_Utils_Token::formatTokensForDisplay($tokens));
156
157 // if not a system message use a wysiwyg editor, CRM-5971
158 if ($this->_id &&
159 CRM_Core_DAO::getFieldValue('CRM_Core_DAO_MessageTemplate',
160 $this->_id,
161 'workflow_id'
162 )
163 ) {
164 $this->add('textarea', 'msg_html', ts('HTML Message'),
165 "cols=50 rows=6"
166 );
167 }
168 else {
169 $this->add('wysiwyg', 'msg_html', ts('HTML Message'),
170 array(
171 'cols' => '80',
172 'rows' => '8',
173 'onkeyup' => "return verify(this)",
174 )
175 );
176 }
177
178 $this->add('textarea', 'msg_text', ts('Text Message'),
179 "cols=50 rows=6"
180 );
181
182 $this->add('select', 'pdf_format_id', ts('PDF Page Format'),
183 array(
184 'null' => ts('- default -'),
185 ) + CRM_Core_BAO_PdfFormat::getList(TRUE), FALSE
186 );
187
188 $this->add('checkbox', 'is_active', ts('Enabled?'));
189
190 if ($this->_action & CRM_Core_Action::VIEW) {
191 $this->freeze();
192 CRM_Utils_System::setTitle(ts('View System Default Message Template'));
193 }
194 }
195
196 /**
197 * Process the form submission.
198 */
199 public function postProcess() {
200 if ($this->_action & CRM_Core_Action::DELETE) {
201 CRM_Core_BAO_MessageTemplate::del($this->_id);
202 }
203 elseif ($this->_action & CRM_Core_Action::VIEW) {
204 // currently, the above action is used solely for previewing default workflow templates
205 CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/admin/messageTemplates', 'selectedChild=workflow&reset=1'));
206 }
207 else {
208 $params = array();
209
210 // store the submitted values in an array
211 $params = $this->exportValues();
212
213 if ($this->_action & CRM_Core_Action::UPDATE) {
214 $params['id'] = $this->_id;
215 }
216
217 if ($this->_workflow_id) {
218 $params['workflow_id'] = $this->_workflow_id;
219 $params['is_active'] = TRUE;
220 }
221
222 $messageTemplate = CRM_Core_BAO_MessageTemplate::add($params);
223 CRM_Core_Session::setStatus(ts('The Message Template \'%1\' has been saved.', array(1 => $messageTemplate->msg_title)), ts('Saved'), 'success');
224
225 if ($this->_workflow_id) {
226 CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/admin/messageTemplates', 'selectedChild=workflow&reset=1'));
227 }
228 else {
229 CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/admin/messageTemplates', 'selectedChild=user&reset=1'));
230 }
231 }
232 }
233
234 }