using System;
using System.Text;
using System.Web;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
using TreeNode = CMS.DocumentEngine.TreeNode;
public partial class CMSModules_Content_Controls_SplitView_Documents_DocumentToolbar : CMSUserControl
{
#region "Variables"
private string mHorizintalImageUrl = "Design/Controls/SplitView/splitviewhorizontal.png";
private string mVerticalImageUrl = "Design/Controls/SplitView/splitviewvertical.png";
private string mCloseImageUrl = "Design/Controls/SplitView/splitviewclose.png";
private string mSyncCheckedImageUrl = "Design/Controls/SplitView/synccheck.png";
private string mSyncUncheckedImageUrl = "Design/Controls/SplitView/syncuncheck.png";
private string buttonClass = "Button";
private string buttonSelectedClass = "Button Selected";
#endregion
#region "Properties"
///
/// Horizontal image URL.
///
public string HorizontalImageUrl
{
get
{
return mHorizintalImageUrl;
}
set
{
mHorizintalImageUrl = value;
}
}
///
/// Vertical image URL.
///
public string VerticalImageUrl
{
get
{
return mVerticalImageUrl;
}
set
{
mVerticalImageUrl = value;
}
}
///
/// Close image URL.
///
public string CloseImageUrl
{
get
{
return mCloseImageUrl;
}
set
{
mCloseImageUrl = value;
}
}
///
/// Node to work with.
///
public TreeNode Node
{
get;
set;
}
#endregion
#region "Methods"
protected void Page_Load(object sender, EventArgs e)
{
if (!RequestHelper.IsPostBack())
{
string preferredCultureCode = CMSContext.PreferredCultureCode;
string currentSiteName = CMSContext.CurrentSiteName;
string where = "CultureCode IN (SELECT DocumentCulture FROM View_CMS_Tree_Joined WHERE NodeID = " + Node.NodeID + ")";
DataSet documentCultures = CultureInfoProvider.GetCultures(where, null, 0, "CultureCode");
// Get site cultures
DataSet siteCultures = CultureInfoProvider.GetSiteCultures(currentSiteName);
if (!DataHelper.DataSourceIsEmpty(siteCultures) && !DataHelper.DataSourceIsEmpty(documentCultures))
{
string suffixNotTranslated = GetString("SplitMode.NotTranslated");
foreach (DataRow row in siteCultures.Tables[0].Rows)
{
string cultureCode = ValidationHelper.GetString(row["CultureCode"], null);
string cultureName = ResHelper.LocalizeString(ValidationHelper.GetString(row["CultureName"], null));
string suffix = string.Empty;
// Compare with preferred culture
if (CMSString.Compare(preferredCultureCode, cultureCode, true) == 0)
{
suffix = GetString("SplitMode.Current");
}
else
{
// Find culture
DataRow[] findRows = documentCultures.Tables[0].Select("CultureCode = '" + cultureCode + "'");
if (findRows.Length == 0)
{
suffix = suffixNotTranslated;
}
}
// Add new item
ListItem item = new ListItem(cultureName + " " + suffix, cultureCode);
drpCultures.Items.Add(item);
}
}
drpCultures.SelectedValue = CMSContext.SplitModeCultureCode;
drpCultures.Attributes.Add("onchange", "if (parent.CheckChanges('frame2')) { parent.FSP_ChangeCulture(this); }");
}
// Image URL and tooltip
helpElem.IconUrl = GetImageUrl("Design/Controls/SplitView/splitviewhelpicon.png");
imgHorizontal.ImageUrl = UIHelper.GetImageUrl(Page, HorizontalImageUrl);
imgVertical.ImageUrl = UIHelper.GetImageUrl(Page, VerticalImageUrl);
imgClose.ImageUrl = UIHelper.GetImageUrl(Page, CloseImageUrl);
imgHorizontal.ToolTip = GetString("splitmode.horizontallayout");
imgVertical.ToolTip = GetString("splitmode.verticallayout");
imgClose.ToolTip = GetString("splitmode.closesplitmode");
// Set css class
switch (CMSContext.SplitMode)
{
case SplitModeEnum.Horizontal:
divHorizontal.Attributes["class"] = buttonSelectedClass;
divVertical.Attributes["class"] = buttonClass;
break;
case SplitModeEnum.Vertical:
divHorizontal.Attributes["class"] = buttonClass;
divVertical.Attributes["class"] = buttonSelectedClass;
break;
default:
divHorizontal.Attributes["class"] = buttonClass;
divVertical.Attributes["class"] = buttonClass;
break;
}
string checkedSyncUrl = UIHelper.GetImageUrl(Page, mSyncCheckedImageUrl);
string uncheckedSyncUrl = UIHelper.GetImageUrl(Page, mSyncUncheckedImageUrl);
// Synchronize image
string tooltip = GetString("splitmode.scrollbarsynchronization");
imgSync.AlternateText = tooltip;
imgSync.ToolTip = tooltip;
imgSync.ImageUrl = CMSContext.SplitModeSyncScrollbars ? checkedSyncUrl : uncheckedSyncUrl;
StringBuilder script = new StringBuilder();
script.Append(@"
function FSP_Layout(vertical, frameName, cssClassName)
{
if ((frameName != null) && parent.CheckChanges(frameName)) {
if (cssClassName != null) {
var element = document.getElementById('", pnlMain.ClientID, @"');
if (element != null) {
element.setAttribute(""class"", 'SplitToolbar ' + cssClassName);
element.setAttribute(""className"", 'SplitToolbar ' + cssClassName);
}
}
var divRight = document.getElementById('", divRight.ClientID, @"');
if (vertical) {
divRight.setAttribute(""class"", 'RightAlign');
parent.FSP_VerticalLayout();
}
else {
divRight.setAttribute(""class"", '');
parent.FSP_HorizontalLayout();
}
}
}");
script.Append(@"
function FSP_Close() { if (parent.CheckChanges()) { parent.FSP_CloseSplitMode(); } }"
);
ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "toolbarScript_" + ClientID, ScriptHelper.GetScript(script.ToString()));
// Register js events
imgHorizontal.Attributes.Add("onclick", "javascript:FSP_Layout(false,'frame1Vertical','Horizontal');");
imgHorizontal.AlternateText = GetString("SplitMode.Horizontal");
imgVertical.Attributes.Add("onclick", "javascript:FSP_Layout('true','frame1','Vertical');");
imgVertical.AlternateText = GetString("SplitMode.Vertical");
imgClose.Attributes.Add("onclick", "javascript:FSP_Close();");
imgSync.Attributes.Add("onclick", "javascript:parent.FSP_SynchronizeToolbar()");
imgClose.Style.Add("cursor", "pointer");
// Set layout
if (CMSContext.SplitMode == SplitModeEnum.Horizontal)
{
pnlMain.CssClass = "SplitToolbar Horizontal";
divRight.Attributes["class"] = null;
}
else if (CMSContext.SplitMode == SplitModeEnum.Vertical)
{
pnlMain.CssClass = "SplitToolbar Vertical";
}
// Register Init script - FSP_ToolbarInit(selectorId, checkboxId)
StringBuilder initScript = new StringBuilder();
initScript.Append("parent.FSP_ToolbarInit('", drpCultures.ClientID, "','", imgSync.ClientID, "','", checkedSyncUrl, "','", uncheckedSyncUrl,
"','", divHorizontal.ClientID, "','", divVertical.ClientID, "');");
// Register js scripts
ScriptHelper.RegisterJQuery(Page);
ScriptHelper.RegisterStartupScript(Page, typeof(string), "FSP_initToolbar", ScriptHelper.GetScript(initScript.ToString()));
}
#endregion
}