529 lines
21 KiB
C#
529 lines
21 KiB
C#
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using ScrewTurn.Wiki.PluginFramework;
|
|
|
|
namespace ScrewTurn.Wiki {
|
|
|
|
public partial class AdminConfig : BasePage {
|
|
|
|
protected void Page_Load(object sender, EventArgs e) {
|
|
AdminMaster.RedirectToLoginIfNeeded();
|
|
|
|
if(!AdminMaster.CanManageConfiguration(SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames())) UrlTools.Redirect("AccessDenied.aspx");
|
|
|
|
StringBuilder sb = new StringBuilder(200);
|
|
sb.Append("<script type=\"text/javascript\">\r\n<!--\r\n");
|
|
sb.AppendFormat("\tvar __DateTimeFormatTextBox = '{0}';\r\n", txtDateTimeFormat.ClientID);
|
|
sb.Append("// -->\r\n</script>");
|
|
lblStrings.Text = sb.ToString();
|
|
|
|
if(!Page.IsPostBack) {
|
|
// Setup validation regular expressions
|
|
revMainUrl.ValidationExpression = Settings.MainUrlRegex;
|
|
revWikiTitle.ValidationExpression = Settings.WikiTitleRegex;
|
|
revContactEmail.ValidationExpression = Settings.EmailRegex;
|
|
revSenderEmail.ValidationExpression = Settings.EmailRegex;
|
|
revSmtpServer.ValidationExpression = Settings.SmtpServerRegex;
|
|
|
|
// Load current values
|
|
LoadGeneralConfig();
|
|
LoadContentConfig();
|
|
LoadSecurityConfig();
|
|
LoadAdvancedConfig();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads the general configuration.
|
|
/// </summary>
|
|
private void LoadGeneralConfig() {
|
|
txtWikiTitle.Text = Settings.WikiTitle;
|
|
txtMainUrl.Text = Settings.MainUrl;
|
|
txtContactEmail.Text = Settings.ContactEmail;
|
|
txtSenderEmail.Text = Settings.SenderEmail;
|
|
txtErrorsEmails.Text = string.Join(", ", Settings.ErrorsEmails);
|
|
txtSmtpServer.Text = Settings.SmtpServer;
|
|
int port = Settings.SmtpPort;
|
|
txtSmtpPort.Text = port != -1 ? port.ToString() : "";
|
|
txtUsername.Text = Settings.SmtpUsername;
|
|
txtPassword.Attributes.Add("value", Settings.SmtpPassword);
|
|
chkEnableSslForSmtp.Checked = Settings.SmtpSsl;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates the Themes list selecting the current one.
|
|
/// </summary>
|
|
/// <param name="current">The current theme.</param>
|
|
private void PopulateThemes(string current) {
|
|
current = current.ToLowerInvariant();
|
|
|
|
string[] themes = Tools.AvailableThemes;
|
|
lstRootTheme.Items.Clear();
|
|
foreach(string theme in themes) {
|
|
lstRootTheme.Items.Add(new ListItem(theme, theme));
|
|
if(theme.ToLowerInvariant() == current) lstRootTheme.Items[lstRootTheme.Items.Count - 1].Selected = true;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates the main pages list selecting the current one.
|
|
/// </summary>
|
|
/// <param name="current">The current page.</param>
|
|
private void PopulateMainPages(string current) {
|
|
current = current.ToLowerInvariant();
|
|
|
|
List<PageInfo> pages = Pages.GetPages(null);
|
|
lstMainPage.Items.Clear();
|
|
foreach(PageInfo page in pages) {
|
|
lstMainPage.Items.Add(new ListItem(page.FullName, page.FullName));
|
|
if(page.FullName.ToLowerInvariant() == current) {
|
|
lstMainPage.SelectedIndex = -1;
|
|
lstMainPage.Items[lstMainPage.Items.Count - 1].Selected = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates the languages list selecting the current one.
|
|
/// </summary>
|
|
/// <param name="current">The current language.</param>
|
|
private void PopulateLanguages(string current) {
|
|
current = current.ToLowerInvariant();
|
|
|
|
string[] langs = Tools.AvailableCultures;
|
|
lstDefaultLanguage.Items.Clear();
|
|
foreach(string lang in langs) {
|
|
string[] fields = lang.Split('|');
|
|
lstDefaultLanguage.Items.Add(new ListItem(fields[1], fields[0]));
|
|
if(fields[0].ToLowerInvariant() == current) lstDefaultLanguage.Items[lstDefaultLanguage.Items.Count - 1].Selected = true;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates the time zones list selecting the current one.
|
|
/// </summary>
|
|
/// <param name="current">The current time zone.</param>
|
|
private void PopulateTimeZones(string current) {
|
|
for(int i = 0; i < lstDefaultTimeZone.Items.Count; i++) {
|
|
if(lstDefaultTimeZone.Items[i].Value == current) lstDefaultTimeZone.Items[i].Selected = true;
|
|
else lstDefaultTimeZone.Items[i].Selected = false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates the date/time format templates list.
|
|
/// </summary>
|
|
private void PopulateDateTimeFormats() {
|
|
StringBuilder sb = new StringBuilder(500);
|
|
DateTime test = DateTime.Now;
|
|
sb.Append(@"<option value=""ddd', 'dd' 'MMM' 'yyyy' 'HH':'mm"">" + test.ToString("ddd, dd MMM yyyy HH':'mm") + "</option>");
|
|
sb.Append(@"<option value=""dddd', 'dd' 'MMMM' 'yyyy' 'HH':'mm"">" + test.ToString("dddd, dd MMMM yyyy HH':'mm") + "</option>");
|
|
sb.Append(@"<option value=""yyyy'/'MM'/'dd' 'HH':'mm"">" + test.ToString("yyyy'/'MM'/'dd' 'HH':'mm") + "</option>");
|
|
sb.Append(@"<option value=""MM'/'dd'/'yyyy' 'HH':'mm"">" + test.ToString("MM'/'dd'/'yyyy' 'HH':'mm") + "</option>");
|
|
sb.Append(@"<option value=""dd'/'MM'/'yyyy' 'HH':'mm"">" + test.ToString("dd'/'MM'/'yyyy' 'HH':'mm") + "</option>");
|
|
|
|
sb.Append(@"<option value=""ddd', 'dd' 'MMM' 'yyyy' 'hh':'mm' 'tt"">" + test.ToString("ddd, dd MMM yyyy hh':'mm' 'tt") + "</option>");
|
|
sb.Append(@"<option value=""dddd', 'dd' 'MMMM' 'yyyy' 'hh':'mm' 'tt"">" + test.ToString("dddd, dd MMMM yyyy hh':'mm' 'tt") + "</option>");
|
|
sb.Append(@"<option value=""yyyy'/'MM'/'dd' 'hh':'mm' 'tt"">" + test.ToString("yyyy'/'MM'/'dd' 'hh':'mm' 'tt") + "</option>");
|
|
sb.Append(@"<option value=""MM'/'dd'/'yyyy' 'hh':'mm' 'tt"">" + test.ToString("MM'/'dd'/'yyyy' 'hh':'mm' 'tt") + "</option>");
|
|
sb.Append(@"<option value=""dd'/'MM'/'yyyy' 'hh':'mm' 'tt"">" + test.ToString("dd'/'MM'/'yyyy' 'hh':'mm' 'tt") + "</option>");
|
|
|
|
lblDateTimeFormatTemplates.Text = sb.ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads the content configuration.
|
|
/// </summary>
|
|
private void LoadContentConfig() {
|
|
PopulateThemes(Settings.GetTheme(null));
|
|
PopulateMainPages(Settings.DefaultPage);
|
|
txtDateTimeFormat.Text = Settings.DateTimeFormat;
|
|
PopulateDateTimeFormats();
|
|
PopulateLanguages(Settings.DefaultLanguage);
|
|
PopulateTimeZones(Settings.DefaultTimezone.ToString());
|
|
txtMaxRecentChangesToDisplay.Text = Settings.MaxRecentChangesToDisplay.ToString();
|
|
|
|
lstRssFeedsMode.SelectedIndex = -1;
|
|
switch(Settings.RssFeedsMode) {
|
|
case RssFeedsMode.FullText:
|
|
lstRssFeedsMode.SelectedIndex = 0;
|
|
break;
|
|
case RssFeedsMode.Summary:
|
|
lstRssFeedsMode.SelectedIndex = 1;
|
|
break;
|
|
case RssFeedsMode.Disabled:
|
|
lstRssFeedsMode.SelectedIndex = 2;
|
|
break;
|
|
}
|
|
|
|
chkEnableDoubleClickEditing.Checked = Settings.EnableDoubleClickEditing;
|
|
chkEnableSectionEditing.Checked = Settings.EnableSectionEditing;
|
|
chkEnablePageToolbar.Checked = Settings.EnablePageToolbar;
|
|
chkEnableViewPageCode.Checked = Settings.EnableViewPageCodeFeature;
|
|
chkEnablePageInfoDiv.Checked = Settings.EnablePageInfoDiv;
|
|
chkEnableBreadcrumbsTrail.Checked = !Settings.DisableBreadcrumbsTrail;
|
|
chkAutoGeneratePageNames.Checked = Settings.AutoGeneratePageNames;
|
|
chkProcessSingleLineBreaks.Checked = Settings.ProcessSingleLineBreaks;
|
|
chkUseVisualEditorAsDefault.Checked = Settings.UseVisualEditorAsDefault;
|
|
if(Settings.KeptBackupNumber == -1) txtKeptBackupNumber.Text = "";
|
|
else txtKeptBackupNumber.Text = Settings.KeptBackupNumber.ToString();
|
|
chkDisplayGravatars.Checked = Settings.DisplayGravatars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates the activation mode list selecting the current one.
|
|
/// </summary>
|
|
/// <param name="current">The current account activation mode.</param>
|
|
private void PopulateAccountActivationMode(AccountActivationMode current) {
|
|
if(current == AccountActivationMode.Email) lstAccountActivationMode.SelectedIndex = 0;
|
|
else if(current == AccountActivationMode.Administrator) lstAccountActivationMode.SelectedIndex = 1;
|
|
else lstAccountActivationMode.SelectedIndex = 2;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Populates the default groups lists, selecting the current ones.
|
|
/// </summary>
|
|
/// <param name="users">The current default users group.</param>
|
|
/// <param name="admins">The current default administrators group.</param>
|
|
/// <param name="anonymous">The current default anonymous users group.</param>
|
|
private void PopulateDefaultGroups(string users, string admins, string anonymous) {
|
|
users = users.ToLowerInvariant();
|
|
admins = admins.ToLowerInvariant();
|
|
anonymous = anonymous.ToLowerInvariant();
|
|
|
|
lstDefaultUsersGroup.Items.Clear();
|
|
lstDefaultAdministratorsGroup.Items.Clear();
|
|
lstDefaultAnonymousGroup.Items.Clear();
|
|
foreach(UserGroup group in Users.GetUserGroups()) {
|
|
string lowerName = group.Name.ToLowerInvariant();
|
|
|
|
lstDefaultUsersGroup.Items.Add(new ListItem(group.Name, group.Name));
|
|
if(lowerName == users) {
|
|
lstDefaultUsersGroup.SelectedIndex = -1;
|
|
lstDefaultUsersGroup.Items[lstDefaultUsersGroup.Items.Count - 1].Selected = true;
|
|
}
|
|
|
|
lstDefaultAdministratorsGroup.Items.Add(new ListItem(group.Name, group.Name));
|
|
if(lowerName == admins) {
|
|
lstDefaultAdministratorsGroup.SelectedIndex = -1;
|
|
lstDefaultAdministratorsGroup.Items[lstDefaultAdministratorsGroup.Items.Count - 1].Selected = true;
|
|
}
|
|
|
|
lstDefaultAnonymousGroup.Items.Add(new ListItem(group.Name, group.Name));
|
|
if(lowerName == anonymous) {
|
|
lstDefaultAnonymousGroup.SelectedIndex = -1;
|
|
lstDefaultAnonymousGroup.Items[lstDefaultAnonymousGroup.Items.Count - 1].Selected = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads the security configuration.
|
|
/// </summary>
|
|
private void LoadSecurityConfig() {
|
|
chkAllowUsersToRegister.Checked = Settings.UsersCanRegister;
|
|
txtPasswordRegEx.Text = Settings.PasswordRegex;
|
|
txtUsernameRegEx.Text = Settings.UsernameRegex;
|
|
PopulateAccountActivationMode(Settings.AccountActivationMode);
|
|
PopulateDefaultGroups(Settings.UsersGroup,
|
|
Settings.AdministratorsGroup,
|
|
Settings.AnonymousGroup);
|
|
chkEnableCaptchaControl.Checked = !Settings.DisableCaptchaControl;
|
|
chkPreventConcurrentEditing.Checked = Settings.DisableConcurrentEditing;
|
|
|
|
switch(Settings.ChangeModerationMode) {
|
|
case ChangeModerationMode.None:
|
|
rdoNoModeration.Checked = true;
|
|
break;
|
|
case ChangeModerationMode.RequirePageViewingPermissions:
|
|
rdoRequirePageViewingPermissions.Checked = true;
|
|
break;
|
|
case ChangeModerationMode.RequirePageEditingPermissions:
|
|
rdoRequirePageEditingPermissions.Checked = true;
|
|
break;
|
|
}
|
|
|
|
txtExtensionsAllowed.Text = string.Join(", ", Settings.AllowedFileTypes);
|
|
|
|
lstFileDownloadCountFilterMode.SelectedIndex = -1;
|
|
switch(Settings.FileDownloadCountFilterMode) {
|
|
case FileDownloadCountFilterMode.CountAll:
|
|
lstFileDownloadCountFilterMode.SelectedIndex = 0;
|
|
txtFileDownloadCountFilter.Enabled = false;
|
|
break;
|
|
case FileDownloadCountFilterMode.CountSpecifiedExtensions:
|
|
lstFileDownloadCountFilterMode.SelectedIndex = 1;
|
|
txtFileDownloadCountFilter.Enabled = true;
|
|
txtFileDownloadCountFilter.Text = string.Join(", ", Settings.FileDownloadCountFilter);
|
|
break;
|
|
case FileDownloadCountFilterMode.ExcludeSpecifiedExtensions:
|
|
txtFileDownloadCountFilter.Text = string.Join(", ", Settings.FileDownloadCountFilter);
|
|
txtFileDownloadCountFilter.Enabled = true;
|
|
lstFileDownloadCountFilterMode.SelectedIndex = 2;
|
|
break;
|
|
default:
|
|
throw new NotSupportedException();
|
|
}
|
|
|
|
txtMaxFileSize.Text = Settings.MaxFileSize.ToString();
|
|
chkAllowScriptTags.Checked = Settings.ScriptTagsAllowed;
|
|
txtMaxLogSize.Text = Settings.MaxLogSize.ToString();
|
|
txtIpHostFilter.Text = Settings.IpHostFilter;
|
|
switch(Settings.LoggingLevel) {
|
|
case LoggingLevel.DisableLog:
|
|
rdoDisableLog.Checked = true;
|
|
break;
|
|
case LoggingLevel.ErrorsOnly:
|
|
rdoErrorsOnly.Checked = true;
|
|
break;
|
|
case LoggingLevel.WarningsAndErrors:
|
|
rdoWarningsAndErrors.Checked = true;
|
|
break;
|
|
case LoggingLevel.AllMessages:
|
|
rdoAllMessages.Checked = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads the advanced configuration.
|
|
/// </summary>
|
|
private void LoadAdvancedConfig() {
|
|
chkEnableAutomaticUpdateChecks.Checked = !Settings.DisableAutomaticVersionCheck;
|
|
chkDisableCache.Checked = Settings.DisableCache;
|
|
txtCacheSize.Text = Settings.CacheSize.ToString();
|
|
txtCacheCutSize.Text = Settings.CacheCutSize.ToString();
|
|
chkEnableViewStateCompression.Checked = Settings.EnableViewStateCompression;
|
|
chkEnableHttpCompression.Checked = Settings.EnableHttpCompression;
|
|
}
|
|
|
|
protected void btnAutoWikiUrl_Click(object sender, EventArgs e) {
|
|
string url = Request.Url.ToString();
|
|
// Assume the URL contains AdminConfig.aspx
|
|
url = url.Substring(0, url.ToLowerInvariant().IndexOf("adminconfig.aspx"));
|
|
txtMainUrl.Text = url;
|
|
}
|
|
|
|
protected void cvUsername_ServerValidate(object sender, ServerValidateEventArgs e) {
|
|
e.IsValid = txtUsername.Text.Length == 0 ||
|
|
(txtUsername.Text.Length > 0 && txtPassword.Text.Length > 0);
|
|
}
|
|
|
|
protected void cvPassword_ServerValidate(object sender, ServerValidateEventArgs e) {
|
|
e.IsValid = txtPassword.Text.Length == 0 ||
|
|
(txtUsername.Text.Length > 0 && txtPassword.Text.Length > 0);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the errors emails, properly trimmed.
|
|
/// </summary>
|
|
/// <returns>The emails.</returns>
|
|
private string[] GetErrorsEmails() {
|
|
string[] emails = txtErrorsEmails.Text.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
for(int i = 0; i < emails.Length; i++) {
|
|
emails[i] = emails[i].Trim();
|
|
}
|
|
|
|
return emails;
|
|
}
|
|
|
|
protected void cvErrorsEmails_ServerValidate(object sender, ServerValidateEventArgs e) {
|
|
string[] emails = GetErrorsEmails();
|
|
|
|
Regex regex = new Regex(Settings.EmailRegex, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
|
|
|
|
foreach(string email in emails) {
|
|
if(!regex.Match(email).Success) {
|
|
e.IsValid = false;
|
|
return;
|
|
}
|
|
}
|
|
|
|
e.IsValid = true;
|
|
}
|
|
|
|
protected void cvUsernameRegEx_ServerValidate(object sender, ServerValidateEventArgs e) {
|
|
try {
|
|
var r = new Regex(txtUsernameRegEx.Text);
|
|
r.IsMatch("Test String to validate Regular Expression");
|
|
e.IsValid = true;
|
|
}
|
|
catch {
|
|
e.IsValid = false;
|
|
}
|
|
}
|
|
|
|
protected void cvPasswordRegEx_ServerValidate(object sender, ServerValidateEventArgs e) {
|
|
try {
|
|
var r = new Regex(txtPasswordRegEx.Text);
|
|
r.IsMatch("Test String to validate Regular Expression");
|
|
e.IsValid = true;
|
|
}
|
|
catch {
|
|
e.IsValid = false;
|
|
}
|
|
}
|
|
|
|
protected void cvDateTimeFormat_ServerValidate(object sender, ServerValidateEventArgs e) {
|
|
try {
|
|
DateTime.Now.ToString(txtDateTimeFormat.Text);
|
|
e.IsValid = true;
|
|
}
|
|
catch {
|
|
e.IsValid = false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the extensions allowed for upload from the input control.
|
|
/// </summary>
|
|
/// <returns>The extensions.</returns>
|
|
private string[] GetAllowedFileExtensions() {
|
|
return txtExtensionsAllowed.Text.Replace(" ", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
}
|
|
|
|
protected void cvExtensionsAllowed_ServerValidate(object sender, ServerValidateEventArgs e) {
|
|
string[] allowed = GetAllowedFileExtensions();
|
|
|
|
bool wildcardFound =
|
|
(from s in allowed
|
|
where s == "*"
|
|
select s).Any();
|
|
|
|
e.IsValid = allowed.Length <= 1 || allowed.Length > 1 && !wildcardFound;
|
|
}
|
|
|
|
protected void lstFileDownloadCountFilterMode_SelectedIndexChanged(object sender, EventArgs e) {
|
|
if(lstFileDownloadCountFilterMode.SelectedValue == FileDownloadCountFilterMode.CountAll.ToString()) {
|
|
txtFileDownloadCountFilter.Enabled = false;
|
|
}
|
|
else {
|
|
txtFileDownloadCountFilter.Enabled = true;
|
|
}
|
|
}
|
|
|
|
protected void btnSave_Click(object sender, EventArgs e) {
|
|
lblResult.CssClass = "";
|
|
lblResult.Text = "";
|
|
|
|
Page.Validate();
|
|
|
|
if(!Page.IsValid) return;
|
|
|
|
Log.LogEntry("Wiki Configuration change requested", EntryType.General, SessionFacade.CurrentUsername);
|
|
|
|
Settings.BeginBulkUpdate();
|
|
|
|
// Save general configuration
|
|
Settings.WikiTitle = txtWikiTitle.Text;
|
|
Settings.MainUrl = txtMainUrl.Text;
|
|
Settings.ContactEmail = txtContactEmail.Text;
|
|
Settings.SenderEmail = txtSenderEmail.Text;
|
|
Settings.ErrorsEmails = GetErrorsEmails();
|
|
Settings.SmtpServer = txtSmtpServer.Text;
|
|
|
|
txtSmtpPort.Text = txtSmtpPort.Text.Trim();
|
|
if(txtSmtpPort.Text.Length > 0) Settings.SmtpPort = int.Parse(txtSmtpPort.Text);
|
|
else Settings.SmtpPort = -1;
|
|
if(txtUsername.Text.Length > 0) {
|
|
Settings.SmtpUsername = txtUsername.Text;
|
|
Settings.SmtpPassword = txtPassword.Text;
|
|
}
|
|
else {
|
|
Settings.SmtpUsername = "";
|
|
Settings.SmtpPassword = "";
|
|
}
|
|
Settings.SmtpSsl = chkEnableSslForSmtp.Checked;
|
|
|
|
// Save content configuration
|
|
Settings.SetTheme(null, lstRootTheme.SelectedValue);
|
|
Settings.DefaultPage = lstMainPage.SelectedValue;
|
|
Settings.DateTimeFormat = txtDateTimeFormat.Text;
|
|
Settings.DefaultLanguage = lstDefaultLanguage.SelectedValue;
|
|
Settings.DefaultTimezone = int.Parse(lstDefaultTimeZone.SelectedValue);
|
|
Settings.MaxRecentChangesToDisplay = int.Parse(txtMaxRecentChangesToDisplay.Text);
|
|
Settings.RssFeedsMode = (RssFeedsMode)Enum.Parse(typeof(RssFeedsMode), lstRssFeedsMode.SelectedValue);
|
|
Settings.EnableDoubleClickEditing = chkEnableDoubleClickEditing.Checked;
|
|
Settings.EnableSectionEditing = chkEnableSectionEditing.Checked;
|
|
Settings.EnablePageToolbar = chkEnablePageToolbar.Checked;
|
|
Settings.EnableViewPageCodeFeature = chkEnableViewPageCode.Checked;
|
|
Settings.EnablePageInfoDiv = chkEnablePageInfoDiv.Checked;
|
|
Settings.DisableBreadcrumbsTrail = !chkEnableBreadcrumbsTrail.Checked;
|
|
Settings.AutoGeneratePageNames = chkAutoGeneratePageNames.Checked;
|
|
Settings.ProcessSingleLineBreaks = chkProcessSingleLineBreaks.Checked;
|
|
Settings.UseVisualEditorAsDefault = chkUseVisualEditorAsDefault.Checked;
|
|
if(txtKeptBackupNumber.Text == "") Settings.KeptBackupNumber = -1;
|
|
else Settings.KeptBackupNumber = int.Parse(txtKeptBackupNumber.Text);
|
|
Settings.DisplayGravatars = chkDisplayGravatars.Checked;
|
|
|
|
// Save security configuration
|
|
Settings.UsersCanRegister = chkAllowUsersToRegister.Checked;
|
|
Settings.UsernameRegex = txtUsernameRegEx.Text;
|
|
Settings.PasswordRegex = txtPasswordRegEx.Text;
|
|
AccountActivationMode mode = AccountActivationMode.Email;
|
|
switch(lstAccountActivationMode.SelectedValue.ToLowerInvariant()) {
|
|
case "email":
|
|
mode = AccountActivationMode.Email;
|
|
break;
|
|
case "admin":
|
|
mode = AccountActivationMode.Administrator;
|
|
break;
|
|
case "auto":
|
|
mode = AccountActivationMode.Auto;
|
|
break;
|
|
}
|
|
Settings.AccountActivationMode = mode;
|
|
Settings.UsersGroup = lstDefaultUsersGroup.SelectedValue;
|
|
Settings.AdministratorsGroup = lstDefaultAdministratorsGroup.SelectedValue;
|
|
Settings.AnonymousGroup = lstDefaultAnonymousGroup.SelectedValue;
|
|
Settings.DisableCaptchaControl = !chkEnableCaptchaControl.Checked;
|
|
Settings.DisableConcurrentEditing = chkPreventConcurrentEditing.Checked;
|
|
|
|
if(rdoNoModeration.Checked) Settings.ChangeModerationMode = ChangeModerationMode.None;
|
|
else if(rdoRequirePageViewingPermissions.Checked) Settings.ChangeModerationMode = ChangeModerationMode.RequirePageViewingPermissions;
|
|
else if(rdoRequirePageEditingPermissions.Checked) Settings.ChangeModerationMode = ChangeModerationMode.RequirePageEditingPermissions;
|
|
|
|
Settings.AllowedFileTypes = GetAllowedFileExtensions();
|
|
|
|
Settings.FileDownloadCountFilterMode = (FileDownloadCountFilterMode)Enum.Parse(typeof(FileDownloadCountFilterMode), lstFileDownloadCountFilterMode.SelectedValue);
|
|
Settings.FileDownloadCountFilter = txtFileDownloadCountFilter.Text.Replace(" ", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
Settings.MaxFileSize = int.Parse(txtMaxFileSize.Text);
|
|
Settings.ScriptTagsAllowed = chkAllowScriptTags.Checked;
|
|
LoggingLevel level = LoggingLevel.AllMessages;
|
|
if(rdoAllMessages.Checked) level = LoggingLevel.AllMessages;
|
|
else if(rdoWarningsAndErrors.Checked) level = LoggingLevel.WarningsAndErrors;
|
|
else if(rdoErrorsOnly.Checked) level = LoggingLevel.ErrorsOnly;
|
|
else level = LoggingLevel.DisableLog;
|
|
Settings.LoggingLevel = level;
|
|
Settings.MaxLogSize = int.Parse(txtMaxLogSize.Text);
|
|
Settings.IpHostFilter = txtIpHostFilter.Text;
|
|
|
|
// Save advanced configuration
|
|
Settings.DisableAutomaticVersionCheck = !chkEnableAutomaticUpdateChecks.Checked;
|
|
Settings.DisableCache = chkDisableCache.Checked;
|
|
Settings.CacheSize = int.Parse(txtCacheSize.Text);
|
|
Settings.CacheCutSize = int.Parse(txtCacheCutSize.Text);
|
|
Settings.EnableViewStateCompression = chkEnableViewStateCompression.Checked;
|
|
Settings.EnableHttpCompression = chkEnableHttpCompression.Checked;
|
|
|
|
Settings.EndBulkUpdate();
|
|
|
|
Content.InvalidateAllPages();
|
|
Content.ClearPseudoCache();
|
|
|
|
lblResult.CssClass = "resultok";
|
|
lblResult.Text = Properties.Messages.ConfigSaved;
|
|
}
|
|
|
|
}
|
|
|
|
}
|