Some work towards moving the content publish editor over to the common part

--HG--
branch : dev
This commit is contained in:
Nathan Heskew
2010-07-13 10:14:46 -07:00
parent 501d72afab
commit 7c11b79b7d
67 changed files with 208 additions and 6247 deletions

View File

@@ -1,34 +1,44 @@
using Orchard.ContentManagement;
using System;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Core.Common.Models;
using Orchard.Core.Common.Services;
using Orchard.Core.Common.ViewModels;
using Orchard.Localization;
using Orchard.Security;
using Orchard.Services;
using Orchard.UI.Notify;
namespace Orchard.Core.Common.Drivers {
public class CommonDriver : ContentPartDriver<CommonAspect> {
private const string TemplatePrefix = "CommonAspect";
private readonly IContentManager _contentManager;
private readonly IAuthenticationService _authenticationService;
private readonly IAuthorizationService _authorizationService;
private readonly IMembershipService _membershipService;
private readonly ICommonService _commonService;
private readonly IClock _clock;
public CommonDriver(
IOrchardServices services,
IContentManager contentManager,
IAuthenticationService authenticationService,
IAuthorizationService authorizationService,
IMembershipService membershipService,
ICommonService commonService,
IClock clock) {
_contentManager = contentManager;
_authenticationService = authenticationService;
_authorizationService = authorizationService;
_membershipService = membershipService;
_commonService = commonService;
_clock = clock;
T = NullLocalizer.Instance;
Services = services;
}
public Localizer T { get; set; }
public IOrchardServices Services { get; set; }
protected override DriverResult Display(CommonAspect part, string displayType) {
var model = new CommonMetadataViewModel(part);
@@ -38,7 +48,10 @@ namespace Orchard.Core.Common.Drivers {
}
protected override DriverResult Editor(CommonAspect part) {
return Combined(OwnerEditor(part, null), ContainerEditor(part, null));
return Combined(
OwnerEditor(part, null),
ContainerEditor(part, null),
PublishEditor(part, null));
}
protected override DriverResult Editor(CommonAspect instance, ContentManagement.IUpdateModel updater) {
@@ -46,7 +59,36 @@ namespace Orchard.Core.Common.Drivers {
instance.ModifiedUtc = _clock.UtcNow;
instance.VersionModifiedUtc = _clock.UtcNow;
return Combined(OwnerEditor(instance, updater), ContainerEditor(instance, updater));
return Combined(
OwnerEditor(instance, updater),
ContainerEditor(instance, updater),
PublishEditor(instance, updater));
}
DriverResult PublishEditor(CommonAspect part, IUpdateModel updater) {
var model = new PublishEditorViewModel(part);
if (updater != null) {
updater.TryUpdateModel(model, TemplatePrefix, null, null);
switch (model.Command) {
case "PublishNow":
_commonService.Publish(model.ContentItem);
Services.Notifier.Information(T("{0} has been published!", model.ContentItem.TypeDefinition.DisplayName));
break;
case "PublishLater":
DateTime scheduled;
if (DateTime.TryParse(string.Format("{0} {1}", model.ScheduledPublishUtcDate, model.ScheduledPublishUtcTime), out scheduled))
model.ScheduledPublishUtc = scheduled;
_commonService.Publish(model.ContentItem, model.ScheduledPublishUtc.HasValue ? model.ScheduledPublishUtc.Value : DateTime.MaxValue);
Services.Notifier.Information(T("{0} has been scheduled for publishing!", model.ContentItem.TypeDefinition.DisplayName));
break;
case "SaveDraft":
Services.Notifier.Information(T("{0} draft has been saved!", model.ContentItem.TypeDefinition.DisplayName));
break;
}
}
return ContentPartTemplate(model, "Parts/Common.Publish", TemplatePrefix).Location("secondary", "1");
}
DriverResult OwnerEditor(CommonAspect part, IUpdateModel updater) {
@@ -61,7 +103,7 @@ namespace Orchard.Core.Common.Drivers {
if (updater != null) {
var priorOwner = model.Owner;
updater.TryUpdateModel(model, "CommonAspect", null, null);
updater.TryUpdateModel(model, TemplatePrefix, null, null);
if (model.Owner != null && model.Owner != priorOwner) {
var newOwner = _membershipService.GetUser(model.Owner);
@@ -74,7 +116,7 @@ namespace Orchard.Core.Common.Drivers {
}
}
return ContentPartTemplate(model, "Parts/Common.Owner", "CommonAspect").Location("primary", "10");
return ContentPartTemplate(model, "Parts/Common.Owner", TemplatePrefix).Location("primary", "10");
}
DriverResult ContainerEditor(CommonAspect part, IUpdateModel updater) {
@@ -89,7 +131,7 @@ namespace Orchard.Core.Common.Drivers {
if (updater != null) {
var priorContainerId = model.ContainerId;
updater.TryUpdateModel(model, "CommonAspect", null, null);
updater.TryUpdateModel(model, TemplatePrefix, null, null);
if (model.ContainerId != null && model.ContainerId != priorContainerId) {
var newContainer = _contentManager.Get((int)model.ContainerId, VersionOptions.Latest);
@@ -101,7 +143,7 @@ namespace Orchard.Core.Common.Drivers {
}
}
}
return ContentPartTemplate(model, "Parts/Common.Container", "CommonAspect").Location("primary", "10.1");
return ContentPartTemplate(model, "Parts/Common.Container", TemplatePrefix).Location("primary", "10.1");
}
}
}

View File

@@ -45,6 +45,7 @@ namespace Orchard.Core.Common.Handlers {
OnInitializing<ContentPart<CommonVersionRecord>>(AssignCreatingDates);
OnLoaded<CommonAspect>(LazyLoadHandlers);
OnLoaded<CommonAspect>((context, commonAspect) => commonAspect.ScheduledPublishUtc.Value = _commonService.GetScheduledPublishUtc(commonAspect));
OnVersioning<CommonAspect>(CopyOwnerAndContainer);

View File

@@ -1,18 +1,35 @@
using System;
using Orchard.ContentManagement;
using Orchard.Core.Common.Models;
using Orchard.Tasks.Scheduling;
namespace Orchard.Core.Common.Services {
public class CommonService : ICommonService {
private readonly IPublishingTaskManager _publishingTaskManager;
private readonly IContentManager _contentManager;
public CommonService(IPublishingTaskManager publishingTaskManager) {
public CommonService(IPublishingTaskManager publishingTaskManager, IContentManager contentManager) {
_publishingTaskManager = publishingTaskManager;
_contentManager = contentManager;
}
public DateTime? GetScheduledPublishUtc(ContentItem contentItem) {
DateTime? ICommonService.GetScheduledPublishUtc(ContentItem contentItem) {
var task = _publishingTaskManager.GetPublishTask(contentItem);
return (task == null ? null : task.ScheduledUtc);
}
void ICommonService.Publish(ContentItem contentItem) {
_publishingTaskManager.DeleteTasks(contentItem);
_contentManager.Publish(contentItem);
}
void ICommonService.Publish(ContentItem contentItem, DateTime scheduledPublishUtc) {
_publishingTaskManager.Publish(contentItem, scheduledPublishUtc);
}
DateTime? ICommonService.GetScheduledPublishUtc(CommonAspect commonAspect) {
var task = _publishingTaskManager.GetPublishTask(commonAspect.ContentItem);
return (task == null ? null : task.ScheduledUtc);
}
}
}

View File

@@ -1,8 +1,12 @@
using System;
using Orchard.ContentManagement;
using Orchard.Core.Common.Models;
namespace Orchard.Core.Common.Services {
public interface ICommonService : IDependency {
DateTime? GetScheduledPublishUtc(ContentItem contentItem);
void Publish(ContentItem contentItem);
void Publish(ContentItem contentItem, DateTime scheduledPublishUtc);
DateTime? GetScheduledPublishUtc(CommonAspect commonAspect);
}
}

View File

@@ -0,0 +1,56 @@
using System;
using Orchard.ContentManagement;
using Orchard.Core.Common.Models;
namespace Orchard.Core.Common.ViewModels {
public class PublishEditorViewModel {
private readonly CommonAspect _commonAspect;
private string _scheduledPublishUtcTime;
private string _scheduledPublishUtcDate;
public PublishEditorViewModel(CommonAspect commonAspect) {
_commonAspect = commonAspect;
}
public string Command { get; set; }
public ContentItem ContentItem { get { return _commonAspect.ContentItem; } }
public bool IsPublished {
get { return ContentItem.VersionRecord != null && ContentItem.VersionRecord.Published; }
}
public bool HasDraft {
get {
return (
(ContentItem.VersionRecord != null)
&& ((ContentItem.VersionRecord.Published == false)
|| (ContentItem.VersionRecord.Published && ContentItem.VersionRecord.Latest == false)));
}
}
public bool HasPublished {
get { return IsPublished || ContentItem.ContentManager.Get(ContentItem.Id, VersionOptions.Published) != null; }
}
public DateTime? ScheduledPublishUtc { get; set; }
public string ScheduledPublishUtcDate {
get {
return !HasPublished && !string.IsNullOrEmpty(_scheduledPublishUtcDate) || !ScheduledPublishUtc.HasValue
? _scheduledPublishUtcDate
: ScheduledPublishUtc.Value.ToShortDateString();
}
set { _scheduledPublishUtcDate = value; }
}
public string ScheduledPublishUtcTime {
get {
return !HasPublished && !string.IsNullOrEmpty(_scheduledPublishUtcTime) || !ScheduledPublishUtc.HasValue
? _scheduledPublishUtcTime
: ScheduledPublishUtc.Value.ToShortTimeString();
}
set { _scheduledPublishUtcTime = value; }
}
}
}

View File

@@ -0,0 +1,47 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Common.ViewModels.PublishEditorViewModel>" %>
<% Html.RegisterStyle("datetime.css"); %>
<% Html.RegisterStyle("jquery-ui-1.7.2.custom.css"); %>
<% Html.RegisterStyle("ui.datepicker.css"); %>
<% Html.RegisterStyle("ui.timepickr.css"); %>
<% Html.RegisterFootScript("jquery.ui.core.js"); %>
<% Html.RegisterFootScript("jquery.ui.widget.js"); %>
<% Html.RegisterFootScript("jquery.ui.datepicker.js"); %>
<% Html.RegisterFootScript("jquery.utils.js"); %>
<% Html.RegisterFootScript("ui.timepickr.js"); %>
<fieldset>
<legend><%: T("Publish Settings")%></legend>
<div>
<%: Html.RadioButton("Command", "SaveDraft", Model.ContentItem.VersionRecord == null || !Model.ContentItem.VersionRecord.Published, new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("Command_SaveDraft") })%>
<label class="forcheckbox" for="<%:ViewData.TemplateInfo.GetFullHtmlFieldId("Command_SaveDraft") %>"><%: T("Save Draft")%></label>
</div>
<div>
<%: Html.RadioButton("Command", "PublishNow", Model.ContentItem.VersionRecord != null && Model.ContentItem.VersionRecord.Published, new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishNow") })%>
<label class="forcheckbox" for="<%:ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishNow") %>"><%: T("Publish Now")%></label>
</div>
<div>
<%: Html.RadioButton("Command", "PublishLater", Model.ScheduledPublishUtc != null, new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishLater") }) %>
<label class="forcheckbox" for="<%:ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishLater") %>"><%: T("Publish Later")%></label>
</div>
<div>
<label class="forpicker" for="<%:ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledPublishUtcDate") %>"><%: T("Date")%></label>
<%: Html.EditorFor(m => m.ScheduledPublishUtcDate)%>
<label class="forpicker" for="<%:ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledPublishUtcTime") %>"><%: T("Time")%></label>
<%: Html.EditorFor(m => m.ScheduledPublishUtcTime)%>
</div>
</fieldset>
<script type="text/javascript"> $(function () {
//todo: (heskew) make a plugin
$("label.forpicker").each(function () {
var $this = $(this);
var pickerInput = $("#" + $this.attr("for"));
pickerInput.data("hint", $this.text());
if (!pickerInput.val()) {
pickerInput.addClass("hinted")
.val(pickerInput.data("hint"))
.focus(function () { var $this = $(this); if ($this.val() == $this.data("hint")) { $this.removeClass("hinted").val("") } })
.blur(function () { var $this = $(this); setTimeout(function () { if (!$this.val()) { $this.addClass("hinted").val($this.data("hint")) } }, 300) });
}
});
$(<%=string.Format("\"#{0}\"", ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledPublishUtcDate")) %>).datepicker({ showAnim: "" }).focus(function () { $(<%=string.Format("\"#{0}\"", ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishLater")) %>).attr("checked", "checked") });
$(<%=string.Format("\"#{0}\"", ViewData.TemplateInfo.GetFullHtmlFieldId("ScheduledPublishUtcTime")) %>).timepickr().focus(function () { $(<%=string.Format("\"#{0}\"", ViewData.TemplateInfo.GetFullHtmlFieldId("Command_PublishLater")) %>).attr("checked", "checked") });
})</script>

View File

@@ -4,7 +4,6 @@ using System.Web.Mvc;
using System.Web.Routing;
using Orchard.ContentManagement;
using Orchard.ContentManagement.MetaData;
using Orchard.Core.Contents.Services;
using Orchard.Core.Contents.ViewModels;
using Orchard.Data;
using Orchard.Localization;
@@ -20,21 +19,18 @@ namespace Orchard.Core.Contents.Controllers {
private readonly IContentManager _contentManager;
private readonly IContentDefinitionManager _contentDefinitionManager;
private readonly ITransactionManager _transactionManager;
private readonly IContentsService _contentsService;
public AdminController(
IOrchardServices orchardServices,
INotifier notifier,
IContentManager contentManager,
IContentDefinitionManager contentDefinitionManager,
ITransactionManager transactionManager,
IContentsService contentsService) {
ITransactionManager transactionManager) {
Services = orchardServices;
_notifier = notifier;
_contentManager = contentManager;
_contentDefinitionManager = contentDefinitionManager;
_transactionManager = transactionManager;
_contentsService = contentsService;
T = NullLocalizer.Instance;
Logger = NullLogger.Instance;
}
@@ -110,7 +106,7 @@ namespace Orchard.Core.Contents.Controllers {
[HttpPost]
public ActionResult Create(CreateItemViewModel model, string command, DateTime? scheduledPublishUtc) {
public ActionResult Create(CreateItemViewModel model) {
//todo: need to integrate permissions into generic content management
var contentItem = _contentManager.New(model.Id);
model.Content = _contentManager.UpdateEditorModel(contentItem, this);
@@ -124,20 +120,6 @@ namespace Orchard.Core.Contents.Controllers {
return View("Create", model);
}
switch (command) {
case "PublishNow":
_contentsService.Publish(model.Content.Item);
Services.Notifier.Information(T("{0} has been published", contentItem.TypeDefinition.DisplayName));
break;
case "PublishLater":
_contentsService.Publish(model.Content.Item, scheduledPublishUtc.HasValue ? scheduledPublishUtc.Value : DateTime.MaxValue);
Services.Notifier.Information(T("{0} has been scheduled for publishing", contentItem.TypeDefinition.DisplayName));
break;
default:
Services.Notifier.Information(T("{0} draft has been saved", contentItem.TypeDefinition.DisplayName));
break;
}
_notifier.Information(T("Created content item"));
return RedirectToAction("Edit", new RouteValueDictionary { { "Id", contentItem.Id } });
}
@@ -153,7 +135,7 @@ namespace Orchard.Core.Contents.Controllers {
}
[HttpPost]
public ActionResult Edit(EditItemViewModel model, string command, DateTime? scheduledPublishUtc) {
public ActionResult Edit(EditItemViewModel model) {
var contentItem = _contentManager.Get(model.Id, VersionOptions.DraftRequired);
model.Content = _contentManager.UpdateEditorModel(contentItem, this);
if (!ModelState.IsValid) {
@@ -162,20 +144,6 @@ namespace Orchard.Core.Contents.Controllers {
return View("Edit", model);
}
switch (command) {
case "PublishNow":
_contentsService.Publish(model.Content.Item);
Services.Notifier.Information(T("{0} has been published", contentItem.TypeDefinition.DisplayName));
break;
case "PublishLater":
_contentsService.Publish(model.Content.Item, scheduledPublishUtc.HasValue ? scheduledPublishUtc.Value : DateTime.MaxValue);
Services.Notifier.Information(T("{0} has been scheduled for publishing", contentItem.TypeDefinition.DisplayName));
break;
default:
Services.Notifier.Information(T("{0} draft has been saved", contentItem.TypeDefinition.DisplayName));
break;
}
return RedirectToAction("Edit", new RouteValueDictionary { { "Id", contentItem.Id } });
}

View File

@@ -1,26 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.ContentManagement;
using Orchard.Tasks.Scheduling;
namespace Orchard.Core.Contents.Services {
public class ContentsService : IContentsService {
private readonly IContentManager _contentManager;
private readonly IPublishingTaskManager _publishingTaskManager;
public ContentsService(IContentManager contentManager, IPublishingTaskManager publishingTaskManager) {
_contentManager = contentManager;
_publishingTaskManager = publishingTaskManager;
}
void IContentsService.Publish(ContentItem contentItem) {
_publishingTaskManager.DeleteTasks(contentItem);
_contentManager.Publish(contentItem);
}
void IContentsService.Publish(ContentItem contentItem, DateTime scheduledPublishUtc) {
_publishingTaskManager.Publish(contentItem, scheduledPublishUtc);
}
}
}

View File

@@ -1,9 +0,0 @@
using System;
using Orchard.ContentManagement;
namespace Orchard.Core.Contents.Services {
public interface IContentsService : IDependency {
void Publish(ContentItem contentItem);
void Publish(ContentItem contentItem, DateTime scheduledPublishUtc);
}
}

View File

@@ -50,7 +50,7 @@ namespace Orchard.Core.Localization.Controllers {
}
[HttpPost, ActionName("Translate")]
public ActionResult TranslatePOST(int id, string command, DateTime? scheduledPublishUtc) {
public ActionResult TranslatePOST(int id) {
var contentItem = _contentManager.Get(id, VersionOptions.Latest);
if (contentItem == null)
@@ -82,20 +82,6 @@ namespace Orchard.Core.Localization.Controllers {
return View(viewModel);
}
switch (command) {
case "PublishNow":
_localizationService.Publish(contentItemTranslation);
Services.Notifier.Information(T("{0} has been published", contentItem.TypeDefinition.DisplayName));
break;
case "PublishLater":
_localizationService.Publish(contentItemTranslation, scheduledPublishUtc.HasValue ? scheduledPublishUtc.Value : DateTime.MaxValue);
Services.Notifier.Information(T("{0} has been scheduled for publishing", contentItem.TypeDefinition.DisplayName));
break;
default:
Services.Notifier.Information(T("{0} draft has been saved", contentItem.TypeDefinition.DisplayName));
break;
}
var metadata = _contentManager.GetItemMetadata(viewModel.Content.Item);
if (metadata.EditorRouteValues == null)
return null; //todo: (heskew) redirect to somewhere better than nowhere

View File

@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using Orchard.ContentManagement;
using Orchard.Core.Localization.Models;
@@ -8,7 +7,5 @@ namespace Orchard.Core.Localization.Services {
Localized GetLocalizedContentItem(IContent masterContentItem, string culture);
string GetContentCulture(IContent contentItem);
IEnumerable<IContent> GetLocalizations(IContent contentItem);
void Publish(ContentItem contentItem);
void Publish(ContentItem contentItem, DateTime scheduledPublishUtc);
}
}

View File

@@ -10,12 +10,10 @@ namespace Orchard.Core.Localization.Services {
public class LocalizationService : ILocalizationService {
private readonly IContentManager _contentManager;
private readonly ICultureManager _cultureManager;
private readonly IPublishingTaskManager _publishingTaskManager;
public LocalizationService(IContentManager contentManager, ICultureManager cultureManager, IPublishingTaskManager publishingTaskManager) {
public LocalizationService(IContentManager contentManager, ICultureManager cultureManager) {
_contentManager = contentManager;
_cultureManager = cultureManager;
_publishingTaskManager = publishingTaskManager;
}
Localized ILocalizationService.GetLocalizedContentItem(IContent content, string culture) {
@@ -46,14 +44,5 @@ namespace Orchard.Core.Localization.Services {
.Select(i => i.As<Localized>())
.Where(l => l.MasterContentItem != null && l.MasterContentItem.ContentItem.Id == content.ContentItem.Id);
}
void ILocalizationService.Publish(ContentItem contentItem) {
_publishingTaskManager.DeleteTasks(contentItem);
_contentManager.Publish(contentItem);
}
void ILocalizationService.Publish(ContentItem contentItem, DateTime scheduledPublishUtc) {
_publishingTaskManager.Publish(contentItem, scheduledPublishUtc);
}
}
}

View File

@@ -71,13 +71,12 @@
<Compile Include="Common\Settings\BodySettings.cs" />
<Compile Include="Common\ViewModels\CommonMetadataViewModel.cs" />
<Compile Include="Common\ViewModels\ContainerEditorViewModel.cs" />
<Compile Include="Common\ViewModels\PublishEditorViewModel.cs" />
<Compile Include="Common\ViewModels\TextContentFieldDisplayViewModel.cs" />
<Compile Include="Common\ViewModels\TextContentFieldEditorViewModel.cs" />
<Compile Include="Contents\Controllers\ItemController.cs" />
<Compile Include="Contents\Drivers\ContentsDriver.cs" />
<Compile Include="Contents\Handlers\ContentsHandler.cs" />
<Compile Include="Contents\Services\IContentsService.cs" />
<Compile Include="Contents\Services\ContentsService.cs" />
<Compile Include="Contents\ViewModels\EditItemViewModel.cs" />
<Compile Include="Contents\ViewModels\ListContentsViewModel.cs" />
<Compile Include="Contents\ViewModels\ListContentTypesViewModel.cs" />
@@ -214,6 +213,28 @@
</ItemGroup>
<ItemGroup>
<Content Include="Common\Module.txt" />
<Content Include="Common\Scripts\jquery.ui.core.js" />
<Content Include="Common\Scripts\jquery.ui.datepicker.js" />
<Content Include="Common\Scripts\jquery.ui.widget.js" />
<Content Include="Common\Scripts\jquery.utils.js" />
<Content Include="Common\Scripts\ui.timepickr.js" />
<Content Include="Common\Styles\datetime.css" />
<Content Include="Common\Styles\images\ui-bg_flat_0_aaaaaa_40x100.png" />
<Content Include="Common\Styles\images\ui-bg_flat_75_ffffff_40x100.png" />
<Content Include="Common\Styles\images\ui-bg_glass_55_fbf9ee_1x400.png" />
<Content Include="Common\Styles\images\ui-bg_glass_65_ffffff_1x400.png" />
<Content Include="Common\Styles\images\ui-bg_glass_75_dadada_1x400.png" />
<Content Include="Common\Styles\images\ui-bg_glass_75_e6e6e6_1x400.png" />
<Content Include="Common\Styles\images\ui-bg_glass_95_fef1ec_1x400.png" />
<Content Include="Common\Styles\images\ui-bg_highlight-soft_75_cccccc_1x100.png" />
<Content Include="Common\Styles\images\ui-icons_222222_256x240.png" />
<Content Include="Common\Styles\images\ui-icons_2e83ff_256x240.png" />
<Content Include="Common\Styles\images\ui-icons_454545_256x240.png" />
<Content Include="Common\Styles\images\ui-icons_888888_256x240.png" />
<Content Include="Common\Styles\images\ui-icons_cd0a0a_256x240.png" />
<Content Include="Common\Styles\jquery-ui-1.7.2.custom.css" />
<Content Include="Common\Styles\ui.datepicker.css" />
<Content Include="Common\Styles\ui.timepickr.css" />
<Content Include="Common\Views\DefinitionTemplates\BodyTypePartSettings.ascx" />
<Content Include="Common\Views\DefinitionTemplates\BodyPartSettings.ascx" />
<Content Include="Common\Views\DisplayTemplates\Fields\Common.TextField.ascx" />
@@ -227,6 +248,7 @@
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Publish.ascx" />
<Content Include="Common\Views\EditorTemplates\Fields\Common.TextField.ascx" />
<Content Include="Common\Views\EditorTemplates\Parts\Common.Container.ascx" />
<Content Include="Common\Views\EditorTemplates\Parts\Common.Publish.ascx" />
<Content Include="Common\Views\EditorTemplates\PlainTextEditor.ascx" />
<Content Include="Contents\Module.txt" />
<Content Include="Contents\Views\Admin\Edit.ascx" />

View File

@@ -63,21 +63,6 @@ namespace Orchard.Blogs.Controllers {
Services.ContentManager.Create(model.BlogPost.Item.ContentItem, VersionOptions.Draft);
Services.ContentManager.UpdateEditorModel(blogPost, this);
// Execute publish command
switch (Request.Form["Command"]) {
case "PublishNow":
_blogPostService.Publish(model.BlogPost.Item);
Services.Notifier.Information(T("Blog post has been published"));
break;
case "PublishLater":
_blogPostService.Publish(model.BlogPost.Item, model.BlogPost.Item.ScheduledPublishUtc.Value);
Services.Notifier.Information(T("Blog post has been scheduled for publishing"));
break;
default:
Services.Notifier.Information(T("Blog post draft has been saved"));
break;
}
return Redirect(Url.BlogPostEdit(model.BlogPost.Item));
}
@@ -126,22 +111,6 @@ namespace Orchard.Blogs.Controllers {
return View(model);
}
// Execute publish command
switch (Request.Form["Command"]) {
case "PublishNow":
_blogPostService.Publish(model.BlogPost.Item);
Services.Notifier.Information(T("Blog post has been published"));
break;
case "PublishLater":
_blogPostService.Publish(model.BlogPost.Item, model.BlogPost.Item.ScheduledPublishUtc.Value);
Services.Notifier.Information(T("Blog post has been scheduled for publishing"));
break;
default:
//_blogPostService.Unpublish(model.BlogPost.Item);
Services.Notifier.Information(T("Blog post draft has been saved"));
break;
}
return Redirect(Url.BlogPostEdit(model.BlogPost.Item));
}

View File

@@ -84,18 +84,11 @@ namespace Orchard.Blogs.Drivers {
}
protected override DriverResult Editor(BlogPost post) {
return Combined(
ContentItemTemplate("Items/Blogs.BlogPost"),
ContentPartTemplate(post, "Parts/Blogs.BlogPost.Publish").Location("secondary", "1"));
return ContentItemTemplate("Items/Blogs.BlogPost");
}
protected override DriverResult Editor(BlogPost post, IUpdateModel updater) {
updater.TryUpdateModel(post, Prefix, null, null);
DateTime scheduled;
if (DateTime.TryParse(string.Format("{0} {1}", post.ScheduledPublishUtcDate, post.ScheduledPublishUtcTime), out scheduled))
post.ScheduledPublishUtc = scheduled;
return Editor(post);
}
}

View File

@@ -28,8 +28,6 @@ namespace Orchard.Blogs.Handlers {
Filters.Add(new ActivatingFilter<IsRoutable>(BlogPostDriver.ContentType.Name));
Filters.Add(new ActivatingFilter<BodyAspect>(BlogPostDriver.ContentType.Name));
OnLoaded<BlogPost>((context, p) => p.ScheduledPublishUtc = _blogPostService.GetScheduledPublishUtc(p));
Action<Blog> updateBlogPostCount =
(blog => {
// Ensure we get the "right" set of published posts for the blog

View File

@@ -119,30 +119,8 @@
<Content Include="Content\Admin\images\scheduled.gif" />
<Content Include="Module.txt" />
<Content Include="Scripts\archives.js" />
<Content Include="Scripts\jquery.ui.core.js" />
<Content Include="Scripts\jquery.ui.datepicker.js" />
<Content Include="Scripts\jquery.ui.widget.js" />
<Content Include="Scripts\jquery.utils.js" />
<Content Include="Scripts\ui.timepickr.js" />
<Content Include="Styles\admin.css" />
<Content Include="Styles\archives.css" />
<Content Include="Styles\datetime.css" />
<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" />
<Content Include="Styles\images\ui-bg_glass_65_ffffff_1x400.png" />
<Content Include="Styles\images\ui-bg_glass_75_dadada_1x400.png" />
<Content Include="Styles\images\ui-bg_glass_75_e6e6e6_1x400.png" />
<Content Include="Styles\images\ui-bg_glass_95_fef1ec_1x400.png" />
<Content Include="Styles\images\ui-bg_highlight-soft_75_cccccc_1x100.png" />
<Content Include="Styles\images\ui-icons_222222_256x240.png" />
<Content Include="Styles\images\ui-icons_2e83ff_256x240.png" />
<Content Include="Styles\images\ui-icons_454545_256x240.png" />
<Content Include="Styles\images\ui-icons_888888_256x240.png" />
<Content Include="Styles\images\ui-icons_cd0a0a_256x240.png" />
<Content Include="Styles\jquery-ui-1.7.2.custom.css" />
<Content Include="Styles\ui.datepicker.css" />
<Content Include="Styles\ui.timepickr.css" />
<Content Include="Views\Archives.ascx" />
<Content Include="Views\BlogPostAdmin\Create.ascx" />
<Content Include="Views\BlogPostAdmin\Edit.ascx" />
@@ -163,7 +141,6 @@
<Content Include="Views\DisplayTemplates\Parts\Blogs.Blog.Metadata.ascx" />
<Content Include="Views\DisplayTemplates\Parts\Blogs.BlogPost.Metadata.SummaryAdmin.ascx" />
<Content Include="Views\DisplayTemplates\Parts\Blogs.BlogPost.Metadata.Summary.ascx" />
<Content Include="Views\EditorTemplates\Parts\Blogs.BlogPost.Publish.ascx" />
<Content Include="Views\BlogPost\Item.ascx" />
<Content Include="Views\BlogAdmin\Create.ascx" />
<Content Include="Views\BlogAdmin\Edit.ascx" />

View File

@@ -1,47 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Blogs.Models.BlogPost>" %>
<% Html.RegisterStyle("datetime.css"); %>
<% Html.RegisterStyle("jquery-ui-1.7.2.custom.css"); %>
<% Html.RegisterStyle("ui.datepicker.css"); %>
<% Html.RegisterStyle("ui.timepickr.css"); %>
<% Html.RegisterFootScript("jquery.ui.core.js"); %>
<% Html.RegisterFootScript("jquery.ui.widget.js"); %>
<% Html.RegisterFootScript("jquery.ui.datepicker.js"); %>
<% Html.RegisterFootScript("jquery.utils.js"); %>
<% Html.RegisterFootScript("ui.timepickr.js"); %>
<fieldset>
<legend><%: T("Publish Settings")%></legend>
<div>
<%: Html.RadioButton("Command", "SaveDraft", Model.ContentItem.VersionRecord == null || !Model.ContentItem.VersionRecord.Published, new { id = "Command_SaveDraft" }) %>
<label class="forcheckbox" for="Command_SaveDraft"><%: T("Save Draft")%></label>
</div>
<div>
<%: Html.RadioButton("Command", "PublishNow", Model.ContentItem.VersionRecord != null && Model.ContentItem.VersionRecord.Published, new { id = "Command_PublishNow" })%>
<label class="forcheckbox" for="Command_PublishNow"><%: T("Publish Now")%></label>
</div>
<div>
<%: Html.RadioButton("Command", "PublishLater", Model.ScheduledPublishUtc != null, new { id = "Command_PublishLater" }) %>
<label class="forcheckbox" for="Command_PublishLater"><%: T("Publish Later")%></label>
</div>
<div>
<label class="forpicker" for="ScheduledPublishUtcDate"><%: T("Date")%></label>
<%: Html.EditorFor(m => m.ScheduledPublishUtcDate)%>
<label class="forpicker" for="ScheduledPublishUtcTime"><%: T("Time")%></label>
<%: Html.EditorFor(m => m.ScheduledPublishUtcTime)%>
</div>
</fieldset>
<script type="text/javascript">$(function() {
//todo: (heskew) make a plugin
$("label.forpicker").each(function() {
var $this = $(this);
var pickerInput = $("#" + $this.attr("for"));
pickerInput.data("hint", $this.text());
if (!pickerInput.val()) {
pickerInput.addClass("hinted")
.val(pickerInput.data("hint"))
.focus(function() { var $this = $(this); if ($this.val() == $this.data("hint")) { $this.removeClass("hinted").val("") } })
.blur(function() { var $this = $(this); setTimeout(function() { if (!$this.val()) { $this.addClass("hinted").val($this.data("hint")) } }, 300) });
}
});
$("input#ScheduledPublishUtcDate").datepicker({showAnim:""}).focus(function() { $("#Command_PublishLater").attr("checked", "checked") });
$("input#ScheduledPublishUtcTime").timepickr().focus(function() { $("#Command_PublishLater").attr("checked", "checked") });
})</script>

View File

@@ -136,24 +136,6 @@ namespace Orchard.Pages.Controllers {
Services.ContentManager.Create(model.Page.Item.ContentItem, VersionOptions.Draft);
Services.ContentManager.UpdateEditorModel(page, this);
// Execute publish command
switch (Request.Form["Command"]) {
case "PublishNow":
_pageService.Publish(model.Page.Item);
Services.Notifier.Information(T("Page has been published"));
if (model.PromoteToHomePage) {
CurrentSite.HomePage = "PageHomePageProvider;" + model.Page.Item.Id;
}
break;
case "PublishLater":
_pageService.Publish(model.Page.Item, model.Page.Item.ScheduledPublishUtc.Value);
Services.Notifier.Information(T("Page has been scheduled for publishing"));
break;
default:
Services.Notifier.Information(T("Page draft has been saved"));
break;
}
return RedirectToAction("Edit", "Admin", new { id = model.Page.Item.ContentItem.Id });
}
@@ -194,25 +176,6 @@ namespace Orchard.Pages.Controllers {
return View(model);
}
// Execute publish command
switch (Request.Form["Command"]) {
case "PublishNow":
_pageService.Publish(model.Page.Item);
Services.Notifier.Information(T("Page has been published"));
if (model.PromoteToHomePage) {
CurrentSite.HomePage = "PageHomePageProvider;" + model.Page.Item.Id;
}
break;
case "PublishLater":
_pageService.Publish(model.Page.Item, model.Page.Item.ScheduledPublishUtc.Value);
Services.Notifier.Information(T("Page has been scheduled for publishing"));
break;
default:
//_pageService.Unpublish(model.Page.Item);
Services.Notifier.Information(T("Page draft has been saved"));
break;
}
return RedirectToAction("Edit", "Admin", new {id = model.Page.Item.ContentItem.Id});
}

View File

@@ -56,18 +56,12 @@ namespace Orchard.Pages.Drivers {
}
protected override DriverResult Editor(Page page) {
return Combined(
ContentItemTemplate("Items/Pages.Page"),
ContentPartTemplate(page, "Parts/Pages.Page.Publish").Location("secondary", "1"));
return ContentItemTemplate("Items/Pages.Page");
}
protected override DriverResult Editor(Page page, IUpdateModel updater) {
updater.TryUpdateModel(page, Prefix, null, null);
DateTime scheduled;
if (DateTime.TryParse(string.Format("{0} {1}", page.ScheduledPublishUtcDate, page.ScheduledPublishUtcTime), out scheduled))
page.ScheduledPublishUtc = scheduled;
return Editor(page);
}
}

View File

@@ -22,8 +22,6 @@ namespace Orchard.Pages.Handlers {
Filters.Add(new ActivatingFilter<ContentPart<CommonVersionRecord>>(PageDriver.ContentType.Name));
Filters.Add(new ActivatingFilter<IsRoutable>(PageDriver.ContentType.Name));
Filters.Add(new ActivatingFilter<BodyAspect>(PageDriver.ContentType.Name));
OnLoaded<Page>((context, page) => page._scheduledPublishUtc.Loader(value => _pageService.GetScheduledPublishUtc(page)));
}
Localizer T { get; set; }

View File

@@ -101,33 +101,10 @@
<Content Include="Content\Admin\images\scheduled.gif" />
<Content Include="Content\Site.css" />
<Content Include="Module.txt" />
<Content Include="Scripts\jquery.ui.core.js" />
<Content Include="Scripts\jquery.ui.datepicker.js" />
<Content Include="Scripts\jquery.ui.widget.js" />
<Content Include="Scripts\jquery.utils.js" />
<Content Include="Scripts\ui.timepickr.js" />
<Content Include="Styles\datetime.css" />
<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" />
<Content Include="Styles\images\ui-bg_glass_65_ffffff_1x400.png" />
<Content Include="Styles\images\ui-bg_glass_75_dadada_1x400.png" />
<Content Include="Styles\images\ui-bg_glass_75_e6e6e6_1x400.png" />
<Content Include="Styles\images\ui-bg_glass_95_fef1ec_1x400.png" />
<Content Include="Styles\images\ui-bg_highlight-soft_75_cccccc_1x100.png" />
<Content Include="Styles\images\ui-icons_222222_256x240.png" />
<Content Include="Styles\images\ui-icons_2e83ff_256x240.png" />
<Content Include="Styles\images\ui-icons_454545_256x240.png" />
<Content Include="Styles\images\ui-icons_888888_256x240.png" />
<Content Include="Styles\images\ui-icons_cd0a0a_256x240.png" />
<Content Include="Styles\jquery-ui-1.7.2.custom.css" />
<Content Include="Styles\ui.datepicker.css" />
<Content Include="Styles\ui.timepickr.css" />
<Content Include="Views\DisplayTemplates\Items\Pages.Page.SummaryAdmin.ascx" />
<Content Include="Views\DisplayTemplates\Items\Pages.Page.ascx" />
<Content Include="Views\DisplayTemplates\Items\Pages.Page.Summary.ascx" />
<Content Include="Views\EditorTemplates\Items\Pages.Page.ascx" />
<Content Include="Views\EditorTemplates\Parts\Pages.Page.Publish.ascx" />
<Content Include="Views\Admin\Create.ascx" />
<Content Include="Views\Admin\Edit.ascx" />
<Content Include="Views\Page\Item.ascx" />

View File

@@ -1,226 +0,0 @@
/*!
* jQuery UI 1.8b1
*
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://docs.jquery.com/UI
*/
;jQuery.ui || (function($) {
var isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);
//Helper functions and ui object
$.ui = {
version: "1.8b1",
// $.ui.plugin is deprecated. Use the proxy pattern instead.
plugin: {
add: function(module, option, set) {
var proto = $.ui[module].prototype;
for(var i in set) {
proto.plugins[i] = proto.plugins[i] || [];
proto.plugins[i].push([option, set[i]]);
}
},
call: function(instance, name, args) {
var set = instance.plugins[name];
if(!set || !instance.element[0].parentNode) { return; }
for (var i = 0; i < set.length; i++) {
if (instance.options[set[i][0]]) {
set[i][1].apply(instance.element, args);
}
}
}
},
contains: function(a, b) {
return document.compareDocumentPosition
? a.compareDocumentPosition(b) & 16
: a !== b && a.contains(b);
},
hasScroll: function(el, a) {
//If overflow is hidden, the element might have extra content, but the user wants to hide it
if ($(el).css('overflow') == 'hidden') { return false; }
var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
has = false;
if (el[scroll] > 0) { return true; }
// TODO: determine which cases actually cause this to happen
// if the element doesn't have the scroll set, see if it's possible to
// set the scroll
el[scroll] = 1;
has = (el[scroll] > 0);
el[scroll] = 0;
return has;
},
isOverAxis: function(x, reference, size) {
//Determines when x coordinate is over "b" element axis
return (x > reference) && (x < (reference + size));
},
isOver: function(y, x, top, left, height, width) {
//Determines when x, y coordinates is over "b" element
return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
},
keyCode: {
BACKSPACE: 8,
CAPS_LOCK: 20,
COMMA: 188,
CONTROL: 17,
DELETE: 46,
DOWN: 40,
END: 35,
ENTER: 13,
ESCAPE: 27,
HOME: 36,
INSERT: 45,
LEFT: 37,
NUMPAD_ADD: 107,
NUMPAD_DECIMAL: 110,
NUMPAD_DIVIDE: 111,
NUMPAD_ENTER: 108,
NUMPAD_MULTIPLY: 106,
NUMPAD_SUBTRACT: 109,
PAGE_DOWN: 34,
PAGE_UP: 33,
PERIOD: 190,
RIGHT: 39,
SHIFT: 16,
SPACE: 32,
TAB: 9,
UP: 38
}
};
// WAI-ARIA normalization
if (isFF2) {
var attr = $.attr,
removeAttr = $.fn.removeAttr,
ariaNS = "http://www.w3.org/2005/07/aaa",
ariaState = /^aria-/,
ariaRole = /^wairole:/;
$.attr = function(elem, name, value) {
var set = value !== undefined;
return (name == 'role'
? (set
? attr.call(this, elem, name, "wairole:" + value)
: (attr.apply(this, arguments) || "").replace(ariaRole, ""))
: (ariaState.test(name)
? (set
? elem.setAttributeNS(ariaNS,
name.replace(ariaState, "aaa:"), value)
: attr.call(this, elem, name.replace(ariaState, "aaa:")))
: attr.apply(this, arguments)));
};
$.fn.removeAttr = function(name) {
return (ariaState.test(name)
? this.each(function() {
this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));
}) : removeAttr.call(this, name));
};
}
//jQuery plugins
$.fn.extend({
_focus: $.fn.focus,
focus: function(delay, fn) {
return typeof delay === 'number'
? this.each(function() {
var elem = this;
setTimeout(function() {
$(elem).focus();
(fn && fn.call(elem));
}, delay);
})
: this._focus.apply(this, arguments);
},
enableSelection: function() {
return this
.attr('unselectable', 'off')
.css('MozUserSelect', '')
.unbind('selectstart.ui');
},
disableSelection: function() {
return this
.attr('unselectable', 'on')
.css('MozUserSelect', 'none')
.bind('selectstart.ui', function() { return false; });
},
scrollParent: function() {
var scrollParent;
if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
scrollParent = this.parents().filter(function() {
return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
}).eq(0);
} else {
scrollParent = this.parents().filter(function() {
return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
}).eq(0);
}
return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
},
zIndex: function(zIndex) {
if (zIndex !== undefined) {
return this.css('zIndex', zIndex);
}
var elem = this[0];
while (elem && elem.style) {
// IE returns 0 when zIndex is not specified
// other browsers return an empty string
// we ignore the case of nested elements with an explicit value of 0
// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
if (elem.style.zIndex !== '' && elem.style.zIndex !== 0) {
return +elem.style.zIndex;
}
elem = elem.parentNode;
}
return 0;
}
});
//Additional selectors
$.extend($.expr[':'], {
data: function(elem, i, match) {
return !!$.data(elem, match[3]);
},
focusable: function(element) {
var nodeName = element.nodeName.toLowerCase(),
tabIndex = $.attr(element, 'tabindex');
return (/input|select|textarea|button|object/.test(nodeName)
? !element.disabled
: 'a' == nodeName || 'area' == nodeName
? element.href || !isNaN(tabIndex)
: !isNaN(tabIndex))
// the element and all of its ancestors must be visible
// the browser may report that the area is hidden
&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
},
tabbable: function(element) {
var tabIndex = $.attr(element, 'tabindex');
return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
}
});
})(jQuery);

File diff suppressed because it is too large Load Diff

View File

@@ -1,232 +0,0 @@
/*!
* jQuery UI Widget 1.8b1
*
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://docs.jquery.com/UI/Widget
*/
(function( $ ) {
var _remove = $.fn.remove;
$.fn.remove = function( selector, keepData ) {
if ( !keepData ) {
$( "*", this ).add( this ).each(function() {
$( this ).triggerHandler( "remove" );
});
}
return _remove.apply( this, arguments );
};
$.widget = function( name, base, prototype ) {
var namespace = name.split( "." )[ 0 ],
fullName;
name = name.split( "." )[ 1 ];
fullName = namespace + "-" + name;
if ( !prototype ) {
prototype = base;
base = $.Widget;
}
// create selector for plugin
$.expr[ ":" ][ fullName ] = function( elem ) {
return !!$.data( elem, name );
};
$[ namespace ] = $[ namespace ] || {};
$[ namespace ][ name ] = function( options, element ) {
// allow instantiation without initializing for simple inheritance
if ( arguments.length ) {
this._createWidget( options, element );
}
};
var basePrototype = new base();
// we need to make the options hash a property directly on the new instance
// otherwise we'll modify the options hash on the prototype that we're
// inheriting from
// $.each( basePrototype, function( key, val ) {
// if ( $.isPlainObject(val) ) {
// basePrototype[ key ] = $.extend( {}, val );
// }
// });
basePrototype.options = $.extend( {}, basePrototype.options );
$[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
namespace: namespace,
widgetName: name,
widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
widgetBaseClass: fullName
}, prototype );
$.widget.bridge( name, $[ namespace ][ name ] );
};
$.widget.bridge = function( name, object ) {
$.fn[ name ] = function( options ) {
var isMethodCall = typeof options === "string",
args = Array.prototype.slice.call( arguments, 1 ),
returnValue = this;
// allow multiple hashes to be passed on init
options = !isMethodCall && args.length ?
$.extend.apply( null, [ true, options ].concat(args) ) :
options;
// prevent calls to internal methods
if ( isMethodCall && options.substring( 0, 1 ) === "_" ) {
return returnValue;
}
if ( isMethodCall ) {
this.each(function() {
var instance = $.data( this, name ),
methodValue = instance && $.isFunction( instance[options] ) ?
instance[ options ].apply( instance, args ) :
instance;
if ( methodValue !== instance && methodValue !== undefined ) {
returnValue = methodValue;
return false;
}
});
} else {
this.each(function() {
var instance = $.data( this, name );
if ( instance ) {
if ( options ) {
instance.option( options );
}
instance._init();
} else {
$.data( this, name, new object( options, this ) );
}
});
}
return returnValue;
};
};
$.Widget = function( options, element ) {
// allow instantiation without initializing for simple inheritance
if ( arguments.length ) {
this._createWidget( options, element );
}
};
$.Widget.prototype = {
widgetName: "widget",
widgetEventPrefix: "",
options: {
disabled: false
},
_createWidget: function( options, element ) {
// $.widget.bridge stores the plugin instance, but we do it anyway
// so that it's stored even before the _create function runs
this.element = $( element ).data( this.widgetName, this );
this.options = $.extend( true, {},
this.options,
$.metadata && $.metadata.get( element )[ this.widgetName ],
options );
var self = this;
this.element.bind( "remove." + this.widgetName, function() {
self.destroy();
});
this._create();
this._init();
},
_create: function() {},
_init: function() {},
destroy: function() {
this.element
.unbind( "." + this.widgetName )
.removeData( this.widgetName );
this.widget()
.unbind( "." + this.widgetName )
.removeAttr( "aria-disabled" )
.removeClass(
this.widgetBaseClass + "-disabled " +
this.namespace + "-state-disabled" );
},
widget: function() {
return this.element;
},
option: function( key, value ) {
var options = key,
self = this;
if ( arguments.length === 0 ) {
// don't return a reference to the internal hash
return $.extend( {}, self.options );
}
if (typeof key === "string" ) {
if ( value === undefined ) {
return this.options[ key ];
}
options = {};
options[ key ] = value;
}
$.each( options, function( key, value ) {
self._setOption( key, value );
});
return self;
},
_setOption: function( key, value ) {
this.options[ key ] = value;
if ( key === "disabled" ) {
this.widget()
[ value ? "addClass" : "removeClass"](
this.widgetBaseClass + "-disabled" + " " +
this.namespace + "-state-disabled" )
.attr( "aria-disabled", value );
}
return this;
},
enable: function() {
return this._setOption( "disabled", false );
},
disable: function() {
return this._setOption( "disabled", true );
},
_trigger: function( type, event, data ) {
var callback = this.options[ type ];
event = $.Event( event );
event.type = ( type === this.widgetEventPrefix ?
type :
this.widgetEventPrefix + type ).toLowerCase();
data = data || {};
// copy original event properties over to the new event
// this would happen if we could call $.event.fix instead of $.Event
// but we don't have a way to force an event to be fixed multiple times
if ( event.originalEvent ) {
for ( var i = $.event.props.length, prop; i; ) {
prop = $.event.props[ --i ];
event[ prop ] = event.originalEvent[ prop ];
}
}
this.element.trigger( event, data );
return !( $.isFunction(callback) &&
callback.call( this.element[0], event, data ) === false ||
event.isDefaultPrevented() );
}
};
})( jQuery );

File diff suppressed because it is too large Load Diff

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 + elementWidth < windowWidth
? pos.left - width + elementWidth
: 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

@@ -1,14 +0,0 @@
html.dyn label.forpicker {
display:none;
}
/* todo: (heskew) let themes take care of this */
html.dyn input.hinted {
color:#ccc;
font-style:italic;
}
input#ScheduledPublishUtcDate {
width:56%;
}
input#ScheduledPublishUtcTime {
width:36%;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,406 +0,0 @@
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-widget-content a { color: #222222; }
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
.ui-widget-header a { color: #222222; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; outline: none; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; outline: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; outline: none; }
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion
----------------------------------*/
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
----------------------------------*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/* Dialog
----------------------------------*/
.ui-dialog { position: relative; padding: .2em; width: 300px; }
.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/* Progressbar
----------------------------------*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
----------------------------------*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
----------------------------------*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
----------------------------------*/
.ui-tabs { padding: .2em; zoom: 1; }
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }

View File

@@ -1,61 +0,0 @@
/* Datepicker
----------------------------------*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}

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,48 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Pages.Models.Page>" %>
<%@ Import Namespace="Orchard.Mvc.Html"%>
<% Html.RegisterStyle("datetime.css"); %>
<% Html.RegisterStyle("jquery-ui-1.7.2.custom.css"); %>
<% Html.RegisterStyle("ui.datepicker.css"); %>
<% Html.RegisterStyle("ui.timepickr.css"); %>
<% Html.RegisterFootScript("jquery.ui.core.js"); %>
<% Html.RegisterFootScript("jquery.ui.widget.js"); %>
<% Html.RegisterFootScript("jquery.ui.datepicker.js"); %>
<% Html.RegisterFootScript("jquery.utils.js"); %>
<% Html.RegisterFootScript("ui.timepickr.js"); %>
<fieldset>
<legend><%: T("Publish Settings")%></legend>
<div>
<%: Html.RadioButton("Command", "SaveDraft", Model.ContentItem.VersionRecord == null || !Model.ContentItem.VersionRecord.Published, new { id = "Command_SaveDraft" })%>
<label class="forcheckbox" for="Command_SaveDraft"><%: T("Save Draft")%></label>
</div>
<div>
<%: Html.RadioButton("Command", "PublishNow", Model.ContentItem.VersionRecord != null && Model.ContentItem.VersionRecord.Published, new { id = "Command_PublishNow" })%>
<label class="forcheckbox" for="Command_PublishNow"><%: T("Publish Now")%></label>
</div>
<div>
<%: Html.RadioButton("Command", "PublishLater", Model.ScheduledPublishUtc != null, new { id = "Command_PublishLater" }) %>
<label class="forcheckbox" for="Command_PublishLater"><%: T("Publish Later")%></label>
</div>
<div>
<label class="forpicker" for="ScheduledPublishUtcDate"><%: T("Date")%></label>
<%: Html.EditorFor(m => m.ScheduledPublishUtcDate)%>
<label class="forpicker" for="ScheduledPublishUtcTime"><%: T("Time")%></label>
<%: Html.EditorFor(m => m.ScheduledPublishUtcTime)%>
</div>
</fieldset>
<script type="text/javascript">$(function() {
//todo: (heskew) make a plugin
$("label.forpicker").each(function() {
var $this = $(this);
var pickerInput = $("#" + $this.attr("for"));
pickerInput.data("hint", $this.text());
if (!pickerInput.val()) {
pickerInput.addClass("hinted")
.val(pickerInput.data("hint"))
.focus(function() { var $this = $(this); if ($this.val() == $this.data("hint")) { $this.removeClass("hinted").val("") } })
.blur(function() { var $this = $(this); setTimeout(function() { if (!$this.val()) { $this.addClass("hinted").val($this.data("hint")) } }, 300) });
}
});
$("input#ScheduledPublishUtcDate").datepicker({showAnim:""}).focus(function() { $("#Command_PublishLater").attr("checked", "checked") });
$("input#ScheduledPublishUtcTime").timepickr().focus(function() { $("#Command_PublishLater").attr("checked", "checked") });
})</script>