Merge with 1.4.x

This commit is contained in:
Sebastien Ros
2012-05-21 11:39:18 -07:00
63 changed files with 1601 additions and 627 deletions

View File

@@ -1,8 +1,8 @@
bf20391f8fe1ba5d67cadc0643d79ad9fe892d4e src/Orchard.Web/Modules/Orchard.Autoroute
b8e23b1daab66d46b6d2196f87aceb91aed2f582 src/Orchard.Web/Modules/Orchard.Forms
cfc264d41c1d299c104d76c5032d8ffee3047dcd src/Orchard.Web/Modules/Orchard.Rules
83394873b7ee11010f42756d077ea08280064337 src/Orchard.Web/Modules/Orchard.TaskLease
0b96793c3737e50863270c24debf6d44065b73bb src/Orchard.Web/Modules/Orchard.Tokens
e7fc05ff6137ed5459d198b2bea9a5804818b0bd src/Orchard.Web/Modules/Orchard.Forms
681acdfadd946098a10a4a22f6904e8c482c122f src/Orchard.Web/Modules/Orchard.Rules
419399ef2e37122a000e6cc8674148d3183d7032 src/Orchard.Web/Modules/Orchard.TaskLease
fc63ee29cb68eaa02e3b406c42502346b85221f8 src/Orchard.Web/Modules/Orchard.Tokens
4ed51e0e76c2aacc2de90ce9984fd00cfdfae2ce src/orchard.web/Modules/Orchard.Alias
0e660c8cfbfb5217abfb7cf6adf6f2cf484174d6 src/orchard.web/Modules/Orchard.Projections
0ce46c4e39390472b82459007c0e5a05c18d22d8 src/orchard.web/modules/Orchard.Fields
f5353e9e0f678d396735df6eb6ca3c7f30a09660 src/orchard.web/Modules/Orchard.Projections
4d125be1a6b35451214768cd8e46b6e7e2b08174 src/orchard.web/modules/Orchard.Fields

View File

@@ -312,6 +312,7 @@
$(MSBuildProjectDirectory)\**\*.user;
$(MSBuildProjectDirectory)\**\*.patch;
$(MSBuildProjectDirectory)\**\*.hg*\**\*;
$(LibFolder)\nunit\addins\**\*;
" />
<Zip-Stage Include="$(StageFolder)\**\*" />

View File

@@ -0,0 +1,39 @@
using System;
using NUnit.Framework;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Aspects;
using Orchard.Core.Contents;
using Orchard.Data;
using Orchard.Roles.Models;
using Orchard.Roles.Services;
using Orchard.Security;
using Orchard.Security.Permissions;
using Orchard.Specs.Hosting.Orchard.Web;
using TechTalk.SpecFlow;
using Orchard.Localization.Services;
using System.Linq;
namespace Orchard.Specs.Bindings {
[Binding]
public class Settings : BindingBase {
[When(@"I have ""(.*)"" as the default culture")]
public void DefineDefaultCulture(string cultureName) {
var webApp = Binding<WebAppHosting>();
webApp.Host.Execute(() => {
using ( var environment = MvcApplication.CreateStandaloneEnvironment("Default") ) {
var orchardServices = environment.Resolve<IOrchardServices>();
var cultureManager = environment.Resolve<ICultureManager>();
var currentCultures = cultureManager.ListCultures();
if (!currentCultures.Contains(cultureName)) {
cultureManager.AddCulture(cultureName);
}
orchardServices.WorkContext.CurrentSite.SiteCulture = cultureName;
}
});
}
}
}

View File

@@ -176,6 +176,10 @@ namespace Orchard.Specs.Bindings {
WhenIGoTo(urlPath);
}
[Given(@"I have the file ""(.*)"" in ""(.*)""")]
public void GivenIHaveFile(string sourceFileName, string destination) {
Host.CopyFile(sourceFileName, destination);
}
[When(@"I go to ""(.*)"" on host (.*)")]
public void WhenIGoToPathOnHost(string urlPath, string host) {

View File

@@ -214,6 +214,33 @@ namespace Orchard.Specs.Hosting {
sourceModule.Combine("Views").DeepCopy(targetModule.Combine("Views"));
}
public void CopyFile(string source, string destination) {
StackTrace st = new StackTrace(true);
Path origin = null;
foreach(var sf in st.GetFrames()) {
var sourceFile = sf.GetFileName();
if(String.IsNullOrEmpty(sourceFile)) {
continue;
}
var testOrigin = Path.Get(sourceFile).Parent.Combine(source);
if(testOrigin.Exists) {
origin = testOrigin;
break;
}
}
if(origin == null) {
throw new FileNotFoundException("File not found: " + source);
}
var target = _tempSite.Combine(destination);
Directory.CreateDirectory(target.DirectoryName);
File.Copy(origin, target);
}
private bool IsExtensionBinaryFile(Path path, string extensionName, ExtensionDeploymentOptions deploymentOptions) {
bool isValidExtension = IsAssemblyFile(path);
if (!isValidExtension)

View File

@@ -127,6 +127,7 @@
<Compile Include="Bindings\BindingBase.cs" />
<Compile Include="Bindings\CommandLine.cs" />
<Compile Include="Bindings\ContentRights.cs" />
<Compile Include="Bindings\Settings.cs" />
<Compile Include="Bindings\HtmlNodeExtensions.cs" />
<Compile Include="Bindings\OrchardSiteFactory.cs" />
<Compile Include="Bindings\UsersPermissionsAndRoles.cs" />

View File

@@ -3,19 +3,14 @@ using System.Globalization;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Core.Common.Models;
using Orchard.Core.Shapes.Localization;
using Orchard.Localization;
namespace Orchard.Core.Common.DateEditor {
public class DateEditorDriver : ContentPartDriver<CommonPart> {
private readonly IDateTimeLocalization _dateTimeLocalization;
private readonly Lazy<CultureInfo> _cultureInfo;
public DateEditorDriver(
IOrchardServices services,
IDateTimeLocalization dateTimeLocalization) {
_dateTimeLocalization = dateTimeLocalization;
IOrchardServices services) {
T = NullLocalizer.Instance;
Services = services;
@@ -62,8 +57,8 @@ namespace Orchard.Core.Common.DateEditor {
// date and time are formatted using the same patterns as DateTimePicker is, preventing other cultures issues
var createdLocal = TimeZoneInfo.ConvertTimeFromUtc(part.CreatedUtc.Value, Services.WorkContext.CurrentTimeZone);
model.CreatedDate = createdLocal.ToString(_dateTimeLocalization.ShortDateFormat.Text);
model.CreatedTime = createdLocal.ToString(_dateTimeLocalization.ShortTimeFormat.Text);
model.CreatedDate = createdLocal.ToString("d", _cultureInfo.Value);
model.CreatedTime = createdLocal.ToString("t", _cultureInfo.Value);
}
}
@@ -74,10 +69,9 @@ namespace Orchard.Core.Common.DateEditor {
DateTime createdUtc;
string parseDateTime = String.Concat(model.CreatedDate, " ", model.CreatedTime);
var dateTimeFormat = _dateTimeLocalization.ShortDateFormat + " " + _dateTimeLocalization.ShortTimeFormat;
// use current culture
if (DateTime.TryParseExact(parseDateTime, dateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out createdUtc)) {
if (DateTime.TryParse(parseDateTime, _cultureInfo.Value, DateTimeStyles.None, out createdUtc)) {
// the date time is entered locally for the configured timezone
part.CreatedUtc = TimeZoneInfo.ConvertTimeToUtc(createdUtc, Services.WorkContext.CurrentTimeZone);

View File

@@ -120,10 +120,16 @@ namespace Orchard.Core.Common.Drivers {
private void Add(string segment) {
if (string.IsNullOrEmpty(segment))
return;
if (string.IsNullOrEmpty(_path))
if (string.IsNullOrEmpty(_path)) {
_path = segment;
else
}
else if (segment.StartsWith("/")) {
_path = _path + segment;
}
else {
_path = _path + "/" + segment;
}
}
}
}

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The common module introduces content parts that are going to be used by most content types (common, body, identity).
FeatureDescription: Core content parts.
Dependencies: Settings

View File

@@ -11,4 +11,10 @@ fieldset.createdutc-datetime input {
padding:1px;
text-align:center;
color:#666;
}
input#DateEditor_CreatedDate {
width:10em;
}
input#DateEditor_CreatedTime {
width:7em;
}

View File

@@ -1,11 +1,7 @@
@model Orchard.Core.Common.DateEditor.DateEditorViewModel
@{
var DateEditor = Model;
Script.Require("jQueryUtils_TimePicker");
Script.Require("jQueryUI_DatePicker");
Style.Require("Common_DatePicker");
Style.Require("jQueryUtils_TimePicker");
Style.Require("jQueryUI_DatePicker");
}
<fieldset class="createdutc-datetime">
@Html.LabelFor(m => DateEditor.CreatedDate, T("Created On"))
@@ -18,6 +14,7 @@
@* generates the localization script *@
@Display(New.DatePickerLocalization())
@Display(New.TimePickerLocalization())
<script type="text/javascript">
//<![CDATA[
@@ -38,7 +35,7 @@
}
});
$('#@Html.FieldIdFor(m => DateEditor.CreatedDate)').datepicker({ showAnim: "" });
$('#@Html.FieldIdFor(m => DateEditor.CreatedTime)').timepickr({ showAnim: "" });
$('#@Html.FieldIdFor(m => DateEditor.CreatedTime)').timepicker({ stepMinute: 5});
})
//]]>
</script>

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The containers module introduces container and containable behaviors for content items.
FeatureDescription: Container and containable parts to enable parent-child relationships between content items.
Dependencies: Contents

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The contents module enables the creation of custom content types.
Features:
Contents

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The dashboard module is providing the dashboard screen of the admininstration UI of the application.
FeatureDescription: Standard admin dashboard.
Category: Core

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The Feeds module is providing RSS feeds to content items.
FeatureDescription: RSS feeds for content items.
Category: Syndication

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The navigation module creates and manages a simple navigation menu for the front-end of the application and allows you to add content items to the admin menu.
FeatureDescription: Menu management.
Category: Core

View File

@@ -30,6 +30,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The dashboard module is providing the reports screen of the application.
FeatureDescription: Reports management.
Category: Core

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The scheduling module enables background task scheduling.
FeatureDescription: Scheduled background tasks.
Category: Core

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The settings module creates site settings that other modules can contribute to.
FeatureDescription: Site settings.
Category: Core

View File

@@ -6,12 +6,14 @@ using Orchard.DisplayManagement;
using Orchard.Localization;
using Orchard.Mvc.Html;
using Orchard.Services;
using System.Globalization;
namespace Orchard.Core.Shapes {
public class DateTimeShapes : IDependency {
private readonly IClock _clock;
private readonly IDateTimeLocalization _dateTimeLocalization;
private readonly IWorkContextAccessor _workContextAccessor;
private readonly Lazy<CultureInfo> _cultureInfo;
public DateTimeShapes(
IClock clock,
@@ -22,6 +24,8 @@ namespace Orchard.Core.Shapes {
_dateTimeLocalization = dateTimeLocalization;
_workContextAccessor = workContextAccessor;
T = NullLocalizer.Instance;
_cultureInfo = new Lazy<CultureInfo>(() => CultureInfo.GetCultureInfo(_workContextAccessor.GetContext().CurrentCulture));
}
public Localizer T { get; set; }
@@ -52,7 +56,7 @@ namespace Orchard.Core.Shapes {
return DateTime(DateTimeUtc, _dateTimeLocalization.LongDateTimeFormat);
}
return new MvcHtmlString(ConvertToDisplayTime(DateTimeUtc).ToString(CustomFormat.Text));
return new MvcHtmlString(ConvertToDisplayTime(DateTimeUtc).ToString(CustomFormat.Text, _cultureInfo.Value));
}
/// <summary>

View File

@@ -19,11 +19,6 @@ namespace Orchard.Core.Shapes.Localization {
/// </summary>
int FirstDay { get; }
/// <summary>
/// True if right-to-left language, false if left-to-right
/// </summary>
bool IsRTL { get; }
/// <summary>
/// True if the year select precedes month, false for month then year
/// </summary>
@@ -88,19 +83,6 @@ namespace Orchard.Core.Shapes.Localization {
}
}
public bool IsRTL {
get {
var isRTL = false;
var t = T("isRTL: false").Text;
var parts = t.Split(':');
if (parts.Length == 2) {
Boolean.TryParse(parts[1], out isRTL);
}
return isRTL;
}
}
public bool ShowMonthAfterYear {
get {
var showMonthAfterYear = false;

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The shapes module contains core shape templates and display hooks.
FeatureDescription: Core shape templates and display hooks.
Category: Core

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The title module enables content items to have titles.
FeatureDescription: Title content part.
Category: Core

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The XmlRpc module enables creation of contents from client applications such as LiveWriter.
FeatureDescription: XML-RPC opt-in implementation.
Category: Content Publishing

View File

@@ -6,7 +6,6 @@ using Orchard.ArchiveLater.ViewModels;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers;
using Orchard.Core.Shapes.Localization;
using Orchard.Localization;
using System.Globalization;
@@ -14,16 +13,18 @@ namespace Orchard.ArchiveLater.Drivers {
public class ArchiveLaterPartDriver : ContentPartDriver<ArchiveLaterPart> {
private const string TemplateName = "Parts/ArchiveLater";
private readonly IArchiveLaterService _archiveLaterService;
private readonly IDateTimeLocalization _dateTimeLocalization;
private readonly Lazy<CultureInfo> _cultureInfo;
public ArchiveLaterPartDriver(
IOrchardServices services,
IArchiveLaterService archiveLaterService,
IDateTimeLocalization dateTimeLocalization) {
IArchiveLaterService archiveLaterService) {
_archiveLaterService = archiveLaterService;
_dateTimeLocalization = dateTimeLocalization;
T = NullLocalizer.Instance;
Services = services;
// initializing the culture info lazy initializer
_cultureInfo = new Lazy<CultureInfo>(() => CultureInfo.GetCultureInfo(Services.WorkContext.CurrentCulture));
}
public Localizer T { get; set; }
@@ -46,8 +47,8 @@ namespace Orchard.ArchiveLater.Drivers {
var model = new ArchiveLaterViewModel(part) {
ScheduledArchiveUtc = part.ScheduledArchiveUtc.Value,
ArchiveLater = part.ScheduledArchiveUtc.Value.HasValue,
ScheduledArchiveDate = part.ScheduledArchiveUtc.Value.HasValue ? localDate.Value.ToString(_dateTimeLocalization.ShortDateFormat.Text) : String.Empty,
ScheduledArchiveTime = part.ScheduledArchiveUtc.Value.HasValue ? localDate.Value.ToString(_dateTimeLocalization.ShortTimeFormat.Text) : String.Empty
ScheduledArchiveDate = part.ScheduledArchiveUtc.Value.HasValue ? localDate.Value.ToString("d", _cultureInfo.Value) : String.Empty,
ScheduledArchiveTime = part.ScheduledArchiveUtc.Value.HasValue ? localDate.Value.ToString("t", _cultureInfo.Value) : String.Empty
};
return ContentShape("Parts_ArchiveLater_Edit",
@@ -61,10 +62,9 @@ namespace Orchard.ArchiveLater.Drivers {
if ( model.ArchiveLater ) {
DateTime scheduled;
var parseDateTime = String.Concat(model.ScheduledArchiveDate, " ", model.ScheduledArchiveTime);
var dateTimeFormat = _dateTimeLocalization.ShortDateFormat + " " + _dateTimeLocalization.ShortTimeFormat;
// use an english culture as it is the one used by jQuery.datepicker by default
if (DateTime.TryParseExact(parseDateTime, dateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out scheduled)) {
if (DateTime.TryParse(parseDateTime, _cultureInfo.Value, DateTimeStyles.None, out scheduled)) {
// the date time is entered locally for the configured timezone
var timeZone = Services.WorkContext.CurrentTimeZone;

View File

@@ -3,8 +3,8 @@ Path: ArchiveLater
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The ArchiveLater module introduces scheduled archiving functionality.
FeatureDescription: Scheduled archiving.
Category: Content

View File

@@ -30,6 +30,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -7,10 +7,10 @@ html.dyn input.hinted {
font-style:italic;
}
input#ArchiveLater_ScheduledArchiveDate {
width:49%;
width:10em;
}
input#ArchiveLater_ScheduledArchiveTime {
width:43%;
width:7em;
}
.edit-item-sidebar fieldset.archive-later-datetime {

View File

@@ -1,11 +1,7 @@
@model Orchard.ArchiveLater.ViewModels.ArchiveLaterViewModel
@using System.Web.Mvc.Html;
@{
Style.Require("jQueryUtils_TimePicker");
Style.Require("jQueryUI_DatePicker");
Style.Require("ArchiveLater_DatePicker");
Script.Require("jQueryUI_DatePicker");
Script.Require("jQueryUtils_TimePicker");
}
<fieldset class="archive-later-datetime">
@@ -25,6 +21,7 @@
@* generates the localization script *@
@Display(New.DatePickerLocalization())
@Display(New.TimePickerLocalization())
<script type="text/javascript">
//<![CDATA[
@@ -42,7 +39,7 @@
}
});
$('#@ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledArchiveDate")').datepicker({ showAnim: "" }).focus(function () { $('#@ViewData.TemplateInfo.GetFullHtmlFieldId("Command_ArchiveLater")').attr("checked", "checked") });
$('#@ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledArchiveTime")').timepickr().focus(function () { $('#@ViewData.TemplateInfo.GetFullHtmlFieldId("Command_ArchiveLater")').attr("checked", "checked") });
$('#@ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledArchiveTime")').timepicker({ stepMinute: 5 }).focus(function () { $('#@ViewData.TemplateInfo.GetFullHtmlFieldId("Command_ArchiveLater")').attr("checked", "checked") });
})
//]]>
</script>

View File

@@ -1,6 +1,5 @@
using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using Orchard.Blogs.Models;
using Orchard.Commands;
@@ -39,7 +38,7 @@ namespace Orchard.Blogs.Commands {
public string FeedUrl { get; set; }
[OrchardSwitch]
public int Id { get; set; }
public int BlogId { get; set; }
[OrchardSwitch]
public string Owner { get; set; }
@@ -100,7 +99,7 @@ namespace Orchard.Blogs.Commands {
[CommandName("blog import")]
[CommandHelp("blog import /BlogId:<id> /FeedUrl:<feed url> /Owner:<username>\r\n\t" + "Import all items from <feed url> into the blog specified by <id>")]
[OrchardSwitches("FeedUrl,Id,Owner")]
[OrchardSwitches("FeedUrl,BlogId,Owner")]
public void Import() {
var owner = _membershipService.GetUser(Owner);
@@ -120,10 +119,10 @@ namespace Orchard.Blogs.Commands {
throw new OrchardException(T("An error occured while loading the feed at {0}.", FeedUrl), ex);
}
var blog = _blogService.Get(Id,VersionOptions.Latest);
var blog = _blogService.Get(BlogId, VersionOptions.Latest);
if ( blog == null ) {
Context.Output.WriteLine(T("Blog not found with specified Id: {0}", Id));
Context.Output.WriteLine(T("Blog not found with specified Id: {0}", BlogId));
return;
}

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The Orchard Blogs module is implementing basic blogging features.
FeatureDescription: A simple web log.
Dependencies: Shapes, Common, Feeds, Navigation, Orchard.Widgets, Orchard.jQuery, Orchard.PublishLater

View File

@@ -30,6 +30,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The comments system implemented by this module can be applied to arbitrary Orchard content types, such as blogs and pages. It includes comment validation and spam protection through the Akismet service.
Features:
Orchard.Comments:

View File

@@ -30,6 +30,5 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly:SecurityRules(SecurityRuleSet.Level2)]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: Contains designer tools to ease the Themes development process
FeatureName: Shape Tracing
Category: Designer

View File

@@ -88,7 +88,7 @@
<Content Include="Views\Web.config" />
<Content Include="Scripts\Web.config" />
<Content Include="Styles\Web.config" />
<Content Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Content Include="Module.txt" />
</ItemGroup>
<ItemGroup>

View File

@@ -31,5 +31,5 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -3,8 +3,8 @@ Path: MediaPicker
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: Description for the module
Dependencies: Orchard.Media, Orchard.jQuery
FeatureDescription: UI for browsing for, uploading, or selecting an image for an HTML editor.

View File

@@ -18,6 +18,7 @@
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
<TargetFrameworkProfile />
<UseIISExpress>false</UseIISExpress>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -66,7 +67,7 @@
<Content Include="Views\Web.config" />
<Content Include="Scripts\Web.config" />
<Content Include="Styles\Web.config" />
<Content Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Content Include="Module.txt" />
</ItemGroup>
<ItemGroup>

View File

@@ -31,6 +31,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -3,7 +3,6 @@ using System.Xml;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers;
using Orchard.Core.Shapes.Localization;
using Orchard.Mvc;
using Orchard.PublishLater.Models;
using Orchard.PublishLater.Services;
@@ -18,7 +17,6 @@ namespace Orchard.PublishLater.Drivers {
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IPublishLaterService _publishLaterService;
private readonly IClock _clock;
private readonly IDateTimeLocalization _dateTimeLocalization;
private readonly Lazy<CultureInfo> _cultureInfo;
@@ -26,12 +24,10 @@ namespace Orchard.PublishLater.Drivers {
IOrchardServices services,
IHttpContextAccessor httpContextAccessor,
IPublishLaterService publishLaterService,
IClock clock,
IDateTimeLocalization dateTimeLocalization) {
IClock clock) {
_httpContextAccessor = httpContextAccessor;
_publishLaterService = publishLaterService;
_clock = clock;
_dateTimeLocalization = dateTimeLocalization;
T = NullLocalizer.Instance;
Services = services;
@@ -62,8 +58,8 @@ namespace Orchard.PublishLater.Drivers {
var localDate = new Lazy<DateTime>( () => TimeZoneInfo.ConvertTimeFromUtc(part.ScheduledPublishUtc.Value.Value, Services.WorkContext.CurrentTimeZone));
var model = new PublishLaterViewModel(part) {
ScheduledPublishUtc = part.ScheduledPublishUtc.Value,
ScheduledPublishDate = part.ScheduledPublishUtc.Value.HasValue && !part.IsPublished() ? localDate.Value.ToString(_dateTimeLocalization.ShortDateFormat.Text) : String.Empty,
ScheduledPublishTime = part.ScheduledPublishUtc.Value.HasValue && !part.IsPublished() ? localDate.Value.ToString(_dateTimeLocalization.ShortTimeFormat.Text) : String.Empty,
ScheduledPublishDate = part.ScheduledPublishUtc.Value.HasValue && !part.IsPublished() ? localDate.Value.ToString("d", _cultureInfo.Value) : String.Empty,
ScheduledPublishTime = part.ScheduledPublishUtc.Value.HasValue && !part.IsPublished() ? localDate.Value.ToString("t", _cultureInfo.Value) : String.Empty,
};
return ContentShape("Parts_PublishLater_Edit",
@@ -80,10 +76,9 @@ namespace Orchard.PublishLater.Drivers {
DateTime scheduled;
string parseDateTime = String.Concat(model.ScheduledPublishDate, " ", model.ScheduledPublishTime);
var dateTimeFormat = _dateTimeLocalization.ShortDateFormat + " " + _dateTimeLocalization.ShortTimeFormat;
// use current culture
if (DateTime.TryParseExact(parseDateTime, dateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out scheduled)) {
if (DateTime.TryParse(parseDateTime, _cultureInfo.Value, DateTimeStyles.None, out scheduled)) {
// the date time is entered locally for the configured timezone
var timeZone = Services.WorkContext.CurrentTimeZone;

View File

@@ -3,8 +3,8 @@ Path: PublishLater
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The PublishLater module introduces draft creation and scheduled publishing functionality.
FeatureDescription: Draft creation and scheduled publishing.
Category: Content

View File

@@ -30,6 +30,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -23,9 +23,9 @@ fieldset.publish-later-datetime input {
}
input#PublishLater_ScheduledPublishDate {
width:39%;
width:10em;
margin:0 0 0 12px;
}
input#PublishLater_ScheduledPublishTime {
width:33%;
width:7em;
}

View File

@@ -1,10 +1,6 @@
@model Orchard.PublishLater.ViewModels.PublishLaterViewModel
@{
Script.Require("jQueryUtils_TimePicker");
Script.Require("jQueryUI_DatePicker");
Style.Require("PublishLater_DatePicker");
Style.Require("jQueryUtils_TimePicker");
Style.Require("jQueryUI_DatePicker");
}
<fieldset class="publish-later-datetime">
<legend>@T("Publish")</legend>
@@ -18,6 +14,7 @@
@* generates the localization script *@
@Display(New.DatePickerLocalization())
@Display(New.TimePickerLocalization())
<script type="text/javascript">
//<![CDATA[
@@ -40,7 +37,7 @@
});
$('#@ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledPublishDate")').datepicker({ showAnim: ""}).focus(function () { $('#@ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishLater")').attr("checked", "checked") });
$('#@ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledPublishTime")').timepickr().focus(function () { $('#@ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishLater")').attr("checked", "checked") });
$('#@ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledPublishTime")').timepicker({ stepMinute: 5}).focus(function () { $('#@ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishLater")').attr("checked", "checked") });
})
//]]>
</script>

View File

@@ -11,7 +11,7 @@
<li><img class="icon" src="@Href("~/Modules/Orchard.PublishLater/Content/Admin/images/online.gif")" alt="@T("Online")" title="@T("The page is currently online")" /> </li> <li>@T("Published")&nbsp;&#124;&nbsp;</li>
}
else {
<li><img class="icon" src="@Href("~/Modules/Orchard.PublishLater/Content/Admin/images/offline.gif")" alt="@T("Offline")" title="@T("The page is currently offline")" /> <li> </li>@T("Not Published")&nbsp;&#124;&nbsp;</li>
<li><img class="icon" src="@Href("~/Modules/Orchard.PublishLater/Content/Admin/images/offline.gif")" alt="@T("Offline")" title="@T("The page is currently offline")" /> </li> <li>@T("Not Published")&nbsp;&#124;&nbsp;</li>
}
@* Does the page have a draft *@

View File

@@ -2,8 +2,8 @@
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: Provides a mecanism to generate a static version of pages for being used during application warm up.
FeatureDescription: Generates the static version of specific pages periodically.
Category: Hosting

View File

@@ -66,7 +66,7 @@
<Content Include="Views\Web.config" />
<Content Include="Scripts\Web.config" />
<Content Include="Styles\Web.config" />
<Content Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Content Include="Module.txt" />
</ItemGroup>
<ItemGroup>

View File

@@ -31,6 +31,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -3,8 +3,8 @@ Path: Orchard.jQuery
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.4.1
OrchardVersion: 1.4.1
Version: 1.4.2
OrchardVersion: 1.4.2
Description: The jQuery module contains the jQuery and related script libraries.
FeatureDescription: A common location for jQuery and related script libraries.
Category: Core

View File

@@ -47,6 +47,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="Scripts\jquery.ui.timepicker.min.js" />
<Content Include="Scripts\jquery-1.7.1.js" />
<Content Include="Scripts\jquery-1.7.1.min.js" />
<Content Include="Scripts\jquery-ui.js" />
@@ -114,7 +115,7 @@
<Content Include="Scripts\jquery.ui.widget.js" />
<Content Include="Scripts\jquery.ui.widget.min.js" />
<Content Include="Scripts\jquery.utils.js" />
<Content Include="Scripts\ui.timepickr.js" />
<Content Include="Scripts\jquery.ui.timepicker.js" />
<Content Include="Styles\images\ui-bg_flat_0_aaaaaa_40x100.png" />
<Content Include="Styles\images\ui-bg_flat_75_ffffff_40x100.png" />
<Content Include="Styles\images\ui-bg_glass_55_fbf9ee_1x400.png" />
@@ -130,7 +131,7 @@
<Content Include="Styles\images\ui-icons_cd0a0a_256x240.png" />
<Content Include="Styles\jquery-ui-1.8.18.custom.css" />
<Content Include="Styles\ui.datepicker.css" />
<Content Include="Styles\ui.timepickr.css" />
<Content Include="Styles\ui.timepicker.css" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
@@ -164,7 +165,9 @@
<Content Include="web.config" />
<Content Include="Views\Web.config" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="Views\TimePickerLocalization.cshtml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@@ -30,6 +30,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]

View File

@@ -30,6 +30,7 @@ namespace Orchard.jQuery {
manifest.DefineScript("jQueryUI_Slider").SetUrl("jquery.ui.slider.min.js", "jquery.ui.slider.js").SetVersion("1.8.18").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Mouse");
manifest.DefineScript("jQueryUI_Tabs").SetUrl("jquery.ui.tabs.min.js", "jquery.ui.tabs.js").SetVersion("1.8.18").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
manifest.DefineScript("jQueryUI_DatePicker").SetUrl("jquery.ui.datepicker.min.js", "jquery.ui.datepicker.js").SetVersion("1.8.18").SetDependencies("jQueryUI_Core");
manifest.DefineScript("jQueryUI_TimePicker").SetUrl("jquery.ui.timepicker.min.js", "jquery.ui.timepicker.js").SetVersion("1.0.0").SetDependencies("jQueryUI_Slider", "jQueryUI_DatePicker");
manifest.DefineScript("jQueryUI_Progressbar").SetUrl("jquery.ui.progressbar.min.js", "jquery.ui.progressbar.js").SetVersion("1.8.18").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
// Effects
@@ -48,15 +49,11 @@ namespace Orchard.jQuery {
manifest.DefineScript("jQueryEffects_Slide").SetUrl("jquery.effects.slide.min.js", "jquery.effects.slide.js").SetVersion("1.8.18").SetDependencies("jQueryEffects_Core");
manifest.DefineScript("jQueryEffects_Transfer").SetUrl("jquery.effects.transfer.min.js", "jquery.effects.transfer.js").SetVersion("1.8.18").SetDependencies("jQueryEffects_Core");
// Utils
manifest.DefineScript("jQueryUtils").SetUrl("jquery.utils.js").SetDependencies("jQuery");
manifest.DefineScript("jQueryUtils_TimePicker").SetUrl("ui.timepickr.js").SetVersion("0.7.0a").SetDependencies("jQueryUtils", "jQueryUI_Core", "jQueryUI_Widget");
manifest.DefineStyle("jQueryUI_Orchard").SetUrl("jquery-ui-1.8.18.custom.css").SetVersion("1.8.18");
manifest.DefineStyle("jQueryUI_DatePicker").SetUrl("ui.datepicker.css").SetDependencies("jQueryUI_Orchard").SetVersion("1.7.2");
manifest.DefineStyle("jQueryUtils_TimePicker").SetUrl("ui.timepickr.css");
manifest.DefineStyle("jQueryUI_TimePicker").SetUrl("ui.timepicker.css").SetDependencies("jQueryUI_DatePicker").SetVersion("1.0.0");
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,420 +0,0 @@
/*
jQuery ui.timepickr - @VERSION
http://code.google.com/p/jquery-utils/
(c) Maxime Haineault <haineault@gmail.com>
http://haineault.com
MIT License (http://www.opensource.org/licenses/mit-license.php
Note: if you want the original experimental plugin checkout the rev 224
Dependencies
------------
- jquery.utils.js
- jquery.strings.js
- jquery.ui.js
*/
(function($) {
$.tpl('timepickr.menu', '<div class="ui-helper-reset ui-timepickr ui-widget ui-corner-all ui-widget-content" />'); //todo: (heskew) make the corner an option just like the items
$.tpl('timepickr.row', '<ol class="ui-timepickr-row ui-helper-clearfix" />');
$.tpl('timepickr.button', '<li class="{className:s}"><span class="ui-state-default">{label:s}</span></li>');
$.widget('ui.timepickr', {
options: {
convention: 12, // 24, 12
trigger: 'focus',
format12: '{h:02.d}:{m:02.d} {z}',
format24: '{h:02.d}:{m:02.d}',
hours: true,
prefix: ['AM', 'PM'],
suffix: ['AM', 'PM'],
prefixVal: false,
suffixVal: true,
rangeHour12: $.range(1, 13),
rangeHour24: [$.range(0, 12), $.range(12, 24)],
rangeMin: $.range(0, 60, 15),
rangeSec: $.range(0, 60, 15),
corners: 'all',
// plugins
core: true,
minutes: true,
seconds: false,
val: false,
updateLive: true,
resetOnBlur: true,
keyboardnav: true,
handle: false,
handleEvent: 'click'
},
plugins: {},
_create: function() {
this._dom = {
menu: $.tpl('timepickr.menu'),
row: $.tpl('timepickr.menu')
};
this._trigger('start');
this._trigger('initialized');
},
_trigger: function(type, e, ui) {
var ui = ui || this;
$.ui.plugin.call(this, type, [e, ui]);
return $.Widget.prototype._trigger.call(this, type, e, ui);
},
_createButton: function(i, format, className) {
var o = format && $.format(format, i) || i;
var cn = className && 'ui-timepickr-button ' + className || 'ui-timepickr-button';
return $.tpl('timepickr.button', { className: cn, label: o }).data('id', i)
.bind('mouseover', function() {
$(this).siblings().find('span')
.removeClass('ui-state-hover').end().end()
.find('span').addClass('ui-state-hover');
});
},
_addRow: function(range, format, className, insertAfter) {
var ui = this;
var btn = false;
var row = $.tpl('timepickr.row').bind('mouseover', function() {
$(this).next().show();
});
$.each(range, function(idx, val) {
ui._createButton(val, format || false).appendTo(row);
});
if (className) {
$(row).addClass(className);
}
if (this.options.corners) {
row.find('span').addClass('ui-corner-' + this.options.corners);
}
if (insertAfter) {
row.insertAfter(insertAfter);
}
else {
ui._dom.menu.append(row);
}
return row;
},
_setVal: function(val) {
val = val || this._getVal();
this.element.data('timepickr.initialValue', val);
this.element.val(this._formatVal(val));
if (this._dom.menu.is(':hidden')) {
this.element.trigger('change');
}
},
_getVal: function() {
var ols = this._dom.menu.find('ol');
function g(unit) {
var u = ols.filter('.' + unit).find('.ui-state-hover:first').text();
return u || ols.filter('.' + unit + 'li:first span').text();
}
return {
h: g('hours'),
m: g('minutes'),
s: g('seconds'),
a: g('prefix'),
z: g('suffix'),
f: this.options['format' + this.c],
c: this.c
};
},
_formatVal: function(ival) {
var val = ival || this._getVal();
if (!val.h) return;
val.c = this.options.convention;
val.f = val.c === 12 && this.options.format12 || this.options.format24;
return (new Time(val)).getTime();
},
blur: function() {
return this.element.blur();
},
focus: function() {
return this.element.focus();
},
show: function() {
this._trigger('show');
var pos = this.element.position();
var width = this.element.data('width');
var elementWidth = this.element.outerWidth();
var windowWidth = $(window).width() + $(window).scrollLeft();
if (width) {
this._dom.menu.css(
'left',
pos.left + width < windowWidth
? pos.left
: windowWidth - width
);
}
this._dom.menu.show(); //todo: (heskew) make show effect an option
},
hide: function() {
this._trigger('hide');
this._dom.menu.hide();
}
});
// These properties are shared accross every instances of timepickr
$.extend($.ui.timepickr, {
version: '@VERSION'
});
$.ui.plugin.add('timepickr', 'core', {
start: function(e, ui) {
var menu = ui._dom.menu;
var pos = ui.element.position();
//render off screen, to be repositioned by show()
menu.insertAfter(ui.element).css('left', '-9999em');
if (!$.boxModel) { // IE alignement fix
menu.css('margin-top', ui.element.height() + 8);
}
ui.element
.bind(ui.options.trigger, function() {
ui._dom.menu.find('ol:first').show();
ui.show();
ui._trigger('focus');
if (ui.options.trigger != 'focus') {
ui.element.focus();
}
ui._trigger('focus');
})
.bind('blur', function() {
ui.hide();
ui._trigger('blur');
});
menu.find('li').bind('mouseover.timepickr', function() {
ui._trigger('refresh');
});
},
initialized: function(e, ui) {
var menuItems = ui._dom.menu.find('ol');
var pos = ui.element.position();
//load up
ui.show();
menuItems.show();
//store width(s)
ui.element.data('width', ui._dom.menu.outerWidth());
//fix the width
ui._dom.menu.width(ui._dom.menu.width());
//hide
menuItems.hide();
ui.hide();
},
refresh: function(e, ui) {
// Realign each menu layers
ui._dom.menu.find('ol').each(function() {
var p = $(this).prev('ol');
try { // .. to not fuckup IE
$(this).css('left', p.position().left + p.find('.ui-state-hover').position().left);
} catch (e) { };
});
}
});
$.ui.plugin.add('timepickr', 'hours', {
start: function(e, ui) {
if (ui.options.convention === 24) {
// prefix is required in 24h mode
ui._dom.prefix = ui._addRow(ui.options.prefix, false, 'prefix');
// split-range
if ($.isArray(ui.options.rangeHour24[0])) {
var range = [];
$.merge(range, ui.options.rangeHour24[0]);
$.merge(range, ui.options.rangeHour24[1]);
ui._dom.hours = ui._addRow(range, '{0:0.2d}', 'hours');
ui._dom.hours.find('li').slice(ui.options.rangeHour24[0].length, -1).hide();
var lis = ui._dom.hours.find('li');
var show = [
function() {
lis.slice(ui.options.rangeHour24[0].length).hide().end()
.slice(0, ui.options.rangeHour24[0].length).show()
.filter(':visible:first').trigger('mouseover');
},
function() {
lis.slice(0, ui.options.rangeHour24[0].length).hide().end()
.slice(ui.options.rangeHour24[0].length).show()
.filter(':visible:first').trigger('mouseover');
}
];
ui._dom.prefix.find('li').bind('mouseover.timepickr', function() {
var index = ui._dom.menu.find('.prefix li').index(this);
show[index].call();
});
}
else {
ui._dom.hours = ui._addRow(ui.options.rangeHour24, '{0:0.2d}', 'hours');
ui._dom.hours.find('li').slice(12, -1).hide();
}
}
else {
ui._dom.hours = ui._addRow(ui.options.rangeHour12, '{0:0.2d}', 'hours');
// suffix is required in 12h mode
ui._dom.suffix = ui._addRow(ui.options.suffix, false, 'suffix');
}
}
});
$.ui.plugin.add('timepickr', 'minutes', {
start: function(e, ui) {
var p = ui._dom.hours && ui._dom.hours || false;
ui._dom.minutes = ui._addRow(ui.options.rangeMin, '{0:0.2d}', 'minutes', p);
}
});
$.ui.plugin.add('timepickr', 'seconds', {
start: function(e, ui) {
var p = ui._dom.minutes && ui._dom.minutes || false;
ui._dom.seconds = ui._addRow(ui.options.rangeSec, '{0:0.2d}', 'seconds', p);
}
});
$.ui.plugin.add('timepickr', 'val', {
start: function(e, ui) {
ui._setVal(ui.options.val);
}
});
$.ui.plugin.add('timepickr', 'updateLive', {
refresh: function(e, ui) {
ui._setVal();
}
});
$.ui.plugin.add('timepickr', 'resetOnBlur', {
start: function(e, ui) {
ui.element.data('timepickr.initialValue', ui._getVal());
ui._dom.menu.find('li > span').bind('mousedown.timepickr', function() {
ui.element.data('timepickr.initialValue', ui._getVal());
});
},
blur: function(e, ui) {
ui._setVal(ui.element.data('timepickr.initialValue'));
}
});
$.ui.plugin.add('timepickr', 'handle', {
start: function(e, ui) {
$(ui.options.handle).bind(ui.options.handleEvent + '.timepickr', function() {
ui.show();
});
}
});
$.ui.plugin.add('timepickr', 'keyboardnav', {
start: function(e, ui) {
ui.element
.bind('keydown', function(e) {
if ($.keyIs('enter', e)) {
ui._setVal();
ui.blur();
}
else if ($.keyIs('escape', e)) {
ui.blur();
}
});
}
});
var Time = function() { // arguments: h, m, s, c, z, f || time string
if (!(this instanceof arguments.callee)) {
throw Error("Constructor called as a function");
}
// arguments as literal object
if (arguments.length == 1 && $.isObject(arguments[0])) {
this.h = arguments[0].h || 0;
this.m = arguments[0].m || 0;
this.s = arguments[0].s || 0;
this.c = arguments[0].c && ($.inArray(arguments[0].c, [12, 24]) >= 0) && arguments[0].c || 24;
this.f = arguments[0].f || ((this.c == 12) && '{h:02.d}:{m:02.d} {z:02.d}' || '{h:02.d}:{m:02.d}');
this.z = arguments[0].z || 'am';
}
// arguments as string
else if (arguments.length < 4 && $.isString(arguments[1])) {
this.c = arguments[2] && ($.inArray(arguments[0], [12, 24]) >= 0) && arguments[0] || 24;
this.f = arguments[3] || ((this.c == 12) && '{h:02.d}:{m:02.d} {z:02.d}' || '{h:02.d}:{m:02.d}');
this.z = arguments[4] || 'am';
this.h = arguments[1] || 0; // parse
this.m = arguments[1] || 0; // parse
this.s = arguments[1] || 0; // parse
}
// no arguments (now)
else if (arguments.length === 0) {
// now
}
// standards arguments
else {
this.h = arguments[0] || 0;
this.m = arguments[1] || 0;
this.s = arguments[2] || 0;
this.c = arguments[3] && ($.inArray(arguments[3], [12, 24]) >= 0) && arguments[3] || 24;
this.f = this.f || ((this.c == 12) && '{h:02.d}:{m:02.d} {z:02.d}' || '{h:02.d}:{m:02.d}');
this.z = 'am';
}
return this;
};
Time.prototype.get = function(p, f, u) { return u && this.h || $.format(f, this.h); };
Time.prototype.getHours = function(unformated) { return this.get('h', '{0:02.d}', unformated); };
Time.prototype.getMinutes = function(unformated) { return this.get('m', '{0:02.d}', unformated); };
Time.prototype.getSeconds = function(unformated) { return this.get('s', '{0:02.d}', unformated); };
Time.prototype.setFormat = function(format) { return this.f = format; };
Time.prototype.getObject = function() { return { h: this.h, m: this.m, s: this.s, c: this.c, f: this.f, z: this.z }; };
Time.prototype.getTime = function() { return $.format(this.f, { h: this.h, m: this.m, z: this.z }); };
Time.prototype.parse = function(str) {
// 12h formats
if (this.c === 12) {
// Supported formats: (can't find any *official* standards for 12h..)
// - [hh]:[mm]:[ss] [zz] | [hh]:[mm] [zz] | [hh] [zz]
// - [hh]:[mm]:[ss] [z.z.] | [hh]:[mm] [z.z.] | [hh] [z.z.]
this.tokens = str.split(/\s|:/);
this.h = this.tokens[0] || 0;
this.m = this.tokens[1] || 0;
this.s = this.tokens[2] || 0;
this.z = this.tokens[3] || '';
return this.getObject();
}
// 24h formats
else {
// Supported formats:
// - ISO 8601: [hh][mm][ss] | [hh][mm] | [hh]
// - ISO 8601 extended: [hh]:[mm]:[ss] | [hh]:[mm] | [hh]
this.tokens = /:/.test(str) && str.split(/:/) || str.match(/[0-9]{2}/g);
this.h = this.tokens[0] || 0;
this.m = this.tokens[1] || 0;
this.s = this.tokens[2] || 0;
this.z = this.tokens[3] || '';
return this.getObject();
}
};
})(jQuery);

View File

@@ -0,0 +1,7 @@
/* css for timepicker */
.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
.ui-timepicker-div dl { text-align: left; }
.ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; }
.ui-timepicker-div dl dd { margin: 0 10px 10px 65px; }
.ui-timepicker-div td { font-size: 90%; }
.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }

View File

@@ -1,50 +0,0 @@
.ui-timepickr {
display:none;
position:absolute;
padding:2px 2px 2px 0;
}
.ui-timepickr-row {
padding:0;
float:right;
clear:both;
overflow:hidden;
margin:2px 0;
display:none;
position:relative;
}
.ui-timepickr-button {
float:left;
margin:0;
padding:0;
list-style:none;
list-style-type:none;
}
.ui-timepickr-button span {
font-size:.7em;
padding:4px 6px 4px 6px;
margin-left:2px;
text-align:center;
cursor:pointer;
display:block;
text-align:center;
/* system theme (default) */
border-width:1px;
border-style:solid;
/*border-color:ThreeDLightShadow ThreeDShadow ThreeDShadow ThreeDLightShadow;
color:ButtonText;
background:ButtonFace;*/
}
.ui-timepickr-button span.ui-state-hover {
/*color:HighlightText;
background:Highlight;*/
}
.ui-state-hover span {
/*background:#c30;*/
}

View File

@@ -1,5 +1,20 @@
@using Orchard.Core.Shapes.Localization
@using System.Globalization
@{
// prevent the shape from being rendered twice in a page
if (WorkContext.GetState<object>("DatePickerLocalization") != null) {
return;
}
WorkContext.SetState("DatePickerLocalization", new object());
Style.Require("jQueryUI_DatePicker");
Script.Require("jQueryUI_DatePicker");
var cultureInfo = CultureInfo.GetCultureInfo(WorkContext.CurrentCulture);
var dateTimeLocalization = WorkContext.Resolve<IDateTimeLocalization>();
var monthNames = FormatJsList(dateTimeLocalization.MonthNames.Text);
var monthNamesShort = FormatJsList(dateTimeLocalization.MonthNamesShort.Text);
@@ -10,8 +25,8 @@
// convert .NET format into jQuery format
// http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
// http://docs.jquery.com/UI/Datepicker/formatDate
var dateFormat = dateTimeLocalization.ShortDateFormat.Text
var dateFormat = cultureInfo.DateTimeFormat.ShortDatePattern
.Replace("yyyy", "YY")
.Replace("yy", "Y")
.Replace("Y", "y")
@@ -42,10 +57,12 @@
weekHeader: '@T("Wk")', // Column header for week of the year
dateFormat: '@dateFormat', // See format options on parseDate
firstDay: @dateTimeLocalization.FirstDay, // The first day of the week, Sun = 0, Mon = 1, ...
isRTL: @(dateTimeLocalization.IsRTL ? "true" : "false"), // True if right-to-left language, false if left-to-right
isRTL: @(cultureInfo.TextInfo.IsRightToLeft ? "true" : "false"), // True if right-to-left language, false if left-to-right
showMonthAfterYear: @(dateTimeLocalization.ShowMonthAfterYear ? "true" : "false"), // True if the year select precedes month, false for month then year
yearSuffix: '@dateTimeLocalization.YearSuffix' // Additional text to append to the year in the month headers
};
$.datepicker.setDefaults($.datepicker.regional['']);
})
//]]>
</script>

View File

@@ -0,0 +1,46 @@
@using Orchard.Core.Shapes.Localization
@using System.Globalization
@{
// prevent the shape from being rendered twice in a page
if (WorkContext.GetState<object>("TimePickerLocalization") != null) {
return;
}
WorkContext.SetState("TimePickerLocalization", new object());
Style.Require("jQueryUI_TimePicker");
Script.Require("jQueryUI_TimePicker");
var cultureInfo = CultureInfo.GetCultureInfo(WorkContext.CurrentCulture);
var dateTimeLocalization = WorkContext.Resolve<IDateTimeLocalization>();
var timeFormat = dateTimeLocalization.ShortTimeFormat.Text
.Replace("H", "h");
var ampm = dateTimeLocalization.ShortTimeFormat.Text.Contains("H") ? "false" : "true";
}
<script type="text/javascript">
//<![CDATA[
$(function() {
$.timepicker.regional[''] = {
timeOnlyTitle: '@T("Choose time")',
timeText: '@T("Time")',
hourText: '@T("Hour")',
minuteText: '@T("Minute")',
currentText: '@T("Now")', // Display text for current time link
closeText: '@T("Done")', // Display text for close link
timeFormat: '@timeFormat',
amNames: ['@cultureInfo.DateTimeFormat.AMDesignator', 'AM', 'A'],
pmNames: ['@cultureInfo.DateTimeFormat.PMDesignator', 'PM', 'P'],
ampm: @ampm
};
$.timepicker.setDefaults($.timepicker.regional['']);
})
//]]>
</script>

View File

@@ -31,6 +31,6 @@ using System.Security;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]

View File

@@ -34,6 +34,6 @@ using System.Security;
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]
[assembly: AssemblyVersion("1.4.2")]
[assembly: AssemblyFileVersion("1.4.2")]