1###############################################################################
2# Settings_Main.pm                                                            #
3# $Date: 12.02.14 $                                                           #
4###############################################################################
5# YaBB: Yet another Bulletin Board                                            #
6# Open-Source Community Software for Webmasters                               #
7# Version:        YaBB 2.6.11                                                 #
8# Packaged:       December 2, 2014                                            #
9# Distributed by: http://www.yabbforum.com                                    #
10# =========================================================================== #
11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved.     #
12# Software by:  The YaBB Development Team                                     #
13#               with assistance from the YaBB community.                      #
14###############################################################################
15# use strict;
16use CGI::Carp qw(fatalsToBrowser);
17use English qw(-no_match_vars);
18our $VERSION = '2.6.11';
19
20our $settings_mainpmver = 'YaBB 2.6.11 $Revision: 1611 $';
21if ($action eq 'detailedversion') { return 1; }
22
23# Language requirements
24LoadLanguage('Register');
25$admin_images = "$yyhtml_root/Templates/Admin/default";
26
27# Date/Time selector
28my (
29    $forumstart_month, $forumstart_day,    $forumstart_year,
30    $forumstart_hour,  $forumstart_minute, $forumstart_secund
31  )
32  = $forumstart =~
33  m/(\d{2})\/(\d{2})\/(\d{2,4}).*?(\d{2})\:(\d{2})\:(\d{2})/xsm;
34
35if ($forumstart_month > 12) { $forumstart_month = 12; }
36if ($forumstart_month < 1) { $forumstart_month = 1; }
37if ($forumstart_day > 31) { $forumstart_day = 31; }
38if ($forumstart_day < 1) { $forumstart_day = 1; }
39if ( length($forumstart_year) > 2 ) {
40    $forumstart_year = substr $forumstart_year, length($forumstart_year) - 2, 2;
41}
42if ($forumstart_year < 90 && $forumstart_year > 20) { $forumstart_year = 90; }
43if ($forumstart_year > 20 && $forumstart_year < 90) { $forumstart_year = 20; }
44if ($forumstart_hour > 23) { $forumstart_hour = 23; }
45if ($forumstart_minute > 59) { $forumstart_minute = 59; }
46if ($forumstart_secund > 59) { $forumstart_secund = 59; }
47
48my $sel_day = q~
49<select name="forumstart_day"~
50  . (
51    ( $timeselected == 1 || $timeselected == 4 || $timeselected == 5 )
52    ? q{}
53    : ' id="fd_fm"'
54  ) . qq~>\n~;
55foreach my $i ( 1 .. 31 ) {
56    $day_val = sprintf '%02d', $i;
57    $sel_day .=
58qq~<option value="$day_val" ${isselected($forumstart_day == $i)}>$i</option>\n~;
59}
60$sel_day .= qq~</select>\n~;
61
62my $sel_month = q~
63<select name="forumstart_month"~
64  . (
65    ( $timeselected == 1 || $timeselected == 4 || $timeselected == 5 )
66    ? ' id="fd_fm"'
67    : q{}
68  ) . qq~>\n~;
69foreach my $i ( 0 .. 11 ) {
70    $z = $i+1;
71    $month_val = sprintf '%02d', $z;
72    $sel_month .=
73qq~<option value="$month_val" ${isselected($forumstart_month == $z)}>$months[$i]</option>\n~;
74}
75$sel_month .= qq~</select>\n~;
76
77my $sel_year = qq~<select name="forumstart_year">\n~;
78foreach my $i ( 90 .. 120 ) {
79    if   ( $i < 100 ) { $z = $i;       $year_pre = q~19~; }
80    else              { $z = $i - 100; $year_pre = q~20~; }
81    $year_val = sprintf '%02d', $z;
82    $sel_year .=
83qq~<option value="$year_val" ${isselected($forumstart_year == $z)}>$year_pre$year_val</option>\n~;
84}
85$sel_year .= qq~</select>\n~;
86
87if ( $timeselected == 1 || $timeselected == 4 || $timeselected == 5 ) {
88    $all_date = qq~$sel_month $sel_day $sel_year~;
89}
90else { $all_date = qq~$sel_day $sel_month $sel_year~; }
91
92my $sel_hour = qq~
93<select name="forumstart_hour">\n~;
94for my $i ( 0 .. 23 ) {
95    $hour_val = sprintf '%02d', $i;
96    $sel_hour .= qq~<option value="$hour_val" ${isselected($forumstart_hour == $i)}>$hour_val</option>\n~;
97}
98$sel_hour .= qq~</select>\n~;
99
100my $sel_minute = qq~
101<select name="forumstart_minute">\n~;
102for my $i ( 0 .. 59 ) {
103    $minute_val = sprintf '%02d', $i;
104    $sel_minute .= qq~<option value="$minute_val" ${isselected($forumstart_minute == $i)}>$minute_val</option>\n~;
105}
106$sel_minute .= qq~</select>\n~;
107
108my $sel_secund = qq~<input type="hidden" value="$forumstart_secund" name="forumstart_secund" />~;
109my $all_time = qq~$sel_hour $sel_minute $sel_secund~;
110# End time
111
112my $mytz = $default_tz;
113my $tz_select = q~<select name="default_tz" id="default_tz">~;
114$tz_select .= qq~<option value="UTC" ${isselected('UTC' eq $mytz)}>UTC</option>~;
115
116eval {
117    require DateTime;
118    require DateTime::TimeZone;
119};
120my $dt_check = $EVAL_ERROR;
121if( $dt_check ) {
122    $tz_select .= qq~<option value="local" ${isselected('local' eq $mytz)}>$admin_txt{'local'}</option>~;
123    my @usertimeoffset = split /\./xsm, $timeoffset;
124    $timeoffsetselect = q~<select name="usertimesign" id="usertimesign"><option value="">+</option><option value="-"~ . ($usertimeoffset[0] < 0 ? ' selected="selected"' : q{}) . q~>-</option></select> <select name="usertimehour">~;
125    for my $i ( 0 .. 14 ) {
126        $i = sprintf '%02d', $i;
127        $timeoffsetselect .= qq~<option value="$i"~ . (($usertimeoffset[0] == $i || $usertimeoffset[0] == -$i) ? ' selected="selected"' : q{}) . qq~>$i</option>~;
128    }
129    $timeoffsetselect .= qq~</select> : <select name="usertimemin">~;
130    for my $i( 0 .. 59 ) {
131        my $j = $i / 60;
132        $j = (split /\./xsm, $j)[1] || 0;
133        $timeoffsetselect .= qq~<option value="$j"~ . ($usertimeoffset[1] eq $j ? ' selected="selected"' : q{}) . q~>~ . sprintf('%02d', $i) . q~</option>~;
134    }
135    $timeoffsetselect .= q~</select>~;
136    $dstoffsetlabel = qq~<label for="dstoffset">$admin_txt{'371e'}</label>~;
137    $dstoffsetinput = qq~<input type="checkbox" name="dstoffset" id="dstoffset" value="1"${ischecked($dstoffset)}/>~,
138}
139else {
140    DateTime->import();
141    DateTime::TimeZone->import();
142    LoadLanguage('Countries');
143    my @mycntry = sort { $countrytime_txt{$a} cmp $countrytime_txt{$b} } keys %countrytime_txt;
144
145    for my $i ( @mycntry ) {
146            $tz_select .= qq~<option value="$i" ${isselected($i eq $mytz)}>$countrytime_txt{$i}</option>~;
147    }
148}
149$tz_select .= '</select>';
150# Language selector
151opendir LNGDIR, $langdir;
152my @lfilesanddirs = readdir LNGDIR;
153closedir LNGDIR;
154foreach my $fld (sort {lc($a) cmp lc $b} @lfilesanddirs) {
155    if (-e "$langdir/$fld/Main.lng") {
156      my $displang = $fld;
157        $displang =~ s/(.+?)\_(.+?)$/$1 ($2)/gism;
158        $drawnldirs .= qq~<option value="$fld" ${isselected($fld eq $lang)}>$displang</option>~;
159    }
160}
161
162# For improved email check
163eval {
164    require Net::DNS;
165};
166my $no_imp_email = $EVAL_ERROR;
167if( $no_imp_email ) {
168    $no_imp_email_check = qq~$admin_txt{'no_imp_email_check'}~;
169    $imp_email_check_dis = ' disabled="disabled"';
170}
171
172# Template selector
173foreach my $curtemplate (sort{ $templateset{$a} cmp $templateset{$b} } keys %templateset) {
174    $drawndirs .= qq~<option value="$curtemplate" ${isselected($curtemplate eq $default_template)}>$curtemplate</option>\n~;
175}
176
177# imspam conversion
178if ($imspam eq 'off') { $imspam = 0;}
179$guest_view_limit ||= 15;
180
181$imtext =~ s~<br />~\n~gsm;
182
183# max / min for PM search
184$enable_PMsearch =~ s/\D//igsm;
185if (!$enable_PMsearch) { $enable_PMsearch = 0;}
186if ($enable_PMsearch > 50) {$enable_PMsearch = 50 ;}
187if ($enable_PMsearch < 5) {$enable_PMsearch = 5;}
188if ($set_subjectMaxLength eq q{}) {$set_subjectMaxLength = 50;}
189if ($RegReasonSymbols eq q{}) { $RegReasonSymbols = 200 ;}
190if ($ML_Allowed eq q{}) { $ML_Allowed = 1;}
191if ($default_userpic eq q{}) { $default_userpic = 'nn.gif';}
192
193require Admin::ManageBoards; # needed for avatar upload settings
194
195# Insert default if forum is being upgraded to YaBB 2.4
196if (!$pwstrengthmeter_scores && !$pwstrengthmeter_common && !$pwstrengthmeter_minchar) {
197    $FORM{'pwstrengthmeter_scores'} = '10,15,30,40';
198    $FORM{'pwstrengthmeter_common'} = q~"123456","abcdef","password"~;
199    $FORM{'pwstrengthmeter_minchar'} = 3;
200}
201
202# googiespell start
203eval { require LWP::UserAgent };
204my $modulLWP = $EVAL_ERROR;
205eval { require HTTP::Request::Common };
206my $modulHTTP = $EVAL_ERROR;
207eval { require Crypt::SSLeay };
208my $modulCrypt = $EVAL_ERROR;
209
210my $googiehtml = qq~<input type="checkbox" name="enable_spell_check" id="enable_spell_check" value="1"${ischecked($enable_spell_check)} />~;
211 if ($modulLWP || $modulHTTP || $modulCrypt) {
212    $googiehtml = q~<input type="hidden" name="enable_spell_check" value="0" />~ .
213    $admin_txt{'377a'} .
214    '- LWP::UserAgent &lt;- <b>' . ($modulLWP ? $modulLWP : $admin_txt{'377b'}) . '</b><br />' .
215    '- HTTP::Request::Common &lt;- <b>' . ($modulHTTP ? $modulHTTP : $admin_txt{'377b'}) . '</b><br />' .
216    '- Crypt::SSLeay &lt;- <b>' . ($modulCrypt ? $modulCrypt : $admin_txt{'377b'}) . '</b><br />' .
217    $admin_txt{'377c'};
218}
219# googiespell end
220
221$qcksearchtype ||= 'allwords';
222$qckage    = defined $qckage ? $qckage : 31;
223
224# List of settings
225
226@settings = (
227{
228    name  => $settings_txt{'generalforum'},
229    id    => 'general',
230    items => [
231        {
232            header => $settings_txt{'generalforum'},
233        },
234        {
235            description => qq~<label for="mbname">$admin_txt{'350'}</label>~,
236            input_html => qq~<input type="text" size="40" name="mbname" id="mbname" value="$mbname" />~,
237            name => 'mbname',
238            validate => 'text',
239        },
240        {
241            description => qq~<label for="fd_fm">$admin_txt{'350a'}</label>~,
242            input_html => qq~$all_date $maintxt{'107'} $all_time~,
243            ### Custom validated.
244        },
245        {
246            description => qq~<label for="MenuType">$admin_txt{'521'}</label>~,
247            input_html => qq~
248<select name="MenuType" id="MenuType" size="1">
249  <option value="0" ${isselected($MenuType == 0)}>$admin_txt{'521a'}</option>
250  <option value="1" ${isselected($MenuType == 1)}>$admin_txt{'521b'}</option>
251  <option value="2" ${isselected($MenuType == 2)}>$admin_txt{'521c'}</option>
252</select>~,
253            name => 'MenuType',
254            validate => 'number',
255        },
256        {
257            description => qq~<label for="default_template">$admin_txt{'813'}</label>~,
258            input_html => qq~<select name="default_template" id="default_template">$drawndirs</select>~,
259            name => 'default_template',
260            validate => 'text',
261        },
262        {
263            description => qq~<label for="lang">$admin_txt{'816'}</label>~,
264            input_html => qq~<select name="lang" id="lang">$drawnldirs</select>~,
265            name => 'lang',
266            validate => 'text',
267        },
268        {
269            description => qq~<label for="yymycharset">$admin_txt{'816a'}</label>~,
270            input_html => qq~
271<select name="yymycharset" id="yymycharset" size="1">
272  <option value="UTF-8" ${isselected($yymycharset eq 'UTF-8')}>UTF-8</option>
273  <option value="ISO-8859-1" ${isselected($yymycharset eq 'ISO-8859-1')}>ISO-8859-1</option>
274</select>
275~,
276            name => 'yymycharset',
277            validate => 'text',
278        },
279        {
280            description => qq~<label for="forumnumberformat">$admin_txt{'forumnumbformat'}</label>~,
281            input_html => qq~
282<select name="forumnumberformat" id="forumnumberformat" size="1">
283  <option value="1" ${isselected($forumnumberformat == 1)}>10987.65</option>
284  <option value="2" ${isselected($forumnumberformat == 2)}>10987,65</option>
285  <option value="3" ${isselected($forumnumberformat == 3)}>10,987.65</option>
286  <option value="4" ${isselected($forumnumberformat == 4)}>10.987,65</option>
287  <option value="5" ${isselected($forumnumberformat == 5)}>10 987,65</option>
288</select>~,
289            name => 'forumnumberformat',
290            validate => 'number',
291        },
292        {
293            description => qq~<label for="timeselected">$admin_txt{'587'}</label>~,
294            input_html => qq~
295<select name="timeselected" id="timeselected" size="1">
296  <option value="1" ${isselected($timeselected == 1)}>$admin_txt{'480'}</option>
297  <option value="5" ${isselected($timeselected == 5)}>$admin_txt{'484'}</option>
298  <option value="4" ${isselected($timeselected == 4)}>$admin_txt{'483'}</option>
299  <option value="8" ${isselected($timeselected == 8)}>$admin_txt{'483a'}</option>
300  <option value="2" ${isselected($timeselected == 2)}>$admin_txt{'481'}</option>
301  <option value="3" ${isselected($timeselected == 3)}>$admin_txt{'482'}</option>
302  <option value="6" ${isselected($timeselected == 6)}>$admin_txt{'485'}</option>
303</select>~,
304            name => 'timeselected',
305            validate => 'number',
306        },
307        {
308            header => $settings_txt{'forumtime'},
309        },
310        {
311            description => qq~$admin_txt{'371'}~,
312            input_html => timeformat($date,1,0,1),
313        },
314        {
315            description => qq~<label for="enabletz">$admin_txt{'371a'}</label>~,
316            input_html => qq~<input type="checkbox" name="enabletz" id="enabletz" value="1"${ischecked($enabletz)} />~,
317            name => 'enabletz',
318            validate => 'boolean',
319        },
320        {
321            description => qq~<label for="default_tz">$admin_txt{'371d'}</label>~,
322            input_html => $tz_select,
323        },
324            ### Custom validated.
325        {
326            description => qq~<label for="usertimesign">$admin_txt{'371f'}</label>~,
327            input_html => $timeoffsetselect,
328            ### Custom validated.
329        },
330        {
331            description => $dstoffsetlabel,
332            input_html => $dstoffsetinput,
333            name => 'dstoffset',
334            validate => 'boolean',
335        },
336        {
337            description => qq~<label for="dynamic_clock">$admin_txt{'371b'}</label>~,
338            input_html => qq~<input type="checkbox" name="dynamic_clock" id="dynamic_clock" value="1"${ischecked($dynamic_clock)}/>~,
339            name => 'dynamic_clock',
340            validate => 'boolean',
341        },
342        {
343            description => qq~<label for="timecorrection">$admin_txt{'371c'}</label>~,
344            input_html => qq~<input type="text" size="4" name="timecorrection" id="timecorrection" value="$timecorrection" />~,
345            name => 'timecorrection',
346            validate => 'fullnumber',
347        },
348        {
349            header => $settings_txt{'showhide'},
350        },
351        {
352            description => qq~<label for="profilebutton">$admin_txt{'523'}</label>~,
353            input_html => qq~<input type="checkbox" name="profilebutton" id="profilebutton" value="1"${ischecked($profilebutton)} />~,
354            name => 'profilebutton',
355            validate => 'boolean',
356        },
357        {
358            description => qq~<label for="usertools">$admin_txt{'526'}</label>~,
359            input_html => qq~<input type="checkbox" name="usertools" id="usertools" value="1"${ischecked($usertools)} />~,
360            name => 'usertools',
361            validate => 'boolean',
362        },
363        {
364            description => qq~<label for="showlatestmember">$admin_txt{'382'}</label>~,
365            input_html => qq~<input type="checkbox" name="showlatestmember" id="showlatestmember" value="1"${ischecked($showlatestmember)} />~,
366            name => 'showlatestmember',
367            validate => 'boolean',
368        },
369        {
370            description => qq~<label for="Show_RecentBar">$admin_txt{'509'}</label>~,
371            input_html => qq~
372<select name="Show_RecentBar" id="Show_RecentBar" size="1">
373  <option value="0" ${isselected($Show_RecentBar == 0)}>$admin_txt{'509a'}</option>
374  <option value="1" ${isselected($Show_RecentBar == 1)}>$admin_txt{'509b'}</option>
375  <option value="2" ${isselected($Show_RecentBar == 2)}>$admin_txt{'509c'}</option>
376  <option value="3" ${isselected($Show_RecentBar == 3)}>$admin_txt{'509d'}</option>
377</select>~,
378            name => 'Show_RecentBar',
379            validate => 'number',
380        },
381        {
382            description => qq~<label for="showpageall">$admin_txt{'showall'}</label>~,
383            input_html => qq~<input type="checkbox" name="showpageall" id="showpageall" value="1"${ischecked($showpageall)} />~,
384            name => 'showpageall',
385            validate => 'boolean',
386        },
387        {
388            description => qq~<label for="ShowBDescrip">$admin_txt{'732'}</label>~,
389            input_html => qq~<input type="checkbox" name="ShowBDescrip" id="ShowBDescrip" value="1"${ischecked($ShowBDescrip)} />~,
390            name => 'ShowBDescrip',
391            validate => 'boolean',
392        },
393        {
394            description => qq~<label for="showmodify">$admin_txt{'383'}</label>~,
395            input_html => qq~<input type="checkbox" name="showmodify" id="showmodify" value="1"${ischecked($showmodify)} />~,
396            name => 'showmodify',
397            validate => 'boolean',
398        },
399        {
400            description => qq~<label for="showuserpic">$admin_txt{'384'}</label>~,
401            input_html => qq~<input type="checkbox" name="showuserpic" id="showuserpic" value="1"${ischecked($showuserpic)} />~,
402            name => 'showuserpic',
403            validate => 'boolean',
404        },
405        {
406            description => qq~<label for="showusertext">$admin_txt{'385'}</label>~,
407            input_html => qq~<input type="checkbox" name="showusertext" id="showusertext" value="1"${ischecked($showusertext)} />~,
408            name => 'showusertext',
409            validate => 'boolean',
410        },
411        {
412            description => qq~<label for="showgenderimage">$admin_txt{'386'}</label>~,
413            input_html => qq~<input type="checkbox" name="showgenderimage" id="showgenderimage" value="1"${ischecked($showgenderimage)} />~,
414            name => 'showgenderimage',
415            validate => 'boolean',
416        },
417        {
418            description => qq~<label for="showzodiac">$admin_txt{'zodiac'}</label>~,
419            input_html => qq~<input type="checkbox" name="showzodiac" id="showzodiac" value="1"${ischecked($showzodiac)} />~,
420            name => 'showzodiac',
421            validate => 'boolean',
422        },
423        {
424            description => qq~<label for="showuserage">$admin_txt{'show_user_age'}</label>~,
425            input_html => qq~<input type="checkbox" name="showuserage" id="showuserage" value="1"${ischecked($showuserage)} />~,
426            name => 'showuserage',
427            validate => 'boolean',
428        },
429        {
430            description => qq~<label for="showregdate">$admin_txt{'show_reg_date'}</label>~,
431            input_html => qq~<input type="checkbox" name="showregdate" id="showregdate" value="1"${ischecked($showregdate)} />~,
432            name => 'showregdate',
433            validate => 'boolean',
434        },
435        {
436            description => qq~<label for="hide_signat_for_guests">$admin_txt{'409'}</label>~,
437            input_html => qq~<input type="checkbox" name="hide_signat_for_guests" id="hide_signat_for_guests" value="1"${ischecked($hide_signat_for_guests)} />~,
438            name => 'hide_signat_for_guests',
439            validate => 'boolean',
440        },
441        {
442            description => qq~<label for="showallgroups">$amv_txt{'12'}</label>~,
443            input_html => qq~<input type="checkbox" name="showallgroups" id="showallgroups" value="1"${ischecked($showallgroups)} />~,
444            name => 'showallgroups',
445            validate => 'boolean',
446        },
447        {
448            description => qq~<label for="showtopicviewers">$admin_txt{'394'}<br />$admin_txt{'396'}</label>~,
449            input_html => qq~<input type="checkbox" name="showtopicviewers" id="showtopicviewers" value="1"${ischecked($showtopicviewers)} />~,
450            name => 'showtopicviewers',
451            validate => 'boolean',
452        },
453        {
454            description => qq~<label for="showtopicrepliers">$admin_txt{'395'}<br />$admin_txt{'396'}</label>~,
455            input_html => qq~<input type="checkbox" name="showtopicrepliers" id="showtopicrepliers" value="1"${ischecked($showtopicrepliers)} />~,
456            name => 'showtopicrepliers',
457            validate => 'boolean',
458        },
459        {
460            description => qq~<label for="showimageinquote">$admin_txt{'imageinquote'}</label>~,
461            input_html => qq~<input type="checkbox" name="showimageinquote" id="showimageinquote" value="1"${ischecked($showimageinquote)} />~,
462            name => 'showimageinquote',
463            validate => 'boolean',
464        },
465        {
466            description => qq~<label for="enabletopichover">$admin_txt{'topichover'}</label>~,
467            input_html => qq~<input type="checkbox" name="enabletopichover" id="enabletopichover" value="1"${ischecked($enabletopichover)} />~,
468            name => 'enabletopichover',
469            validate => 'boolean',
470        },
471        {
472            description => qq~<label for="addtab_on">$admin_txt{'addtab_on'}</label>~,
473            input_html => qq~<input type="checkbox" name="addtab_on" id="addtab_on" value="1"${ischecked($addtab_on)} />~,
474            name => 'addtab_on',
475            validate => 'boolean',
476        },
477
478    ],
479},
480{
481    name  => $settings_txt{'posting'},
482    id    => 'posting',
483    items => [
484        {
485            header => $settings_txt{'posting'},
486        },
487        {
488            description => qq~<label for="enable_spell_check">$admin_txt{'377'}</label>~,
489            input_html => $googiehtml,
490            name => 'enable_spell_check',
491            validate => 'boolean',
492        },
493        {
494            description => qq~<label for="enable_ubbc">$admin_txt{'378'}</label>~,
495            input_html => qq~<input type="checkbox" name="enable_ubbc" id="enable_ubbc" value="1"${ischecked($enable_ubbc)} />~,
496            name => 'enable_ubbc',
497            validate => 'boolean',
498        },
499        {
500            description => qq~<label for="showyabbcbutt">$admin_txt{'740'}</label>~,
501            input_html => qq~<input type="checkbox" name="showyabbcbutt" id="showyabbcbutt" value="1"${ischecked($showyabbcbutt)} />~,
502            name => 'showyabbcbutt',
503            validate => 'boolean',
504        },
505        {
506            description => qq~<label for="parseflash">$admin_txt{'804'}</label>~,
507            input_html => qq~<input type="checkbox" name="parseflash" id="parseflash" value="1"${ischecked($parseflash)} />~,
508            name => 'parseflash',
509            validate => 'boolean',
510        },
511        {
512            description => qq~<label for="nestedquotes">$admin_txt{'378a'}</label>~,
513            input_html => qq~<input type="checkbox" name="nestedquotes" id="nestedquotes" value="1"${ischecked($nestedquotes)} />~,
514            name => 'nestedquotes',
515            validate => 'boolean',
516        },
517        {
518            description => qq~<label for="autolinkurls">$admin_txt{'524'}</label>~,
519            input_html => qq~<input type="checkbox" name="autolinkurls" id="autolinkurls" value="1"${ischecked($autolinkurls)} />~,
520            name => 'autolinkurls',
521            validate => 'boolean',
522        },
523        {
524            description => qq~<label for="checkallcaps">$admin_txt{'525'}</label>~,
525            input_html => qq~<input type="text" size="2" name="checkallcaps" id="checkallcaps" value="$checkallcaps" />~,
526            name => 'checkallcaps',
527            validate => 'number,null',
528        },
529        {
530            description => qq~<label for="set_subjectMaxLength">$admin_txt{'498a'}</label>~,
531            input_html => qq~<input type="text" size="5" name="set_subjectMaxLength" id="set_subjectMaxLength" value="$set_subjectMaxLength" />~,
532            name => 'set_subjectMaxLength',
533            validate => 'number',
534        },
535        {
536            description => qq~<label for="MaxMessLen">$admin_txt{'498'}</label>~,
537            input_html => qq~<input type="text" size="5" name="MaxMessLen" id="MaxMessLen" value="$MaxMessLen" />~,
538            name => 'MaxMessLen',
539            validate => 'number',
540        },
541        {
542            description =>
543              qq~<label for="AdMaxMessLen">$admin_txt{'498b'}</label>~,
544            input_html =>qq~<input type="text" size="5" name="AdMaxMessLen" id="AdMaxMessLen" value="$AdMaxMessLen" />~,
545            name     => 'AdMaxMessLen',
546            validate => 'number',
547        },
548        {
549            description => qq~<label for="fontsizemin">$admin_txt{'499'}</label>~,
550            input_html => qq~<input type="text" size="5" name="fontsizemin" id="fontsizemin" value="$fontsizemin" />~,
551            name => 'fontsizemin',
552            validate => 'number',
553        },
554        {
555            description => qq~<label for="fontsizemax">$admin_txt{'500'}</label>~,
556            input_html => qq~<input type="text" size="5" name="fontsizemax" id="fontsizemax" value="$fontsizemax" />~,
557            name => 'fontsizemax',
558            validate => 'number',
559        },
560        {
561            description => qq~<label for="HotTopic">$admin_txt{'842'}</label>~,
562            input_html => qq~<input type="text" size="5" name="HotTopic" id="HotTopic" value="$HotTopic" />~,
563            name => 'HotTopic',
564            validate => 'number',
565        },
566        {
567            description => qq~<label for="VeryHotTopic">$admin_txt{'843'}</label>~,
568            input_html => qq~<input type="text" size="5" name="VeryHotTopic" id="VeryHotTopic" value="$VeryHotTopic" />~,
569            name => 'VeryHotTopic',
570            validate => 'number',
571        },
572        {
573            description => qq~<label for="maxdisplay">$admin_txt{'374'}</label>~,
574            input_html => qq~<input type="text" name="maxdisplay" id="maxdisplay" size="5" value="$maxdisplay" />~,
575            name => 'maxdisplay',
576            validate => 'number',
577        },
578        {
579            description => qq~<label for="maxmessagedisplay">$admin_txt{'375'}</label>~,
580            input_html => qq~<input type="text" name="maxmessagedisplay" id="maxmessagedisplay" size="5" value="$maxmessagedisplay" />~,
581            name => 'maxmessagedisplay',
582            validate => 'number',
583        },
584        {
585            description => qq~<label for="posttools">$admin_txt{'527'}</label>~,
586            input_html => qq~<input type="checkbox" name="posttools" id="posttools" value="1"${ischecked($posttools)} />~,
587            name => 'posttools',
588            validate => 'boolean',
589        },
590        {
591            description => qq~<label for="threadtools">$admin_txt{'528'}</label>~,
592            input_html => qq~<input type="checkbox" name="threadtools" id="threadtools" value="1"${ischecked($threadtools)} />~,
593            name => 'threadtools',
594            validate => 'boolean',
595        },
596        {
597            description => qq~<label for="user_reason">$admin_txt{'user_reason'}</label>~,
598            input_html => qq~<input type="checkbox" name="user_reason" id="user_reason" value="1"${ischecked($user_reason)} />~,
599            name => 'user_reason',
600            validate => 'boolean',
601        },
602        {
603            header => $timelocktxt{'01'},
604        },
605        {
606            description => qq~<label for="tlnomodflag">$timelocktxt{'03'}</label>~,
607            input_html => qq~<input type="checkbox" name="tlnomodflag" id="tlnomodflag" value="1"${ischecked($tlnomodflag)} />~,
608            name => 'tlnomodflag',
609            validate => 'boolean',
610        },
611        {
612            description => qq~<label for="tlnomodtime">$timelocktxt{'04'}</label>~,
613            input_html => qq~<input type="text" size="5" name="tlnomodtime" id="tlnomodtime" value="$tlnomodtime" />~,
614            name => 'tlnomodtime',
615            validate => 'number',
616            depends_on => ['tlnomodflag'],
617        },
618        {
619            description => qq~<label for="tlnodelflag">$timelocktxt{'07'}</label>~,
620            input_html => qq~<input type="checkbox" name="tlnodelflag" id="tlnodelflag" value="1"${ischecked($tlnodelflag)} />~,
621            name => 'tlnodelflag',
622            validate => 'boolean',
623        },
624        {
625            description => qq~<label for="tlnodeltime">$timelocktxt{'08'}</label>~,
626            input_html => qq~<input type="text" size="5" name="tlnodeltime" id="tlnodeltime" value="$tlnodeltime" />~,
627            name => 'tlnodeltime',
628            validate => 'number',
629            depends_on => ['tlnodelflag'],
630        },
631        {
632            description => qq~<label for="tllastmodflag">$timelocktxt{'05'}</label>~,
633            input_html => qq~<input type="checkbox" name="tllastmodflag" id="tllastmodflag" value="1"${ischecked($tllastmodflag)} />~,
634            name => 'tllastmodflag',
635            validate => 'boolean',
636        },
637        {
638            description => qq~<label for="tllastmodtime">$timelocktxt{'06'}</label>~,
639            input_html => qq~<input type="text" size="5" name="tllastmodtime" id="tllastmodtime" value="$tllastmodtime" />~,
640            name => 'tllastmodtime',
641            validate => 'number',
642            depends_on => ['tllastmodflag'],
643        },
644        {
645            header => $cutts{'8'},
646        },
647        {
648            description => qq~<label for="ttsreverse">$cutts{'9'}</label>~,
649            input_html => qq~<input type="checkbox" name="ttsreverse" id="ttsreverse" value="1"${ischecked($ttsreverse)} />~,
650            name => 'ttsreverse',
651            validate => 'boolean',
652        },
653        {
654            description => qq~<label for="ttsureverse">$cutts{'9a'}</label>~,
655            input_html => qq~<input type="checkbox" name="ttsureverse" id="ttsureverse" value="1"${ischecked($ttsureverse)} />~,
656            name => 'ttsureverse',
657            validate => 'boolean',
658        },
659        {
660            description => qq~<label for="tsreverse">$cutts{'7'}</label>~,
661            input_html => qq~<input type="checkbox" name="tsreverse" id="tsreverse" value="1"${ischecked($tsreverse)} />~,
662            name => 'tsreverse',
663            validate => 'boolean',
664        },
665        {
666            description => qq~<label for="cutamount">$cutts{'1'}</label>~,
667            input_html => qq~<input type="text" size="5" name="cutamount" id="cutamount" value="$cutamount" />~,
668            name => 'cutamount',
669            validate => 'number',
670        },
671        {
672            header => $settings_txt{'poll'},
673        },
674        {
675            description => qq~<label for="numpolloptions">$polltxt{'28'}</label>~,
676            input_html => qq~<input type="text" size="5" name="numpolloptions" id="numpolloptions" value="$numpolloptions" />~,
677            name => 'numpolloptions',
678            validate => 'number',
679        },
680        {
681            description => qq~<label for="maxpq">$polltxt{'61'}</label>~,
682            input_html => qq~<input type="text" size="5" name="maxpq" id="maxpq" value="$maxpq" />~,
683            name => 'maxpq',
684            validate => 'number',
685        },
686        {
687            description => qq~<label for="maxpo">$polltxt{'62'}</label>~,
688            input_html => qq~<input type="text" size="5" name="maxpo" id="maxpo" value="$maxpo" />~,
689            name => 'maxpo',
690            validate => 'number',
691        },
692        {
693            description => qq~<label for="maxpc">$polltxt{'63'}</label>~,
694            input_html => qq~<input type="text" size="5" name="maxpc" id="maxpc" value="$maxpc" />~,
695            name => 'maxpc',
696            validate => 'number',
697        },
698        {
699            description => qq~<label for="useraddpoll">$polltxt{'29'}</label>~,
700            input_html => qq~<input type="checkbox" name="useraddpoll" id="useraddpoll" value="1"${ischecked($useraddpoll)} />~,
701            name => 'useraddpoll',
702            validate => 'boolean',
703        },
704        {
705            description => qq~<label for="ubbcpolls">$polltxt{'60'}</label>~,
706            input_html => qq~<input type="checkbox" name="ubbcpolls" id="ubbcpolls" value="1"${ischecked($ubbcpolls)} />~,
707            name => 'ubbcpolls',
708            validate => 'boolean',
709        },
710        {
711            header => $qrb_txt{'1'},
712        },
713        {
714            description => qq~<label for="enable_quickpost">$qrb_txt{'2'}</label>~,
715            input_html => qq~<input type="checkbox" name="enable_quickpost" id="enable_quickpost" value="1"${ischecked($enable_quickpost)} />~,
716            name => 'enable_quickpost',
717            validate => 'boolean',
718        },
719        {
720            description => qq~<label for="enable_quickreply">$qrb_txt{'3'}</label>~,
721            input_html => qq~<input type="checkbox" name="enable_quickreply" id="enable_quickreply" value="1"${ischecked($enable_quickreply)} />~,
722            name => 'enable_quickreply',
723            validate => 'boolean',
724        },
725        {
726            description => qq~<label for="enable_markquote">$qrb_txt{'4'}</label>~,
727            input_html => qq~<input type="checkbox" name="enable_markquote" id="enable_markquote" value="1"${ischecked($enable_markquote)} />~,
728            name => 'enable_markquote',
729            validate => 'boolean',
730            depends_on => ['enable_quickreply'],
731        },
732        {
733            description => qq~<label for="enable_quoteuser">$qrb_txt{'5'}</label>~,
734            input_html => qq~<input type="checkbox" name="enable_quoteuser" id="enable_quoteuser" value="1"${ischecked($enable_quoteuser)} />~,
735            name => 'enable_quoteuser',
736            validate => 'boolean',
737            depends_on => ['enable_quickreply'],
738        },
739        {
740            description => qq~<label for="quoteuser_color">$qrb_txt{'6'}</label>~,
741            input_html => qq~<input type="text" size="7" maxlength="7" name="quoteuser_color" id="quoteuser_color" value="$quoteuser_color" onkeyup="previewColor(this.value);" /> <span id="quoteuser_color2" style="background-color:$quoteuser_color">&nbsp; &nbsp; &nbsp;</span> <img src="$admin_images/palette1.gif" style="cursor: pointer; vertical-align:top" onclick="window.open('$scripturl?action=palette;task=templ', '', 'height=308,width=302,menubar=no,toolbar=no,scrollbars=no')" alt="" />
742            <script type="text/javascript">
743            function previewColor(color) {
744                document.getElementById('quoteuser_color2').style.background = color;
745                document.getElementsByName("quoteuser_color")[0].value = color;
746            }
747            </script>~,
748            name => 'quoteuser_color',
749            validate => 'text',
750            depends_on => ['enable_quoteuser', 'enable_quickreply'],
751        },
752        {
753            description => qq~<label for="enable_quickjump">$qrb_txt{'7'}</label>~,
754            input_html => qq~<input type="checkbox" name="enable_quickjump" id="enable_quickjump" value="1"${ischecked($enable_quickjump)} />~,
755            name => 'enable_quickjump',
756            validate => 'boolean',
757            depends_on => ['enable_quickpost||', 'enable_quickreply||'],
758        },
759        {
760            description => qq~<label for="quick_quotelength">$qrb_txt{'8'}</label>~,
761            input_html => qq~<input type="text" size="5" name="quick_quotelength" id="quick_quotelength" value="$quick_quotelength" />~,
762            name => 'quick_quotelength',
763            validate => 'number',
764            depends_on => ['enable_quickjump', 'enable_quickreply'],
765        },
766    ],
767},
768{
769    name  => $settings_txt{'search'},
770    id    => 'search',
771    items => [
772        {
773            header => $settings_txt{'search'},
774        },
775        {
776            description => qq~<label for="maxsearchdisplay">$settings_txt{'6'}</label>~,
777            input_html => qq~<input type="text" name="maxsearchdisplay" id="maxsearchdisplay" size="5" value="$maxsearchdisplay" />~,
778            name => 'maxsearchdisplay',
779            validate => 'fullnumber',
780        },
781        {
782            header => $settings_txt{'advsearch'},
783        },
784        {
785            description => qq~<label for="mgadvsearch">$settings_txt{'mgadvsearch'}</label>~,
786            input_html => q~<select multiple="multiple" name="mgadvsearch" id="mgadvsearch" size="8">~ . DrawPerms($mgadvsearch, 0) . q~</select>~,
787            name => 'mgadvsearch',
788            validate => 'text,null',
789        },
790        {
791            description => qq~<label for="enableguestsearch">$settings_txt{'guestsearch'}</label>~,
792            input_html => qq~<input type="checkbox" name="enableguestsearch" id="enableguestsearch" value="1" ${ischecked($enableguestsearch)}/>~,
793            name => 'enableguestsearch',
794            validate => 'boolean',
795        },
796        {
797            header => $settings_txt{'qcksearch'},
798        },
799        {
800            description => qq~<label for="mgqcksearch">$settings_txt{'mgqcksearch'}</label>~,
801            input_html => q~<select multiple="multiple" name="mgqcksearch" id="mgqcksearch" size="8">~ . DrawPerms($mgqcksearch, 0) . q~</select>~,
802            name => 'mgqcksearch',
803            validate => 'text,null',
804        },
805        {
806            description => qq~<label for="enableguestquicksearch">$settings_txt{'guestquicksearch'}</label>~,
807            input_html => qq~<input type="checkbox" name="enableguestquicksearch" id="enableguestquicksearch" value="1" ${ischecked($enableguestquicksearch)}/>~,
808            name => 'enableguestquicksearch',
809            validate => 'boolean',
810        },
811        {
812            header => $settings_txt{'qcksearchparam'},
813        },
814        {
815            description => qq~<label for="qcksearchtype">$settings_txt{'qcksearchtype'}</label>~,
816            input_html => qq~
817                <select name="qcksearchtype" id="qcksearchtype">
818                <option value="allwords"${isselected($qcksearchtype eq 'allwords')}>$settings_txt{'qckallwords'}</option>
819                <option value="anywords"${isselected($qcksearchtype eq 'anywords')}>$settings_txt{'qckanywords'}</option>
820                <option value="asphrase"${isselected($qcksearchtype eq 'asphrase')}>$settings_txt{'qckasphrase'}</option>
821                <option value="aspartial"${isselected($qcksearchtype eq 'aspartial')}>$settings_txt{'qckaspartial'}</option>
822                </select>~,
823            name => 'qcksearchtype',
824            validate => 'text',
825        },
826        {
827            description => qq~<label for="qckage">$settings_txt{'qckage'}</label>~,
828            input_html => qq~
829                <select name="qckage" id="qckage">
830                <option value="7"${isselected($qckage == 7)}>$settings_txt{'qckweek'}</option>
831                <option value="31"${isselected($qckage == 31)}>$settings_txt{'qckmonth'}</option>
832                <option value="92"${isselected($qckage == 92)}>$settings_txt{'qckthreemonths'}</option>
833                <option value="365"${isselected($qckage == 365)}>$settings_txt{'qckyear'}</option>
834                <option value="0"${isselected($qckage == 0)}>$settings_txt{'qckallposts'}</option>
835                </select>~,
836            name => 'qckage',
837            validate => 'number',
838        },
839    ],
840},
841{
842    name  => $settings_txt{'user'},
843    id    => 'user',
844    items => [
845        {
846            header => $settings_txt{'guest'},
847        },
848        {
849            description => qq~<label for="guestaccess">$admin_txt{'632'}</label>~,
850            input_html => qq~<input type="checkbox" name="guestaccess" id="guestaccess" value="1"${ischecked(!$guestaccess)} />~,
851            name => 'guestaccess',
852            validate => 'boolean',
853        },
854        {
855            description => qq~<label for="enable_guestposting">$admin_txt{'380'}</label>~,
856            input_html => qq~<input type="checkbox" name="enable_guestposting" id="enable_guestposting" value="1"${ischecked($enable_guestposting)} />~,
857            name => 'enable_guestposting',
858            validate => 'boolean',
859            depends_on => ['!guestaccess'],
860        },
861        {
862            description => qq~<label for="enable_guestlanguage">$admin_txt{'guestlang'}</label>~,
863            input_html => qq~<input type="checkbox" name="enable_guestlanguage" id="enable_guestlanguage" value="1"${ischecked($enable_guestlanguage)} />~,
864            name => 'enable_guestlanguage',
865            validate => 'boolean',
866            depends_on => ['!guestaccess'],
867        },
868        {
869            description => qq~<label for="guest_media_disallowed">$admin_txt{'guestmedia'}</label>~,
870            input_html => qq~<input type="checkbox" name="guest_media_disallowed" id="guest_media_disallowed" value="1"${ischecked($guest_media_disallowed)} />~,
871            name => 'guest_media_disallowed',
872            validate => 'boolean',
873            depends_on => ['!guestaccess'],
874        },
875        {
876            description => qq~<label for="enable_guest_view_limit">$admin_txt{'enable_guest_view_limit'}</label>~,
877            input_html => qq~<input type="checkbox" name="enable_guest_view_limit" id="enable_guest_view_limit" value="1"${ischecked($enable_guest_view_limit)} />~,
878            name => 'enable_guest_view_limit',
879            validate => 'boolean',
880            depends_on => ['!guestaccess'],
881        },
882        {
883            description => qq~<label for="guest_view_limit">$admin_txt{'guest_view_limit'}</label>~,
884            input_html => qq~<input type="text" name="guest_view_limit" id="guest_view_limit" size="5" value="$guest_view_limit" />~,
885            name => 'guest_view_limit',
886            validate => 'number',
887            depends_on => ['enable_guest_view_limit', '!guestaccess'],
888        },
889        {
890            description => qq~<label for="guest_view_limit_block">$admin_txt{'guest_view_limit_block'}</label>~,
891            input_html => qq~<input type="checkbox" name="guest_view_limit_block" id="guest_view_limit_block" value="1"${ischecked($guest_view_limit_block)} />~,
892            name => 'guest_view_limit_block',
893            validate => 'boolean',
894            depends_on => ['enable_guest_view_limit', '!guestaccess'],
895        },
896        {
897            header => $settings_txt{'profile'},
898        },
899        {
900            description => qq~<label for="allowpics">$admin_txt{'746'}</label>~,
901            input_html => qq~<input type="checkbox" name="allowpics" id="allowpics" value="1"${ischecked($allowpics)} />~,
902            name => 'allowpics',
903            validate => 'boolean',
904        },
905        {
906            description => qq~<label for="upload_useravatar">$admin_txt{'747'}</label>~,
907            input_html => qq~<input type="checkbox" name="upload_useravatar" id="upload_useravatar" value="1"${ischecked($upload_useravatar)} />~,
908            name => 'upload_useravatar',
909            validate => 'boolean',
910            depends_on => ['allowpics'],
911        },
912        {
913            description => $admin_txt{'747a'},
914            input_html => qq~$facesdir/UserAvatars<br />~ . ((-w "$facesdir/UserAvatars" && -d "$facesdir/UserAvatars") ? qq~<span class="good">$admin_txt{'163'}</span>~ : qq~<span class="important">$admin_txt{'164'}</span>~), # Non-changeable setting
915        },
916        {
917            description => qq~<label for="upload_avatargroup">$admin_txt{'748'}</label>~,
918            input_html => q~<select multiple="multiple" name="upload_avatargroup" id="upload_avatargroup" size="8">~ . DrawPerms($upload_avatargroup, 0) . q~</select>~,
919            name => 'upload_avatargroup',
920            validate => 'text,null',
921            depends_on => ['allowpics','upload_useravatar'],
922        },
923        {
924            description => qq~<label for="avatar_limit">$admin_txt{'749'}</label>~,
925            input_html => qq~<input type="text" name="avatar_limit" id="avatar_limit" size="5" value="$avatar_limit" /> KB~,
926            name => 'avatar_limit',
927            validate => 'number',
928            depends_on => ['allowpics','upload_useravatar'],
929        },
930        {
931            description => qq~<label for="avatar_dirlimit">$admin_txt{'750'}</label>~,
932            input_html => qq~<input type="text" name="avatar_dirlimit" id="avatar_dirlimit" size="5" value="$avatar_dirlimit" /> KB~,
933            name => 'avatar_dirlimit',
934            validate => 'number',
935            depends_on => ['allowpics','upload_useravatar'],
936        },
937        {
938            description => qq~<label for="default_avatar">$admin_txt{'default_avatar'}</label>~,
939            input_html => qq~<input type="checkbox" name="default_avatar" id="default_avatar" value="1"${ischecked($default_avatar)} />~,
940            name => 'default_avatar',
941            validate => 'boolean',
942            depends_on => ['allowpics'],
943        },
944        {
945            description => qq~<label for="default_userpic">$admin_txt{'default_userpic'}</label>~,
946            input_html => qq~<input type="file" name="default_userpic" id="default_userpic" size="35" /><input type="hidden" name="cur_default_userpic" value="$default_userpic" /> <span class="cursor small bold" title="$admin_txt{'remove_file'}" onclick="document.getElementById('default_userpic').value='';">X</span><div class="small bold">$admin_txt{'current_img'}: <a href="$yyhtml_root/Templates/Forum/default/$default_userpic" target="_blank">$default_userpic</a></div>~,
947            name => 'default_userpic',
948            validate => 'text,null',
949            depends_on => ['allowpics','default_avatar'],
950        },
951        {
952            description => qq~<label for="enable_notifications_N">$admin_txt{'381'}</label>~,
953            input_html => qq~<input type="checkbox" name="enable_notifications_N" id="enable_notifications_N" value="1"${ischecked((($enable_notifications == 1 || $enable_notifications == 3) ? 1 : 0))} />~,
954            name => 'enable_notifications_N',
955            validate => 'boolean',
956        },
957        {
958            description => qq~<label for="NewNotificationAlert">$imtxt{'NewNotificationAlert'}</label>~,
959            input_html => qq~<input type="checkbox" name="NewNotificationAlert" id="NewNotificationAlert" value="1"${ischecked($NewNotificationAlert)} />~,
960            name => 'NewNotificationAlert',
961            validate => 'boolean',
962        },
963        {
964            description => qq~<label for="allow_hide_email">$admin_txt{'723'}</label>~,
965            input_html => qq~<input type="checkbox" name="allow_hide_email" id="allow_hide_email" value="1"${ischecked($allow_hide_email)} />~,
966            name => 'allow_hide_email',
967            validate => 'boolean',
968        },
969        {
970            description => qq~<label for="user_hide_avatars">$admin_txt{'751'}</label>~,
971            input_html => qq~<input type="checkbox" name="user_hide_avatars" id="user_hide_avatars" value="1"${ischecked((($user_hide_avatars && $showuserpic && $allowpics) ? 1 : 0))} />~,
972            name => 'user_hide_avatars',
973            validate => 'boolean',
974            depends_on => ['showuserpic','allowpics'],
975        },
976        {
977            description => qq~<label for="user_hide_user_text">$admin_txt{'752'}</label>~,
978            input_html => qq~<input type="checkbox" name="user_hide_user_text" id="user_hide_user_text" value="1"${ischecked((($user_hide_user_text && $showusertext) ? 1 : 0))} />~,
979            name => 'user_hide_user_text',
980            validate => 'boolean',
981            depends_on => ['showusertext'],
982        },
983        {
984            description => qq~<label for="user_hide_img">$admin_txt{'756'}</label>~,
985            input_html => qq~<input type="checkbox" name="user_hide_img" id="user_hide_img" value="1"${ischecked($user_hide_img)} />~,
986            name => 'user_hide_img',
987            validate => 'boolean',
988        },
989        {
990            description => qq~<label for="user_hide_attach_img">$admin_txt{'753'}</label>~,
991            input_html => qq~<input type="checkbox" name="user_hide_attach_img" id="user_hide_attach_img" value="1"${ischecked($user_hide_attach_img)}~ . ($allowattach ? q{} : ' disabled="disabled"') . q~ />~,
992            name => 'user_hide_attach_img',
993            validate => 'boolean',
994        },
995        {
996            description => qq~<label for="user_hide_signat">$admin_txt{'754'}</label>~,
997            input_html => qq~<input type="checkbox" name="user_hide_signat" id="user_hide_signat" value="1"${ischecked($user_hide_signat)} />~,
998            name => 'user_hide_signat',
999            validate => 'boolean',
1000        },
1001        {
1002            description => qq~<label for="user_hide_smilies_row">$admin_txt{'755'}</label>~,
1003            input_html => qq~<input type="checkbox" name="user_hide_smilies_row" id="user_hide_smilies_row" value="1"${ischecked((($user_hide_smilies_row && !$removenormalsmilies) ? 1 : 0))}~ . ($removenormalsmilies ? ' disabled="disabled"' : q{}) . q~ />~,
1004            name => 'user_hide_smilies_row',
1005            validate => 'boolean',
1006        },
1007        {
1008            description => qq~<label for="edit_gender_limit">$admin_txt{'edit_gender_limit'}</label>~,
1009            input_html => qq~<input type="text" size="2" name="editGenderLimit" id="edit_gender_limit" value="$editGenderLimit" />~,
1010            name => 'editGenderLimit',
1011            validate => 'number,null',
1012        },
1013        {
1014            description => qq~<label for="edit_age_limit">$admin_txt{'edit_age_limit'}</label>~,
1015            input_html => qq~<input type="text" size="2" name="editAgeLimit" id="edit_age_limit" value="$editAgeLimit" />~,
1016            name => 'editAgeLimit',
1017            validate => 'number,null',
1018        },
1019        {
1020            description => qq~<label for="showage">$admin_txt{'386a'}</label>~,
1021            input_html => qq~<input type="checkbox" name="showage" id="showage" value="1"${ischecked($showage)} />~,
1022            name => 'showage',
1023            validate => 'boolean',
1024        },
1025        {
1026            description => qq~<label for="emailnewpass">$admin_txt{'639'}</label>~,
1027            input_html => qq~<input type="checkbox" name="emailnewpass" id="emailnewpass" value="1"${ischecked($emailnewpass)} />~,
1028            name => 'emailnewpass',
1029            validate => 'boolean',
1030        },
1031        {
1032            description => qq~<label for="buddyListEnabled">$admin_txt{'buddylist'}</label>~,
1033            input_html => qq~<input type="checkbox" name="buddyListEnabled" id="buddyListEnabled" value="1"${ischecked($buddyListEnabled)} />~,
1034            name => 'buddyListEnabled',
1035            validate => 'boolean',
1036        },
1037        {
1038            description => qq~<label for="defaultusertxt">$admin_txt{'385a'}</label>~,
1039            input_html => qq~<input type="text" name="defaultusertxt" id="defaultusertxt" value="$defaultusertxt" />~,
1040            name => 'defaultusertxt',
1041            validate => 'text,null',
1042        },
1043        {
1044            description => qq~<label for="MaxSigLen">$admin_txt{'689'}</label>~,
1045            input_html => qq~<input type="text" name="MaxSigLen" id="MaxSigLen" size="5" value="$MaxSigLen" />~,
1046            name => 'MaxSigLen',
1047            validate => 'number,null',
1048        },
1049        {
1050            description => qq~<label for="maxfavs">$admin_txt{'101'}</label>~,
1051            input_html => qq~<input type="text" name="maxfavs" id="maxfavs" size="5" value="$maxfavs" />~,
1052            name => 'maxfavs',
1053            validate => 'number',
1054        },
1055        {
1056            description => qq~<label for="addmemgroup_enabled">$amgtxt{'84'}</label>~,
1057            input_html => qq~
1058                <select name="addmemgroup_enabled" id="addmemgroup_enabled">
1059                  <option value="0"${isselected($addmemgroup_enabled == 0)}>$amgtxt{'85'}</option>
1060                  <option value="1"${isselected($addmemgroup_enabled == 1)}>$amgtxt{'86'}</option>
1061                  <option value="2"${isselected($addmemgroup_enabled == 2)}>$amgtxt{'87'}</option>
1062                  <option value="3"${isselected($addmemgroup_enabled == 3)}>$amgtxt{'88'}</option>
1063                </select>~,
1064            name => 'addmemgroup_enabled',
1065            validate => 'number',
1066        },
1067        {
1068            description =>qq~<label for="self_del_user">$admin_txt{'586'}</label>~,
1069            input_html =>qq~<input type="checkbox" name="self_del_user" id="self_del_user" value="1" ${ischecked($self_del_user)}/>~,
1070            name     => 'self_del_user',
1071            validate => 'boolean',
1072        },
1073        {
1074            description => qq~<label for="extendedprofiles">$admin_txt{'extendedprofiles'}</label>~,
1075            input_html => qq~<input type="checkbox" name="extendedprofiles" id="extendedprofiles" value="1" ${ischecked($extendedprofiles)}/>~,
1076            name => 'extendedprofiles',
1077            validate => 'boolean',
1078        },
1079        {
1080            header => $settings_txt{'login'},
1081        },
1082        {
1083            description => qq~<label for="Cookie_Length">$admin_txt{'432'}</label>~,
1084            input_html => qq~<input type="checkbox" name="Cookie_Length" id="Cookie_Length" value="1" ${ischecked($Cookie_Length)}/>~,
1085            name => 'Cookie_Length',
1086            validate => 'boolean',
1087        },
1088        {
1089            description => qq~<label for="cookieusername">$admin_txt{'352'}</label>~,
1090            input_html => qq~<input type="text" name="cookieusername" id="cookieusername" size="20" value="$cookieusername" />~,
1091            name => 'cookieusername',
1092            validate => 'text',
1093        },
1094        {
1095            description => qq~<label for="cookiepassword">$admin_txt{'353'}</label>~,
1096            input_html => qq~<input type="text" name="cookiepassword" id="cookiepassword" size="20" value="$cookiepassword" />~,
1097            name => 'cookiepassword',
1098            validate => 'text',
1099        },
1100        {
1101            description => qq~<label for="cookiesession_name">$admin_txt{'353a'}</label>~,
1102            input_html => qq~<input type="text" name="cookiesession_name" id="cookiesession_name" size="20" value="$cookiesession_name" />~,
1103            name => 'cookiesession_name',
1104            validate => 'text',
1105        },
1106        {
1107            description => qq~<label for="cookietsort">$admin_txt{'353b'}</label>~,
1108            input_html => qq~<input type="text" name="cookietsort" id="cookietsort" size="20" value="$cookietsort" />~,
1109            name => 'cookietsort',
1110            validate => 'text',
1111        },
1112        {
1113            description => qq~<label for="cookieview">$admin_txt{'353e'}</label>~,
1114            input_html => qq~<input type="text" name="cookieview" id="cookieview" size="20" value="$cookieview" />~,
1115            name => 'cookieview',
1116            validate => 'text',
1117        },
1118        {
1119            description => qq~<label for="cookieviewtime">$admin_txt{'353f'}</label>~,
1120            input_html => qq~<input type="text" name="cookieviewtime" id="cookieviewtime" size="20" value="$cookieviewtime" />~,
1121            name => 'cookieviewtime',
1122            validate => 'number',
1123        },
1124        {
1125            description => qq~<label for="screenlogin">$admin_txt{'432b'}</label>~,
1126            input_html => qq~<input type="checkbox" name="screenlogin" id="screenlogin" value="1" ${ischecked($screenlogin)}/>~,
1127            name => 'screenlogin',
1128            validate => 'boolean',
1129        },
1130        {
1131            header => $settings_txt{'registration'},
1132        },
1133        {
1134            description => qq~<label for="regtype">$rtype_text{'4'}</label>~,
1135            input_html => qq~
1136            <select name="regtype" id="regtype" size="1">
1137              <option value="0" ${isselected($regtype == 0)}>$rtype_text{'0'}</option>
1138              <option value="1" ${isselected($regtype == 1)}>$rtype_text{'1'}</option>
1139              <option value="2" ${isselected($regtype == 2)}>$rtype_text{'2'}</option>
1140              <option value="3" ${isselected($regtype == 3)}>$rtype_text{'3'}</option>
1141            </select>~,
1142            name => 'regtype',
1143            validate => 'number',
1144        },
1145        {
1146            description => qq~<label for="preregspan">$prereg_txt{'11'}</label>~,
1147            input_html => qq~<input type="text" name="preregspan" id="preregspan" size="5" value="$preregspan" />~,
1148            name => 'preregspan',
1149            validate => 'number',
1150            depends_on => ['regtype!=0', 'regtype!=3'],
1151        },
1152        {
1153            description => qq~<label for="emailpassword">$admin_txt{'702'}</label>~,
1154            input_html => qq~<input type="checkbox" name="emailpassword" id="emailpassword" value="1"${ischecked($emailpassword)} />~,
1155            name => 'emailpassword',
1156            validate => 'boolean',
1157        },
1158        {
1159            description => qq~<label for="emailwelcome">$admin_txt{'619'}</label>~,
1160            input_html => qq~<input type="checkbox" name="emailwelcome" id="emailwelcome" value="1"${ischecked($emailwelcome)} />~,
1161            name => 'emailwelcome',
1162            validate => 'boolean',
1163            depends_on => ['!emailpassword'],
1164        },
1165        {
1166            description => qq~<label for="name_cannot_be_userid">$register_txt{'768'}</label>~,
1167            input_html => qq~<input type="checkbox" name="name_cannot_be_userid" id="name_cannot_be_userid" value="1"${ischecked($name_cannot_be_userid)} />~,
1168            name => 'name_cannot_be_userid',
1169            validate => 'boolean',
1170        },
1171        {
1172            description => qq~<label for="birthday_on_reg">$register_txt{'770'}</label>~,
1173            input_html => qq~
1174            <select name="birthday_on_reg" id="birthday_on_reg" size="1">
1175              <option value="0">$register_txt{'771'}</option>
1176              <option value="1"${isselected($birthday_on_reg == 1)}>$register_txt{'772'}</option>
1177              <option value="2"${isselected($birthday_on_reg == 2)}>$register_txt{'773'}</option>
1178            </select>~,
1179            name => 'birthday_on_reg',
1180            validate => 'number,null',
1181        },
1182        {
1183                description => qq~<label for="gender_on_reg">$register_txt{'gender_reg'}</label>~,
1184                input_html => qq~
1185                <select name="gender_on_reg" id="gender_on_reg" size="1">
1186                  <option value="0">$register_txt{'771'}</option>
1187              <option value="1"${isselected($gender_on_reg == 1)}>$register_txt{'772'}</option>
1188              <option value="2"${isselected($gender_on_reg == 2)}>$register_txt{'773'}</option>
1189            </select>~,
1190            name => 'gender_on_reg',
1191            validate => 'number,null',
1192        },
1193        {
1194            description => qq~<label for="pwstrengthmeter_scores">$admin_txt{'710'}</label>~,
1195            input_html => qq~<input type="text" name="pwstrengthmeter_scores" id="pwstrengthmeter_scores" size="20" value="$pwstrengthmeter_scores" />~,
1196            name => 'pwstrengthmeter_scores',
1197            validate => 'text',
1198        },
1199        {
1200            description => qq~<label for="pwstrengthmeter_common">$admin_txt{'711'}</label>~,
1201            input_html => qq~<input type="text" name="pwstrengthmeter_common" id="pwstrengthmeter_common" size="20" value='$pwstrengthmeter_common' />~,
1202            name => 'pwstrengthmeter_common',
1203            validate => 'text',
1204        },
1205        {
1206            description => qq~<label for="pwstrengthmeter_minchar">$admin_txt{'712'}</label>~,
1207            input_html => qq~<input type="text" name="pwstrengthmeter_minchar" id="pwstrengthmeter_minchar" size="5" value="$pwstrengthmeter_minchar" />~,
1208            name => 'pwstrengthmeter_minchar',
1209            validate => 'number',
1210        },
1211        {
1212            description => qq~<label for="RegReasonSymbols">$admin_txt{'regreason'}</label>~,
1213            input_html => qq~<input type="text" name="RegReasonSymbols" id="RegReasonSymbols" size="5" value="$RegReasonSymbols" />~,
1214            name => 'RegReasonSymbols',
1215            validate => 'number',
1216            depends_on => ['regtype==1'],
1217        },
1218        {
1219            description => qq~<label for="RegAgree">$admin_txt{'584'}</label>~,
1220            input_html => qq~
1221            <select name="RegAgree" id="RegAgree" size="1">
1222                <option value="0" ${isselected($RegAgree == 0)}>$admin_txt{'584a'}</option>
1223                <option value="1" ${isselected($RegAgree == 1)}>$admin_txt{'584b'}</option>
1224                <option value="2" ${isselected($RegAgree == 2)}>$admin_txt{'584c'}</option>
1225            </select>~,
1226            name => 'RegAgree',
1227            validate => 'number',
1228            depends_on => ['regtype!=0'],
1229        },
1230        {
1231            description => qq~<label for="imp_email_check">$admin_txt{'imp_email_check'}$no_imp_email_check</label>~,
1232            input_html => qq~<input type="checkbox" name="imp_email_check" id="imp_email_check" value="1"${ischecked($imp_email_check)}$imp_email_check_dis />~,
1233            name => 'imp_email_check',
1234            validate => 'boolean',
1235        },
1236        {
1237            description =>
1238                qq~<label for="nomailspammer">$admin_txt{'nospammer'}</label>~,
1239            input_html =>
1240qq~<input type="checkbox" name="nomailspammer" id="nomailspammer" value="1" ${ischecked($nomailspammer)} />~,
1241            name       => 'nomailspammer',
1242            validate   => 'boolean',
1243            depends_on => ['regtype==1'],
1244        },
1245        {
1246            header => $settings_txt{'memberlist'},
1247        },
1248        {
1249            description => qq~<label for="ML_Allowed">$admin_txt{'mlview'}</label>~,
1250            input_html => qq~
1251<select name="ML_Allowed" id="ML_Allowed">
1252  <option value="0" ${isselected($ML_Allowed == 0)}>$userlevel_txt{'all'}</option>
1253  <option value="1" ${isselected($ML_Allowed == 1)}>$userlevel_txt{'members'}</option>
1254  <option value="2" ${isselected($ML_Allowed == 2)}>$userlevel_txt{'modgmodadmin'}</option>
1255  <option value="4" ${isselected($ML_Allowed == 4)}>$userlevel_txt{'fmodgmodadmin'}</option>
1256  <option value="3" ${isselected($ML_Allowed == 3)}>$userlevel_txt{'gmodadmin'}</option>
1257</select>~,
1258            name => 'ML_Allowed',
1259            validate => 'number',
1260        },
1261        {
1262            description => qq~<label for="defaultml">$admin_txt{'912'}</label>~,
1263            input_html => qq~
1264<select name="defaultml" id="defaultml">
1265  <option value="username" ${isselected($defaultml eq 'username')}>$admin_txt{'914'}</option>
1266  <option value="position" ${isselected($defaultml eq 'position')}>$admin_txt{'911'}</option>
1267  <option value="posts"    ${isselected($defaultml eq 'posts')   }>$admin_txt{'910'}</option>
1268  <option value="regdate"  ${isselected($defaultml eq 'regdate') }>$admin_txt{'909'}</option>
1269</select>~,
1270            name => 'defaultml',
1271            validate => 'text',
1272        },
1273        {
1274            description => qq~<label for="TopAmmount">$admin_txt{'373'}</label>~,
1275            input_html => qq~<input type="text" size="5" name="TopAmmount" id="TopAmmount" value="$TopAmmount" />~,
1276            name => 'TopAmmount',
1277            validate => 'number',
1278        },
1279        {
1280            description => qq~<label for="barmaxnumb">$admin_txt{'902'} $admin_txt{'107'}</label>~,
1281            input_html => qq~<input type="text" name="barmaxnumb" id="barmaxnumb" size="5" value="$barmaxnumb" /> $admin_txt{'904'} <input type="radio" name="barmaxdepend" value="0"${ischecked(!$barmaxdepend)}/> $admin_txt{'905'} <input type="radio" name="barmaxdepend" value="1"${ischecked($barmaxdepend)}/> $admin_txt{'903'}~,
1282            name => 'barmaxdepend',
1283            validate => 'boolean',
1284        },
1285        {
1286            description => qq~<label for="showuserpicml">$admin_txt{'userpicml'}</label>~,
1287            input_html => qq~<input type="checkbox" name="showuserpicml" id="showuserpicml" value="1"${ischecked($showuserpicml)} />~,
1288            name => 'showuserpicml',
1289            validate => 'boolean',
1290        },
1291        {
1292            description => qq~<label for="group_stars_ml">$admin_txt{'group_stars_ml'}</label>~,
1293            input_html => qq~<input type="checkbox" name="group_stars_ml" id="group_stars_ml" value="1"${ischecked($group_stars_ml)} />~,
1294            name => 'group_stars_ml',
1295            validate => 'boolean',
1296        },
1297    ]
1298},
1299{
1300    name  => $settings_txt{'staff'},
1301    id    => 'staff',
1302    items => [
1303        {
1304            header => $settings_txt{'staff'},
1305        },
1306        # Multi-delete/multi-admin
1307        {
1308            description => qq~<label for="mdadmin">$mdintxt{'1'} $admin_txt{'684'}?</label>~,
1309            input_html => qq~<input type="checkbox" name="mdadmin" id="mdadmin" value="1"${ischecked($mdadmin)} />~,
1310            name => 'mdadmin',
1311            validate => 'boolean',
1312        },
1313        {
1314            description => qq~<label for="mdglobal">$mdintxt{'1'} $admin_txt{'684a'}?</label>~,
1315            input_html => qq~<input type="checkbox" name="mdglobal" id="mdglobal" value="1"${ischecked($mdglobal)} />~,
1316            name => 'mdglobal',
1317            validate => 'boolean',
1318        },
1319        {
1320            description => qq~<label for="mdfmod">$mdintxt{'1'} $admin_txt{'684b'}?</label>~,
1321            input_html => qq~<input type="checkbox" name="mdfmod" id="mdfmod" value="1"${ischecked($mdfmod)} />~,
1322            name => 'mdfmod',
1323            validate => 'boolean',
1324        },
1325        {
1326            description => qq~<label for="mdmod">$mdintxt{'1'} $admin_txt{'63d'}?</label>~,
1327            input_html => qq~<input type="checkbox" name="mdmod" id="mdmod" value="1"${ischecked($mdmod)} />~,
1328            name => 'mdmod',
1329            validate => 'boolean',
1330        },
1331        {
1332            description => qq~<label for="adminbin">$mdintxt{'4'}</label>~,
1333            input_html => qq~<input type="checkbox" name="adminbin" id="adminbin" value="1"${ischecked($adminbin)} />~,
1334            name => 'adminbin',
1335            validate => 'boolean',
1336        },
1337        {
1338            description => qq~<label for="adminview">$matxt{'5'}</label>~,
1339            input_html => qq~
1340<select name="adminview" id="adminview" size="1">
1341  <option value="0" ${isselected($adminview == 0)}>$matxt{'1'}</option>
1342  <option value="1" ${isselected($adminview == 1)}>$matxt{'2'}</option>
1343  <option value="2" ${isselected($adminview == 2)}>$matxt{'3'}</option>
1344  <option value="3" ${isselected($adminview == 3)}>$matxt{'4'}</option>
1345</select>~,
1346            name => 'adminview',
1347            validate => 'number',
1348        },
1349        {
1350            description => qq~<label for="gmodview">$matxt{'6'}</label>~,
1351            input_html => qq~
1352<select name="gmodview" id="gmodview" size="1">
1353  <option value="0" ${isselected($gmodview == 0)}>$matxt{'1'}</option>
1354  <option value="1" ${isselected($gmodview == 1)}>$matxt{'2'}</option>
1355  <option value="2" ${isselected($gmodview == 2)}>$matxt{'3'}</option>
1356  <option value="3" ${isselected($gmodview == 3)}>$matxt{'4'}</option>
1357</select>~,
1358            name => 'gmodview',
1359            validate => 'number',
1360        },
1361        {
1362            description => qq~<label for="fmodview">$matxt{'6a'}</label>~,
1363            input_html => qq~
1364<select name="fmodview" id="fmodview" size="1">
1365  <option value="0" ${isselected($fmodview == 0)}>$matxt{'1'}</option>
1366  <option value="1" ${isselected($fmodview == 1)}>$matxt{'2'}</option>
1367  <option value="2" ${isselected($fmodview == 2)}>$matxt{'3'}</option>
1368  <option value="3" ${isselected($fmodview == 3)}>$matxt{'4'}</option>
1369</select>~,
1370            name => 'fmodview',
1371            validate => 'number',
1372        },
1373        {
1374            description => qq~<label for="modview">$matxt{'7'}</label>~,
1375            input_html => qq~
1376<select name="modview" id="modview" size="1">
1377  <option value="0" ${isselected($modview == 0)}>$matxt{'1'}</option>
1378  <option value="1" ${isselected($modview == 1)}>$matxt{'2'}</option>
1379  <option value="2" ${isselected($modview == 2)}>$matxt{'3'}</option>
1380  <option value="3" ${isselected($modview == 3)}>$matxt{'4'}</option>
1381</select>~,
1382            name => 'modview',
1383            validate => 'number',
1384        },
1385        {
1386            description => qq~<label for="enable_MCstatusStealth">$admin_txt{'stealth'}</label>~,
1387            input_html => qq~<input type="checkbox" name="enable_MCstatusStealth" id="enable_MCstatusStealth" value="1"${ischecked($enable_MCstatusStealth)}/>~,
1388            name => 'enable_MCstatusStealth',
1389            validate => 'boolean',
1390        },
1391        {
1392            description => qq~<label for="bypass_lock_perm">$userlevel_txt{'allowbypass'}</label>~,
1393            input_html => qq~
1394<select name="bypass_lock_perm" id="bypass_lock_perm" size="1">
1395  <option value="0" ${isselected($bypass_lock_perm eq '0')}>$userlevel_txt{'none'}</option>
1396  <option value="mod" ${isselected($bypass_lock_perm eq 'mod')}>$userlevel_txt{'modgmodadmin'}</option>
1397  <option value="fmod" ${isselected($bypass_lock_perm eq 'fmod')}>$userlevel_txt{'fmodgmodadmin'}</option>
1398  <option value="gmod" ${isselected($bypass_lock_perm eq 'gmod')}>$userlevel_txt{'gmodadmin'}</option>
1399  <option value="fa" ${isselected($bypass_lock_perm eq 'fa')}>$userlevel_txt{'admin'}</option>
1400</select>~,
1401            name => 'bypass_lock_perm',
1402            validate => 'text',
1403        },
1404        {
1405            description => qq~<label for="staff_reason">$admin_txt{'staff_reason'}</label>~,
1406            input_html => qq~<input type="checkbox" name="staff_reason" id="staff_reason" value="1"${ischecked($staff_reason)} />~,
1407            name => 'staff_reason',
1408            validate => 'boolean',
1409        },
1410        {
1411            description => qq~<label for="maxadminlog">$admin_txt{'maxadminlog'}</label>~,
1412            input_html => qq~<input type="text" name="maxadminlog" id="maxadminlog" size="5" value="$maxadminlog" />~,
1413            name => 'maxadminlog',
1414            validate => 'number',
1415        },
1416    ],
1417},
1418{
1419    name  => $settings_txt{'privatemessage'},
1420    id    => 'privatemessage',
1421    items => [
1422        {
1423            header => $settings_txt{'pmgeneral'},
1424        },
1425        {
1426            description => qq~<label for="PM_level">$imtxt{'enablePM'}</label>~,
1427            input_html => qq~
1428<select name="PM_level" id="PM_level">
1429  <option value="0" ${isselected($PM_level == 0)}>$userlevel_txt{'none'}</option>
1430  <option value="1" ${isselected($PM_level == 1)}>$userlevel_txt{'members'}</option>
1431  <option value="2" ${isselected($PM_level == 2)}>$userlevel_txt{'modgmodadmin'}</option>
1432  <option value="4" ${isselected($PM_level == 4)}>$userlevel_txt{'fmodgmodadmin'}</option>
1433  <option value="3" ${isselected($PM_level == 3)}>$userlevel_txt{'gmodadmin'}</option>
1434</select>~,
1435            name => 'PM_level',
1436            validate => 'number',
1437        },
1438        {
1439            description => qq~<label for="numposts">$imtxt{'75'}</label>~,
1440            input_html => qq~<input type="text" name="numposts" id="numposts" size="5" value="$numposts" />~,
1441            name => 'numposts',
1442            validate => 'number',
1443            depends_on => ['PM_level!=0'],
1444        },
1445        {
1446            description => qq~<label for="imspam">$imtxt{'52'}</label>~,
1447            input_html => qq~<input type="text" name="imspam" id="imspam" size="5" value="$imspam" />~,
1448            name => 'imspam',
1449            validate => 'number,null',
1450            depends_on => ['PM_level!=0'],
1451        },
1452        {
1453            description => qq~<label for="enable_PMsearch">$imtxt{'enable_PMsearch'}</label>~,
1454            input_html => qq~<input type="text" name="enable_PMsearch" id="enable_PMsearch" size="5" value="$enable_PMsearch" />~,
1455            name => 'enable_PMsearch',
1456            validate => 'number,null',
1457            depends_on => ['PM_level!=0'],
1458        },
1459        {
1460            description => qq~<label for="send_welcomeim">$imtxt{'33'}</label>~,
1461            input_html => qq~<input type="checkbox" name="send_welcomeim" id="send_welcomeim" value="1"${ischecked($send_welcomeim)} />~,
1462            name => 'send_welcomeim',
1463            validate => 'boolean',
1464            depends_on => ['PM_level!=0'],
1465        },
1466        {
1467            description => qq~<label for="sendname">$imtxt{'34'}</label>~,
1468            input_html => qq~<input type="text" name="sendname" id="sendname" size="35" value="$sendname" />~,
1469            name => 'sendname',
1470            validate => 'text,null',
1471            depends_on => ['PM_level!=0', 'send_welcomeim'],
1472        },
1473        {
1474            description => qq~<label for="imsubject">$imtxt{'36'}</label>~,
1475            input_html => qq~<input type="text" name="imsubject" id="imsubject" size="35" value="$imsubject" />~,
1476            name => 'imsubject',
1477            validate => 'text,null',
1478            depends_on => ['PM_level!=0', 'send_welcomeim'],
1479        },
1480        {
1481            description => qq~<label for="imtext">$imtxt{'35'}</label>~,
1482            input_html => qq~<textarea name="imtext" id="imtext" cols="35" rows="5">$imtext</textarea>~,
1483            name => 'imtext',
1484            validate => 'fulltext,null',
1485            depends_on => ['PM_level!=0', 'send_welcomeim'],
1486        },
1487        {
1488            header => $settings_txt{'bmessages'},
1489        },
1490        {
1491            description => qq~<label for="PMenableBm_level">$imtxt{'87'}</label>~,
1492            input_html => qq~
1493<select name="PMenableBm_level" id="PMenableBm_level">
1494  <option value="0" ${isselected($PMenableBm_level == 0)}>$userlevel_txt{'none'}</option>
1495  <option value="1" ${isselected($PMenableBm_level == 1)}>$userlevel_txt{'modgmodadmin'}</option>
1496  <option value="4" ${isselected($PMenableBm_level == 4)}>$userlevel_txt{'fmodgmodadmin'}</option>
1497  <option value="2" ${isselected($PMenableBm_level == 2)}>$userlevel_txt{'gmodadmin'}</option>
1498  <option value="3" ${isselected($PMenableBm_level == 3)}>$userlevel_txt{'admin'}</option>
1499</select>~,
1500            name => 'PMenableBm_level',
1501            validate => 'number',
1502            depends_on => ['PM_level!=0'],
1503        },
1504        {
1505            header => $settings_txt{'alertmessages'},
1506        },
1507        {
1508            description => qq~<label for="PMenableGuestButton">$imtxt{'88'}</label>~,
1509            input_html => qq~<input type="checkbox" name="PMenableGuestButton" id="PMenableGuestButton" value="1"${ischecked($PMenableGuestButton)} />~,
1510            name => 'PMenableGuestButton',
1511            validate => 'boolean',
1512            depends_on => ['PM_level!=0','$PMenableBm_level!=0'],
1513        },
1514        {
1515            description => qq~<label for="PMenableAlertButton">$imtxt{'89'}</label>~,
1516            input_html => qq~<input type="checkbox" name="PMenableAlertButton" id="PMenableAlertButton" value="1"${ischecked($PMenableAlertButton)} />~,
1517            name => 'PMenableAlertButton',
1518            validate => 'boolean',
1519            depends_on => ['PM_level!=0','$PMenableBm_level!=0'],
1520        },
1521        {
1522            description => qq~<label for="PMAlertButtonGuests">$imtxt{'90'}</label>~,
1523            input_html => qq~<input type="checkbox" name="PMAlertButtonGuests" id="PMAlertButtonGuests" value="1"${ischecked($PMAlertButtonGuests)} />~,
1524            name => 'PMAlertButtonGuests',
1525            validate => 'boolean',
1526            depends_on => ['PMenableAlertButton', 'PM_level!=0','$PMenableBm_level!=0'],
1527        },
1528
1529
1530        {
1531            header => $settings_txt{'members'},
1532        },
1533        {
1534            description => qq~<label for="enable_imlimit">$imtxt{'06'}</label>~,
1535            input_html => qq~<input type="checkbox" name="enable_imlimit" id="enable_imlimit" value="1"${ischecked($enable_imlimit)} />~,
1536            name => 'enable_imlimit',
1537            validate => 'boolean',
1538            depends_on => ['PM_level!=0'],
1539        },
1540        {
1541            description => qq~<label for="numobox">$imtxt{'03'} $imtxt{'85'}</label>~,
1542            input_html => qq~<input type="text" name="numobox" id="numobox" size="5" value="$numobox" />~,
1543            name => 'numobox',
1544            validate => 'number,null',
1545            depends_on => ['enable_imlimit', 'PM_level!=0'],
1546        },
1547        {
1548            description => qq~<label for="numibox">$imtxt{'03'} $imtxt{'84'}</label>~,
1549            input_html => qq~<input type="text" name="numibox" id="numibox" size="5" value="$numibox" />~,
1550            name => 'numibox',
1551            validate => 'number,null',
1552            depends_on => ['enable_imlimit', 'PM_level!=0'],
1553
1554        },
1555        {
1556            description => qq~<label for="numstore">$imtxt{'03'} $imtxt{'46'}</label>~,
1557            input_html => qq~<input type="text" name="numstore" id="numstore" size="5" value="$numstore" />~,
1558            name => 'numstore',
1559            validate => 'number,null',
1560            depends_on => ['enable_imlimit', 'PM_level!=0'],
1561        },
1562        {
1563            description => qq~<label for="numdraft">$imtxt{'03'} $imtxt{'draft'}</label>~,
1564            input_html => qq~<input type="text" name="numdraft" id="numdraft" size="5" value="$numdraft" />~,
1565            name => 'numdraft',
1566            validate => 'number,null',
1567            depends_on => ['enable_imlimit', 'PM_level!=0'],
1568        },
1569        {
1570            description => qq~<label for="PMenable_cc">$imtxt{'allowcc'}</label>~,
1571            input_html => qq~<input type="checkbox" name="PMenable_cc" id="PMenable_cc" value="1"${ischecked($PMenable_cc)} />~,
1572            name => 'PMenable_cc',
1573            validate => 'boolean',
1574            depends_on => ['PM_level!=0'],
1575
1576        },
1577        {
1578            description => qq~<label for="PMenable_bcc">$imtxt{'allowbcc'}</label>~,
1579            input_html => qq~<input type="checkbox" name="PMenable_bcc" id="PMenable_bcc" value="1"${ischecked($PMenable_bcc)} />~,
1580            name => 'PMenable_bcc',
1581            validate => 'boolean',
1582            depends_on => ['PM_level!=0'],
1583        },
1584        {
1585            description => qq~<label for="enable_notifications_PM">$imtxt{'381'}</label>~,
1586            input_html => qq~<input type="checkbox" name="enable_notifications_PM" id="enable_notifications_PM" value="1"${ischecked((($enable_notifications == 2 || $enable_notifications == 3) ? 1 : 0))} />~,
1587            name => 'enable_notifications_PM',
1588            validate => 'boolean',
1589            depends_on => ['PM_level!=0'],
1590        },
1591        {
1592            description => qq~<label for="enable_storefolders">$imtxt{'extrastore'}</label>~,
1593            input_html => qq~<input type="text" name="enable_storefolders" id="enable_storefolders" size="5" value="$enable_storefolders" />~,
1594            name => 'enable_storefolders',
1595            validate => 'number,null',
1596            depends_on => ['PM_level!=0'],
1597        },
1598        {
1599            description => qq~<label for="MaxIMMessLen">$admin_txt{'498c'}</label>~,
1600            input_html => qq~<input type="text" size="5" name="MaxIMMessLen" id="MaxIMMessLen" value="$MaxIMMessLen" />~,
1601            name => 'MaxIMMessLen',
1602            validate => 'number',
1603        },
1604        {
1605            description =>
1606              qq~<label for="AdMaxIMMessLen">$admin_txt{'498d'}</label>~,
1607            input_html =>
1608qq~<input type="text" size="5" name="AdMaxIMMessLen" id="AdMaxIMMessLen" value="$AdMaxIMMessLen" />~,
1609            name     => 'AdMaxIMMessLen',
1610            validate => 'number',
1611        },
1612
1613        {
1614            header => $settings_txt{'mycenter'},
1615        },
1616        {
1617            description => qq~<label for="enable_MCaway">$imtxt{'away'}</label>~,
1618            input_html => qq~
1619<select name="enable_MCaway" id="enable_MCaway">
1620  <option value="0" ${isselected($enable_MCaway == 0)}>$userlevel_txt{'none'}</option>
1621  <option value="1" ${isselected($enable_MCaway == 1)}>$userlevel_txt{'staff'}</option>
1622  <option value="2" ${isselected($enable_MCaway == 2)}>$userlevel_txt{'staffall'}</option>
1623  <option value="3" ${isselected($enable_MCaway == 3)}>$userlevel_txt{'members'}</option>
1624</select><br />~,
1625            name => 'enable_MCaway',
1626            validate => 'number',
1627            depends_on => ['PM_level!=0'],
1628        },
1629        {
1630            description => qq~<label for="MaxAwayLen">$admin_txt{'689a'}</label>~,
1631            input_html => qq~<input type="text" name="MaxAwayLen" id="MaxAwayLen" size="5" value="$MaxAwayLen" />~,
1632            name => 'MaxAwayLen',
1633            validate => 'number,null',
1634            depends_on => ['enable_MCaway!=0', 'PM_level!=0'],
1635        },
1636    ],
1637},
1638);
1639
1640# Routine to save them
1641sub SaveSettings {
1642    my %settings = @_;
1643
1644    # Validate forum_start stuff
1645    foreach (qw(forumstart_month forumstart_day forumstart_year forumstart_hour forumstart_minute forumstart_secund)) {
1646        $FORM{$_} =~ s/\D//gsm;
1647    }
1648    my $forumstart_month  = $FORM{'forumstart_month'};
1649    my $forumstart_day    = $FORM{'forumstart_day'};
1650    my $forumstart_year   = $FORM{'forumstart_year'};
1651    my $forumstart_hour   = $FORM{'forumstart_hour'};
1652    my $forumstart_minute = $FORM{'forumstart_minute'};
1653    my $forumstart_secund = $FORM{'forumstart_secund'};
1654    my $max_days = 31;
1655    if($forumstart_month == 4 || $forumstart_month == 6 || $forumstart_month == 9 || $forumstart_month == 11) {
1656        $max_days = 30;
1657    } elsif($forumstart_month == 2 && $forumstart_year % 4 == 0 && $forumstart_year != 0) {
1658        $max_days = 29;
1659    } elsif($forumstart_month == 2 && ($forumstart_year % 4 != 0 || $forumstart_year == 0)) {
1660        $max_days = 28;
1661    }
1662    if ($forumstart_day > $max_days) { $forumstart_day = $max_days;}
1663    $forumstart = qq~$forumstart_month/$forumstart_day/$forumstart_year $maintxt{'107'} $forumstart_hour:$forumstart_minute:$forumstart_secund~;
1664
1665    # Validate Timezone
1666    if ( $enabletz ) {
1667        if ( $FORM{'default_tz'} eq '-') {
1668            $default_tz = 'UTC';
1669        }
1670        else { $default_tz = $FORM{'default_tz'}; }
1671    }
1672    else { $default_tz = 'UTC'; }
1673
1674    $timeoffset  = $FORM{'usertimesign'} =~ /^-$/sm ? q{-} : q{};
1675    $timeoffset .= $FORM{'usertimehour'} =~ /^\d+$/sm ? $FORM{'usertimehour'} : '0';
1676    $timeoffset .= q{.};
1677    $timeoffset .= $FORM{'usertimemin'}  =~ /^\d+$/sm ? $FORM{'usertimemin'} : '0';
1678
1679    # Get barmaxnumb
1680    $settings{'barmaxnumb'} = $FORM{'barmaxnumb'};
1681    $settings{'barmaxnumb'} =~ s/\D//gsm;
1682
1683    # Fix guestaccess
1684    $settings{'guestaccess'} = !$settings{'guestaccess'} || 0;
1685    $settings{'imtext'} =~ s/\r(?=\n*)//gsm;
1686    $settings{'imtext'} =~ s~\n~<br />~gsm;
1687
1688    # Fix $pwstrengthmeter_common
1689    $settings{'pwstrengthmeter_common'} =~ s/'//gsm; #' make my syntax checker happy;
1690    if (($settings{'set_subjectMaxLength'} < 10 && $settings{'set_subjectMaxLength'} != 0) || $settings{'set_subjectMaxLength'} > 255) { fatal_error('invalid_value', "set_subjectMaxLength ($admin_txt{'498a'})"); }
1691
1692    # Convert unwanted tags in Board Name
1693    ToHTML($settings{'mbname'});
1694
1695    # Upload default avatar
1696    $cur_default_userpic = $FORM{'cur_default_userpic'};
1697    if ( $settings{'default_userpic'} ne q{} ) {
1698        $settings{'default_userpic'} = UploadFile('default_userpic', 'Templates/Forum/default', 'png jpg jpeg gif', '250', '0');
1699        if ( $cur_default_userpic ne 'nn.gif' ) {
1700            unlink "$htmldir/Templates/Forum/default/$cur_default_userpic";
1701        }
1702    }
1703    else {
1704        $settings{'default_userpic'} = $cur_default_userpic;
1705    }
1706
1707    # Settings.pm stuff
1708    SaveSettingsTo('Settings.pm', %settings);
1709    return;
1710}
1711
17121;