using System; using System.Collections; using System.Data; using System.Drawing; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace ASPNetPortal { public abstract class Tabs : ASPNetPortal.PortalModuleControl { protected System.Web.UI.WebControls.LinkButton addBtn; protected System.Web.UI.WebControls.ListBox tabList; protected System.Web.UI.WebControls.ImageButton upBtn; protected System.Web.UI.WebControls.ImageButton downBtn; protected System.Web.UI.WebControls.ImageButton editBtn; protected System.Web.UI.WebControls.ImageButton deleteBtn; int tabIndex = 0; int tabId = 0; protected ArrayList portalTabs; //******************************************************* // // The Page_Load server event handler on this user control is used // to populate the current tab settings from the database // //******************************************************* private void Page_Load(object sender, System.EventArgs e) { // Verify that the current user has access to access this page if (PortalSecurity.IsInRoles("Admins") == false) { Response.Redirect("~/Admin/EditAccessDenied.aspx"); } if (Request.Params["tabid"] != null) { tabId = Int32.Parse(Request.Params["tabid"]); } if (Request.Params["tabindex"] != null) { tabIndex = Int32.Parse(Request.Params["tabindex"]); } // Obtain PortalSettings from Current Context PortalSettings portalSettings = (PortalSettings) Context.Items["PortalSettings"]; portalTabs = new ArrayList(); foreach (TabStripDetails tab in portalSettings.DesktopTabs) { TabItem t = new TabItem(); t.TabName = tab.TabName; t.TabId = tab.TabId; t.TabOrder = tab.TabOrder; portalTabs.Add(t); } // Give the admin tab a big sort order number, to ensure it's // always at the end TabItem adminTab = (TabItem) portalTabs[portalTabs.Count-1]; adminTab.TabOrder=99999; // If this is the first visit to the page, bind the tab data to the page listbox if (Page.IsPostBack == false) { tabList.DataBind(); } } //******************************************************* // // The UpDown_Click server event handler on this page is // used to move a portal module up or down on a tab's layout pane // //******************************************************* private void UpDown_Click(Object sender, ImageClickEventArgs e) { String cmd = ((ImageButton)sender).CommandName; if (tabList.SelectedIndex != -1) { int delta; // Determine the delta to apply in the order number for the module // within the list. +3 moves down one item; -3 moves up one item if (cmd == "down") { delta = 3; } else { delta = -3; } TabItem t; t = (TabItem) portalTabs[tabList.SelectedIndex]; t.TabOrder += delta; // Reset the order numbers for the tabs within the portal OrderTabs(); // Redirect to this site to refresh Response.Redirect("~/DesktopDefault.aspx?tabindex=" + (portalTabs.Count-1).ToString() + "&tabid=" + tabId); } } //******************************************************* // // The DeleteBtn_Click server event handler is used to delete // the selected tab from the portal // //******************************************************* private void DeleteBtn_Click(Object sender, ImageClickEventArgs e) { if (tabList.SelectedIndex != -1) { // must delete from database too TabItem t = (TabItem) portalTabs[tabList.SelectedIndex]; AdminDB admin = new AdminDB(); admin.DeleteTab(t.TabId); // remove item from list portalTabs.RemoveAt(tabList.SelectedIndex); // reorder list OrderTabs(); // Redirect to this site to refresh Response.Redirect("~/DesktopDefault.aspx?tabindex=" + tabIndex + "&tabid=" + tabId); } } //******************************************************* // // The AddTab_Click server event handler is used to add // a new security tab for this portal // //******************************************************* private void AddTab_Click(Object Sender, EventArgs e) { // Obtain PortalSettings from Current Context PortalSettings portalSettings = (PortalSettings) Context.Items["PortalSettings"]; // New tabs go to the end of the list TabItem t = new TabItem(); t.TabName = "New Tab"; t.TabId = -1; t.TabOrder = 999; portalTabs.Add(t); // write tab to database AdminDB admin = new AdminDB(); t.TabId = admin.AddTab(portalSettings.PortalId, t.TabName, t.TabOrder); // Reset the order numbers for the tabs within the list OrderTabs(); // Redirect to edit page Response.Redirect("~/Admin/TabLayout.aspx?tabid=" + t.TabId); } //******************************************************* // // The EditBtn_Click server event handler is used to edit // the selected tab within the portal // //******************************************************* private void EditBtn_Click(Object sender, ImageClickEventArgs e) { // Redirect to edit page of currently selected tab if (tabList.SelectedIndex != -1) { // Redirect to module settings page TabItem t = (TabItem) portalTabs[tabList.SelectedIndex]; Response.Redirect("~/Admin/TabLayout.aspx?tabid=" + t.TabId); } } //******************************************************* // // The OrderTabs helper method is used to reset the display // order for tabs within the portal // //******************************************************* private void OrderTabs () { int i = 1; // sort the arraylist portalTabs.Sort(); // renumber the order and save to database foreach (TabItem t in portalTabs) { // number the items 1, 3, 5, etc. to provide an empty order // number when moving items up and down in the list. t.TabOrder = i; i += 2; // rewrite tab to database AdminDB admin = new AdminDB(); admin.UpdateTabOrder(t.TabId, t.TabOrder); } } public Tabs() { this.Init += new System.EventHandler(Page_Init); } private void Page_Init(object sender, EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); } #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.addBtn.Click += new System.EventHandler(this.AddTab_Click); this.upBtn.Click += new System.Web.UI.ImageClickEventHandler(this.UpDown_Click); this.downBtn.Click += new System.Web.UI.ImageClickEventHandler(this.UpDown_Click); this.editBtn.Click += new System.Web.UI.ImageClickEventHandler(this.EditBtn_Click); this.deleteBtn.Click += new System.Web.UI.ImageClickEventHandler(this.DeleteBtn_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion } }