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
}
}