/CMSModules/Content/Controls/LanguageMenu.ascx.cs

https://bitbucket.org/kudutest/kenticogit · C# · 148 lines · 115 code · 27 blank · 6 comment · 17 complexity · 5fc09afeea75be9baf69b09a3e06c3af MD5 · raw file

  1. using System;
  2. using System.Data;
  3. using System.Web.UI;
  4. using System.Web.UI.WebControls;
  5. using CMS.CMSHelper;
  6. using CMS.GlobalHelper;
  7. using CMS.SiteProvider;
  8. using CMS.UIControls;
  9. public partial class CMSModules_Content_Controls_LanguageMenu : CMSUserControl
  10. {
  11. #region "Variables"
  12. protected string currentUserPreferredCultureCode = null;
  13. protected string currentSiteName = null;
  14. #endregion
  15. #region "Page events"
  16. protected void Page_Load(object sender, EventArgs e)
  17. {
  18. currentUserPreferredCultureCode = CMSContext.CurrentUser.PreferredCultureCode;
  19. currentSiteName = CMSContext.CurrentSiteName;
  20. DataSet siteCulturesDS = CultureInfoProvider.GetSiteCultures(currentSiteName);
  21. if (!DataHelper.DataSourceIsEmpty(siteCulturesDS))
  22. {
  23. // Register jQuery cookie script
  24. ScriptHelper.RegisterJQueryCookie(Page);
  25. string defaultCulture = CultureHelper.GetDefaultCulture(currentSiteName);
  26. DataTable siteCultures = siteCulturesDS.Tables[0];
  27. int culturesCount = siteCultures.Rows.Count;
  28. if ((culturesCount <= 3) && (culturesCount > 1))
  29. {
  30. // Disable culture uniselector
  31. cultureSelector.StopProcessing = true;
  32. pnlLang.Visible = false;
  33. string[,] bigButtons = new string[culturesCount, 9];
  34. for (int i = 0; i < culturesCount; i++)
  35. {
  36. string cultureCode = siteCultures.Rows[i]["CultureCode"].ToString();
  37. string cultureShortName = siteCultures.Rows[i]["CultureShortName"].ToString();
  38. string cultureLongName = ResHelper.LocalizeString(siteCultures.Rows[i]["CultureName"].ToString());
  39. if (string.Compare(cultureCode, defaultCulture, true) == 0)
  40. {
  41. cultureLongName += " " + GetString("general.defaultchoice");
  42. }
  43. bigButtons[i, 0] = HTMLHelper.HTMLEncode(cultureShortName);
  44. bigButtons[i, 1] = cultureLongName;
  45. bigButtons[i, 2] = "BigButton";
  46. bigButtons[i, 3] = "ChangeLanguageByCode('" + cultureCode + "')";
  47. bigButtons[i, 4] = null;
  48. bigButtons[i, 5] = GetFlagIconUrl(cultureCode, "48x48");
  49. bigButtons[i, 6] = cultureLongName;
  50. bigButtons[i, 7] = ImageAlign.Top.ToString();
  51. bigButtons[i, 8] = "48";
  52. if (currentUserPreferredCultureCode.ToLower() == cultureCode.ToLower())
  53. {
  54. buttons.SelectedIndex = i;
  55. }
  56. }
  57. buttons.Buttons = bigButtons;
  58. }
  59. else
  60. {
  61. // Do not show culture selection buttons
  62. buttons.StopProcessing = true;
  63. // Initialize culture selector
  64. cultureSelector.AddDefaultRecord = false;
  65. cultureSelector.SiteID = CMSContext.CurrentSiteID;
  66. cultureSelector.DropDownCultures.CssClass = "ContentMenuLangDrop";
  67. cultureSelector.UpdatePanel.RenderMode = UpdatePanelRenderMode.Inline;
  68. cultureSelector.DropDownCultures.AutoPostBack = true;
  69. cultureSelector.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged;
  70. if (!URLHelper.IsPostback())
  71. {
  72. cultureSelector.Value = currentUserPreferredCultureCode;
  73. }
  74. }
  75. string compare = GetString("SplitMode.Compare");
  76. // Split mode button
  77. string[,] splitButton = new string[1, 9];
  78. splitButton[0, 0] = compare;
  79. splitButton[0, 1] = GetString("SplitMode.CompareLangVersions");
  80. splitButton[0, 2] = "BigButton";
  81. splitButton[0, 3] = "ChangeSplitMode()";
  82. splitButton[0, 4] = null;
  83. splitButton[0, 5] = GetImageUrl("CMSModules/CMS_Content/Menu/Compare.png");
  84. splitButton[0, 6] = compare;
  85. splitButton[0, 7] = ImageAlign.Top.ToString();
  86. splitButton[0, 8] = "48";
  87. splitView.Buttons = splitButton;
  88. splitView.SelectedIndex = CMSContext.DisplaySplitMode ? 0 : -1;
  89. }
  90. }
  91. protected override void OnPreRender(EventArgs e)
  92. {
  93. base.OnPreRender(e);
  94. // Hide Culture selector if there is only one culture or don't have license for multiple languages
  95. if ((cultureSelector.UniSelector.HasData && (cultureSelector.DropDownCultures.Items.Count < 2)) ||
  96. !CultureInfoProvider.LicenseVersionCheck())
  97. {
  98. Control languageMenu = pnlLang.Parent;
  99. if (languageMenu != null)
  100. {
  101. Control contentPanel = languageMenu.Parent;
  102. if (contentPanel != null)
  103. {
  104. Control groupPanel = contentPanel.Parent;
  105. if (groupPanel != null)
  106. {
  107. groupPanel.Visible = false;
  108. }
  109. }
  110. }
  111. }
  112. }
  113. #endregion
  114. #region "Selector events"
  115. protected void UniSelector_OnSelectionChanged(object sender, EventArgs e)
  116. {
  117. CMSContext.CurrentUser.PreferredCultureCode = ValidationHelper.GetString(cultureSelector.Value, string.Empty);
  118. ScriptHelper.RegisterStartupScript(Page, typeof(string), "ChangeCultureRefresh", ScriptHelper.GetScript("ChangeLanguage(document.getElementById('" + cultureSelector.DropDownCultures.ClientID + "'));"));
  119. }
  120. #endregion
  121. }