Exemplo n.º 1
0
    /// <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);
    }
Exemplo n.º 2
0
    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);
            }
        }
    }
Exemplo n.º 5
0
    /// <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);
    }
Exemplo n.º 6
0
    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));
    }
Exemplo n.º 8
0
    /// <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);
        }
    }
Exemplo n.º 9
0
    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);
            }
        }
    }
Exemplo n.º 10
0
    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;
    }
Exemplo n.º 11
0
 /// <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();
     }
 }
Exemplo n.º 12
0
    /// <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);
    }
Exemplo n.º 13
0
    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;
    }
Exemplo n.º 14
0
    /// <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();
            }
        }
    }
Exemplo n.º 17
0
    /// <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()));
    }
Exemplo n.º 18
0
    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);
    }
Exemplo n.º 19
0
        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();
        }
Exemplo n.º 20
0
    /// <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));
    }
Exemplo n.º 22
0
    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));
    }
Exemplo n.º 23
0
    /// <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();
            }
        }
    }
Exemplo n.º 24
0
        /// <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));
    }
Exemplo n.º 26
0
    /// <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);
    }
Exemplo n.º 27
0
        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);
        }
Exemplo n.º 28
0
    /// <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);
    }
Exemplo n.º 30
0
    /// <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));
    }