Completed
Push — patch_1-1-4 ( 3f780f...826343 )
by Emanuele
25:17 queued 11:40
created

ManageNews.template.php ➔ template_email_members_compose()   C

Complexity

Conditions 14
Paths 2

Size

Total Lines 117

Duplication

Lines 3
Ratio 2.56 %

Importance

Changes 0
Metric Value
cc 14
nc 2
nop 0
dl 3
loc 117
rs 5.0133
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/**
4
 * @name      ElkArte Forum
5
 * @copyright ElkArte Forum contributors
6
 * @license   BSD http://opensource.org/licenses/BSD-3-Clause
7
 *
8
 * This file contains code covered by:
9
 * copyright:	2011 Simple Machines (http://www.simplemachines.org)
10
 * license:  	BSD, See included LICENSE.TXT for terms and conditions.
11
 *
12
 * @version 1.1
13
 *
14
 */
15
16
/**
17
 * Start of the template, just calls in the helpers
18
 */
19
function template_ManageNews_init()
20
{
21
	loadTemplate('GenericHelpers');
22
}
23
24
/**
25
 * Template for the email to members page in admin panel.
26
 * It allows to select members and membergroups.
27
 */
28
function template_email_members()
29
{
30
	global $context, $txt, $scripturl;
31
32
	echo '
33
	<div id="admincenter">
34
		<form action="', $scripturl, '?action=admin;area=news;sa=mailingcompose" method="post" id="admin_newsletters" class="flow_hidden" accept-charset="UTF-8">
35
			<h2 class="category_header">', $txt['admin_newsletters'], '</h2>
36
			<div class="information">
37
				', $txt['admin_news_select_recipients'], '
38
			</div>
39
			<div id="include_panel_header">
40
				<h2 class="category_header">
41
					', $txt['include_these'], '
42
				</h2>
43
			</div>
44
			<div class="content">
45
				<dl class="settings">
46
					<dt>
47
						<label>', $txt['admin_news_select_group'], ':</label><br />
48
						<span class="smalltext">', $txt['admin_news_select_group_desc'], '</span>
49
					</dt>
50
					<dd>';
51
52
	template_list_groups_collapsible('groups');
53
54
	echo '
55
					</dd>
56
					<dt>
57
						<label for="emails">', $txt['admin_news_select_email'], ':</label><br />
58
						<span class="smalltext">', $txt['admin_news_select_email_desc'], '</span>
59
					</dt>
60
					<dd>
61
						<textarea id="emails" name="emails" rows="5" cols="30" style="width: 98%;"></textarea>
62
					</dd>
63
					<dt>
64
						<label for="members">', $txt['admin_news_select_members'], ':</label><br />
65
						<span class="smalltext">', $txt['admin_news_select_members_desc'], '</span>
66
					</dt>
67
					<dd>
68
						<input type="text" name="members" id="members" value="" size="30" class="input_text" />
69
						<span id="members_container"></span>
70
					</dd>
71
				</dl>
72
				<hr class="bordercolor" />
73
				<dl class="settings">
74
					<dt>
75
						<label for="email_force">', $txt['admin_news_select_override_notify'], ':</label><br />
76
						<span class="smalltext">', $txt['email_force'], '</span>
77
					</dt>
78
					<dd>
79
						<input type="checkbox" name="email_force" id="email_force" value="1" />
80
					</dd>
81
				</dl>
82
			</div>
83
			<div id="exclude_panel_header">
84
				<h2 class="category_header panel_toggle">
85
					<span>
86
						<span id="upshrink_ic" class="chevricon i-chevron-', empty($context['admin_preferences']['apn']) ? 'up' : 'down', ' hide" title="', $txt['hide'], '"></span>
87
					</span>
88
					<a href="#" id="exclude_panel_link" >', $txt['exclude_these'], '</a>
89
				</h2>
90
			</div>
91
			<div id="exclude_panel_div">
92
				<div class="content">
93
					<dl class="settings">
94
						<dt>
95
							<label>', $txt['admin_news_select_excluded_groups'], ':</label><br />
96
							<span class="smalltext">', $txt['admin_news_select_excluded_groups_desc'], '</span>
97
						</dt>
98
						<dd>';
99
100
	template_list_groups_collapsible('exclude_groups');
101
102
	echo '
103
						<dt>
104
							<label>', $txt['admin_news_select_excluded_members'], ':</label><br />
105
							<span class="smalltext">', $txt['admin_news_select_excluded_members_desc'], '</span>
106
						</dt>
107
						<dd>
108
							<input type="text" name="exclude_members" id="exclude_members" value="" size="30" class="input_text" />
109
							<span id="exclude_members_container"></span>
110
						</dd>
111
					</dl>
112
				</div>
113
			</div>
114
			<div class="submitbutton">
115
				<input type="submit" value="', $txt['admin_next'], '" />
116
				<input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
117
			</div>
118
		</form>
119
	</div>';
120
121
	// This is some javascript for the simple/advanced toggling and member suggest
122
	addInlineJavascript('
123
		var oAdvancedPanelToggle = new elk_Toggle({
124
			bToggleEnabled: true,
125
			bCurrentlyCollapsed: ' . (empty($context['admin_preferences']['apn']) ? 'false' : 'true') . ',
126
			aSwappableContainers: [
127
				\'exclude_panel_div\'
128
			],
129
			aSwapClasses: [
130
				{
131
					sId: \'upshrink_ic\',
132
					classExpanded: \'chevricon i-chevron-up\',
133
					titleExpanded: ' . JavaScriptEscape($txt['hide']) . ',
134
					classCollapsed: \'chevricon i-chevron-down\',
135
					titleCollapsed: ' . JavaScriptEscape($txt['show']) . '
136
				}
137
			],
138
			aSwapLinks: [
139
				{
140
					sId: \'exclude_panel_link\',
141
					msgExpanded: ' . JavaScriptEscape($txt['exclude_these']) . ',
142
					msgCollapsed: ' . JavaScriptEscape($txt['exclude_these']) . '
143
				}
144
			],
145
			oThemeOptions: {
146
				bUseThemeSettings: ' . ($context['user']['is_guest'] ? 'false' : 'true') . ',
147
				sOptionName: \'admin_preferences\',
148
				sSessionVar: elk_session_var,
149
				sSessionId: elk_session_id,
150
				sThemeId: \'1\',
151
				sAdditionalVars: \';admin_key=apn\'
152
			}
153
		});
154
155
		var oMemberSuggest = new smc_AutoSuggest({
156
			sSelf: \'oMemberSuggest\',
157
			sSessionId: elk_session_id,
158
			sSessionVar: elk_session_var,
159
			sSuggestId: \'members\',
160
			sControlId: \'members\',
161
			sSearchType: \'member\',
162
			bItemList: true,
163
			sPostName: \'member_list\',
164
			sURLMask: \'action=profile;u=%item_id%\',
165
			sTextDeleteItem: \'' . $txt['autosuggest_delete_item'] . '\',
166
			sItemListContainerId: \'members_container\',
167
			aListItems: []
168
		});
169
170
		var oExcludeMemberSuggest = new smc_AutoSuggest({
171
			sSelf: \'oExcludeMemberSuggest\',
172
			sSessionId: elk_session_id,
173
			sSessionVar: elk_session_var,
174
			sSuggestId: \'exclude_members\',
175
			sControlId: \'exclude_members\',
176
			sSearchType: \'member\',
177
			bItemList: true,
178
			sPostName: \'exclude_member_list\',
179
			sURLMask: \'action=profile;u=%item_id%\',
180
			sTextDeleteItem: \'' . $txt['autosuggest_delete_item'] . '\',
181
			sItemListContainerId: \'exclude_members_container\',
182
			aListItems: []
183
		});', true);
184
}
185
186
/**
187
 * Template for the section to compose an email to members
188
 */
189
function template_email_members_compose()
190
{
191
	global $context, $txt, $scripturl;
192
193
	echo '
194
	<div id="admincenter">
195
		<form name="newsmodify" action="', $scripturl, '?action=admin;area=news;sa=mailingsend" method="post" accept-charset="UTF-8">
196
			<h2 class="category_header">
197
				', $txt['admin_newsletters'], '
198
			</h2>
199
			<div class="information">
200
				', str_replace('{help_emailmembers}', $scripturl . '?action=quickhelp;help=emailmembers" onclick="return reqOverlayDiv(this.href);', $txt['email_variables']), '
201
			</div>';
202
203
	// The preview section
204
	echo '
205
			<div id="preview_section"', isset($context['preview_message']) ? '' : ' class="hide"', '>
206
				<h2 class="category_header">
207
					<span id="preview_subject">', empty($context['preview_subject']) ? '' : $context['preview_subject'], '</span>
208
				</h2>
209
				<div id="preview_body">
210
					', empty($context['preview_message']) ? '<br />' : $context['preview_message'], '
211
				</div>
212
			</div>';
213
214
	// Any errors to speak of?
215
	echo '
216
			<div class="content">
217
				<div id="post_error" class="', (empty($context['error_type']) || $context['error_type'] != 'serious' ? 'warningbox' : 'errorbox'), empty($context['post_error']['messages']) ? ' hide"' : '"', '>
218
					<dl>
219
						<dt>
220
							<strong id="error_serious">', $txt['error_while_submitting'], '</strong>
221
						</dt>
222
						<dd>
223
							<ul class="error" id="post_error_list">
224
								', empty($context['post_error']['messages']) ? '' : '<li>' . implode('</li><li>', $context['post_error']['messages']) . '</li>', '
225
							</ul>
226
						</dd>
227
					</dl>
228
				</div>';
229
230
	// Show the editor area
231
	echo '
232
				<div class="editor_wrapper">
233
					<dl id="post_header">
234
						<dt class="clear_left">
235
							<label for="subject"', (isset($context['post_error']['no_subject']) ? ' class="error"' : ''), ' id="caption_subject">', $txt['subject'], ':</label>
236
						</dt>
237
						<dd id="pm_subject">
238
							<input type="text" id="subject" name="subject" value="', $context['subject'], '" tabindex="', $context['tabindex']++, '" size="60" maxlength="60"', isset($context['post_error']['no_subject']) ? ' class="error"' : ' class="input_text"', '/>
239
						</dd>
240
					</dl>
241
					<hr class="clear" />';
242
243
	// Show BBC buttons, smileys and textbox.
244
	echo '
245
					', template_control_richedit($context['post_box_name'], 'smileyBox_message', 'bbcBox_message');
246
247
	echo '
248
					<ul>
249
						<li>
250
							<label for="send_pm">
251
								<input type="checkbox" name="send_pm" id="send_pm" ', !empty($context['send_pm']) ? 'checked="checked"' : '', 'onclick="checkboxes_status(this);" /> ', $txt['email_as_pms'], '
252
							</label>
253
						</li>
254
						<li>
255
							<label for="send_html">
256
								<input type="checkbox" name="send_html" id="send_html" ', !empty($context['send_html']) ? 'checked="checked"' : '', 'onclick="checkboxes_status(this);" /> ', $txt['email_as_html'], '
257
							</label>
258
						</li>
259
						<li>
260
							<label for="parse_html">
261
								<input type="checkbox" name="parse_html" id="parse_html" checked="checked" disabled="disabled" /> ', $txt['email_parsed_html'], '
262
							</label>
263
						</li>
264
					</ul>
265
					<div class="submitbutton">
266
						', template_control_richedit_buttons($context['post_box_name']), '
267
						<input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
268
						<input type="hidden" name="email_force" value="', $context['email_force'], '" />
269
						<input type="hidden" name="total_emails" value="', $context['total_emails'], '" />
270
						<input type="hidden" name="max_id_member" value="', $context['max_id_member'], '" />
271
					</div>
272
				</div>
273
			</div>';
274
275 View Code Duplication
	foreach ($context['recipients'] as $key => $values)
276
		echo '
277
			<input type="hidden" name="', $key, '" value="', implode(($key == 'emails' ? ';' : ','), $values), '" />';
278
279
	// The vars used to preview a newsletter without loading a new page, used by post.js previewControl()
280
	addInlineJavascript('
281
		var form_name = "newsmodify",
282
			preview_area = "news",
283
			txt_preview_title = "' . $txt['preview_title'] . '",
284
			txt_preview_fetch = "' . $txt['preview_fetch'] . '";
285
286
		function checkboxes_status (item)
287
		{
288
			if (item.id == \'send_html\')
289
				document.getElementById(\'parse_html\').disabled = !document.getElementById(\'parse_html\').disabled;
290
291
			if (item.id == \'send_pm\')
292
			{
293
				if (!document.getElementById(\'send_html\').checked)
294
					document.getElementById(\'parse_html\').disabled = true;
295
				else
296
					document.getElementById(\'parse_html\').disabled = false;
297
298
				document.getElementById(\'send_html\').disabled = !document.getElementById(\'send_html\').disabled;
299
			}
300
		}', true);
301
302
	echo '
303
		</form>
304
	</div>';
305
}
306
307
/**
308
 * Template for sending an email to members
309
 */
310
function template_email_members_send()
311
{
312
	global $context, $txt, $scripturl;
313
314
	echo '
315
	<div id="admincenter">
316
		<form action="', $scripturl, '?action=admin;area=news;sa=mailingsend" method="post" accept-charset="UTF-8" name="autoSubmit" id="autoSubmit">
317
			<h2 class="category_header">
318
				<a class="hdicon cat_img_helptopics help" href="', $scripturl, '?action=quickhelp;help=email_members" onclick="return reqOverlayDiv(this.href);" title="', $txt['help'], '"></a> ', $txt['admin_newsletters'], '
319
			</h2>
320
			<div class="content">
321
				<div class="progress_bar">
322
					<div class="full_bar">', $context['percentage_done'], '% ', $txt['email_done'], '</div>
323
					<div class="green_percent" style="width: ', $context['percentage_done'], '%;">&nbsp;</div>
324
				</div>
325
				<div class="submitbutton">
326
					<input type="submit" name="cont" value="', $txt['email_continue'], '" />
327
					<input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
328
					<input type="hidden" name="subject" value="', $context['subject'], '" />
329
					<input type="hidden" name="message" value="', $context['message'], '" />
330
					<input type="hidden" name="start" value="', $context['start'], '" />
331
					<input type="hidden" name="total_emails" value="', $context['total_emails'], '" />
332
					<input type="hidden" name="max_id_member" value="', $context['max_id_member'], '" />
333
					<input type="hidden" name="send_pm" value="', $context['send_pm'], '" />
334
					<input type="hidden" name="send_html" value="', $context['send_html'], '" />
335
					<input type="hidden" name="parse_html" value="', $context['parse_html'], '" />';
336
337
	// All the things we must remember!
338 View Code Duplication
	foreach ($context['recipients'] as $key => $values)
339
		echo '
340
					<input type="hidden" name="', $key, '" value="', implode(($key == 'emails' ? ';' : ','), $values), '" />';
341
342
	echo '
343
				</div>
344
			</div>
345
		</form>
346
	</div>
347
348
	<script>
349
		doAutoSubmit(2, ', JavaScriptEscape($txt['email_continue']), ');
350
	</script>';
351
}
352
353
/**
354
 * Template for informing the user the sending succeeded
355
 */
356
function template_email_members_succeeded()
357
{
358
	global $txt, $scripturl;
359
360
	echo '
361
	<div id="admincenter">
362
		<h2 class="category_header">
363
			<a class="hdicon cat_img_helptopics help" href="', $scripturl, '?action=quickhelp;help=email_members" onclick="return reqOverlayDiv(this.href);" title="', $txt['help'], '"></a> ', $txt['admin_newsletters'], '
364
		</h2>
365
		<div class="content">
366
			<div class="successbox">
367
				', $txt['email_members_succeeded'], '
368
			</div>
369
			<hr />
370
			<a href="', $scripturl, '?action=admin" class="linkbutton right_submit">', $txt['admin_back_to'], '</a>
371
		</div>
372
	</div>';
373
}
374