using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Web.UI.MobileControls; using System.Data.SqlClient; namespace ASPNetPortal { public class MobileDefault : System.Web.UI.MobileControls.MobilePage { protected System.Web.UI.MobileControls.Label Label1; protected ASPNetPortal.MobileControls.TabbedPanel TabView; protected System.Web.UI.MobileControls.Form Form1; protected System.Web.UI.MobileControls.DeviceSpecific DeviceSpecific1; public MobileDefault() { Page.Init += new System.EventHandler(Page_Init); } ArrayList authorizedTabs = new ArrayList(); //********************************************************************* // // Page_Init Event Handler // // The Page_Init event handler executes at the very beginning of each page // request (immediately before Page_Load). // // The Page_Init event handler calls the PopulateTabs utility method // to insert empty tabs into the tab view. It then determines the tab // index of the currently requested portal, and then calls the // PopulateTabView utility method to dynamically populate the // active portal view. // //********************************************************************* private void Page_Init(object sender, EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); int tabIndex = 0; int tabID = 0; // Obtain current tab index and tab id settings String tabSetting = (String)HiddenVariables["ti"]; if (tabSetting != null) { int comma = tabSetting.IndexOf(','); tabIndex = Int32.Parse(tabSetting.Substring(0, comma)); tabID = Int32.Parse(tabSetting.Substring(comma + 1)); } // Obtain PortalSettings from Current Context LoadPortalSettings(tabIndex, tabID); // Populate tab list with empty tabs PopulateTabStrip(); // Populate the current tab view PopulateTabView(tabIndex); } //********************************************************************* // // PopulateTabStrip method // // The PopulateTabStrip method is used to dynamically create and add // tabs for each tab view defined in the portal configuration. // //********************************************************************* private void PopulateTabStrip() { // Obtain PortalSettings from Current Context PortalSettings portalSettings = (PortalSettings) HttpContext.Current.Items["PortalSettings"]; for (int i=0;i < portalSettings.MobileTabs.Count; i++) { // Create a MobilePortalTab control for the tab, // and add it to the tab view. TabStripDetails tab = (TabStripDetails)portalSettings.MobileTabs[i]; if (PortalSecurity.IsInRoles(tab.AuthorizedRoles)) { MobilePortalTab tabPanel = new MobilePortalTab(); tabPanel.Title = tab.TabName; TabView.Panes.Add(tabPanel); } } } //********************************************************************* // // PopulateTabView method // // The PopulateTabView method dynamically populates a portal tab // with each module defined in the portal configuration. // //********************************************************************* private void PopulateTabView(int tabIndex) { // Obtain PortalSettings from Current Context PortalSettings portalSettings = (PortalSettings) HttpContext.Current.Items["PortalSettings"]; // Ensure that the visiting user has access to the current page if (PortalSecurity.IsInRoles(portalSettings.ActiveTab.AuthorizedRoles) == false) { Response.Redirect("~/Admin/MobileAccessDenied.aspx"); } // Obtain reference to container mobile tab MobilePortalTab view = (MobilePortalTab) TabView.Panes[tabIndex]; // Dynamically populate the view if (portalSettings.ActiveTab.Modules.Count > 0) { // Loop through each entry in the configuration system for this tab foreach (ModuleSettings _moduleSettings in portalSettings.ActiveTab.Modules) { // Only add the module if it support Mobile devices if (_moduleSettings.ShowMobile) { MobilePortalModuleControl moduleControl = (MobilePortalModuleControl) Page.LoadControl(_moduleSettings.MobileSrc); moduleControl.ModuleConfiguration = _moduleSettings; view.Panes.Add(moduleControl); } } } } //********************************************************************* // // TabView_OnActivate Event Handler // // The TabView_OnActivate event handler executes when the user switches // tabs in the tab view. It calls the PopulateTabView utility // method to dynamically populate the newly activated view. // //********************************************************************* private void TabView_OnTabActivate(Object sender, EventArgs e) { // Obtain PortalSettings from Current Context PortalSettings portalSettings = (PortalSettings) HttpContext.Current.Items["PortalSettings"]; int tabIndex = TabView.ActivePaneIndex; int tabID = ((TabStripDetails) portalSettings.MobileTabs[tabIndex]).TabId; // Store tabindex in a hidden variable to preserve accross round trips if (tabIndex != 0) { HiddenVariables["ti"] = String.Concat(tabIndex.ToString(), ",", tabID.ToString()); } else { HiddenVariables.Remove("ti"); } // Check to see if portal settings need reloading LoadPortalSettings(tabIndex, tabID); // Populate the newly active tab. PopulateTabView(tabIndex); // Set the view to summary mode, where a summary of all the modules are shown. ((MobilePortalTab)TabView.ActivePane).SummaryView = true; } //********************************************************************* // // LoadPortalSettings method // // LoadPortalSettings is a helper methods that loads portal settings for // the selected tab. It first verifies that the settings haven't already // been set within the Global.asax file -- if they are different (in the // case that a tab change is made) then the method reloads the appropriate // tab data. // //********************************************************************* private void LoadPortalSettings(int tabIndex, int tabId) { // Obtain PortalSettings from Current Context PortalSettings portalSettings = (PortalSettings) HttpContext.Current.Items["PortalSettings"]; if ((portalSettings.ActiveTab.TabId != tabId) || (portalSettings.ActiveTab.TabIndex != tabIndex)) { HttpContext.Current.Items["PortalSettings"] = new PortalSettings(tabIndex, tabId); } } #region Web Form Designer generated code ////// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.TabView.TabActivate += new System.EventHandler(this.TabView_OnTabActivate); } #endregion } }