public ActionResult UpdateSettings(string key, dynamic request)
        {
            ActionResult actionResult = new ActionResult();

            if (request.TabId <= 0 && string.IsNullOrEmpty(request.Key) && string.IsNullOrEmpty(request.Value))
            {
                return(actionResult);
            }

            TabController tab     = new TabController();
            TabInfo       tabinfo = tab.GetTab(Convert.ToInt32(request.TabId.Value), PortalSettings.PortalId);

            if (request.Key.Value == "IsVisible")
            {
                tabinfo.IsVisible = Convert.ToBoolean(request.Value.Value);
            }

            if (request.Key.Value == "HasBeenPublished")
            {
                if (tabinfo.TabPermissions.Where(t => t != null && t.RoleName == "All Users").FirstOrDefault() != null)
                {
                    foreach (TabPermissionInfo p in tabinfo.TabPermissions.Where(t => t != null && t.RoleName == "All Users"))
                    {
                        if (request.Value.Value && p.PermissionKey.ToLower() == "view")
                        {
                            p.AllowAccess = true;
                        }
                        else
                        {
                            p.AllowAccess = false;
                        }
                    }
                }
                else
                {
                    tabinfo.TabPermissions.Add(new TabPermissionInfo
                    {
                        PermissionID = 3,
                        TabID        = tabinfo.TabID,
                        AllowAccess  = true,
                        RoleID       = -1,
                        RoleName     = "All Users",
                    });
                }
                TabPermissionController.SaveTabPermissions(tabinfo);
            }
            tab.UpdateTab(tabinfo);
            if (actionResult.IsSuccess)
            {
                actionResult.Data    = new { PagesTree = Managers.PagesManager.GetPagesTreeView() };
                actionResult.Message = DotNetNuke.Services.Localization.Localization.GetString(key + request.Value.Value, Components.Constants.LocalResourcesFile);
            }
            return(actionResult);
        }
        private void UnpublishTabInternal(TabInfo tab)
        {
            var administratorsRoleID = PortalController.Instance.GetPortal(tab.PortalID).AdministratorRoleId;
            var permissionsToRemove  = new List <int>();

            permissionsToRemove.AddRange(tab.TabPermissions.Where(p => p.RoleID != administratorsRoleID).Select(p => p.TabPermissionID));
            foreach (var tabPermissionId in permissionsToRemove)
            {
                tab.TabPermissions.Remove(tab.TabPermissions.Cast <TabPermissionInfo>().SingleOrDefault(p => p.TabPermissionID == tabPermissionId));
            }
            TabPermissionController.SaveTabPermissions(tab);
            ClearTabCache(tab);
        }
 public void CopyPermissionsToChildren(ArrayList tabs, TabPermissionCollection newPermissions)
 {
     foreach (TabInfo tab in tabs)
     {
         tab.TabPermissions.Clear();
         tab.TabPermissions.AddRange(newPermissions);
         TabPermissionController.SaveTabPermissions(tab);
     }
     if (tabs.Count > 0)
     {
         DataCache.ClearTabsCache(((TabInfo)tabs[0]).PortalID);
     }
 }
Exemple #4
0
        private void PublishTabInternal(TabInfo tab)
        {
            var allUsersRoleId = int.Parse(Globals.glbRoleAllUsers);

            var existPermission = this.GetAlreadyPermission(tab, "VIEW", allUsersRoleId);

            if (existPermission != null)
            {
                tab.TabPermissions.Remove(existPermission);
            }

            tab.TabPermissions.Add(this.GetTabPermissionByRole(tab.TabID, "VIEW", allUsersRoleId));
            TabPermissionController.SaveTabPermissions(tab);
            this.ClearTabCache(tab);
        }
Exemple #5
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     AddPage adds a Tab Page
        /// </summary>
        /// <param name="portalId">The Id of the Portal</param>
        /// <param name="parentId">The Id of the Parent Tab</param>
        /// <param name="tabName">The Name to give this new Tab</param>
        /// <param name="description">Description.</param>
        /// <param name="tabIconFile">The Icon for this new Tab</param>
        /// <param name="tabIconFileLarge">The large Icon for this new Tab</param>
        /// <param name="isVisible">A flag indicating whether the tab is visible</param>
        /// <param name="permissions">Page Permissions Collection for this page</param>
        /// <param name="isAdmin">Is and admin page</param>
        private static TabInfo AddPage(int portalId, int parentId, string tabName, string description,
                                       string tabIconFile, string tabIconFileLarge, bool isVisible, TabPermissionCollection permissions,
                                       bool isAdmin)
        {
            var tabController = new TabController();

            var tab = tabController.GetTabByName(tabName, portalId, parentId);

            if (tab == null || tab.ParentId != parentId)
            {
                tab = new TabInfo
                {
                    TabID         = Null.NullInteger,
                    PortalID      = portalId,
                    TabName       = tabName,
                    Title         = "",
                    Description   = description,
                    KeyWords      = "",
                    IsVisible     = isVisible,
                    DisableLink   = false,
                    ParentId      = parentId,
                    IconFile      = tabIconFile,
                    IconFileLarge = tabIconFileLarge,
                    IsDeleted     = false
                };
                tab.TabID = tabController.AddTab(tab, !isAdmin);

                if (((permissions != null)))
                {
                    foreach (TabPermissionInfo tabPermission in permissions)
                    {
                        tab.TabPermissions.Add(tabPermission, true);
                    }
                    TabPermissionController.SaveTabPermissions(tab);
                }
            }

            return(tab);
        }
Exemple #6
0
            private static void DoIUpgradeable(PortalInfo pinfo)
            {
                UserInfo uInfo = UserController.Instance.GetCurrentUserInfo();

                IFolderInfo fi = FolderManager.Instance.GetFolder(pinfo.PortalID, "Images/");

                #region Copy Vthemes in portal folder

                string BaseEditorFolder = HttpContext.Current.Server.MapPath("~/Portals/_default/vThemes/" + ThemeManager.GetCurrentThemeName(pinfo.PortalID) + "/editor");
                Copy(BaseEditorFolder, BaseEditorFolder.Replace("_default", pinfo.PortalID.ToString()));
                try
                {
                    ThemeManager.ProcessScss(pinfo.PortalID);
                }
                catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); }

                string UXManagervDefaultPath = HttpContext.Current.Request.PhysicalApplicationPath + "DesktopModules\\Vanjaro\\Core\\Library\\Images";
                if (Directory.Exists(UXManagervDefaultPath) && fi != null)
                {
                    DirectoryInfo source = new DirectoryInfo(UXManagervDefaultPath);
                    foreach (System.IO.FileInfo _file in source.GetFiles())
                    {
                        if (!FileManager.Instance.FileExists(fi, _file.Name))
                        {
                            FileStream stream = new FileStream(_file.FullName, FileMode.Open, FileAccess.Read);
                            FileManager.Instance.AddFile(fi, _file.Name, stream);
                        }
                    }
                }
                #endregion

                bool IsVanjaroInstalled = PortalController.Instance.GetPortalSettings(pinfo.PortalID).ContainsKey("IsVanjaroInstalled");

                if (IsDistribution(pinfo.PortalID))
                {
                    HostController.Instance.Update("ControlPanel", "DesktopModules/Vanjaro/UXManager/Library/Base.ascx");

                    #region Add Signup
                    TabController controller = new TabController();
                    if (TabController.Instance.GetTabByName("Signup", pinfo.PortalID) == null)
                    {
                        TabInfo NewSignupTab = new TabInfo {
                            PortalID = pinfo.PortalID, TabName = "Signup", IsVisible = false
                        };
                        TabController.Instance.AddTab(NewSignupTab);
                    }
                    #endregion

                    #region Removing Subscribers

                    RoleInfo rInfo = RoleController.Instance.GetRoleByName(pinfo.PortalID, "Subscribers");
                    if (rInfo != null)
                    {
                        RoleController.Instance.DeleteRole(rInfo);
                    }

                    #endregion

                    #region Applying Home and Signup layout

                    List <Layout>  pageLayouts    = GetLayouts(pinfo);
                    TabInfo        HomeTab        = TabController.Instance.GetTabByName("Home", pinfo.PortalID);
                    Layout         homelayout     = pageLayouts.Where(a => a.Name == "Home").FirstOrDefault();
                    PortalSettings portalSettings = new PortalSettings(pinfo);
                    if (HomeTab != null && homelayout != null && portalSettings != null)
                    {
                        ProcessBlocks(pinfo.PortalID, homelayout.Blocks);

                        if (portalSettings.ActiveTab == null)
                        {
                            portalSettings.ActiveTab = new TabInfo();
                        }

                        portalSettings.ActiveTab.TabID = HomeTab.TabID;
                        PortalController.UpdatePortalSetting(pinfo.PortalID, "Redirect_AfterLogin", HomeTab.TabID.ToString(), false, portalSettings.CultureCode, false);
                        Dictionary <string, object> LayoutData = new Dictionary <string, object>
                        {
                            ["IsPublished"]    = false,
                            ["Comment"]        = string.Empty,
                            ["gjs-assets"]     = string.Empty,
                            ["gjs-css"]        = Managers.PageManager.DeTokenizeLinks(homelayout.Style.ToString(), pinfo.PortalID),
                            ["gjs-html"]       = Managers.PageManager.DeTokenizeLinks(homelayout.Content.ToString(), pinfo.PortalID),
                            ["gjs-components"] = Managers.PageManager.DeTokenizeLinks(homelayout.ContentJSON.ToString(), pinfo.PortalID),
                            ["gjs-styles"]     = Managers.PageManager.DeTokenizeLinks(homelayout.StyleJSON.ToString(), pinfo.PortalID)
                        };
                        Core.Managers.PageManager.Update(portalSettings, LayoutData);

                        Pages Page = Managers.PageManager.GetPages(HomeTab.TabID).OrderByDescending(o => o.Version).FirstOrDefault();

                        if (Page != null && uInfo != null)
                        {
                            WorkflowState state = WorkflowManager.GetStateByID(Page.StateID.Value);
                            Page.Version = 1;
                            Page.StateID = state != null?WorkflowManager.GetLastStateID(state.WorkflowID).StateID : 2;

                            Page.IsPublished = true;
                            Page.PublishedBy = uInfo.UserID;
                            Page.PublishedOn = DateTime.UtcNow;
                            PageFactory.Update(Page, uInfo.UserID);
                        }
                        pinfo.HomeTabId = HomeTab != null && !HomeTab.IsDeleted ? HomeTab.TabID : Null.NullInteger;
                    }

                    TabInfo SignUpTab    = TabController.Instance.GetTabByName("Signup", pinfo.PortalID);
                    Layout  Signuplayout = pageLayouts.Where(a => a.Name == "Signup").FirstOrDefault();
                    if (SignUpTab != null && Signuplayout != null && portalSettings != null)
                    {
                        ProcessBlocks(pinfo.PortalID, homelayout.Blocks);

                        if (portalSettings.ActiveTab == null)
                        {
                            portalSettings.ActiveTab = new TabInfo();
                        }

                        portalSettings.ActiveTab.TabID = SignUpTab.TabID;
                        Dictionary <string, object> LayoutData = new Dictionary <string, object>
                        {
                            ["IsPublished"]    = false,
                            ["Comment"]        = string.Empty,
                            ["gjs-assets"]     = string.Empty,
                            ["gjs-css"]        = Managers.PageManager.DeTokenizeLinks(Signuplayout.Style.ToString(), pinfo.PortalID),
                            ["gjs-html"]       = Managers.PageManager.DeTokenizeLinks(Signuplayout.Content.ToString(), pinfo.PortalID),
                            ["gjs-components"] = Managers.PageManager.DeTokenizeLinks(Signuplayout.ContentJSON.ToString(), pinfo.PortalID),
                            ["gjs-styles"]     = Managers.PageManager.DeTokenizeLinks(Signuplayout.StyleJSON.ToString(), pinfo.PortalID)
                        };
                        Core.Managers.PageManager.Update(portalSettings, LayoutData);

                        Pages Page = Managers.PageManager.GetPages(SignUpTab.TabID).OrderByDescending(o => o.Version).FirstOrDefault();


                        if (Page != null && uInfo != null)
                        {
                            WorkflowState state = WorkflowManager.GetStateByID(Page.StateID.Value);
                            Page.Version = 1;
                            Page.StateID = state != null?WorkflowManager.GetLastStateID(state.WorkflowID).StateID : 2;

                            Page.IsPublished = true;
                            Page.PublishedBy = uInfo.UserID;
                            Page.PublishedOn = DateTime.UtcNow;
                            PageFactory.Update(Page, uInfo.UserID);
                        }
                    }

                    TabInfo NotFoundTab        = TabController.Instance.GetTabByName("404 Error Page", pinfo.PortalID);
                    Layout  NotFoundPagelayout = pageLayouts.Where(a => a.Name == "NotFoundPage").FirstOrDefault();
                    if (NotFoundTab != null && NotFoundPagelayout != null && portalSettings != null)
                    {
                        ProcessBlocks(pinfo.PortalID, homelayout.Blocks);

                        if (portalSettings.ActiveTab == null)
                        {
                            portalSettings.ActiveTab = new TabInfo();
                        }

                        portalSettings.ActiveTab.TabID = NotFoundTab.TabID;
                        Dictionary <string, object> LayoutData = new Dictionary <string, object>
                        {
                            ["IsPublished"]    = false,
                            ["Comment"]        = string.Empty,
                            ["gjs-assets"]     = string.Empty,
                            ["gjs-css"]        = Managers.PageManager.DeTokenizeLinks(NotFoundPagelayout.Style.ToString(), pinfo.PortalID),
                            ["gjs-html"]       = Managers.PageManager.DeTokenizeLinks(NotFoundPagelayout.Content.ToString(), pinfo.PortalID),
                            ["gjs-components"] = Managers.PageManager.DeTokenizeLinks(NotFoundPagelayout.ContentJSON.ToString(), pinfo.PortalID),
                            ["gjs-styles"]     = Managers.PageManager.DeTokenizeLinks(NotFoundPagelayout.StyleJSON.ToString(), pinfo.PortalID)
                        };
                        Core.Managers.PageManager.Update(portalSettings, LayoutData);

                        Pages Page = Managers.PageManager.GetPages(NotFoundTab.TabID).OrderByDescending(o => o.Version).FirstOrDefault();


                        if (Page != null && uInfo != null)
                        {
                            WorkflowState state = WorkflowManager.GetStateByID(Page.StateID.Value);
                            Page.Version = 1;
                            Page.StateID = state != null?WorkflowManager.GetLastStateID(state.WorkflowID).StateID : 2;

                            Page.IsPublished = true;
                            Page.PublishedBy = uInfo.UserID;
                            Page.PublishedOn = DateTime.UtcNow;
                            PageFactory.Update(Page, uInfo.UserID);
                        }

                        pinfo.Custom404TabId = NotFoundTab.TabID;
                    }

                    TabInfo ProfileTab    = TabController.Instance.GetTabByName("Profile", pinfo.PortalID);
                    Layout  Profilelayout = pageLayouts.Where(a => a.Name == "Profile").FirstOrDefault();
                    if (ProfileTab != null && Profilelayout != null && portalSettings != null)
                    {
                        ProfileTab.ParentId = TabController.Instance.GetTabByName("User", pinfo.PortalID).TabID;
                        TabController.Instance.UpdateTab(ProfileTab);
                        ProcessBlocks(pinfo.PortalID, homelayout.Blocks);
                        pinfo.UserTabId = ProfileTab.TabID;
                        if (portalSettings.ActiveTab == null)
                        {
                            portalSettings.ActiveTab = new TabInfo();
                        }

                        portalSettings.ActiveTab.TabID = ProfileTab.TabID;
                        Dictionary <string, object> LayoutData = new Dictionary <string, object>
                        {
                            ["IsPublished"]    = false,
                            ["Comment"]        = string.Empty,
                            ["gjs-assets"]     = string.Empty,
                            ["gjs-css"]        = Managers.PageManager.DeTokenizeLinks(Profilelayout.Style.ToString(), pinfo.PortalID),
                            ["gjs-html"]       = Managers.PageManager.DeTokenizeLinks(Profilelayout.Content.ToString(), pinfo.PortalID),
                            ["gjs-components"] = Managers.PageManager.DeTokenizeLinks(Profilelayout.ContentJSON.ToString(), pinfo.PortalID),
                            ["gjs-styles"]     = Managers.PageManager.DeTokenizeLinks(Profilelayout.StyleJSON.ToString(), pinfo.PortalID)
                        };
                        Core.Managers.PageManager.Update(portalSettings, LayoutData);

                        Pages Page = Managers.PageManager.GetPages(ProfileTab.TabID).OrderByDescending(o => o.Version).FirstOrDefault();


                        if (Page != null && uInfo != null)
                        {
                            WorkflowState state = WorkflowManager.GetStateByID(Page.StateID.Value);
                            Page.Version = 1;
                            Page.StateID = state != null?WorkflowManager.GetLastStateID(state.WorkflowID).StateID : 2;

                            Page.IsPublished = true;
                            Page.PublishedBy = uInfo.UserID;
                            Page.PublishedOn = DateTime.UtcNow;
                            PageFactory.Update(Page, uInfo.UserID);
                        }
                    }

                    TabInfo SearchResultTab    = TabController.Instance.GetTabByName("Search Results", pinfo.PortalID);
                    Layout  SearchResultlayout = pageLayouts.Where(a => a.Name == "SearchResults").FirstOrDefault();
                    if (SearchResultTab != null && SearchResultlayout != null && portalSettings != null)
                    {
                        ProcessBlocks(pinfo.PortalID, homelayout.Blocks);
                        if (portalSettings.ActiveTab == null)
                        {
                            portalSettings.ActiveTab = new TabInfo();
                        }

                        portalSettings.ActiveTab.TabID = SearchResultTab.TabID;
                        Dictionary <string, object> LayoutData = new Dictionary <string, object>
                        {
                            ["IsPublished"]    = false,
                            ["Comment"]        = string.Empty,
                            ["gjs-assets"]     = string.Empty,
                            ["gjs-css"]        = Managers.PageManager.DeTokenizeLinks(SearchResultlayout.Style.ToString(), pinfo.PortalID),
                            ["gjs-html"]       = Managers.PageManager.DeTokenizeLinks(SearchResultlayout.Content.ToString(), pinfo.PortalID),
                            ["gjs-components"] = Managers.PageManager.DeTokenizeLinks(SearchResultlayout.ContentJSON.ToString(), pinfo.PortalID),
                            ["gjs-styles"]     = Managers.PageManager.DeTokenizeLinks(SearchResultlayout.StyleJSON.ToString(), pinfo.PortalID)
                        };
                        Core.Managers.PageManager.Update(portalSettings, LayoutData);

                        Pages Page = Managers.PageManager.GetPages(SearchResultTab.TabID).OrderByDescending(o => o.Version).FirstOrDefault();


                        if (Page != null && uInfo != null)
                        {
                            WorkflowState state = WorkflowManager.GetStateByID(Page.StateID.Value);
                            Page.Version = 1;
                            Page.StateID = state != null?WorkflowManager.GetLastStateID(state.WorkflowID).StateID : 2;

                            Page.IsPublished = true;
                            Page.PublishedBy = uInfo.UserID;
                            Page.PublishedOn = DateTime.UtcNow;
                            PageFactory.Update(Page, uInfo.UserID);
                        }
                    }


                    #endregion

                    #region Update Default SignUp Tab and Search Results page

                    pinfo.RegisterTabId = SignUpTab != null && !SignUpTab.IsDeleted ? SignUpTab.TabID : Null.NullInteger;
                    pinfo.LogoFile      = fi.FolderPath + "vanjaro_logo.png";
                    pinfo.SearchTabId   = SearchResultTab != null && !SearchResultTab.IsDeleted ? SearchResultTab.TabID : Null.NullInteger;

                    #endregion

                    #region Update SEO Settings
                    List <StringValue> SeoSettings = new List <StringValue>
                    {
                        new StringValue {
                            Text = FriendlyUrlSettings.ReplaceSpaceWithSetting, Value = "-"
                        },
                        new StringValue {
                            Text = FriendlyUrlSettings.DeletedTabHandlingTypeSetting, Value = "Do404Error"
                        },
                        new StringValue {
                            Text = FriendlyUrlSettings.ForceLowerCaseSetting, Value = "Y"
                        },
                        new StringValue {
                            Text = FriendlyUrlSettings.RedirectUnfriendlySetting, Value = "Y"
                        },
                        new StringValue {
                            Text = FriendlyUrlSettings.RedirectMixedCaseSetting, Value = "True"
                        },
                        new StringValue {
                            Text = FriendlyUrlSettings.UsePortalDefaultLanguageSetting, Value = "True"
                        },
                        new StringValue {
                            Text = FriendlyUrlSettings.AutoAsciiConvertSetting, Value = "False"
                        },
                        new StringValue {
                            Text = "DefaultIconLocation", Value = "icons/Font Awesome"
                        },
                    };
                    UpdatePortalSettings(SeoSettings, pinfo.PortalID, uInfo.UserID);
                    #endregion
                }
                if (!IsVanjaroInstalled)
                {
                    #region Signin Tab
                    if (pinfo.LoginTabId == -1)
                    {
                        if (TabController.Instance.GetTabByName("Signin", pinfo.PortalID) == null)
                        {
                            TabController tab = new TabController();

                            TabInfo NewSigninTab = new TabInfo {
                                PortalID = pinfo.PortalID, TabName = "Signin", IsVisible = false
                            };
                            int NewSigninTabID = TabController.Instance.AddTab(NewSigninTab);
                            NewSigninTab = tab.GetTab(NewSigninTabID, pinfo.PortalID);
                            if (NewSigninTab.TabPermissions.Where(t => t != null && t.RoleName == "All Users").FirstOrDefault() != null)
                            {
                                foreach (TabPermissionInfo p in NewSigninTab.TabPermissions.Where(t => t != null && t.RoleName == "All Users"))
                                {
                                    if (p.PermissionKey.ToLower() == "view")
                                    {
                                        p.AllowAccess = true;
                                    }
                                    else
                                    {
                                        p.AllowAccess = false;
                                    }
                                }
                            }
                            else
                            {
                                NewSigninTab.TabPermissions.Add(new TabPermissionInfo
                                {
                                    PermissionID = 3,
                                    TabID        = NewSigninTab.TabID,
                                    AllowAccess  = true,
                                    RoleID       = -1,
                                    RoleName     = "All Users",
                                });
                            }
                            TabPermissionController.SaveTabPermissions(NewSigninTab);
                            NewSigninTab.SkinSrc      = "[g]skins/vanjaro/base.ascx";
                            NewSigninTab.ContainerSrc = "[g]containers/vanjaro/base.ascx";
                            tab.UpdateTab(NewSigninTab);
                        }

                        List <Layout>  pageLayouts    = GetLayouts(pinfo);
                        TabInfo        SigninTab      = TabController.Instance.GetTabByName("Signin", pinfo.PortalID);
                        Layout         Signinlayout   = pageLayouts.Where(a => a.Name == "Signin").FirstOrDefault();
                        PortalSettings portalSettings = new PortalSettings(pinfo);
                        Layout         homelayout     = pageLayouts.Where(a => a.Name == "Home").FirstOrDefault();
                        if (SigninTab != null && Signinlayout != null && portalSettings != null)
                        {
                            ProcessBlocks(pinfo.PortalID, homelayout.Blocks);

                            if (portalSettings.ActiveTab == null)
                            {
                                portalSettings.ActiveTab = new TabInfo();
                            }

                            portalSettings.ActiveTab.TabID = SigninTab.TabID;
                            Dictionary <string, object> LayoutData = new Dictionary <string, object>
                            {
                                ["IsPublished"]    = false,
                                ["Comment"]        = string.Empty,
                                ["gjs-assets"]     = string.Empty,
                                ["gjs-css"]        = Managers.PageManager.DeTokenizeLinks(Signinlayout.Style.ToString(), pinfo.PortalID),
                                ["gjs-html"]       = Managers.PageManager.DeTokenizeLinks(Signinlayout.Content.ToString(), pinfo.PortalID),
                                ["gjs-components"] = Managers.PageManager.DeTokenizeLinks(Signinlayout.ContentJSON.ToString(), pinfo.PortalID),
                                ["gjs-styles"]     = Managers.PageManager.DeTokenizeLinks(Signinlayout.StyleJSON.ToString(), pinfo.PortalID)
                            };
                            Core.Managers.PageManager.Update(portalSettings, LayoutData);


                            Pages Page = Managers.PageManager.GetPages(SigninTab.TabID).OrderByDescending(o => o.Version).FirstOrDefault();

                            if (Page != null && uInfo != null)
                            {
                                WorkflowState state = WorkflowManager.GetStateByID(Page.StateID.Value);
                                Page.Version = 1;
                                Page.StateID = state != null?WorkflowManager.GetLastStateID(state.WorkflowID).StateID : 2;

                                Page.IsPublished = true;
                                Page.PublishedBy = uInfo.UserID;
                                Page.PublishedOn = DateTime.UtcNow;
                                PageFactory.Update(Page, uInfo.UserID);
                            }
                        }
                        if (SigninTab != null)
                        {
                            Core.Managers.LoginManager.AddUpdateLoginModule(SigninTab.TabID, pinfo.PortalID);
                        }

                        pinfo.LoginTabId = SigninTab != null && !SigninTab.IsDeleted ? SigninTab.TabID : Null.NullInteger;
                    }
                    #endregion

                    #region Update Portal Settings
                    IFileInfo file;
                    if (fi != null)
                    {
                        if (FileManager.Instance.FileExists(fi, "vanjaro_social.png") && !PortalController.Instance.GetPortalSettings(pinfo.PortalID).ContainsKey("SocialSharingLogo"))
                        {
                            file = FileManager.Instance.GetFile(fi, "vanjaro_social.png");
                            PortalController.UpdatePortalSetting(pinfo.PortalID, "SocialSharingLogo", "FileID=" + file.FileId, true, pinfo.CultureCode);
                        }

                        if (FileManager.Instance.FileExists(fi, "vanjaro_home.png") && !PortalController.Instance.GetPortalSettings(pinfo.PortalID).ContainsKey("HomeScreenIcon"))
                        {
                            file = FileManager.Instance.GetFile(fi, "vanjaro_home.png");
                            PortalController.UpdatePortalSetting(pinfo.PortalID, "HomeScreenIcon", "FileID=" + file.FileId, true, pinfo.CultureCode);
                        }
                    }
                    PortalController.Instance.UpdatePortalInfo(pinfo);
                    List <StringValue> SettingNameValue = new List <StringValue>
                    {
                        new StringValue {
                            Text = "DNN_Enabled", Value = "False"
                        },
                        new StringValue {
                            Text = "Registration_UseEmailAsUserName", Value = "True"
                        },
                        new StringValue {
                            Text = "ClientResourcesManagementMode", Value = "p"
                        },
                        new StringValue {
                            Text = DotNetNuke.Web.Client.ClientResourceSettings.EnableCompositeFilesKey, Value = "True"
                        },
                        new StringValue {
                            Text = DotNetNuke.Web.Client.ClientResourceSettings.MinifyCssKey, Value = "True"
                        },
                        new StringValue {
                            Text = DotNetNuke.Web.Client.ClientResourceSettings.MinifyJsKey, Value = "True"
                        },
                        new StringValue {
                            Text = DotNetNuke.Web.Client.ClientResourceSettings.OverrideDefaultSettingsKey, Value = "True"
                        },
                    };
                    int CrmVersion = Host.CrmVersion + 1;
                    SettingNameValue.Add(new StringValue {
                        Text = DotNetNuke.Web.Client.ClientResourceSettings.VersionKey, Value = CrmVersion.ToString()
                    });
                    UpdatePortalSettings(SettingNameValue, pinfo.PortalID, uInfo.UserID);
                    #endregion
                }

                #region Delete Unnecessary Files
                string LayoutPath = HttpContext.Current.Server.MapPath("~/Portals/" + pinfo.PortalID + "/vThemes/" + Core.Managers.ThemeManager.GetCurrentThemeName(pinfo.PortalID) + "/templates");
                if (Directory.Exists(LayoutPath))
                {
                    Directory.Delete(LayoutPath, true);
                }
                #endregion

                #region Update ResetPassword module control
                ModuleControlInfo passwordResetModuleControlInfo = ModuleControlController.GetModuleControlByControlKey("PasswordReset", Null.NullInteger);
                if (passwordResetModuleControlInfo != null)
                {
                    passwordResetModuleControlInfo.ControlSrc = "DesktopModules/Vanjaro/Core/Providers/Authentication/PasswordReset.ascx";
                }

                ModuleControlController.UpdateModuleControl(passwordResetModuleControlInfo);
                ModuleControlInfo registerModuleControlInfo = ModuleControlController.GetModuleControlByControlKey("Register", Null.NullInteger);
                registerModuleControlInfo.ControlSrc = "DesktopModules/Vanjaro/Core/Providers/Authentication/Register.ascx";
                if (registerModuleControlInfo != null)
                {
                    ModuleControlController.UpdateModuleControl(registerModuleControlInfo);
                }
                #endregion


                if (IsDistribution(pinfo.PortalID))
                {
                    SoftDeleteModule(pinfo.PortalID, Components.Constants.SearchResult);
                }

                if (!IsVanjaroInstalled)
                {
                    PortalController.UpdatePortalSetting(pinfo.PortalID, "IsVanjaroInstalled", "-1");
                }

                if (fi != null)
                {
                    UpdateValue(pinfo.PortalID, 0, "security_settings", "Picture_DefaultFolder", fi.FolderID.ToString());
                }
            }