# Control Panel - Routines for setting, managing styles

sub set_new_template {
	local ($LastOne, $j, $lastnum);
	local (*FILE);

	# assign number to template
	my @temps     = &OpenFileAsArray("$vars_config{VariablesPath}/vars_style_sets.cgi");
	my @reverseit = reverse(@temps);
	$LastOne = $reverseit[0];
	chomp($LastOne);
	($j, $lastnum) = split (/\|\^\|/, $LastOne);
	$ThisTemplateNumber = $lastnum + 1;

	# set/clean the vars ------------
	my $Header        = &SmallClean($in{Header});
	my $Footer        = &SmallClean($in{Footer});
	my $HeaderInsert  = &SmallClean($in{HeaderInsert});
	my $html_extra    = &SmallClean($in{html_extra});
	my $body_extra    = &SmallClean($in{body_extra});
	my $language_meta = &SmallClean($in{language_meta});

	# limit/eliminate/convert returns in some fields
	$HeaderInsert  = &LimitReturns($HeaderInsert);
	$Header        = &LimitReturns($Header);
	$Footer        = &LimitReturns($Footer);
	$html_extra    = &EliminateReturns($html_extra);
	$body_extra    = &EliminateReturns($body_extra);
	$language_meta = &EliminateReturns($language_meta);

	$CurrentTab = qq%$vars_wordlets_cp{style_settings}%;
	&CPHeader;
	&CPFooter;

	#validate
	my @ValidateArray = ("BGColor", "TextColor", "LinkColor", "ActiveLinkColor", "VisitedLinkColor", "TableStripTextColor", "TableColorStrip", "TimeColor", "AltColumnColor1", "AltColumnColor2", "CategoryStripColor", "CategoryStripTextColor", "CopyrightTextColor", "BBTitleFontColor", "FontFace", "TableWidth", "TextSize", "FDTextSize", "BBTitle", "BBTopic", "BBReply", "profilegif", "mailgif", "edit_icon", "reply_with_quote_icon", "homepage_icon", "forum_summ_on", "forum_summ_off", "TemplateName", "new_topic_folder", "old_topic_folder", "hot_new_topic_folder", "hot_old_topic_folder", "ubb_friend", "old_locked_folder", "hr_color", "TableBorderColor", "table_border_display", "new_locked_folder", "open_topic", "close_topic", "ubb_friend_mini", "move_topic", "delete_topic", "prev_topic", "next_topic", "user_ratings_1", "user_ratings_2", "user_ratings_3", "user_ratings_4", "user_ratings_5", "search_graphic", "priv_message");
	&Validate(@ValidateArray);

	# another check on name
	if (($in{TemplateName} =~ /\|\^\|/)) {
		&StandardHTML(qq%Your template name can not contain: |^|%);
	}

	# write to file!
	my %new_vars_style = (
		"BGColor"                => qq^$in{BGColor}^,
		"TextColor"              => qq^$in{TextColor}^,
		"LinkColor"              => qq^$in{LinkColor}^,
		"ActiveLinkColor"        => qq^$in{ActiveLinkColor}^,
		"VisitedLinkColor"       => qq^$in{VisitedLinkColor}^,
		"TableBorderColor"       => qq^$in{TableBorderColor}^,
		"TableStripTextColor"    => qq^$in{TableStripTextColor}^,
		"TableColorStrip"        => qq^$in{TableColorStrip}^,
		"TimeColor"              => qq^$in{TimeColor}^,
		"AltColumnColor1"        => qq^$in{AltColumnColor1}^,
		"AltColumnColor2"        => qq^$in{AltColumnColor2}^,
		"CategoryStripColor"     => qq^$in{CategoryStripColor}^,
		"CategoryStripTextColor" => qq^$in{CategoryStripTextColor}^,
		"CopyrightTextColor"     => qq^$in{CopyrightTextColor}^,
		"BBTitleFontColor"       => qq^$in{BBTitleFontColor}^,
		"hr_color"               => qq^$in{hr_color}^,
		"FontFace"               => qq^$in{FontFace}^,
		"TableWidth"             => qq^$in{TableWidth}^,
		"TextSize"               => qq^$in{TextSize}^,
		"FDTextSize"             => qq^$in{FDTextSize}^,
		"PageBackground"         => qq^$in{PageBackground}^,
		"BBTitle"                => qq^$in{BBTitle}^,
		"BBTopic"                => qq^$in{BBTopic}^,
		"BBReply"                => qq^$in{BBReply}^,
		"search_graphic"         => qq^$in{search_graphic}^,
		"profilegif"             => qq^$in{profilegif}^,
		"edit_icon"              => qq^$in{edit_icon}^,
		"reply_with_quote_icon"  => qq^$in{reply_with_quote_icon}^,
		"homepage_icon"          => qq^$in{homepage_icon}^,
		"forum_summ_on"          => qq^$in{forum_summ_on}^,
		"forum_summ_off"         => qq^$in{forum_summ_off}^,
		"table_border_display"   => qq^$in{table_border_display}^,
		"new_topic_folder"       => qq^$in{new_topic_folder}^,
		"old_topic_folder"       => qq^$in{old_topic_folder}^,
		"hot_new_topic_folder"   => qq^$in{hot_new_topic_folder}^,
		"hot_old_topic_folder"   => qq^$in{hot_old_topic_folder}^,
		"old_locked_folder"      => qq^$in{old_locked_folder}^,
		"new_locked_folder"      => qq^$in{new_locked_folder}^,
		"plain_old_regular_lock" => qq^$in{plain_old_regular_lock}^,
		"ubb_friend"             => qq^$in{ubb_friend}^,
		"ubb_friend_mini"        => qq^$in{ubb_friend_mini}^,
		"close_topic"            => qq^$in{close_topic}^,
		"open_topic"             => qq^$in{open_topic}^,
		"move_topic"             => qq^$in{move_topic}^,
		"delete_topic"           => qq^$in{delete_topic}^,
		"prev_topic"             => qq^$in{prev_topic}^,
		"next_topic"             => qq^$in{next_topic}^,
		"priv_message"           => qq^$in{priv_message}^,
		"user_ratings_1"         => qq^$in{user_ratings_1}^,
		"user_ratings_2"         => qq^$in{user_ratings_2}^,
		"user_ratings_3"         => qq^$in{user_ratings_3}^,
		"user_ratings_4"         => qq^$in{user_ratings_4}^,
		"user_ratings_5"         => qq^$in{user_ratings_5}^,
		"Header"                 => qq~$Header~,
		"Footer"                 => qq~$Footer~,
		"HeaderInsert"           => qq~$HeaderInsert~,
		"html_extra"             => qq~$html_extra~,
		"body_extra"             => qq~$body_extra~,
		"mailgif"                => qq^$in{mailgif}^,
		"thisCharset"            => qq^$in{thisCharset}^
	);

	&WriteHashToFile("$vars_config{NonCGIPath}/styles/vars_style_$ThisTemplateNumber.cgi", "vars_style", \%new_vars_style);


	# update style sets file!
	&AppendFileAsString("$vars_config{VariablesPath}/vars_style_sets.cgi", qq!$in{TemplateName}|^|$ThisTemplateNumber\n!);

	#display template list page
	&cp_confirm("Template Added");
	exit(0);

}    # end set new template

sub add_style_template {

	$Hiddens = qq%<INPUT TYPE="HIDDEN" NAME="ubb" VALUE="set_new_template">%;

	$CurrentTab = qq%<A HREF="$vars_config{CGIURL}/cp.cgi?ubb=vars_style_temp_list">$vars_wordlets_cp{style_settings}</A> &#187; Add New Template%;

	# get standard settings to use as placeholders in form!
	&RequireVars("$vars_config{NonCGIPath}/styles/vars_style_1.cgi");

	&CPHeader;
	&CPFooter;
	&CPTop;
	&LoadTemplate("cp_add_new_template");
	&CPBottom;

}    # add_style_template


sub view_style {
	local (@availstyles, $name, $num, $ThisName, $ThisNumber, $File, $DeleteWording);

	#retrieve template info
	@availstyles = &OpenFileAsArray("$vars_config{VariablesPath}/vars_style_sets.cgi");

	FINDIT: foreach (@availstyles) {
		($name, $num) = split (/\|\^\|/, $_);
		chomp($num);
		if ($num eq "$in{template_choice}") {
			$ThisName   = "$name";
			$ThisNumber = $num;
			last FINDIT;
		}
	}

	# delete wording!
	if ($in{template_choice} ne '1') {

		# we can't allow the standard template to be deleted
		$DeleteWording = qq!<INPUT TYPE="CHECKBOX" NAME="delete" VALUE="yes">&nbsp;&nbsp; Delete this style template? (check if desired)
!;
	} else {
		$DeleteWording = qq!Note: You can not delete the Standard Template.!;
	}

	$Hiddens = qq%<INPUT TYPE="HIDDEN" NAME="ubb" VALUE="set_vars_style">
<INPUT TYPE="HIDDEN" NAME="template_choice" VALUE="$ThisNumber">
%;

	$CurrentTab = qq%<A HREF="$vars_config{CGIURL}/cp.cgi?ubb=vars_style_temp_list">$vars_wordlets_cp{style_settings}</A> &#187; Template: $ThisName%;

	# grab proper style settings!
	&RequireVars("$vars_config{NonCGIPath}/styles/vars_style_$ThisNumber.cgi");

	&SetDefaults("vars_style");

	&CPHeader;
	&CPFooter;
	&CPTop;
	&LoadTemplate("cp_vars_style");
	&CPBottom;
}    #end view_vars

sub view_style_templates {
	local ($name, $num, $TemplateChoices);
	$Hiddens = qq%<INPUT TYPE="HIDDEN" NAME="ubb" VALUE="vars_style">%;

	my @template_list = &OpenFileAsArray("$vars_config{VariablesPath}/vars_style_sets.cgi");

	# assemble TemplateChoices

	$TemplateChoices = qq!<SELECT NAME="template_choice">!;


	foreach (@template_list) {
		($name, $num) = split (/\|\^\|/, $_);
		chomp($num);
		$TemplateChoices .= qq!<OPTION VALUE="$num">$name</OPTION>!;
	}

	$TemplateChoices .= qq!</SELECT>!;


	$CurrentTab = qq%$vars_wordlets_cp{style_settings}%;


	&CPHeader;
	&CPFooter;
	&CPTop;
	&LoadTemplate("cp_vars_template_list");
	&CPBottom;
}    #end view_style_templates



sub set_vars_style {
	local (*FILE);
	local ($j, $number, @revised,, $key);
	my $TemplateNumber = $in{template_choice};

	# set/clean the vars ------------
	my $Header        = &SmallClean($in{Header});
	my $Footer        = &SmallClean($in{Footer});
	my $HeaderInsert  = &SmallClean($in{HeaderInsert});
	my $html_extra    = &SmallClean($in{html_extra});
	my $body_extra    = &SmallClean($in{body_extra});
	my $language_meta = &SmallClean($in{language_meta});

	# limit/eliminate/convert returns in some fields
	$HeaderInsert  = &LimitReturns($HeaderInsert);
	$Header        = &LimitReturns($Header);
	$Footer        = &LimitReturns($Footer);
	$html_extra    = &EliminateReturns($html_extra);
	$body_extra    = &EliminateReturns($body_extra);
	$language_meta = &EliminateReturns($language_meta);

	$CurrentTab = qq%$vars_wordlets_cp{style_settings}%;
	&CPHeader;
	&CPFooter;

	# delete it?
	if ($in{delete} eq "yes") {

		# change template match file
		&RequireVars("$vars_config{VariablesPath}/vars_template_match.cgi");
		foreach $key (keys %template_match) {

			if ($template_match{$key} == $TemplateNumber) { $template_match{$key} = '1'; }

		}

		# print updated hash

		&WriteFileAsHashKV("$vars_config{VariablesPath}/vars_template_match.cgi", "template_match", \%template_match);


		my @temp_list = &OpenFileAsArray("$vars_config{VariablesPath}/vars_style_sets.cgi");

		foreach (@temp_list) {
			($j, $number) = split (/\|\^\|/, $_);
			chomp($number);
			unless ($number eq "$TemplateNumber") {
				push (@revised, $_);
			}
		}

		&WriteFileAsArray("$vars_config{VariablesPath}/vars_style_sets.cgi", @revised);

		# delete old template
		unlink("$vars_config{NonCGIPath}/styles/vars_style_$TemplateNumber.cgi");

		#display template page
		&view_style_templates;
		exit(0);
	}    # end delete option


	#validate
	my @ValidateArray = ("BGColor", "TextColor", "LinkColor", "ActiveLinkColor",
	"VisitedLinkColor", "TableStripTextColor", "TableColorStrip", "TimeColor", "AltColumnColor1",
	"AltColumnColor2", "CategoryStripColor", "CategoryStripTextColor", "CopyrightTextColor",
	"BBTitleFontColor", "FontFace", "TableWidth", "TextSize", "FDTextSize", "BBTitle", "BBTopic",
	"BBReply", "profilegif", "mailgif", "edit_icon", "reply_with_quote_icon", "homepage_icon",
	"forum_summ_on", "forum_summ_off", "new_topic_folder", "old_topic_folder", "hot_new_topic_folder",
	"hot_old_topic_folder", "hr_color", "table_border_display", "ubb_friend",
	"old_locked_folder", "new_locked_folder", "ubb_friend_mini", "open_topic", "close_topic",
	"move_topic", "delete_topic", "prev_topic", "next_topic", "user_ratings_1", "user_ratings_2",
	"user_ratings_3", "user_ratings_4", "user_ratings_5", "search_graphic", "priv_message");
	&Validate(@ValidateArray);


	# write to file!

	# write to file!
	my %new_vars_style = (
		"BGColor"                => qq^$in{BGColor}^,
		"TextColor"              => qq^$in{TextColor}^,
		"LinkColor"              => qq^$in{LinkColor}^,
		"ActiveLinkColor"        => qq^$in{ActiveLinkColor}^,
		"VisitedLinkColor"       => qq^$in{VisitedLinkColor}^,
		"TableBorderColor"       => qq^$in{TableBorderColor}^,
		"TableStripTextColor"    => qq^$in{TableStripTextColor}^,
		"TableColorStrip"        => qq^$in{TableColorStrip}^,
		"TimeColor"              => qq^$in{TimeColor}^,
		"AltColumnColor1"        => qq^$in{AltColumnColor1}^,
		"AltColumnColor2"        => qq^$in{AltColumnColor2}^,
		"CategoryStripColor"     => qq^$in{CategoryStripColor}^,
		"CategoryStripTextColor" => qq^$in{CategoryStripTextColor}^,
		"CopyrightTextColor"     => qq^$in{CopyrightTextColor}^,
		"BBTitleFontColor"       => qq^$in{BBTitleFontColor}^,
		"hr_color"               => qq^$in{hr_color}^,
		"FontFace"               => qq^$in{FontFace}^,
		"TableWidth"             => qq^$in{TableWidth}^,
		"TextSize"               => qq^$in{TextSize}^,
		"FDTextSize"             => qq^$in{FDTextSize}^,
		"PageBackground"         => qq^$in{PageBackground}^,
		"BBTitle"                => qq^$in{BBTitle}^,
		"BBTopic"                => qq^$in{BBTopic}^,
		"BBReply"                => qq^$in{BBReply}^,
		"search_graphic"         => qq^$in{search_graphic}^,
		"profilegif"             => qq^$in{profilegif}^,
		"edit_icon"              => qq^$in{edit_icon}^,
		"reply_with_quote_icon"  => qq^$in{reply_with_quote_icon}^,
		"homepage_icon"          => qq^$in{homepage_icon}^,
		"forum_summ_on"          => qq^$in{forum_summ_on}^,
		"forum_summ_off"         => qq^$in{forum_summ_off}^,
		"table_border_display"   => qq^$in{table_border_display}^,
		"new_topic_folder"       => qq^$in{new_topic_folder}^,
		"old_topic_folder"       => qq^$in{old_topic_folder}^,
		"hot_new_topic_folder"   => qq^$in{hot_new_topic_folder}^,
		"hot_old_topic_folder"   => qq^$in{hot_old_topic_folder}^,
		"old_locked_folder"      => qq^$in{old_locked_folder}^,
		"new_locked_folder"      => qq^$in{new_locked_folder}^,
		"plain_old_regular_lock" => qq^$in{plain_old_regular_lock}^,
		"ubb_friend"             => qq^$in{ubb_friend}^,
		"ubb_friend_mini"        => qq^$in{ubb_friend_mini}^,
		"close_topic"            => qq^$in{close_topic}^,
		"open_topic"             => qq^$in{open_topic}^,
		"move_topic"             => qq^$in{move_topic}^,
		"delete_topic"           => qq^$in{delete_topic}^,
		"prev_topic"             => qq^$in{prev_topic}^,
		"next_topic"             => qq^$in{next_topic}^,
		"priv_message"           => qq^$in{priv_message}^,
		"user_ratings_1"         => qq^$in{user_ratings_1}^,
		"user_ratings_2"         => qq^$in{user_ratings_2}^,
		"user_ratings_3"         => qq^$in{user_ratings_3}^,
		"user_ratings_4"         => qq^$in{user_ratings_4}^,
		"user_ratings_5"         => qq^$in{user_ratings_5}^,
		"Header"                 => qq~$Header~,
		"Footer"                 => qq~$Footer~,
		"HeaderInsert"           => qq~$HeaderInsert~,
		"html_extra"             => qq~$html_extra~,
		"body_extra"             => qq~$body_extra~,
		"mailgif"                => qq^$in{mailgif}^,
		"thisCharset"            => qq^$in{thisCharset}^
	);

	&WriteHashToFile("$vars_config{NonCGIPath}/styles/vars_style_$TemplateNumber.cgi", "vars_style", \%new_vars_style);


	# clear cache
	&ClearForumTopicsCache;
	&ClearForumPageCache;
	&ClearSummaryCache;
	&ClearMiscCache;

	# display tempate page
	&cp_confirm("Style Settings Updated");
	exit(0);

}    #end set_vars_style

sub templates_advanced {
	local (@templates, $key, $j, $k, $uno, $num, $Type, @thisforum);

	$Hiddens = qq%
<INPUT TYPE="HIDDEN" NAME="ubb" VALUE="set_advanced_templates">
<INPUT TYPE="HIDDEN" NAME="type" VALUE="misc">
%;

	$CurrentTab = qq%<A HREF="$vars_config{CGIURL}/cp.cgi?ubb=vars_style_temp_list">$vars_wordlets_cp{style_settings}</A> &gt;&gt; Template Associations%;
	&CPHeader;
	&CPFooter;

	# get template list
	@templates = &OpenFileAsArray("$vars_config{VariablesPath}/vars_style_sets.cgi");

	&RequireVars("$vars_config{VariablesPath}/vars_template_match.cgi");

	&CPTop;
	&LoadTemplate("cp_templates_advanced");
	&CPBottom;


}    # end templates_advanced


sub templates_advanced_forums {
	local (@templates, $key, $j, $k, $uno, $num, $Type, @all_forums, @this_forum, $this_template, $temp_num);

	$Hiddens = qq%
<INPUT TYPE="HIDDEN" NAME="ubb" VALUE="set_advanced_templates">
<INPUT TYPE="HIDDEN" NAME="type" VALUE="forums">
%;

	$CurrentTab = qq%<A HREF="$vars_config{CGIURL}/cp.cgi?ubb=vars_style_temp_list">$vars_wordlets_cp{style_settings}</A> &gt;&gt; Template Associations%;
	&CPHeader;
	&CPFooter;

	@all_forums = &OpenForumsFile;

	# get template list
	@templates = &OpenFileAsArray("$vars_config{VariablesPath}/vars_style_sets.cgi");

	&RequireVars("$vars_config{VariablesPath}/vars_template_match.cgi");

	&CPTop;
	&LoadTemplate("cp_templates_advanced_f");
	&CPBottom;


}    # end templates_advanced_forums


sub set_advanced_templates {

	local (*FILE);
	local ($key, @this_forum, $ft);

	&RequireVars("$vars_config{VariablesPath}/vars_template_match.cgi");

	if ($_[0] eq "misc") {

		$template_match{registration} = "$in{registration}";
		$template_match{search}       = "$in{search}";
		$template_match{transition}   = "$in{transition}";
		$template_match{summary_page} = "$in{summary_page}";
		$template_match{profile}      = "$in{profile}";
		$template_match{ubb_code}     = "$in{ubb_code}";
		$template_match{faq}          = "$in{faq}";
		$template_match{email}        = "$in{email}";
		if (!$in{private_message}) {
			$in{private_message} = '1';
		}
		$template_match{private_message} = "$in{private_message}";


	} else {

		# do forums

		foreach $key (keys %in) {

			if ($key =~ /forum/) { $template_match{$key} = $in{$key}; }
		}

	}    # end if/else misc

	# make sure all forums are accounted for: (probably overkill... but for the paranoid)--
	my @forums = &OpenForumsFile;
	foreach (@forums) {
		@this_forum = split (/\|\^\|/, $_);
		$ft = ("forum_" . "$this_forum[8]");
		unless (exists($template_match{$ft})) {
			$template_match{$ft} = '1';
		}
	}


	# print updated hash
	&WriteHashToFile("$vars_config{VariablesPath}/vars_template_match.cgi", "template_match", \%template_match);

	# clear cache
	&ClearForumTopicsCache;
	&ClearForumPageCache;
	&ClearSummaryCache;
	&ClearMiscCache;

	# view advanced template controls
	&cp_confirm("Template Assignments Updated");

}    # end set_adv templates

# Danger- do not remove the following line!
1;
