using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.PortalEngine;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
public partial class CMSModules_PortalEngine_UI_PageTemplates_Scopes_PageTemplateScopes_List : CMSEditTemplatePage
{
#region "Variables"
private int siteID = 0;
#endregion
#region "Events"
///
/// Page load event.
///
protected void Page_Load(object sender, EventArgs e)
{
if (!CMSContext.CurrentUser.UserSiteManagerAdmin)
{
RedirectToAccessDenied(GetString("template.scopes.denied"));
}
// Master page settings
CurrentMaster.DisplaySiteSelectorPanel = true;
if (!RequestHelper.IsPostBack())
{
if (PageTemplate != null)
{
radAllPages.Checked = PageTemplate.PageTemplateForAllPages;
radSelectedScopes.Checked = !PageTemplate.PageTemplateForAllPages;
}
siteID = QueryHelper.GetInteger("siteid", 0);
if (siteID > 0)
{
selectSite.Value = siteID;
}
}
else
{
siteID = ValidationHelper.GetInteger(selectSite.Value, 0);
}
// Display only assigned sites
selectSite.UniSelector.WhereCondition = "SiteID IN (SELECT SiteID FROM CMS_PageTemplateSite WHERE PageTemplateID = " + PageTemplateID + ") OR SiteID IN (SELECT PageTemplateScopeSiteID FROM CMS_PageTemplateScope WHERE PageTemplateScopeTemplateID = " + PageTemplateID + ")";
// Show scopes content only if option template can be used within scopes is selected
if (radAllPages.Checked)
{
pnlContent.Visible = false;
CurrentMaster.DisplayControlsPanel = false;
}
else
{
CurrentMaster.DisplayControlsPanel = true;
pnlContent.Visible = true;
// New item link
string[,] actions = new string[1, 6];
actions[0, 0] = HeaderActions.TYPE_HYPERLINK;
actions[0, 1] = GetString("template.scopes.newscope");
actions[0, 2] = null;
actions[0, 3] = "javascript: AddNewItem()";
actions[0, 4] = null;
actions[0, 5] = GetImageUrl("Objects/CMS_PageTemplateScope/add.png");
CurrentMaster.HeaderActions.Actions = actions;
}
// Setup unigrid
unigridScopes.OnAction += new OnActionEventHandler(unigridScopes_OnAction);
unigridScopes.OnExternalDataBound += new OnExternalDataBoundEventHandler(unigridScopes_OnExternalDataBound);
unigridScopes.WhereCondition = GenerateWhereCondition();
unigridScopes.ZeroRowsText = GetString("general.nodatafound");
// Set site selector
selectSite.DropDownSingleSelect.AutoPostBack = true;
selectSite.AllowAll = false;
selectSite.OnlyRunningSites = false;
selectSite.UniSelector.SpecialFields = new string[1, 2] { { GetString("template.scopes.global"), "0" } };
selectSite.UniSelector.OnSelectionChanged += new EventHandler(UniSelector_OnSelectionChanged);
// Register correct script for new item
ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "AddNewItem", ScriptHelper.GetScript(
"function AddNewItem() { this.window.location = '" + ResolveUrl("PageTemplateScope_Edit.aspx?templateid=" + PageTemplateID + "&siteID=" + siteID) + "'} "));
}
///
/// On selection changed.
///
/// Sender
/// Arguments
private void UniSelector_OnSelectionChanged(object sender, EventArgs e)
{
pnlUpdate.Update();
}
///
/// On unigrids external databond.
///
/// Sender
/// Name
/// Parameter
private object unigridScopes_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
// Class name
case "documenttype":
int classID = ValidationHelper.GetInteger(parameter, 0);
DataClassInfo dataClass = DataClassInfoProvider.GetDataClass(classID);
if (dataClass != null)
{
return dataClass.ClassDisplayName;
}
else
{
return GetString("general.all");
}
// Culture
case "culture":
int cultureID = ValidationHelper.GetInteger(parameter, 0);
if (cultureID > 0)
{
CultureInfo culture = CultureInfoProvider.GetCultureInfo(cultureID);
if (culture != null)
{
return culture.CultureCode;
}
}
return GetString("general.all");
// Levels
case "levels":
string levels = ValidationHelper.GetString(parameter, String.Empty);
if (string.IsNullOrEmpty(levels))
{
return GetString("general.all");
}
// Format levels
levels = levels.Replace("/", String.Empty).Replace("{", " ").Replace("}", ",");
return levels.TrimEnd(',');
}
return null;
}
///
/// Unigrid on action.
///
/// Action name
/// Argument
private void unigridScopes_OnAction(string actionName, object actionArgument)
{
switch (actionName.ToLowerCSafe())
{
case "edit":
URLHelper.Redirect("PageTemplateScope_Edit.aspx?scopeid=" + ValidationHelper.GetString(actionArgument, "0") + "&templateid=" + PageTemplateID + "&siteID=" + siteID);
break;
case "delete":
PageTemplateScopeInfoProvider.DeletePageTemplateScopeInfo(ValidationHelper.GetInteger(actionArgument, 0));
break;
}
}
///
/// Radiobutton checked changed.
///
/// Sender
/// Arguments
protected void radAllPages_CheckedChanged(object sender, EventArgs e)
{
UpdatePageTemplateInfo();
}
///
/// Radiobutton checked changed.
///
/// Sender
/// Arguments
protected void radSelectedScopes_CheckedChanged(object sender, EventArgs e)
{
UpdatePageTemplateInfo();
}
///
/// Updates PageTemplateForAllPages property of template info.
///
private void UpdatePageTemplateInfo()
{
if (PageTemplate != null)
{
PageTemplate.PageTemplateForAllPages = radAllPages.Checked;
PageTemplateInfoProvider.SetPageTemplateInfo(PageTemplate);
}
ShowChangesSaved();
}
///
/// Generates where condition for unigrid.
///
private string GenerateWhereCondition()
{
string where = "PageTemplateScopeTemplateID=" + PageTemplateID + "AND PageTemplateScopeSiteID";
if (siteID > 0)
{
return where + " = " + siteID;
}
else
{
return where + " IS NULL";
}
}
#endregion
}