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 }