protected void Page_Load(object sender, System.EventArgs e)
        {
            PortalDefinition.Tab currentTab = PortalDefinition.GetCurrentTab();
            if (currentTab == null || currentTab.tabs == null)
            {
                return;
            }

            ArrayList tabList = new ArrayList();

            foreach (PortalDefinition.Tab t in currentTab.tabs)
            {
                ChannelUsers objUser = new ChannelUsers();
                if (objUser.HasViewRights(Page.User, t.roles))
                {
                    DisplayTabItem dt = new DisplayTabItem();
                    tabList.Add(dt);

                    dt.m_Text = t.title;
                    dt.m_URL  = "../../" + Portal.API.Config.GetTabURL(t.reference);
                }
            }
            Tabs.DataSource = tabList;
            Tabs.DataBind();
        }
示例#2
0
        /// <summary>
        /// Nạp chồng Thủ tục khởi tạo các điều khiển con
        /// </summary>
        override protected void CreateChildControls()
        {
            // Lấy thông tin Tab hiện thời
            PortalDefinition.Tab tab = PortalDefinition.GetCurrentTab();
            if (tab == null)
            {
                return;
            }

            // Kiểm tra quyền của người sử dụng
            ChannelUsers objuser = new ChannelUsers();

            // Edit by Tqdat
            // Xu ly viec khong de Session Timeout la BienTapvien out ra khoi fan Admin
            //  - Neu bi Session TimeOut thi kiem tra xem Cookie co ton tai User va Pass hay ko
            //      + Neu Co thi Login lai de lay lai session
            //      + Neu Khong thi Redirect ra trang login.aspx

            //bool isHasViewRights = objuser.HasViewRights(Page.User, tab.roles);

            /*if (isHasViewRights == false)
             * {
             *  // Kiem tra xem co Cookie hay ko
             *  HttpCookie cookie = Request.Cookies["PortalUser"];
             *  if (cookie != null)
             *  {
             *      objuser.Login(cookie.Values["AC"].Trim(), cookie.Values["PW"].Trim());
             *      isHasViewRights = true;
             *  }
             * }*/

            if (objuser.HasViewRights(Page.User, tab.roles))
            {
                RenderColumns(tab, tab.Columns, DisplayRegion);
                if (IsAdmin)
                {
                    // Hiển thị vùng trắng của các cột rỗng
                    foreach (HtmlTableCell _objEmptyColumn in _arrAllEmptyColumn)
                    {
                        LiteralControl _ltrSpace = new LiteralControl();
                        _ltrSpace.Text = "&nbsp;";
                        _objEmptyColumn.Controls.Add(_ltrSpace);
                    }
                }
            }
            else
            {
                Cache  cache           = new Cache(HttpContext.Current.Application);
                string path            = HttpContext.Current.Request.Url.AbsolutePath.ToLower();
                string _strCacheKey    = Config.GetPortalUniqueCacheKey() + path + "_" + HttpContext.Current.User.Identity.Name;
                string _strCacheRawKey = Config.GetPortalUniqueCacheKey() + "_Raw" + HttpContext.Current.Request.RawUrl + "_" + HttpContext.Current.User.Identity.Name;
                cache[_strCacheKey]    = null;
                cache[_strCacheRawKey] = null;

                Session["NotPermission"] = "True";
                Session["lastPath"]      = HttpContext.Current.Request.RawUrl;
                Response.Redirect("/login.aspx");
            }
        }
        /// <summary>
        /// Nạp chồng Thủ tục khởi tạo các điều khiển con
        /// </summary>
        override protected void CreateChildControls()
        {
            // Lấy thông tin Tab hiện thời
            PortalDefinition.Tab tab = PortalDefinition.GetCurrentTab();
            if (tab == null)
            {
                return;
            }

            // Kiểm tra quyền của người sử dụng
            ChannelUsers objuser = new ChannelUsers();


            if (objuser.HasViewRights(Page.User, tab.roles))
            {
                // Tiến hành sinh mã cho các cột của Tab
                // Vùng bắt đầu là DisplayRegion.
                RenderColumns(tab, tab.Columns, DisplayRegion);
            }
            else
            {
                // Add by tqdat
                Cache  cache           = new Cache(HttpContext.Current.Application);
                string path            = HttpContext.Current.Request.Url.AbsolutePath.ToLower();
                string _strCacheKey    = Config.GetPortalUniqueCacheKey() + path + "_" + HttpContext.Current.User.Identity.Name;
                string _strCacheRawKey = Config.GetPortalUniqueCacheKey() + "_Raw" + HttpContext.Current.Request.RawUrl + "_" + HttpContext.Current.User.Identity.Name;
                cache[_strCacheKey]    = null;
                cache[_strCacheRawKey] = null;
                Session["lastPath"]    = HttpContext.Current.Request.RawUrl;


                // Neu khong duoc fep access vao hoac Mat Session thi redirect ve trang Login

                Response.Redirect("/login.aspx");
            }
        }
        /// <summary>
        /// Thủ tục khởi tạo Module và chèn Module vào cột đã định.
        /// </summary>
        /// <param name="td">Ô (hay cột) chứa Module</param>
        /// <param name="tab">Tab chứa Module (cần để lấy thêm thông tin về Tab)</param>
        /// <param name="modules">Danh sách Module đã được định nghĩa thuộc cột này</param>
        private void RenderModules(HtmlTableCell td, PortalDefinition.Tab tab, ArrayList modules)
        {
            //if (Request.HttpMethod == "GET")
            //{
            #region Khi phuong thuc lay la get
            // Kiểm tra nếu không có Module nào trong cột thì chèn khoảng trắng để lưu vị trí cột
            if (modules.Count == 0)
            {
                _arrAllEmptyColumn.Add(td);
            }
            // Duyệt danh sách Module
            for (int _intModuleCount = 0; _intModuleCount < modules.Count; _intModuleCount++)
            {
                PortalDefinition.Module _objModuleDefinition = modules[_intModuleCount] as PortalDefinition.Module;
                ChannelUsers            objUser = new ChannelUsers();

                // Kiểm tra người dùng có quyền hiển thị Module hay không
                if (objUser.HasViewRights(Page.User, _objModuleDefinition.roles))
                {
                    // Nạp các thông số về Module
                    _objModuleDefinition.LoadModuleSettings();

                    // Khởi tạo Module
                    Module       _objModuleControl       = null;
                    CachedModule _objCachedModuleControl = null;
                    //try
                    //{
                    // Kiểm tra xem có thông số nào được xác lập không
                    // Xây dựng chuỗi đường dẫn đến tệp ASCX
                    string _strModuleSrc = Config.GetModuleVirtualPath(_objModuleDefinition.type);
                    if (_objModuleDefinition.moduleSettings == null)
                    {
                        //_objModuleDefinition.LoadRuntimeProperties();
                        //string strAjax=_objModuleDefinition.moduleRuntimeSettings.GetRuntimePropertyValue(true, "isAjax");
                        ////Xu ly truong hop co ajax request den ca trang. Neu Module k co Ajax thi k load
                        //if ((strAjax == "false" || strAjax =="")&& Request.HttpMethod =="POST")
                        //    continue;
                        string[] strModulePath = _objModuleDefinition.type.Split("/".ToCharArray());
                        string   strModule;
                        if (strModulePath.Length == 2)
                        {
                            strModule = strModulePath[1];
                        }
                        else
                        {
                            strModule = strModulePath[0];
                        }
                        _strModuleSrc += strModule + ".ascx";
                    }
                    else
                    {
                        _strModuleSrc += _objModuleDefinition.moduleSettings.ctrl;
                    }
                    #region phan bo di

                    // Kiểm tra xem Module có được phép hiển thị hay không
                    //if((_objModuleControl != null && _objModuleControl.IsVisible() || (_objCachedModuleControl != null && _objCachedModuleControl.IsVisible())))
                    {
                        #endregion
                        // Kiểm tra xem trang hiện thời có nằm trong trạng thái cho phép kéo thả hay không
                        // Nếu ở trạng thái hỗ trợ kéo thả thì tạo các khung chứa (Snap) để chứa nội dung của các Module
                        // (nội dung này sẽ được nạp sử dụng Ajax khi người sử dụng mở rộng khung hoặc chế độ tự động mở rộng khung dc bật)
                        if (IsAdmin)
                        {
                            #region Xu ly voi cac module quan tri
                            // Khởi tạo phần tiêu đề của khung chứa Module (Khởi tạo 2 Control để tránh trùng lặp ID)
                            // Header khi chưa thu gọn
                            ModuleHeader _objModuleHeaderExpanded = (ModuleHeader)LoadControl("ModuleHeader.ascx");
                            _objModuleHeaderExpanded.SetModuleConfig(_objModuleDefinition);
                            // Header khi đã thu gọn
                            ModuleHeader _objModuleHeaderCollapsed = (ModuleHeader)LoadControl("ModuleHeader.ascx");
                            _objModuleHeaderCollapsed.SetModuleConfig(_objModuleDefinition);

                            // Sử dụng Snap Component để chứa Module và hỗ trợ khả năng kéo thả
                            // Khởi tạo Khung hiển thị của Module (Make Snap Instance)
                            Snap _objSnap = new Snap();
                            _objSnap.ClientSideCookieEnabled = false;                                      // Không lưu trữ Cookie khi thay đổi Snap
                            _objSnap.DraggingStyle           = SnapDraggingStyleType.TransparentRectangle; // Kiểu kéo khung, hiển thị 1 hình chữ nhật xám khi kéo khung
                            _objSnap.DockingStyle            = SnapDockingStyleType.TransparentRectangle;  // Kiểu thả khung, hiển thị 1 hình chữ nhật xám tại nơi sẽ đặt
                            _objSnap.ResizingMode            = SnapResizingType.Horizontal;                // Thay đổi kích thước tùy vào vùng đặt khung (đổi theo chiều ngang)
                            _objSnap.MustBeDocked            = true;                                       // Khung chứa Module phải được gắn vào 1 vị trí cụ thể
                            _objSnap.ID = _objModuleDefinition.reference.Replace('-', '_');                // Thiết lập mã tham chiếu cho khung (cần đổi - thành _)
                            _objSnap.CurrentDockingIndex = _intModuleCount;                                // Thứ tự đặt khung hiển thị
                            _objSnap.CollapseDuration    = 0;
                            _objSnap.CollapseSlide       = SlideType.None;
                            _objSnap.CollapseTransition  = TransitionType.None;
                            _objSnap.ExpandDuration      = 0;
                            _objSnap.ExpandSlide         = SlideType.None;
                            _objSnap.ExpandTransition    = TransitionType.None;
                            _objSnap.IsCollapsed         = true;
                            _objSnap.Width = Unit.Percentage(100);

                            // Khai báo mã tham chiếu của các vùng có thể đặt Module
                            _objSnap.DockingContainers = _strContainerList;

                            // Xác lập mã tham thiếu của vùng đặt hiện thời
                            _objSnap.CurrentDockingContainer = td.Attributes["ID"].ToString();

                            string _strNewsRef = Request.QueryString["NewsRef"] == null ? "" : Request.QueryString["NewsRef"];

                            // Khai báo mẫu sử dụng của khung chứa Module
                            // Mẫu phần trên của khung
                            ModuleContainerTemplate _objHeaderTemplate = new ModuleContainerTemplate(ListItemType.Header, tab.reference, _objModuleDefinition.reference, _strNewsRef);
                            _objHeaderTemplate.HeaderContent     = _objModuleDefinition.title;
                            _objHeaderTemplate.EditModuleControl = _objModuleHeaderExpanded;
                            // Lưu tham chiếu đến điều khiển chứa mã tham chiếu của Khung tại máy trạm
                            _arrAllSnapHeaderDrag.Add(_objHeaderTemplate._renderClientIDOfControlForDrag);
                            _arrAllSnapHeaderExpand.Add(_objHeaderTemplate._renderClientIDOfControlForExpand);

                            // Mẫu chứa phần trên của khung khi thu gọn
                            ModuleContainerTemplate _objCollapsedHeaderTemplate = new ModuleContainerTemplate(ListItemType.EditItem, tab.reference, _objModuleDefinition.reference, _strNewsRef);
                            _objCollapsedHeaderTemplate.HeaderContent     = _objModuleDefinition.title;
                            _objCollapsedHeaderTemplate.EditModuleControl = _objModuleHeaderCollapsed;
                            // Lưu tham chiếu đến điều khiển chứa mã tham chiếu của Khung tại máy trạm
                            _arrAllSnapHeaderCollapsedDrag.Add(_objCollapsedHeaderTemplate._renderClientIDOfCollapsedControlForDrag);
                            _arrAllSnapHeaderCollapsedExpand.Add(_objCollapsedHeaderTemplate._renderClientIDOfCollapsedControlForExpand);

                            // Mẫu của phần giữa khung
                            ModuleContainerTemplate _objContentTemplate = new ModuleContainerTemplate(ListItemType.Item, tab.reference, _objModuleDefinition.reference, _strNewsRef);
                            Literal lh = new Literal();
                            lh.Text            = "";
                            lh.EnableViewState = false;
                            _objContentTemplate.ChildControl = lh;

                            // Mẫu phần dưới của khung
                            ModuleContainerTemplate _objFooterTemplate = new ModuleContainerTemplate(ListItemType.Footer);

                            // Đặt mẫu vào các vị trí tương ứng của khung
                            _objSnap.HeaderTemplate          = _objHeaderTemplate;
                            _objSnap.CollapsedHeaderTemplate = _objCollapsedHeaderTemplate;
                            _objSnap.ContentTemplate         = _objContentTemplate;
                            _objSnap.FooterTemplate          = _objFooterTemplate;

                            // Display Module
                            td.Controls.Add(_objSnap);

                            // Lưu tham chiếu đến khung để lấy mã tham chiếu tại máy trạm
                            _arrAllSnap.Add(_objSnap);
                            #endregion
                        }
                        else
                        {
                            if (_objModuleDefinition.CacheTime <= 0)
                            {
                                // Nếu Module không sử dụng Cache
                                _objModuleControl = (Module)LoadModule(_strModuleSrc);

                                // Khởi tạo nội dung Module
                                _objModuleControl.InitModule(tab.reference,
                                                             _objModuleDefinition.reference,
                                                             _objModuleDefinition.type,
                                                             Config.GetModuleVirtualPath(_objModuleDefinition.type),
                                                             true);
                            }
                            else
                            {
                                // Nếu Module có sử dụng Cache
                                _objCachedModuleControl = new CachedModule();
                                _objCachedModuleControl.ModuleCacheTime = _objModuleDefinition.CacheTime;

                                // Khởi tạo nội dung Module
                                _objCachedModuleControl.InitModule(tab.reference,
                                                                   _objModuleDefinition.reference,
                                                                   _objModuleDefinition.type,
                                                                   Config.GetModuleVirtualPath(_objModuleDefinition.type),
                                                                   true,
                                                                   _strModuleSrc);
                            }

                            if ((_objModuleControl != null && _objModuleControl.IsVisible() || (_objCachedModuleControl != null && _objCachedModuleControl.IsVisible())))
                            {
                                // Hiển thị nội dung Module theo cách trình bày bình thường không hỗ trợ kéo thả
                                HtmlTable _objSimpleModuleContainer = new HtmlTable();
                                _objSimpleModuleContainer.Width       = "100%";
                                _objSimpleModuleContainer.CellPadding = 0;
                                _objSimpleModuleContainer.CellSpacing = 0;
                                _objSimpleModuleContainer.Rows.Add(new HtmlTableRow());

                                // Nạp dữ liệu của Module vào ô chứa Module
                                HtmlTableCell _objCellContainer = new HtmlTableCell();
                                _objSimpleModuleContainer.Rows[0].Cells.Add(_objCellContainer);
                                //  _objCellContainer.Attributes.Add("class", "Module_Simple_Block");
                                if (_objModuleControl != null)
                                {
                                    _objCellContainer.Controls.Add(_objModuleControl);
                                }
                                else
                                {
                                    _objCellContainer.Controls.Add(_objCachedModuleControl);
                                }
                                //cách giữa header và body
                                _objCellContainer.Attributes.Add("style", "padding-bottom:3px;");
                                td.Controls.Add(_objSimpleModuleContainer);
                            }
                        }
                    }
                }
            }
            #endregion
            #endregion
        }