Getting all the unit tests working again with the GUID to alias change, lots of little fixes everywhere.
This commit is contained in:
@@ -8,6 +8,7 @@ using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Logging;
|
||||
|
||||
namespace Umbraco.Core.IO
|
||||
{
|
||||
@@ -88,8 +89,15 @@ namespace Umbraco.Core.IO
|
||||
? _fs.GetExtension(Path).Substring(1).ToLowerInvariant()
|
||||
: "";
|
||||
Url = _fs.GetUrl(Path);
|
||||
Exists = _fs.FileExists(Path);
|
||||
if (Exists == false)
|
||||
{
|
||||
LogHelper.Warn<UmbracoMediaFile>("The media file doesn't exist: " + Path);
|
||||
}
|
||||
}
|
||||
|
||||
public bool Exists { get; private set; }
|
||||
|
||||
public string Filename { get; private set; }
|
||||
|
||||
public string Extension { get; private set; }
|
||||
@@ -110,7 +118,14 @@ namespace Umbraco.Core.IO
|
||||
{
|
||||
if (_length == null)
|
||||
{
|
||||
_length = _fs.GetSize(Path);
|
||||
if (Exists)
|
||||
{
|
||||
_length = _fs.GetSize(Path);
|
||||
}
|
||||
else
|
||||
{
|
||||
_length = -1;
|
||||
}
|
||||
}
|
||||
return _length.Value;
|
||||
}
|
||||
@@ -133,37 +148,52 @@ namespace Umbraco.Core.IO
|
||||
{
|
||||
if (_size == null)
|
||||
{
|
||||
EnsureFileSupportsResizing();
|
||||
|
||||
using (var fs = _fs.OpenFile(Path))
|
||||
if (_fs.FileExists(Path))
|
||||
{
|
||||
using (var image = Image.FromStream(fs))
|
||||
EnsureFileSupportsResizing();
|
||||
|
||||
using (var fs = _fs.OpenFile(Path))
|
||||
{
|
||||
var fileWidth = image.Width;
|
||||
var fileHeight = image.Height;
|
||||
_size = new Size(fileWidth, fileHeight);
|
||||
using (var image = Image.FromStream(fs))
|
||||
{
|
||||
var fileWidth = image.Width;
|
||||
var fileHeight = image.Height;
|
||||
_size = new Size(fileWidth, fileHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_size = new Size(-1, -1);
|
||||
}
|
||||
}
|
||||
return _size.Value;
|
||||
}
|
||||
|
||||
public string Resize(int width, int height)
|
||||
{
|
||||
EnsureFileSupportsResizing();
|
||||
if (Exists)
|
||||
{
|
||||
EnsureFileSupportsResizing();
|
||||
|
||||
var fileNameThumb = DoResize(width, height, 0, string.Empty);
|
||||
var fileNameThumb = DoResize(width, height, 0, string.Empty);
|
||||
|
||||
return _fs.GetUrl(fileNameThumb);
|
||||
return _fs.GetUrl(fileNameThumb);
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public string Resize(int maxWidthHeight, string fileNameAddition)
|
||||
{
|
||||
EnsureFileSupportsResizing();
|
||||
if (Exists)
|
||||
{
|
||||
EnsureFileSupportsResizing();
|
||||
|
||||
var fileNameThumb = DoResize(GetDimensions().Width, GetDimensions().Height, maxWidthHeight, fileNameAddition);
|
||||
var fileNameThumb = DoResize(GetDimensions().Width, GetDimensions().Height, maxWidthHeight, fileNameAddition);
|
||||
|
||||
return _fs.GetUrl(fileNameThumb);
|
||||
return _fs.GetUrl(fileNameThumb);
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
private string DoResize(int width, int height, int maxWidthHeight, string fileNameAddition)
|
||||
@@ -180,7 +210,7 @@ namespace Umbraco.Core.IO
|
||||
|
||||
return thumbnail.FileName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureFileSupportsResizing()
|
||||
|
||||
@@ -31,11 +31,8 @@ namespace Umbraco.Core.Services
|
||||
private readonly RepositoryFactory _repositoryFactory;
|
||||
private readonly IDatabaseUnitOfWorkProvider _uowProvider;
|
||||
private Dictionary<string, IContentType> _importedContentTypes;
|
||||
|
||||
//Support recursive locks because some of the methods that require locking call other methods that require locking.
|
||||
//for example, the Move method needs to be locked but this calls the Save method which also needs to be locked.
|
||||
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
|
||||
|
||||
|
||||
|
||||
public PackagingService(IContentService contentService, IContentTypeService contentTypeService, IMediaService mediaService, IDataTypeService dataTypeService, IFileService fileService, RepositoryFactory repositoryFactory, IDatabaseUnitOfWorkProvider uowProvider)
|
||||
{
|
||||
_contentService = contentService;
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Umbraco.Belle.Tests
|
||||
|
||||
var a = JsonConvert.DeserializeObject<JArray>(@"[
|
||||
{
|
||||
id: '0EEBB7CE-51BA-4F6B-9D9C-78BB3314366C',
|
||||
alias: 'Test.Test1',
|
||||
name: 'Test 1',
|
||||
editor: {
|
||||
view: '~/App_Plugins/MyPackage/PropertyEditors/MyEditor.html',
|
||||
|
||||
@@ -1,120 +0,0 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Xml;
|
||||
using NUnit.Framework;
|
||||
using Rhino.Mocks;
|
||||
using Rhino.Mocks.Interfaces;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Strings;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using umbraco.cms.businesslogic.datatype;
|
||||
using umbraco.interfaces;
|
||||
|
||||
namespace Umbraco.Tests.Models
|
||||
{
|
||||
[TestFixture]
|
||||
public class DataValueSetterTests : BaseUmbracoApplicationTest
|
||||
{
|
||||
protected override void FreezeResolution()
|
||||
{
|
||||
ShortStringHelperResolver.Current = new ShortStringHelperResolver(new DefaultShortStringHelper());
|
||||
PropertyEditorResolver.Current = new PropertyEditorResolver(
|
||||
() => PluginManager.Current.ResolvePropertyEditors());
|
||||
base.FreezeResolution();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void LoadValueFromDatabase_Is_Not_Called_When_SetValue_Is_Used()
|
||||
{
|
||||
// Arrange
|
||||
var baseDataType = MockRepository.GenerateStub<BaseDataType>();
|
||||
var dataTypeData = MockRepository.GenerateMock<DefaultData>(baseDataType);
|
||||
dataTypeData.Stub(x => x.Value).CallOriginalMethod(OriginalCallOptions.NoExpectation);
|
||||
|
||||
// Act
|
||||
|
||||
((IDataValueSetter)dataTypeData).SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString());
|
||||
var val = dataTypeData.Value;
|
||||
|
||||
// Assert
|
||||
|
||||
dataTypeData.AssertWasNotCalled(data => data.LoadValueFromDatabase());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void LoadValueFromDatabase_Is_Called_When_SetValue_Is_Not_Used()
|
||||
{
|
||||
// Arrange
|
||||
var baseDataType = MockRepository.GenerateStub<BaseDataType>();
|
||||
var dataTypeData = MockRepository.GenerateMock<DefaultData>(baseDataType);
|
||||
dataTypeData
|
||||
.Stub(data => data.LoadValueFromDatabase()).WhenCalled(invocation => Debug.WriteLine("asdf"));
|
||||
dataTypeData.Stub(x => x.Value).CallOriginalMethod(OriginalCallOptions.NoExpectation);
|
||||
|
||||
// Act
|
||||
|
||||
var val = dataTypeData.Value;
|
||||
|
||||
// Assert
|
||||
|
||||
dataTypeData.AssertWasCalled(data => data.LoadValueFromDatabase());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SetValue_Is_Called_When_Executing_ToXml_On_A_Property_With_DataType_That_Implements_IDataValueSetter()
|
||||
{
|
||||
// Arrange
|
||||
var propEdId = Guid.NewGuid();
|
||||
|
||||
var dataTypeData = MockRepository.GenerateMock<IData, IDataValueSetter>();
|
||||
|
||||
dataTypeData
|
||||
.Stub(data => data.ToXMl(Arg<XmlDocument>.Is.Anything))
|
||||
.Return(null) // you have to call Return() even though we're about to override it
|
||||
.WhenCalled(invocation =>
|
||||
{
|
||||
var xmlDoc = (XmlDocument) invocation.Arguments[0];
|
||||
invocation.ReturnValue = xmlDoc.CreateElement("test");
|
||||
});
|
||||
|
||||
var dataType = MockRepository.GenerateStub<IDataType>();
|
||||
dataType.Stub(type => type.Data).Return(dataTypeData);
|
||||
|
||||
var dataTypeSvc = MockRepository.GenerateStub<IDataTypeService>();
|
||||
dataTypeSvc.Stub(service => service.GetDataTypeById(Arg<Guid>.Is.Anything)).Return(dataType);
|
||||
|
||||
var property = new Property(
|
||||
1234,
|
||||
Guid.NewGuid(),
|
||||
new PropertyType("test", DataTypeDatabaseType.Nvarchar)
|
||||
{
|
||||
Alias = "test"
|
||||
}, "Hello world");
|
||||
|
||||
// Act
|
||||
|
||||
var xml = property.ToXml(dataTypeSvc);
|
||||
|
||||
// Assert
|
||||
|
||||
((IDataValueSetter)dataTypeData).AssertWasCalled(setter => setter.SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString()));
|
||||
}
|
||||
|
||||
[TestCase(DataTypeDatabaseType.Nvarchar)]
|
||||
[TestCase(DataTypeDatabaseType.Date)]
|
||||
[TestCase(DataTypeDatabaseType.Integer)]
|
||||
[TestCase(DataTypeDatabaseType.Ntext)]
|
||||
public void DefaultData_SetValue_Ensures_Empty_String_When_Null_Value_Any_Data_Type(DataTypeDatabaseType type)
|
||||
{
|
||||
var defaultData = new DefaultData(MockRepository.GenerateMock<BaseDataType>());
|
||||
|
||||
((IDataValueSetter)defaultData).SetValue(null, type.ToString());
|
||||
|
||||
Assert.AreEqual(string.Empty, defaultData.Value);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ namespace Umbraco.Tests.Models.Mapping
|
||||
[TestFixture]
|
||||
public class ContentWebModelMappingTests : BaseDatabaseFactoryTest
|
||||
{
|
||||
[PropertyEditor("00000000-0000-0000-0000-000000000000", "Test", "~/Test.html")]
|
||||
[PropertyEditor("Test.Test", "Test", "~/Test.html")]
|
||||
public class TestPropertyEditor : PropertyEditor
|
||||
{
|
||||
|
||||
@@ -123,8 +123,8 @@ namespace Umbraco.Tests.Models.Mapping
|
||||
var idSeed = 1;
|
||||
var contentType = MockedContentTypes.CreateSimpleContentType();
|
||||
//add non-grouped properties
|
||||
contentType.AddPropertyType(new PropertyType("test", DataTypeDatabaseType.Ntext) { Alias = "nonGrouped1", Name = "Non Grouped 1", Description = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -88 });
|
||||
contentType.AddPropertyType(new PropertyType("test", DataTypeDatabaseType.Ntext) { Alias = "nonGrouped2", Name = "Non Grouped 2", Description = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -88 });
|
||||
contentType.AddPropertyType(new PropertyType(Constants.PropertyEditors.TextboxAlias, DataTypeDatabaseType.Ntext) { Alias = "nonGrouped1", Name = "Non Grouped 1", Description = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -88 });
|
||||
contentType.AddPropertyType(new PropertyType(Constants.PropertyEditors.TextboxAlias, DataTypeDatabaseType.Ntext) { Alias = "nonGrouped2", Name = "Non Grouped 2", Description = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -88 });
|
||||
//set ids or it wont work
|
||||
contentType.Id = idSeed;
|
||||
foreach (var p in contentType.PropertyTypes)
|
||||
@@ -186,7 +186,7 @@ namespace Umbraco.Tests.Models.Mapping
|
||||
{
|
||||
Assert.AreEqual(content.Id, result.Id);
|
||||
Assert.AreEqual(0, result.Owner.UserId);
|
||||
Assert.AreEqual("admin", result.Owner.Name);
|
||||
Assert.AreEqual("Administrator", result.Owner.Name);
|
||||
Assert.AreEqual(content.ParentId, result.ParentId);
|
||||
Assert.AreEqual(content.UpdateDate, result.UpdateDate);
|
||||
Assert.AreEqual(content.CreateDate, result.CreateDate);
|
||||
|
||||
@@ -60,16 +60,16 @@ namespace Umbraco.Tests.Persistence.Mappers
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Map_DataTypeControlId_Property()
|
||||
public void Can_Map_PropertyEditorAlias_Property()
|
||||
{
|
||||
// Arrange
|
||||
SqlSyntaxContext.SqlSyntaxProvider = SqlCeSyntax.Provider;
|
||||
|
||||
// Act
|
||||
string column = new PropertyTypeMapper().Map("DataTypeId");
|
||||
string column = new PropertyTypeMapper().Map("PropertyEditorAlias");
|
||||
|
||||
// Assert
|
||||
Assert.That(column, Is.EqualTo("[cmsDataType].[controlId]"));
|
||||
Assert.That(column, Is.EqualTo("[cmsDataType].[propertyEditorAlias]"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -282,7 +282,7 @@ namespace Umbraco.Tests
|
||||
public void Resolves_Attributed_Trees()
|
||||
{
|
||||
var trees = PluginManager.Current.ResolveAttributedTrees();
|
||||
Assert.AreEqual(27, trees.Count());
|
||||
Assert.AreEqual(20, trees.Count());
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -81,9 +81,9 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
};
|
||||
|
||||
var contentCollection = new PropertyTypeCollection();
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Ntext) { Alias = "title", Name = "Title", Description = "", HelpText = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -88 });
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Ntext) { Alias = "bodyText", Name = "Body Text", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -87 });
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Ntext) { Alias = "author", Name = "Author", Description = "Name of the author", HelpText = "", Mandatory = false, SortOrder = 3, DataTypeDefinitionId = -88 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.TextboxAlias, DataTypeDatabaseType.Ntext) { Alias = "title", Name = "Title", Description = "", HelpText = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -88 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.TextboxAlias, DataTypeDatabaseType.Ntext) { Alias = "bodyText", Name = "Body Text", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -87 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.TextboxAlias, DataTypeDatabaseType.Ntext) { Alias = "author", Name = "Author", Description = "Name of the author", HelpText = "", Mandatory = false, SortOrder = 3, DataTypeDefinitionId = -88 });
|
||||
|
||||
contentType.PropertyGroups.Add(new PropertyGroup(contentCollection) { Name = "Content", SortOrder = 1 });
|
||||
|
||||
@@ -266,11 +266,11 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
};
|
||||
|
||||
var contentCollection = new PropertyTypeCollection();
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Nvarchar) { Alias = Constants.Conventions.Media.File, Name = "File", Description = "", HelpText = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Width, Name = "Width", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Height, Name = "Height", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Bytes, Name = "Bytes", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType("test", DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Extension, Name = "File Extension", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.UploadFieldAlias, DataTypeDatabaseType.Nvarchar) { Alias = Constants.Conventions.Media.File, Name = "File", Description = "", HelpText = "", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.NoEditAlias, DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Width, Name = "Width", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.NoEditAlias, DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Height, Name = "Height", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.NoEditAlias, DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Bytes, Name = "Bytes", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
contentCollection.Add(new PropertyType(Constants.PropertyEditors.NoEditAlias, DataTypeDatabaseType.Integer) { Alias = Constants.Conventions.Media.Extension, Name = "File Extension", Description = "", HelpText = "", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -90 });
|
||||
|
||||
mediaType.PropertyGroups.Add(new PropertyGroup(contentCollection) { Name = "Media", SortOrder = 1 });
|
||||
|
||||
|
||||
@@ -238,7 +238,6 @@
|
||||
<Compile Include="CoreXml\FrameworkXmlTests.cs" />
|
||||
<Compile Include="Integration\CreateContent.cs" />
|
||||
<Compile Include="Models\ContentExtensionsTests.cs" />
|
||||
<Compile Include="Models\DataValueSetterTests.cs" />
|
||||
<Compile Include="Models\UserExtensionsTests.cs" />
|
||||
<Compile Include="Mvc\MergeParentContextViewDataAttributeTests.cs" />
|
||||
<Compile Include="Mvc\ViewDataDictionaryExtensionTests.cs" />
|
||||
|
||||
@@ -3,7 +3,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.UI.App_Plugins.MyPackage.PropertyEditors
|
||||
{
|
||||
[PropertyEditor("E96E24E5-7124-4FA8-A7D7-C3D3695E100D", "Postal Code",
|
||||
[PropertyEditor("MyPackage.PostalCode", "Postal Code",
|
||||
"~/App_Plugins/MyPackage/PropertyEditors/Views/PostcodeEditor.html")]
|
||||
public class PostcodePropertyEditor : PropertyEditor
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.UI.App_Plugins.MyPackage.PropertyEditors
|
||||
{
|
||||
[PropertyEditor("AD056473-492B-47F8-9613-5A4936666C67", "Server Info")]
|
||||
[PropertyEditor("MyPackage.ServerInfo", "Server Info")]
|
||||
public class ServerInfoPropertyEditor : PropertyEditor
|
||||
{
|
||||
//cache the URL since these values get called numerous times.
|
||||
|
||||
@@ -879,13 +879,6 @@
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xml\index.html" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xml\xml.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\index.html" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\Test\index.html" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\Test\testBase.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\Test\testEmptySequenceKeyword.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\Test\testMultiAttr.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\Test\testNamespaces.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\Test\testProcessingInstructions.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\Test\testQuotes.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Xquery\xquery.js" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Yaml\index.html" />
|
||||
<Content Include="Umbraco_Client\CodeMirror\Js\Mode\Yaml\yaml.js" />
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-git.css" type="text/css"/>
|
||||
<script src="http://code.jquery.com/jquery-latest.js"> </script>
|
||||
<script type="text/javascript" src="http://code.jquery.com/qunit/qunit-git.js"></script>
|
||||
|
||||
<script src="../../../lib/codemirror.js"></script>
|
||||
<script src="../xquery.js"></script>
|
||||
|
||||
<script type="text/javascript" src="testBase.js"></script>
|
||||
<script type="text/javascript" src="testMultiAttr.js"></script>
|
||||
<script type="text/javascript" src="testQuotes.js"></script>
|
||||
<script type="text/javascript" src="testEmptySequenceKeyword.js"></script>
|
||||
<script type="text/javascript" src="testProcessingInstructions.js"></script>
|
||||
<script type="text/javascript" src="testNamespaces.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="qunit-header">XQuery CodeMirror Mode</h1>
|
||||
<h2 id="qunit-banner"></h2>
|
||||
<h2 id="qunit-userAgent"></h2>
|
||||
<ol id="qunit-tests">
|
||||
</ol>
|
||||
<div id="sandbox" style="right:5000px; position:absolute; "></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,42 +0,0 @@
|
||||
$(document).ready(function(){
|
||||
module("testBase");
|
||||
test("eviltest", function() {
|
||||
expect(1);
|
||||
|
||||
var input = 'xquery version "1.0-ml";\
|
||||
(: this is\
|
||||
: a \
|
||||
"comment" :)\
|
||||
let $let := <x attr="value">"test"<func>function() $var {function()} {$var}</func></x>\
|
||||
let $joe:=1\
|
||||
return element element {\
|
||||
attribute attribute { 1 },\
|
||||
element test { 'a' }, \
|
||||
attribute foo { "bar" },\
|
||||
fn:doc()[ foo/@bar eq $let ],\
|
||||
//x } \
|
||||
\
|
||||
(: a more \'evil\' test :)\
|
||||
(: Modified Blakeley example (: with nested comment :) ... :)\
|
||||
declare private function local:declare() {()};\
|
||||
declare private function local:private() {()};\
|
||||
declare private function local:function() {()};\
|
||||
declare private function local:local() {()};\
|
||||
let $let := <let>let $let := "let"</let>\
|
||||
return element element {\
|
||||
attribute attribute { try { xdmp:version() } catch($e) { xdmp:log($e) } },\
|
||||
attribute fn:doc { "bar" castable as xs:string },\
|
||||
element text { text { "text" } },\
|
||||
fn:doc()[ child::eq/(@bar | attribute::attribute) eq $let ],\
|
||||
//fn:doc\
|
||||
}';
|
||||
var expected = '<span class="cm-keyword">xquery</span> <span class="cm-keyword">version</span> <span class="cm-string">"1.0-ml"</span><span class="cm-variable cm-def">;</span> <span class="cm-comment">(: this is : a "comment" :)</span> <span class="cm-keyword">let</span> <span class="cm-variable">$let</span> <span class="cm-keyword">:=</span> <span class="cm-tag"><x </span><span class="cm-attribute">attr</span>=<span class="cm-string">"value"</span><span class="cm-tag">></span><span class="cm-word">"test"</span><span class="cm-tag"><func></span><span class="cm-word">function()</span> <span class="cm-word">$var</span> {<span class="cm-keyword">function</span>()} {<span class="cm-variable">$var</span>}<span class="cm-tag"></func></x></span> <span class="cm-keyword">let</span> <span class="cm-variable">$joe</span><span class="cm-keyword">:=</span><span class="cm-atom">1</span> <span class="cm-keyword">return</span> <span class="cm-keyword">element</span> <span class="cm-word">element</span> { <span class="cm-keyword">attribute</span> <span class="cm-word">attribute</span> { <span class="cm-atom">1</span> }, <span class="cm-keyword">element</span> <span class="cm-word">test</span> { <span class="cm-string">\'a\'</span> }, <span class="cm-keyword">attribute</span> <span class="cm-word">foo</span> { <span class="cm-string">"bar"</span> }, <span class="cm-variable cm-def">fn:doc</span>()[ <span class="cm-word">foo</span><span class="cm-keyword">/</span><span class="cm-word">@bar</span> <span class="cm-keyword">eq</span> <span class="cm-variable">$let</span> ], <span class="cm-keyword">//</span><span class="cm-word">x</span> } <span class="cm-comment">(: a more \'evil\' test :)</span> <span class="cm-comment">(: Modified Blakeley example (: with nested comment :) ... :)</span> <span class="cm-keyword">declare</span> <span class="cm-keyword">private</span> <span class="cm-keyword">function</span> <span class="cm-variable cm-def">local:declare</span>() {()}<span class="cm-word">;</span> <span class="cm-keyword">declare</span> <span class="cm-keyword">private</span> <span class="cm-keyword">function</span> <span class="cm-variable cm-def">local:private</span>() {()}<span class="cm-word">;</span> <span class="cm-keyword">declare</span> <span class="cm-keyword">private</span> <span class="cm-keyword">function</span> <span class="cm-variable cm-def">local:function</span>() {()}<span class="cm-word">;</span> <span class="cm-keyword">declare</span> <span class="cm-keyword">private</span> <span class="cm-keyword">function</span> <span class="cm-variable cm-def">local:local</span>() {()}<span class="cm-word">;</span> <span class="cm-keyword">let</span> <span class="cm-variable">$let</span> <span class="cm-keyword">:=</span> <span class="cm-tag"><let></span><span class="cm-word">let</span> <span class="cm-word">$let</span> <span class="cm-word">:=</span> <span class="cm-word">"let"</span><span class="cm-tag"></let></span> <span class="cm-keyword">return</span> <span class="cm-keyword">element</span> <span class="cm-word">element</span> { <span class="cm-keyword">attribute</span> <span class="cm-word">attribute</span> { <span class="cm-keyword">try</span> { <span class="cm-variable cm-def">xdmp:version</span>() } <span class="cm-keyword">catch</span>(<span class="cm-variable">$e</span>) { <span class="cm-variable cm-def">xdmp:log</span>(<span class="cm-variable">$e</span>) } }, <span class="cm-keyword">attribute</span> <span class="cm-word">fn:doc</span> { <span class="cm-string">"bar"</span> <span class="cm-word">castable</span> <span class="cm-keyword">as</span> <span class="cm-atom">xs:string</span> }, <span class="cm-keyword">element</span> <span class="cm-word">text</span> { <span class="cm-keyword">text</span> { <span class="cm-string">"text"</span> } }, <span class="cm-variable cm-def">fn:doc</span>()[ <span class="cm-qualifier">child::</span><span class="cm-word">eq</span><span class="cm-keyword">/</span>(<span class="cm-word">@bar</span> <span class="cm-keyword">|</span> <span class="cm-qualifier">attribute::</span><span class="cm-word">attribute</span>) <span class="cm-keyword">eq</span> <span class="cm-variable">$let</span> ], <span class="cm-keyword">//</span><span class="cm-word">fn:doc</span> }';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
});
|
||||
@@ -1,16 +0,0 @@
|
||||
$(document).ready(function(){
|
||||
module("testEmptySequenceKeyword");
|
||||
test("testEmptySequenceKeyword", function() {
|
||||
expect(1);
|
||||
|
||||
var input = '"foo" instance of empty-sequence()';
|
||||
var expected = '<span class="cm-string">"foo"</span> <span class="cm-keyword">instance</span> <span class="cm-keyword">of</span> <span class="cm-keyword">empty-sequence</span>()';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
});
|
||||
@@ -1,16 +0,0 @@
|
||||
$(document).ready(function(){
|
||||
module("testMultiAttr");
|
||||
test("test1", function() {
|
||||
expect(1);
|
||||
|
||||
var expected = '<span class="cm-tag"><p </span><span class="cm-attribute">a1</span>=<span class="cm-string">"foo"</span> <span class="cm-attribute">a2</span>=<span class="cm-string">"bar"</span><span class="cm-tag">></span><span class="cm-word">hello</span> <span class="cm-word">world</span><span class="cm-tag"></p></span>';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor"></textarea>');
|
||||
$("#editor").html('<p a1="foo" a2="bar">hello world</p>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
});
|
||||
@@ -1,91 +0,0 @@
|
||||
$(document).ready(function(){
|
||||
module("test namespaces");
|
||||
|
||||
// --------------------------------------------------------------------------------
|
||||
// this test is based on this:
|
||||
//http://mbrevoort.github.com/CodeMirror2/#!exprSeqTypes/PrologExpr/VariableProlog/ExternalVariablesWith/K2-ExternalVariablesWith-10.xq
|
||||
// --------------------------------------------------------------------------------
|
||||
test("test namespaced variable", function() {
|
||||
expect(1);
|
||||
|
||||
var input = 'declare namespace e = "http://example.com/ANamespace";\
|
||||
declare variable $e:exampleComThisVarIsNotRecognized as element(*) external;';
|
||||
|
||||
var expected = '<span class="cm-keyword">declare</span> <span class="cm-keyword">namespace</span> <span class="cm-word">e</span> <span class="cm-keyword">=</span> <span class="cm-string">"http://example.com/ANamespace"</span><span class="cm-word">;declare</span> <span class="cm-keyword">variable</span> <span class="cm-variable">$e:exampleComThisVarIsNotRecognized</span> <span class="cm-keyword">as</span> <span class="cm-keyword">element</span>(<span class="cm-keyword">*</span>) <span class="cm-word">external;</span>';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------------
|
||||
// this test is based on:
|
||||
// http://mbrevoort.github.com/CodeMirror2/#!Basics/EQNames/eqname-002.xq
|
||||
// --------------------------------------------------------------------------------
|
||||
test("test EQName variable", function() {
|
||||
expect(1);
|
||||
|
||||
var input = 'declare variable $"http://www.example.com/ns/my":var := 12;\
|
||||
<out>{$"http://www.example.com/ns/my":var}</out>';
|
||||
|
||||
var expected = '<span class="cm-keyword">declare</span> <span class="cm-keyword">variable</span> <span class="cm-variable">$"http://www.example.com/ns/my":var</span> <span class="cm-keyword">:=</span> <span class="cm-atom">12</span><span class="cm-word">;</span><span class="cm-tag"><out></span>{<span class="cm-variable">$"http://www.example.com/ns/my":var</span>}<span class="cm-tag"></out></span>';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
|
||||
// --------------------------------------------------------------------------------
|
||||
// this test is based on:
|
||||
// http://mbrevoort.github.com/CodeMirror2/#!Basics/EQNames/eqname-003.xq
|
||||
// --------------------------------------------------------------------------------
|
||||
test("test EQName function", function() {
|
||||
expect(1);
|
||||
|
||||
var input = 'declare function "http://www.example.com/ns/my":fn ($a as xs:integer) as xs:integer {\
|
||||
$a + 2\
|
||||
};\
|
||||
<out>{"http://www.example.com/ns/my":fn(12)}</out>';
|
||||
|
||||
var expected = '<span class="cm-keyword">declare</span> <span class="cm-keyword">function</span> <span class="cm-variable cm-def">"http://www.example.com/ns/my":fn</span> (<span class="cm-variable">$a</span> <span class="cm-keyword">as</span> <span class="cm-atom">xs:integer</span>) <span class="cm-keyword">as</span> <span class="cm-atom">xs:integer</span> { <span class="cm-variable">$a</span> <span class="cm-keyword">+</span> <span class="cm-atom">2</span>}<span class="cm-word">;</span><span class="cm-tag"><out></span>{<span class="cm-variable cm-def">"http://www.example.com/ns/my":fn</span>(<span class="cm-atom">12</span>)}<span class="cm-tag"></out></span>';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
|
||||
// --------------------------------------------------------------------------------
|
||||
// this test is based on:
|
||||
// http://mbrevoort.github.com/CodeMirror2/#!Basics/EQNames/eqname-003.xq
|
||||
// --------------------------------------------------------------------------------
|
||||
test("test EQName function with single quotes", function() {
|
||||
expect(1);
|
||||
|
||||
var input = 'declare function \'http://www.example.com/ns/my\':fn ($a as xs:integer) as xs:integer {\
|
||||
$a + 2\
|
||||
};\
|
||||
<out>{\'http://www.example.com/ns/my\':fn(12)}</out>';
|
||||
|
||||
var expected = '<span class="cm-keyword">declare</span> <span class="cm-keyword">function</span> <span class="cm-variable cm-def">\'http://www.example.com/ns/my\':fn</span> (<span class="cm-variable">$a</span> <span class="cm-keyword">as</span> <span class="cm-atom">xs:integer</span>) <span class="cm-keyword">as</span> <span class="cm-atom">xs:integer</span> { <span class="cm-variable">$a</span> <span class="cm-keyword">+</span> <span class="cm-atom">2</span>}<span class="cm-word">;</span><span class="cm-tag"><out></span>{<span class="cm-variable cm-def">\'http://www.example.com/ns/my\':fn</span>(<span class="cm-atom">12</span>)}<span class="cm-tag"></out></span>';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
$(document).ready(function(){
|
||||
module("testProcessingInstructions");
|
||||
test("testProcessingInstructions", function() {
|
||||
expect(1);
|
||||
|
||||
var input = 'data(<?target content?>) instance of xs:string';
|
||||
var expected = '<span class="cm-variable cm-def">data</span>(<span class="cm-comment cm-meta"><?target content?></span>) <span class="cm-keyword">instance</span> <span class="cm-keyword">of</span> <span class="cm-atom">xs:string</span>';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
});
|
||||
@@ -1,19 +0,0 @@
|
||||
$(document).ready(function(){
|
||||
module("testQuoteEscape");
|
||||
test("testQuoteEscapeDouble", function() {
|
||||
expect(1);
|
||||
|
||||
var input = 'let $rootfolder := "c:\\builds\\winnt\\HEAD\\qa\\scripts\\"\
|
||||
let $keysfolder := concat($rootfolder, "keys\\")\
|
||||
return\
|
||||
$keysfolder';
|
||||
var expected = '<span class="cm-keyword">let</span> <span class="cm-variable">$rootfolder</span> <span class="cm-keyword">:=</span> <span class="cm-string">"c:\\builds\\winnt\\HEAD\\qa\\scripts\\"</span><span class="cm-keyword">let</span> <span class="cm-variable">$keysfolder</span> <span class="cm-keyword">:=</span> <span class="cm-variable cm-def">concat</span>(<span class="cm-variable">$rootfolder</span>, <span class="cm-string">"keys\\"</span>)<span class="cm-word">return$keysfolder</span>';
|
||||
|
||||
$("#sandbox").html('<textarea id="editor">' + input + '</textarea>');
|
||||
var editor = CodeMirror.fromTextArea($("#editor")[0]);
|
||||
var result = $(".CodeMirror-lines div div pre")[0].innerHTML;
|
||||
|
||||
equal(result, expected);
|
||||
$("#editor").html("");
|
||||
});
|
||||
});
|
||||
@@ -11,7 +11,7 @@ namespace Umbraco.Web.PropertyEditors
|
||||
/// as INT and we have logic in here to ensure it is formatted correctly including ensuring that the string value is published
|
||||
/// in cache and not the int ID.
|
||||
/// </remarks>
|
||||
[PropertyEditor(Constants.PropertyEditors.CheckBoxList, "Checkbox list", "checkboxlist")]
|
||||
[PropertyEditor(Constants.PropertyEditors.CheckBoxListAlias, "Checkbox list", "checkboxlist")]
|
||||
public class CheckBoxListPropertyEditor : PropertyEditor
|
||||
{
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.ColorPicker, "Color Picker", "colorpicker")]
|
||||
[PropertyEditor(Constants.PropertyEditors.ColorPickerAlias, "Color Picker", "colorpicker")]
|
||||
public class ColorPickerPropertyEditor : PropertyEditor
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -3,7 +3,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.ContentPicker, "Content Picker", "contentpicker")]
|
||||
[PropertyEditor(Constants.PropertyEditors.ContentPickerAlias, "Content Picker", "contentpicker")]
|
||||
public class ContentPickerPropertyEditor : PropertyEditor
|
||||
{
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.Date, "Date", "DATE", "datepicker")]
|
||||
[PropertyEditor(Constants.PropertyEditors.DateAlias, "Date", "DATE", "datepicker")]
|
||||
public class DatePropertyEditor : PropertyEditor
|
||||
{
|
||||
public DatePropertyEditor()
|
||||
|
||||
@@ -5,7 +5,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.DateTime, "Date/Time", "datepicker", ValueType = "DATETIME")]
|
||||
[PropertyEditor(Constants.PropertyEditors.DateTimeAlias, "Date/Time", "datepicker", ValueType = "DATETIME")]
|
||||
public class DateTimePropertyEditor : PropertyEditor
|
||||
{
|
||||
public DateTimePropertyEditor()
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Umbraco.Web.PropertyEditors
|
||||
/// Due to maintaining backwards compatibility this data type stores the value as a string which is a comma separated value of the
|
||||
/// ids of the individual items so we have logic in here to deal with that.
|
||||
/// </remarks>
|
||||
[PropertyEditor(Constants.PropertyEditors.DropDownListMultiple, "Dropdown list multiple", "dropdown")]
|
||||
[PropertyEditor(Constants.PropertyEditors.DropDownListMultipleAlias, "Dropdown list multiple", "dropdown")]
|
||||
public class DropDownMultiplePropertyEditor : DropDownMultipleWithKeysPropertyEditor
|
||||
{
|
||||
protected override ValueEditor CreateValueEditor()
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Umbraco.Web.PropertyEditors
|
||||
/// Due to maintaining backwards compatibility this data type stores the value as a string which is a comma separated value of the
|
||||
/// ids of the individual items so we have logic in here to deal with that.
|
||||
/// </remarks>
|
||||
[PropertyEditor(Constants.PropertyEditors.DropdownlistMultiplePublishKeys, "Dropdown list multiple, publish keys", "dropdown")]
|
||||
[PropertyEditor(Constants.PropertyEditors.DropdownlistMultiplePublishKeysAlias, "Dropdown list multiple, publish keys", "dropdown")]
|
||||
public class DropDownMultipleWithKeysPropertyEditor : DropDownPropertyEditor
|
||||
{
|
||||
protected override ValueEditor CreateValueEditor()
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Umbraco.Web.PropertyEditors
|
||||
/// as INT and we have logic in here to ensure it is formatted correctly including ensuring that the string value is published
|
||||
/// in cache and not the int ID.
|
||||
/// </remarks>
|
||||
[PropertyEditor(Constants.PropertyEditors.DropDownList, "Dropdown list", "dropdown", ValueType = "INT")]
|
||||
[PropertyEditor(Constants.PropertyEditors.DropDownListAlias, "Dropdown list", "dropdown", ValueType = "INT")]
|
||||
public class DropDownPropertyEditor : DropDownWithKeysPropertyEditor
|
||||
{
|
||||
|
||||
@@ -29,18 +29,4 @@ namespace Umbraco.Web.PropertyEditors
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A property editor to allow the individual selection of pre-defined items.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Due to remaining backwards compatible, this stores the id of the item in the database which is why it is marked
|
||||
/// as INT and we have logic in here to ensure it is formatted correctly including ensuring that the INT ID value is published
|
||||
/// in cache and not the string value.
|
||||
/// </remarks>
|
||||
[PropertyEditor(Constants.PropertyEditors.RadioButtonList, "Radio button list", "radiobuttons", ValueType = "INT")]
|
||||
public class RadioButtonsPropertyEditor : DropDownWithKeysPropertyEditor
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ namespace Umbraco.Web.PropertyEditors
|
||||
/// as INT and we have logic in here to ensure it is formatted correctly including ensuring that the INT ID value is published
|
||||
/// in cache and not the string value.
|
||||
/// </remarks>
|
||||
[PropertyEditor(Constants.PropertyEditors.DropdownlistPublishingKeys, "Dropdown list, publishing keys", "dropdown", ValueType = "INT")]
|
||||
[PropertyEditor(Constants.PropertyEditors.DropdownlistPublishingKeysAlias, "Dropdown list, publishing keys", "dropdown", ValueType = "INT")]
|
||||
public class DropDownWithKeysPropertyEditor : PropertyEditor
|
||||
{
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ using Umbraco.Core.Services;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.UploadField, "File upload", "fileupload")]
|
||||
[PropertyEditor(Constants.PropertyEditors.UploadFieldAlias, "File upload", "fileupload")]
|
||||
public class FileUploadPropertyEditor : PropertyEditor
|
||||
{
|
||||
/// <summary>
|
||||
@@ -122,7 +122,9 @@ namespace Umbraco.Web.PropertyEditors
|
||||
private static void UpdateContentProperty(XmlNode uploadFieldConfigNode, IContentBase content, string configPropertyAlias, object propertyValue)
|
||||
{
|
||||
var propertyNode = uploadFieldConfigNode.SelectSingleNode(configPropertyAlias);
|
||||
if (propertyNode != null && string.IsNullOrEmpty(propertyNode.FirstChild.Value) == false)
|
||||
if (propertyNode != null
|
||||
&& string.IsNullOrEmpty(propertyNode.FirstChild.Value) == false
|
||||
&& content.Properties.Contains(propertyNode.FirstChild.Value))
|
||||
{
|
||||
var property = content.Properties[propertyNode.FirstChild.Value];
|
||||
if (property != null)
|
||||
|
||||
@@ -3,7 +3,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.Integer, "Numeric", "integer")]
|
||||
[PropertyEditor(Constants.PropertyEditors.IntegerAlias, "Numeric", "integer")]
|
||||
public class IntegerPropertyEditor : PropertyEditor
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -5,7 +5,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.NoEdit, "Label", "readonlyvalue")]
|
||||
[PropertyEditor(Constants.PropertyEditors.NoEditAlias, "Label", "readonlyvalue")]
|
||||
public class LabelPropertyEditor : PropertyEditor
|
||||
{
|
||||
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.MediaPicker, "Media Picker", "mediapicker")]
|
||||
public class MediaPickerPropertyEditor : PropertyEditor
|
||||
{
|
||||
protected override ValueEditor CreateValueEditor()
|
||||
{
|
||||
//TODO: Need to add some validation to the ValueEditor to ensure that any media chosen actually exists!
|
||||
|
||||
return base.CreateValueEditor();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.MediaPickerAlias, "Media Picker", "mediapicker")]
|
||||
public class MediaPickerPropertyEditor : PropertyEditor
|
||||
{
|
||||
protected override ValueEditor CreateValueEditor()
|
||||
{
|
||||
//TODO: Need to add some validation to the ValueEditor to ensure that any media chosen actually exists!
|
||||
|
||||
return base.CreateValueEditor();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.MultipleTextstring, "Multiple Textbox", "multipletextbox", ValueType = "TEXT")]
|
||||
[PropertyEditor(Constants.PropertyEditors.MultipleTextstringAlias, "Multiple Textbox", "multipletextbox", ValueType = "TEXT")]
|
||||
public class MultipleTextStringPropertyEditor : PropertyEditor
|
||||
{
|
||||
protected override ValueEditor CreateValueEditor()
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
/// <summary>
|
||||
/// A property editor to allow the individual selection of pre-defined items.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Due to remaining backwards compatible, this stores the id of the item in the database which is why it is marked
|
||||
/// as INT and we have logic in here to ensure it is formatted correctly including ensuring that the INT ID value is published
|
||||
/// in cache and not the string value.
|
||||
/// </remarks>
|
||||
[PropertyEditor(Constants.PropertyEditors.RadioButtonListAlias, "Radio button list", "radiobuttons", ValueType = "INT")]
|
||||
public class RadioButtonsPropertyEditor : DropDownWithKeysPropertyEditor
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.TinyMCEv3, "Rich Text Editor", "rte")]
|
||||
[PropertyEditor(Constants.PropertyEditors.TinyMCEv3Alias, "Rich Text Editor", "rte")]
|
||||
public class RichTextPropertyEditor : PropertyEditor
|
||||
{
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.TextboxMultiple, "Textarea", "textarea")]
|
||||
[PropertyEditor(Constants.PropertyEditors.TextboxMultipleAlias, "Textarea", "textarea")]
|
||||
public class TextAreaPropertyEditor : PropertyEditor
|
||||
{
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ using Umbraco.Core.Services;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.Textbox, "Textbox", "textbox")]
|
||||
[PropertyEditor(Constants.PropertyEditors.TextboxAlias, "Textbox", "textbox")]
|
||||
public class TextboxPropertyEditor : PropertyEditor
|
||||
{
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Umbraco.Core.PropertyEditors;
|
||||
|
||||
namespace Umbraco.Web.PropertyEditors
|
||||
{
|
||||
[PropertyEditor(Constants.PropertyEditors.TrueFalse, "True/False", "boolean")]
|
||||
[PropertyEditor(Constants.PropertyEditors.TrueFalseAlias, "True/False", "boolean")]
|
||||
public class TrueFalsePropertyEditor : PropertyEditor
|
||||
{
|
||||
}
|
||||
|
||||
@@ -327,10 +327,11 @@
|
||||
<Compile Include="PropertyEditors\DateTimeValidator.cs" />
|
||||
<Compile Include="PropertyEditors\DropDownMultiplePropertyEditor.cs" />
|
||||
<Compile Include="PropertyEditors\IntegerPropertyEditor.cs" />
|
||||
<Compile Include="PropertyEditors\MediaPicker.cs" />
|
||||
<Compile Include="PropertyEditors\MediaPickerPropertyEditor.cs" />
|
||||
<Compile Include="PropertyEditors\MultipleTextStringPropertyEditor.cs" />
|
||||
<Compile Include="PropertyEditors\PublishValuesMultipleValueEditor.cs" />
|
||||
<Compile Include="PropertyEditors\DropDownMultipleWithKeysPropertyEditor.cs" />
|
||||
<Compile Include="PropertyEditors\RadioButtonsPropertyEditor.cs" />
|
||||
<Compile Include="PropertyEditors\ValueListPreValueEditor.cs" />
|
||||
<Compile Include="PropertyEditors\DropDownPropertyEditor.cs" />
|
||||
<Compile Include="PropertyEditors\PublishValueValueEditor.cs" />
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace umbraco.cms.businesslogic.datatype
|
||||
/// Default implementation of the <c>IData</c> interface that stores data inside the Umbraco database.
|
||||
/// </summary>
|
||||
[Obsolete("This class is no longer used and will be removed from the codebase in the future.")]
|
||||
public class DefaultData : IData, IDataWithPreview, IDataValueSetter
|
||||
public class DefaultData : IData, IDataWithPreview
|
||||
{
|
||||
private int _propertyId;
|
||||
private object _value;
|
||||
@@ -57,37 +57,7 @@ namespace umbraco.cms.businesslogic.datatype
|
||||
_propertyId = InitPropertyId;
|
||||
_value = InitValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This is here for performance reasons since in some cases we will have already resolved the value from the db
|
||||
/// and want to just give this object the value so it doesn't go re-look it up from the database.
|
||||
/// </summary>
|
||||
/// <param name="val"></param>
|
||||
/// <param name="strDbType"></param>
|
||||
void IDataValueSetter.SetValue(object val, string strDbType)
|
||||
{
|
||||
//We need to ensure that val is not a null value, if it is then we'll convert this to an empty string.
|
||||
//The reason for this is because by default the DefaultData.Value property returns an empty string when
|
||||
// there is no value, this is based on the PropertyDataDto.GetValue return value which defaults to an
|
||||
// empty string (which is called from this class's method LoadValueFromDatabase).
|
||||
//Some legacy implementations of DefaultData are expecting an empty string when there is
|
||||
// no value so we need to keep this consistent.
|
||||
if (val == null)
|
||||
{
|
||||
val = string.Empty;
|
||||
}
|
||||
|
||||
_value = val;
|
||||
//now that we've set our value, we can update our BaseDataType object with the correct values from the db
|
||||
//instead of making it query for itself. This is a peformance optimization enhancement.
|
||||
var dbType = BaseDataType.GetDBType(strDbType);
|
||||
var fieldName = BaseDataType.GetDataFieldName(dbType);
|
||||
_dataType.SetDataTypeProperties(fieldName, dbType);
|
||||
|
||||
//ensures that it doesn't go back to the db
|
||||
_valueLoaded = true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Loads the data value from the database.
|
||||
/// </summary>
|
||||
|
||||
@@ -3,20 +3,12 @@ using System.Xml;
|
||||
|
||||
namespace umbraco.interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Internal interface used to decorate any IData that can be optimized when exporting
|
||||
/// XML like in the packaging service. Instead of relying on the IData to go get the value
|
||||
/// from the db, any IData that implements this can have it's value set from the packaging service.
|
||||
/// </summary>
|
||||
internal interface IDataValueSetter
|
||||
{
|
||||
void SetValue(object val, string strDbType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The IData is part of the IDataType interface for creating new data types in the umbraco backoffice.
|
||||
/// The IData represents the actual value entered by the user.
|
||||
/// </summary>
|
||||
[Obsolete("IData is obsolete and is no longer used, it will be removed from the codebase in future versions")]
|
||||
public interface IData
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user