using System;
using System.Web.UI;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.IO;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
public partial class CMSModules_Avatars_Avatar_Edit : SiteManagerPage, IPostBackEventHandler
{
#region "Variables"
protected int avatarId = 0;
protected AvatarInfo ai = null;
#endregion
#region "Events and methods"
protected void Page_Load(object sender, EventArgs e)
{
imgAvatar.Visible = false;
avatarId = QueryHelper.GetInteger("avatarid", 0);
if ((QueryHelper.GetInteger("saved", 0) == 1) && !URLHelper.IsPostback())
{
ShowChangesSaved();
}
// new avatar
if (avatarId == 0)
{
CurrentMaster.Title.TitleText = GetString("avat.newavatar");
CurrentMaster.Title.TitleImage = GetImageUrl("Objects/CMS_Avatar/new.png");
drpAvatarType.AutoPostBack = false;
}
// Edit avatar
else
{
CurrentMaster.Title.TitleText = GetString("avat.properties");
CurrentMaster.Title.TitleImage = GetImageUrl("Objects/CMS_Avatar/object.png");
drpAvatarType.AutoPostBack = true;
}
CurrentMaster.Title.HelpTopicName = "avatars_edit";
CurrentMaster.Title.HelpName = "helpTopic";
// initializes breadcrumbs
string[,] pageTitleTabs = new string[2,3];
pageTitleTabs[0, 0] = GetString("avat.title");
pageTitleTabs[0, 1] = "~/CMSModules/Avatars/Avatar_List.aspx";
pageTitleTabs[0, 2] = "";
pageTitleTabs[1, 0] = GetString("avat.newavatar");
pageTitleTabs[1, 1] = "";
pageTitleTabs[1, 2] = "";
lblSharedInfo.Text = String.Format(GetString("avat.convertinfo") + "
", "" + GetString("General.clickhere") + "");
valAvatarName.ErrorMessage = GetString("avat.requiresname");
if (!RequestHelper.IsPostBack())
{
// Fill the drop down list
DataHelper.FillListControlWithEnum(typeof(AvatarTypeEnum), drpAvatarType, "avat.type", AvatarInfoProvider.GetAvatarTypeString);
}
if (avatarId > 0)
{
plcImage.Visible = true;
ai = AvatarInfoProvider.GetAvatarInfoWithoutBinary(avatarId);
if (ai != null)
{
if (ai.AvatarIsCustom)
{
lblSharedInfo.Visible = true;
}
pageTitleTabs[1, 0] = HTMLHelper.HTMLEncode(!string.IsNullOrEmpty(ai.AvatarName) ? ai.AvatarName : ai.AvatarFileName.Substring(0, ai.AvatarFileName.LastIndexOfCSafe(".")));
// Load avatars data
if (!RequestHelper.IsPostBack())
{
txtAvatarName.Text = ai.AvatarName;
drpAvatarType.SelectedValue = ai.AvatarType.ToLowerCSafe();
chkDefaultUserAvatar.Checked = ai.DefaultUserAvatar;
chkDefaultMaleUserAvatar.Checked = ai.DefaultMaleUserAvatar;
chkDefaultFemaleUserAvatar.Checked = ai.DefaultFemaleUserAvatar;
chkDefaultGroupAvatar.Checked = ai.DefaultGroupAvatar;
imgAvatar.AlternateText = HTMLHelper.HTMLEncode(ai.AvatarName);
}
imgAvatar.Visible = true;
imgAvatar.ImageUrl = ResolveUrl("~/CMSModules/Avatars/CMSPages/GetAvatar.aspx?maxsidesize=250&avatarguid=" + ai.AvatarGUID);
// Display default avatar options, only for global avatars
if (!ai.AvatarIsCustom)
{
switch (AvatarInfoProvider.GetAvatarTypeEnum(drpAvatarType.SelectedValue))
{
case AvatarTypeEnum.User:
plcDefaultUserAvatar.Visible = true;
break;
case AvatarTypeEnum.Group:
plcDefaultGroupAvatar.Visible = true;
break;
case AvatarTypeEnum.All:
plcDefaultGroupAvatar.Visible = true;
plcDefaultUserAvatar.Visible = true;
break;
}
}
}
}
// Set up page title control
CurrentMaster.Title.Breadcrumbs = pageTitleTabs;
}
///
/// OK click event handler.
///
protected void btnOK_Click(object sender, EventArgs e)
{
if ((uploadAvatar.PostedFile == null) && (ai == null))
{
ShowError(GetString("avat.fileinputerror"));
}
else
{
CurrentSiteInfo site = CMSContext.CurrentSite;
int width = 0;
int height = 0;
int sidesize = 0;
// Get resize values
if (drpAvatarType.SelectedValue != "all")
{
// Get right settings key
string siteName = ((site != null) ? (site.SiteName + ".") : "");
string prefix = "CMSAvatar";
if (drpAvatarType.SelectedValue == "group")
{
prefix = "CMSGroupAvatar";
}
width = SettingsKeyProvider.GetIntValue(siteName + prefix + "Width");
height = SettingsKeyProvider.GetIntValue(siteName + prefix + "Height");
sidesize = SettingsKeyProvider.GetIntValue(siteName + prefix + "MaxSideSize");
}
// Check if avatar name is unique
string newAvatarName = txtAvatarName.Text.Trim();
AvatarInfo avatarWithSameName = AvatarInfoProvider.GetAvatarInfoWithoutBinary(newAvatarName);
if (avatarWithSameName != null)
{
if (ai != null)
{
// Check unique avatar name of existing avatar
if (avatarWithSameName.AvatarID != ai.AvatarID)
{
ShowError(GetString("avat.uniqueavatarname"));
return;
}
}
// Check unique avatar name of new avatar
else
{
ShowError(GetString("avat.uniqueavatarname"));
return;
}
}
// Process form in these cases:
// 1 - creating new avatar and uploaded file is not empty and it is image file
// 2 - updating existing avatar and not uploading new image file
// 3 - updating existing avatar and uploading image file
if (((ai == null) && (uploadAvatar.PostedFile != null) && (uploadAvatar.PostedFile.ContentLength > 0) && (ImageHelper.IsImage(Path.GetExtension(uploadAvatar.PostedFile.FileName))))
|| ((ai != null) && ((uploadAvatar.PostedFile == null) || (uploadAvatar.PostedFile.ContentLength == 0)))
|| ((ai != null) && (uploadAvatar.PostedFile != null) && (uploadAvatar.PostedFile.ContentLength > 0) && (ImageHelper.IsImage(Path.GetExtension(uploadAvatar.PostedFile.FileName)))))
{
if (ai == null)
{
switch (drpAvatarType.SelectedValue)
{
case "user":
ai = new AvatarInfo(uploadAvatar.PostedFile, width, height, sidesize);
break;
case "group":
ai = new AvatarInfo(uploadAvatar.PostedFile, width, height, sidesize);
break;
case "all":
ai = new AvatarInfo(uploadAvatar.PostedFile, 0, 0, 0);
break;
default:
ai = new AvatarInfo(uploadAvatar.PostedFile, 0, 0, 0);
break;
}
ai.AvatarIsCustom = false;
ai.AvatarGUID = Guid.NewGuid();
}
else if ((uploadAvatar.PostedFile != null) && (uploadAvatar.PostedFile.ContentLength > 0) && (ImageHelper.IsMimeImage(uploadAvatar.PostedFile.ContentType)))
{
AvatarInfoProvider.DeleteAvatarFile(ai.AvatarGUID.ToString(), ai.AvatarFileExtension, false, false);
AvatarInfoProvider.UploadAvatar(ai, uploadAvatar.PostedFile, width, height, sidesize);
}
// Set new avatar name
ai.AvatarName = newAvatarName;
imgAvatar.Visible = true;
imgAvatar.ImageUrl = ResolveUrl("~/CMSModules/Avatars/CMSPages/GetAvatar.aspx?maxsidesize=250&avatarguid=" + ai.AvatarGUID);
// If there was avatar type change clear possible default avatar settings
if (ai.AvatarType != drpAvatarType.SelectedValue)
{
if (drpAvatarType.SelectedValue == "group")
{
// Clear default user's avatar
ClearDefaultUserAvatars(ai);
}
else if (drpAvatarType.SelectedValue == "user")
{
//Clear group avatar
ClearDefaultGroupAvatar(ai);
}
// "all" option is doesn't have to clear anything
}
// Set new type
ai.AvatarType = drpAvatarType.SelectedValue;
// If user uncheck
if (ai.DefaultUserAvatar && (!chkDefaultUserAvatar.Checked || ai.AvatarIsCustom))
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.User, true);
}
// If male uncheck
if (ai.DefaultMaleUserAvatar && (!chkDefaultMaleUserAvatar.Checked || ai.AvatarIsCustom))
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.Male, true);
}
// If female uncheck
if (ai.DefaultFemaleUserAvatar && (!chkDefaultFemaleUserAvatar.Checked || ai.AvatarIsCustom))
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.Female, true);
}
// If group uncheck
if (ai.DefaultGroupAvatar && (!chkDefaultGroupAvatar.Checked || ai.AvatarIsCustom))
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.Group, true);
}
// If avatar is not global, can't be default any default avatar
if (ai.AvatarIsCustom)
{
// Set all default avatar options to false
ai.DefaultUserAvatar = ai.DefaultMaleUserAvatar = ai.DefaultFemaleUserAvatar = ai.DefaultGroupAvatar = false;
}
else
{
// Set new default avatar settings
ai.DefaultUserAvatar = chkDefaultUserAvatar.Checked;
ai.DefaultMaleUserAvatar = chkDefaultMaleUserAvatar.Checked;
ai.DefaultFemaleUserAvatar = chkDefaultFemaleUserAvatar.Checked;
ai.DefaultGroupAvatar = chkDefaultGroupAvatar.Checked;
// If this avatar is becoming to be new default avatar. Clear the mark from others avatar
ClearDefaultUserAvatars(ai);
ClearDefaultGroupAvatar(ai);
}
AvatarInfoProvider.SetAvatarInfo(ai);
avatarId = ai.AvatarID;
URLHelper.Redirect("Avatar_Edit.aspx?saved=1&avatarid=" + avatarId);
}
else
{
// If given file is not valid
if ((uploadAvatar.PostedFile != null) && (uploadAvatar.PostedFile.ContentLength > 0) && !ImageHelper.IsImage(Path.GetExtension(uploadAvatar.PostedFile.FileName)))
{
ShowError(GetString("avat.filenotvalid"));
}
else
{
// If posted file is not given
ShowError(GetString("avat.fileinputerror"));
}
}
}
}
///
/// Clears default user avatars which is assigned to avatarinfo.
///
private static void ClearDefaultUserAvatars(AvatarInfo ai)
{
if (ai.DefaultUserAvatar)
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.User);
}
if (ai.DefaultMaleUserAvatar)
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.Male);
}
if (ai.DefaultFemaleUserAvatar)
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.Female);
}
}
///
/// Clears default group avatar which is assigned to avatarinfo.
///
private static void ClearDefaultGroupAvatar(AvatarInfo ai)
{
if (ai.DefaultGroupAvatar)
{
AvatarInfoProvider.ClearDefaultAvatar(DefaultAvatarTypeEnum.Group);
}
}
#endregion
#region "IPostBackEventHandler Members"
public void RaisePostBackEvent(string eventArgument)
{
if (eventArgument == "shared")
{
if ((ai != null) && (ai.AvatarIsCustom))
{
ai.AvatarIsCustom = false;
AvatarInfoProvider.SetAvatarInfo(ai);
URLHelper.Redirect(URLHelper.AddParameterToUrl(URLHelper.CurrentURL, "saved", "1"));
}
}
}
#endregion
}