Exemplo n.º 1
0
    void refreshTabs()
    {
        tabbedView.Visible = true;
        CKeyNLR selected = null;
        _currentUser = null;
        if (userList.GetSelectedCount() > 0) {
            selected = userList.GetSelectedKeys().GetFirst();
            if (WAFContext.Session.NodeExists(selected.NodeId, true, true)) {
                _currentUser = WAFContext.Session.GetContent<SystemUser>(selected);
            } else {
                selected = null;
                cntFrm.Content = null;
                userList.ClearFlaggedValues();
            }
        }
        if (selected == null) { tabbedView.Visible = false; return; }

        // Details
        if (cntFrm.Content == null || cntFrm.Content.RootContent.Key.lKey != _currentUser.Key.lKey) {
            cntFrm.Content = _currentUser;
        }

        // Effective memberships
        AqlQuery qm = WAFContext.Session.CreateQuery();
        qm.From<UserGroup>();
        qm.Select<UserGroup>();
        qm.Select(AqlUserGroup.NodeId);

        UniqueList<int> allGroupMembersShips;
        try {
            allGroupMembersShips = _currentUser.GetAllMembershipsById();
        } catch (CircularReferenceException error) {
            WAFContext.Session.Notify(error);
            allGroupMembersShips = new UniqueList<int>(-1);
        }
        qm.Where(Aql.In(AqlUserGroup.NodeId, allGroupMembersShips));
        listMemberships.Query = qm;

        // Effective permissions
        AqlQuery qp = WAFContext.Session.CreateQuery();
        qp.From<ContentBase>();
        qp.Select<ContentBase>();
        if (!_currentUser.IsAdmin) {
            AqlExpressionBuilder ex = new AqlExpressionBuilder();
            UniqueList<int> ms = new UniqueList<int>(allGroupMembersShips);
            ms.Add((int)SystemUserGroupType.AllUsers);
            ms.Add((int)SystemUserGroupType.Anonymous);
            AqlPropertyInteger prop = null;
            switch (rblPermissions.SelectedValue) {
                case "Read": prop = AqlContent.ReadGroupId; break;
                case "Edit": prop = AqlContent.EditGroupId; break;
                case "Publish": prop = AqlContent.PublishGroupId; break;
                default: break;
            }
            qp.Where(Aql.In(prop, ms));
        }
        listPermissions.Query = qp;

        // Relevant content
        AqlQuery qr = WAFContext.Session.CreateQuery();
        qr.From<ContentBase>();
        qr.Select<ContentBase>();
        qr.Select(AqlContent.NodeId);
        qr.IncludeUnpublished = true;
        qr.Where(
            (AqlContent.AuthorId == _currentUser.NodeId)
            | (AqlContent.CreatedById == _currentUser.NodeId)
            | (AqlContent.PublicationApprovedById == _currentUser.NodeId)
            | (AqlContent.ChangedById == _currentUser.NodeId
        ));
        listRelevant.Query = qr;
    }
Exemplo n.º 2
0
 void setQuery()
 {
     AqlExpressionBuilder expStatus = new AqlExpressionBuilder();
     expStatus.Or(AqlUrlStatus.NodeId == -1);
     foreach (ListItem i in chkLinkStatus.Items) {
         if (i.Selected) expStatus.Or(AqlUrlStatus.Status == int.Parse(i.Value));
     }
     AqlExpressionBuilder expType = new AqlExpressionBuilder();
     expType.Or(AqlUrlStatus.NodeId == -1);
     foreach (ListItem i in chkLinkType.Items) {
         if (i.Selected) expType.Or(AqlUrlStatus.UrlType == int.Parse(i.Value));
     }
     AqlExpressionBoolean exp = null;
     if (!expStatus.IsEmpty) exp = expStatus;
     if (!expType.IsEmpty) {
         if (expStatus.IsEmpty) {
             exp = expType;
         } else {
             exp = new AqlExpressionAnd(expType, expStatus);
         }
     }
     if (!WAFContext.Session.Access.IsAdmin()) exp = exp & AqlUrlStatus.SiteId == WAFContext.Session.SiteId;
     var session = WAFContext.Session;
     IEnumerable<UrlStatus> urls = WAFContext.Engine.SystemSession.GetContents<UrlStatus>(exp);
     _links = WAFContext.Session.GetLinks(urls);
     _links = (
         from l in _links orderby l.Url, l.LinkType, l.Content.Name, l.PropertyName
         where session.Access.IsMember(l.Content.EditAccessGroupId)
         select l).ToList();
     QueryData qd = new QueryData();
     qd.AddField("Index", DataValueType.IntegerType);
     qd.AddField("Key", DataValueType.LongStringType);
     qd.AddField("Tooltip", DataValueType.LongStringType);
     for (int i = 0; i < _links.Count; i++) qd.AddRow(i, _links[i].Content.Key.ToString() + "_" + i + "_" + _links[i].Url.Replace("_", "###").Replace(Environment.NewLine, ""), getToolTip(_links[i]));
     lst.IQuery = new DataQuery(qd);
 }