当前位置: 首页>>代码示例>>C#>>正文


C# IContentManager.Query方法代码示例

本文整理汇总了C#中IContentManager.Query方法的典型用法代码示例。如果您正苦于以下问题:C# IContentManager.Query方法的具体用法?C# IContentManager.Query怎么用?C# IContentManager.Query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IContentManager的用法示例。


在下文中一共展示了IContentManager.Query方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: HasCommentsHandler

        public HasCommentsHandler(
            IContentManager contentManager,
            IRepository<HasCommentsRecord> hasCommentsRepository,
            ICommentService commentService) {

            Filters.Add(StorageFilter.For(hasCommentsRepository));

            OnActivated<HasComments>((ctx, x) => {
                x.CommentsActive = true;
                x.CommentsShown = true;
            });

            OnLoading<HasComments>((context, comments) => {
                comments._comments.Loader(list => contentManager
                    .Query<Comment, CommentRecord>()
                    .Where(x => x.CommentedOn == context.ContentItem.Id && x.Status == CommentStatus.Approved)
                    .List().ToList());

                comments._pendingComments.Loader(list => contentManager
                    .Query<Comment, CommentRecord>()
                    .Where(x => x.CommentedOn == context.ContentItem.Id && x.Status == CommentStatus.Pending)
                    .List().ToList());
            });

            OnRemoved<HasComments>(
                (context, c) => {
                    foreach (var comment in commentService.GetCommentsForCommentedContent(context.ContentItem.Id)) {
                        contentManager.Remove(comment.ContentItem);
                    }
                });
        }
开发者ID:mofashi2011,项目名称:orchardcms,代码行数:31,代码来源:HasCommentsHandler.cs

示例2: CommentsPartHandler

        public CommentsPartHandler(
            IContentManager contentManager,
            IRepository<CommentsPartRecord> commentsRepository,
            ICommentService commentService) {

            Filters.Add(StorageFilter.For(commentsRepository));

            OnInitializing<CommentsPart>((ctx, part) => {
                part.CommentsActive = true;
                part.CommentsShown = true;
                part.Comments = new List<CommentPart>();
            });

            OnLoading<CommentsPart>((context, comments) => {
                comments.CommentsField.Loader(list => contentManager
                    .Query<CommentPart, CommentPartRecord>()
                    .Where(x => x.CommentsPartRecord == context.ContentItem.As<CommentsPart>().Record && x.Status == CommentStatus.Approved)
                    .OrderBy(x => x.Position)
                    .List().ToList());

                comments.PendingCommentsField.Loader(list => contentManager
                    .Query<CommentPart, CommentPartRecord>()
                    .Where(x => x.CommentsPartRecord == context.ContentItem.As<CommentsPart>().Record && x.Status == CommentStatus.Pending)
                    .List().ToList());
            });

            OnRemoved<CommentsPart>(
                (context, c) => {
                    var comments = commentService.GetCommentsForCommentedContent(context.ContentItem.Id).List();
                    foreach (var comment in comments) {
                        contentManager.Remove(comment.ContentItem);
                    }
                });
        }
开发者ID:kyletowb,项目名称:InfusionDocs,代码行数:34,代码来源:CommentsPartHandler.cs

示例3: CommentPartHandler

        public CommentPartHandler(
            IRepository<CommentPartRecord> commentsRepository,
            IContentManager contentManager,
            ICommentService commentService
            ) {

            Filters.Add(StorageFilter.For(commentsRepository));

            OnLoading<CommentPart>((context, comment) => {
                comment.CommentedOnContentItemField.Loader(
                    item => contentManager.Get(comment.CommentedOn)
                );

                comment.CommentedOnContentItemMetadataField.Loader(
                    item => contentManager.GetItemMetadata(comment.CommentedOnContentItem)
                );
            });

            OnRemoving<CommentPart>((context, comment) => {
                foreach(var response in contentManager.Query<CommentPart, CommentPartRecord>().Where(x => x.RepliedOn == comment.Id).List()) {
                    contentManager.Remove(response.ContentItem);
                }
            });

            // keep CommentsPart.Count in sync
            OnPublished<CommentPart>((context, part) => commentService.ProcessCommentsCount(part.CommentedOn));
            OnUnpublished<CommentPart>((context, part) => commentService.ProcessCommentsCount(part.CommentedOn));
            OnVersioned<CommentPart>((context, part, newVersionPart) => commentService.ProcessCommentsCount(newVersionPart.CommentedOn));
            OnRemoved<CommentPart>((context, part) => commentService.ProcessCommentsCount(part.CommentedOn));

            OnIndexing<CommentPart>((context, commentPart) => context.DocumentIndex
                                                                .Add("commentText", commentPart.Record.CommentText));
        }
开发者ID:SunRobin2015,项目名称:RobinWithOrchard,代码行数:33,代码来源:CommentPartHandler.cs

示例4: CommentPartHandler

        public CommentPartHandler(
            IRepository<CommentPartRecord> commentsRepository,
            IContentManager contentManager) {

            Filters.Add(StorageFilter.For(commentsRepository));

            OnLoading<CommentPart>((context, comment) => {
                comment.CommentedOnContentItemField.Loader(
                    item => contentManager.Get(comment.CommentedOn)
                );

                comment.CommentedOnContentItemMetadataField.Loader(
                    item => contentManager.GetItemMetadata(comment.CommentedOnContentItem)
                );
            });


            OnRemoving<CommentPart>((context, comment) => {
                foreach(var response in contentManager.Query<CommentPart, CommentPartRecord>().Where(x => x.RepliedOn == comment.Id).List()) {
                    contentManager.Remove(response.ContentItem);
                }
            });

            OnIndexing<CommentPart>((context, commentPart) => context.DocumentIndex
                                                                .Add("commentText", commentPart.Record.CommentText));
        }
开发者ID:kanujhun,项目名称:orchard,代码行数:26,代码来源:CommentPartHandler.cs

示例5: NotificationBatchPartHandler

        public NotificationBatchPartHandler(
            IContentManager contentManager,
            Lazy<IRoleService> roleServiceLazy,
            Lazy<IRepository<UserRolesPartRecord>> userRolesRepositoryLazy)
        {
            OnActivated<NotificationBatchPart>((context, part) =>
            {
                part.RecipientsTypeField.Loader(() =>
                    {
                        var recipientsType = part.Retrieve<string>("RecipientsType");
                        if (string.IsNullOrEmpty(recipientsType)) return NotificationBatchRecipientsType.Role;
                        return (NotificationBatchRecipientsType)Enum.Parse(typeof(NotificationBatchRecipientsType), recipientsType);
                    });

                part.RecipientsTypeField.Setter(recipientsType =>
                    {
                        part.Store("RecipientsType", recipientsType.ToString());
                        return recipientsType;
                    });

                part.AvailableRolesField.Loader(() => roleServiceLazy.Value.GetRoles());

                part.RecipientListField.Loader(() => contentManager.Get(part.RecipientListId));

                part.AvailableRecipientListsField.Loader(() => contentManager.Query(Constants.RecipientListContentType).List());

                part.RecipientListField.Setter(recipientsList =>
                    {
                        part.RecipientListId = recipientsList != null ? recipientsList.ContentItem.Id : 0;
                        return recipientsList;
                    });

                part.ActualRecipientIdsField.Loader(() =>
                    {
                        IEnumerable<int> recipientIds;

                        switch (part.RecipientsType)
                        {
                            case NotificationBatchRecipientsType.Role:
                                recipientIds = userRolesRepositoryLazy.Value.Table
                                    .Where(record => record.Role.Id == part.RecipientsRoleId)
                                    .Select(record => record.UserId);
                                break;
                            case NotificationBatchRecipientsType.RecipientList:
                                recipientIds = part.RecipientList.As<NotificationRecipientsPart>().RecipientIds;
                                break;
                            case NotificationBatchRecipientsType.AdhocRecipients:
                                recipientIds = part.As<NotificationRecipientsPart>().RecipientIds;
                                break;
                            default:
                                throw new InvalidOperationException("Not supported recipient type.");
                        }

                        return recipientIds;
                    });

                part.ActualRecipientsField.Loader(() => contentManager.GetMany<IUser>(part.ActualRecipientIds, VersionOptions.Published, new QueryHints().ExpandParts<UserPart>()));
            });
        }
开发者ID:Lombiq,项目名称:Orchard-User-Notifications,代码行数:59,代码来源:NotificationBatchPartHandler.cs

示例6: MailHelper

 public MailHelper(IContentManager contentManager, IEncryptionService encryptionService) 
 {
     _encryptionService = encryptionService;
     _mailSettings = contentManager.Query<EmailSettingsPart, EmailSettingsPartRecord>().List().FirstOrDefault();
     if (_mailSettings == null) 
     {
         _mailSettings = new EmailSettingsPart();
         _mailSettings.Record = new EmailSettingsPartRecord();
     }
 }
开发者ID:ShuanWang,项目名称:devoffice.com-shuanTestRepo,代码行数:10,代码来源:MailHelper.cs

示例7: BuildGetMediaContentItemsQuery

        private static IContentQuery<MediaPart> BuildGetMediaContentItemsQuery(
            IContentManager contentManager, string folderPath = null, bool recursive = false, string order = null, string mediaType = null, VersionOptions versionOptions = null) {

            var query = contentManager.Query<MediaPart>(versionOptions);

            query = query.Join<MediaPartRecord>();

            if (!String.IsNullOrEmpty(mediaType)) {
                query = query.ForType(new[] { mediaType });
            }

            if (!String.IsNullOrEmpty(folderPath)) {
                if (recursive) {
                    query = query.Join<MediaPartRecord>().Where(m => m.FolderPath.StartsWith(folderPath));
                }
                else {
                    query = query.Join<MediaPartRecord>().Where(m => m.FolderPath == folderPath);
                }
            }

            switch (order) {
                case "title":
                    query = query.Join<TitlePartRecord>()
                        .OrderBy(x => x.Title)
                        .Join<MediaPartRecord>();
                    break;

                case "modified":
                    query = query.Join<CommonPartRecord>()
                        .OrderByDescending(x => x.ModifiedUtc)
                        .Join<MediaPartRecord>();
                    break;

                case "published":
                    query = query.Join<CommonPartRecord>()
                        .OrderByDescending(x => x.PublishedUtc)
                        .Join<MediaPartRecord>();
                    break;

                default:
                    query = query.Join<CommonPartRecord>()
                        .OrderByDescending(x => x.CreatedUtc)
                        .Join<MediaPartRecord>();
                    break;
            }

            query = query.Join<MediaPartRecord>();

            return query;
        }
开发者ID:Golone,项目名称:Orchard,代码行数:50,代码来源:MediaLibraryService.cs

示例8: NotificationRecipientsPartHandler

        public NotificationRecipientsPartHandler(Lazy<IJsonConverter> jsonConverterLazy, IContentManager contentManager)
        {
            OnActivated<NotificationRecipientsPart>((context, part) =>
            {
                part.RecipientIdsField.Loader(() =>
                {
                    var serializedEntries = part.Retrieve<string>("RecipientsIdsSerialized");
                    if (string.IsNullOrEmpty(serializedEntries)) return Enumerable.Empty<int>();
                    return jsonConverterLazy.Value.Deserialize<IEnumerable<int>>(serializedEntries);
                });

                part.RecipientIdsField.Setter(recipients =>
                {
                    Argument.ThrowIfNull(recipients, "recipients");
                    part.Store<string>("RecipientsIdsSerialized", jsonConverterLazy.Value.Serialize(recipients));
                    return recipients;
                });

                part.RecipientsField.Loader(() => contentManager.GetMany<IUser>(part.RecipientIds, VersionOptions.Published, new QueryHints().ExpandParts<UserPart>()));

                part.RecipientsField.Setter(recipients =>
                    {
                        Argument.ThrowIfNull(recipients, "recipients");
                        part.RecipientIds = recipients.Select(user => user.ContentItem.Id);
                        return recipients;
                    });

                part.RecipientNamesField.Loader(() => string.Join(", ", part.Recipients.Select(user => user.UserName)));

                part.RecipientNamesField.Setter(names =>
                    {
                        if (string.IsNullOrEmpty(names)) return names;

                        var namesArray = names
                            .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                            .Select(name => name.Trim().ToLowerInvariant())
                            .ToArray();

                        // To be very thoughtful this could use IMembershipService instead, but that would mean n queries instead of 1.
                        part.Recipients = contentManager
                            .Query("User")
                            .Where<UserPartRecord>(record => namesArray.Contains(record.NormalizedUserName))
                            .List<IUser>();

                        return names;
                    });
            });
        }
开发者ID:Lombiq,项目名称:Orchard-User-Notifications,代码行数:48,代码来源:NotificationRecipientsPartHandler.cs


注:本文中的IContentManager.Query方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。