Merge branch '1.10.x' into dev

# Conflicts:
#	src/Gulpfile.js
#	src/Orchard.Web/Modules/Orchard.Azure/Services/Caching/Output/AzureOutputCacheStorageProvider.cs
This commit is contained in:
Sebastien Ros
2016-09-22 12:15:32 -07:00
41 changed files with 149 additions and 107 deletions

View File

@@ -22,10 +22,7 @@ Our mission is to empower our users and foster a dedicated and diverse community
## Project Status ## Project Status
Orchard is currently in version **[1.10.1](https://github.com/OrchardCMS/Orchard/releases/tag/1.10.1)** and **[1.9.3](https://github.com/OrchardCMS/Orchard/releases/tag/1.9.3)**: Orchard is currently in version **[1.10.1](https://github.com/OrchardCMS/Orchard/releases/tag/1.10.1)**: It contains bugfixes and the more impactful changes and new features added in the latest major version (*1.10*).
- *1.10.1* is the latest minor version that contains bugfixes and the more impactful changes and new features added in the latest major version (*1.10*). **If you're new to Orchard, you should use this version.**
- *1.9.3* contains further bugfixes in addition to *1.9.2* and these versions are based on the feature set of Orchard *1.9*.
We invite participation by the developer community in shaping the projects direction, so that we can publicly validate our designs and development approach. We invite participation by the developer community in shaping the projects direction, so that we can publicly validate our designs and development approach.
All our releases are available on our [Releases](https://github.com/OrchardCMS/Orchard/releases) page, and it's easy to [Install Orchard using the Web Platform Installer](http://docs.orchardproject.net/Documentation/Installing-Orchard) as well. We encourage interested developers to check out the source code on the Orchard GitHub site and get involved with the project. All our releases are available on our [Releases](https://github.com/OrchardCMS/Orchard/releases) page, and it's easy to [Install Orchard using the Web Platform Installer](http://docs.orchardproject.net/Documentation/Installing-Orchard) as well. We encourage interested developers to check out the source code on the Orchard GitHub site and get involved with the project.

View File

@@ -1,9 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 --> <!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<log4net xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <log4net xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<root>
<priority value="ERROR" xdt:Transform="SetAttributes(value)" />
<appender-ref ref="debug-file" xdt:Locator="Match(ref)" xdt:Transform="Remove" />
</root>
<logger name="Orchard" xdt:Locator="Match(name)" xdt:Transform="Remove" /> <logger name="Orchard" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<appender name="debugger" xdt:Locator="Match(name)" xdt:Transform="Remove" /> <appender name="debugger" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<appender name="debug-file" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<appender> <appender>
<immediateFlush value="false" xdt:Transform="SetAttributes(value)" /> <immediateFlush value="false" xdt:Transform="SetAttributes(value)" />
</appender> </appender>
</log4net> </log4net>

View File

@@ -1,8 +1,12 @@
@using Orchard.Utility.Extensions; @using Orchard.Utility.Extensions;
@{ @{
var contentTypeClassName = ((string)Model.ContentItem.ContentType).HtmlClassify(); var contentTypeClassName = ((string)Model.ContentItem.ContentType).HtmlClassify();
Model.Classes.Add(contentTypeClassName);
Model.Classes.Add("content-item");
var tag = Tag(Model, "article");
} }
<article class="content-item @contentTypeClassName"> @tag.StartElement
<header> <header>
@Display(Model.Header) @Display(Model.Header)
@if (Model.Meta != null) { @if (Model.Meta != null) {
@@ -17,4 +21,4 @@
@Display(Model.Footer) @Display(Model.Footer)
</footer> </footer>
} }
</article> @tag.EndElement

View File

@@ -168,7 +168,7 @@ namespace Lucene.Services {
writer.DeleteDocuments(query); writer.DeleteDocuments(query);
} }
catch (Exception ex) { catch (Exception ex) {
Logger.Error(ex, "An unexpected error occured while removing the documents [{0}] from the index [{1}].", String.Join(", ", documentIds), indexName); Logger.Error(ex, "An unexpected error occurred while removing the documents [{0}] from the index [{1}].", String.Join(", ", documentIds), indexName);
} }
} }
} }

View File

@@ -172,8 +172,8 @@ namespace Orchard.Alias.Controllers {
} }
catch (Exception ex) { catch (Exception ex) {
Services.TransactionManager.Cancel(); Services.TransactionManager.Cancel();
Services.Notifier.Error(T("An error occured while creating the alias {0}: {1}. Please check the values are correct.", aliasPath, ex.Message)); Services.Notifier.Error(T("An error occurred while creating the alias {0}: {1}. Please check the values are correct.", aliasPath, ex.Message));
Logger.Error(ex, T("An error occured while creating the alias {0}", aliasPath).Text); Logger.Error(ex, T("An error occurred while creating the alias {0}", aliasPath).Text);
ViewBag.Path = aliasPath; ViewBag.Path = aliasPath;
ViewBag.Route = routePath; ViewBag.Route = routePath;
@@ -236,8 +236,8 @@ namespace Orchard.Alias.Controllers {
} }
catch (Exception ex) { catch (Exception ex) {
Services.TransactionManager.Cancel(); Services.TransactionManager.Cancel();
Services.Notifier.Error(T("An error occured while editing the alias '{0}': {1}. Please check the values are correct.", aliasPath, ex.Message)); Services.Notifier.Error(T("An error occurred while editing the alias '{0}': {1}. Please check the values are correct.", aliasPath, ex.Message));
Logger.Error(ex, T("An error occured while creating the alias '{0}'", aliasPath).Text); Logger.Error(ex, T("An error occurred while creating the alias '{0}'", aliasPath).Text);
ViewBag.Path = aliasPath; ViewBag.Path = aliasPath;
ViewBag.Route = routePath; ViewBag.Route = routePath;

View File

@@ -36,7 +36,7 @@ namespace Orchard.AntiSpam.Services {
return SpamStatus.Ham; return SpamStatus.Ham;
} }
catch(Exception e) { catch(Exception e) {
Logger.Error(e, "An error occured while checking for spam"); Logger.Error(e, "An error occurred while checking for spam");
return SpamStatus.Spam; return SpamStatus.Spam;
} }
} }
@@ -46,7 +46,7 @@ namespace Orchard.AntiSpam.Services {
var result = ExecuteValidateRequest(context, "submit-spam"); var result = ExecuteValidateRequest(context, "submit-spam");
} }
catch (Exception e) { catch (Exception e) {
Logger.Error(e, "An error occured while reporting spam"); Logger.Error(e, "An error occurred while reporting spam");
} }
} }
@@ -55,7 +55,7 @@ namespace Orchard.AntiSpam.Services {
var result = ExecuteValidateRequest(context, "submit-ham"); var result = ExecuteValidateRequest(context, "submit-ham");
} }
catch (Exception e) { catch (Exception e) {
Logger.Error(e, "An error occured while reporting ham"); Logger.Error(e, "An error occurred while reporting ham");
} }
} }

View File

@@ -82,7 +82,7 @@ namespace Orchard.Azure.Services.FileSystems {
private static string ConvertToRelativeUriPath(string path) { private static string ConvertToRelativeUriPath(string path) {
var newPath = path.Replace(@"\", "/"); var newPath = path.Replace(@"\", "/");
if (newPath.StartsWith("/") || newPath.StartsWith("http://") || newPath.StartsWith("https://")) { if (newPath.StartsWith("/", StringComparison.OrdinalIgnoreCase) || newPath.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || newPath.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) {
throw new ArgumentException("Path must be relative"); throw new ArgumentException("Path must be relative");
} }
@@ -106,7 +106,7 @@ namespace Orchard.Azure.Services.FileSystems {
return path2; return path2;
} }
if (path2.StartsWith("http://") || path2.StartsWith("https://")) { if (path2.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || path2.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) {
return path2; return path2;
} }

View File

@@ -134,7 +134,7 @@ namespace Orchard.Blogs.Commands {
Context.Output.WriteLine(T("Found {0} items", doc.Descendants("item").Count())); Context.Output.WriteLine(T("Found {0} items", doc.Descendants("item").Count()));
} }
catch (Exception ex) { catch (Exception ex) {
throw new OrchardException(T("An error occured while loading the feed at {0}.", FeedUrl), ex); throw new OrchardException(T("An error occurred while loading the feed at {0}.", FeedUrl), ex);
} }
var blog = _blogService.Get(BlogId, VersionOptions.Latest); var blog = _blogService.Get(BlogId, VersionOptions.Latest);

View File

@@ -517,7 +517,7 @@ namespace Orchard.CodeGeneration.Commands {
File.SetLastWriteTime(solutionPath, DateTime.Now); File.SetLastWriteTime(solutionPath, DateTime.Now);
} }
catch { catch {
output.WriteLine(T("An unexpected error occured while trying to refresh the Visual Studio solution. Please reload it.")); output.WriteLine(T("An unexpected error occurred while trying to refresh the Visual Studio solution. Please reload it."));
} }
} }
} }

View File

@@ -241,7 +241,7 @@ namespace Orchard.Comments.Services {
_messageService.Send("Email", parameters); _messageService.Send("Email", parameters);
} }
catch(Exception e) { catch(Exception e) {
Logger.Error(e, "An unexpected error occured while sending a notification email"); Logger.Error(e, "An unexpected error occurred while sending a notification email");
} }
} }

View File

@@ -83,8 +83,8 @@ namespace Orchard.Indexing.Controllers {
Services.Notifier.Success(T("Index named {0} created successfully", id)); Services.Notifier.Success(T("Index named {0} created successfully", id));
} }
catch(Exception e) { catch(Exception e) {
Services.Notifier.Error(T("An error occured while creating the index: {0}", id)); Services.Notifier.Error(T("An error occurred while creating the index: {0}", id));
Logger.Error("An error occured while creatign the index " + id, e); Logger.Error("An error occurred while creatign the index " + id, e);
return View("Create", id); return View("Create", id);
} }

View File

@@ -288,7 +288,7 @@ namespace Orchard.Indexing.Services {
} }
} }
catch (Exception ex) { catch (Exception ex) {
Logger.Warning(ex, "An error occured while adding a document to the index"); Logger.Warning(ex, "An error occurred while adding a document to the index");
} }
// removing documents from the index // removing documents from the index
@@ -299,7 +299,7 @@ namespace Orchard.Indexing.Services {
} }
} }
catch (Exception ex) { catch (Exception ex) {
Logger.Warning(ex, "An error occured while removing a document from the index"); Logger.Warning(ex, "An error occurred while removing a document from the index");
} }
return true; return true;

View File

@@ -14,9 +14,10 @@ namespace Orchard.Layouts.Helpers {
public static OrchardTagBuilder CreateElementTagBuilder(dynamic shape, string tag = "div") { public static OrchardTagBuilder CreateElementTagBuilder(dynamic shape, string tag = "div") {
return AddCommonElementAttributes(new OrchardTagBuilder(tag), shape); return AddCommonElementAttributes(new OrchardTagBuilder(tag), shape);
} }
public static OrchardTagBuilder AddCommonElementAttributes(this OrchardTagBuilder tagBuilder, dynamic shape) { public static OrchardTagBuilder AddCommonElementAttributes(this OrchardTagBuilder tagBuilder, dynamic shape) {
var attributes = GetCommonElementAttributes(shape); var attributes = GetCommonElementAttributes(shape);
tagBuilder.MergeAttributes(shape.Attributes);
tagBuilder.MergeAttributes(attributes); tagBuilder.MergeAttributes(attributes);
return tagBuilder; return tagBuilder;
} }
@@ -46,7 +47,7 @@ namespace Orchard.Layouts.Helpers {
classes.Add(cssClass); classes.Add(cssClass);
} }
if(classes.Any()) if (classes.Any())
attributes["class"] = String.Join(" ", classes); attributes["class"] = String.Join(" ", classes);
return attributes; return attributes;

View File

@@ -54,7 +54,7 @@ namespace Orchard.MediaProcessing.Shapes {
Output.Write(_imageProfileManager.Value.GetImageProfileUrl(Path, Profile, CustomFilter, ContentItem)); Output.Write(_imageProfileManager.Value.GetImageProfileUrl(Path, Profile, CustomFilter, ContentItem));
} }
catch (Exception ex) { catch (Exception ex) {
Logger.Error(ex, "An error occured while rendering shape {0} for image {1}", Profile, Path); Logger.Error(ex, "An error occurred while rendering shape {0} for image {1}", Profile, Path);
} }
} }

View File

@@ -82,7 +82,7 @@ namespace Orchard.MessageBus.Brokers.SqlServer {
} }
} }
catch(Exception e) { catch(Exception e) {
Logger.Error(e, "An error occured while creating a Worker."); Logger.Error(e, "An error occurred while creating a Worker.");
} }
} }

View File

@@ -72,7 +72,7 @@ namespace Orchard.MessageBus.Brokers.SqlServer {
} }
catch (Exception e) { catch (Exception e) {
Logger.Error(e, "An unexpected error occured while monitoring sql dependencies."); Logger.Error(e, "An unexpected error occurred while monitoring sql dependencies.");
} }
} }

View File

@@ -33,7 +33,7 @@ namespace Orchard.Migrations.Commands {
} }
} }
catch ( Exception ex ) { catch ( Exception ex ) {
throw new OrchardException(T("An error occured while upgrading the database."), ex); throw new OrchardException(T("An error occurred while upgrading the database."), ex);
} }
Context.Output.WriteLine(T("Database upgraded")); Context.Output.WriteLine(T("Database upgraded"));

View File

@@ -29,7 +29,7 @@ namespace Orchard.Migrations.Commands {
_schemaCommandGenerator.UpdateDatabase(); _schemaCommandGenerator.UpdateDatabase();
} }
catch ( Exception ex ) { catch ( Exception ex ) {
throw new OrchardException(T("An error occured while updating the database."), ex); throw new OrchardException(T("An error occurred while updating the database."), ex);
} }
Context.Output.WriteLine(T("Database updated")); Context.Output.WriteLine(T("Database updated"));
@@ -54,7 +54,7 @@ namespace Orchard.Migrations.Commands {
} }
} }
catch ( Exception ex ) { catch ( Exception ex ) {
throw new OrchardException(T("An error occured while creating the tables."), ex); throw new OrchardException(T("An error occurred while creating the tables."), ex);
} }
Context.Output.WriteLine(T("Tables created")); Context.Output.WriteLine(T("Tables created"));

View File

@@ -232,7 +232,7 @@ namespace Orchard.Modules.Controllers {
Services.Notifier.Success(T("The feature {0} was updated successfully", id)); Services.Notifier.Success(T("The feature {0} was updated successfully", id));
} }
catch (Exception exception) { catch (Exception exception) {
Services.Notifier.Error(T("An error occured while updating the feature {0}: {1}", id, exception.Message)); Services.Notifier.Error(T("An error occurred while updating the feature {0}: {1}", id, exception.Message));
} }
} }
break; break;

View File

@@ -226,6 +226,12 @@ namespace Orchard.OutputCache.Filters {
// To prevent access to the original lifetime scope a new work context scope should be created here and dependencies // To prevent access to the original lifetime scope a new work context scope should be created here and dependencies
// should be resolved from it. // should be resolved from it.
// Recheck the response status code incase it was modified before the callback.
if (response.StatusCode != 200) {
Logger.Debug("Response for item '{0}' will not be cached because status code was set to {1} during rendering.", _cacheKey, response.StatusCode);
return;
}
using (var scope = _workContextAccessor.CreateWorkContextScope()) { using (var scope = _workContextAccessor.CreateWorkContextScope()) {
var cacheItem = new CacheItem() { var cacheItem = new CacheItem() {
CachedOnUtc = _now, CachedOnUtc = _now,
@@ -613,7 +619,7 @@ namespace Orchard.OutputCache.Filters {
return cacheItem; return cacheItem;
} }
catch (Exception e) { catch (Exception e) {
Logger.Error(e, "An unexpected error occured while reading a cache entry"); Logger.Error(e, "An unexpected error occurred while reading a cache entry");
} }
return null; return null;

View File

@@ -69,6 +69,8 @@ namespace Orchard.Projections.FilterEditors.Forms {
case StringOperator.Contains: case StringOperator.Contains:
return x => x.Like(property, Convert.ToString(value), HqlMatchMode.Anywhere); return x => x.Like(property, Convert.ToString(value), HqlMatchMode.Anywhere);
case StringOperator.ContainsAny: case StringOperator.ContainsAny:
if (string.IsNullOrEmpty((string)value))
return x => x.Eq("Id", "0");
var values1 = Convert.ToString(value).Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); var values1 = Convert.ToString(value).Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var predicates1 = values1.Skip(1).Select<string, Action<IHqlExpressionFactory>>(x => y => y.Like(property, x, HqlMatchMode.Anywhere)).ToArray(); var predicates1 = values1.Skip(1).Select<string, Action<IHqlExpressionFactory>>(x => y => y.Like(property, x, HqlMatchMode.Anywhere)).ToArray();
return x => x.Disjunction(y => y.Like(property, values1[0], HqlMatchMode.Anywhere), predicates1); return x => x.Disjunction(y => y.Like(property, values1[0], HqlMatchMode.Anywhere), predicates1);

View File

@@ -67,7 +67,7 @@ namespace Orchard.Redis.MessageBus {
} }
catch (Exception e) { catch (Exception e) {
Logger.Error(e, "An error occured while subscribing to " + channel); Logger.Error(e, "An error occurred while subscribing to " + channel);
} }
} }

View File

@@ -128,7 +128,7 @@ namespace Orchard.Setup.Services {
using (var environment = bootstrapLifetimeScope.CreateWorkContextScope()) { using (var environment = bootstrapLifetimeScope.CreateWorkContextScope()) {
// Check if the database is already created (in case an exception occured in the second phase). // Check if the database is already created (in case an exception occurred in the second phase).
var schemaBuilder = new SchemaBuilder(environment.Resolve<IDataMigrationInterpreter>()); var schemaBuilder = new SchemaBuilder(environment.Resolve<IDataMigrationInterpreter>());
var installationPresent = true; var installationPresent = true;
try { try {

View File

@@ -249,8 +249,8 @@ namespace Orchard.Themes.Controllers {
Services.Notifier.Success(T("The theme {0} was updated successfully", themeId)); Services.Notifier.Success(T("The theme {0} was updated successfully", themeId));
Logger.Information("The theme {0} was updated successfully.", themeId); Logger.Information("The theme {0} was updated successfully.", themeId);
} catch (Exception exception) { } catch (Exception exception) {
Logger.Error(T("An error occured while updating the theme {0}: {1}", themeId, exception.Message).Text); Logger.Error(T("An error occurred while updating the theme {0}: {1}", themeId, exception.Message).Text);
Services.Notifier.Error(T("An error occured while updating the theme {0}: {1}", themeId, exception.Message)); Services.Notifier.Error(T("An error occurred while updating the theme {0}: {1}", themeId, exception.Message));
} }
return RedirectToAction("Index"); return RedirectToAction("Index");

View File

@@ -67,6 +67,8 @@ namespace Orchard.Users.Activities {
yield break; yield break;
} }
userName = userName.Trim();
var user = _membershipService.CreateUser( var user = _membershipService.CreateUser(
new CreateUserParams( new CreateUserParams(
userName, userName,

View File

@@ -5,4 +5,7 @@
<div class="secondary"> <div class="secondary">
@Display(Model.Sidebar) @Display(Model.Sidebar)
</div> </div>
</div> </div>
@if (!String.IsNullOrWhiteSpace(Request.QueryString["returnUrl"])) {
@Html.Hidden("returnUrl", Request.QueryString["returnUrl"])
}

View File

@@ -41,7 +41,7 @@ namespace Orchard.Warmup.Services {
return null; return null;
} }
catch(Exception e) { catch(Exception e) {
Logger.Error(e, "An error occured while downloading url: {0}", url); Logger.Error(e, "An error occurred while downloading url: {0}", url);
return null; return null;
} }
} }

View File

@@ -56,7 +56,7 @@ namespace Orchard.Widgets.Layouts.Providers {
? _contentManager.Value.Get(widgetId.Value, versionOptions) ? _contentManager.Value.Get(widgetId.Value, versionOptions)
: _contentManager.Value.New(contentTypeName); : _contentManager.Value.New(contentTypeName);
var widgetShape = widget != null ? _contentManager.Value.BuildDisplay(widget) : default(dynamic); var widgetShape = widget != null ? _contentManager.Value.BuildDisplay(widget, context.DisplayType) : default(dynamic);
context.ElementShape.Widget = widget; context.ElementShape.Widget = widget;
context.ElementShape.WidgetShape = widgetShape; context.ElementShape.WidgetShape = widgetShape;
} }

View File

@@ -15,5 +15,5 @@
<fieldset> <fieldset>
@Html.LabelFor(layer => layer.LayerRule, T("Layer Rule")) @Html.LabelFor(layer => layer.LayerRule, T("Layer Rule"))
@Html.TextAreaFor(layer => layer.LayerRule, new { spellcheck = "false" }) @Html.TextAreaFor(layer => layer.LayerRule, new { spellcheck = "false" })
<span class="hint">@T("An expression that evaluates to true when the widgets in this layer must be displayed. See <a href=\"http://docs.orchardproject.net/Documentation/Managing-widgets#AddingaLayer\">http://docs.orchardproject.net/Documentation/Managing-widgets#AddingaLayer</a> for more information.")</span> <span class="hint">@T("An expression that evaluates to true when the widgets in this layer must be displayed. See <a href=\"http://docs.orchardproject.net/en/latest/Documentation/Managing-widgets/#adding-a-layer\">http://docs.orchardproject.net/en/latest/Documentation/Managing-widgets/#adding-a-layer</a> for more information.")</span>
</fieldset> </fieldset>

View File

@@ -4,9 +4,9 @@
} }
<div class="layout-placeholder"> <div class="layout-placeholder">
@if (widget != null) { @if (widget != null) {
@String.Format("{0} - {1}", Html.ItemDisplayText(widget), widget.TypeDefinition.DisplayName) @T("{0} - {1}", Html.ItemDisplayText(widget), widget.TypeDefinition.DisplayName)
} }
else { else {
@T("Widget Not Found"); @T("Widget Not Found");
} }
</div> </div>

View File

@@ -2,11 +2,9 @@
top: 0; top: 0;
position: fixed; position: fixed;
background-color: white; background-color: white;
border-top: 1px solid #9e9e9e;
border-bottom: 1px solid #9e9e9e;
} }
#stickyContainer.container-layout { #stickyContainer.container-layout {
width: 100%; width: 100%;
}
#stickyContainer.sticky-container-layout {
border-top: 1px solid #9e9e9e;
border-bottom: 1px solid #9e9e9e;
} }

View File

@@ -2,11 +2,9 @@
top: 0; top: 0;
position: fixed; position: fixed;
background-color: white; background-color: white;
border-top: 1px solid #9e9e9e;
border-bottom: 1px solid #9e9e9e;
} }
#stickyContainer.container-layout { #stickyContainer.container-layout {
width: 100%; width: 100%;
} }
#stickyContainer.sticky-container-layout {
border-top: 1px solid #9e9e9e;
border-bottom: 1px solid #9e9e9e;
}

View File

@@ -1 +1 @@
#stickyContainer.sticky-top{top:0;position:fixed;background-color:#fff;}#stickyContainer.container-layout{width:100%;}#stickyContainer.sticky-container-layout{border-top:1px solid #9e9e9e;border-bottom:1px solid #9e9e9e;} #stickyContainer.sticky-top{top:0;position:fixed;background-color:#fff;border-top:1px solid #9e9e9e;border-bottom:1px solid #9e9e9e;}#stickyContainer.container-layout{width:100%;}

View File

@@ -34,51 +34,75 @@ tinyMCE.init({
$(document).bind("localization.ui.directionalitychanged", function(event, directionality) { $(document).bind("localization.ui.directionalitychanged", function(event, directionality) {
editor.getBody().dir = directionality; editor.getBody().dir = directionality;
}); });
// If the focused editable area is taller than the window, make the menu and the toolbox sticky-positioned within the editor
// to help the user avoid excessive vertical scrolling.
// There is a built-in fixed_toolbar_container option in the TinyMCE, but we can't use it, because it is only
// available if the selector is a DIV with inline mode.
editor.on('focus', function () {
var $contentArea = $(this.contentAreaContainer.parentElement);
stickyToolbar($contentArea);
});
editor.on('blur', function () {
var $contentArea = $(this.contentAreaContainer.parentElement);
var isAdded = false;
$contentArea.prepend($contentArea.find("div.mce-toolbar-grp"));
$contentArea.prepend($contentArea.find("div.mce-menubar"));
$("#stickyContainer").remove();
$("#stickyPlaceholder").remove();
});
function stickyToolbar($contentArea) {
var $container = $("<div/>", { id: "stickyContainer", class: "container-layout" });
$contentArea.prepend($container);
$container.append($contentArea.find("div.mce-menubar"));
$container.append($contentArea.find("div.mce-toolbar-grp"));
var $containerPosition = $container.offset();
var $placeholder = $("<div/>", { id: "stickyPlaceholder" });
var isAdded = false;
if ($(window).scrollTop() >= $containerPosition.top && !isAdded) {
$container.addClass("sticky-top");
$placeholder.insertBefore($container);
$container.width($placeholder.width());
$placeholder.height($container.height());
}
$(window).scroll(function (event) {
var $statusbarPosition = $contentArea.find("div.mce-statusbar").offset();
if ($(window).scrollTop() >= $containerPosition.top && !isAdded) {
$container.addClass("sticky-top");
$placeholder.insertBefore($container);
$container.width($placeholder.width());
$placeholder.height($container.height());
$(window).on("resize", function () {
$container.width($placeholder.width());
$placeholder.height($container.height());
});
isAdded = true;
} else if ($(window).scrollTop() < $containerPosition.top && isAdded) {
$container.removeClass("sticky-top");
$placeholder.remove();
$(window).on("resize", function () {
$container.width("100%");
});
isAdded = false;
}
if ($(window).scrollTop() >= ($statusbarPosition.top - $container.height())) {
$container.hide();
} else if ($(window).scrollTop() < ($statusbarPosition.top - $container.height()) && isAdded) {
$container.show();
}
});
}
} }
}); });
// If the editable area is taller than the window, make the menu and the toolbox sticky-positioned within the editor
// to help the user avoid excessive vertical scrolling.
// There is a built-in fixed_toolbar_container option in the TinyMCE, but we can't use it, because it is only
// available if the selector is a DIV with inline mode.
$(window).load(function () {
var $container = $("<div/>", { id: "stickyContainer", class: "container-layout" });
$(".mce-stack-layout:first").prepend($container);
$container.append($(".mce-menubar"));
$container.append($(".mce-toolbar-grp"));
var containerPosition = $container.get(0).getBoundingClientRect();
var $placeholder = $("<div/>");
var isAdded = false;
$(window).scroll(function (event) {
var $statusbarPosition = $(".mce-statusbar").offset();
if ($(window).scrollTop() >= containerPosition.top && !isAdded) {
$container.addClass("sticky-top");
$placeholder.insertBefore($container);
$container.width($placeholder.width());
$placeholder.height($container.height());
$(window).on("resize", function () {
$container.width($placeholder.width());
$placeholder.height($container.height());
});
$container.addClass("sticky-container-layout");
isAdded = true;
} else if ($(window).scrollTop() < containerPosition.top && isAdded) {
$container.removeClass("sticky-top");
$placeholder.remove();
$container.removeClass("sticky-container-layout");
$(window).on("resize", function () {
$container.width("100%");
});
isAdded = false;
}
if ($(window).scrollTop() >= ($statusbarPosition.top - $container.height())) {
$container.hide();
} else if ($(window).scrollTop() < ($statusbarPosition.top - $container.height()) && isAdded) {
$container.show();
}
});
});

View File

@@ -7,13 +7,11 @@
top: 0; top: 0;
position: fixed; position: fixed;
background-color: white; background-color: white;
border-top: 1px solid #9e9e9e;
border-bottom: 1px solid #9e9e9e;
} }
#stickyContainer.container-layout { #stickyContainer.container-layout {
width: 100%; width: 100%;
} }
#stickyContainer.sticky-container-layout {
border-top: 1px solid #9e9e9e;
border-bottom: 1px solid #9e9e9e;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yY2hhcmQtdGlueW1jZS5jc3MiLCJvcmNoYXJkLXRpbnltY2UubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQTtFQUNFLE9BQUE7RUFDQSxnQkFBQTtFQUNBLHdCQUFBO0NEQ0Q7QUNDRDtFQUNFLFlBQUE7Q0RDRDtBQ0NEO0VBQ0UsOEJBQUE7RUFDQSxpQ0FBQTtDRENEIiwiZmlsZSI6Im9yY2hhcmQtdGlueW1jZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjc3RpY2t5Q29udGFpbmVyLnN0aWNreS10b3Age1xuICB0b3A6IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4jc3RpY2t5Q29udGFpbmVyLmNvbnRhaW5lci1sYXlvdXQge1xuICB3aWR0aDogMTAwJTtcbn1cbiNzdGlja3lDb250YWluZXIuc3RpY2t5LWNvbnRhaW5lci1sYXlvdXQge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgIzllOWU5ZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM5ZTllOWU7XG59XG4iLCLvu78jc3RpY2t5Q29udGFpbmVyLnN0aWNreS10b3Age1xyXG4gIHRvcDogMDtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbn1cclxuI3N0aWNreUNvbnRhaW5lci5jb250YWluZXItbGF5b3V0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG4jc3RpY2t5Q29udGFpbmVyLnN0aWNreS1jb250YWluZXItbGF5b3V0IHtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgIzllOWU5ZTtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzllOWU5ZTtcclxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yY2hhcmQtdGlueW1jZS5jc3MiLCJvcmNoYXJkLXRpbnltY2UubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQTtFQUNFLE9BQUE7RUFDQSxnQkFBQTtFQUNBLHdCQUFBO0VBQ0EsOEJBQUE7RUFDQSxpQ0FBQTtDRENEO0FDQ0Q7RUFDRSxZQUFBO0NEQ0QiLCJmaWxlIjoib3JjaGFyZC10aW55bWNlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiNzdGlja3lDb250YWluZXIuc3RpY2t5LXRvcCB7XG4gIHRvcDogMDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM5ZTllOWU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOWU5ZTllO1xufVxuI3N0aWNreUNvbnRhaW5lci5jb250YWluZXItbGF5b3V0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iLCLvu78jc3RpY2t5Q29udGFpbmVyLnN0aWNreS10b3Age1xyXG4gIHRvcDogMDtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM5ZTllOWU7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM5ZTllOWU7XHJcbn1cclxuI3N0aWNreUNvbnRhaW5lci5jb250YWluZXItbGF5b3V0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */

View File

@@ -1 +1 @@
#stickyContainer.sticky-top{top:0;position:fixed;background-color:#fff}#stickyContainer.container-layout{width:100%}#stickyContainer.sticky-container-layout{border-top:1px solid #9e9e9e;border-bottom:1px solid #9e9e9e} #stickyContainer.sticky-top{top:0;position:fixed;background-color:#fff;border-top:1px solid #9e9e9e;border-bottom:1px solid #9e9e9e}#stickyContainer.container-layout{width:100%}

View File

@@ -76,7 +76,7 @@ namespace Orchard.Data.Migration.Schema {
if (ex.IsFatal()) { if (ex.IsFatal()) {
throw; throw;
} }
throw new OrchardException(T("An unexpected error occured while executing the SQL statement: {0}", sql), ex); // Add the sql to the nested exception information throw new OrchardException(T("An unexpected error occurred while executing the SQL statement: {0}", sql), ex); // Add the sql to the nested exception information
} }
} }

View File

@@ -105,7 +105,7 @@ namespace Orchard.Environment {
throw; throw;
} }
Logger.Error(ex, "An unexpected error occured while terminating the Shell"); Logger.Error(ex, "An unexpected error occurred while terminating the Shell");
} }
} }
} }

View File

@@ -31,7 +31,7 @@ namespace Orchard.Exceptions.Filters {
} }
public void OnActionExecuted(ActionExecutedContext filterContext) { public void OnActionExecuted(ActionExecutedContext filterContext) {
// for exceptions which occured during the action execution // for exceptions which occurred during the action execution
// don't provide custom errors if the action has some custom code to handle exceptions // don't provide custom errors if the action has some custom code to handle exceptions
if (!filterContext.ActionDescriptor.GetCustomAttributes(typeof(HandleErrorAttribute), false).Any()) { if (!filterContext.ActionDescriptor.GetCustomAttributes(typeof(HandleErrorAttribute), false).Any()) {
@@ -92,7 +92,7 @@ namespace Orchard.Exceptions.Filters {
} }
public void OnResultExecuted(ResultExecutedContext filterContext) { public void OnResultExecuted(ResultExecutedContext filterContext) {
// for exceptions which occured during the action execution // for exceptions which occurred during the action execution
// don't provide custom errors if the action has some custom code to handle exceptions // don't provide custom errors if the action has some custom code to handle exceptions
if (!filterContext.ExceptionHandled && filterContext.Exception != null) { if (!filterContext.ExceptionHandled && filterContext.Exception != null) {

View File

@@ -31,7 +31,7 @@ namespace Orchard.FileSystems.LockFile {
return true; return true;
} }
catch { catch {
// an error occured while reading/creating the lock file // an error occurred while reading/creating the lock file
return false; return false;
} }
finally { finally {
@@ -46,7 +46,7 @@ namespace Orchard.FileSystems.LockFile {
return IsLockedImpl(path); return IsLockedImpl(path);
} }
catch { catch {
// an error occured while reading the file // an error occurred while reading the file
return true; return true;
} }
finally { finally {

View File

@@ -45,7 +45,7 @@ namespace Orchard.Messaging.Services {
if (ex.IsFatal()) { if (ex.IsFatal()) {
throw; throw;
} }
Logger.Error(ex, "An error occured while sending the message {0}", type); Logger.Error(ex, "An error occurred while sending the message {0}", type);
} }
} }
@@ -68,7 +68,7 @@ namespace Orchard.Messaging.Services {
if (ex.IsFatal()) { if (ex.IsFatal()) {
throw; throw;
} }
Logger.Error(ex, "An error occured while sending the message {0}", type); Logger.Error(ex, "An error occurred while sending the message {0}", type);
} }
} }