/// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>List with languages view models</returns>
        public SearchableGridViewModel <LanguageViewModel> Execute(SearchableGridOptions request)
        {
            SearchableGridViewModel <LanguageViewModel> model;

            request.SetDefaultSortingOptions("Name");

            var query = Repository
                        .AsQueryable <Models.Language>();

            if (!string.IsNullOrWhiteSpace(request.SearchQuery))
            {
                query = query.Where(language => language.Name.Contains(request.SearchQuery) || language.Code.Contains(request.SearchQuery));
            }

            var languagesFuture = query
                                  .Select(language =>
                                          new LanguageViewModel
            {
                Id      = language.Id,
                Version = language.Version,
                Name    = language.Name,
                Code    = language.Code
            });

            var count = query.ToRowCountFutureValue();

            languagesFuture = languagesFuture.AddSortingAndPaging(request);

            var languages = languagesFuture.ToList();

            SetLanguageCodes(languages);
            model = new SearchableGridViewModel <LanguageViewModel>(languages, request, count.Value);

            return(model);
        }
Example #2
0
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>List with blog post view models</returns>
        public SearchableGridViewModel <SubscriberViewModel> Execute(SearchableGridOptions request)
        {
            SearchableGridViewModel <SubscriberViewModel> model;

            request.SetDefaultSortingOptions("Email");

            var query = Repository
                        .AsQueryable <Subscriber>();

            if (!string.IsNullOrWhiteSpace(request.SearchQuery))
            {
                query = query.Where(a => a.Email.Contains(request.SearchQuery));
            }

            var subscribers = query
                              .Select(subscriber =>
                                      new SubscriberViewModel
            {
                Id      = subscriber.Id,
                Version = subscriber.Version,
                Email   = subscriber.Email
            });

            var count = query.ToRowCountFutureValue();

            subscribers = subscribers.AddSortingAndPaging(request);

            model = new SearchableGridViewModel <SubscriberViewModel>(subscribers.ToList(), request, count.Value);

            return(model);
        }
Example #3
0
        /// <summary>
        /// Executes this command.
        /// </summary>
        /// <param name="request">A filter to search for specific tags.</param>
        /// <returns>A list of tags.</returns>
        public SearchableGridViewModel <TagItemViewModel> Execute(SearchableGridOptions request)
        {
            SearchableGridViewModel <TagItemViewModel> model;

            request.SetDefaultSortingOptions("Name");

            Root.Models.Tag  alias      = null;
            TagItemViewModel modelAlias = null;

            var query = UnitOfWork.Session
                        .QueryOver(() => alias)
                        .Where(() => !alias.IsDeleted);

            if (!string.IsNullOrWhiteSpace(request.SearchQuery))
            {
                var searchQuery = string.Format("%{0}%", request.SearchQuery);
                query = query.Where(Restrictions.InsensitiveLike(NHibernate.Criterion.Projections.Property(() => alias.Name), searchQuery));
            }

            query = query
                    .SelectList(select => select
                                .Select(() => alias.Id).WithAlias(() => modelAlias.Id)
                                .Select(() => alias.Name).WithAlias(() => modelAlias.Name)
                                .Select(() => alias.Version).WithAlias(() => modelAlias.Version))
                    .TransformUsing(Transformers.AliasToBean <TagItemViewModel>());

            var count = query.ToRowCountFutureValue();

            var tags = query.AddSortingAndPaging(request).Future <TagItemViewModel>();

            model = new SearchableGridViewModel <TagItemViewModel>(tags.ToList(), request, count.Value);

            return(model);
        }
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>The list of blog template view models</returns>
        public SearchableGridViewModel <SettingItemViewModel> Execute(bool request)
        {
            // Get current default template
            var option = optionService.GetDefaultOption();

            var response = new SearchableGridViewModel <SettingItemViewModel>()
            {
                GridOptions = new SearchableGridOptions()
            };

            var textMode = ContentTextMode.Html;

            if (option != null)
            {
                textMode = option.DefaultContentTextMode;
            }

            var defaultEditMode = new SettingItemViewModel
            {
                Value = (int)textMode,
                Name  = BlogGlobalization.SiteSettings_BlogSettingsTab_DefaultEditMode_Title,
                Key   = BlogModuleConstants.BlogPostDefaultContentTextModeKey
            };

            var settings = new List <SettingItemViewModel> {
                defaultEditMode
            };

            response.Items = new CustomPagination <SettingItemViewModel>(settings, settings.Count, 100, settings.Count);

            return(response);
        }
Example #5
0
        /// <summary>
        /// User list for Site Settings.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>User list view.</returns>
        public ActionResult Index(SearchableGridOptions request)
        {
            var users = GetCommand <GetUsersCommand>().ExecuteCommand(request);
            var model = new SearchableGridViewModel <UserItemViewModel>(users, new SearchableGridOptions(), users.Count);

            return(View(model));
        }
Example #6
0
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>List with blog post view models</returns>
        public SearchableGridViewModel <AuthorViewModel> Execute(SearchableGridOptions request)
        {
            SearchableGridViewModel <AuthorViewModel> model;

            request.SetDefaultSortingOptions("Name");

            var query = Repository
                        .AsQueryable <Author>();

            if (!string.IsNullOrWhiteSpace(request.SearchQuery))
            {
                query = query.Where(a => a.Name.Contains(request.SearchQuery));
            }

            var authors = query
                          .Select(author =>
                                  new AuthorViewModel
            {
                Id      = author.Id,
                Version = author.Version,
                Name    = author.Name,
                Image   = author.Image == null ? null :
                          new ImageSelectorViewModel
                {
                    ImageId      = author.Image.Id,
                    ImageVersion = author.Image.Version,
                    ImageUrl     = author.Image.PublicUrl,
                    ThumbnailUrl = author.Image.PublicThumbnailUrl,
                    ImageTooltip = author.Image.Caption
                }
            });

            var count = query.ToRowCountFutureValue();

            authors = authors.AddSortingAndPaging(request);

            model = new SearchableGridViewModel <AuthorViewModel>(authors.ToList(), request, count.Value);

            return(model);
        }
Example #7
0
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="options">The request.</param>
        /// <returns></returns>
        /// <exception cref="System.NotImplementedException"></exception>
        public SearchableGridViewModel <SiteSettingRedirectViewModel> Execute(SearchableGridOptions options)
        {
            SearchableGridViewModel <SiteSettingRedirectViewModel> model;

            options.SetDefaultSortingOptions("PageUrl");

            Models.Redirect alias = null;
            SiteSettingRedirectViewModel modelAlias = null;

            var query = UnitOfWork.Session.QueryOver(() => alias).Where(() => !alias.IsDeleted);

            if (!string.IsNullOrWhiteSpace(options.SearchQuery))
            {
                var searchQuery = string.Format("%{0}%", options.SearchQuery);
                query =
                    query.Where(
                        Restrictions.InsensitiveLike(Projections.Property(() => alias.PageUrl), searchQuery) ||
                        Restrictions.InsensitiveLike(Projections.Property(() => alias.RedirectUrl), searchQuery));
            }

            query =
                query.SelectList(
                    select =>
                    select.Select(() => alias.Id)
                    .WithAlias(() => modelAlias.Id)
                    .Select(() => alias.PageUrl)
                    .WithAlias(() => modelAlias.PageUrl)
                    .Select(() => alias.RedirectUrl)
                    .WithAlias(() => modelAlias.RedirectUrl)
                    .Select(() => alias.Version)
                    .WithAlias(() => modelAlias.Version)).TransformUsing(Transformers.AliasToBean <SiteSettingRedirectViewModel>());

            var count = query.ToRowCountFutureValue();

            var redirects = query.AddSortingAndPaging(options).Future <SiteSettingRedirectViewModel>();

            model = new SearchableGridViewModel <SiteSettingRedirectViewModel>(redirects.ToList(), options, count.Value);

            return(model);
        }
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>A list of blog posts</returns>
        public SearchableGridViewModel <SiteSettingBlogPostViewModel> Execute(SearchableGridOptions request)
        {
            SearchableGridViewModel <SiteSettingBlogPostViewModel> model;

            request.SetDefaultSortingOptions("Title");

            BlogPost alias = null;
            SiteSettingBlogPostViewModel modelAlias = null;

            var query = UnitOfWork.Session
                        .QueryOver(() => alias)
                        .Where(() => !alias.IsDeleted && alias.Status != PageStatus.Preview);

            if (!string.IsNullOrWhiteSpace(request.SearchQuery))
            {
                var searchQuery = string.Format("%{0}%", request.SearchQuery);
                query = query.Where(Restrictions.InsensitiveLike(Projections.Property(() => alias.Title), searchQuery));
            }

            query = query
                    .SelectList(select => select
                                .Select(() => alias.Id).WithAlias(() => modelAlias.Id)
                                .Select(() => alias.Title).WithAlias(() => modelAlias.Title)
                                .Select(() => alias.CreatedOn).WithAlias(() => modelAlias.CreatedOn)
                                .Select(() => alias.ModifiedOn).WithAlias(() => modelAlias.ModifiedOn)
                                .Select(() => alias.ModifiedByUser).WithAlias(() => modelAlias.ModifiedByUser)
                                .Select(() => alias.Status).WithAlias(() => modelAlias.PageStatus)
                                .Select(() => alias.Version).WithAlias(() => modelAlias.Version)
                                .Select(() => alias.PageUrl).WithAlias(() => modelAlias.PageUrl))
                    .TransformUsing(Transformers.AliasToBean <SiteSettingBlogPostViewModel>());

            var count = query.ToRowCountFutureValue();

            var blogPosts = query.AddSortingAndPaging(request).Future <SiteSettingBlogPostViewModel>();

            model = new SearchableGridViewModel <SiteSettingBlogPostViewModel>(blogPosts.ToList(), request, count.Value);

            return(model);
        }
Example #9
0
        public static string RenderPager<TEntity>(SearchableGridViewModel<TEntity> model)
            where TEntity : IEditableGridItem
        {
            var pagination = model.Items;
            var builder = new StringBuilder();

            builder.AppendFormat("<div class='{0} clearfix'>", PagerDivClassName);

            // total pages
            var totalPages = pagination.TotalPages > 0 ? pagination.TotalPages : 1;
            var pageNumber = pagination.PageNumber;

            // lower bound
            var pagingLowerBound = pageNumber - ActivePagePosition;
            if (pagingLowerBound < 1)
            {
                pagingLowerBound = 1;
            }

            // upper bound
            var pagingUpperBound = pagingLowerBound + TotalPagingLinks;
            if (pagingUpperBound > totalPages)
            {
                pagingUpperBound = totalPages;
            }

            // lower bound correction
            if (pagingUpperBound - pagingLowerBound < TotalPagingLinks)
            {
                pagingLowerBound = pagingUpperBound - TotalPagingLinks;
                if (pagingLowerBound < 1)
                {
                    pagingLowerBound = 1;
                }
            }

            builder.AppendFormat("<span class=\"{0}\">{1}: </span> ", PagerTextClassName, RootGlobalization.Paging_Page_Title);

            // Create first link according to lower bound
            if (pagingLowerBound > 1)
            {
                builder.Append(CreatePageLink(1, "1 "));
                builder.AppendFormat(pagingLowerBound != 2 ? "<span class=\"{0}\">...</span>" : " ", PagerTextClassName);
            }

            // Pages numbers:
            for (var i = pagingLowerBound; i <= pagingUpperBound; i++)
            {
                if (i == pageNumber)
                {
                    // Current page:
                    builder.Append(CreatePageLink(i, i.ToString(CultureInfo.InvariantCulture) + " ", string.Format("{0} {1}", PageNumberClassName, ActivePageClassName)));
                }
                else
                {
                    builder.Append(CreatePageLink(i, i.ToString(CultureInfo.InvariantCulture) + " "));
                    if (i == pagingUpperBound && i <= totalPages - 1)
                    {
                        builder.AppendFormat("<span class=\"{0}\">...</span>", PagerTextClassName);
                    }
                }
            }

            // last page according to upper bound
            if (pagingUpperBound < totalPages)
            {
                builder.Append(CreatePageLink(totalPages, string.Format("{0} ", totalPages)));
            }

            // previuos button
            builder.Append(pageNumber == 1
               ? string.Format("<a class=\"{0}\">{1}</a> ", PreviousPageClassName, RootGlobalization.Button_Paging_Previous)
               : string.Format(@"<a data-page-number=""{0}"" class=""{1}"">{2}</a> ", pageNumber - 1, PreviousPageClassName, RootGlobalization.Button_Paging_Previous));

            // next button
            builder.Append(pageNumber == totalPages || pagination.FirstItem > pagination.TotalItems
               ? string.Format("<a class=\"{0}\">{1}</a> ", NextPageClassName, RootGlobalization.Button_Paging_Next)
               : string.Format(@"<a data-page-number=""{0}"" class=""{1}"">{2}</a> ", pageNumber + 1, NextPageClassName, RootGlobalization.Button_Paging_Next));

            builder.Append("</div>");

            return builder.ToString();
        }
Example #10
0
        public void Should_Find_Page_And_Return_ViewModel_Successfully()
        {
            // DEBUG START
            var request = new SearchableGridOptions
            {
                SearchQuery = "a",
                PageNumber  = 2,
                PageSize    = 3,
                Column      = "PageUrl",
                Direction   = SortDirection.Descending
            };
            var sessionFactory = this.Container.Resolve <ISessionFactoryProvider>();
            // DEBUG END

            SearchableGridViewModel <SiteSettingRedirectViewModel> model;

            using (var session = sessionFactory.OpenSession())
            {
                BetterCms.Module.Pages.Models.Redirect alias      = null;
                SiteSettingRedirectViewModel           modelAlias = null;

                IQueryOver <BetterCms.Module.Pages.Models.Redirect, BetterCms.Module.Pages.Models.Redirect> query = session.QueryOver(() => alias);

                // Filter
                if (!string.IsNullOrWhiteSpace(request.SearchQuery))
                {
                    var searchQuery = string.Format("%{0}%", request.SearchQuery);
                    query = query
                            .Where(
                        Restrictions.InsensitiveLike(Projections.Property(() => alias.PageUrl), searchQuery) ||
                        Restrictions.InsensitiveLike(Projections.Property(() => alias.RedirectUrl), searchQuery));
                }

                // Select fields
                query = query
                        .SelectList(select => select
                                    .Select(() => alias.Id).WithAlias(() => modelAlias.Id)
                                    .Select(() => alias.PageUrl).WithAlias(() => modelAlias.PageUrl)
                                    .Select(() => alias.RedirectUrl).WithAlias(() => modelAlias.RedirectUrl)
                                    .Select(() => alias.Version).WithAlias(() => modelAlias.Version))
                        .TransformUsing(Transformers.AliasToBean <SiteSettingRedirectViewModel>());

                // Count
                var count = query.RowCount();

                // Sorting and paging
                query.AddSortingAndPaging(request);

                // Get results
                var redirects = query.List <SiteSettingRedirectViewModel>();

                model = new SearchableGridViewModel <SiteSettingRedirectViewModel>
                {
                    GridOptions = request,
                    Items       = new CustomPagination <SiteSettingRedirectViewModel>(redirects, request.PageNumber, request.PageSize, count)
                };
            }

            // DEBUG START
            Assert.IsNotNull(model);
            // DEBUG END
        }
Example #11
0
        /// <summary>
        /// Adds the paging to page.
        /// </summary>
        /// <typeparam name="TModel">The type of the model.</typeparam>
        /// <typeparam name="TGridItem">The type of the grid item.</typeparam>
        /// <param name="htmlHelper">The HTML helper.</param>
        /// <param name="model">The model.</param>
        /// <returns>Generated HTML string with paging</returns>
        public static IHtmlString RenderPaging <TModel, TGridItem>(this HtmlHelper <TModel> htmlHelper, SearchableGridViewModel <TGridItem> model)
            where TGridItem : IEditableGridItem
        {
            var pages = PagerHelper.RenderPager(model);

            return(new MvcHtmlString(pages));
        }
        public void Should_Find_Page_And_Return_ViewModel_Successfully()
        {
            // DEBUG START
            var request = new SearchableGridOptions
                {
                    SearchQuery = "a",
                    PageNumber = 2,
                    PageSize = 3,
                    Column = "PageUrl",
                    Direction = SortDirection.Descending
                };
            var sessionFactory = this.Container.Resolve<ISessionFactoryProvider>();
            // DEBUG END

            SearchableGridViewModel<SiteSettingRedirectViewModel> model;

            using (var session = sessionFactory.OpenSession())
            {
                BetterCms.Module.Pages.Models.Redirect alias = null;
                SiteSettingRedirectViewModel modelAlias = null;

                IQueryOver<BetterCms.Module.Pages.Models.Redirect, BetterCms.Module.Pages.Models.Redirect> query = session.QueryOver(() => alias);

                // Filter
                if (!string.IsNullOrWhiteSpace(request.SearchQuery))
                {
                    var searchQuery = string.Format("%{0}%", request.SearchQuery);
                    query = query
                        .Where(
                            Restrictions.InsensitiveLike(Projections.Property(() => alias.PageUrl), searchQuery) ||
                            Restrictions.InsensitiveLike(Projections.Property(() => alias.RedirectUrl), searchQuery));
                }

                // Select fields
                query = query
                    .SelectList(select => select
                        .Select(() => alias.Id).WithAlias(() => modelAlias.Id)
                        .Select(() => alias.PageUrl).WithAlias(() => modelAlias.PageUrl)
                        .Select(() => alias.RedirectUrl).WithAlias(() => modelAlias.RedirectUrl)
                        .Select(() => alias.Version).WithAlias(() => modelAlias.Version))
                    .TransformUsing(Transformers.AliasToBean<SiteSettingRedirectViewModel>());

                // Count
                var count = query.RowCount();

                // Sorting and paging
                query.AddSortingAndPaging(request);

                // Get results
                var redirects = query.List<SiteSettingRedirectViewModel>();

                model = new SearchableGridViewModel<SiteSettingRedirectViewModel>
                {
                    GridOptions = request,
                    Items = new CustomPagination<SiteSettingRedirectViewModel>(redirects, request.PageNumber, request.PageSize, count)
                };
            }

            // DEBUG START
            Assert.IsNotNull(model);
            // DEBUG END
        }
Example #13
0
 /// <summary>
 /// User list for Site Settings.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns>User list view.</returns>
 public ActionResult Index(SearchableGridOptions request)
 {
     var users = GetCommand<GetUsersCommand>().ExecuteCommand(request);
     var model = new SearchableGridViewModel<UserItemViewModel>(users, new SearchableGridOptions(), users.Count);
     return View(model);
 }