using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CMS.GlobalHelper;
using CMS.MediaLibrary;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
public partial class CMSModules_MediaLibrary_Controls_LiveControls_MediaLibraries : CMSAdminItemsControl, IPostBackEventHandler
{
#region "Private variables"
protected int mGroupID = 0;
protected Guid mGroupGUID = Guid.Empty;
protected bool mHideWhenGroupIsNotSupplied = false;
protected bool isNewLibrary = false;
#endregion
#region "Public properties"
///
/// ID of the group library belongs to.
///
public int GroupID
{
get
{
if (mGroupID <= 0)
{
mGroupID = ValidationHelper.GetInteger(GetValue("GroupID"), 0);
}
return mGroupID;
}
set
{
mGroupID = value;
}
}
///
/// GUID of the group library belongs to.
///
public Guid GroupGUID
{
get
{
if (mGroupGUID == Guid.Empty)
{
mGroupGUID = ValidationHelper.GetGuid(GetValue("GroupGUID"), Guid.Empty);
}
return mGroupGUID;
}
set
{
mGroupGUID = value;
}
}
///
/// ID of the media library.
///
protected int LibraryID
{
get
{
return ValidationHelper.GetInteger(ViewState["LibraryID"], 0);
}
set
{
ViewState.Add("LibraryID", value);
}
}
///
/// Determines whether to hide the content of the control when GroupID is not supplied.
///
public bool HideWhenGroupIsNotSupplied
{
get
{
return mHideWhenGroupIsNotSupplied;
}
set
{
mHideWhenGroupIsNotSupplied = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
#region "Security"
RaiseOnCheckPermissions(PERMISSION_READ, this);
#endregion
if (!Visible)
{
EnableViewState = false;
}
if (StopProcessing)
{
libraryList.StopProcessing = true;
libraryFiles.StopProcessing = true;
libraryEdit.StopProcessing = true;
librarySecurity.StopProcessing = true;
}
else
{
// Check if the group was supplied and hide control if necessary
if ((GroupID == 0) && (HideWhenGroupIsNotSupplied))
{
Visible = false;
}
// Initialize controls
SetupControls();
}
}
#region "Private methods"
///
/// Initializes all the controls used on live control.
///
private void SetupControls()
{
// Set display mode
libraryList.DisplayMode = DisplayMode;
libraryFiles.DisplayMode = DisplayMode;
libraryEdit.DisplayMode = DisplayMode;
librarySecurity.DisplayMode = DisplayMode;
// Initialize tabs & header actions
InitializeTabs();
InitializeHeaderActions();
tabElem.TabControlIdPrefix = "libraries";
tabElem.OnTabClicked += new EventHandler(tabElem_OnTabChanged);
lnkEditBack.Text = GetString("Group_General.MediaLibrary.BackToList");
lnkEditBack.Click += new EventHandler(lnkEditBack_Click);
libraryList.GroupID = GroupID;
libraryList.OnAction += new CommandEventHandler(libraryList_OnAction);
// Initialize library edit tab controls
libraryEdit.MediaLibraryID = LibraryID;
libraryEdit.MediaLibraryGroupID = GroupID;
libraryEdit.MediaLibraryGroupGUID = GroupGUID;
libraryEdit.OnSaved += new EventHandler(libraryEdit_OnSaved);
// Initialize library security tab controls
librarySecurity.MediaLibraryID = LibraryID;
// Initialize library files list tab controls
libraryFiles.LibraryID = LibraryID;
}
///
/// Initializes used tab menu control.
///
private void InitializeTabs()
{
string[,] tabs = new string[3,4];
tabs[0, 0] = GetString("general.files");
tabs[1, 0] = GetString("General.general");
tabs[2, 0] = GetString("general.security");
tabElem.Tabs = tabs;
}
///
/// Initializes the header action element.
///
private void InitializeHeaderActions()
{
// New subscription link
string[,] actions = new string[1,7];
actions[0, 0] = HeaderActions.TYPE_LINKBUTTON;
actions[0, 1] = GetString("Group_General.MediaLibrary.NewLibrary");
actions[0, 5] = GetImageUrl("CMSModules/CMS_MediaLibrary/add.png");
actions[0, 6] = "newmedialibrary";
newLibrary.Actions = actions;
newLibrary.ActionPerformed += new CommandEventHandler(newLibrary_ActionPerformed);
}
///
/// Initializes the breadcrumbs controls.
///
private void InitializeBreadcrumbs()
{
if (LibraryID > 0)
{
MediaLibraryInfo library = MediaLibraryInfoProvider.GetMediaLibraryInfo(LibraryID);
if (library != null)
{
lblEditBack.Text = " " + HTMLHelper.HTMLEncode(library.LibraryDisplayName);
}
}
else
{
lblEditBack.Text = " " + GetString("Group_General.MediaLibrary.NewLibrary");
}
}
///
/// Handles displaying of library edit form.
///
private void DisplayLibraryNew()
{
isNewLibrary = true;
plcTabsHeader.Visible = true;
pnlTabsMain.Visible = false;
plcHeaderActions.Visible = false;
plcList.Visible = false;
plcTabs.Visible = true;
tabEdit.Visible = true;
tabFiles.Visible = false;
tabSecurity.Visible = false;
libraryEdit.MediaLibraryID = LibraryID;
libraryEdit.MediaLibraryGroupID = GroupID;
libraryEdit.MediaLibraryGroupGUID = GroupGUID;
libraryEdit.ReloadData();
}
///
/// Handles displaying of library edit form.
///
private void DisplayLibraryEdit()
{
plcTabsHeader.Visible = true;
pnlTabsMain.Visible = true;
plcHeaderActions.Visible = false;
plcList.Visible = false;
plcTabs.Visible = true;
tabEdit.Visible = false;
tabFiles.Visible = true;
tabSecurity.Visible = false;
libraryFiles.LibraryID = LibraryID;
libraryFiles.ReloadData();
}
///
/// Displays default media library tab content.
///
private void SetDefault()
{
plcTabsHeader.Visible = false;
plcHeaderActions.Visible = true;
plcList.Visible = true;
plcTabs.Visible = false;
}
#endregion
#region "Event handlers"
protected void libraryList_OnAction(object sender, CommandEventArgs e)
{
string commandName = e.CommandName.ToLowerCSafe();
switch (commandName)
{
case "edit":
LibraryID = ValidationHelper.GetInteger(e.CommandArgument, 0);
plcTabs.Visible = true;
InitializeBreadcrumbs();
tabElem.SelectedTab = 0;
// Load library data
DisplayLibraryEdit();
break;
case "delete":
LibraryID = 0;
SetupControls();
break;
default:
break;
}
}
private void lnkEditBack_Click(object sender, EventArgs e)
{
libraryFiles.ShouldProcess = false;
SetDefault();
}
protected void libraryEdit_OnSaved(object sender, EventArgs e)
{
isNewLibrary = (LibraryID == 0);
LibraryID = libraryEdit.MediaLibraryID;
InitializeBreadcrumbs();
// If brand new library created
if (isNewLibrary)
{
// Reload library data
DisplayLibraryEdit();
}
}
protected void newLibrary_ActionPerformed(object sender, CommandEventArgs e)
{
libraryFiles.ShouldProcess = false;
// Clear the editing form
libraryEdit.ClearForm();
// Reset library info in view state and refresh breadcrumbs info
LibraryID = 0;
InitializeBreadcrumbs();
DisplayLibraryNew();
}
private void tabElem_OnTabChanged(object sender, EventArgs e)
{
plcList.Visible = false;
plcHeaderActions.Visible = false;
int tabIndex = tabElem.SelectedTab;
tabFiles.Visible = (tabIndex == 0);
if (tabFiles.Visible)
{
plcTabs.Visible = true;
libraryFiles.LibraryID = LibraryID;
libraryFiles.ReloadData();
}
libraryFiles.ShouldProcess = tabFiles.Visible;
tabEdit.Visible = (tabIndex == 1);
if (tabEdit.Visible)
{
libraryEdit.ReloadData();
}
tabSecurity.Visible = (tabIndex == 2);
}
#endregion
#region "IPostBackEventHandler Members"
public void RaisePostBackEvent(string eventArgument)
{
if (eventArgument.ToLowerCSafe() == "reloadtree")
{
libraryFiles.ReLoadUserControl();
}
}
#endregion
}