private void SaveSite(bool isApply) { saveSuccess = true; if (!this.BXUser.IsCanOperate(BXRoleOperation.Operations.ProductSettingsManage)) { errorMessage.AddErrorMessage(GetMessage("Exception.YouDontHaveRightsToPerformThisOperation")); return; } string[] domains = Domains.Text.Split("\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); BXSite site = BXSite.GetById(SiteId, BXTextEncoder.EmptyTextEncoder); //Ибо и так все кодируется if (site == null) { site = new BXSite(txtID.Text, BXTextEncoder.EmptyTextEncoder); } site.Name = Name.Text.Trim(); site.Active = Active.Checked; if (!site.Default) site.Default = Default.Checked; site.Culture = Culture.SelectedCulture; //site.Charset = Encoding.Text.Trim(); site.Sort = int.Parse(Sort.Text); site.LanguageId = Language.SelectedValue; site.SiteName = SiteName.Text.Trim(); site.ServerName = ServerUrl.Text.Trim(); site.Directory = SiteFolder.Text.Trim(); site.RemapDirectory = RemapFolder.Text.Trim(); site.Email = Email.Text.Trim(); site.DomainLimited = domains.Length > 0; try { site.Save(); siteId = EditId.Value = site.Id; //SAVE DOMAINS BXSiteDomain.SaveList(site.Id, domains); //SAVE CONDITIONS BXTemplateCondition.Delete(new BXFilter(new BXFilterItem(BXTemplateCondition.Fields.SiteId, BXSqlFilterOperators.Equal, site.Id))); foreach (BXTemplateCondition cond in Conditions) { cond.SiteId = site.Id; cond.Save(); } BXLoc.ResetCultureCache(); } catch (Exception e) { errorMessage.AddErrorMessage(e.Message); saveSuccess = false; } if (saveSuccess && !isApply) { //zg, Bitrix, 2008.06.05 //Response.Redirect("SiteAdmin.aspx"); GoBack(); //--- } else { BindConditions(); } }
//protected bool IsPathPresentInMenu //{ // get // { // if (string.IsNullOrEmpty(mPath)) // throw new InvalidOperationException("Could not find path!"); // List<BXMenu> resultLst = new List<BXMenu>(); // BXMenuManager.MenuPair[] menuIdArr = BXMenuManager.GetMenuTypes(BXSite.Current.Id); // int menuCount = menuIdArr != null ? menuIdArr.Length : 0; // for (int i = 0; i < menuCount; i++) // { // BXMenuManager.MenuPair menuId = menuIdArr[i]; // BXMenu menu = BXMenuManager.Load(mPath, menuId.Id, 1); // int menuItemCount = menu != null ? menu.Count : 0; // for (int j = 0; j < menuItemCount; j++) // { // BXMenuItem menuItem = menu[j]; // string menuItemPath = menuItem.Link; // menuItemPath = BXPath.ToVirtualRelativePath(menuItem.Link); // if (string.Compare(menuItemPath, mPath, StringComparison.OrdinalIgnoreCase) == 0 || // (IsDefaultFileName && // string.Compare(menuItemPath, mDirectoryPath, StringComparison.OrdinalIgnoreCase) == 0) // ) // return true; // } // } // return false; // } //} //private List<string> handledMenuPathList = null; protected void RemovePathFromMenus(string virtualDirectoryPath, string virtualUrlPath, BXSite site, BXUndoPageDeletionOperation undoOperation) { if (string.IsNullOrEmpty(this.mPath)) throw new ArgumentException("Is not specified!", "mPath"); //--- if (string.IsNullOrEmpty(this.mDirectoryPath)) throw new ArgumentException("Is not specified!", "mDirectoryPath"); //--- if (string.IsNullOrEmpty(virtualDirectoryPath)) throw new ArgumentException("Is not specified!", "virtualDirectoryPath"); //--- // BXSite site = Bitrix.Services.BXSiteRemapUtility.UnmapVirtualPath(virtualDirectoryPath, out virtualDirectoryPath);// BXSite.GetCurrentSite(virtualDirectoryPath, Request.Url.Host); if (site == null) throw new InvalidOperationException(string.Format("Could not find site for path '{0}'!", virtualDirectoryPath)); //--- var path = Bitrix.Services.BXSiteRemapUtility.UnmapVirtualPath(this.mPath, site); var directoryPath = Bitrix.Services.BXSiteRemapUtility.UnmapVirtualPath(this.mDirectoryPath, site); Dictionary<string, string> menuTypeDic = BXPublicMenu.GetMenuTypes(site.Id); foreach (string key in menuTypeDic.Keys) { //BXMenuManager.MenuPair menuId = menuIdArr[i]; string menuId = key; BXPublicMenuItemCollection menuItemCol = null; try { menuItemCol = BXPublicMenu.Menu.GetMenuByUri(menuId, virtualUrlPath); } catch (Exception /*exception*/) { menuItemCol = null; } if (menuItemCol == null || menuItemCol.Count == 0) continue; if (!string.IsNullOrEmpty(menuItemCol.MenuFilePath) && mPathList != null && mPathList.FindIndex( delegate(string curPath) { return string.Compare(menuItemCol.MenuFilePath, curPath, StringComparison.OrdinalIgnoreCase) == 0; } ) >= 0) continue; bool menuChanged = false; int j = 0; while (j < menuItemCol.Count) { BXPublicMenuItem menuItem = menuItemCol[j]; string menuItemPath = null; if (!string.IsNullOrEmpty(menuItem.Link)) try { int whatInd = menuItem.Link.IndexOf('?'); if (whatInd < 0) menuItemPath = BXPath.ToVirtualRelativePath(menuItem.Link); else menuItemPath = BXPath.ToVirtualRelativePath(menuItem.Link.Substring(0, whatInd)); } catch (Exception /*exception*/) { menuItemPath = null; } bool aboutDelete = false; if (!string.IsNullOrEmpty(menuItemPath)) { if (string.Equals(mFileName, BXConfigurationUtility.Constants.DefaultPage, StringComparison.OrdinalIgnoreCase)) aboutDelete = string.Equals(VirtualPathUtility.AppendTrailingSlash(menuItemPath), directoryPath, StringComparison.OrdinalIgnoreCase); if (!aboutDelete) aboutDelete = string.Equals(VirtualPathUtility.RemoveTrailingSlash(menuItemPath), path, StringComparison.OrdinalIgnoreCase); } if (!aboutDelete) { j++; continue; } if(undoOperation != null) { BXUndoPageDeletionOperation.MenuItemInfo menuItemInfo = null; foreach(BXUndoPageDeletionOperation.MenuItemInfo curMenuItemInfo in undoOperation.MenuItemInfoList) { if(!string.Equals(curMenuItemInfo.MenuTypeId, menuId, StringComparison.Ordinal)) continue; menuItemInfo = curMenuItemInfo; break; } if(menuItemInfo == null) { menuItemInfo = new BXUndoPageDeletionOperation.MenuItemInfo(); undoOperation.MenuItemInfoList.Add(menuItemInfo); } menuItemInfo.MenuTypeId = menuId; menuItemInfo.MenuItemName = menuItem.Title; menuItemInfo.MenuItemIndex = j; menuItemInfo.Link = menuItem.Link; } menuItemCol.RemoveAt(j); if (!menuChanged) menuChanged = true; } if (menuChanged) { BXPublicMenu.Menu.Save(virtualDirectoryPath, menuId, menuItemCol); } if (mPathList == null) mPathList = new List<string>(); if (!string.IsNullOrEmpty(menuItemCol.MenuFilePath) && mPathList.FindIndex( delegate(string curPath) { return string.Compare(menuItemCol.MenuFilePath, curPath, StringComparison.OrdinalIgnoreCase) == 0; } ) < 0) mPathList.Add(menuItemCol.MenuFilePath); } foreach (var d in new DirectoryInfo(BXPath.ToPhysicalPath(virtualDirectoryPath)).GetDirectories()) { ///HACK: Ignoring service derectories string childDirectoryVirtualPath = string.Concat(virtualDirectoryPath, d.Name, "/"); if (BXPath.StartsWithPath(childDirectoryVirtualPath, "~/app_browsers/") || BXPath.StartsWithPath(childDirectoryVirtualPath, "~/app_data/") || BXPath.StartsWithPath(childDirectoryVirtualPath, "~/app_themes/") || BXPath.StartsWithPath(childDirectoryVirtualPath, "~/bin/") || BXPath.StartsWithPath(childDirectoryVirtualPath, "~/bitrix/") || BXPath.StartsWithPath(childDirectoryVirtualPath, "~/upload/") ) continue; RemovePathFromMenus(childDirectoryVirtualPath, string.Concat(virtualUrlPath, d.Name, "/"), site, undoOperation); } }
public SiteInfo(BXSite site, BXPage page) { Site = site; var solutionId = BXOptionManager.GetOptionString("main", "InstalledSolution", null, site.Id); SolutionInfo = BXSolutionHelper.AvailableSolutions.Where(x => string.Equals(x.Id, solutionId, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (SolutionInfo == null) TitleHtml = string.Concat(@"<span style=""color:#777"">", page.GetMessageRaw("NotInstalled"), "</span>"); else TitleHtml = SolutionInfo.TitleHtml; }