mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-14 19:04:51 +08:00
Merge
--HG-- branch : dev
This commit is contained in:
@@ -788,6 +788,11 @@ msgstr "Nom"
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: ~/Core/Reports/Views/Admin/Index.aspx
|
||||
#| msgid "Date"
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: ~/Core/Routable/Drivers/RoutePartDriver.cs
|
||||
#| msgid "Please do not use any of the following characters in your slugs: \"/\", \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\". No spaces are allowed (please use dashes or underscores instead)."
|
||||
msgid "Please do not use any of the following characters in your slugs: \"/\", \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\". No spaces are allowed (please use dashes or underscores instead)."
|
||||
@@ -2028,6 +2033,26 @@ msgstr "Permettre les nouveaux commentaires"
|
||||
msgid "Enable to show the comment form. Disabling still allows the existing comments to be shown but does not allow the conversation to continue."
|
||||
msgstr "Permettre l'affichage du formulaire de commentaire. Désactiver ceci permet aux commentaires existants d'être affichés mais ne permet pas à la conversation de se prolonger."
|
||||
|
||||
#: ~/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.Comments.ascx
|
||||
#| msgid "Comments"
|
||||
msgid "Comments"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: ~/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.Comments.ascx
|
||||
#| msgid "Comments are shown. Existing comments are displayed."
|
||||
msgid "Comments are shown. Existing comments are displayed."
|
||||
msgstr "Les commentaires existants sont affichés."
|
||||
|
||||
#: ~/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.Comments.ascx
|
||||
#| msgid "Allow new comments"
|
||||
msgid "Allow new comments"
|
||||
msgstr "Autoriser les nouveaux commentaires"
|
||||
|
||||
#: ~/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.Comments.ascx
|
||||
#| msgid "Enable to show the comment form. Disabling still allows the existing comments to be shown but does not allow the conversation to continue."
|
||||
msgid "Enable to show the comment form. Disabling still allows the existing comments to be shown but does not allow the conversation to continue."
|
||||
msgstr "Afficher le formulaire d'entrée des commentaires. Désactiver ne supprime pas l'affichage des commentaires existants mais empêche la poursuite de la conversation."
|
||||
|
||||
#: ~/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.SiteSettings.ascx
|
||||
#| msgid "Comments"
|
||||
msgid "Comments"
|
||||
@@ -2048,6 +2073,11 @@ msgstr "Activer la protection contre le Spam"
|
||||
msgid "Akismet key"
|
||||
msgstr "Clé Akismet"
|
||||
|
||||
#: ~/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.SiteSettings.ascx
|
||||
#| msgid "Akismet endpoint URL"
|
||||
msgid "Akismet endpoint URL"
|
||||
msgstr "URL du service Akismet"
|
||||
|
||||
#: ~/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.SiteSettings.ascx
|
||||
#| msgid "Blog URL"
|
||||
msgid "Blog URL"
|
||||
@@ -2129,8 +2159,8 @@ msgid "The \"{0}\" field has been removed."
|
||||
msgstr "Le champ \"{0}\" a été enlevé."
|
||||
|
||||
#: ~/Modules/Orchard.ContentTypes/Views/Admin/AddFieldTo.ascx
|
||||
#| msgid "Add a new field to \"{0}\""
|
||||
msgid "Add a new field to \"{0}\""
|
||||
#| msgid "Add New Field To \"{0}\""
|
||||
msgid "Add New Field To \"{0}\""
|
||||
msgstr "Ajouter un nouveau champ à '{0}'"
|
||||
|
||||
#: ~/Modules/Orchard.ContentTypes/Views/Admin/AddFieldTo.ascx
|
||||
@@ -4114,9 +4144,9 @@ msgid "Permissions"
|
||||
msgstr "Permissions"
|
||||
|
||||
#: ~/Modules/Orchard.Roles/Views/Admin/Edit.aspx
|
||||
#| msgid "{0} Module"
|
||||
msgid "{0} Module"
|
||||
msgstr "Module {0}"
|
||||
#| msgid "{0} Feature"
|
||||
msgid "{0} Feature"
|
||||
msgstr "Fonctionnalité {0}"
|
||||
|
||||
#: ~/Modules/Orchard.Roles/Views/Admin/Edit.aspx
|
||||
#| msgid "Permission"
|
||||
@@ -4398,6 +4428,11 @@ msgstr "L'étiquette n'a pas pu être effacée."
|
||||
msgid "Editing tags failed: "
|
||||
msgstr "La modification des étiquettes a échoué: "
|
||||
|
||||
#: ~/Modules/Orchard.Tags/Controllers/AdminController.cs
|
||||
#| msgid "Couldn't create tag"
|
||||
msgid "Couldn't create tag"
|
||||
msgstr "L'étiquette n'a pas pu être créée."
|
||||
|
||||
#: ~/Modules/Orchard.Tags/Controllers/AdminController.cs
|
||||
#| msgid "The tag {0} already exists"
|
||||
msgid "The tag {0} already exists"
|
||||
@@ -5053,7 +5088,7 @@ msgstr "Modifier"
|
||||
msgid "Posted by {0} {1}"
|
||||
msgstr "Posté par {0} {1}"
|
||||
|
||||
#: ~/Themes/Classic/Views/DisplayTemplates/Parts/Pages.Page.Metadata.ascx
|
||||
#: ~/Themes/Classic/Views/DisplayTemplates/Parts/Common.Metadata.ascx
|
||||
#| msgid "nobody(?)"
|
||||
msgid "nobody(?)"
|
||||
msgstr "personne(?)"
|
||||
@@ -5073,7 +5108,7 @@ msgstr "Modifier"
|
||||
msgid "Posted by {0} {1}"
|
||||
msgstr "Posté par {0} {1}"
|
||||
|
||||
#: ~/Themes/ClassicDark/Views/DisplayTemplates/Parts/Pages.Page.Metadata.ascx
|
||||
#: ~/Themes/ClassicDark/Views/DisplayTemplates/Parts/Common.Metadata.ascx
|
||||
#| msgid "nobody(?)"
|
||||
msgid "nobody(?)"
|
||||
msgstr "personne(?)"
|
||||
@@ -5129,8 +5164,8 @@ msgid "Log Off"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
#: ~/Themes/Contoso/Views/User.ascx
|
||||
#| msgid "Login"
|
||||
msgid "Login"
|
||||
#| msgid "Log on"
|
||||
msgid "Log on"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: ~/Themes/Contoso/Views/DisplayTemplates/Items/Blogs.BlogPost.ListByArchive.ascx
|
||||
@@ -5183,6 +5218,11 @@ msgstr "Bonjour {0}!"
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
#: ~/Themes/Contoso/Views/DisplayTemplates/Parts/Comments.Comments.ascx
|
||||
#| msgid "<span class='CommentUserName'>Leave a comment {0}!</span>"
|
||||
msgid "<span class='CommentUserName'>Leave a comment {0}!</span>"
|
||||
msgstr "<span class='CommentUserName'>Laissez-nous un commentaire, {0}!</span>"
|
||||
|
||||
#: ~/Themes/Contoso/Views/DisplayTemplates/Parts/Comments.Comments.ascx
|
||||
#| msgid "Submit Comment"
|
||||
msgid "Submit Comment"
|
||||
@@ -5308,6 +5348,11 @@ msgstr "Commentaire"
|
||||
msgid "Submit Comment"
|
||||
msgstr "Envoyer le commentaire"
|
||||
|
||||
#: ~/Themes/Corporate/Views/DisplayTemplates/Parts/Common.Metadata.ascx
|
||||
#| msgid "nobody(?)"
|
||||
msgid "nobody(?)"
|
||||
msgstr "personne(?)"
|
||||
|
||||
#: ~/Themes/Green/Views/DisplayTemplates/Parts/Common.Metadata.ascx
|
||||
#| msgid "nobody(?)"
|
||||
msgid "nobody(?)"
|
||||
|
@@ -12,6 +12,7 @@
|
||||
.content-localization .content-localizations li,
|
||||
.content-localization .add-localization {
|
||||
font-size:1.2em;
|
||||
float:left;
|
||||
}
|
||||
.content-localization .content-localizations>* {
|
||||
display:inline-block;
|
||||
|
@@ -7,7 +7,7 @@ html.dyn input.hinted {
|
||||
font-style:italic;
|
||||
}
|
||||
input#PublishLater_ScheduledPublishUtcDate {
|
||||
width:56%;
|
||||
width:50%;
|
||||
}
|
||||
input#PublishLater_ScheduledPublishUtcTime {
|
||||
width:36%;
|
||||
|
@@ -125,7 +125,7 @@ namespace Lucene.Services {
|
||||
.Delete(true);
|
||||
|
||||
var settingsFileName = GetSettingsFileName(indexName);
|
||||
if(File.Exists(settingsFileName)) {
|
||||
if (File.Exists(settingsFileName)) {
|
||||
File.Delete(settingsFileName);
|
||||
}
|
||||
}
|
||||
@@ -139,7 +139,7 @@ namespace Lucene.Services {
|
||||
}
|
||||
|
||||
public void Store(string indexName, IEnumerable<LuceneDocumentIndex> indexDocuments) {
|
||||
if(indexDocuments.AsQueryable().Count() == 0) {
|
||||
if (indexDocuments.AsQueryable().Count() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace Lucene.Services {
|
||||
|
||||
try {
|
||||
|
||||
foreach ( var indexDocument in indexDocuments ) {
|
||||
foreach (var indexDocument in indexDocuments) {
|
||||
current = indexDocument;
|
||||
var doc = CreateDocument(indexDocument);
|
||||
|
||||
@@ -159,7 +159,7 @@ namespace Lucene.Services {
|
||||
Logger.Debug("Document [{0}] indexed", indexDocument.ContentItemId);
|
||||
}
|
||||
}
|
||||
catch ( Exception ex ) {
|
||||
catch (Exception ex) {
|
||||
Logger.Error(ex, "An unexpected error occured while add the document [{0}] from the index [{1}].", current.ContentItemId, indexName);
|
||||
}
|
||||
finally {
|
||||
|
@@ -47,6 +47,7 @@ namespace Lucene.Services {
|
||||
|
||||
InitPendingClause();
|
||||
}
|
||||
|
||||
public ISearchBuilder Parse(string defaultField, string query) {
|
||||
return Parse(new string[] {defaultField}, query);
|
||||
}
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.ContentManagement.FieldStorage.InfosetStorage;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Core.Common.Models;
|
||||
using Orchard.Tasks.Indexing;
|
||||
@@ -21,16 +22,18 @@ namespace Orchard.Indexing.Handlers {
|
||||
_indexingTaskManager = indexingTaskManager;
|
||||
_indexNotifierHandlers = indexNotifierHandlers;
|
||||
|
||||
OnPublishing<ContentPart<CommonPartRecord>>(CreateIndexingTask);
|
||||
OnRemoved<ContentPart<CommonPartRecord>>(RemoveIndexingTask);
|
||||
OnPublishing<ContentPart>(CreateIndexingTask);
|
||||
OnRemoved<ContentPart>(RemoveIndexingTask);
|
||||
}
|
||||
|
||||
void CreateIndexingTask(PublishContentContext context, ContentPart<CommonPartRecord> part) {
|
||||
void CreateIndexingTask(PublishContentContext context, ContentPart part) {
|
||||
_indexingTaskManager.CreateUpdateIndexTask(context.ContentItem);
|
||||
// UpdateIndex();
|
||||
}
|
||||
|
||||
void RemoveIndexingTask(RemoveContentContext context, ContentPart<CommonPartRecord> part) {
|
||||
void RemoveIndexingTask(RemoveContentContext context, ContentPart part) {
|
||||
_indexingTaskManager.CreateDeleteIndexTask(context.ContentItem);
|
||||
// UpdateIndex();
|
||||
}
|
||||
|
||||
private void UpdateIndex() {
|
||||
|
@@ -13,15 +13,20 @@ namespace Orchard.Indexing.Handlers {
|
||||
OnIndexing<InfosetPart>(
|
||||
(context, cp) => {
|
||||
var infosetPart = context.ContentItem.As<InfosetPart>();
|
||||
if ( infosetPart != null ) {
|
||||
foreach ( var part in infosetPart.ContentItem.Parts ) {
|
||||
foreach ( var field in part.PartDefinition.Fields ) {
|
||||
if ( field.Settings.GetModel<FieldIndexing>().Included ) {
|
||||
var fieldName = field.Name;
|
||||
var value = part.Fields.Where(f => f.Name == fieldName).First().Storage.Get<string>(null);
|
||||
context.DocumentIndex.Add(String.Format("{0}-{1}", infosetPart.TypeDefinition.Name, fieldName.ToLower()), value).RemoveTags().Analyze();
|
||||
}
|
||||
if (infosetPart == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// part fields
|
||||
foreach ( var part in infosetPart.ContentItem.Parts ) {
|
||||
foreach ( var field in part.PartDefinition.Fields ) {
|
||||
if (!field.Settings.GetModel<FieldIndexing>().Included) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var fieldName = field.Name;
|
||||
var value = part.Fields.Where(f => f.Name == fieldName).First().Storage.Get<string>(null);
|
||||
context.DocumentIndex.Add(String.Format("{0}-{1}", infosetPart.TypeDefinition.Name.ToLower(), fieldName.ToLower()), value).RemoveTags().Analyze();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@@ -103,8 +103,10 @@ namespace Orchard.Indexing.Services {
|
||||
|
||||
|
||||
// nothing to do ?
|
||||
if (taskRecords.Length + updateIndexDocuments.Count == 0)
|
||||
if (taskRecords.Length + updateIndexDocuments.Count == 0) {
|
||||
Logger.Information("Index update requested, nothing to do");
|
||||
return;
|
||||
}
|
||||
|
||||
Logger.Information("Processing {0} indexing tasks", taskRecords.Length);
|
||||
|
||||
|
@@ -2,20 +2,25 @@
|
||||
using Orchard.Environment;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Packaging.Services;
|
||||
using Orchard.UI.Notify;
|
||||
|
||||
namespace Orchard.Packaging {
|
||||
[OrchardFeature("Gallery")]
|
||||
public class DefaultPackagingUpdater : IFeatureEventHandler {
|
||||
private readonly IPackagingSourceManager _packagingSourceManager;
|
||||
private readonly INotifier _notifier;
|
||||
|
||||
public DefaultPackagingUpdater(IPackagingSourceManager packagingSourceManager) {
|
||||
public DefaultPackagingUpdater(IPackagingSourceManager packagingSourceManager, INotifier notifier) {
|
||||
_packagingSourceManager = packagingSourceManager;
|
||||
_notifier = notifier;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public void Install(Feature feature) {
|
||||
// add http://orchardproject.net/feeds/modules as the default Modules Feed
|
||||
_packagingSourceManager.AddSource(new PackagingSource { Id = Guid.NewGuid(), FeedTitle = "Orchard Module Gallery", FeedUrl = "http://orchardproject.net/feeds/modules" });
|
||||
_packagingSourceManager.AddSource(new PackagingSource { Id = Guid.NewGuid(), FeedTitle = "Orchard Module Gallery", FeedUrl = "http://orchardproject.net/gallery/feed" });
|
||||
}
|
||||
|
||||
public void Enable(Feature feature) {
|
||||
|
@@ -8,32 +8,38 @@ using System.Xml.Linq;
|
||||
using System.Xml.Serialization;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.FileSystems.AppData;
|
||||
using Orchard.Localization;
|
||||
using Orchard.UI.Notify;
|
||||
|
||||
namespace Orchard.Packaging.Services {
|
||||
[OrchardFeature("PackagingServices")]
|
||||
public class PackagingSourceManager : IPackagingSourceManager {
|
||||
private static readonly XmlSerializer _sourceSerializer = new XmlSerializer(typeof (List<PackagingSource>), new XmlRootAttribute("Sources"));
|
||||
private static readonly XmlSerializer _sourceSerializer = new XmlSerializer(typeof(List<PackagingSource>), new XmlRootAttribute("Sources"));
|
||||
private readonly IAppDataFolder _appDataFolder;
|
||||
private readonly INotifier _notifier;
|
||||
|
||||
public PackagingSourceManager(IAppDataFolder appDataFolder) {
|
||||
public PackagingSourceManager(IAppDataFolder appDataFolder, INotifier notifier) {
|
||||
_appDataFolder = appDataFolder;
|
||||
_notifier = notifier;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
Localizer T { get; set; }
|
||||
|
||||
#region IPackagingSourceManager Members
|
||||
|
||||
public IEnumerable<PackagingSource> GetSources() {
|
||||
string text = _appDataFolder.ReadFile(GetSourcesPath());
|
||||
if (string.IsNullOrEmpty(text)) {
|
||||
if ( string.IsNullOrEmpty(text) ) {
|
||||
return Enumerable.Empty<PackagingSource>();
|
||||
}
|
||||
|
||||
var textReader = new StringReader(_appDataFolder.ReadFile(GetSourcesPath()));
|
||||
return (IEnumerable<PackagingSource>) _sourceSerializer.Deserialize(textReader);
|
||||
return (IEnumerable<PackagingSource>)_sourceSerializer.Deserialize(textReader);
|
||||
}
|
||||
|
||||
public void AddSource(PackagingSource source) {
|
||||
UpdateSource(source);
|
||||
SaveSources(GetSources().Concat(new[] {source}));
|
||||
SaveSources(GetSources().Concat(new[] { source }).GroupBy(x => x.FeedUrl).Select(g => g.First()));
|
||||
}
|
||||
|
||||
public void RemoveSource(Guid id) {
|
||||
@@ -41,16 +47,16 @@ namespace Orchard.Packaging.Services {
|
||||
}
|
||||
|
||||
public void UpdateLists() {
|
||||
foreach (PackagingSource source in GetSources()) {
|
||||
foreach ( PackagingSource source in GetSources() ) {
|
||||
UpdateSource(source);
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<PackagingEntry> GetModuleList(PackagingSource packagingSource = null) {
|
||||
IEnumerable<PackagingEntry> packageInfos = ( packagingSource == null ? GetSources() : new [] { packagingSource })
|
||||
IEnumerable<PackagingEntry> packageInfos = ( packagingSource == null ? GetSources() : new[] { packagingSource } )
|
||||
.SelectMany(
|
||||
source =>
|
||||
Bind(ParseFeed(_appDataFolder.ReadFile(GetFeedCachePath(source))),
|
||||
Bind(ParseFeed(GetModuleListForSource(source)),
|
||||
feed =>
|
||||
feed.Items.SelectMany(
|
||||
item =>
|
||||
@@ -65,6 +71,13 @@ namespace Orchard.Packaging.Services {
|
||||
return packageInfos.ToArray();
|
||||
}
|
||||
|
||||
private string GetModuleListForSource(PackagingSource source) {
|
||||
if ( !_appDataFolder.FileExists(GetFeedCachePath(source)) ) {
|
||||
UpdateSource(source);
|
||||
}
|
||||
return _appDataFolder.ReadFile(GetFeedCachePath(source));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private static string GetSourcesPath() {
|
||||
@@ -83,8 +96,13 @@ namespace Orchard.Packaging.Services {
|
||||
}
|
||||
|
||||
private void UpdateSource(PackagingSource source) {
|
||||
XDocument feed = XDocument.Load(source.FeedUrl, LoadOptions.PreserveWhitespace);
|
||||
_appDataFolder.CreateFile(GetFeedCachePath(source), feed.ToString(SaveOptions.DisableFormatting));
|
||||
try {
|
||||
XDocument feed = XDocument.Load(source.FeedUrl, LoadOptions.PreserveWhitespace);
|
||||
_appDataFolder.CreateFile(GetFeedCachePath(source), feed.ToString(SaveOptions.DisableFormatting));
|
||||
}
|
||||
catch ( Exception e ) {
|
||||
_notifier.Warning(T("Error loading content of feed '{0}': {1}", source.FeedUrl, e.Message));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +111,7 @@ namespace Orchard.Packaging.Services {
|
||||
}
|
||||
|
||||
private static IEnumerable<T> Unit<T>(T t) where T : class {
|
||||
return t != null ? new[] {t} : Enumerable.Empty<T>();
|
||||
return t != null ? new[] { t } : Enumerable.Empty<T>();
|
||||
}
|
||||
|
||||
private static IEnumerable<T2> Bind<T, T2>(T t, Func<T, IEnumerable<T2>> f) where T : class {
|
||||
@@ -101,6 +119,9 @@ namespace Orchard.Packaging.Services {
|
||||
}
|
||||
|
||||
private SyndicationFeed ParseFeed(string content) {
|
||||
if ( string.IsNullOrEmpty(( content )) )
|
||||
return new SyndicationFeed();
|
||||
|
||||
var formatter = new Atom10FeedFormatter<SyndicationFeed>();
|
||||
formatter.ReadFrom(XmlReader.Create(new StringReader(content)));
|
||||
return formatter.Feed;
|
||||
|
17
src/Orchard.Web/Modules/Orchard.Packaging/Styles/admin.css
Normal file
17
src/Orchard.Web/Modules/Orchard.Packaging/Styles/admin.css
Normal file
@@ -0,0 +1,17 @@
|
||||
.moduleName {
|
||||
float:left;
|
||||
}
|
||||
|
||||
.contentItems .related {
|
||||
padding:1.2em 0.4em 0.5em
|
||||
}
|
||||
|
||||
.contentItems .properties {
|
||||
float:none;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
.contentItems .pageStatus {
|
||||
margin:.8em 0;
|
||||
color:#666;
|
||||
}
|
@@ -1,4 +1,6 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Packaging.ViewModels.PackagingModulesViewModel>" %>
|
||||
<% Html.RegisterStyle("admin.css"); %>
|
||||
|
||||
<h1>
|
||||
<%: Html.TitleForPage(T("Browse Gallery").ToString())%></h1>
|
||||
|
||||
@@ -25,21 +27,22 @@
|
||||
<ul class="contentItems">
|
||||
<%foreach (var item in Model.Modules) {%>
|
||||
<li>
|
||||
<ul class="summary">
|
||||
<div class="properties">
|
||||
<div class="moduleName">
|
||||
<h2><%: (item.SyndicationItem.Title == null ? T("(No title)").Text : item.SyndicationItem.Title.Text)%><span> - <%: T("Version: {0}", "1.0")%></span></h2>
|
||||
<p><%: (item.SyndicationItem.Summary == null ? T("(No description").Text : item.SyndicationItem.Summary.Text) %></p>
|
||||
<ul class="pageStatus" style="color:#666; margin:.6em 0 0 0;">
|
||||
<li><%: T("Last Updated: {0}", item.SyndicationItem.LastUpdatedTime.ToLocalTime()) %></li>
|
||||
<li> | <%: T("Author: {0}", item.SyndicationItem.Authors.Any() ? String.Join(", ", item.SyndicationItem.Authors.Select(a => a.Name)) : T("Unknown").Text)%></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="related">
|
||||
<%:Html.ActionLink(T("Install").ToString(), "Install", new RouteValueDictionary {{"SyndicationId",item.SyndicationItem.Id}})%><%:T(" | ") %>
|
||||
<a href="<%:item.PackageStreamUri%>"><%: T("Download") %></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</ul>
|
||||
<div class="properties">
|
||||
<p><%: (item.SyndicationItem.Summary == null ? T("(No description").Text : item.SyndicationItem.Summary.Text) %>The sandbox module is a testing ground for Orchard developers and should not be activated except for testing and development purposes.</p>
|
||||
<ul class="pageStatus">
|
||||
<li><%: T("Last Updated: {0}", item.SyndicationItem.LastUpdatedTime.ToLocalTime()) %></li>
|
||||
<li> | <%: T("Author: {0}", item.SyndicationItem.Authors.Any() ? String.Join(", ", item.SyndicationItem.Authors.Select(a => a.Name)) : T("Unknown").Text)%></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li><%
|
||||
}%>
|
||||
</ul><%
|
||||
|
@@ -379,6 +379,7 @@ span.message {
|
||||
}
|
||||
.content-localization .content-localizations li:hover {
|
||||
background-color: #000;
|
||||
border-color: #99ff66;
|
||||
}
|
||||
.content-localization .content-localizations li a {
|
||||
text-decoration: none;
|
||||
|
@@ -425,6 +425,7 @@ html, body {background-color: #FFFFFF; background-image: url(../Content/Images/b
|
||||
|
||||
.content-localization .content-localizations ul {
|
||||
overflow: auto;
|
||||
list-style-type:none;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1,3 +1,13 @@
|
||||
.contentItems {
|
||||
border:1px solid #D3D2D2;
|
||||
}
|
||||
|
||||
button, .button, .button:link, .button:visited {
|
||||
cursor:pointer;
|
||||
padding:0.1em 0.8em 0.2em 0.8em;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.button {
|
||||
line-height:inherit;
|
||||
}
|
@@ -445,7 +445,7 @@ label input {
|
||||
}
|
||||
/* todo: (heskew) try to get .text on stuff like .text-box */
|
||||
select, textarea, input.text, input.textMedium, input.text-box {
|
||||
padding:1px;
|
||||
padding:3px;
|
||||
border:1px solid #bdbcbc;
|
||||
}
|
||||
input.text, input.textMedium, input.text-box {
|
||||
@@ -454,6 +454,9 @@ input.text, input.textMedium, input.text-box {
|
||||
input.textMedium {
|
||||
width:26em;
|
||||
}
|
||||
select {
|
||||
padding:1px;
|
||||
}
|
||||
select:focus, textarea:focus, input.text:focus, input.text-box:focus {
|
||||
border-color:#666d51;
|
||||
}
|
||||
@@ -472,7 +475,6 @@ textarea {
|
||||
min-height:8em;
|
||||
}
|
||||
#main input.large.text, #main textarea {
|
||||
padding:4px;
|
||||
width:99%;
|
||||
}
|
||||
#main .primary input.large.text, #main .primary textarea {
|
||||
@@ -635,6 +637,7 @@ button.ibutton {
|
||||
/* (Items) Tables
|
||||
----------------------------------------------------------*/
|
||||
table.items {
|
||||
margin:0 0 1.4em 0;
|
||||
background:#fff;
|
||||
border:1px solid #eaeaea;
|
||||
border-bottom:none;
|
||||
|
@@ -105,6 +105,9 @@ namespace Orchard.Data {
|
||||
private Hash ComputeHash() {
|
||||
var hash = new Hash();
|
||||
|
||||
hash.AddString(_shellSettings.DataProvider);
|
||||
hash.AddString(_shellSettings.DataTablePrefix);
|
||||
hash.AddString(_shellSettings.DataConnectionString);
|
||||
hash.AddString(_shellSettings.Name);
|
||||
|
||||
// We need to hash the assemnly names, record names and property names
|
||||
|
@@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||
using Orchard.ContentManagement;
|
||||
|
||||
namespace Orchard.Indexing {
|
||||
public interface IIndexProvider : IDependency {
|
||||
public interface IIndexProvider : ISingletonDependency {
|
||||
/// <summary>
|
||||
/// Creates a new index
|
||||
/// </summary>
|
||||
|
@@ -12,6 +12,8 @@ namespace Orchard.Utility {
|
||||
public string Value { get { return _hash.ToString(); } }
|
||||
|
||||
public void AddString(string value) {
|
||||
if ( string.IsNullOrEmpty(value) )
|
||||
return;
|
||||
_hash += value.GetHashCode();
|
||||
}
|
||||
|
||||
|
@@ -15,13 +15,13 @@ using PackageIndexReferenceImplementation.Services;
|
||||
|
||||
namespace PackageIndexReferenceImplementation.Controllers {
|
||||
[HandleError]
|
||||
public class ModulesController : Controller {
|
||||
public class FeedController : Controller {
|
||||
private readonly FeedStorage _feedStorage;
|
||||
private readonly MediaStorage _mediaStorage;
|
||||
|
||||
public IMembershipService MembershipService { get; set; }
|
||||
|
||||
public ModulesController() {
|
||||
public FeedController() {
|
||||
_feedStorage = new FeedStorage();
|
||||
_mediaStorage = new MediaStorage();
|
||||
if ( MembershipService == null ) { MembershipService = new AccountMembershipService(); }
|
@@ -72,7 +72,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controllers\AccountController.cs" />
|
||||
<Compile Include="Controllers\ModulesController.cs" />
|
||||
<Compile Include="Controllers\FeedController.cs" />
|
||||
<Compile Include="Controllers\Artifacts\AtomFeedResult.cs" />
|
||||
<Compile Include="Controllers\Artifacts\AtomItemResult.cs" />
|
||||
<Compile Include="Controllers\Artifacts\ContentTypeAttribute.cs" />
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<asp:Content ID="loginContent" ContentPlaceHolderID="MainContent" runat="server">
|
||||
<h2>Log On</h2>
|
||||
<p>
|
||||
Please enter your username and password. <%: Html.ActionLink("Register", "Register") %> if you don't have an account.
|
||||
Please enter your username and password.
|
||||
</p>
|
||||
|
||||
<% using (Html.BeginForm()) { %>
|
||||
|
Reference in New Issue
Block a user