Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 67e2c911f7 | |||
| 36e60c774f | |||
| 745252341f | |||
| a2df4c5232 | |||
| d012d8e8b6 | |||
| 9318da2883 | |||
| a08849f60a | |||
| 9792d8df25 | |||
| 635cfe6b20 | |||
| 9ccf7bdbab | |||
| 0c520f2b43 | |||
| 85d10014c2 | |||
| 3c4b3f44c7 | |||
| c6956b5e98 | |||
| fcf5ecc166 | |||
| c5c87ff50d | |||
| eb949e2cbc | |||
| 8a096cd826 | |||
| 3b236ba724 | |||
| e7eaf6959f | |||
| 3e294e290b | |||
| 751dc8df23 | |||
| 91047182fa | |||
| 1030fd5294 | |||
| be2eb3f555 | |||
| 0eafa14246 | |||
| ab14b65078 |
+2
-1
@@ -142,4 +142,5 @@ build/ui-docs.zip
|
||||
build/csharp-docs.zip
|
||||
build/msbuild.log
|
||||
.vs/
|
||||
src/packages/
|
||||
src/packages/
|
||||
build/tools/
|
||||
|
||||
+46
-3
@@ -113,18 +113,61 @@ REM This is necessary because SETLOCAL is on in InstallGit.cmd so that one might
|
||||
REM but the path setting is lost due to SETLOCAL
|
||||
SET PATH="C:\Program Files (x86)\Git\cmd";"C:\Program Files\Git\cmd";%PATH%
|
||||
|
||||
SET toolsFolder=%CD%\tools\
|
||||
IF NOT EXIST "%toolsFolder%" (
|
||||
MD tools
|
||||
)
|
||||
|
||||
SET nuGetExecutable=%CD%\tools\nuget.exe
|
||||
IF NOT EXIST "%nuGetExecutable%" (
|
||||
ECHO Getting NuGet so we can fetch some tools
|
||||
ECHO Downloading https://dist.nuget.org/win-x86-commandline/latest/nuget.exe to %nuGetExecutable%
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', '%nuGetExecutable%')"
|
||||
)
|
||||
|
||||
:: We need 7za.exe for BuildBelle.bat
|
||||
IF NOT EXIST "%toolsFolder%7za.exe" (
|
||||
ECHO 7zip not found - fetching now
|
||||
"%nuGetExecutable%" install 7-Zip.CommandLine -OutputDirectory tools -Verbosity quiet
|
||||
)
|
||||
|
||||
:: We need vswhere.exe for VS2017+
|
||||
IF NOT EXIST "%toolsFolder%vswhere.exe" (
|
||||
ECHO vswhere not found - fetching now
|
||||
"%nuGetExecutable%" install vswhere -OutputDirectory tools -Verbosity quiet
|
||||
)
|
||||
|
||||
:: Put 7za.exe and vswhere.exe in a predictable path (not version specific)
|
||||
FOR /f "delims=" %%A in ('dir "%toolsFolder%7-Zip.CommandLine.*" /b') DO SET "sevenZipExePath=%toolsFolder%%%A\"
|
||||
MOVE "%sevenZipExePath%tools\7za.exe" "%toolsFolder%7za.exe"
|
||||
|
||||
FOR /f "delims=" %%A in ('dir "%toolsFolder%vswhere.*" /b') DO SET "vswhereExePath=%toolsFolder%%%A\"
|
||||
MOVE "%vswhereExePath%tools\vswhere.exe" "%toolsFolder%vswhere.exe"
|
||||
|
||||
ECHO.
|
||||
ECHO Making sure we have a web.config
|
||||
IF NOT EXIST "%CD%\..\src\Umbraco.Web.UI\web.config" COPY "%CD%\..\src\Umbraco.Web.UI\web.Template.config" "%CD%\..\src\Umbraco.Web.UI\web.config"
|
||||
|
||||
for /f "usebackq tokens=1* delims=: " %%i in (`"%CD%\tools\vswhere.exe" -latest -requires Microsoft.Component.MSBuild`) do (
|
||||
if /i "%%i"=="installationPath" set InstallDir=%%j
|
||||
)
|
||||
|
||||
SET VSWherePath="%InstallDir%\MSBuild"
|
||||
|
||||
ECHO.
|
||||
ECHO Visual Studio is installed in: %InstallDir%
|
||||
|
||||
SET MSBUILDPATH=C:\Program Files (x86)\MSBuild\14.0\Bin
|
||||
SET MSBUILD="%MSBUILDPATH%\MsBuild.exe"
|
||||
|
||||
ECHO.
|
||||
ECHO Reporting NuGet version
|
||||
"%CD%\..\src\.nuget\NuGet.exe" help | findstr "^NuGet Version:"
|
||||
"%nuGetExecutable%" help | findstr "^NuGet Version:"
|
||||
|
||||
ECHO.
|
||||
ECHO Restoring NuGet packages
|
||||
ECHO Into %nuGetFolder%
|
||||
"%CD%\..\src\.nuget\NuGet.exe" restore "%CD%\..\src\umbraco.sln" -Verbosity Quiet -NonInteractive -PackagesDirectory "%nuGetFolder%"
|
||||
"%nuGetExecutable%" restore "%CD%\..\src\umbraco.sln" -Verbosity Quiet -NonInteractive -PackagesDirectory "%nuGetFolder%"
|
||||
IF ERRORLEVEL 1 GOTO :error
|
||||
|
||||
ECHO.
|
||||
@@ -134,7 +177,7 @@ ECHO This takes a few minutes and logging is set to report warnings
|
||||
ECHO and errors only so it might seems like nothing is happening for a while.
|
||||
ECHO You can check the msbuild.log file for progress.
|
||||
ECHO.
|
||||
%MSBUILD% "Build.proj" /p:BUILD_RELEASE=%RELEASE% /p:BUILD_COMMENT=%COMMENT% /p:NugetPackagesDirectory="%nuGetFolder%" /consoleloggerparameters:Summary;ErrorsOnly /fileLogger
|
||||
%MSBUILD% "Build.proj" /p:BUILD_RELEASE=%RELEASE% /p:BUILD_COMMENT=%COMMENT% /p:NugetPackagesDirectory="%nuGetFolder%" /p:VSWherePath=%VSWherePath% /consoleloggerparameters:Summary;ErrorsOnly /fileLogger
|
||||
IF ERRORLEVEL 1 GOTO error
|
||||
|
||||
ECHO.
|
||||
|
||||
+48
-22
@@ -1,33 +1,59 @@
|
||||
@ECHO OFF
|
||||
SETLOCAL
|
||||
:: SETLOCAL is on, so changes to the path not persist to the actual user's path
|
||||
|
||||
SET release=%1
|
||||
ECHO Installing Npm NuGet Package
|
||||
|
||||
SET nuGetFolder=%CD%\..\src\packages\
|
||||
ECHO Configured packages folder: %nuGetFolder%
|
||||
SET toolsFolder=%CD%\tools\
|
||||
ECHO Current folder: %CD%
|
||||
|
||||
%CD%\..\src\.nuget\NuGet.exe install Npm.js -OutputDirectory %nuGetFolder% -Verbosity quiet
|
||||
SET nodeFileName=node-v6.9.1-win-x86.7z
|
||||
SET nodeExtractFolder=%toolsFolder%node.js.691
|
||||
|
||||
for /f "delims=" %%A in ('dir %nuGetFolder%node.js.* /b') do set "nodePath=%nuGetFolder%%%A\"
|
||||
for /f "delims=" %%A in ('dir %nuGetFolder%npm.js.* /b') do set "npmPath=%nuGetFolder%%%A\tools\"
|
||||
IF NOT EXIST "%nodeExtractFolder%" (
|
||||
ECHO Downloading http://nodejs.org/dist/v6.9.1/%nodeFileName% to %toolsFolder%%nodeFileName%
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://nodejs.org/dist/v6.9.1/%nodeFileName%', '%toolsFolder%%nodeFileName%')"
|
||||
ECHO Extracting %nodeFileName% to %nodeExtractFolder%
|
||||
"%toolsFolder%\7za.exe" x "%toolsFolder%\%nodeFileName%" -o"%nodeExtractFolder%" -aos > nul
|
||||
)
|
||||
FOR /f "delims=" %%A in ('dir "%nodeExtractFolder%\node*" /b') DO SET "nodePath=%nodeExtractFolder%\%%A"
|
||||
|
||||
ECHO Adding Npm and Node to path
|
||||
REM SETLOCAL is on, so changes to the path not persist to the actual user's path
|
||||
PATH=%npmPath%;%nodePath%;%PATH%
|
||||
|
||||
SET buildFolder=%CD%
|
||||
SET nuGetExecutable=%CD%\tools\nuget.exe
|
||||
IF NOT EXIST "%nuGetExecutable%" (
|
||||
ECHO Downloading https://dist.nuget.org/win-x86-commandline/latest/nuget.exe to %nuGetExecutable%
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', '%nuGetExecutable%')"
|
||||
)
|
||||
|
||||
ECHO Change directory to %CD%\..\src\Umbraco.Web.UI.Client\
|
||||
CD %CD%\..\src\Umbraco.Web.UI.Client\
|
||||
SET drive=%CD:~0,2%
|
||||
SET nuGetFolder=%drive%\packages\
|
||||
FOR /f "delims=" %%A in ('dir "%nuGetFolder%npm.*" /b') DO SET "npmPath=%nuGetFolder%%%A\"
|
||||
|
||||
ECHO Do npm install and the grunt build of Belle
|
||||
call npm cache clean --quiet
|
||||
call npm install --quiet
|
||||
call npm install -g grunt-cli --quiet
|
||||
call npm install -g bower --quiet
|
||||
call grunt build --buildversion=%release%
|
||||
IF [%npmPath%] == [] GOTO :installnpm
|
||||
IF NOT [%npmPath%] == [] GOTO :build
|
||||
|
||||
ECHO Move back to the build folder
|
||||
CD %buildFolder%
|
||||
:installnpm
|
||||
ECHO Downloading npm
|
||||
ECHO Configured packages folder: %nuGetFolder%
|
||||
ECHO Installing Npm NuGet Package
|
||||
"%nuGetExecutable%" install Npm -OutputDirectory %nuGetFolder% -Verbosity detailed
|
||||
REM Ensures that we look for the just downloaded NPM, not whatever the user has installed on their machine
|
||||
FOR /f "delims=" %%A in ('dir %nuGetFolder%npm.* /b') DO SET "npmPath=%nuGetFolder%%%A\"
|
||||
GOTO :build
|
||||
|
||||
:build
|
||||
ECHO Adding Npm and Node to path
|
||||
REM SETLOCAL is on, so changes to the path not persist to the actual user's path
|
||||
PATH="%npmPath%";"%nodePath%";%PATH%
|
||||
SET buildFolder=%CD%
|
||||
|
||||
ECHO Change directory to %CD%\..\src\Umbraco.Web.UI.Client\
|
||||
CD %CD%\..\src\Umbraco.Web.UI.Client\
|
||||
|
||||
ECHO Do npm install and the grunt build of Belle
|
||||
call npm cache clean --quiet
|
||||
call npm install --quiet
|
||||
call npm install -g grunt-cli --quiet
|
||||
call npm install -g bower --quiet
|
||||
call grunt build --buildversion=%release%
|
||||
|
||||
ECHO Move back to the build folder
|
||||
CD "%buildFolder%"
|
||||
@@ -1,2 +1,2 @@
|
||||
# Usage: on line 2 put the release version, on line 3 put the version comment (example: beta)
|
||||
7.6.0
|
||||
7.6.1
|
||||
+2
-2
@@ -11,5 +11,5 @@ using System.Resources;
|
||||
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
[assembly: AssemblyFileVersion("7.6.0")]
|
||||
[assembly: AssemblyInformationalVersion("7.6.0")]
|
||||
[assembly: AssemblyFileVersion("7.6.1")]
|
||||
[assembly: AssemblyInformationalVersion("7.6.1")]
|
||||
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Configuration
|
||||
{
|
||||
public class UmbracoVersion
|
||||
{
|
||||
private static readonly Version Version = new Version("7.6.0");
|
||||
private static readonly Version Version = new Version("7.6.1");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current version of Umbraco.
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Umbraco.Core.Persistence.Migrations
|
||||
Logger = logger;
|
||||
}
|
||||
|
||||
public IMigrationContext Context { get; internal set; }
|
||||
public IMigrationContext Context;
|
||||
|
||||
public abstract void Up();
|
||||
public abstract void Down();
|
||||
|
||||
@@ -20,6 +20,11 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
|
||||
|
||||
public override object ConvertSourceToObject(PublishedPropertyType propertyType, object source, bool preview)
|
||||
{
|
||||
if(source == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return source.ToString();
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Umbraco.Core
|
||||
/// <param name="entityType">The entity type part of the udi.</param>
|
||||
/// <param name="id">The string id part of the udi.</param>
|
||||
public StringUdi(string entityType, string id)
|
||||
: base(entityType, "umb://" + entityType + "/" + id)
|
||||
: base(entityType, "umb://" + entityType + "/" + Uri.EscapeUriString(id))
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
@@ -32,7 +32,7 @@ namespace Umbraco.Core
|
||||
public StringUdi(Uri uriValue)
|
||||
: base(uriValue)
|
||||
{
|
||||
Id = uriValue.AbsolutePath.TrimStart('/');
|
||||
Id = Uri.UnescapeDataString(uriValue.AbsolutePath.TrimStart('/'));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -101,7 +101,8 @@ namespace Umbraco.Core
|
||||
public override string ToString()
|
||||
{
|
||||
// UriValue is created in the ctor and is never null
|
||||
return UriValue.ToString();
|
||||
// use AbsoluteUri here and not ToString else it's not encoded!
|
||||
return UriValue.AbsoluteUri;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -159,7 +160,7 @@ namespace Umbraco.Core
|
||||
}
|
||||
if (udiType == UdiType.StringUdi)
|
||||
{
|
||||
udi = path == string.Empty ? GetRootUdi(uri.Host) : new StringUdi(uri.Host, path);
|
||||
udi = path == string.Empty ? GetRootUdi(uri.Host) : new StringUdi(uri.Host, Uri.UnescapeDataString(path));
|
||||
return true;
|
||||
}
|
||||
if (tryParse) return false;
|
||||
|
||||
@@ -31,6 +31,34 @@ namespace Umbraco.Tests
|
||||
Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/test-id", udi.ToString());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void StringEncodingTest()
|
||||
{
|
||||
// absolute path is unescaped
|
||||
var uri = new Uri("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test");
|
||||
Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/this is a test", uri.ToString());
|
||||
Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test", uri.AbsoluteUri);
|
||||
Assert.AreEqual("/this%20is%20a%20test", uri.AbsolutePath);
|
||||
|
||||
Assert.AreEqual("/this is a test", Uri.UnescapeDataString(uri.AbsolutePath));
|
||||
Assert.AreEqual("%2Fthis%20is%20a%20test", Uri.EscapeDataString("/this is a test"));
|
||||
Assert.AreEqual("/this%20is%20a%20test", Uri.EscapeUriString("/this is a test"));
|
||||
|
||||
var udi = Udi.Parse("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test");
|
||||
Assert.AreEqual(Constants.UdiEntityType.AnyString, udi.EntityType);
|
||||
Assert.IsInstanceOf<StringUdi>(udi);
|
||||
var stringEntityId = udi as StringUdi;
|
||||
Assert.IsNotNull(stringEntityId);
|
||||
Assert.AreEqual("this is a test", stringEntityId.Id);
|
||||
Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/this%20is%20a%20test", udi.ToString());
|
||||
|
||||
var udi2 = new StringUdi(Constants.UdiEntityType.AnyString, "this is a test");
|
||||
Assert.AreEqual(udi, udi2);
|
||||
|
||||
var udi3 = new StringUdi(Constants.UdiEntityType.AnyString, "path to/this is a test.xyz");
|
||||
Assert.AreEqual("umb://" + Constants.UdiEntityType.AnyString + "/path%20to/this%20is%20a%20test.xyz", udi3.ToString());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GuidEntityCtorTest()
|
||||
{
|
||||
|
||||
+8
-8
@@ -105,14 +105,14 @@ angular.module("umbraco.directives")
|
||||
});
|
||||
|
||||
//// INIT /////
|
||||
$image.load(function(){
|
||||
$timeout(function(){
|
||||
setDimensions();
|
||||
scope.loaded = true;
|
||||
if (scope.onImageLoaded) {
|
||||
scope.onImageLoaded();
|
||||
}
|
||||
});
|
||||
$image.load(function() {
|
||||
$timeout(function() {
|
||||
setDimensions();
|
||||
scope.loaded = true;
|
||||
if (angular.isFunction(scope.onImageLoaded)) {
|
||||
scope.onImageLoaded();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(window).on('resize.umbImageGravity', function(){
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To read a report of changes between your current version <strong>{{installer.current.model.currentVersion}}</strong> and this version your upgrading to <strong>{{installer.current.model.newVersion}}</strong>
|
||||
To read a report of changes between your current version <strong>{{installer.current.model.currentVersion}}</strong> and this version you're upgrading to <strong>{{installer.current.model.newVersion}}</strong>
|
||||
</p>
|
||||
<p>
|
||||
<a ng-href="{{installer.current.model.reportUrl}}" target="_blank" class="btn btn-info">View Report</a>
|
||||
|
||||
+63
-56
@@ -1,14 +1,13 @@
|
||||
(function () {
|
||||
(function() {
|
||||
"use strict";
|
||||
|
||||
function QueryBuilderOverlayController($scope, templateQueryResource, localizationService) {
|
||||
|
||||
var everything = localizationService.localize("template_allContent");
|
||||
var myWebsite = localizationService.localize("template_websiteRoot");
|
||||
var everything = "";
|
||||
var myWebsite = "";
|
||||
var ascendingTranslation = "";
|
||||
var descendingTranslation = "";
|
||||
|
||||
var ascendingTranslation = localizationService.localize("template_ascending");
|
||||
var descendingTranslation = localizationService.localize("template_descending");
|
||||
|
||||
var vm = this;
|
||||
|
||||
vm.properties = [];
|
||||
@@ -21,34 +20,6 @@
|
||||
format: "YYYY-MM-DD"
|
||||
};
|
||||
|
||||
vm.query = {
|
||||
contentType: {
|
||||
name: everything
|
||||
},
|
||||
source: {
|
||||
name: myWebsite
|
||||
},
|
||||
filters: [
|
||||
{
|
||||
property: undefined,
|
||||
operator: undefined
|
||||
}
|
||||
],
|
||||
sort: {
|
||||
property: {
|
||||
alias: "",
|
||||
name: "",
|
||||
},
|
||||
direction: "ascending", //This is the value for sorting sent to server
|
||||
translation: {
|
||||
currentLabel: ascendingTranslation, //This is the localized UI value in the the dialog
|
||||
ascending: ascendingTranslation,
|
||||
descending: descendingTranslation
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
vm.chooseSource = chooseSource;
|
||||
vm.getPropertyOperators = getPropertyOperators;
|
||||
vm.addFilter = addFilter;
|
||||
@@ -63,21 +34,48 @@
|
||||
|
||||
function onInit() {
|
||||
|
||||
vm.query = {
|
||||
contentType: {
|
||||
name: everything
|
||||
},
|
||||
source: {
|
||||
name: myWebsite
|
||||
},
|
||||
filters: [
|
||||
{
|
||||
property: undefined,
|
||||
operator: undefined
|
||||
}
|
||||
],
|
||||
sort: {
|
||||
property: {
|
||||
alias: "",
|
||||
name: "",
|
||||
},
|
||||
direction: "ascending", //This is the value for sorting sent to server
|
||||
translation: {
|
||||
currentLabel: ascendingTranslation, //This is the localized UI value in the the dialog
|
||||
ascending: ascendingTranslation,
|
||||
descending: descendingTranslation
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
templateQueryResource.getAllowedProperties()
|
||||
.then(function (properties) {
|
||||
.then(function(properties) {
|
||||
vm.properties = properties;
|
||||
});
|
||||
|
||||
templateQueryResource.getContentTypes()
|
||||
.then(function (contentTypes) {
|
||||
.then(function(contentTypes) {
|
||||
vm.contentTypes = contentTypes;
|
||||
});
|
||||
|
||||
templateQueryResource.getFilterConditions()
|
||||
.then(function (conditions) {
|
||||
.then(function(conditions) {
|
||||
vm.conditions = conditions;
|
||||
});
|
||||
|
||||
|
||||
throttledFunc();
|
||||
|
||||
}
|
||||
@@ -111,10 +109,11 @@
|
||||
}
|
||||
|
||||
function getPropertyOperators(property) {
|
||||
var conditions = _.filter(vm.conditions, function (condition) {
|
||||
var index = condition.appliesTo.indexOf(property.type);
|
||||
return index >= 0;
|
||||
});
|
||||
var conditions = _.filter(vm.conditions,
|
||||
function(condition) {
|
||||
var index = condition.appliesTo.indexOf(property.type);
|
||||
return index >= 0;
|
||||
});
|
||||
return conditions;
|
||||
}
|
||||
|
||||
@@ -123,10 +122,8 @@
|
||||
}
|
||||
|
||||
function trashFilter(query, filter) {
|
||||
for (var i = 0; i < query.filters.length; i++)
|
||||
{
|
||||
if (query.filters[i] == filter)
|
||||
{
|
||||
for (var i = 0; i < query.filters.length; i++) {
|
||||
if (query.filters[i] == filter) {
|
||||
query.filters.splice(i, 1);
|
||||
}
|
||||
}
|
||||
@@ -173,7 +170,7 @@
|
||||
|
||||
function setFilterTerm(filter, term) {
|
||||
filter.term = term;
|
||||
if(filter.constraintValue) {
|
||||
if (filter.constraintValue) {
|
||||
throttledFunc();
|
||||
}
|
||||
}
|
||||
@@ -183,22 +180,32 @@
|
||||
}
|
||||
|
||||
function datePickerChange(event, filter) {
|
||||
if(event.date && event.date.isValid()) {
|
||||
if (event.date && event.date.isValid()) {
|
||||
filter.constraintValue = event.date.format(vm.datePickerConfig.format);
|
||||
throttledFunc();
|
||||
}
|
||||
}
|
||||
|
||||
var throttledFunc = _.throttle(function () {
|
||||
|
||||
templateQueryResource.postTemplateQuery(vm.query)
|
||||
.then(function (response) {
|
||||
$scope.model.result = response;
|
||||
});
|
||||
var throttledFunc = _.throttle(function() {
|
||||
|
||||
}, 200);
|
||||
templateQueryResource.postTemplateQuery(vm.query)
|
||||
.then(function(response) {
|
||||
$scope.model.result = response;
|
||||
});
|
||||
|
||||
onInit();
|
||||
},
|
||||
200);
|
||||
|
||||
localizationService.localizeMany([
|
||||
"template_allContent", "template_websiteRoot", "template_ascending", "template_descending"
|
||||
])
|
||||
.then(function(res) {
|
||||
everything = res[0];
|
||||
myWebsite = res[1];
|
||||
ascendingTranslation = res[2];
|
||||
descendingTranslation = res[3];
|
||||
onInit();
|
||||
});
|
||||
}
|
||||
|
||||
angular.module("umbraco").controller("Umbraco.Overlays.QueryBuilderController", QueryBuilderOverlayController);
|
||||
|
||||
+8
-1
@@ -1,10 +1,17 @@
|
||||
angular.module("umbraco")
|
||||
.controller("Umbraco.PropertyEditors.Grid.MediaController",
|
||||
function ($scope, $rootScope, $timeout) {
|
||||
function ($scope, $rootScope, $timeout, userService) {
|
||||
|
||||
if (!$scope.model.config.startNodeId) {
|
||||
userService.getCurrentUser().then(function (userData) {
|
||||
$scope.model.config.startNodeId = userData.startMediaId;
|
||||
});
|
||||
}
|
||||
|
||||
$scope.setImage = function(){
|
||||
$scope.mediaPickerOverlay = {};
|
||||
$scope.mediaPickerOverlay.view = "mediapicker";
|
||||
$scope.mediaPickerOverlay.startNodeId = $scope.model.config && $scope.model.config.startNodeId ? $scope.model.config.startNodeId : undefined;
|
||||
$scope.mediaPickerOverlay.cropSize = $scope.control.editor.config && $scope.control.editor.config.size ? $scope.control.editor.config.size : undefined;
|
||||
$scope.mediaPickerOverlay.showDetails = true;
|
||||
$scope.mediaPickerOverlay.disableFolderSelect = true;
|
||||
|
||||
+2
-3
@@ -112,10 +112,9 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl
|
||||
// content picker. THen we don't have to worry about setting ids, render models, models, we just set one and let the
|
||||
// watch do all the rest.
|
||||
$timeout(function(){
|
||||
angular.forEach($scope.images, function(value, key){
|
||||
r.push(value.id);
|
||||
angular.forEach($scope.images, function(value, key) {
|
||||
r.push($scope.model.config.idType === "udi" ? value.udi : value.id);
|
||||
});
|
||||
|
||||
$scope.ids = r;
|
||||
$scope.sync();
|
||||
}, 500, false);
|
||||
|
||||
@@ -2376,9 +2376,9 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\"
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>7600</DevelopmentServerPort>
|
||||
<DevelopmentServerPort>7610</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>http://localhost:7600</IISUrl>
|
||||
<IISUrl>http://localhost:7610</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
@@ -2395,7 +2395,26 @@ xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.1\x86\*.* "$(TargetDir)x86\"
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||
<PropertyGroup Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll')">
|
||||
<WebPublishingTasks>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll</WebPublishingTasks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll')">
|
||||
<WebPublishingTasks>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll</WebPublishingTasks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll')">
|
||||
<WebPublishingTasks>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll</WebPublishingTasks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll')">
|
||||
<WebPublishingTasks>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll</WebPublishingTasks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.Tasks.dll')">
|
||||
<WebPublishingTasks>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.Tasks.dll</WebPublishingTasks>
|
||||
</PropertyGroup>
|
||||
<UsingTask TaskName="TransformXml" AssemblyFile="$(WebPublishingTasks)" Condition="'$(WebPublishingTasks)' != ''" />
|
||||
<UsingTask TaskName="TransformXml" AssemblyFile="$(VSWherePath)\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.Tasks.dll" Condition="'$(VSWherePath)' != ''" />
|
||||
<Target Name="BeforeBuild">
|
||||
<Message Text="WebPublishingTasks: $(WebPublishingTasks)" Importance="high" />
|
||||
<Message Text="VSWherePath: $(VSWherePath)" Importance="high" />
|
||||
<!-- Create web.config file from Template if it doesn't exist -->
|
||||
<Copy SourceFiles="$(ProjectDir)web.Template.config" DestinationFiles="$(ProjectDir)Web.config" OverwriteReadOnlyFiles="true" SkipUnchangedFiles="false" Condition="!Exists('$(ProjectDir)Web.config')" />
|
||||
<!-- Transform the local Web.config file in Visual Studio -->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="../masterpages/umbracoPage.Master" CodeBehind="PermissionEditor.aspx.cs" Inherits="umbraco.cms.presentation.user.PermissionEditor" %>
|
||||
|
||||
<%@ Import Namespace="Umbraco.Web" %>
|
||||
<%@ Register Src="../controls/Tree/TreeControl.ascx" TagName="TreeControl" TagPrefix="umbraco" %>
|
||||
<%@ Register Src="NodePermissions.ascx" TagName="NodePermissions" TagPrefix="user" %>
|
||||
<%@ Register TagPrefix="ui" Namespace="umbraco.uicontrols" Assembly="controls" %>
|
||||
|
||||
@@ -3,7 +3,6 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Web.Mvc;
|
||||
using Umbraco.Web.WebApi.Filters;
|
||||
using Umbraco.Web.WebApi;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
@@ -13,8 +12,6 @@ using Umbraco.Core.Services;
|
||||
|
||||
namespace Umbraco.Web.Editors
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The API controller used for building content queries within the template
|
||||
/// </summary>
|
||||
@@ -26,10 +23,9 @@ namespace Umbraco.Web.Editors
|
||||
{ }
|
||||
|
||||
public TemplateQueryController(UmbracoContext umbracoContext)
|
||||
:base(umbracoContext)
|
||||
: base(umbracoContext)
|
||||
{ }
|
||||
|
||||
|
||||
private IEnumerable<OperathorTerm> Terms
|
||||
{
|
||||
get
|
||||
@@ -77,20 +73,19 @@ namespace Umbraco.Web.Editors
|
||||
|
||||
var sb = new StringBuilder();
|
||||
var indention = Environment.NewLine + "\t\t\t\t\t\t";
|
||||
|
||||
|
||||
sb.Append("Model.Content.Site()");
|
||||
var timer = new Stopwatch();
|
||||
|
||||
|
||||
timer.Start();
|
||||
|
||||
var currentPage = umbraco.TypedContentAtRoot().FirstOrDefault();
|
||||
timer.Stop();
|
||||
|
||||
|
||||
var pointerNode = currentPage;
|
||||
|
||||
// adjust the "FROM"
|
||||
if (model != null && model.Source.Id > 0)
|
||||
if (model != null && model.Source != null && model.Source.Id > 0)
|
||||
{
|
||||
var targetNode = umbraco.TypedContent(model.Source.Id);
|
||||
|
||||
@@ -120,10 +115,10 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TYPE to return if filtered by type
|
||||
|
||||
// TYPE to return if filtered by type
|
||||
IEnumerable<IPublishedContent> contents;
|
||||
if (model != null && string.IsNullOrEmpty(model.ContentType.Alias) == false)
|
||||
if (model != null && model.ContentType != null && string.IsNullOrEmpty(model.ContentType.Alias) == false)
|
||||
{
|
||||
timer.Start();
|
||||
|
||||
@@ -154,13 +149,13 @@ namespace Umbraco.Web.Editors
|
||||
|
||||
foreach (var condition in model.Filters)
|
||||
{
|
||||
if(string.IsNullOrEmpty( condition.ConstraintValue)) continue;
|
||||
|
||||
if (string.IsNullOrEmpty(condition.ConstraintValue)) continue;
|
||||
|
||||
//x is passed in as the parameter alias for the linq where statement clause
|
||||
var operation = condition.BuildCondition("x");
|
||||
var tokenizedOperation = condition.BuildTokenizedCondition(token);
|
||||
|
||||
clause = string.IsNullOrEmpty(clause) ? operation : string.Concat(new[] { clause, " && ", operation });
|
||||
clause = string.IsNullOrEmpty(clause) ? operation : string.Concat(new[] { clause, " && ", operation });
|
||||
tokenizedClause = string.IsNullOrEmpty(tokenizedClause) ? tokenizedOperation : string.Concat(new[] { tokenizedClause, " && ", tokenizedOperation });
|
||||
|
||||
token++;
|
||||
@@ -168,7 +163,6 @@ namespace Umbraco.Web.Editors
|
||||
|
||||
if (string.IsNullOrEmpty(clause) == false)
|
||||
{
|
||||
|
||||
timer.Start();
|
||||
|
||||
//trial-run the tokenized clause to time the execution
|
||||
@@ -178,14 +172,13 @@ namespace Umbraco.Web.Editors
|
||||
|
||||
timer.Stop();
|
||||
|
||||
|
||||
|
||||
//the query to output to the editor
|
||||
sb.Append(indention);
|
||||
sb.Append(".Where(x => x.IsVisible())");
|
||||
|
||||
sb.Append(indention);
|
||||
sb.AppendFormat(".Where(x => {0})", clause);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -197,7 +190,6 @@ namespace Umbraco.Web.Editors
|
||||
|
||||
sb.Append(indention);
|
||||
sb.Append(".Where(x => x.IsVisible())");
|
||||
|
||||
}
|
||||
|
||||
if (model.Sort != null && string.IsNullOrEmpty(model.Sort.Property.Alias) == false)
|
||||
@@ -231,20 +223,19 @@ namespace Umbraco.Web.Editors
|
||||
queryResult.ExecutionTime = timer.ElapsedMilliseconds;
|
||||
queryResult.ResultCount = contents.Count();
|
||||
queryResult.SampleResults = contents.Take(20).Select(x => new TemplateQueryResult()
|
||||
{
|
||||
Icon = "icon-file",
|
||||
Name = x.Name
|
||||
});
|
||||
{
|
||||
Icon = "icon-file",
|
||||
Name = x.Name
|
||||
});
|
||||
|
||||
|
||||
return queryResult;
|
||||
return queryResult;
|
||||
}
|
||||
|
||||
private object GetConstraintValue(QueryCondition condition)
|
||||
{
|
||||
switch (condition.Property.Type)
|
||||
{
|
||||
case "int" :
|
||||
case "int":
|
||||
return int.Parse(condition.ConstraintValue);
|
||||
case "datetime":
|
||||
DateTime dt;
|
||||
@@ -254,42 +245,41 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<IPublishedContent> SortByDefaultPropertyValue(IEnumerable<IPublishedContent> contents, SortExpression sortExpression)
|
||||
private IEnumerable<IPublishedContent> SortByDefaultPropertyValue(IEnumerable<IPublishedContent> contents, SortExpression sortExpression)
|
||||
{
|
||||
switch (sortExpression.Property.Alias)
|
||||
{
|
||||
case "id" :
|
||||
case "id":
|
||||
return sortExpression.Direction == "ascending"
|
||||
? contents.OrderBy(x => x.Id)
|
||||
: contents.OrderByDescending(x => x.Id);
|
||||
case "createDate" :
|
||||
|
||||
? contents.OrderBy(x => x.Id)
|
||||
: contents.OrderByDescending(x => x.Id);
|
||||
case "createDate":
|
||||
|
||||
return sortExpression.Direction == "ascending"
|
||||
? contents.OrderBy(x => x.CreateDate)
|
||||
: contents.OrderByDescending(x => x.CreateDate);
|
||||
? contents.OrderBy(x => x.CreateDate)
|
||||
: contents.OrderByDescending(x => x.CreateDate);
|
||||
case "publishDate":
|
||||
|
||||
|
||||
return sortExpression.Direction == "ascending"
|
||||
? contents.OrderBy(x => x.UpdateDate)
|
||||
: contents.OrderByDescending(x => x.UpdateDate);
|
||||
? contents.OrderBy(x => x.UpdateDate)
|
||||
: contents.OrderByDescending(x => x.UpdateDate);
|
||||
case "name":
|
||||
return sortExpression.Direction == "ascending"
|
||||
? contents.OrderBy(x => x.Name)
|
||||
: contents.OrderByDescending(x => x.Name);
|
||||
default :
|
||||
? contents.OrderBy(x => x.Name)
|
||||
: contents.OrderByDescending(x => x.Name);
|
||||
default:
|
||||
|
||||
return sortExpression.Direction == "ascending"
|
||||
? contents.OrderBy(x => x.Name)
|
||||
: contents.OrderByDescending(x => x.Name);
|
||||
|
||||
? contents.OrderBy(x => x.Name)
|
||||
: contents.OrderByDescending(x => x.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private IEnumerable<string> GetChildContentTypeAliases(IPublishedContent targetNode, IPublishedContent current)
|
||||
{
|
||||
var aliases = new List<string>();
|
||||
|
||||
if (targetNode.Id == current.Id) return aliases;
|
||||
|
||||
if (targetNode == null || targetNode.Id == current.Id) return aliases;
|
||||
if (targetNode.Id != current.Id)
|
||||
{
|
||||
aliases.Add(targetNode.DocumentTypeAlias);
|
||||
@@ -309,7 +299,7 @@ namespace Umbraco.Web.Editors
|
||||
{
|
||||
var contentTypes =
|
||||
ApplicationContext.Services.ContentTypeService.GetAllContentTypes()
|
||||
.Select(x => new ContentTypeModel() { Alias = x.Alias, Name = Services.TextService.Localize("template/contentOfType", tokens: new string[] { x.Name } ) })
|
||||
.Select(x => new ContentTypeModel() { Alias = x.Alias, Name = Services.TextService.Localize("template/contentOfType", tokens: new string[] { x.Name }) })
|
||||
.OrderBy(x => x.Name).ToList();
|
||||
|
||||
contentTypes.Insert(0, new ContentTypeModel() { Alias = string.Empty, Name = Services.TextService.Localize("template/allContent") });
|
||||
@@ -332,7 +322,5 @@ namespace Umbraco.Web.Editors
|
||||
{
|
||||
return Terms;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="../masterpages/umbracoPage.Master" CodeBehind="PermissionEditor.aspx.cs" Inherits="umbraco.cms.presentation.user.PermissionEditor" %>
|
||||
|
||||
<%@ Import Namespace="Umbraco.Web" %>
|
||||
<%@ Register Src="../controls/Tree/TreeControl.ascx" TagName="TreeControl" TagPrefix="umbraco" %>
|
||||
<%@ Register Src="NodePermissions.ascx" TagName="NodePermissions" TagPrefix="user" %>
|
||||
<%@ Register TagPrefix="ui" Namespace="umbraco.uicontrols" Assembly="controls" %>
|
||||
@@ -27,7 +27,7 @@
|
||||
<script type="text/javascript" language="javascript">
|
||||
jQuery(document).ready(function() {
|
||||
jQuery("#<%=JTree.ClientID%>").PermissionsEditor({
|
||||
userId: <%=Request.QueryString["id"] %>,
|
||||
userId: <%=Request.CleanForXss("id") %>,
|
||||
pPanelSelector: "#permissionsPanel",
|
||||
replacePChkBoxSelector: "#chkChildPermissions"});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user