Merge 1.x to localization branch

This commit is contained in:
Nicholas Mayne
2014-09-11 11:29:43 +01:00
98 changed files with 582 additions and 88 deletions

View File

@@ -33,6 +33,7 @@ namespace Orchard.Core.Tests.Body {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<ITransactionManager>().Object);
builder.RegisterInstance(new Mock<IAuthorizer>().Object);

View File

@@ -52,6 +52,7 @@ namespace Orchard.Core.Tests.Common.Providers {
public override void Register(ContainerBuilder builder) {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<TestHandler>().As<IContentHandler>();
builder.RegisterType<CommonPartHandler>().As<IContentHandler>();
builder.RegisterType<CommonPartDriver>().As<IContentPartDriver>();

View File

@@ -39,6 +39,7 @@ namespace Orchard.Core.Tests.Scheduling {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<ShapeTableLocator>().As<IShapeTableLocator>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();

View File

@@ -42,6 +42,7 @@ namespace Orchard.Core.Tests.Scheduling {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<ShapeTableLocator>().As<IShapeTableLocator>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();

View File

@@ -49,6 +49,7 @@ namespace Orchard.Tests.Modules.Comments.Services {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<ITransactionManager>().Object);
builder.RegisterInstance(new Mock<IAuthorizer>().Object);

View File

@@ -70,9 +70,11 @@ namespace Orchard.Tests.Modules.Indexing {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(_contentDefinitionManager.Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<ITransactionManager>().Object);
builder.RegisterInstance(new Mock<IAuthorizer>().Object);
builder.RegisterType<OrchardServices>().As<IOrchardServices>();

View File

@@ -58,6 +58,7 @@ namespace Orchard.Tests.Modules.Users.Controllers {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType(typeof(SettingsFormatter)).As<ISettingsFormatter>();
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<DefaultContentQuery>().As<IContentQuery>().InstancePerDependency();
builder.RegisterInstance(new Mock<IAuthenticationService>().Object);

View File

@@ -79,6 +79,7 @@ namespace Orchard.Tests.Modules.Users.Services {
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType(typeof(SettingsFormatter)).As<ISettingsFormatter>();
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new ShellSettings { Name = ShellSettings.DefaultName, DataProvider = "SqlCe" });
builder.RegisterType<UserPartHandler>().As<IContentHandler>();
builder.RegisterType<StubWorkContextAccessor>().As<IWorkContextAccessor>();

View File

@@ -91,6 +91,7 @@ namespace Orchard.Tests.Modules.Users.Services {
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType(typeof(SettingsFormatter)).As<ISettingsFormatter>();
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<UserPartHandler>().As<IContentHandler>();
builder.RegisterType<StubWorkContextAccessor>().As<IWorkContextAccessor>();
builder.RegisterType<OrchardServices>().As<IOrchardServices>();

View File

@@ -91,6 +91,7 @@ namespace Orchard.Tests.Modules.Widgets.Services {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<ITransactionManager>().Object);
builder.RegisterInstance(new Mock<IAuthorizer>().Object);

View File

@@ -51,6 +51,7 @@ namespace Orchard.Tests.ContentManagement {
builder.RegisterType<DefaultContentManager>().As<IContentManager>().SingleInstance();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);
builder.RegisterInstance(new ShellSettings { Name = ShellSettings.DefaultName, DataProvider = "SqlCe" });

View File

@@ -63,6 +63,7 @@ namespace Orchard.Tests.ContentManagement {
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(_contentDefinitionManager.Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);
builder.RegisterInstance(new ShellSettings {Name = ShellSettings.DefaultName, DataProvider = "SqlCe"});

View File

@@ -49,6 +49,7 @@ namespace Orchard.Tests.ContentManagement {
builder.RegisterType<DefaultContentManager>().As<IContentManager>().SingleInstance();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);
builder.RegisterInstance(new ShellSettings { Name = ShellSettings.DefaultName, DataProvider = "SqlCe" });

View File

@@ -53,6 +53,7 @@ namespace Orchard.Tests.ContentManagement {
builder.RegisterType<DefaultContentManager>().As<IContentManager>().SingleInstance();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<Signals>().As<ISignals>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);
builder.RegisterInstance(new ShellSettings { Name = ShellSettings.DefaultName, DataProvider = "SqlCe" });

View File

@@ -53,6 +53,7 @@ namespace Orchard.Tests.Localization {
builder.RegisterType<StubHttpContextAccessor>().As<IHttpContextAccessor>();
builder.RegisterType<WorkContextAccessor>().As<IWorkContextAccessor>();
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
builder.RegisterType<TestCultureSelector>().As<ICultureSelector>();
builder.RegisterType<DefaultCultureManager>().As<ICultureManager>();

View File

@@ -1,5 +1,7 @@
using System.Web;
using System.IO;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using Moq;
using NUnit.Framework;
using Orchard.Mvc.Html;
@@ -161,5 +163,35 @@ namespace Orchard.Tests.Mvc.Html {
//assert
Assert.AreEqual(string.Empty, result.ToString());
}
[Test]
public void HtmlHelperForEnablesLocalHelperMethods() {
//arrange
var controller = new FooController {
ControllerContext = new ControllerContext()
};
var viewContext = new ViewContext {
ViewData = new ViewDataDictionary {
TemplateInfo = new TemplateInfo {
HtmlFieldPrefix = "topprefix"
}
},
Controller = controller,
View = new Mock<IView>().Object,
TempData = new TempDataDictionary(),
Writer = TextWriter.Null
};
var viewDataContainer = new Mock<IViewDataContainer>();
viewDataContainer.SetupGet(o => o.ViewData).Returns(() => new ViewDataDictionary());
var html = new HtmlHelper(viewContext, viewDataContainer.Object);
var localHelper = html.HtmlHelperFor(new {SomeString = "foo"}, "prefix");
//act
var result = localHelper.LabelFor(p => p.SomeString, "bar", null);
//assert
Assert.AreEqual(@"<label for=""prefix_SomeString"">bar</label>", result.ToString());
}
private class FooController : Controller { }
}
}

View File

@@ -14,7 +14,8 @@
var eventVersionNumber = eventData.Get<int>("VersionNumber");
var isPublishedEvent = eventData.Get<bool>("Published");
var diffNodes = (IList<DiffNode>)Model.DiffNodes;
var title = contentItem != null ? Html.ItemDisplayText(contentItem).ToString() : eventData.Get<string>("Title") ?? "[untitled]";
var itemDisplayText = contentItem != null ? Html.ItemDisplayText(contentItem) : default(IHtmlString);
var title = itemDisplayText != null ? itemDisplayText.ToString() : eventData.Get<string>("Title") ?? "[untitled]";
}
<section class="audittrail-content-eventmetadata">
@T("ID:") <strong>@contentItemId</strong><br />

View File

@@ -76,8 +76,8 @@ namespace Orchard.Azure.MediaServices.Controllers {
var presetPattern = new Regex(@"^[\w\s]*$");
foreach (var preset in viewModel.EncodingSettings.WamsEncodingPresets) {
if (!presetPattern.IsMatch(preset)) {
_services.Notifier.Error(T("The encoding preset '{0}' is invalid. Encoding presets can only contain letters, numbers and spaces.", preset));
if (!presetPattern.IsMatch(preset.Name)) {
_services.Notifier.Error(T("The encoding preset name '{0}' is invalid. Encoding presets can only contain letters, numbers and spaces.", preset.Name));
return View("Index", viewModel);
}
}

View File

@@ -1,4 +1,5 @@
using Orchard.Azure.MediaServices.Models;
using System.Linq;
using Orchard.Azure.MediaServices.Models;
using Orchard;
using Orchard.ContentManagement;
using Orchard.Environment;
@@ -53,7 +54,7 @@ namespace Orchard.Azure.MediaServices.Events {
"H264 Adaptive Bitrate MP4 Set SD 4x3 for iOS Cellular Only",
"H264 Smooth Streaming 720p Xbox Live ADK",
"H264 Smooth Streaming Windows Phone 7 Series"
};
}.Select(x => new EncodingPreset() { Name = x });
settings.SubtitleLanguages = new[] {
"da-DK",
"nl-BE",

View File

@@ -3,6 +3,7 @@ using System.Globalization;
using Orchard.ContentManagement;
using System;
using System.Linq;
using Newtonsoft.Json;
namespace Orchard.Azure.MediaServices.Models {
@@ -18,10 +19,10 @@ namespace Orchard.Azure.MediaServices.Models {
set { this.Store(x => x.WamsAccountKey, value); }
}
public string StorageAccountKey {
get { return this.Retrieve(x => x.StorageAccountKey); }
set { this.Store(x => x.StorageAccountKey, value); }
}
public string StorageAccountKey {
get { return this.Retrieve(x => x.StorageAccountKey); }
set { this.Store(x => x.StorageAccountKey, value); }
}
public bool EnableDynamicPackaging {
get { return this.Retrieve(x => x.EnableDynamicPackaging); }
@@ -49,14 +50,21 @@ namespace Orchard.Azure.MediaServices.Models {
}
}
public IEnumerable<string> WamsEncodingPresets {
public IEnumerable<EncodingPreset> WamsEncodingPresets {
get {
var presets = Retrieve<string>("WamsEncodingPresets");
return !String.IsNullOrEmpty(presets) ? presets.Split(';') : new string[] { };
var presets = Retrieve<string>("WamsEncodingPresetsJson");
if (!String.IsNullOrEmpty(presets)) {
return JsonConvert.DeserializeObject<EncodingPreset[]>(presets);
}
// Fall back to old style property for compatibility with existing data.
presets = Retrieve<string>("WamsEncodingPresets");
var presetNames = !String.IsNullOrEmpty(presets) ? presets.Split(';') : new string[] { };
return presetNames.Select(x => new EncodingPreset() { Name = x });
}
set {
var presets = value != null && value.Any() ? String.Join(";", value) : null;
Store("WamsEncodingPresets", presets);
// Clear out old style property, migrate setting to the new one.
Store("WamsEncodingPresets", default(string));
Store("WamsEncodingPresetsJson", JsonConvert.SerializeObject(value.ToArray()));
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Orchard.Azure.MediaServices.Models {
public class EncodingPreset {
public string Name { get; set; }
[AllowHtml]
public string CustomXml { get; set; }
}
}

View File

@@ -149,6 +149,7 @@
<Content Include="Content\expressInstall.swf" />
<Content Include="Content\MSAdaptiveStreamingPlugin.swf" />
<Content Include="Content\StrobeMediaPlayback.swf" />
<Compile Include="Models\EncodingPreset.cs" />
<Compile Include="Shapes\CloudVideoPlayerShape.cs" />
<Compile Include="Helpers\BitExtensions.cs" />
<Compile Include="Infrastructure\Assets\AssetDriverResult.cs" />
@@ -553,6 +554,9 @@
</ItemGroup>
<ItemGroup>
<None Include="Scripts\lib\MPEG Dash Notice.docx" />
<Content Include="Styles\cloudmedia-admin-settings.css.map">
<DependentUpon>cloudmedia-admin-settings.css</DependentUpon>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Scripts\cloudmedia-admin-common.js.map" />

View File

@@ -15,6 +15,25 @@ var Orchard;
})();
Settings.StringItem = StringItem;
var EncodingPreset = (function () {
function EncodingPreset(name, customXml) {
this.name = ko.observable(name);
this.customXml = ko.observable(customXml);
this.isExpanded = ko.observable(false);
this.type = ko.computed(function () {
var customXml = this.customXml();
if (!!customXml && customXml.length > 0)
return "Custom preset";
return "Standard preset";
}, this);
}
EncodingPreset.prototype.toggle = function () {
this.isExpanded(!this.isExpanded());
};
return EncodingPreset;
})();
Settings.EncodingPreset = EncodingPreset;
Settings.clientViewModel = {
wamsEncodingPresets: ko.observableArray(),
defaultWamsEncodingPresetIndex: ko.observable(),
@@ -32,7 +51,7 @@ var Orchard;
Settings.deleteWamsEncodingPreset = deleteWamsEncodingPreset;
function addNewWamsEncodingPreset() {
Settings.clientViewModel.wamsEncodingPresets.push(new StringItem("Unnamed"));
Settings.clientViewModel.wamsEncodingPresets.push(new EncodingPreset("Unnamed", null));
$("#presets-table tbody:first-of-type tr:last-of-type td:nth-child(2) input").focus().select();
}
Settings.addNewWamsEncodingPreset = addNewWamsEncodingPreset;
@@ -49,8 +68,8 @@ var Orchard;
Settings.addNewSubtitleLanguage = addNewSubtitleLanguage;
$(function () {
$.each(initWamsEncodingPresets, function (presetIndex, presetName) {
Settings.clientViewModel.wamsEncodingPresets.push(new StringItem(presetName));
$.each(initWamsEncodingPresets, function (presetIndex, preset) {
Settings.clientViewModel.wamsEncodingPresets.push(new EncodingPreset(preset.name, preset.customXml));
});
Settings.clientViewModel.defaultWamsEncodingPresetIndex(initDefaultWamsEncodingPresetIndex);

View File

@@ -1 +1 @@
{"version":3,"file":"cloudmedia-admin-settings.js","sourceRoot":"","sources":["cloudmedia-admin-settings.ts"],"names":["Orchard","Orchard.Azure","Orchard.Azure.MediaServices","Orchard.Azure.MediaServices.Admin","Orchard.Azure.MediaServices.Admin.Settings","Orchard.Azure.MediaServices.Admin.Settings.StringItem","Orchard.Azure.MediaServices.Admin.Settings.StringItem.constructor","Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.deleteSubtitleLanguage","Orchard.Azure.MediaServices.Admin.Settings.addNewSubtitleLanguage"],"mappings":"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"}
{"version":3,"file":"cloudmedia-admin-settings.js","sourceRoot":"","sources":["cloudmedia-admin-settings.ts"],"names":["Orchard","Orchard.Azure","Orchard.Azure.MediaServices","Orchard.Azure.MediaServices.Admin","Orchard.Azure.MediaServices.Admin.Settings","Orchard.Azure.MediaServices.Admin.Settings.StringItem","Orchard.Azure.MediaServices.Admin.Settings.StringItem.constructor","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset.constructor","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset.toggle","Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.deleteSubtitleLanguage","Orchard.Azure.MediaServices.Admin.Settings.addNewSubtitleLanguage"],"mappings":"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"}

View File

@@ -1,37 +1,56 @@
/// <reference path="typings/jquery.d.ts" />
/// <reference path="typings/knockout.d.ts" />
declare var initWamsEncodingPresets: string[];
declare var initWamsEncodingPresets: any[];
declare var initDefaultWamsEncodingPresetIndex: number;
declare var initSubtitleLanguages: string[];
module Orchard.Azure.MediaServices.Admin.Settings
{
export class StringItem
{
constructor(value: string)
{
module Orchard.Azure.MediaServices.Admin.Settings {
export class StringItem {
constructor(value: string) {
this.value = ko.observable(value);
}
public value: KnockoutObservable<string>;
}
export interface IClientViewModel
{
wamsEncodingPresets: KnockoutObservableArray<StringItem>;
export class EncodingPreset {
constructor(name: string, customXml: string) {
this.name = ko.observable(name);
this.customXml = ko.observable(customXml);
this.isExpanded = ko.observable(false);
this.type = ko.computed(function () {
var customXml: string = this.customXml();
if (!!customXml && customXml.length > 0)
return "Custom preset";
return "Standard preset";
}, this);
}
public name: KnockoutObservable<string>;
public customXml: KnockoutObservable<string>;
public isExpanded: KnockoutObservable<boolean>;
public type: KnockoutComputed<string>;
public toggle() {
this.isExpanded(!this.isExpanded());
}
}
export interface IClientViewModel {
wamsEncodingPresets: KnockoutObservableArray<EncodingPreset>;
defaultWamsEncodingPresetIndex: KnockoutObservable<number>;
subtitleLanguages: KnockoutObservableArray<StringItem>;
}
export var clientViewModel: IClientViewModel = {
wamsEncodingPresets: ko.observableArray<StringItem>(),
wamsEncodingPresets: ko.observableArray<EncodingPreset>(),
defaultWamsEncodingPresetIndex: ko.observable<number>(),
subtitleLanguages: ko.observableArray<StringItem>()
};
export function deleteWamsEncodingPreset(preset: StringItem)
{
export function deleteWamsEncodingPreset(preset: EncodingPreset) {
var removedIndex = clientViewModel.wamsEncodingPresets.indexOf(preset);
clientViewModel.wamsEncodingPresets.remove(preset);
if (removedIndex === clientViewModel.defaultWamsEncodingPresetIndex())
@@ -40,34 +59,28 @@ module Orchard.Azure.MediaServices.Admin.Settings
clientViewModel.defaultWamsEncodingPresetIndex(clientViewModel.defaultWamsEncodingPresetIndex() - 1);
}
export function addNewWamsEncodingPreset()
{
clientViewModel.wamsEncodingPresets.push(new StringItem("Unnamed"));
export function addNewWamsEncodingPreset() {
clientViewModel.wamsEncodingPresets.push(new EncodingPreset("Unnamed", null));
$("#presets-table tbody:first-of-type tr:last-of-type td:nth-child(2) input").focus().select();
}
export function deleteSubtitleLanguage(languageCultureCode: StringItem)
{
export function deleteSubtitleLanguage(languageCultureCode: StringItem) {
clientViewModel.subtitleLanguages.remove(languageCultureCode);
}
export function addNewSubtitleLanguage()
{
export function addNewSubtitleLanguage() {
clientViewModel.subtitleLanguages.push(new StringItem("Unnamed"));
$("#languages-table tbody:first-of-type tr:last-of-type td:nth-child(1) input").focus().select();
}
$(function ()
{
$.each(initWamsEncodingPresets, function (presetIndex: number, presetName: string)
{
clientViewModel.wamsEncodingPresets.push(new StringItem(presetName));
$(function () {
$.each(initWamsEncodingPresets, function (presetIndex: number, preset: any) {
clientViewModel.wamsEncodingPresets.push(new EncodingPreset(preset.name, preset.customXml));
});
clientViewModel.defaultWamsEncodingPresetIndex(initDefaultWamsEncodingPresetIndex);
$.each(initSubtitleLanguages, function (languageIndex: number, languageCultureCode: string)
{
$.each(initSubtitleLanguages, function (languageIndex: number, languageCultureCode: string) {
clientViewModel.subtitleLanguages.push(new StringItem(languageCultureCode));
});
@@ -80,6 +93,6 @@ module Orchard.Azure.MediaServices.Admin.Settings
localStorage.setItem("selectedCloudMediaSettingsTab", $("#tabs").tabs("option", "active"));
},
active: localStorage && localStorage.getItem ? localStorage.getItem("selectedCloudMediaSettingsTab") : null
}).show();
}).show();
});
}

View File

@@ -38,8 +38,8 @@ namespace Orchard.Azure.MediaServices.Services.Tasks.Providers {
public override TaskConfiguration Editor(dynamic shapeFactory, IUpdateModel updater) {
var settings = _orchardServices.WorkContext.CurrentSite.As<CloudMediaSettingsPart>();
var viewModel = new EncodeViewModel() {
EncodingPresets = settings.WamsEncodingPresets,
SelectedEncodingPreset = settings.WamsEncodingPresets.Any() ? settings.WamsEncodingPresets.ToArray()[settings.DefaultWamsEncodingPresetIndex] : null
EncodingPresets = settings.WamsEncodingPresets.Select(x => x.Name),
SelectedEncodingPreset = settings.WamsEncodingPresets.Any() ? settings.WamsEncodingPresets.ToArray()[settings.DefaultWamsEncodingPresetIndex].Name : null
};
if (updater != null) {
@@ -66,12 +66,14 @@ namespace Orchard.Azure.MediaServices.Services.Tasks.Providers {
}
public override ITask CreateTask(TaskConfiguration config, TaskCollection tasks, IEnumerable<IAsset> inputAssets) {
var settings = _orchardServices.WorkContext.CurrentSite.As<CloudMediaSettingsPart>();
var viewModel = (EncodeViewModel)config.Settings;
var encodingPreset = settings.WamsEncodingPresets.Where(x => x.Name == viewModel.SelectedEncodingPreset).Single();
var task = tasks.AddNew(
viewModel.SelectedEncodingPreset,
_wamsClient.GetLatestMediaProcessorByName(MediaProcessorName.WindowsAzureMediaEncoder),
viewModel.SelectedEncodingPreset,
!String.IsNullOrEmpty(encodingPreset.CustomXml) ? encodingPreset.CustomXml : encodingPreset.Name,
TaskOptions.None);
task.InputAssets.AddRange(inputAssets);

View File

@@ -1,35 +1,30 @@
h2 {
margin-top: 1em !important;
margin-top: 1em !important;
}
#test-button,
#save-button {
margin-top: 1em;
margin-top: 1em;
}
#presets-table {
width: auto;
width: auto;
}
#presets-table th:nth-child(1),
#presets-table th:nth-child(3),
#presets-table th:nth-child(4),
#presets-table td:nth-child(1),
#presets-table td:nth-child(3) {
text-align: center;
#presets-table td:nth-child(4) {
text-align: center;
}
#presets-table td:nth-child(2) {
width: 400px;
width: 400px;
}
#languages-table {
width: auto;
/*td:nth-child(2) {
width: auto;
/*td:nth-child(2) {
width: 400px;
}*/
}
#languages-table th:nth-child(2),
#languages-table td:nth-child(2) {
text-align: center;
text-align: center;
}
/*# sourceMappingURL=cloudmedia-admin-settings.css.map */

View File

@@ -0,0 +1,9 @@
{
"version": 3,
"file": "cloudmedia-admin-settings.css",
"sources": [
"cloudmedia-admin-settings.less"
],
"names": [],
"mappings": "AAAA;EACC,0BAAA;;AAGD;AAAc;EACb,eAAA;;AAGD;EACC,WAAA;;AADD,cAEC,GAAE,UAAU;AAFb,cAEkB,GAAE,UAAU;AAF9B,cAEmC,GAAE,UAAU;AAF/C,cAEoD,GAAE,UAAU;EAC9D,kBAAA;;AAHF,cAKC,GAAE,UAAU;EACX,YAAA;;AAIF;EACC,WAAA;;;;;AADD,gBAEC,GAAE,UAAU;AAFb,gBAEkB,GAAE,UAAU;EAC5B,kBAAA"
}

View File

@@ -8,7 +8,7 @@
#presets-table {
width: auto;
th:nth-child(1), th:nth-child(3), td:nth-child(1), td:nth-child(3) {
th:nth-child(1), th:nth-child(4), td:nth-child(1), td:nth-child(4) {
text-align: center;
}
td:nth-child(2) {

View File

@@ -1,8 +1,9 @@
using System.Collections.Generic;
using Orchard.Azure.MediaServices.Models;
namespace Orchard.Azure.MediaServices.ViewModels.Settings {
public class EncodingSettingsViewModel {
public IEnumerable<string> WamsEncodingPresets { get; set; }
public IEnumerable<EncodingPreset> WamsEncodingPresets { get; set; }
public int DefaultWamsEncodingPresetIndex { get; set; }
}
}

View File

@@ -1,7 +1,7 @@
@model Orchard.Azure.MediaServices.ViewModels.Settings.EncodingSettingsViewModel
@using (Script.Head()) {
<script type="text/javascript">
var initWamsEncodingPresets = [ @(Model.WamsEncodingPresets != null && Model.WamsEncodingPresets.Any() ? Html.Raw(String.Join(", ", from s in Model.WamsEncodingPresets select String.Format("'{0}'", s))) : Html.Raw(""))];
var initWamsEncodingPresets = [ @(Model.WamsEncodingPresets != null && Model.WamsEncodingPresets.Any() ? Html.Raw(String.Join(", ", from s in Model.WamsEncodingPresets select String.Format("{{name: '{0}', customXml: '{1}'}}", s.Name, HttpUtility.JavaScriptStringEncode(s.CustomXml)))) : Html.Raw(""))];
var initDefaultWamsEncodingPresetIndex = @Model.DefaultWamsEncodingPresetIndex +0;
</script>
}
@@ -18,13 +18,25 @@
<tr>
<th scope="col">@T("Default")</th>
<th scope="col">@T("Name")</th>
<th scope="col">@T("Type")</th>
<th scope="col"></th>
</tr>
</thead>
<tbody data-bind="foreach: wamsEncodingPresets">
<tr>
<td><input type="radio" name="presets-requiredUploads" data-bind="value: $index(), checked: $parent.defaultWamsEncodingPresetIndex" /></td>
<td><input type="text" class="text large" data-bind="value: value, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index(), name: 'EncodingSettings.WamsEncodingPresets[' + $index() + ']'}" /></td>
<td>
<input type="text" class="text large" data-bind="value: name, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index().Name, name: 'EncodingSettings.WamsEncodingPresets[' + $index() + '].Name'}" />
<section class="preset-custom-section" data-bind="visible: isExpanded">
<label>@T("Custom encoding preset XML")</label>
<textarea data-bind="value: customXml, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index().CustomXml, name: 'EncodingSettings.WamsEncodingPresets[' + $index() + '].CustomXml'}"></textarea>
<p class="hint">@T("Leave empty if this is standard preset (in which case the name must match a standard Microsoft Azure Media Services encoding preset name.")</p>
</section>
</td>
<td>
<strong data-bind="text: type"></strong>&nbsp;
<a href="#" data-bind="click: toggle">@T("Change")</a>
</td>
<td><a href="#" data-bind="click: Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset">@T("Delete")</a></td>
</tr>
</tbody>
@@ -33,6 +45,7 @@
<td></td>
<td><a href="#" data-bind="click: Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset"><i class="icon-plus-sign icon-large"></i> Add new</a></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

View File

@@ -34,7 +34,7 @@ namespace Orchard.Projections.Drivers {
Items = part.Items,
Skip = part.Skip,
QueryRecordId = part.QueryPartRecord == null ? "-1" : part.QueryPartRecord.Id.ToString(),
Queries = Services.ContentManager.Query<QueryPart>().Join<TitlePartRecord>().OrderBy(x => x.Title).List(),
Queries = Services.ContentManager.Query<QueryPart, QueryPartRecord>().Join<TitlePartRecord>().OrderBy(x => x.Title).List(),
};
return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix);

View File

@@ -249,7 +249,7 @@ namespace Orchard.Projections.Drivers {
// populating the list of queries and layouts
var layouts = _projectionManager.DescribeLayouts().SelectMany(x => x.Descriptors).ToList();
model.QueryRecordEntries = Services.ContentManager.Query<QueryPart>().Join<TitlePartRecord>().OrderBy(x => x.Title).List()
model.QueryRecordEntries = Services.ContentManager.Query<QueryPart, QueryPartRecord>().Join<TitlePartRecord>().OrderBy(x => x.Title).List()
.Select(x => new QueryRecordEntry {
Id = x.Id,
Name = x.Name,

View File

@@ -41,6 +41,7 @@ namespace Orchard.Projections.Tests.Services {
// ContentDefinitionManager
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IPageClassBuilder>().Object);
builder.RegisterType<DefaultContentDisplay>().As<IContentDisplay>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();

View File

@@ -48,6 +48,7 @@ namespace Orchard.Projections.Tests.Services {
// ContentDefinitionManager
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IPageClassBuilder>().Object);
builder.RegisterType<DefaultContentDisplay>().As<IContentDisplay>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();

View File

@@ -53,7 +53,7 @@ namespace Orchard.Widgets.Filters {
// Once the Rule Engine is done:
// Get Layers and filter by zone and rule
IEnumerable<LayerPart> activeLayers = _orchardServices.ContentManager.Query<LayerPart>().ForType("Layer").List();
IEnumerable<LayerPart> activeLayers = _orchardServices.ContentManager.Query<LayerPart, LayerPartRecord>().ForType("Layer").List();
var activeLayerIds = new List<int>();
foreach (var activeLayer in activeLayers) {

View File

@@ -4,7 +4,7 @@ namespace TinyMce {
public class ResourceManifest : IResourceManifestProvider {
public void BuildManifests(ResourceManifestBuilder builder) {
var manifest = builder.Add();
manifest.DefineScript("TinyMce").SetUrl("tinymce.min.js").SetVersion("4.1.3").SetDependencies("jQuery");
manifest.DefineScript("TinyMce").SetUrl("tinymce.min.js").SetVersion("4.1.4").SetDependencies("jQuery");
manifest.DefineScript("OrchardTinyMce").SetUrl("orchard-tinymce.js").SetDependencies("TinyMce");
}
}

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("advlist",function(t){function e(t,e){var n=[];return tinymce.each(e.split(/[ ,]/),function(t){n.push({text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"==t?"":t})}),n}function n(e,n){var o,l=t.dom,a=t.selection;o=l.getParent(a.getNode(),"ol,ul"),o&&o.nodeName==e&&n!==!1||t.execCommand("UL"==e?"InsertUnorderedList":"InsertOrderedList"),n=n===!1?i[e]:n,i[e]=n,o=l.getParent(a.getNode(),"ol,ul"),o&&n&&(l.setStyle(o,"listStyleType",n),o.removeAttribute("data-mce-style")),t.focus()}function o(e){var n=t.dom.getStyle(t.dom.getParent(t.selection.getNode(),"ol,ul"),"listStyleType")||"";e.control.items().each(function(t){t.active(t.settings.data===n)})}var l,a,i={};l=e("OL",t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),a=e("UL",t.getParam("advlist_bullet_styles","default,circle,disc,square")),t.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:l,onshow:o,onselect:function(t){n("OL",t.control.settings.data)},onclick:function(){n("OL",!1)}}),t.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:a,onshow:o,onselect:function(t){n("UL",t.control.settings.data)},onclick:function(){n("UL",!1)}})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("anchor",function(n){function e(){var e=n.selection.getNode(),t="";"A"==e.tagName&&(t=e.name||e.id||""),n.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:t},onsubmit:function(e){n.execCommand("mceInsertContent",!1,n.dom.createHTML("a",{id:e.data.name}))}})}n.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:e,stateSelector:"a:not([href])"}),n.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:e})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("autolink",function(n){function t(n){o(n,-1,"(",!0)}function e(n){o(n,0,"",!0)}function i(n){o(n,-1,"",!1)}function o(n,t,e){function i(n,t){if(0>t&&(t=0),3==n.nodeType){var e=n.data.length;t>e&&(t=e)}return t}function o(n,t){f.setStart(n,i(n,t))}function r(n,t){f.setEnd(n,i(n,t))}var f,d,a,s,c,l,u,g,h,C;if(f=n.selection.getRng(!0).cloneRange(),f.startOffset<5){if(g=f.endContainer.previousSibling,!g){if(!f.endContainer.firstChild||!f.endContainer.firstChild.nextSibling)return;g=f.endContainer.firstChild.nextSibling}if(h=g.length,o(g,h),r(g,h),f.endOffset<5)return;d=f.endOffset,s=g}else{if(s=f.endContainer,3!=s.nodeType&&s.firstChild){for(;3!=s.nodeType&&s.firstChild;)s=s.firstChild;3==s.nodeType&&(o(s,0),r(s,s.nodeValue.length))}d=1==f.endOffset?2:f.endOffset-1-t}a=d;do o(s,d>=2?d-2:0),r(s,d>=1?d-1:0),d-=1,C=f.toString();while(" "!=C&&""!==C&&160!=C.charCodeAt(0)&&d-2>=0&&C!=e);f.toString()==e||160==f.toString().charCodeAt(0)?(o(s,d),r(s,a),d+=1):0===f.startOffset?(o(s,0),r(s,a)):(o(s,d),r(s,a)),l=f.toString(),"."==l.charAt(l.length-1)&&r(s,a-1),l=f.toString(),u=l.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i),u&&("www."==u[1]?u[1]="http://www.":/@$/.test(u[1])&&!/^mailto:/.test(u[1])&&(u[1]="mailto:"+u[1]),c=n.selection.getBookmark(),n.selection.setRng(f),n.execCommand("createlink",!1,u[1]+u[2]),n.selection.moveToBookmark(c),n.nodeChanged())}var r;return n.on("keydown",function(t){return 13==t.keyCode?i(n):void 0}),tinymce.Env.ie?void n.on("focus",function(){if(!r){r=!0;try{n.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(n.on("keypress",function(e){return 41==e.keyCode?t(n):void 0}),void n.on("keyup",function(t){return 32==t.keyCode?e(n):void 0}))});

View File

@@ -0,0 +1 @@
tinymce._beforeUnloadHandler=function(){var e;return tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e},tinymce.PluginManager.add("autosave",function(e){function t(e,t){var n={s:1e3,m:6e4};return e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function n(){var e=parseInt(v.getItem(c+"time"),10)||0;return(new Date).getTime()-e>m.autosave_retention?(a(!1),!1):!0}function a(t){v.removeItem(c+"draft"),v.removeItem(c+"time"),t!==!1&&e.fire("RemoveDraft")}function r(){!f()&&e.isDirty()&&(v.setItem(c+"draft",e.getContent({format:"raw",no_events:!0})),v.setItem(c+"time",(new Date).getTime()),e.fire("StoreDraft"))}function o(){n()&&(e.setContent(v.getItem(c+"draft"),{format:"raw"}),e.fire("RestoreDraft"))}function i(){d||(setInterval(function(){e.removed||r()},m.autosave_interval),d=!0)}function s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft RemoveDraft",function(){t.disabled(!n())}),i()}function u(){e.undoManager.beforeChange(),o(),a(),e.undoManager.add()}function f(t){var n=e.settings.forced_root_block;return t=tinymce.trim("undefined"==typeof t?e.getBody().innerHTML:t),""===t||new RegExp("^<"+n+"[^>]*>(( |&nbsp;|[ ]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(t)}var c,d,m=e.settings,v=tinymce.util.LocalStorage;c=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",c=c.replace(/\{path\}/g,document.location.pathname),c=c.replace(/\{query\}/g,document.location.search),c=c.replace(/\{id\}/g,e.id),m.autosave_interval=t(m.autosave_interval,"30s"),m.autosave_retention=t(m.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore last draft",onclick:u,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore last draft",onclick:u,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&f()&&o()}),e.on("saveContent",function(){a()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=n,this.storeDraft=r,this.restoreDraft=o,this.removeDraft=a,this.isEmpty=f});

View File

@@ -0,0 +1 @@
!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(o){var e=this,t=o.getParam("bbcode_dialect","punbb").toLowerCase();o.on("beforeSetContent",function(o){o.content=e["_"+t+"_bbcode2html"](o.content)}),o.on("postProcess",function(o){o.set&&(o.content=e["_"+t+"_bbcode2html"](o.content)),o.get&&(o.content=e["_"+t+"_html2bbcode"](o.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/<font>(.*?)<\/font>/gi,"$1"),e(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),e(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),e(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),e(/<u>/gi,"[u]"),e(/<blockquote[^>]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/<br \/>/gi,"\n"),e(/<br\/>/gi,"\n"),e(/<br>/gi,"\n"),e(/<p>/gi,""),e(/<\/p>/gi,"\n"),e(/&nbsp;|\u00a0/gi," "),e(/&quot;/gi,'"'),e(/&lt;/gi,"<"),e(/&gt;/gi,">"),e(/&amp;/gi,"&"),o},_punbb_bbcode2html:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/\n/gi,"<br />"),e(/\[b\]/gi,"<strong>"),e(/\[\/b\]/gi,"</strong>"),e(/\[i\]/gi,"<em>"),e(/\[\/i\]/gi,"</em>"),e(/\[u\]/gi,"<u>"),e(/\[\/u\]/gi,"</u>"),e(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),e(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),e(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),e(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),e(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),e(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),o}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}();

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("colorpicker",function(e){function n(n,a){function i(e){var n=new tinymce.util.Color(e),a=n.toRgb();l.fromJSON({r:a.r,g:a.g,b:a.b,hex:n.toHex().substr(1)}),t(n.toHex())}function t(e){l.find("#preview")[0].getEl().style.background=e}var l=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:a,onchange:function(){var e=this.rgb();l&&(l.find("#r").value(e.r),l.find("#g").value(e.g),l.find("#b").value(e.b),l.find("#hex").value(this.value().substr(1)),t(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,a=l.find("colorpicker")[0];return e=this.name(),n=this.value(),"hex"==e?(n="#"+n,i(n),void a.value(n)):(n={r:l.find("#r").value(),g:l.find("#g").value(),b:l.find("#b").value()},a.value(n),void i(n))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+this.toJSON().hex)}});i(a)}e.settings.color_picker_callback||(e.settings.color_picker_callback=n)});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("contextmenu",function(e){var t,n=e.settings.contextmenu_never_use_native;e.on("contextmenu",function(o){var i,c=e.getDoc();if(!o.ctrlKey||n){if(o.preventDefault(),tinymce.Env.mac&&tinymce.Env.webkit&&2==o.button&&c.caretRangeFromPoint&&e.selection.setRng(c.caretRangeFromPoint(o.x,o.y)),i=e.settings.contextmenu||"link image inserttable | cell row column deletetable",t)t.show();else{var a=[];tinymce.each(i.split(/[ ,]/),function(t){var n=e.menuItems[t];"|"==t&&(n={text:t}),n&&(n.shortcut="",a.push(n))});for(var r=0;r<a.length;r++)"|"==a[r].text&&(0===r||r==a.length-1)&&a.splice(r,1);t=new tinymce.ui.Menu({items:a,context:"contextmenu"}).addClass("contextmenu").renderTo(),e.on("remove",function(){t.remove(),t=null})}var m={x:o.pageX,y:o.pageY};e.inline||(m=tinymce.DOM.getPos(e.getContentAreaContainer()),m.x+=o.clientX,m.y+=o.clientY),t.moveTo(m.x,m.y)}})});

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("emoticons",function(t,e){function a(){var t;return t='<table role="list" class="mce-grid">',tinymce.each(i,function(a){t+="<tr>",tinymce.each(a,function(a){var i=e+"/img/smiley-"+a+".gif";t+='<td><a href="#" data-mce-url="'+i+'" data-mce-alt="'+a+'" tabindex="-1" role="option" aria-label="'+a+'"><img src="'+i+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'}),t+="</tr>"}),t+="</table>"}var i=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];t.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:a,onclick:function(e){var a=t.dom.getParent(e.target,"a");a&&(t.insertContent('<img src="'+a.getAttribute("data-mce-url")+'" alt="'+a.getAttribute("data-mce-alt")+'" />'),this.hide())}},tooltip:"Emoticons"})});

View File

@@ -0,0 +1,8 @@
<!DOCTYPE html>
<html>
<body>
<h3>Custom dialog</h3>
Input some text: <input id="content">
<button onclick="top.tinymce.activeEditor.windowManager.getWindows()[0].close();">Close window</button>
</body>
</html>

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("example",function(t,e){t.addButton("example",{text:"My button",icon:!1,onclick:function(){t.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(e){t.insertContent("Title: "+e.data.title)}})}}),t.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){t.windowManager.open({title:"TinyMCE site",url:e+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var e=t.windowManager.getWindows()[0];t.insertContent(e.getContentWindow().document.getElementById("content").value),e.close()}},{text:"Close",onclick:"close"}]})}})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("example_dependency",function(){},["example"]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("hr",function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")}),n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("importcss",function(t){function e(t){return"string"==typeof t?function(e){return-1!==e.indexOf(t)}:t instanceof RegExp?function(e){return t.test(e)}:t}function n(e,n){function i(t,e){var c,o=t.href;if(o&&n(o,e)){s(t.imports,function(t){i(t,!0)});try{c=t.cssRules||t.rules}catch(a){}s(c,function(t){t.styleSheet?i(t.styleSheet,!0):t.selectorText&&s(t.selectorText.split(","),function(t){r.push(tinymce.trim(t))})})}}var r=[],c={};s(t.contentCSS,function(t){c[t]=!0}),n||(n=function(t,e){return e||c[t]});try{s(e.styleSheets,function(t){i(t)})}catch(o){}return r}function i(e){var n,i=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(e);if(i){var r=i[1],s=i[2].substr(1).split(".").join(" "),c=tinymce.makeMap("a,img");return i[1]?(n={title:e},t.schema.getTextBlockElements()[r]?n.block=r:t.schema.getBlockElements()[r]||c[r.toLowerCase()]?n.selector=r:n.inline=r):i[2]&&(n={inline:"span",title:e.substr(1),classes:s}),t.settings.importcss_merge_classes!==!1?n.classes=s:n.attributes={"class":s},n}}var r=this,s=tinymce.each;t.on("renderFormatsMenu",function(c){var o=t.settings,a={},l=o.importcss_selector_converter||i,f=e(o.importcss_selector_filter),m=c.control;t.settings.importcss_append||m.items().remove();var u=[];tinymce.each(o.importcss_groups,function(t){t=tinymce.extend({},t),t.filter=e(t.filter),u.push(t)}),s(n(c.doc||t.getDoc(),e(o.importcss_file_filter)),function(e){if(-1===e.indexOf(".mce-")&&!a[e]&&(!f||f(e))){var n,i=l.call(r,e);if(i){var s=i.name||tinymce.DOM.uniqueId();if(u)for(var c=0;c<u.length;c++)if(!u[c].filter||u[c].filter(e)){u[c].item||(u[c].item={text:u[c].title,menu:[]}),n=u[c].item.menu;break}t.formatter.register(s,i);var o=tinymce.extend({},m.settings.itemDefaults,{text:i.title,format:s});n?n.push(o):m.add(o)}a[e]=!0}}),s(u,function(t){m.add(t.item)}),c.control.renderNew()}),r.convertSelectorToFormat=i});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("insertdatetime",function(e){function t(t,a){function n(e,t){if(e=""+e,e.length<t)for(var a=0;a<t-e.length;a++)e="0"+e;return e}return a=a||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+a.getFullYear()),t=t.replace("%y",""+a.getYear()),t=t.replace("%m",n(a.getMonth()+1,2)),t=t.replace("%d",n(a.getDate(),2)),t=t.replace("%H",""+n(a.getHours(),2)),t=t.replace("%M",""+n(a.getMinutes(),2)),t=t.replace("%S",""+n(a.getSeconds(),2)),t=t.replace("%I",""+((a.getHours()+11)%12+1)),t=t.replace("%p",""+(a.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(m[a.getMonth()])),t=t.replace("%b",""+e.translate(c[a.getMonth()])),t=t.replace("%A",""+e.translate(d[a.getDay()])),t=t.replace("%a",""+e.translate(i[a.getDay()])),t=t.replace("%%","%")}function a(a){var n=t(a);if(e.settings.insertdatetime_element){var r;r=t(/%[HMSIp]/.test(a)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),n='<time datetime="'+r+'">'+n+"</time>";var i=e.dom.getParent(e.selection.getStart(),"time");if(i)return void e.dom.setOuterHTML(i,n)}e.insertContent(n)}var n,r,i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),d="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),c="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),m="January February March April May June July August September October November December".split(" "),u=[];e.addCommand("mceInsertDate",function(){a(e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),e.addCommand("mceInsertTime",function(){a(e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S")))}),e.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){a(n||r)},menu:u}),tinymce.each(e.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(e){r||(r=e),u.push({text:t(e),onclick:function(){n=e,a(e)}})}),e.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:u,context:"insert"})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("layer",function(e){function t(e){do if(e.className&&-1!=e.className.indexOf("mceItemLayer"))return e;while(e=e.parentNode)}function o(t){var o=e.dom;tinymce.each(o.select("div,p",t),function(e){/^(absolute|relative|fixed)$/i.test(e.style.position)&&(e.hasVisual?o.addClass(e,"mceItemVisualAid"):o.removeClass(e,"mceItemVisualAid"),o.addClass(e,"mceItemLayer"))})}function d(o){var d,n,a=[],i=t(e.selection.getNode()),s=-1,l=-1;for(n=[],tinymce.walk(e.getBody(),function(e){1==e.nodeType&&/^(absolute|relative|static)$/i.test(e.style.position)&&n.push(e)},"childNodes"),d=0;d<n.length;d++)a[d]=n[d].style.zIndex?parseInt(n[d].style.zIndex,10):0,0>s&&n[d]==i&&(s=d);if(0>o){for(d=0;d<a.length;d++)if(a[d]<a[s]){l=d;break}l>-1?(n[s].style.zIndex=a[l],n[l].style.zIndex=a[s]):a[s]>0&&(n[s].style.zIndex=a[s]-1)}else{for(d=0;d<a.length;d++)if(a[d]>a[s]){l=d;break}l>-1?(n[s].style.zIndex=a[l],n[l].style.zIndex=a[s]):n[s].style.zIndex=a[s]+1}e.execCommand("mceRepaint")}function n(){var t=e.dom,o=t.getPos(t.getParent(e.selection.getNode(),"*")),d=e.getBody();e.dom.add(d,"div",{style:{position:"absolute",left:o.x,top:o.y>20?o.y:20,width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},e.selection.getContent()||e.getLang("layer.content")),tinymce.Env.ie&&t.setHTML(d,d.innerHTML)}function a(){var o=t(e.selection.getNode());o||(o=e.dom.getParent(e.selection.getNode(),"DIV,P,IMG")),o&&("absolute"==o.style.position.toLowerCase()?(e.dom.setStyles(o,{position:"",left:"",top:"",width:"",height:""}),e.dom.removeClass(o,"mceItemVisualAid"),e.dom.removeClass(o,"mceItemLayer")):(o.style.left||(o.style.left="20px"),o.style.top||(o.style.top="20px"),o.style.width||(o.style.width=o.width?o.width+"px":"100px"),o.style.height||(o.style.height=o.height?o.height+"px":"100px"),o.style.position="absolute",e.dom.setAttrib(o,"data-mce-style",""),e.addVisual(e.getBody())),e.execCommand("mceRepaint"),e.nodeChanged())}e.addCommand("mceInsertLayer",n),e.addCommand("mceMoveForward",function(){d(1)}),e.addCommand("mceMoveBackward",function(){d(-1)}),e.addCommand("mceMakeAbsolute",function(){a()}),e.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),e.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),e.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),e.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),e.on("init",function(){tinymce.Env.ie&&e.getDoc().execCommand("2D-Position",!1,!0)}),e.on("mouseup",function(o){var d=t(o.target);d&&e.dom.setAttrib(d,"data-mce-style","")}),e.on("mousedown",function(o){var d,n=o.target,a=e.getDoc();tinymce.Env.gecko&&(t(n)?"on"!==a.designMode&&(a.designMode="on",n=a.body,d=n.parentNode,d.removeChild(n),d.appendChild(n)):"on"==a.designMode&&(a.designMode="off"))}),e.on("NodeChange",o)});

View File

@@ -0,0 +1 @@
!function(e){e.on("AddEditor",function(e){e.editor.settings.inline_styles=!1}),e.PluginManager.add("legacyoutput",function(t,n,i){t.on("init",function(){var n="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",i=e.explode(t.settings.font_size_style_values),a=t.schema;t.formatter.register({alignleft:{selector:n,attributes:{align:"left"}},aligncenter:{selector:n,attributes:{align:"center"}},alignright:{selector:n,attributes:{align:"right"}},alignjustify:{selector:n,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(t){return e.inArray(i,t.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),e.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),e.each(n.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}),t.addButton("fontsizeselect",function(){var e=[],n="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",i=t.settings.fontsize_formats||n;return t.$.each(i.split(" "),function(t,n){var i=n,a=n,o=n.split("=");o.length>1&&(i=o[0],a=o[1]),e.push({text:i,value:a})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),e.value(n?n.size:"")})},onclick:function(e){e.control.settings.value&&t.execCommand("FontSize",!1,e.control.settings.value)}}}),t.addButton("fontselect",function(){function e(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}var n="Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",a=[],o=e(t.settings.font_formats||n);return i.each(o,function(e,t){a.push({text:{raw:t[0]},value:t[1],textStyle:-1==t[1].indexOf("dings")?"font-family:"+t[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:a,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),e.value(n?n.face:"")})},onselect:function(e){e.control.settings.value&&t.execCommand("FontName",!1,e.control.settings.value)}}})})}(tinymce);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("nonbreaking",function(n){var e=n.getParam("nonbreaking_force_tab");if(n.addCommand("mceNonBreaking",function(){n.insertContent(n.plugins.visualchars&&n.plugins.visualchars.state?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;"),n.dom.setAttrib(n.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),n.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),n.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),e){var a=+e>1?+e:3;n.on("keydown",function(e){if(9==e.keyCode){if(e.shiftKey)return;e.preventDefault();for(var t=0;a>t;t++)n.execCommand("mceNonBreaking")}})}});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("noneditable",function(e){function t(e){var t;if(1===e.nodeType){if(t=e.getAttribute(u),t&&"inherit"!==t)return t;if(t=e.contentEditable,"inherit"!==t)return t}return null}function n(e){for(var n;e;){if(n=t(e))return"false"===n?e:null;e=e.parentNode}}function r(){function r(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function a(e){var t;if(e)for(t=new f(e,e),e=t.current();e;e=t.next())if(3===e.nodeType)return e}function i(n,r){var a,i;return"false"===t(n)&&u.isBlock(n)?void s.select(n):(i=u.createRng(),"true"===t(n)&&(n.firstChild||n.appendChild(e.getDoc().createTextNode(" ")),n=n.firstChild,r=!0),a=u.create("span",{id:g,"data-mce-bogus":!0},m),r?n.parentNode.insertBefore(a,n):u.insertAfter(a,n),i.setStart(a.firstChild,1),i.collapse(!0),s.setRng(i),a)}function o(e){var t,n,i,o;if(e)t=s.getRng(!0),t.setStartBefore(e),t.setEndBefore(e),n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0),s.setRng(t);else for(i=r(s.getStart());(e=u.get(g))&&e!==o;)i!==e&&(n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0)),o=e}function l(){function e(e,n){var r,a,i,o,l;if(r=d.startContainer,a=d.startOffset,3==r.nodeType){if(l=r.nodeValue.length,a>0&&l>a||(n?a==l:0===a))return}else{if(!(a<r.childNodes.length))return n?null:e;var u=!n&&a>0?a-1:a;r=r.childNodes[u],r.hasChildNodes()&&(r=r.firstChild)}for(i=new f(r,e);o=i[n?"prev":"next"]();){if(3===o.nodeType&&o.nodeValue.length>0)return;if("true"===t(o))return o}return e}var r,a,l,d,u;o(),l=s.isCollapsed(),r=n(s.getStart()),a=n(s.getEnd()),(r||a)&&(d=s.getRng(!0),l?(r=r||a,(u=e(r,!0))?i(u,!0):(u=e(r,!1))?i(u,!1):s.select(r)):(d=s.getRng(!0),r&&d.setStartBefore(r),a&&d.setEndAfter(a),s.setRng(d)))}function d(a){function i(e,t){for(;e=e[t?"previousSibling":"nextSibling"];)if(3!==e.nodeType||e.nodeValue.length>0)return e}function d(e,t){s.select(e),s.collapse(t)}function g(a){function i(e){for(var t=d;t;){if(t===e)return;t=t.parentNode}u.remove(e),l()}function o(){var r,o,l=e.schema.getNonEmptyElements();for(o=new tinymce.dom.TreeWalker(d,e.getBody());(r=a?o.prev():o.next())&&!l[r.nodeName.toLowerCase()]&&!(3===r.nodeType&&tinymce.trim(r.nodeValue).length>0);)if("false"===t(r))return i(r),!0;return n(r)?!0:!1}var f,d,c,g;if(s.isCollapsed()){if(f=s.getRng(!0),d=f.startContainer,c=f.startOffset,d=r(d)||d,g=n(d))return i(g),!1;if(3==d.nodeType&&(a?c>0:c<d.nodeValue.length))return!0;if(1==d.nodeType&&(d=d.childNodes[c]||d),o())return!1}return!0}var m,p,v,E,h=a.keyCode;if(v=s.getStart(),E=s.getEnd(),m=n(v)||n(E),m&&(112>h||h>124)&&h!=c.DELETE&&h!=c.BACKSPACE){if((tinymce.isMac?a.metaKey:a.ctrlKey)&&(67==h||88==h||86==h))return;if(a.preventDefault(),h==c.LEFT||h==c.RIGHT){var y=h==c.LEFT;if(e.dom.isBlock(m)){var T=y?m.previousSibling:m.nextSibling,C=new f(T,T),b=y?C.prev():C.next();d(b,!y)}else d(m,y)}}else if(h==c.LEFT||h==c.RIGHT||h==c.BACKSPACE||h==c.DELETE){if(p=r(v)){if(h==c.LEFT||h==c.BACKSPACE)if(m=i(p,!0),m&&"false"===t(m)){if(a.preventDefault(),h!=c.LEFT)return void u.remove(m);d(m,!0)}else o(p);if(h==c.RIGHT||h==c.DELETE)if(m=i(p),m&&"false"===t(m)){if(a.preventDefault(),h!=c.RIGHT)return void u.remove(m);d(m,!1)}else o(p)}if((h==c.BACKSPACE||h==c.DELETE)&&!g(h==c.BACKSPACE))return a.preventDefault(),!1}}var u=e.dom,s=e.selection,g="mce_noneditablecaret",m="";e.on("mousedown",function(n){var r=e.selection.getNode();"false"===t(r)&&r==n.target&&l()}),e.on("mouseup keyup",l),e.on("keydown",d)}function a(t){var n=l.length,r=t.content,a=tinymce.trim(o);if("raw"!=t.format){for(;n--;)r=r.replace(l[n],function(t){var n=arguments,i=n[n.length-2];return i>0&&'"'==r.charAt(i-1)?t:'<span class="'+a+'" data-mce-content="'+e.dom.encode(n[0])+'">'+e.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"});t.content=r}}var i,o,l,f=tinymce.dom.TreeWalker,d="contenteditable",u="data-mce-"+d,c=tinymce.util.VK;i=" "+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",o=" "+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+" ",l=e.getParam("noneditable_regexp"),l&&!l.length&&(l=[l]),e.on("PreInit",function(){r(),l&&e.on("BeforeSetContent",a),e.parser.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)n=e[r],t=" "+n.attr("class")+" ",-1!==t.indexOf(i)?n.attr(u,"true"):-1!==t.indexOf(o)&&n.attr(u,"false")}),e.serializer.addAttributeFilter(u,function(e){for(var t,n=e.length;n--;)t=e[n],l&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):(t.attr(d,null),t.attr(u,null))}),e.parser.addAttributeFilter(d,function(e){for(var t,n=e.length;n--;)t=e[n],t.attr(u,t.attr(d)),t.attr(d,null)})}),e.on("drop",function(e){n(e.target)&&e.preventDefault()})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("pagebreak",function(e){var a="mce-pagebreak",t=e.getParam("pagebreak_separator","<!-- pagebreak -->"),n=new RegExp(t.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),r='<img src="'+tinymce.Env.transparentSrc+'" class="'+a+'" data-mce-resize="false" />';e.addCommand("mcePageBreak",function(){e.insertContent(e.settings.pagebreak_split_block?"<p>"+r+"</p>":r)}),e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(t){"IMG"==t.target.nodeName&&e.dom.hasClass(t.target,a)&&(t.name="pagebreak")}),e.on("click",function(t){t=t.target,"IMG"===t.nodeName&&e.dom.hasClass(t,a)&&e.selection.select(t)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(n,r)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(a){for(var n,r,c=a.length;c--;)if(n=a[c],r=n.attr("class"),r&&-1!==r.indexOf("mce-pagebreak")){var o=n.parent;if(e.schema.getBlockElements()[o.name]&&e.settings.pagebreak_split_block){o.type=3,o.value=t,o.raw=!0,n.remove();continue}n.type=3,n.value=t,n.raw=!0}})})});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("preview",function(e){var t=e.settings,i=!tinymce.Env.ie;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(i?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var n,a="";a+='<base href="'+e.documentBaseURI.getURI()+'">',tinymce.each(e.contentCSS,function(t){a+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});var r=t.body_id||"tinymce";-1!=r.indexOf("=")&&(r=e.getParam("body_id","","hash"),r=r[e.id]||r);var d=t.body_class||"";-1!=d.indexOf("=")&&(d=e.getParam("body_class","","hash"),d=d[e.id]||"");var o=e.settings.directionality?' dir="'+e.settings.directionality+'"':"";if(n="<!DOCTYPE html><html><head>"+a+'</head><body id="'+r+'" class="mce-content-body '+d+'"'+o+">"+e.getContent()+"</body></html>",i)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(n);else{var s=this.getEl("body").firstChild.contentWindow.document;s.open(),s.write(n),s.close()}}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("print",function(t){t.addCommand("mcePrint",function(){t.getWin().print()}),t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addShortcut("Ctrl+P","","mcePrint"),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Ctrl+P",context:"file"})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("save",function(e){function a(){var a;return a=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty()?(tinymce.triggerSave(),e.getParam("save_onsavecallback")?void(e.execCallback("save_onsavecallback",e)&&(e.startContent=tinymce.trim(e.getContent({format:"raw"})),e.nodeChanged())):void(a?(e.isNotDirty=!0,(!a.onsubmit||a.onsubmit())&&("function"==typeof a.submit?a.submit():e.windowManager.alert("Error: Form submit field collision.")),e.nodeChanged()):e.windowManager.alert("Error: No form element found."))):void 0}function n(){var a=tinymce.trim(e.startContent);return e.getParam("save_oncancelcallback")?void e.execCallback("save_oncancelcallback",e):(e.setContent(a),e.undoManager.clear(),void e.nodeChanged())}function t(){var a=this;e.on("nodeChange",function(){a.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",a),e.addCommand("mceCancel",n),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:t}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:t}),e.addShortcut("ctrl+s","","mceSave")});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("tabfocus",function(e){function n(e){9!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}function t(n){function t(n){function t(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&t(e.parentNode)}function r(e){return e.tabIndex||"INPUT"==e.nodeName||"TEXTAREA"==e.nodeName}function c(e){return!r(e)&&"-1"!=e.getAttribute("tabindex")&&t(e)}if(u=i.select(":input:enabled,*[tabindex]:not(iframe)"),o(u,function(n,t){return n.id==e.id?(a=t,!1):void 0}),n>0){for(d=a+1;d<u.length;d++)if(c(u[d]))return u[d]}else for(d=a-1;d>=0;d--)if(c(u[d]))return u[d];return null}var a,u,c,d;if(!(9!==n.keyCode||n.ctrlKey||n.altKey||n.metaKey)&&(c=r(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==c.length&&(c[1]=c[0],c[0]=":prev"),u=n.shiftKey?":prev"==c[0]?t(-1):i.get(c[0]):":next"==c[1]?t(1):i.get(c[1]))){var y=tinymce.get(u.id||u.name);u.id&&y?y.focus():window.setTimeout(function(){tinymce.Env.webkit||window.focus(),u.focus()},10),n.preventDefault()}}var i=tinymce.DOM,o=tinymce.each,r=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null)}),e.on("keyup",n),tinymce.Env.gecko?e.on("keypress keydown",t):e.on("keydown",t)});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("template",function(e){function t(t){return function(){var a=e.settings.templates;"string"==typeof a?tinymce.util.XHR.send({url:a,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(a)}}function a(t){function a(t){function a(t){if(-1==t.indexOf("<html>")){var a="";tinymce.each(e.contentCSS,function(t){a+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'}),t="<!DOCTYPE html><html><head>"+a+"</head><body>"+t+"</body></html>"}t=r(t,"template_preview_replace_values");var l=n.find("iframe")[0].getEl().contentWindow.document;l.open(),l.write(t),l.close()}var c=t.control.value();c.url?tinymce.util.XHR.send({url:c.url,success:function(e){l=e,a(l)}}):(l=c.content,a(l)),n.find("#description")[0].text(t.control.value().description)}var n,l,i=[];return t&&0!==t.length?(tinymce.each(t,function(e){i.push({selected:!i.length,text:e.title,value:{url:e.url,content:e.content,description:e.description}})}),n=e.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:i,onselect:a}}]},{type:"label",name:"description",label:"Description",text:" "},{type:"iframe",flex:1,border:1}],onsubmit:function(){c(!1,l)},width:e.getParam("template_popup_width",600),height:e.getParam("template_popup_height",500)}),void n.find("listbox")[0].fire("select")):void e.windowManager.alert("No templates defined")}function n(t,a){function n(e,t){if(e=""+e,e.length<t)for(var a=0;a<t-e.length;a++)e="0"+e;return e}var l="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),r="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),c="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),i="January February March April May June July August September October November December".split(" ");return a=a||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+a.getFullYear()),t=t.replace("%y",""+a.getYear()),t=t.replace("%m",n(a.getMonth()+1,2)),t=t.replace("%d",n(a.getDate(),2)),t=t.replace("%H",""+n(a.getHours(),2)),t=t.replace("%M",""+n(a.getMinutes(),2)),t=t.replace("%S",""+n(a.getSeconds(),2)),t=t.replace("%I",""+((a.getHours()+11)%12+1)),t=t.replace("%p",""+(a.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(i[a.getMonth()])),t=t.replace("%b",""+e.translate(c[a.getMonth()])),t=t.replace("%A",""+e.translate(r[a.getDay()])),t=t.replace("%a",""+e.translate(l[a.getDay()])),t=t.replace("%%","%")}function l(t){var a=e.dom,n=e.getParam("template_replace_values");i(a.select("*",t),function(e){i(n,function(t,l){a.hasClass(e,l)&&"function"==typeof n[l]&&n[l](e)})})}function r(t,a){return i(e.getParam(a),function(e,a){"function"!=typeof e&&(t=t.replace(new RegExp("\\{\\$"+a+"\\}","g"),e))}),t}function c(t,a){function c(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}var o,s,p=e.dom,m=e.selection.getContent();a=r(a,"template_replace_values"),o=p.create("div",null,a),s=p.select(".mceTmpl",o),s&&s.length>0&&(o=p.create("div",null),o.appendChild(s[0].cloneNode(!0))),i(p.select("*",o),function(t){c(t,e.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_cdate_format",e.getLang("template.cdate_format")))),c(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))),c(t,e.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(t.innerHTML=m)}),l(o),e.execCommand("mceInsertContent",!1,o.innerHTML),e.addVisual()}var i=tinymce.each;e.addCommand("mceInsertTemplate",c),e.addButton("template",{title:"Insert template",onclick:t(a)}),e.addMenuItem("template",{text:"Insert template",onclick:t(a),context:"insert"}),e.on("PreProcess",function(t){var a=e.dom;i(a.select("div",t.node),function(t){a.hasClass(t,"mceTmpl")&&(i(a.select("*",t),function(t){a.hasClass(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format"))))}),l(t))})})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("textcolor",function(t){function e(e){var o;return t.dom.getParents(t.selection.getStart(),function(t){var r;(r=t.style["forecolor"==e?"color":"background-color"])&&(o=r)}),o}function o(){var e,o,r=[];for(o=t.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],e=0;e<o.length;e+=2)r.push({text:o[e+1],color:"#"+o[e]});return r}function r(){function e(t,e){var o="transparent"==t;return'<td class="mce-grid-cell'+(o?" mce-colorbtn-trans":"")+'"><div id="'+m+"-"+F++ +'" data-mce-color="'+(t?t:"")+'" role="option" tabIndex="-1" style="'+(t?"background-color: "+t:"")+'" title="'+tinymce.translate(e)+'">'+(o?"&#215;":"")+"</div></td>"}var r,l,a,n,c,d,u,g=this,m=g._id,F=0;for(r=o(),r.push({text:tinymce.translate("No color"),color:"transparent"}),a='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',n=r.length-1,d=0;s>d;d++){for(a+="<tr>",c=0;i>c;c++)u=d*i+c,u>n?a+="<td></td>":(l=r[u],a+=e(l.color,l.text));a+="</tr>"}if(t.settings.color_picker_callback){for(a+='<tr><td colspan="'+i+'" class="mce-custom-color-btn"><div id="'+m+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+m+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",a+="<tr>",c=0;i>c;c++)a+=e("","Custom color");a+="</tr>"}return a+="</tbody></table>"}function l(e,o){t.focus(),t.formatter.apply(e,{value:o}),t.nodeChanged()}function a(e){t.focus(),t.formatter.remove(e,{value:null},null,!0),t.nodeChanged()}function n(o){function r(t){s.hidePanel(),s.color(t),l(s.settings.format,t)}function n(t,e){t.style.background=e,t.setAttribute("data-mce-color",e)}var c,s=this.parent();if(tinymce.DOM.getParent(o.target,".mce-custom-color-btn")&&(s.hidePanel(),t.settings.color_picker_callback.call(t,function(t){var e,o,l,a=s.panel.getEl().getElementsByTagName("table")[0];for(e=tinymce.map(a.rows[a.rows.length-1].childNodes,function(t){return t.firstChild}),l=0;l<e.length&&(o=e[l],o.getAttribute("data-mce-color"));l++);if(l==i)for(l=0;i-1>l;l++)n(e[l],e[l+1].getAttribute("data-mce-color"));n(o,t),r(t)},e(s.settings.format))),c=o.target.getAttribute("data-mce-color")){if(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),o.target.setAttribute("aria-selected",!0),this.lastId=o.target.id,"transparent"==c)return a(s.settings.format),void s.hidePanel();r(c)}else null!==c&&s.hidePanel()}function c(){var t=this;t._color&&l(t.settings.format,t._color)}var i,s;s=t.settings.textcolor_rows||5,i=t.settings.textcolor_cols||8,t.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:r,onclick:n},onclick:c}),t.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:r,onclick:n},onclick:c})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("textpattern",function(t){function e(){return l&&(i.sort(function(t,e){return t.start.length>e.start.length?-1:t.start.length<e.start.length?1:0}),l=!1),i}function n(t){for(var n=e(),a=0;a<n.length;a++)if(0===t.indexOf(n[a].start)&&(!n[a].end||t.lastIndexOf(n[a].end)==t.length-n[a].end.length))return n[a]}function a(t,n,a){var r,s,d;for(r=e(),d=0;d<r.length;d++)if(s=r[d],s.end&&t.substr(n-s.end.length-a,s.end.length)==s.end)return s}function r(e){function r(){i=i.splitText(f),i.splitText(l-f-h),i.deleteData(0,m.start.length),i.deleteData(i.data.length-m.end.length,m.end.length)}var s,d,o,i,l,f,g,c,m,h,u;return s=t.selection,d=t.dom,s.isCollapsed()&&(o=s.getRng(!0),i=o.startContainer,l=o.startOffset,g=i.data,h=e?1:0,3==i.nodeType&&(m=a(g,l,h),m&&(f=Math.max(0,l-h),f=g.lastIndexOf(m.start,f-m.end.length-1),-1!==f&&(c=d.createRng(),c.setStart(i,f),c.setEnd(i,l-h),m=n(c.toString()),m&&m.end&&!(i.data.length<=m.start.length+m.end.length)))))?(u=t.formatter.get(m.format),u&&u[0].inline?(r(),t.formatter.apply(m.format,{},i),i):void 0):void 0}function s(){var e,a,r,s,d,o,i,l,f,g,c;if(e=t.selection,a=t.dom,e.isCollapsed()&&(i=a.getParent(e.getStart(),"p"))){for(f=new tinymce.dom.TreeWalker(i,i);d=f.next();)if(3==d.nodeType){s=d;break}if(s){if(l=n(s.data),!l)return;if(g=e.getRng(!0),r=g.startContainer,c=g.startOffset,s==r&&(c=Math.max(0,c-l.start.length)),tinymce.trim(s.data).length==l.start.length)return;l.format&&(o=t.formatter.get(l.format),o&&o[0].block&&(s.deleteData(0,l.start.length),t.formatter.apply(l.format,{},s),g.setStart(r,c),g.collapse(!0),e.setRng(g))),l.cmd&&t.undoManager.transact(function(){s.deleteData(0,l.start.length),t.execCommand(l.cmd)})}}}function d(){var e,n;n=r(),n&&(e=t.dom.createRng(),e.setStart(n,n.data.length),e.setEnd(n,n.data.length),t.selection.setRng(e)),s()}function o(){var e,n,a,s,d;e=r(!0),e&&(d=t.dom,n=e.data.slice(-1),/[\u00a0 ]/.test(n)&&(e.deleteData(e.data.length-1,1),a=d.doc.createTextNode(n),e.nextSibling?d.insertAfter(a,e.nextSibling):e.parentNode.appendChild(a),s=d.createRng(),s.setStart(a,1),s.setEnd(a,1),t.selection.setRng(s)))}var i,l=!0;i=t.settings.textpattern_patterns||[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],t.on("keydown",function(t){13!=t.keyCode||tinymce.util.VK.modifierPressed(t)||d()},!0),t.on("keyup",function(t){32!=t.keyCode||tinymce.util.VK.modifierPressed(t)||o()}),this.getPatterns=e,this.setPatterns=function(t){i=t,l=!0}});

View File

@@ -0,0 +1,135 @@
.mce-visualblocks p {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
padding-top: 10px;
border: 1px dashed #BBB;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks hgroup {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks figcaption {
border: 1px dashed #BBB;
}
.mce-visualblocks ul {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)
}
.mce-visualblocks ol {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("visualblocks",function(e,s){function o(){var s=this;s.active(a),e.on("VisualBlocks",function(){s.active(e.dom.hasClass(e.getBody(),"mce-visualblocks"))})}var l,t,a;window.NodeList&&(e.addCommand("mceVisualBlocks",function(){var o,c=e.dom;l||(l=c.uniqueId(),o=c.create("link",{id:l,rel:"stylesheet",href:s+"/css/visualblocks.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(o)),e.on("PreviewFormats AfterPreviewFormats",function(s){a&&c.toggleClass(e.getBody(),"mce-visualblocks","afterpreviewformats"==s.type)}),c.toggleClass(e.getBody(),"mce-visualblocks"),a=e.dom.hasClass(e.getBody(),"mce-visualblocks"),t&&t.active(c.hasClass(e.getBody(),"mce-visualblocks")),e.fire("VisualBlocks")}),e.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o,selectable:!0,context:"view",prependToContext:!0}),e.on("init",function(){e.settings.visualblocks_default_state&&e.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),e.on("remove",function(){e.dom.removeClass(e.getBody(),"mce-visualblocks")}))});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("visualchars",function(e){function a(a){var t,s,i,r,c,d,l=e.getBody(),m=e.selection;if(n=!n,o.state=n,e.fire("VisualChars",{state:n}),a&&(d=m.getBookmark()),n)for(s=[],tinymce.walk(l,function(e){3==e.nodeType&&e.nodeValue&&-1!=e.nodeValue.indexOf(" ")&&s.push(e)},"childNodes"),i=0;i<s.length;i++){for(r=s[i].nodeValue,r=r.replace(/(\u00a0)/g,'<span data-mce-bogus="1" class="mce-nbsp">$1</span>'),c=e.dom.create("div",null,r);t=c.lastChild;)e.dom.insertAfter(t,s[i]);e.dom.remove(s[i])}else for(s=e.dom.select("span.mce-nbsp",l),i=s.length-1;i>=0;i--)e.dom.remove(s[i],1);m.moveToBookmark(d)}function t(){var a=this;e.on("VisualChars",function(e){a.active(e.state)})}var n,o=this;e.addCommand("mceVisualChars",a),e.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:t}),e.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:t,selectable:!0,context:"view",prependToContext:!0}),e.on("beforegetcontent",function(e){n&&"raw"!=e.format&&!e.draft&&(n=!0,a(!1))})});

View File

@@ -0,0 +1 @@
tinymce.PluginManager.add("wordcount",function(e){function t(){e.theme.panel.find("#wordcount").text(["Words: {0}",a.getCount()])}var n,o,a=this;n=e.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g),o=e.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),e.on("init",function(){var n=e.theme.panel&&e.theme.panel.find("#statusbar")[0];n&&window.setTimeout(function(){n.insert({type:"label",name:"wordcount",text:["Words: {0}",a.getCount()],classes:"wordcount",disabled:e.settings.readonly},0),e.on("setcontent beforeaddundo",t),e.on("keyup",function(e){32==e.keyCode&&t()})},0)}),a.getCount=function(){var t=e.getContent({format:"raw"}),a=0;if(t){t=t.replace(/\.\.\./g," "),t=t.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," "),t=t.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," "),t=t.replace(o,"");var r=t.match(n);r&&(a=r.length)}return a}});

File diff suppressed because one or more lines are too long

View File

@@ -135,12 +135,47 @@
<Content Include="Scripts\langs\zh_TW.js" />
<Content Include="Scripts\license.txt" />
<Content Include="Scripts\orchard-tinymce.js" />
<Content Include="Scripts\plugins\advlist\plugin.min.js" />
<Content Include="Scripts\plugins\anchor\plugin.min.js" />
<Content Include="Scripts\plugins\autolink\plugin.min.js" />
<Content Include="Scripts\plugins\autoresize\plugin.min.js" />
<Content Include="Scripts\plugins\autosave\plugin.min.js" />
<Content Include="Scripts\plugins\bbcode\plugin.min.js" />
<Content Include="Scripts\plugins\charmap\plugin.min.js" />
<Content Include="Scripts\plugins\code\plugin.min.js" />
<Content Include="Scripts\plugins\colorpicker\plugin.min.js" />
<Content Include="Scripts\plugins\contextmenu\plugin.min.js" />
<Content Include="Scripts\plugins\directionality\plugin.min.js" />
<Content Include="Scripts\plugins\emoticons\img\smiley-cool.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-cry.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-embarassed.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-foot-in-mouth.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-frown.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-innocent.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-kiss.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-laughing.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-money-mouth.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-sealed.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-smile.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-surprised.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-tongue-out.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-undecided.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-wink.gif" />
<Content Include="Scripts\plugins\emoticons\img\smiley-yell.gif" />
<Content Include="Scripts\plugins\emoticons\plugin.min.js" />
<Content Include="Scripts\plugins\example\dialog.html" />
<Content Include="Scripts\plugins\example\plugin.min.js" />
<Content Include="Scripts\plugins\example_dependency\plugin.min.js" />
<Content Include="Scripts\plugins\fullpage\plugin.min.js" />
<Content Include="Scripts\plugins\fullscreen\plugin.min.js" />
<Content Include="Scripts\plugins\hr\plugin.min.js" />
<Content Include="Scripts\plugins\image\plugin.min.js" />
<Content Include="Scripts\plugins\importcss\plugin.min.js" />
<Content Include="Scripts\plugins\insertdatetime\plugin.min.js" />
<Content Include="Scripts\plugins\layer\plugin.min.js" />
<Content Include="Scripts\plugins\legacyoutput\plugin.min.js" />
<Content Include="Scripts\plugins\link\plugin.min.js" />
<Content Include="Scripts\plugins\lists\plugin.min.js" />
<Content Include="Scripts\plugins\medialibrary\img\picture_add.png" />
<Content Include="Scripts\plugins\medialibrary\plugin.js" />
<Content Include="Scripts\plugins\medialibrary\plugin.min.js">
@@ -151,7 +186,26 @@
<Content Include="Scripts\plugins\mediapicker\plugin.min.js">
<DependentUpon>plugin.js</DependentUpon>
</Content>
<Content Include="Scripts\plugins\media\moxieplayer.swf" />
<Content Include="Scripts\plugins\media\plugin.min.js" />
<Content Include="Scripts\plugins\nonbreaking\plugin.min.js" />
<Content Include="Scripts\plugins\noneditable\plugin.min.js" />
<Content Include="Scripts\plugins\pagebreak\plugin.min.js" />
<Content Include="Scripts\plugins\paste\plugin.min.js" />
<Content Include="Scripts\plugins\preview\plugin.min.js" />
<Content Include="Scripts\plugins\print\plugin.min.js" />
<Content Include="Scripts\plugins\save\plugin.min.js" />
<Content Include="Scripts\plugins\searchreplace\plugin.min.js" />
<Content Include="Scripts\plugins\spellchecker\plugin.min.js" />
<Content Include="Scripts\plugins\tabfocus\plugin.min.js" />
<Content Include="Scripts\plugins\table\plugin.min.js" />
<Content Include="Scripts\plugins\template\plugin.min.js" />
<Content Include="Scripts\plugins\textcolor\plugin.min.js" />
<Content Include="Scripts\plugins\textpattern\plugin.min.js" />
<Content Include="Scripts\plugins\visualblocks\css\visualblocks.css" />
<Content Include="Scripts\plugins\visualblocks\plugin.min.js" />
<Content Include="Scripts\plugins\visualchars\plugin.min.js" />
<Content Include="Scripts\plugins\wordcount\plugin.min.js" />
<Content Include="Scripts\skins\orchardlightgray\content.inline.min.css" />
<Content Include="Scripts\skins\orchardlightgray\content.min.css" />
<Content Include="Scripts\skins\orchardlightgray\fonts\tinymce-small.dev.svg" />

View File

@@ -31,6 +31,7 @@ namespace Orchard.ContentManagement {
private readonly IRepository<ContentItemVersionRecord> _contentItemVersionRepository;
private readonly IContentDefinitionManager _contentDefinitionManager;
private readonly ICacheManager _cacheManager;
private readonly Func<IContentManagerSession> _contentManagerSession;
private readonly Lazy<IContentDisplay> _contentDisplay;
private readonly Lazy<ISessionLocator> _sessionLocator;
private readonly Lazy<IEnumerable<IContentHandler>> _handlers;
@@ -49,6 +50,7 @@ namespace Orchard.ContentManagement {
IRepository<ContentItemVersionRecord> contentItemVersionRepository,
IContentDefinitionManager contentDefinitionManager,
ICacheManager cacheManager,
Func<IContentManagerSession> contentManagerSession,
Lazy<IContentDisplay> contentDisplay,
Lazy<ISessionLocator> sessionLocator,
Lazy<IEnumerable<IContentHandler>> handlers,
@@ -62,6 +64,7 @@ namespace Orchard.ContentManagement {
_contentItemVersionRepository = contentItemVersionRepository;
_contentDefinitionManager = contentDefinitionManager;
_cacheManager = cacheManager;
_contentManagerSession = contentManagerSession;
_identityResolverSelectors = identityResolverSelectors;
_sqlStatementProviders = sqlStatementProviders;
_shellSettings = shellSettings;
@@ -129,14 +132,29 @@ namespace Orchard.ContentManagement {
}
public virtual ContentItem Get(int id, VersionOptions options, QueryHints hints) {
var session = _contentManagerSession();
ContentItem contentItem;
ContentItemVersionRecord versionRecord = null;
// obtain the root records based on version options
if (options.VersionRecordId != 0) {
// short-circuit if item held in session
if (session.RecallVersionRecordId(options.VersionRecordId, out contentItem)) {
return contentItem;
}
versionRecord = _contentItemVersionRepository.Get(options.VersionRecordId);
}
else if (session.RecallContentRecordId(id, out contentItem)) {
// try to reload a previously loaded published content item
if (options.IsPublished) {
return contentItem;
}
versionRecord = contentItem.VersionRecord;
}
else {
// do a query to load the records in case Get is called directly
var contentItemVersionRecords = GetManyImplementation(hints,
@@ -189,10 +207,21 @@ namespace Orchard.ContentManagement {
}
}
// return item if obtained earlier in session
if (session.RecallVersionRecordId(versionRecord.Id, out contentItem)) {
if (options.IsDraftRequired && versionRecord.Published) {
return BuildNewVersion(contentItem);
}
return contentItem;
}
// allocate instance and set record property
contentItem = New(versionRecord.ContentItemRecord.ContentType.Name);
contentItem.VersionRecord = versionRecord;
// store in session prior to loading to avoid some problems with simple circular dependencies
session.Store(contentItem);
// create a context with a new instance to load
var context = new LoadContentContext(contentItem);
@@ -620,8 +649,9 @@ namespace Orchard.ContentManagement {
}
public void Clear() {
//var session = _sessionLocator.Value.For(typeof(ContentItemRecord));
//session.Clear();
var session = _sessionLocator.Value.For(typeof(ContentItemRecord));
session.Clear();
_contentManagerSession().Clear();
}
public IContentQuery<ContentItem> Query() {

View File

@@ -0,0 +1,30 @@
using System.Collections.Generic;
namespace Orchard.ContentManagement {
public class DefaultContentManagerSession : IContentManagerSession {
private readonly IDictionary<int, ContentItem> _itemByVersionRecordId = new Dictionary<int, ContentItem>();
private readonly IDictionary<int, ContentItem> _publishedItemsByContentRecordId = new Dictionary<int, ContentItem>();
public void Store(ContentItem item) {
_itemByVersionRecordId.Add(item.VersionRecord.Id, item);
// is it the Published version ?
if (item.VersionRecord.Latest && item.VersionRecord.Published) {
_publishedItemsByContentRecordId[item.Id] = item;
}
}
public bool RecallVersionRecordId(int id, out ContentItem item) {
return _itemByVersionRecordId.TryGetValue(id, out item);
}
public bool RecallContentRecordId(int id, out ContentItem item) {
return _publishedItemsByContentRecordId.TryGetValue(id, out item);
}
public void Clear() {
_itemByVersionRecordId.Clear();
_publishedItemsByContentRecordId.Clear();
}
}
}

View File

@@ -1,6 +1,4 @@
using System;
namespace Orchard.ContentManagement {
[Obsolete]
namespace Orchard.ContentManagement {
public interface IContentManagerSession : IDependency {
void Store(ContentItem item);
bool RecallVersionRecordId(int id, out ContentItem item);

View File

@@ -277,6 +277,28 @@ namespace Orchard.Mvc.Html {
#endregion
#region Hint
public static IHtmlString Hint(this HtmlHelper htmlHelper, LocalizedString text) {
return Hint(htmlHelper, text, default(object));
}
public static IHtmlString Hint(this HtmlHelper htmlHelper, LocalizedString text, object htmlAttributes) {
return Hint(htmlHelper, text, htmlAttributes != null ? new RouteValueDictionary(htmlAttributes) : null);
}
public static IHtmlString Hint(this HtmlHelper htmlHelper, LocalizedString text, IDictionary<string, object> htmlAttributes) {
var tagBuilder = new TagBuilder("span") { InnerHtml = text.Text };
if (htmlAttributes != null) {
tagBuilder.MergeAttributes(htmlAttributes);
}
tagBuilder.AddCssClass("hint");
return new HtmlString(tagBuilder.ToString(TagRenderMode.Normal));
}
#endregion
#region BeginFormAntiForgeryPost
public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper) {
@@ -392,5 +414,55 @@ namespace Orchard.Mvc.Html {
}
#endregion
#region HtmlHelperFor
// Credit: Max Toro http://maxtoroq.github.io/2012/07/patterns-for-aspnet-mvc-plugins-viewmodels.html
public static HtmlHelper<TModel> HtmlHelperFor<TModel>(this HtmlHelper htmlHelper) {
return HtmlHelperFor(htmlHelper, default(TModel));
}
public static HtmlHelper<TModel> HtmlHelperFor<TModel>(this HtmlHelper htmlHelper, TModel model) {
return HtmlHelperFor(htmlHelper, model, null);
}
public static HtmlHelper<TModel> HtmlHelperFor<TModel>(this HtmlHelper htmlHelper, TModel model, string htmlFieldPrefix) {
var viewDataContainer = CreateViewDataContainer(htmlHelper.ViewData, model);
var templateInfo = viewDataContainer.ViewData.TemplateInfo;
if (!String.IsNullOrEmpty(htmlFieldPrefix))
templateInfo.HtmlFieldPrefix = templateInfo.GetFullHtmlFieldName(htmlFieldPrefix);
var viewContext = htmlHelper.ViewContext;
var newViewContext = new ViewContext(
viewContext.Controller.ControllerContext,
viewContext.View,
viewDataContainer.ViewData,
viewContext.TempData,
viewContext.Writer);
return new HtmlHelper<TModel>(newViewContext, viewDataContainer, htmlHelper.RouteCollection);
}
private static IViewDataContainer CreateViewDataContainer(ViewDataDictionary viewData, object model) {
var newViewData = new ViewDataDictionary(viewData) {
Model = model
};
newViewData.TemplateInfo = new TemplateInfo {
HtmlFieldPrefix = newViewData.TemplateInfo.HtmlFieldPrefix
};
return new ViewDataContainer {
ViewData = newViewData
};
}
private class ViewDataContainer : IViewDataContainer {
public ViewDataDictionary ViewData { get; set; }
}
#endregion
}
}

View File

@@ -384,6 +384,9 @@
<Compile Include="ContentManagement\DefaultContentManager.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\DefaultContentManagerSession.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\DefaultContentQuery.cs">
<SubType>Code</SubType>
</Compile>