mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-20 10:45:29 +08:00
Adding simple search to gallery. Fixinx ratings CSS.
--HG-- branch : dev
This commit is contained in:
@@ -18,8 +18,8 @@ namespace Orchard.Packaging {
|
|||||||
.Add(T("Available"), "2", item => item.Action("Modules", "Gallery", new { area = "Orchard.Packaging" })
|
.Add(T("Available"), "2", item => item.Action("Modules", "Gallery", new { area = "Orchard.Packaging" })
|
||||||
.Permission(StandardPermissions.SiteOwner).LocalNav()));
|
.Permission(StandardPermissions.SiteOwner).LocalNav()));
|
||||||
|
|
||||||
builder.Add(T("Settings"), "30", menu => menu
|
builder.Add(T("Configuration"), "50", menu => menu
|
||||||
.Add(T("Feeds"), "3", item => item.Action("Sources", "Gallery", new { area = "Orchard.Packaging" })
|
.Add(T("Feeds"), "25", item => item.Action("Sources", "Gallery", new { area = "Orchard.Packaging" })
|
||||||
.Permission(StandardPermissions.SiteOwner)));
|
.Permission(StandardPermissions.SiteOwner)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -149,7 +150,8 @@ namespace Orchard.Packaging.Controllers {
|
|||||||
var sourceExtensions = _packagingSourceManager.GetExtensionList(
|
var sourceExtensions = _packagingSourceManager.GetExtensionList(
|
||||||
source,
|
source,
|
||||||
packages => {
|
packages => {
|
||||||
packages = packages.Where(p => p.PackageType == packageType);
|
packages = packages.Where(p => p.PackageType == packageType &&
|
||||||
|
(string.IsNullOrEmpty(options.SearchText) || p.Id.Contains(options.SearchText)));
|
||||||
|
|
||||||
switch (options.Order) {
|
switch (options.Order) {
|
||||||
case PackagingExtensionsOrder.Downloads:
|
case PackagingExtensionsOrder.Downloads:
|
||||||
@@ -174,7 +176,8 @@ namespace Orchard.Packaging.Controllers {
|
|||||||
// count packages separately to prevent loading everything just to count
|
// count packages separately to prevent loading everything just to count
|
||||||
totalCount += _packagingSourceManager.GetExtensionCount(
|
totalCount += _packagingSourceManager.GetExtensionCount(
|
||||||
source,
|
source,
|
||||||
packages => packages.Where(p => p.PackageType == packageType)
|
packages => packages.Where(p => p.PackageType == packageType &&
|
||||||
|
(string.IsNullOrEmpty(options.SearchText) || p.Id.Contains(options.SearchText)))
|
||||||
);
|
);
|
||||||
|
|
||||||
extensions = extensions == null ? sourceExtensions : extensions.Concat(sourceExtensions);
|
extensions = extensions == null ? sourceExtensions : extensions.Concat(sourceExtensions);
|
||||||
|
@@ -47,7 +47,11 @@
|
|||||||
width: 171px;
|
width: 171px;
|
||||||
height: 128px;
|
height: 128px;
|
||||||
}
|
}
|
||||||
|
.properties li p {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
.ratings {
|
.ratings {
|
||||||
|
float: right;
|
||||||
background:url(../Content/Images/stars.png) repeat-x;
|
background:url(../Content/Images/stars.png) repeat-x;
|
||||||
height: 14px;
|
height: 14px;
|
||||||
width: 75px;
|
width: 75px;
|
||||||
@@ -57,4 +61,11 @@
|
|||||||
background: url(../Content/Images/stars.png) repeat-x 0 -14px;
|
background: url(../Content/Images/stars.png) repeat-x 0 -14px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 45px;
|
width: 45px;
|
||||||
|
}
|
||||||
|
.search-actions {
|
||||||
|
float: right;
|
||||||
|
display: inline;
|
||||||
|
height: auto;
|
||||||
|
margin: 0 1.4em 0 0;
|
||||||
|
padding-top: 0;
|
||||||
}
|
}
|
@@ -1,6 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Orchard.Packaging.Models;
|
using Orchard.Packaging.Models;
|
||||||
using Orchard.Packaging.Services;
|
|
||||||
|
|
||||||
namespace Orchard.Packaging.ViewModels {
|
namespace Orchard.Packaging.ViewModels {
|
||||||
public class PackagingExtensionsViewModel {
|
public class PackagingExtensionsViewModel {
|
||||||
@@ -13,6 +12,7 @@ namespace Orchard.Packaging.ViewModels {
|
|||||||
|
|
||||||
public class PackagingExtensionsOptions {
|
public class PackagingExtensionsOptions {
|
||||||
public int? SourceId { get; set; }
|
public int? SourceId { get; set; }
|
||||||
|
public string SearchText { get; set; }
|
||||||
public PackagingExtensionsOrder Order { get; set; }
|
public PackagingExtensionsOrder Order { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
var pageSizes = new List<int?>() { 10, 50, 100 };
|
var pageSizes = new List<int?>() { 10, 50, 100 };
|
||||||
var defaultPageSize = WorkContext.CurrentSite.PageSize;
|
var defaultPageSize = WorkContext.CurrentSite.PageSize;
|
||||||
if(!pageSizes.Contains(defaultPageSize)) {
|
if (!pageSizes.Contains(defaultPageSize)) {
|
||||||
pageSizes.Add(defaultPageSize);
|
pageSizes.Add(defaultPageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="bulk-actions">
|
<fieldset class="bulk-actions">
|
||||||
<label for="filterResults">@T("Sort by:")</label>
|
<label for="filterResults">@T("Sort by:")</label>
|
||||||
<select id="filterResults" name="@Html.NameOf(m => m.Options.Order)">
|
<select id="filterResults" name="@Html.NameOf(m => m.Options.Order)">
|
||||||
@@ -38,19 +39,25 @@
|
|||||||
@foreach(int size in pageSizes.OrderBy(p => p)) {
|
@foreach(int size in pageSizes.OrderBy(p => p)) {
|
||||||
@Html.SelectOption((int)Model.Pager.PageSize, size, size.ToString())
|
@Html.SelectOption((int)Model.Pager.PageSize, size, size.ToString())
|
||||||
}
|
}
|
||||||
<select>
|
</select>
|
||||||
<button type="submit">@T("Apply")</button>
|
<button type="submit">@T("Apply")</button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset class="search-actions">
|
||||||
|
<input type="text" id="searchText" name="@Html.NameOf(m => m.Options.SearchText)" />
|
||||||
|
|
||||||
|
<button type="submit">@T("Search")</button>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
if (Model.Extensions.Count() > 0) {
|
if (Model.Extensions.Count() > 0) {
|
||||||
<ul class="contentItems">
|
<ul class="contentItems">
|
||||||
@foreach (var item in Model.Extensions) {
|
@foreach (var item in Model.Extensions) {
|
||||||
<li>
|
<li>
|
||||||
@{
|
@{
|
||||||
string iconUrl = @item.IconUrl;
|
string iconUrl = @item.IconUrl;
|
||||||
if (string.IsNullOrWhiteSpace(iconUrl)) {
|
if (string.IsNullOrWhiteSpace(iconUrl)) {
|
||||||
iconUrl = Href("../../Content/Images/ModuleDefaultIcon.png");
|
iconUrl = Href("../../Content/Images/ModuleDefaultIcon.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="iconThumbnail">
|
<div class="iconThumbnail">
|
||||||
@@ -79,9 +86,10 @@
|
|||||||
<li> | @T("Website: ")
|
<li> | @T("Website: ")
|
||||||
@if (!string.IsNullOrEmpty(item.ProjectUrl)) { <a href="@item.ProjectUrl">@item.ProjectUrl</a> } else { @T("Unknown").ToString() }
|
@if (!string.IsNullOrEmpty(item.ProjectUrl)) { <a href="@item.ProjectUrl">@item.ProjectUrl</a> } else { @T("Unknown").ToString() }
|
||||||
</li>
|
</li>
|
||||||
<li> | @T("Rating")
|
<li><div> | @T("Rating: ")
|
||||||
<div class="ratings" style="width:@(15*5)px" title="@T("Ratings: {0} ({1})", item.Rating, item.RatingsCount)">
|
<div class="ratings" style="width:@(15 * 5)px" title="@T("Ratings: {0} ({1})", item.Rating, item.RatingsCount)">
|
||||||
<div class="score" style="width:@(15*(item.Rating))px"> </div>
|
<div class="score" style="width:@(15 * (item.Rating))px"> </div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -95,6 +103,6 @@
|
|||||||
</li>}
|
</li>}
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Display(Model.Pager)
|
@Display(Model.Pager)
|
||||||
}
|
}
|
@@ -3,27 +3,28 @@
|
|||||||
@using System.Linq;
|
@using System.Linq;
|
||||||
|
|
||||||
@{
|
@{
|
||||||
Style.Require("PackagingAdmin");
|
Style.Require("PackagingAdmin");
|
||||||
|
|
||||||
var pageSizes = new List<int?>() { 10, 50, 100 };
|
var pageSizes = new List<int?>() { 10, 50, 100 };
|
||||||
var defaultPageSize = WorkContext.CurrentSite.PageSize;
|
var defaultPageSize = WorkContext.CurrentSite.PageSize;
|
||||||
if(!pageSizes.Contains(defaultPageSize)) {
|
if (!pageSizes.Contains(defaultPageSize)) {
|
||||||
pageSizes.Add(defaultPageSize);
|
pageSizes.Add(defaultPageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
Layout.Title = T("Themes").ToString();
|
Layout.Title = T("Themes").ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@using ( Html.BeginFormAntiForgeryPost(Url.Action("Themes", "Gallery")) ) {
|
@using (Html.BeginFormAntiForgeryPost(Url.Action("Themes", "Gallery"))) {
|
||||||
<fieldset class="bulk-actions">
|
<fieldset class="bulk-actions">
|
||||||
<label for="filterResults" class="bulk-filter">@T("Feed:")</label>
|
<label for="filterResults" class="bulk-filter">@T("Show")</label>
|
||||||
<select id="sourceId" name="sourceId">
|
<select id="sourceId" name="sourceId">
|
||||||
@Html.SelectOption("", Model.SelectedSource == null, T("Any (show all feeds)").ToString())
|
@Html.SelectOption("", Model.SelectedSource == null, T("All feeds").ToString())
|
||||||
@foreach (var source in Model.Sources) {
|
@foreach (var source in Model.Sources) {
|
||||||
@Html.SelectOption(source.Id, Model.SelectedSource != null && Model.SelectedSource.Id == source.Id, source.FeedTitle)
|
@Html.SelectOption(source.Id, Model.SelectedSource != null && Model.SelectedSource.Id == source.Id, source.FeedTitle)
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="bulk-actions">
|
<fieldset class="bulk-actions">
|
||||||
<label for="filterResults">@T("Sort by:")</label>
|
<label for="filterResults">@T("Sort by:")</label>
|
||||||
<select id="filterResults" name="@Html.NameOf(m => m.Options.Order)">
|
<select id="filterResults" name="@Html.NameOf(m => m.Options.Order)">
|
||||||
@@ -35,28 +36,33 @@
|
|||||||
<label for="pageSize">@T("Show:")</label>
|
<label for="pageSize">@T("Show:")</label>
|
||||||
<select id="pageSize" name="PageSize">
|
<select id="pageSize" name="PageSize">
|
||||||
@Html.SelectOption((int)Model.Pager.PageSize, 0, T("All").ToString())
|
@Html.SelectOption((int)Model.Pager.PageSize, 0, T("All").ToString())
|
||||||
@foreach(int size in pageSizes.OrderBy(p => p)) {
|
@foreach (int size in pageSizes.OrderBy(p => p)) {
|
||||||
@Html.SelectOption((int)Model.Pager.PageSize, size, size.ToString())
|
@Html.SelectOption((int)Model.Pager.PageSize, size, size.ToString())
|
||||||
}
|
}
|
||||||
<select>
|
</select>
|
||||||
<button type="submit">@T("Apply")</button>
|
<button type="submit">@T("Apply")</button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset class="search-actions">
|
||||||
|
<input type="text" id="searchText" name="@Html.NameOf(m => m.Options.SearchText)" value="@Model.Options.SearchText" />
|
||||||
|
|
||||||
|
<button type="submit">@T("Search")</button>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
if (Model.Extensions.Count() > 0) {
|
if (Model.Extensions.Count() > 0) {
|
||||||
<ul class="contentItems theme">
|
<ul class="contentItems theme">
|
||||||
@foreach (var item in Model.Extensions) {
|
@foreach (var item in Model.Extensions) {
|
||||||
<li>
|
<li>
|
||||||
@{
|
@{
|
||||||
string extensionClass = "iconThumbnail";
|
string extensionClass = "iconThumbnail";
|
||||||
string iconUrl = @item.IconUrl;
|
string iconUrl = @item.IconUrl;
|
||||||
if (!string.IsNullOrWhiteSpace(@item.FirstScreenshot)) {
|
if (!string.IsNullOrWhiteSpace(@item.FirstScreenshot)) {
|
||||||
iconUrl = @item.FirstScreenshot;
|
iconUrl = @item.FirstScreenshot;
|
||||||
extensionClass = "screenshotThumbnail";
|
extensionClass = "screenshotThumbnail";
|
||||||
}
|
} else if (string.IsNullOrWhiteSpace(iconUrl)) {
|
||||||
else if (string.IsNullOrWhiteSpace(iconUrl)) {
|
iconUrl = Href("../../Content/Images/imagePlaceholder.png");
|
||||||
iconUrl = Href("../../Content/Images/imagePlaceholder.png");
|
extensionClass = "screenshotThumbnail";
|
||||||
extensionClass = "screenshotThumbnail";
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="@extensionClass">
|
<div class="@extensionClass">
|
||||||
@@ -72,7 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="related">
|
<div class="related">
|
||||||
@Html.ActionLink(T("Install").ToString(), "Install", new RouteValueDictionary {{"packageId", item.PackageId}, {"version", item.Version}, {"sourceId", item.Source.Id}, {"redirectTo", "Themes"}})@T(" | ")
|
@Html.ActionLink(T("Install").ToString(), "Install", new RouteValueDictionary { { "packageId", item.PackageId }, { "version", item.Version }, { "sourceId", item.Source.Id }, { "redirectTo", "Themes" } })@T(" | ")
|
||||||
<a href="@item.PackageStreamUri">@T("Download")</a>
|
<a href="@item.PackageStreamUri">@T("Download")</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -83,12 +89,12 @@
|
|||||||
<li> | @T("Author: {0}", !string.IsNullOrEmpty(item.Authors) ? item.Authors : T("Unknown").ToString())</li>
|
<li> | @T("Author: {0}", !string.IsNullOrEmpty(item.Authors) ? item.Authors : T("Unknown").ToString())</li>
|
||||||
<li> | @T("Downloads: {0}", item.DownloadCount)</li>
|
<li> | @T("Downloads: {0}", item.DownloadCount)</li>
|
||||||
<li> | @T("Website: ")
|
<li> | @T("Website: ")
|
||||||
@if(!string.IsNullOrEmpty(item.ProjectUrl)) { <a href="@item.ProjectUrl">@item.ProjectUrl</a> }
|
@if (!string.IsNullOrEmpty(item.ProjectUrl)) { <a href="@item.ProjectUrl">@item.ProjectUrl</a> } else { @T("Unknown").ToString() }
|
||||||
else { @T("Unknown").ToString() }
|
|
||||||
</li>
|
</li>
|
||||||
<li> | @T("Rating")
|
<li><div> | @T("Rating: ")
|
||||||
<div class="ratings" style="width:@(15*5)px" title="@T("Ratings: {0} ({1})", item.Rating, item.RatingsCount)">
|
<div class="ratings" style="width:@(15 * 5)px" title="@T("Ratings: {0} ({1})", item.Rating, item.RatingsCount)">
|
||||||
<div class="score" style="width:@(15*(item.Rating))px"> </div>
|
<div class="score" style="width:@(15 * (item.Rating))px"> </div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
Reference in New Issue
Block a user