/// <summary> /// Returns binding column name for binding object type. /// 1. Try to search ParentObjectType (there should be first binding column name). /// 2. Search for site ID column. In site bindings you will find column name for site. /// 3. If one of the columns is still not found, search all object's dependencies. /// </summary> private string GetObjectDependencyColumn(string dependencyObjectType) { var bindingTypeInfo = ObjectTypeManager.GetTypeInfo(BindingObjectType); var dependencyTypeInfo = ObjectTypeManager.GetTypeInfo(dependencyObjectType); // 1. ParentObjectType if (ParentObjectTypeEqualsDependencyObjectType(bindingTypeInfo, dependencyTypeInfo)) { return(bindingTypeInfo.ParentIDColumn); } // 2. Site bindings if ((bindingTypeInfo.SiteIDColumn != ObjectTypeInfo.COLUMN_NAME_UNKNOWN) && dependencyObjectType.EqualsCSafe(PredefinedObjectType.SITE, true)) { return(bindingTypeInfo.SiteIDColumn); } // 3. Object's dependencies if (bindingTypeInfo.DependsOn != null) { return(bindingTypeInfo.DependsOn .Where(d => d.DependencyObjectType.EqualsCSafe(dependencyObjectType, true)) .Select(d => d.DependencyColumn) .FirstOrDefault()); } return(null); }
protected void Page_Load(object sender, EventArgs e) { SetPropertyTab(TAB_LINKEDDOCS); if (Node != null) { // Check modify permissions if (!DocumentUIHelper.CheckDocumentPermissions(Node, PermissionsEnum.Modify)) { pnlContainer.Enabled = false; } } currentSiteName = SiteContext.CurrentSiteName.ToLowerCSafe(); gridDocs.OnExternalDataBound += gridDocuments_OnExternalDataBound; gridDocs.OnAction += gridDocs_OnAction; gridDocs.OnDataReload += gridDocs_OnDataReload; gridDocs.ShowActionsMenu = true; gridDocs.Columns = "NodeAliasPath, SiteName, NodeParentID, DocumentName, DocumentNamePath, ClassDisplayName"; // Get all possible columns to retrieve gridDocs.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); pnlContainer.Enabled = !DocumentManager.ProcessingAction; }
protected void SetupControl() { // In design mode is processing of control stopped if (StopProcessing) { // Do nothing } else { if (MembershipContext.AuthenticatedUser.UserID == UserID) { gridElem.ZeroRowsText = GetString("blogsubscripitons.userhasnosubscriptions"); } else { gridElem.ZeroRowsText = GetString("blogsubscripitons.NoDataUser"); } gridElem.IsLiveSite = IsLiveSite; gridElem.OnAction += gridElem_OnAction; gridElem.OnExternalDataBound += gridElem_OnExternalDataBound; gridElem.OnDataReload += gridElem_OnDataReload; gridElem.ShowActionsMenu = true; gridElem.Columns = "SubscriptionID, SubscriptionEmail, DocumentName, NodeAliasPath, DocumentCulture, SubscriptionApproved"; // Get all possible columns to retrieve gridElem.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(BlogPostSubscriptionInfo.OBJECT_TYPE, PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); mSiteName = SiteInfoProvider.GetSiteName(SiteID); } }
/// <summary> /// Returns binding column names for binding object type. /// 1. Try to search ParentObjectType (there should be first binding column name). /// 2. Search for site ID column. In site bindings you will find column name for site. /// 3. If one of the columns is still not found, search all object's dependencies. /// </summary> private IEnumerable <string> GetObjectDependencyColumn(string dependencyObjectType) { var bindingTypeInfo = ObjectTypeManager.GetTypeInfo(BindingObjectType); var dependencyTypeInfo = ObjectTypeManager.GetTypeInfo(dependencyObjectType); // 1. ParentObjectType if (ParentObjectTypeEqualsDependencyObjectType(bindingTypeInfo, dependencyTypeInfo)) { yield return(bindingTypeInfo.ParentIDColumn); } // 2. Site bindings if ((bindingTypeInfo.SiteIDColumn != ObjectTypeInfo.COLUMN_NAME_UNKNOWN) && dependencyObjectType.EqualsCSafe(PredefinedObjectType.SITE, true)) { yield return(bindingTypeInfo.SiteIDColumn); } // 3. Object's dependencies if (bindingTypeInfo.DependsOn != null) { foreach (var dependency in bindingTypeInfo.DependsOn .Where(d => d.DependencyObjectType.EqualsCSafe(dependencyObjectType, true))) { yield return(dependency.DependencyColumn); } } }
/// <summary> /// Returns binding info objects for each changed item. /// </summary> /// <param name="changedItems">Comma separated list of changed IDs</param> /// <param name="parentColumn">Parent ID column in the binding object</param> /// <param name="targetColumn">Other related object ID column in the binding object</param> /// <param name="create">If true, bindings will not be retrieved from database. Otherwise only if the binding has own ID column.</param> private IEnumerable <BaseInfo> GetBindings(string changedItems, string parentColumn, string targetColumn, bool create) { var bindingsToProcess = Enumerable.Empty <BaseInfo>(); if (!String.IsNullOrEmpty(changedItems)) { var items = changedItems.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (items.Any()) { var bindingTypeInfo = ObjectTypeManager.GetTypeInfo(BindingObjectType); if (create || bindingTypeInfo.IDColumn == ObjectTypeInfo.COLUMN_NAME_UNKNOWN) { bindingsToProcess = CreateBindings(items, parentColumn, targetColumn); } else { // If binding has object ID column, retrieve all changed objects by single query bindingsToProcess = new ObjectQuery(BindingObjectType, false) .WhereEquals(parentColumn, ObjectID) .WhereIn(targetColumn, items); } } } return(bindingsToProcess); }
protected void Page_Load(object sender, EventArgs e) { string objectType = QueryHelper.GetString("objectType", ""); GenerateBreadcrumbs(objectType); // Attempts to get the TypeInfo for the object type, shows an error if not found var typeInfo = ObjectTypeManager.GetTypeInfo(objectType); if (typeInfo == null) { ShowError(String.Format(ResHelper.GetString("administration.system.objecttypegraph.notfound"), objectType)); return; } InitControls(objectType, typeInfo); ScriptHelper.RegisterClientScriptInclude(Page, typeof(string), "ObjectTypeVisGraph", URLHelper.ResolveUrl("~/CMSScripts/vis/vis-network.min.js")); // Sets up and registers the ObjectTypeGraph JavaScript module object data = new { objectType = objectType, filterId = chlGraphFilter.ClientID, networkId = pnlObjectTypeGraph.ClientID }; ScriptHelper.RegisterModule(this, "CMS/ObjectTypeGraph", data); }
protected void Page_Load(object sender, EventArgs e) { currentUser = MembershipContext.AuthenticatedUser; if (currentUser == null) { return; } // No cms.blog doc. type if (DataClassInfoProvider.GetDataClassInfo("cms.blog") == null) { RedirectToInformation(GetString("blog.noblogdoctype")); } // Prepare permissions for external data bound contentExploreTreePermission = currentUser.IsAuthorizedPerResource("cms.content", "exploretree"); contentReadPermission = currentUser.IsAuthorizedPerResource("cms.content", "read"); contentCreatePermission = currentUser.IsAuthorizedPerResource("cms.content", "create"); // Register grid events gridBlogs.OnExternalDataBound += gridBlogs_OnExternalDataBound; gridBlogs.OnDataReload += gridBlogs_OnDataReload; gridBlogs.ShowActionsMenu = true; gridBlogs.Columns = "BlogID, ClassName, BlogName, NodeID, DocumentCulture, NodeOwner, BlogModerators"; // Get all possible columns to retrieve gridBlogs.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(BlogInfo.OBJECT_TYPE, PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); }
/// <summary> /// Returns binding column names for binding object type. /// 1. Try to search ParentObjectType (there should be first binding column name). /// 2. Search for site ID column. In site bindings you will find column name for site. /// 3. If one of the columns is still not found, search all object's dependencies. /// </summary> private IEnumerable <string> GetObjectDependencyColumn(string dependencyObjectType) { var bindingTypeInfo = ObjectTypeManager.GetTypeInfo(BindingObjectType); var dependencyTypeInfo = ObjectTypeManager.GetTypeInfo(dependencyObjectType); // 1. ParentObjectType if (ParentObjectTypeEqualsDependencyObjectType(bindingTypeInfo, dependencyTypeInfo)) { yield return(bindingTypeInfo.ParentIDColumn); } // 2. Site bindings if ((bindingTypeInfo.SiteIDColumn != ObjectTypeInfo.COLUMN_NAME_UNKNOWN) && dependencyObjectType.Equals(PredefinedObjectType.SITE, StringComparison.InvariantCultureIgnoreCase)) { yield return(bindingTypeInfo.SiteIDColumn); } // 3. Object's dependencies var dependencies = bindingTypeInfo.DependsOn; if (dependencies == null) { yield break; } foreach (var dependency in dependencies.Where(d => d.DependencyObjectType.Equals(dependencyObjectType, StringComparison.InvariantCultureIgnoreCase))) { yield return(dependency.DependencyColumn); } }
protected void Page_Load(object sender, EventArgs e) { uniGrid.OnDataReload += uniGrid_OnDataReload; uniGrid.OnExternalDataBound += uniGrid_OnExternalDataBound; uniGrid.ShowActionsMenu = true; uniGrid.Columns = "NodeID, DocumentName, DocumentNamePath, DocumentCulture, DocumentModifiedWhen, ClassDisplayName, NodeHasChildren"; uniGrid.OnBeforeDataReload += uniGrid_OnBeforeDataReload; uniGrid.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); nodeId = QueryHelper.GetInteger("nodeid", 0); serverId = QueryHelper.GetInteger("serverid", 0); if (nodeId > 0) { TreeNode node = TreeProvider.SelectSingleNode(nodeId); if (node != null) { string closeLink = "<a href=\"#\"><span class=\"ListingClose\" style=\"cursor: pointer;\" " + "onclick=\"parent.frames['tasksHeader'].selectDocuments = false; window.location.href='" + ResolveUrl("~/CMSModules/Staging/Tools/Tasks/Tasks.aspx?serverid=") + serverId + "&nodeid=" + nodeId + "';" + "var completeObj = parent.frames['tasksHeader'].document.getElementById('pnlComplete');" + "if (completeObj != null){ completeObj.style.display = 'block'; }" + "return false;\">" + GetString("general.close") + "</span></a>"; string docNamePath = "<span class=\"ListingPath\">" + node.DocumentNamePath + "</span>"; lblListingInfo.Text = String.Format(GetString("synchronization.listinginfo"), docNamePath, closeLink); } } }
protected void Page_Load(object sender, EventArgs e) { gridLanguages.OnDataReload += gridDocuments_OnDataReload; gridLanguages.OnExternalDataBound += gridLanguages_OnExternalDataBound; gridLanguages.ShowActionsMenu = true; gridLanguages.Columns = SqlHelper.MergeColumns("DocumentName", DocumentColumnLists.GETPUBLISHED_REQUIRED_COLUMNS); gridLanguages.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); pnlContainer.Enabled = !DocumentManager.ProcessingAction; }
/// <summary> /// Removes search settings for columns that no longer exist from classes consisting of multiple components. /// </summary> private static void CleanCompositeClassesSearchSettings() { foreach (var classInfo in ObjectTypeManager.GetTypeInfos(ObjectTypeManager.AllObjectTypes, ti => ti.NestedInfoTypes != null) .Select(ti => DataClassInfoProvider.GetDataClassInfo(ti.ObjectClassName)) .Where(c => c != null)) { classInfo.ClassSearchSettings = SearchHelper.CleanSearchSettings(classInfo); classInfo.Update(); } }
/// <summary> /// Get the transformation to interpret task related object data. /// </summary> /// <param name="row">Grid row</param> /// <returns>Transformation that displays object identified by object type and ID.</returns> private object RenderRelatedObject(DataRowView row) { if (row == null) { return(String.Empty); } int objectId = ValidationHelper.GetInteger(row.Row["SearchTaskRelatedObjectID"], 0); string taskTypeRaw = ValidationHelper.GetString(row.Row["SearchTaskType"], ""); SearchTaskTypeEnum taskType; string objectType = null; // try to get search task type. Type doesn't have a default value. try { taskType = ValidationHelper.GetString(taskTypeRaw, "").ToEnum <SearchTaskTypeEnum>(); } catch (Exception ex) { EventLogProvider.LogEvent( EventType.ERROR, "Smart search", "LISTSEARCHTASKS", "Unknown search task type: " + taskTypeRaw + ". Original exception:" + Environment.NewLine + EventLogProvider.GetExceptionLogMessage(ex) ); return(String.Empty); } // Object type objectType = SearchTaskInfoProvider.GetSearchTaskRelatedObjectType(ValidationHelper.GetString(row.Row["SearchTaskObjectType"], ""), taskType); // Object cannot be interpreted if (String.IsNullOrEmpty(objectType) || (objectId == 0)) { return(String.Empty); } // create transformation ObjectTransformation transformation = new ObjectTransformation(objectType, objectId); transformation.Transformation = String.Format("{{% Object.GetFullObjectName(false, true) %}}"); ObjectTypeInfo typeInfo = ObjectTypeManager.GetTypeInfo(objectType); if (typeInfo != null) { transformation.NoDataTransformation = LocalizationHelper.GetStringFormat("smartsearch.searchtaskrelatedobjectnotexist", typeInfo.GetNiceObjectTypeName(), objectId); } return(transformation); }
protected void Page_Load(object sender, EventArgs e) { gridLanguages.FilteredZeroRowsText = GetString("transman.nodocumentculture"); gridLanguages.OnDataReload += gridDocuments_OnDataReload; gridLanguages.OnExternalDataBound += gridLanguages_OnExternalDataBound; gridLanguages.ShowActionsMenu = true; gridLanguages.Columns = "DocumentName, Published"; gridLanguages.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); pnlContainer.Enabled = !DocumentManager.ProcessingAction; }
/// <summary> /// Gets the current values from database /// </summary> private string GetCurrentValues() { var bindingTargetIdColumn = ObjectTypeManager.GetTypeInfo(TargetObjectType).IDColumn; // Get all items based on where condition var targetIds = ModuleManager.GetReadOnlyObject(BindingObjectType) .Generalized .GetDataQuery(true, s => s.Where(WhereCondition).Column(bindingTargetIdColumn), false) .Select(row => row[bindingTargetIdColumn]); return(TextHelper.Join(";", targetIds)); }
public void GetObjectQuery_ReturnsCorrectResult(string objectType, bool hasCodeName, string[] expectedIdentifiers) { var typeInfo = ObjectTypeManager.GetTypeInfo(objectType); var retriever = new ObjectsRetriever(siteService); var query = retriever.GetObjectsQuery(objectType); string identifierColumn = hasCodeName ? typeInfo.CodeNameColumn : typeInfo.GUIDColumn; var result = query.ToArray(); var actualNames = result.Select(o => o[identifierColumn].ToString()); Assert.That(actualNames, Is.EquivalentTo(expectedIdentifiers)); Assert.That(result.All(o => !String.IsNullOrEmpty(o[typeInfo.DisplayNameColumn].ToString())), Is.True); }
/// <summary> /// Store selected (unselected) roles. /// </summary> private void SaveData() { if (!editElem.Enabled) { ShowError(GetString("ui.notauthorizemodified")); return; } string newValues = ValidationHelper.GetString(editElem.Value, null); bool saved = false; // Catch an empty ObjectType and send error that is more meaningful. if (string.IsNullOrWhiteSpace(ObjectType)) { throw new Exception("Object Type is not set, must set the Object Type for the UI element."); } // Find column names for both binding string objCol = GetObjectDependencyColumn(ObjectType); string targetCol = GetObjectDependencyColumn(TargetObjectType); if (!String.IsNullOrEmpty(targetCol) && !String.IsNullOrEmpty(objCol)) { string deletedItems = DataHelper.GetNewItemsInList(newValues, CurrentValues); var bindingsToDelete = GetBindings(deletedItems, objCol, targetCol, false); foreach (var bi in bindingsToDelete) { bi.Delete(); saved = true; } string addedItems = DataHelper.GetNewItemsInList(CurrentValues, newValues); var bindingsToAdd = GetBindings(addedItems, objCol, targetCol, true); foreach (var bi in bindingsToAdd) { bi.Insert(); saved = true; } if (saved) { ObjectTypeManager.GetTypeInfo(ObjectType) .InvalidateAllObjects(); ShowChangesSaved(); } } }
/// <summary> /// Returns binding info objects for each changed item. /// </summary> /// <param name="changedItems">IDs of existing bindings</param> /// <param name="bindingColumns">Parent ID column and other related object ID column in the binding object</param> private IEnumerable <BaseInfo> GetBindings(IEnumerable <int> changedItems, Tuple <string, string> bindingColumns) { var bindingTypeInfo = ObjectTypeManager.GetTypeInfo(BindingObjectType); if (bindingTypeInfo.IDColumn == ObjectTypeInfo.COLUMN_NAME_UNKNOWN) { return(CreateBindings(changedItems, bindingColumns)); } // If binding has object ID column, retrieve all changed objects by single query return(new ObjectQuery(BindingObjectType, false) .WhereEquals(bindingColumns.Item1, ObjectID) .WhereIn(bindingColumns.Item2, changedItems.ToList())); }
private IEnumerable <string> GetObjectTypes() { // Get object types to search var selectedType = ValidationHelper.GetString(selObjectType.Value, ""); if (!String.IsNullOrEmpty(selectedType) && (ObjectTypeManager.GetTypeInfo(selectedType) != null)) { return(new List <string> { selectedType }); } return(ObjectTypeManager.ObjectTypesWithMacros); }
private void ClearHashtables(string className) { ClassStructureInfo.Remove(className, true); FormEngineWebUIResolvers.ClearResolvers(true); var ti = ObjectTypeManager.GetTypeInfo(className); if (ti == null || ti.ProviderType == null) { return; } ti.InvalidateColumnNames(); ti.InvalidateAllObjects(); }
/// <summary> /// Store selected (unselected) roles. /// </summary> private void SaveData() { if (!editElem.Enabled) { ShowError(GetString("ui.notauthorizemodified")); return; } var bindingColumns = GetBindingColumns(); if (bindingColumns == null) { return; } bool saved = false; var newValues = ParseSelectedValues(editElem).ToList(); var deletedItems = CurrentValues.Except(newValues).ToList(); var bindingsToDelete = GetBindings(deletedItems, bindingColumns); foreach (var bi in bindingsToDelete) { bi.Delete(); saved = true; } var addedItems = newValues.Except(CurrentValues); var bindingsToAdd = CreateBindings(addedItems, bindingColumns); foreach (var bi in bindingsToAdd) { bi.Insert(); saved = true; } if (saved) { ObjectTypeManager.GetTypeInfo(ObjectType) .InvalidateAllObjects(); ShowChangesSaved(); } }
/// <summary> /// Gets the current values from database /// </summary> private string GetCurrentValues() { var bindingTargetIdColumn = ObjectTypeManager.GetTypeInfo(TargetObjectType).IDColumn; var BindingObject = ModuleManager.GetReadOnlyObject(BindingObjectType); // Get the bound reference column if IBindingBaseInfo is implemented if (BindingObject is IBindingBaseInfo BindingObjectInfo) { bindingTargetIdColumn = BindingObjectInfo.ChildObjectReferenceColumnName(); } // Get all items based on where condition var targetIds = BindingObject.Generalized .GetDataQuery(true, s => s.Where(WhereCondition).Column(bindingTargetIdColumn), false) .Select(row => row[bindingTargetIdColumn]); return(TextHelper.Join(";", targetIds)); }
protected void Page_Load(object sender, EventArgs e) { // Check the current user currentUser = MembershipContext.AuthenticatedUser; if (currentUser == null) { return; } // Check 'Read' permission if (currentUser.IsAuthorizedPerResource("cms.blog", "Read")) { readBlogs = true; } // Prepare permissions for external data bound contentExploreTreePermission = currentUser.IsAuthorizedPerResource("cms.content", "exploretree"); contentReadPermission = currentUser.IsAuthorizedPerResource("cms.content", "read"); contentCreatePermission = currentUser.IsAuthorizedPerResource("cms.content", "create"); if (!RequestHelper.IsPostBack()) { drpBlogs.Items.Add(new ListItem(GetString("general.selectall"), "##ALL##")); drpBlogs.Items.Add(new ListItem(GetString("blog.selectmyblogs"), "##MYBLOGS##")); } // No cms.blog doc. type if (DataClassInfoProvider.GetDataClassInfo("cms.blog") == null) { RedirectToInformation(GetString("blog.noblogdoctype")); } CurrentMaster.DisplaySiteSelectorPanel = true; gridBlogs.OnDataReload += gridBlogs_OnDataReload; gridBlogs.ZeroRowsText = GetString("general.nodatafound"); gridBlogs.ShowActionsMenu = true; gridBlogs.Columns = "BlogID, BlogName, NodeID, DocumentCulture"; gridBlogs.OnExternalDataBound += gridBlogs_OnExternalDataBound; // Get all possible columns to retrieve gridBlogs.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(BlogInfo.OBJECT_TYPE, PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); }
/// <summary> /// Store selected (unselected) roles. /// </summary> private void SaveData() { if (!editElem.Enabled) { ShowError(GetString("ui.notauthorizemodified")); return; } string newValues = ValidationHelper.GetString(editElem.Value, null); bool saved = false; var bindingColumns = GetBindingColumns(); if (bindingColumns != null) { string deletedItems = DataHelper.GetNewItemsInList(newValues, CurrentValues); var bindingsToDelete = GetBindings(deletedItems, bindingColumns, false); foreach (var bi in bindingsToDelete) { bi.Delete(); saved = true; } string addedItems = DataHelper.GetNewItemsInList(CurrentValues, newValues); var bindingsToAdd = GetBindings(addedItems, bindingColumns, true); foreach (var bi in bindingsToAdd) { bi.Insert(); saved = true; } if (saved) { ObjectTypeManager.GetTypeInfo(ObjectType) .InvalidateAllObjects(); ShowChangesSaved(); } } }
/// <summary> /// Initializes ObjectQuery from ObjectType property. /// </summary> private bool InitializeObjectQuery() { try { // If type info is not original (e.g. a UserListInfo), use the original one (e.g. UserInfo) ObjectType = ObjectTypeManager.GetTypeInfo(ObjectType).OriginalObjectType; ObjectQuery = new ObjectQuery(ObjectType).Immutable(); ObjectIdColumn = ObjectQuery.TypeInfo.IDColumn; ObjectTypeDisplayableName = ObjectQuery.TypeInfo.GetNiceObjectTypeName(); } catch (Exception exception) { EventLogProvider.LogException(EventType.ERROR, "Delete page", exception); RedirectToInformation(GetString("massdelete.invalidparameters")); return(false); } return(true); }
/// <summary> /// Initializes the controls on the page. /// </summary> private void SetupControls() { lblBoardName.Text = GetString("board.boardlist.boardname"); btnFilter.Text = GetString("general.search"); btnReset.Text = GetString("general.reset"); gridBoards.IsLiveSite = IsLiveSite; gridBoards.GridName = (!string.IsNullOrEmpty(GridName)) ? GridName : "~/CMSModules/MessageBoards/Tools/Boards/Board_List.xml"; gridBoards.OrderBy = "BoardDisplayName ASC"; gridBoards.IsLiveSite = IsLiveSite; gridBoards.OnAction += gridBoards_OnAction; gridBoards.OnExternalDataBound += gridBoards_OnExternalDataBound; gridBoards.OnDataReload += gridBoards_OnDataReload; gridBoards.OnBeforeDataReload += gridBoards_OnBeforeDataReload; gridBoards.ZeroRowsText = GetString("general.nodatafound"); gridBoards.ShowActionsMenu = true; gridBoards.Columns = "BoardID, BoardDisplayName, BoardEnabled, BoardModerated, BoardMessages, BoardLastMessageTime, BoardDocumentID, BoardOpened, NodeID, NodeSiteID, DocumentNamePath, DocumentCulture, ClassName"; // Get all possible column names. gridBoards.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(BoardInfo.OBJECT_TYPE, PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); }
/// <summary> /// Builds and returns the list of object types that can contain macros. /// </summary> /// <param name="include">Object types to include in the list</param> /// <param name="exclude">Object types to exclude from the list</param> /// <remarks> /// Excludes the object types that cannot contain macros. /// </remarks> public static IEnumerable <string> GetObjectTypesWithMacros(IEnumerable <string> include = null, IEnumerable <string> exclude = null) { // Get the system object types var objectTypes = ObjectTypeManager.ObjectTypesWithMacros; // Include custom table object types objectTypes = objectTypes.Union(GetCustomTableObjectTypes()); // Include biz form object types objectTypes = objectTypes.Union(GetFormObjectTypes()); // Include object types if (include != null) { objectTypes = objectTypes.Union(include); } // Exclude object types if (exclude != null) { objectTypes = objectTypes.Except(exclude); } objectTypes = objectTypes.Where(t => { try { var typeInfo = ObjectTypeManager.GetTypeInfo(t); return(!typeInfo.IsListingObjectTypeInfo && typeInfo.ContainsMacros); } catch (Exception) { return(false); } }); return(objectTypes); }
public string GetBOTName() { ObjectTypeManager manager = new ObjectTypeManager(); list = manager.GetAllObjType(); string data = ""; foreach (ObjectTypeModel rtm in list) { if (data == "") { data = "{id:'" + rtm.Botid + "',text:'" + rtm.Bot + "'}"; } else { data = data + "," + "{id:'" + rtm.Botid + "',text:'" + rtm.Bot + "'}"; } } if (data != "") { data = "[" + data + "]"; } return(data); }
/// <summary> /// Gets the macros from the system /// </summary> /// <param name="startIndex">Start index</param> /// <param name="endIndex">End index</param> /// <param name="maxTotalRecords">Maximum number of total records to process</param> /// <param name="totalRecords">Returns the total number of records found</param> private IEnumerable <MacroExpr> GetMacros(int startIndex, int endIndex, int maxTotalRecords, ref int totalRecords) { var index = 0; IEnumerable <string> objectTypes = null; // Get object types to search var selectedType = ValidationHelper.GetString(selObjectType.Value, ""); if (!String.IsNullOrEmpty(selectedType)) { if (ObjectTypeManager.GetRegisteredTypeInfo(selectedType) != null) { objectTypes = new List <string> { selectedType }; } } if (objectTypes == null) { objectTypes = ObjectTypeManager.ObjectTypesWithMacros; } var result = new List <MacroExpr>(); var search = txtFilter.Text; var invalid = chkInvalid.Checked; var skipTesting = SystemContext.DevelopmentMode && chkSkipTesting.Checked; var type = drpType.Text; foreach (var objectType in objectTypes) { // Skip certain object types switch (objectType) { case ObjectVersionHistoryInfo.OBJECT_TYPE: case VersionHistoryInfo.OBJECT_TYPE: case StagingTaskInfo.OBJECT_TYPE: case IntegrationTaskInfo.OBJECT_TYPE: continue; } // Process all objects of the given type var infos = new ObjectQuery(objectType) .TopN(maxTotalRecords) .BinaryData(false); var typeInfo = infos.TypeInfo; if (skipTesting) { ExcludeTestingObjects(infos); } if (!String.IsNullOrEmpty(search)) { // Search particular expression infos.WhereAnyColumnContains(search); } else { // Search just type infos.WhereAnyColumnContains("{" + type); } Action <DataRow> collectMacros = dr => { var drc = new DataRowContainer(dr); // Process all expressions MacroProcessor.ProcessMacros(drc, (expression, colName) => { var originalExpression = expression; // Decode macro from XML if (MacroProcessor.IsXMLColumn(colName)) { expression = HTMLHelper.HTMLDecode(expression); } MacroExpr e = null; bool add = false; if (String.IsNullOrEmpty(search) || (expression.IndexOfCSafe(search, true) >= 0)) { // If not tracking errors, count immediately if (!invalid) { // Apply paging. Endindex is -1 when paging is off if ((endIndex < 0) || ((index >= startIndex) && (index <= endIndex))) { e = GetMacroExpr(expression); add = true; } index++; } else { e = GetMacroExpr(expression); // Filter invalid signature / syntax var pass = !e.SignatureValid || e.Error; if (pass) { // Apply paging. Endindex is -1 when paging is off if ((endIndex < 0) || ((index >= startIndex) && (index <= endIndex))) { add = true; } index++; } } } if (add) { // Fill in the object information e.ObjectType = objectType; e.ObjectID = (typeInfo.IDColumn == ObjectTypeInfo.COLUMN_NAME_UNKNOWN) ? 0 : ValidationHelper.GetInteger(dr[typeInfo.IDColumn], 0); e.Field = colName; result.Add(e); } return(originalExpression); }, new List <string> { type } ); if ((maxTotalRecords != -1) && (index >= maxTotalRecords)) { // Enough data - cancel enumeration throw new ActionCancelledException(); } }; using (var scope = new CMSConnectionScope()) { scope.Connection.CommandTimeout = ConnectionHelper.LongRunningCommandTimeout; infos.ForEachRow(collectMacros); } if (((maxTotalRecords != -1) && (index >= maxTotalRecords)) || !CMSHttpContext.Current.Response.IsClientConnected) { break; } } totalRecords = index; return(result); }
protected void SetupControls() { // If current control context is widget or livesite hide site selector if (ControlsHelper.CheckControlContext(this, ControlContext.WIDGET_PROPERTIES) || ControlsHelper.CheckControlContext(this, ControlContext.LIVE_SITE)) { ShowSiteFilter = false; } // Set prefix if not set if (ResourcePrefix == String.Empty) { // Set resource prefix based on mode if ((SelectionMode == SelectionModeEnum.Multiple) || (SelectionMode == SelectionModeEnum.MultipleButton) || (SelectionMode == SelectionModeEnum.MultipleTextBox)) { usUsers.ResourcePrefix = "selectusers"; } } // Add sites filter if (ShowSiteFilter) { usUsers.FilterControl = "~/CMSFormControls/Filters/SiteFilter.ascx"; usUsers.SetValue("DefaultFilterValue", (SiteID > 0) ? SiteID : SiteContext.CurrentSiteID); usUsers.SetValue("FilterMode", "user"); } // Generate WhereCondtion based on SelectUser's properties var usersWhereCondition = new WhereCondition(); var userTypeInfo = ObjectTypeManager.GetTypeInfo(UserInfo.OBJECT_TYPE); // Hide hidden users if (HideHiddenUsers) { var apparentUsersCondition = new WhereCondition().WhereEqualsOrNull("UserIsHidden", 0); usersWhereCondition.And(apparentUsersCondition); } // Hide disabled users if (HideDisabledUsers) { var enabledUsersCondition = new WhereCondition(UserInfoProvider.USER_ENABLED_WHERE_CONDITION); usersWhereCondition.And(enabledUsersCondition); } // Hide non-approved users if (HideNonApprovedUsers) { var approvedUserIDs = UserSettingsInfoProvider .GetUserSettings() .WhereEqualsOrNull("UserWaitingForApproval", 0) .Column("UserSettingsUserID"); var approvedUsersCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, approvedUserIDs); usersWhereCondition.And(approvedUsersCondition); } // Select group users if (GroupID > 0) { var groupUserIDs = new ObjectQuery(PredefinedObjectType.GROUPMEMBER) .WhereEquals("MemberGroupID", GroupID) .Column("MemberUserID"); // Hide non-approved group users if (HideNonApprovedUsers) { groupUserIDs.WhereNull("MemberRejectedWhen"); } var usersInGroupCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, groupUserIDs); usersWhereCondition.And(usersInGroupCondition); } // Select users in role if (RoleID > 0) { var usersInRoleIDs = UserRoleInfoProvider .GetUserRoles() .WhereEquals("RoleID", RoleID) .Column("UserID"); var usersInRoleCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, usersInRoleIDs); usersWhereCondition.And(usersInRoleCondition); } // Select users depending on site; if filter enabled, where condition is added from filter itself if (!ShowSiteFilter && (SiteID >= 0) && !DisplayUsersFromAllSites) { int siteID = (SiteID == 0) ? SiteContext.CurrentSiteID : SiteID; var siteUserIDs = UserSiteInfoProvider .GetUserSites() .WhereEquals("SiteID", siteID) .Column("UserID"); var siteUsersCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, siteUserIDs); if (TreatGlobalAdminsAsSiteUsers) { siteUsersCondition.Or(GetPrivilegeLevelCondition()); } usersWhereCondition.And(siteUsersCondition); } if (AlwaysShowGlobalAdministrators) { // New instance has to be created in order to produce brackets usersWhereCondition = new WhereCondition(usersWhereCondition).Or(GetPrivilegeLevelCondition()); } // Add additional users if ((AdditionalUsers != null) && (AdditionalUsers.Length > 0)) { var additionalUsersCondition = new WhereCondition().WhereIn(userTypeInfo.IDColumn, AdditionalUsers); new WhereCondition(usersWhereCondition).Or(additionalUsersCondition); } // Control where condition if (!String.IsNullOrEmpty(WhereCondition)) { usersWhereCondition = new WhereCondition(usersWhereCondition).And(new WhereCondition(WhereCondition)); } // Append generated where condition usUsers.WhereCondition = SqlHelper.AddWhereCondition(usUsers.WhereCondition, usersWhereCondition.ToString(expand: true)); pnlUpdate.ShowProgress = (SelectionMode == SelectionModeEnum.Multiple); }
/// <summary> /// Handles the Load event of the Page control. /// </summary> protected void Page_Load(object sender, EventArgs e) { gridDocuments.StopProcessing = ctrlMassActions.StopProcessing = StopProcessing; if (StopProcessing) { return; } InitializeFilterForm(); InitializeMassActionsControl(); if (NodeID <= 0) { return; } checkPermissions = Tree.CheckDocumentUIPermissions(currentSiteName); if (Node != null) { if (currentUserInfo.IsAuthorizedPerDocument(Node, NodePermissionsEnum.ExploreTree) != AuthorizationResultEnum.Allowed) { CMSPage.RedirectToAccessDenied("CMS.Content", "exploretree"); } aliasPath = Node.NodeAliasPath; } ScriptHelper.RegisterLoader(Page); ScriptHelper.RegisterDialogScript(Page); ScriptHelper.RegisterJQuery(Page); // Prepare JavaScript for actions StringBuilder actionScript = new StringBuilder(); actionScript.Append( @" function MoveNode(action, nodeId){ document.getElementById('", hdnMoveId.ClientID, @"').value = action + ';' + nodeId ; ", Page.ClientScript.GetPostBackEventReference(this, "move"), @" }"); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "actionScript", ScriptHelper.GetScript(actionScript.ToString())); // Setup the grid gridDocuments.OrderBy = OrderBy; gridDocuments.OnExternalDataBound += gridDocuments_OnExternalDataBound; gridDocuments.OnDataReload += gridDocuments_OnDataReload; gridDocuments.GridView.RowDataBound += GridView_RowDataBound; gridDocuments.GridView.RowCreated += GridView_RowCreated; gridDocuments.ShowActionsMenu = true; // Initialize columns string columns = @"DocumentGUID, DocumentName, NodeParentID, NodeLevel, NodeOrder, NodeName, NodeAlias, NodeHasChildren, ClassDisplayName, DocumentModifiedWhen, DocumentLastVersionNumber, DocumentIsArchived, DocumentCheckedOutByUserID, DocumentPublishedVersionHistoryID, DocumentWorkflowStepID, DocumentCheckedOutVersionHistoryID, DocumentPublishFrom, NodeAliasPath, DocumentIsWaitingForTranslation"; if (checkPermissions) { columns = SqlHelper.MergeColumns(columns, DocumentColumnLists.SECURITYCHECK_REQUIRED_COLUMNS); } columns = SqlHelper.MergeColumns(columns, DocumentColumnLists.GETPUBLISHED_REQUIRED_COLUMNS); gridDocuments.Columns = SqlHelper.MergeColumns(columns, AdditionalColumns); // Store the refresh node id. It will be used for refreshing the dialog after dialog actions are performed (move, delete...) StringBuilder refreshScripts = new StringBuilder(); refreshScripts.Append(@" function RefreshTree() { if((parent != null) && (parent.RefreshTree != null)) { ", (!RequiresDialog) ? ("parent.RefreshTree(" + NodeID + @"," + NodeID + ");") : ControlsHelper.GetPostBackEventReference(this, "refresh", false, false), @" } } function ClearSelection() { ", gridDocuments.GetClearSelectionScript(), @" } function RefreshGrid() { ClearSelection(); RefreshTree(); ", gridDocuments.GetReloadScript(), @" }"); // Register refresh scripts string refreshScript = ScriptHelper.GetScript(refreshScripts.ToString()); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "refreshListing", refreshScript); // Get all possible columns to retrieve gridDocuments.AllColumns = SqlHelper.JoinColumnList(ObjectTypeManager.GetColumnNames(PredefinedObjectType.NODE, PredefinedObjectType.DOCUMENTLOCALIZATION)); }