Compare commits

...

42 Commits

Author SHA1 Message Date
Benedek Farkas
f66516c87f Using the menu item text in the notification when publishing and unpublishing too 2024-11-20 15:55:05 +01:00
Benedek Farkas
3ec2daa9d6 Fixing that saving a menu item shouldn't publish it if it's unpublished 2024-11-20 15:54:19 +01:00
Benedek Farkas
2c3fe26900 Redirecting to menu when saving a menu item and using the menu item text in the notification 2024-11-20 15:53:31 +01:00
Benedek Farkas
bf028e0316 Extending Core/Navigation/Controllers/AdminController to be able to publish/unpublish menuitems 2024-11-15 18:21:26 +01:00
Benedek Farkas
7b503709a5 Cleaning up Core/Navigation/Controllers/AdminController 2024-11-15 18:18:31 +01:00
Andrea Piovanelli
81570fab35 Internal page links validation for LinkField (#8805)
Some checks failed
Compile / Compile .NET solution (push) Has been cancelled
Compile / Compile client-side assets (push) Has been cancelled
* Added page internal references management in LinkField valid urls (e.g. field.Value = "#someId")

* Code refactoring to check LinkField value.
2024-10-29 09:14:13 +01:00
Benedek Farkas
0d9fccb624 Fixing WebDownloaderTests 2024-05-03 15:33:07 +02:00
Benedek Farkas
fdbb06ba8d #8640: Fixing consistency between different Enumeration Field flavors' data storage (#8789)
* Reworking EnumerationField's logic to store/retrieve its (selected) values

* Fixing exception when creating new item with CheckboxList flavor, adding more nullchecks and compactness

* Code styling in EnumerationFieldDriver

* Code styling in EnumerationField editor template

* Fixing that EnumerationFieldDriver and the EnumerationField editor template should read SelectedValues instead of Values directly

---------

Co-authored-by: Matteo Piovanelli <MatteoPiovanelli-Laser@users.noreply.github.com>
2024-04-19 11:11:47 +02:00
Benedek Farkas
15cad85d1e #6793: Adding a content-independent culture selector shape for the front-end (#8784)
* Adds a new CultureSelector shape for front-end

* fixed query string culture change

* Moving NameValueCollectionExtensions from Orchard.DynamicForms and Orchard.Localization to Orchard.Framework

* Code styling

* Simplifying UserCultureSelectorController and removing the addition of the culture to the query string

* EOF empty lines and code styling

* Fixing that the main Orchard.Localization should depend on Orchard.Autoroute

* Code styling in LocalizationService

* Updating LocalizationService to not have to use IEnumerable.Single

* Matching culture name matching in LocalizationService culture- and casing-invariant

---------

Co-authored-by: Sergio Navarro <jersio@hotmail.com>
Co-authored-by: psp589 <pablosanchez589@gmail.com>
2024-04-18 23:35:48 +02:00
Benedek Farkas
0b86413e60 6748: Stricter file and folder name validation (#6792)
* Media Library: More strict file and folder name validation, fixes #6748

* Resetting MediaLibraryService changes to 1.10.x

* Code styling in FileSystemStorageProvider

* Adding string file and folder name validation to FileSystemStorageProvider, so that MediaLibrary components don't need to do it separately

* Applying the same file and folder name validation to AzureFileSystem too

* Code styling and fixes in AzureFileSystem, MediaLibrary and IStorageProvider

* Simplifying invalid character detection

* Code styling

* Adding InvalidNameCharacterException to be able to handle invalid characters precisely at various user-facing components

* Updating MediaLibrary not to log an error when a file can't be uploaded due to invalid characters

---------

Co-authored-by: Lombiq <github@lombiq.com>
2024-04-18 21:37:48 +02:00
Benedek Farkas
3a6810ec67 8225: Adding a checkbox to StringFilterForm to control whether an empty value should cause the filter to be skipped (#8781)
* Adding a checkbox to StringFilterForm to control whether an empty value should cause the filter to be skipped

* Removing StringOperator.ContainsAnyIfProvided as its now obsolete due to the IgnoreFilterIfValueIsEmpty checkbox setting

* Code styling in StringFilterForm

* Adding missing T-string

* Adding migration step to upgrade from using the ContainsAnyIfProvided operator in StringFilterForm
2024-04-17 11:52:51 +02:00
Thierry Fleury
04e9c73391 8012: Add Excel Export functionality to DynamicForms (#8016)
* Add Excel Export functionality to DynamicForms.

* Using the net46-targeted DLL of DocumentFormat.OpenXml instead of net40

* Updating DocumentFormat.OpenXml to latest (3.0.2) version

* Code styling

---------

Co-authored-by: Benedek Farkas <benedek.farkas@lombiq.com>
2024-04-16 16:59:14 +02:00
Benedek Farkas
530d2a9221 8773: Recompiling client-side assets on 1.10.x (#8779)
* Updating rebuilt client-side assets that only changed in terms of sourceMappingURL

* Updating rebuilt client-side assets that changed functionally

* Fixing/simplifying Layout editor toolbox stickyness and height restriction to viewport

* Compile workflow: Upgrading actions/checkout and microsoft/setup-msbuild actions to their latest versions

* Compile workflow: Adding steps to validate that the client-side assets are up-to-date

* Compile workflow: Temporarily disabling MSBuild steps

* Moving client-side assets build to a separate job in the compile workflow

* Updating client-side compilation job

* Temporarily disabling the .NET build

* Separating package install from asset rebuild

* Adding debug command

* Fixing working directory

* Debugging

* Attempting to get rid of false positives due to line ending changes

* Removing debug code

* Checking asset validation by modifying Orchard.Resources/Assets/Less/Bootstrap/variables.less, but not its derivatives

* Revert "Checking asset validation by modifying Orchard.Resources/Assets/Less/Bootstrap/variables.less, but not its derivatives"

This reverts commit 3fc9b8362b.

* Revert "Temporarily disabling the .NET build"

This reverts commit 2a8fef7793.

* Fixing error message when client-side assets are not up-to-date
2024-04-16 16:55:04 +02:00
Hazzamanic
8086c01fb8 7919: The Alias UI links for sites using UrlPrefix are broken (#7930)
* AliasUI: removing UrlPrefix addition to url. Fixing issue in Href() that strips first / in urls for sites using UrlPrefix

* Simplifying fix for WebViewPage.Href for tenants with URL prefix

* Code styling WebViewPage

---------

Co-authored-by: Benedek Farkas <benedek.farkas@lombiq.com>
2024-04-11 21:41:34 +02:00
Benedek Farkas
fb1aa73475 8776: Upgrade Microsoft.CodeDom.Providers.DotNetCompilerPlatform to latest version (#8777)
* Upgrading projects, code generation templates and Specflow app to use Microsoft.CodeDom.Providers.DotNetCompilerPlatform 4.1.0 (latest)

* Updating csprojs not to define LangVersion separately in Release and Debug mode, setting it to "default" instead of "latest"

* Restricting C# language version to 7.3

* Downgrading SmtpMessageChannel.cs to C# 7.3

* Setting MvcBuildViews = false in the remaining csprojs that reference DotNetCompilerPlatform, like the others

* Setting RoslynCopyToOutDir = false in each csproj that references DotNetCompilerPlatform

See https://github.com/aspnet/RoslynCodeDomProvider?tab=readme-ov-file#build-time-options
- We only need Orchard.Web to include the Roslyn tools in its bin folder, the other csprojs only need the DLL reference
- We could simply remove the targets import in these csprojs, but it will be re-added when the package is updated, so this is cleaner/easier

* We don't actually need <MvcBuildViews>false</MvcBuildViews> in csprojs

* Orchard.Web: Copying Roslyn files to the output folder using the provided target (CopyRoslynCompilerFilesToOutputDirectory) instead of our custom one

* Orchard.proj: Factoring out a part of the Compile target into the DevCompile target and removing BuildViews target

- For a simple local build (just to validate that the solution builds), we don't actually need that second build that copies files to the output folder.
- CI builds (Test, Spec, etc.) that operate on the build output folder are unaffected, because Compile calls DevCompile
- The BuildViews target is not really necessary, just call any other target (Compile, DevCompile, Spec, etc.) with "/p:MvcBuildViews=true"

* Removing incorrect comment about Razor IntelliSense

* Removing VBCodeProvider configuration from Web.config files

* Getting rid of Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets imports and associated configuration except in Orchard.Web.csproj

* Adding VB compiler configuration to src/Orchard.Web/Web.config, because it would be readded on rebuild by the imported target anyway
2024-04-04 16:35:29 +02:00
Benedek Farkas
5aaf46bcde Setting MSBuild log verbosity to minimal in the compile workflow 2024-03-18 12:03:36 +01:00
Benedek Farkas
005338403d gitignore: Fixing the pattern that ignores ".vs" folders at any level and moving VS-related patterns to the correct location 2024-03-16 18:44:56 +01:00
dmhiggins23
1900b35cd5 Updated ClickToBuild.cmd to support VS2019 (v16) and VS2022 (v17) (#8764)
Removed support for eariler MSBuild versions (they cannot compile SmtpMessageChannel.cs)

Updated lib/nuget/nuget.exe to latest version (6.9.1.3) (required for package restoration)

Modified Obsolete attribute in SmtpSettingsPart.cs so the solution builds with VS2019
2024-03-15 10:18:40 +01:00
Andrea Piovanelli
2d7ce45d1e TermsPart.Record usage made before the delegate to avoid accessing a scope which is already disposed. (#8766) 2024-03-15 08:55:07 +01:00
Benedek Farkas
50d416c9f2 Projections: Consolidating Migration Update steps into Create 2024-03-01 20:46:50 +01:00
Andrea Piovanelli
35f1c8d570 Corrections on media resizing process (#8762)
* Added checks to GetImageProfileUrl function to avoid trying to resize files with no ImagePart. If no content item is passed as a parameter, file gets to be processed anyway (throwing and logging exception is the file isn't processable - e.g. is a svg file)

* Added reference to Orchard.MediaLibrary.
2024-02-29 19:39:32 +01:00
Matteo Piovanelli
c7d10fd0be When chaining tokens, if nothing was selected in a CPF, evaluation would log (#8763)
and error because it would seek an item out of the range of the array.
2024-02-29 19:38:48 +01:00
Andrea Piovanelli
90dc993e83 Using content item's ContentManager for lazy field loading instead of the injected one (#8761) 2024-02-29 19:37:54 +01:00
Alessandro Agostini
44bfa390bc Feature/maxlengthsetting (#8719)
* added MaxLength setting for TextField

# Conflicts:
#	src/Orchard.Web/Modules/Orchard.Taxonomies/Settings/TaxonomyFieldEditorEvents.cs

* added MaxLength setting for TitlePart

* added missing files

* Removed where clause

* changed title length to a constant and updated the recipe

* added comment to remind people to update the migration when they change the constant introduced previously

* fixed hint text for title

* fixed maxLength initialization in TitlePartSettings.cshtml

* MaxTitleLength constant is now Pascal case

* Correction on constant spelling in TitlePartSettings shape.

---------

Co-authored-by: Andrea Piovanelli <andrea.piovanelli@laser-group.com>
2024-02-21 11:28:09 +01:00
Andrea Piovanelli
eb09ab7f95 Added data annotation to have a proper validation on MenuText length based on its maximum length on database. (#8757) 2024-02-21 11:21:13 +01:00
Andrea Piovanelli
d46f26d4c7 Added chain to Slug token to enable TextTokens for Autoroute configuration. (#8755) 2024-02-21 11:18:33 +01:00
RichieOrtiz
90b104ed74 Updated XML helper to support storing and parsing of Guid (#8717)
* Updated XML helper to support storing and parsing of Guid

* Adding Guid and Guid? assertions to XmlHelperTests

* Restoring XmlHelper

* Adding Guid and Guid? assertions to XmlHelperTests

---------

Co-authored-by: Benedek Farkas <benedek.farkas@lombiq.com>
2024-02-07 10:09:07 +01:00
Matteo Piovanelli
97648ed5a2 Implemented ability to add localizations of selected terms to filter (#8730) 2024-01-19 16:41:29 +01:00
Andrea Piovanelli
d943fbd83e Added StringComparer and forced lowercase where needed to ensure matching paths to ignore casing. (#8743) 2024-01-19 10:29:52 +01:00
Matteo Piovanelli
e013e00dd4 Prevent TermsFilter from having to deal with empty strings (#8727)
* Prevent TermsFilter from having to deal with empty strings:
filter them out before parsing them to int
in form, convert taxonomies to OptionGroups rather than options with no value

* Update src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs

Co-authored-by: Sébastien Ros <sebastienros@gmail.com>

---------

Co-authored-by: Sébastien Ros <sebastienros@gmail.com>
2024-01-15 17:15:33 +01:00
Hermes Sbicego
9644ceda1f self closing divs ar not a W3C valid markup: Self-closing syntax (/>) used on a non-void HTML element. Ignoring the slash and treating as a start tag. (#8738) 2023-11-17 21:44:27 +01:00
Hermes Sbicego
4e73190ae5 Makes upgrade to Mailkit fully backward compatible 2023-11-10 08:49:36 +01:00
Andrea Piovanelli
03884cbd64 Lazy field loading using content item ContentManager instead of the injected one. (#8725)
* Lazy field loading using content item ContentManager instead of the injected one.

* Removed unused _contentManager variable
2023-10-27 09:22:24 +02:00
Hermes Sbicego
a4be7c68cb Fixes null culture (#8723)
Fixes null culture bug and prevents to query the database if the requested culture is null or empty
2023-09-29 08:42:13 +02:00
Hermes Sbicego
ba0daf3cb0 Improve Orchard.Layouts UX (#8721) 2023-09-01 10:23:36 +02:00
Lucio Fassio
b854839a28 Implements the "scale" filter to prevent image degradation (#8713) 2023-07-31 15:29:15 +02:00
Hermes Sbicego
d8bb23a4c4 Update SslSettingsPartHandler.cs (#8715)
Adds the OnUpdated handler in order to Invalidate the cache of the settings
2023-07-21 08:03:42 +02:00
József Horváth
274b4416ec Using MailKit instead of SmtpClient (ORCH-267) (#8707)
* Using MailKit instead of SmtpClient

* Removing 2 more references to System.Net.Http that we hopefully don't need at all anymore

* Attempting to fix Razor compilation warning about Orchard.Email's reference to System.Net.Http

* Improving SmtpSettings.cshtml a bit (port number restrictions, user name box width)

* Fixing encription method is not persisted

* Adding migration step to migrate from EnableSsl to EncryptionMethod in SmtpSettingsPart

* Code styling/simplifications

* Using infoset default values instead of Migrations to keep SSL settings when upgrading to MailKit

---------

Co-authored-by: Lombiq <github@lombiq.com>
Co-authored-by: Benedek Farkas <benedek.farkas@lombiq.com>
2023-07-17 09:58:16 +02:00
Matteo Piovanelli
729f8ddd75 Cache CultureRecords by both Id and Name (#8708) 2023-07-07 09:58:17 +02:00
Matteo Piovanelli
bdba35c704 Fix bug in updating settings for fields (#8703) 2023-06-30 08:51:09 +02:00
Marek Dzikiewicz
05079efdd3 Fix mapping records in nested namespaces (#8681) (#8682) 2023-06-29 10:04:23 -07:00
Benedek Farkas
731b223f82 8686: Fixing build and tests on 1.10.x (#8687)
* Fixing that RecipeManagerTests failed due to HttpContext not being available

* Fixing OwnerEditor tests in CommonPartProviderTests as the owner editor now checks for a different permission since 5b0c82d1ad

* Fixing typo in CommonPartProviderTests.UpdateModelStub class name

* Fixing that test cases for invalid path in FileSystemStorageProviderTests broke in a3e9bef3ca (issue #6802, PR #6919)

I should review PRs more carefully!

* Fixing CurrentCultureWorkContextTests

* Fixing indentation in DefaultDateFormatterTests

* Updating Orchard.Azure.Web's required version of System.Web.Mvc to match the rest of the solution

* Orchard.Specs: Fixing assembly loading errors when starting up the web host by adding binding redirects

* Adding empty compile workflow from dev

* Adding the compile workflow's actual contents

* Changing default shell to pwsh (msbuild was not found in cmd?)

* Adding msbuild to PATH

* Removing unused references to System.Net.Http

* Replacing System.Net.Http references with its NuGet package to pin the correct version number (experimental)

* Upgrading Microsoft.CodeDom.Providers.DotNetCompilerPlatform to 4.1.0 (latest) to get rid of old System.Http.Net dependency

* Orchard.proj: Spec target actually depends on only the Compile target, not Package-Stage (experimental)

* Compile workflow: Testing the Test and Spec targets

* Fixing Test step

* Fixing compile workflow to also mark Razor compilation warnings as errors

* Restoring Orchard.Specs/Hosting/Orchard.Web/Web.config to match Orchard.Web's web.config closer

so that it loads assemblies from the Dependencies folder.
This fixes the error with Autofac not being able to resolve dependencies for DefaultOrchardShell

* Orchard.Specs/Hosting/Orchard.Web/Global.asax.cs: Workaround for AntiForgeryToken bug in ASP.NET MVC since version 5.2.4

https://github.com/aspnet/AspNetWebStack/issues/162

* Revert "Replacing System.Net.Http references with its NuGet package to pin the correct version number (experimental)"

This reverts commit 087f2849b1.

* Revert "Upgrading Microsoft.CodeDom.Providers.DotNetCompilerPlatform to 4.1.0 (latest) to get rid of old System.Http.Net dependency"

This reverts commit be2ba866e3.

* Reverting the addition of assembly binding redirects to Orchard.Specs/Hosting/Simple.Web/Web.config

since it doesn't need them like Orchard.Specs/Hosting/Orchard.Web/Web.config does

* Disabling Test and Spec execution for now

* Orchard.Framework: Making the System.Net.Http not-private to prevent an outdated version sticking around

* Orchard.Workflows: Adding assembly binding redirect for System.Net.Http to avoid Razor compilation warning

* Moving the System.Net.Http assembly redirect to Orchard.Web

* Specs: Fixing "I can create browse blog posts on several pages" Blog test's usage of "I should not see" and correcting the parameters too

because unlike "I should see", this is not a regex match, just contains

* Specs: Fixing "I can create browse blog posts on several pages" Blog test's flakyness due to timing

because the blog posts are created quickly after one another and the lack of millisecond-precision can cause
the blog posts to appear out of order of creation

* Specs: Media test simplified since the Orchard.Media feature is deprecated

* Adding step to the Compile workflow to upload the MSBuild binlog results

* Pinning the referenced version of System.Net.Http to 4.2.0.0 to prevent Razor compilation warning

System.Net.Http is known to have such problems across different framework versions ways of referencing it

The original warning is:
ASPNETCOMPILER : error : The following assembly has dependencies on a version of the .NET Framework that is higher than the target and might not load correctly during runtime causing a failure: Orchard.Workflows, Version=1.10.3.0, Culture=neutral, PublicKeyToken=null. The dependencies are: System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. You should either ensure that the dependent assembly is correct for the target framework, or ensure that the target framework you are addressing is that of the dependent assembly. [D:\a\Orchard\Orchard\src\Orchard.Web\Modules\Orchard.Workflows\Orchard.Workflows.csproj

* Re-enabling the Test step

* Re-enabling the Specs step

* Marking System.Net.Http references as private (copy local) to make sure that it's always available, because it requires a specific version

* Revert "Marking System.Net.Http references as private (copy local) to make sure that it's always available, because it requires a specific version"

This reverts commit e4f5632236.

* Orchard.Specs: Adding Settings feature

* Orchard.Specs: Updating DateTime.CreatingAndUsingDateTimeFieldsInAnotherCulture structure without functional change

* Orchard.Specs: Updating Settings.AddingANewSiteCultureAndSelectingItAsTheDefaultWorks to correctly detect that a culture that wasn't added before can be set as default

* Fixing Newtonsoft.Json references

* Specs: Workaround for the DefineDefaultCulture binding and removing the Settings feature which is now redundant with CreatingAndUsingDateTimeFieldsInAnotherCulture

* Updating the compile workflow to run the build + tests on PR, dev and 1.10.x commits

* Adding the compile workflow to the solution
2023-06-28 15:11:46 +02:00
570 changed files with 2566 additions and 2375 deletions

69
.github/workflows/compile.yml vendored Normal file
View File

@@ -0,0 +1,69 @@
name: Compile
on:
workflow_dispatch:
pull_request:
push:
branches:
- dev
- 1.10.x
jobs:
compile-dotnet:
name: Compile .NET solution
defaults:
run:
shell: pwsh
runs-on: windows-latest
steps:
- name: Clone repository
uses: actions/checkout@v4.1.1
- name: Restore NuGet packages
run: nuget restore src/Orchard.sln
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Compile
run: msbuild Orchard.proj /m /v:minimal /t:Compile /p:MvcBuildViews=true /p:TreatWarningsAsErrors=true -WarnAsError
- name: Test
run: msbuild Orchard.proj /m /v:minimal /t:Test
compile-node:
name: Compile client-side assets
defaults:
run:
shell: pwsh
runs-on: windows-latest
steps:
- name: Clone repository
uses: actions/checkout@v4.1.1
- name: Setup NodeJS
uses: actions/setup-node@v4.0.2
with:
node-version: '7'
- name: Setup NPM packages
working-directory: ./src
run: |
npm install --loglevel warn
# Install gulp globally to be able to run the rebuild task, using the same version as in the project.
$gulpVersion = (Get-Content Package.json -Raw | ConvertFrom-Json).devDependencies.gulp
Start-Process npm -NoNewWindow -Wait -ArgumentList "install gulp@$gulpVersion -g --loglevel warn"
- name: Rebuild client-side assets
working-directory: ./src
run: |
gulp rebuild
git add . # To make line ending changes "disappear".
$gitStatus = (git status --porcelain)
if ($gitStatus)
{
throw ("Client-side assets are not up-to-date. Please run 'gulp rebuild' and commit the changes.`n" +
[System.String]::Join([System.Environment]::NewLine, $gitStatus))
}

4
.gitignore vendored
View File

@@ -1,5 +1,7 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
**/.vs/**
src/Rebracer.xml
# User-specific files
*.suo
@@ -190,5 +192,3 @@ src/Orchard.Azure/Orchard.Azure.CloudService/Staging/
#enable all /lib artifacts
!lib/**/*.*
*/.vs/*
src/Rebracer.xml

View File

@@ -3,31 +3,18 @@
REM Necessary for the InstallDir variable to work inside the MsBuild-finding loop below.
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "usebackq tokens=1* delims=: " %%i in (`lib\vswhere\vswhere -latest -version "[15.0,16.0)" -requires Microsoft.Component.MSBuild`) do (
for /f "usebackq tokens=1* delims=: " %%i in (`lib\vswhere\vswhere -latest -version "[16.0,18.0)" -requires Microsoft.Component.MSBuild`) do (
if /i "%%i"=="installationPath" (
set InstallDir=%%j
echo !InstallDir!
if exist "!InstallDir!\MSBuild\15.0\Bin\MSBuild.exe" (
echo "Using MSBuild from Visual Studio 2017"
set msbuild="!InstallDir!\MSBuild\15.0\Bin\MSBuild.exe"
if exist "!InstallDir!\MSBuild\Current\Bin\MSBuild.exe" (
echo "Using MSBuild from !InstallDir!"
set msbuild="!InstallDir!\MSBuild\Current\Bin\MSBuild.exe"
goto build
)
)
)
FOR %%b in (
"%VS140COMNTOOLS%\vsvars32.bat"
"%VS120COMNTOOLS%\vsvars32.bat"
"%VS110COMNTOOLS%\vsvars32.bat"
) do (
if exist %%b (
echo "Using MSBuild from %%b"
call %%b
set msbuild="msbuild"
goto build
)
)
echo "Unable to detect suitable environment. Build may not succeed."
:build

View File

@@ -126,30 +126,26 @@
</Target>
<Target Name="Compile">
<CallTarget Targets="DevCompile"/>
<!-- Compile to "OutputFolder" -->
<MSBuild
Projects="$(Solution)"
Targets="Build"
Properties="Configuration=$(Configuration);OutputPath=$(CompileFolder);MvcBuildViews=false" />
Properties="Configuration=$(Configuration);OutputPath=$(CompileFolder)" />
</Target>
<Target Name="DevCompile">
<!-- To make sure that Roslyn tools are available, since it's included with Orchard.Web, which is not referenced by
other projects, so it will be built towards the end. -->
<MSBuild
Projects="$(OrchardWebFolder)\Orchard.Web.csproj"
Targets="CopyRoslynCompilerFilesToOutputDirectory" />
<!-- Compile to "regular" output folder for devs using VS locally -->
<MSBuild
Projects="$(Solution)"
Targets="Build"
Properties="Configuration=$(Configuration);MvcBuildViews=$(MvcBuildViews)" />
</Target>
<Target Name="BuildViews">
<!-- To make sure that Roslyn tools are available, even if the Compile task was not called before this. -->
<MSBuild
Projects="$(OrchardWebFolder)\Orchard.Web.csproj"
Targets="CopyRoslynFilesToOutputFolder"
Properties="Configuration=$(Configuration)" />
<!-- The actual compilation with views also compiled. -->
<MSBuild
Projects="$(Solution)"
Targets="Build"
Properties="Configuration=$(Configuration);MvcBuildViews=true" />
</Target>
<Target Name="CompileMsBuildTasks">
<MSBuild
@@ -181,7 +177,7 @@
<NUnit Assemblies="@(TestAssemblies)" ToolPath="@(NUnitPackageToolsFolder)" WorkingDirectory="$(CompileFolder)" OutputXmlFile="$(BuildFolder)\Orchard.Tests.xml" ExcludeCategory="longrunning" />
</Target>
<Target Name="Spec" DependsOnTargets="Package-Stage">
<Target Name="Spec" DependsOnTargets="Compile">
<!-- Running SpecFlow tests -->
<CreateItem Include="$(CompileFolder)\*.Specs.*dll">
<Output TaskParameter="Include" ItemName="SpecAssemblies" />
@@ -212,7 +208,6 @@
<Stage-Media Include="$(SrcFolder)\Orchard.Web\Media\OrchardLogo.png" />
<Stage-PoFiles Include="$(SrcFolder)\Orchard.Web\**\*.po" />
<Stage-Core Include="$(WebSitesFolder)\Orchard.Core\**\*" Exclude="$(WebSitesFolder)\Orchard.Core\**\bin\**\*" />
<Stage-Roslyn Include="$(SrcFolder)\Orchard.Web\bin\roslyn\*" />
<!-- Get list of module names from the module definition files within ModulesSrcFolder -->
<Stage-Modules-Definitions Include="$(ModulesSrcFolder)\**\Module.txt" />
@@ -254,7 +249,7 @@
<!-- Copying module binaries is somewhat tricky: From a module "bin" directory, we
only want to include the files that are _not_ already present in
the "Orchard.Web\Bin" folder (except for "Orchard.Web\bin\roslyn"). -->
the "Orchard.Web\Bin" folder. -->
<FilterModuleBinaries
ModulesBinaries="@(Stage-Modules-Binaries)"
OrchardWebBinaries="@(Stage-Orchard-Web-Bins)">
@@ -284,7 +279,6 @@
<Copy SourceFiles="@(Stage-Themes-Custom)" DestinationFiles="@(Stage-Themes-Custom->'$(StageFolder)\Themes\%(ThemeName)\%(RecursiveDir)%(Filename)%(Extension)')"/>
<Copy SourceFiles="@(Stage-Themes-Binaries-Unique)" DestinationFiles="@(Stage-Themes-Binaries-Unique->'$(StageFolder)\Themes\%(ThemeName)\%(RecursiveDir)%(Filename)%(Extension)')"/>
<Copy SourceFiles="@(Stage-Themes-Sources)" DestinationFolder="$(StageFolder)\Themes\%(RecursiveDir)"/>
<Copy SourceFiles="@(Stage-Roslyn)" DestinationFolder="$(StageFolder)\bin\roslyn"/>
<MakeDir Directories="$(StageFolder)\App_Data"/>
<WriteLinesToFile File="$(StageFolder)\App_Data\_marker.txt" Lines="some_text" Overwrite="true"/>

Binary file not shown.

View File

@@ -15,7 +15,7 @@
<RootNamespace>Orchard.Azure.Web</RootNamespace>
<AssemblyName>Orchard.Azure.Web</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<UseIISExpress>false</UseIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
@@ -138,8 +138,8 @@
<HintPath>..\packages\MySql.Data.6.7.9\lib\net45\MySql.Data.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Npgsql, Version=2.2.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL">
@@ -191,8 +191,8 @@
<Reference Include="System.Web.Abstractions">
<Private>False</Private>
</Reference>
<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
<Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">

View File

@@ -129,7 +129,6 @@
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -2,7 +2,7 @@
<packages>
<package id="Autofac" version="3.5.2" targetFramework="net451" />
<package id="log4net" version="2.0.3" targetFramework="net451" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net451" />
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net451" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net451" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net451" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.1" targetFramework="net451" />
@@ -11,7 +11,7 @@
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net451" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net451" />
<package id="MySql.Data" version="6.7.9" targetFramework="net451" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net451" />
<package id="Npgsql" version="2.2.3" targetFramework="net451" />
<package id="Orchard.NuGet.Core" version="1.1.0.0" targetFramework="net451" />
<package id="Owin" version="1.0" targetFramework="net451" />

View File

@@ -177,7 +177,7 @@ namespace Orchard.Core.Tests.Common.Providers {
contentManager.UpdateEditor(item.ContentItem, updateModel.Object);
}
class UpdatModelStub : IUpdateModel {
class UpdateModelStub : IUpdateModel {
ModelStateDictionary _modelState = new ModelStateDictionary();
@@ -215,11 +215,11 @@ namespace Orchard.Core.Tests.Common.Providers {
var user = contentManager.New<IUser>("User");
_authn.Setup(x => x.GetAuthenticatedUser()).Returns(user);
_authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true);
_authz.Setup(x => x.TryCheckAccess(OwnerEditorPermissions.MayEditContentOwner, user, item)).Returns(true);
item.Owner = user;
var updater = new UpdatModelStub() { Owner = null };
var updater = new UpdateModelStub() { Owner = null };
contentManager.UpdateEditor(item.ContentItem, updater);
}
@@ -232,11 +232,11 @@ namespace Orchard.Core.Tests.Common.Providers {
var user = contentManager.New<IUser>("User");
_authn.Setup(x => x.GetAuthenticatedUser()).Returns(user);
_authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true);
_authz.Setup(x => x.TryCheckAccess(OwnerEditorPermissions.MayEditContentOwner, user, item)).Returns(true);
item.Owner = user;
var updater = new UpdatModelStub() { Owner = "" };
var updater = new UpdateModelStub() { Owner = "" };
_container.Resolve<DefaultShapeTableManagerTests.TestShapeProvider>().Discover =
b => b.Describe("Parts_Common_Owner_Edit").From(TestFeature())
@@ -255,11 +255,11 @@ namespace Orchard.Core.Tests.Common.Providers {
var user = contentManager.New<IUser>("User");
_authn.Setup(x => x.GetAuthenticatedUser()).Returns(user);
_authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true);
_authz.Setup(x => x.TryCheckAccess(OwnerEditorPermissions.MayEditContentOwner, user, item)).Returns(true);
item.Owner = user;
var updater = new UpdatModelStub() { Owner = "" };
var updater = new UpdateModelStub() { Owner = "" };
_container.Resolve<DefaultShapeTableManagerTests.TestShapeProvider>().Discover =
b => b.Describe("Parts_Common_Owner_Edit").From(TestFeature())
@@ -384,7 +384,7 @@ namespace Orchard.Core.Tests.Common.Providers {
_clock.Advance(TimeSpan.FromMinutes(1));
var editUtc = _clock.UtcNow;
var updater = new UpdatModelStub() { Owner = "" };
var updater = new UpdateModelStub() { Owner = "" };
contentManager.UpdateEditor(item.ContentItem, updater);
Assert.That(item.CreatedUtc, Is.EqualTo(createUtc));

View File

@@ -11,6 +11,7 @@
<RootNamespace>Orchard.Core.Tests</RootNamespace>
<AssemblyName>Orchard.Core.Tests</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>7.3</LangVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -41,7 +42,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
@@ -53,7 +53,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>

View File

@@ -11,6 +11,7 @@
<RootNamespace>Orchard.Profile</RootNamespace>
<AssemblyName>Orchard.Profile</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>7.3</LangVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -41,7 +42,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
@@ -53,7 +53,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>

View File

@@ -1,15 +1,7 @@
using System;
using NUnit.Framework;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Aspects;
using Orchard.Core.Contents;
using Orchard.Data;
using Orchard.Security;
using Orchard.Security.Permissions;
using System.Linq;
using Orchard.Localization.Services;
using Orchard.Specs.Hosting.Orchard.Web;
using TechTalk.SpecFlow;
using Orchard.Localization.Services;
using System.Linq;
namespace Orchard.Specs.Bindings {
[Binding]
@@ -20,7 +12,7 @@ namespace Orchard.Specs.Bindings {
var webApp = Binding<WebAppHosting>();
webApp.Host.Execute(() => {
using ( var environment = MvcApplication.CreateStandaloneEnvironment("Default") ) {
using (var environment = MvcApplication.CreateStandaloneEnvironment("Default")) {
var orchardServices = environment.Resolve<IOrchardServices>();
var cultureManager = environment.Resolve<ICultureManager>();
@@ -30,6 +22,11 @@ namespace Orchard.Specs.Bindings {
}
orchardServices.WorkContext.CurrentSite.SiteCulture = cultureName;
// Restarting the shell to reset the cache, because the cache entry storing the list of available
// cultures isn't invalidated by the signal in DefaultCultureManager.ListCultures when running
// inside the test webhost.
MvcApplication.RestartTenant("Default");
}
});
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Web;
using Castle.Core.Logging;
using HtmlAgilityPack;
@@ -364,6 +365,11 @@ namespace Orchard.Specs.Bindings {
}
}
[When(@"I wait ""(.*)""")]
public void WhenIWait(int waitMilliseconds) {
Thread.Sleep(waitMilliseconds);
}
[Then(@"the status should be (.*) ""(.*)""")]
public void ThenTheStatusShouldBe(int statusCode, string statusDescription) {
Assert.That(Details.StatusCode, Is.EqualTo(statusCode));

View File

@@ -171,6 +171,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 1 |
@@ -179,6 +180,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 2 |
@@ -187,6 +189,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 3 |
@@ -195,6 +198,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 4 |
@@ -203,6 +207,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 5 |
@@ -211,6 +216,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 6 |
@@ -219,6 +225,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 7 |
@@ -227,6 +234,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 8 |
@@ -235,6 +243,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 9 |
@@ -243,6 +252,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 10 |
@@ -251,6 +261,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 11 |
@@ -259,6 +270,7 @@ Scenario: I can create browse blog posts on several pages
And I go to "admin/blogs"
And I follow "My Blog"
And I follow "New Post" where class name has "primaryAction"
And I wait "1000"
And I fill in
| name | value |
| Title.Title | My Post 12 |
@@ -269,12 +281,12 @@ Scenario: I can create browse blog posts on several pages
Then I should see "<h1[^>]*>.*?My Blog.*?</h1>"
And I should see "<h1[^>]*>.*?My Post 12.*?</h1>"
And I should see "<h1[^>]*>.*?My Post 11.*?</h1>"
And I should not see "<h1[^>]*>.*?My Post 10.*?</h1>"
And I should not see "My Post 2"
When I go to "my-blog?page=2"
Then I should see "<h1[^>]*>.*?My Blog.*?</h1>"
And I should see "<h1[^>]*>.*?My Post 1.*?</h1>"
And I should see "<h1[^>]*>.*?My Post 2.*?</h1>"
And I should not see "<h1[^>]*>.*?My Post 3.*?</h1>"
And I should not see "My Post 3"
Scenario: I can create a new blog with a percent sign in the title and it gets stripped out of the slug
Given I have installed Orchard

View File

@@ -525,6 +525,8 @@ this.ScenarioSetup(scenarioInfo);
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 173
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 174
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table15 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -532,18 +534,20 @@ this.ScenarioSetup(scenarioInfo);
table15.AddRow(new string[] {
"Title.Title",
"My Post 1"});
#line 174
#line 175
testRunner.And("I fill in", ((string)(null)), table15, "And ");
#line 177
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 178
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 179
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 180
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 181
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 182
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 183
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table16 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -551,18 +555,20 @@ this.ScenarioSetup(scenarioInfo);
table16.AddRow(new string[] {
"Title.Title",
"My Post 2"});
#line 182
#line 184
testRunner.And("I fill in", ((string)(null)), table16, "And ");
#line 185
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 186
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 187
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 188
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 189
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 190
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 191
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 192
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table17 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -570,18 +576,20 @@ this.ScenarioSetup(scenarioInfo);
table17.AddRow(new string[] {
"Title.Title",
"My Post 3"});
#line 190
testRunner.And("I fill in", ((string)(null)), table17, "And ");
#line 193
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 194
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 195
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I fill in", ((string)(null)), table17, "And ");
#line 196
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 197
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 198
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 199
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 200
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 201
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table18 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -589,18 +597,20 @@ this.ScenarioSetup(scenarioInfo);
table18.AddRow(new string[] {
"Title.Title",
"My Post 4"});
#line 198
testRunner.And("I fill in", ((string)(null)), table18, "And ");
#line 201
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 202
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 203
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 204
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I fill in", ((string)(null)), table18, "And ");
#line 205
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 206
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 207
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 208
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 209
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 210
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table19 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -608,18 +618,20 @@ this.ScenarioSetup(scenarioInfo);
table19.AddRow(new string[] {
"Title.Title",
"My Post 5"});
#line 206
testRunner.And("I fill in", ((string)(null)), table19, "And ");
#line 209
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 210
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 211
testRunner.And("I fill in", ((string)(null)), table19, "And ");
#line 214
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 215
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 216
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 212
#line 217
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 213
#line 218
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 219
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table20 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -627,18 +639,20 @@ this.ScenarioSetup(scenarioInfo);
table20.AddRow(new string[] {
"Title.Title",
"My Post 6"});
#line 214
testRunner.And("I fill in", ((string)(null)), table20, "And ");
#line 217
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 218
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 219
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 220
testRunner.And("I fill in", ((string)(null)), table20, "And ");
#line 223
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 224
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 225
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 226
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 221
#line 227
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 228
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table21 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -646,18 +660,20 @@ this.ScenarioSetup(scenarioInfo);
table21.AddRow(new string[] {
"Title.Title",
"My Post 7"});
#line 222
testRunner.And("I fill in", ((string)(null)), table21, "And ");
#line 225
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 226
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 227
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 228
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 229
testRunner.And("I fill in", ((string)(null)), table21, "And ");
#line 232
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 233
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 234
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 235
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 236
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 237
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table22 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -665,27 +681,8 @@ this.ScenarioSetup(scenarioInfo);
table22.AddRow(new string[] {
"Title.Title",
"My Post 8"});
#line 230
testRunner.And("I fill in", ((string)(null)), table22, "And ");
#line 233
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 234
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 235
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 236
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 237
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table23 = new TechTalk.SpecFlow.Table(new string[] {
"name",
"value"});
table23.AddRow(new string[] {
"Title.Title",
"My Post 9"});
#line 238
testRunner.And("I fill in", ((string)(null)), table23, "And ");
testRunner.And("I fill in", ((string)(null)), table22, "And ");
#line 241
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 242
@@ -696,6 +693,29 @@ this.ScenarioSetup(scenarioInfo);
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 245
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 246
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table23 = new TechTalk.SpecFlow.Table(new string[] {
"name",
"value"});
table23.AddRow(new string[] {
"Title.Title",
"My Post 9"});
#line 247
testRunner.And("I fill in", ((string)(null)), table23, "And ");
#line 250
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 251
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 252
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 253
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 254
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 255
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table24 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -703,18 +723,20 @@ this.ScenarioSetup(scenarioInfo);
table24.AddRow(new string[] {
"Title.Title",
"My Post 10"});
#line 246
#line 256
testRunner.And("I fill in", ((string)(null)), table24, "And ");
#line 249
#line 259
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 250
#line 260
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 251
#line 261
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 252
#line 262
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 253
#line 263
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 264
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table25 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -722,18 +744,20 @@ this.ScenarioSetup(scenarioInfo);
table25.AddRow(new string[] {
"Title.Title",
"My Post 11"});
#line 254
#line 265
testRunner.And("I fill in", ((string)(null)), table25, "And ");
#line 257
#line 268
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 258
#line 269
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 259
#line 270
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 260
#line 271
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 261
#line 272
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 273
testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table26 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -741,34 +765,34 @@ this.ScenarioSetup(scenarioInfo);
table26.AddRow(new string[] {
"Title.Title",
"My Post 12"});
#line 262
testRunner.And("I fill in", ((string)(null)), table26, "And ");
#line 265
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 266
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 267
testRunner.Then("I should see \"Your Blog Post has been created.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 268
testRunner.When("I go to \"my-blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 269
testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 270
testRunner.And("I should see \"<h1[^>]*>.*?My Post 12.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 271
testRunner.And("I should see \"<h1[^>]*>.*?My Post 11.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 272
testRunner.And("I should not see \"<h1[^>]*>.*?My Post 10.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 273
testRunner.When("I go to \"my-blog?page=2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 274
testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 275
testRunner.And("I should see \"<h1[^>]*>.*?My Post 1.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 276
testRunner.And("I should see \"<h1[^>]*>.*?My Post 2.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I fill in", ((string)(null)), table26, "And ");
#line 277
testRunner.And("I should not see \"<h1[^>]*>.*?My Post 3.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 278
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 279
testRunner.Then("I should see \"Your Blog Post has been created.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 280
testRunner.When("I go to \"my-blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 281
testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 282
testRunner.And("I should see \"<h1[^>]*>.*?My Post 12.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 283
testRunner.And("I should see \"<h1[^>]*>.*?My Post 11.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 284
testRunner.And("I should not see \"My Post 2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 285
testRunner.When("I go to \"my-blog?page=2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 286
testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 287
testRunner.And("I should see \"<h1[^>]*>.*?My Post 1.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 288
testRunner.And("I should see \"<h1[^>]*>.*?My Post 2.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 289
testRunner.And("I should not see \"My Post 3\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
this.ScenarioCleanup();
}
@@ -780,11 +804,11 @@ this.ScenarioSetup(scenarioInfo);
{
TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can create a new blog with a percent sign in the title and it gets stripped out" +
" of the slug", ((string[])(null)));
#line 279
#line 291
this.ScenarioSetup(scenarioInfo);
#line 280
#line 292
testRunner.Given("I have installed Orchard", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");
#line 281
#line 293
testRunner.When("I go to \"admin/blogs/create\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden
TechTalk.SpecFlow.Table table27 = new TechTalk.SpecFlow.Table(new string[] {
@@ -793,15 +817,15 @@ this.ScenarioSetup(scenarioInfo);
table27.AddRow(new string[] {
"Title.Title",
"My Blog"});
#line 282
#line 294
testRunner.And("I fill in", ((string)(null)), table27, "And ");
#line 285
#line 297
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 286
#line 298
testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 287
#line 299
testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 288
#line 300
testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
TechTalk.SpecFlow.Table table28 = new TechTalk.SpecFlow.Table(new string[] {
@@ -813,15 +837,15 @@ this.ScenarioSetup(scenarioInfo);
table28.AddRow(new string[] {
"Body.Text",
"Hi there."});
#line 289
#line 301
testRunner.And("I fill in", ((string)(null)), table28, "And ");
#line 293
#line 305
testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 294
#line 306
testRunner.And("I go to \"my-blog/my-post-with-a-sign\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 295
#line 307
testRunner.Then("I should see \"<h1[^>]*>.*?My Post with a % Sign.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 296
#line 308
testRunner.And("I should see \"Hi there.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
this.ScenarioCleanup();

View File

@@ -173,7 +173,7 @@ Scenario: Creating and using date time fields in another culture
And I go to "Admin/ContentTypes/"
Then I should see "Event"
# Adding a Date field
# Adding a Date field and changing its settings
When I go to "Admin/ContentTypes/Edit/Event"
And I follow "Add Field"
And I fill in
@@ -184,15 +184,15 @@ Scenario: Creating and using date time fields in another culture
And I hit "Save"
And I am redirected
Then I should see "The \"Date of the event\" field has been added."
# Date & Time are inputted based on current culture
When I have "fr-FR" as the default culture
And I go to "Admin/ContentTypes/Edit/Event"
When I go to "Admin/ContentTypes/Edit/Event"
And I fill in
| name | value |
| Fields[EventDate].DateTimeFieldSettings.Display | DateAndTime |
| Fields[EventDate].DateTimeFieldSettings.Required | true |
And I hit "Save"
# Date & Time are validated based on current culture
When I have "fr-FR" as the default culture
When I go to "Admin/Contents/Create/Event"
And I fill in
| name | value |

View File

@@ -452,10 +452,8 @@ this.ScenarioSetup(scenarioInfo);
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 186
testRunner.Then("I should see \"The \\\"Date of the event\\\" field has been added.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 189
testRunner.When("I have \"fr-FR\" as the default culture", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 190
testRunner.And("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 187
testRunner.When("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden
TechTalk.SpecFlow.Table table18 = new TechTalk.SpecFlow.Table(new string[] {
"name",
@@ -466,10 +464,12 @@ this.ScenarioSetup(scenarioInfo);
table18.AddRow(new string[] {
"Fields[EventDate].DateTimeFieldSettings.Required",
"true"});
#line 191
#line 188
testRunner.And("I fill in", ((string)(null)), table18, "And ");
#line 195
#line 192
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 195
testRunner.When("I have \"fr-FR\" as the default culture", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 196
testRunner.When("I go to \"Admin/Contents/Create/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden

View File

@@ -4,10 +4,9 @@
<add key="webpages:Enabled" value="false" />
<add key="aspnet:RoslynCompilerLocation" value="..\bin\roslyn" />
</appSettings>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:latest" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
<system.web>

View File

@@ -1,5 +1,6 @@
using System.Linq;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Routing;
using Autofac;
@@ -16,6 +17,7 @@ namespace Orchard.Specs.Hosting.Orchard.Web {
}
protected void Application_Start() {
AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
RegisterRoutes(RouteTable.Routes);
_container = OrchardStarter.CreateHostContainer(MvcSingletons);
_host = _container.Resolve<IOrchardHost>();
@@ -29,6 +31,7 @@ namespace Orchard.Specs.Hosting.Orchard.Web {
protected void Application_BeginRequest() {
Context.Items["originalHttpContext"] = Context;
HttpContext.Current.Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
_host.BeginRequest();
}
@@ -66,7 +69,7 @@ namespace Orchard.Specs.Hosting.Orchard.Web {
State = TenantState.Uninitialized
};
}
return _host.CreateStandaloneEnvironment(settings);
}
}

View File

@@ -4,10 +4,9 @@
<add key="webpages:Enabled" value="false" />
<add key="aspnet:RoslynCompilerLocation" value="..\bin\roslyn" />
</appSettings>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:latest" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
<system.web>

View File

@@ -33,7 +33,7 @@
<!-- Registering Roslyn as a compiler for Dynamic Compilation. -->
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:latest" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
<system.web>
@@ -141,4 +141,22 @@
<mimeMap fileExtension=".woff2" mimeType="font/woff2" />
</staticContent>
</system.webServer>
<runtime>
<gcServer enabled="true" />
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="App_Data/Dependencies" />
<dependentAssembly>
<assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.4000" newVersion="4.1.0.4000" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -1,31 +1,13 @@
Feature: Media management
In order to reference images and such from content
As an author
I want to upload and manage files in a media folder
I want to access the Media Library
Scenario: Media admin is available
Given I have installed Orchard
And I have installed "Orchard.Media"
And I have installed "Orchard.MediaLibrary"
# Accessing the media page
When I go to "admin/media"
Then I should see "Media"
And the status should be 200 "OK"
# Creating a folder
When I go to "admin/media/create"
And I fill in
| name | value |
| Name | Hello World |
And I hit "Save"
And I am redirected
Then I should see "Media"
And I should see "Hello World"
And the status should be 200 "OK"
# Editing a media with limited rights
When I go to "admin/media/edit?name=..\..\bin&mediaPath=..\..\bin"
And I am redirected
Then I should see "Media"
And I should see "Editing failed: Invalid path"
And the status should be 200 "OK"
# Accessing the Media Library page
When I go to "Admin/Orchard.MediaLibrary"
Then I should see "Media Library"
And the status should be 200 "OK"

View File

@@ -33,7 +33,7 @@ namespace Orchard.Specs
{
testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner();
TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Media management", " In order to reference images and such from content\r\n As an author\r\n I want to" +
" upload and manage files in a media folder", ProgrammingLanguage.CSharp, ((string[])(null)));
" access the Media Library", ProgrammingLanguage.CSharp, ((string[])(null)));
testRunner.OnFeatureStart(featureInfo);
}
@@ -75,44 +75,13 @@ this.ScenarioSetup(scenarioInfo);
#line 7
testRunner.Given("I have installed Orchard", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");
#line 8
testRunner.And("I have installed \"Orchard.Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("I have installed \"Orchard.MediaLibrary\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 11
testRunner.When("I go to \"admin/media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
testRunner.When("I go to \"Admin/Orchard.MediaLibrary\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 12
testRunner.Then("I should see \"Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"Media Library\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 13
testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 16
testRunner.When("I go to \"admin/media/create\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden
TechTalk.SpecFlow.Table table1 = new TechTalk.SpecFlow.Table(new string[] {
"name",
"value"});
table1.AddRow(new string[] {
"Name",
"Hello World"});
#line 17
testRunner.And("I fill in", ((string)(null)), table1, "And ");
#line 20
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 21
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 22
testRunner.Then("I should see \"Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 23
testRunner.And("I should see \"Hello World\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 24
testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 27
testRunner.When("I go to \"admin/media/edit?name=..\\..\\bin&mediaPath=..\\..\\bin\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 28
testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 29
testRunner.Then("I should see \"Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 30
testRunner.And("I should see \"Editing failed: Invalid path\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 31
testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line hidden
this.ScenarioCleanup();
}

View File

@@ -11,6 +11,7 @@
<RootNamespace>Orchard.Specs</RootNamespace>
<AssemblyName>Orchard.Specs</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>7.3</LangVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -41,7 +42,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
@@ -53,7 +53,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
@@ -535,4 +534,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>

View File

@@ -11,6 +11,7 @@
<RootNamespace>Orchard.Tests.Modules</RootNamespace>
<AssemblyName>Orchard.Tests.Modules</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>7.3</LangVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -41,7 +42,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
@@ -53,7 +53,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>

View File

@@ -13,7 +13,6 @@
<RootNamespace>Hello.World</RootNamespace>
<AssemblyName>Hello.World</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Xml;
@@ -14,6 +13,7 @@ using Orchard.Environment.Extensions.Folders;
using Orchard.Environment.Extensions.Loaders;
using Orchard.FileSystems.AppData;
using Orchard.FileSystems.WebSite;
using Orchard.Mvc;
using Orchard.Recipes.Events;
using Orchard.Recipes.Models;
using Orchard.Recipes.Services;
@@ -93,6 +93,7 @@ namespace Orchard.Tests.Modules.Recipes.Services {
builder.RegisterType<RecipeParser>().As<IRecipeParser>();
builder.RegisterType<StubWebSiteFolder>().As<IWebSiteFolder>();
builder.RegisterType<CustomRecipeHandler>().As<IRecipeHandler>();
builder.RegisterType<StubHttpContextAccessor>().As<IHttpContextAccessor>();
}
public override void Init() {

View File

@@ -1,4 +1,5 @@
using System.Net;
using System;
using System.Net;
using NUnit.Framework;
using Orchard.Warmup.Services;
@@ -20,7 +21,7 @@ namespace Orchard.Tests.Modules.Warmup {
[Test]
public void StatusCodeShouldBe404ForUnexistingResources() {
var download = _webDownloader.Download("http://orchardproject.net/yepyep");
var download = _webDownloader.Download("https://orchardcore.net/" + Guid.NewGuid());
Assert.That(download, Is.Not.Null);
Assert.That(download.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
Assert.That(download.Content, Is.Null);
@@ -28,7 +29,7 @@ namespace Orchard.Tests.Modules.Warmup {
[Test]
public void StatusCodeShouldBe200ForValidRequests() {
var download = _webDownloader.Download("http://orchardproject.net/");
var download = _webDownloader.Download("https://orchardcore.net/");
Assert.That(download, Is.Not.Null);
Assert.That(download.StatusCode, Is.EqualTo(HttpStatusCode.OK));
Assert.That(download.Content, Is.Not.Empty);

View File

@@ -7,6 +7,8 @@ using Orchard.ContentManagement;
namespace Orchard.Tests.ContentManagement {
[TestFixture]
public class XmlHelperTests {
private const string _testGuidString = "98f3dc0a-01c3-4975-bd52-1b4f5a678d73";
[Test]
public void AddEl() {
var el = new XElement("data");
@@ -84,6 +86,14 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(el.Attribute("foo").Value, Is.EqualTo("1970-05-21T13:55:21.934Z"));
}
[Test]
public void GuidToAttribute() {
var el = new XElement("data");
el.Attr("guid", new Guid(_testGuidString));
Assert.That(el.Attribute("guid").Value, Is.EqualTo(_testGuidString));
}
[Test]
public void DoubleFloatDecimalToAttribute() {
var el = new XElement("data");
@@ -150,6 +160,14 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(el.Element("decimal").Value, Is.EqualTo("12.458"));
}
[Test]
public void GuidToElement() {
var el = new XElement("data");
el.El("guid", new Guid(_testGuidString));
Assert.That(el.Element("guid").Value, Is.EqualTo(_testGuidString));
}
[Test]
public void ReadElement() {
var el = XElement.Parse("<data><foo>bar</foo></data>");
@@ -168,12 +186,14 @@ namespace Orchard.Tests.ContentManagement {
ADouble = 12.345D,
AFloat = 23.456F,
ADecimal = 34.567M,
AGuid = new Guid(_testGuidString),
ANullableInt = 42,
ANullableBoolean = true,
ANullableDate = new DateTime(1970, 5, 21, 13, 55, 21, 934, DateTimeKind.Utc),
ANullableDouble = 12.345D,
ANullableFloat = 23.456F,
ANullableDecimal = 34.567M
ANullableDecimal = 34.567M,
ANullableGuid = new Guid(_testGuidString)
};
var el = new XElement("data");
el.With(target)
@@ -184,12 +204,14 @@ namespace Orchard.Tests.ContentManagement {
.ToAttr(t => t.ADouble)
.ToAttr(t => t.AFloat)
.ToAttr(t => t.ADecimal)
.ToAttr(t => t.AGuid)
.ToAttr(t => t.ANullableInt)
.ToAttr(t => t.ANullableBoolean)
.ToAttr(t => t.ANullableDate)
.ToAttr(t => t.ANullableDouble)
.ToAttr(t => t.ANullableFloat)
.ToAttr(t => t.ANullableDecimal);
.ToAttr(t => t.ANullableDecimal)
.ToAttr(t => t.ANullableGuid);
Assert.That(el.Attr("AString"), Is.EqualTo("foo"));
@@ -199,12 +221,14 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(el.Attr("ADouble"), Is.EqualTo("12.345"));
Assert.That(el.Attr("AFloat"), Is.EqualTo("23.456"));
Assert.That(el.Attr("ADecimal"), Is.EqualTo("34.567"));
Assert.That(el.Attr("AGuid"), Is.EqualTo(_testGuidString));
Assert.That(el.Attr("ANullableInt"), Is.EqualTo("42"));
Assert.That(el.Attr("ANullableBoolean"), Is.EqualTo("true"));
Assert.That(el.Attr("ANullableDate"), Is.EqualTo("1970-05-21T13:55:21.934Z"));
Assert.That(el.Attr("ANullableDouble"), Is.EqualTo("12.345"));
Assert.That(el.Attr("ANullableFloat"), Is.EqualTo("23.456"));
Assert.That(el.Attr("ANullableDecimal"), Is.EqualTo("34.567"));
Assert.That(el.Attr("ANullableGuid"), Is.EqualTo(_testGuidString));
}
[Test]
@@ -214,10 +238,10 @@ namespace Orchard.Tests.ContentManagement {
XElement.Parse(
"<data AString=\"foo\" AnInt=\"42\" ABoolean=\"true\" " +
"ADate=\"1970-05-21T13:55:21.934Z\" ADouble=\"12.345\" " +
"AFloat=\"23.456\" ADecimal=\"34.567\" " +
$"AFloat=\"23.456\" ADecimal=\"34.567\" AGuid=\"{_testGuidString}\" " +
"ANullableInt=\"42\" ANullableBoolean=\"true\" " +
"ANullableDate=\"1970-05-21T13:55:21.934Z\" ANullableDouble=\"12.345\" " +
"ANullableFloat=\"23.456\" ANullableDecimal=\"34.567\"/>");
$"ANullableFloat=\"23.456\" ANullableDecimal=\"34.567\" ANullableGuid=\"{_testGuidString}\"/>");
el.With(target)
.FromAttr(t => t.AString)
.FromAttr(t => t.AnInt)
@@ -226,12 +250,14 @@ namespace Orchard.Tests.ContentManagement {
.FromAttr(t => t.ADouble)
.FromAttr(t => t.AFloat)
.FromAttr(t => t.ADecimal)
.FromAttr(t => t.AGuid)
.FromAttr(t => t.ANullableInt)
.FromAttr(t => t.ANullableBoolean)
.FromAttr(t => t.ANullableDate)
.FromAttr(t => t.ANullableDouble)
.FromAttr(t => t.ANullableFloat)
.FromAttr(t => t.ANullableDecimal);
.FromAttr(t => t.ANullableDecimal)
.FromAttr(t => t.ANullableGuid);
Assert.That(target.AString, Is.EqualTo("foo"));
Assert.That(target.AnInt, Is.EqualTo(42));
@@ -240,12 +266,14 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(target.ADouble, Is.EqualTo(12.345D));
Assert.That(target.AFloat, Is.EqualTo(23.456F));
Assert.That(target.ADecimal, Is.EqualTo(34.567M));
Assert.That(target.AGuid, Is.EqualTo(new Guid(_testGuidString)));
Assert.That(target.ANullableInt, Is.EqualTo(42));
Assert.That(target.ANullableBoolean, Is.True);
Assert.That(target.ANullableDate, Is.EqualTo(new DateTime(1970, 5, 21, 13, 55, 21, 934, DateTimeKind.Utc)));
Assert.That(target.ANullableDouble, Is.EqualTo(12.345D));
Assert.That(target.ANullableFloat, Is.EqualTo(23.456F));
Assert.That(target.ANullableDecimal, Is.EqualTo(34.567M));
Assert.That(target.ANullableGuid, Is.EqualTo(new Guid(_testGuidString)));
}
[Test]
@@ -258,12 +286,14 @@ namespace Orchard.Tests.ContentManagement {
ADouble = 12.345D,
AFloat = 23.456F,
ADecimal = 34.567M,
AGuid = new Guid(_testGuidString),
ANullableInt = 42,
ANullableBoolean = true,
ANullableDate = new DateTime(1970, 5, 21, 13, 55, 21, 934, DateTimeKind.Utc),
ANullableDouble = 12.345D,
ANullableFloat = 23.456F,
ANullableDecimal = 34.567M
ANullableDecimal = 34.567M,
ANullableGuid = new Guid(_testGuidString)
};
var el = new XElement("data");
el.With(target)
@@ -274,12 +304,14 @@ namespace Orchard.Tests.ContentManagement {
.FromAttr(t => t.ADouble)
.FromAttr(t => t.AFloat)
.FromAttr(t => t.ADecimal)
.FromAttr(t => t.AGuid)
.FromAttr(t => t.ANullableInt)
.FromAttr(t => t.ANullableBoolean)
.FromAttr(t => t.ANullableDate)
.FromAttr(t => t.ANullableDouble)
.FromAttr(t => t.ANullableFloat)
.FromAttr(t => t.ANullableDecimal);
.FromAttr(t => t.ANullableDecimal)
.FromAttr(t => t.ANullableGuid);
Assert.That(target.AString, Is.EqualTo("foo"));
Assert.That(target.AnInt, Is.EqualTo(42));
@@ -288,12 +320,14 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(target.ADouble, Is.EqualTo(12.345D));
Assert.That(target.AFloat, Is.EqualTo(23.456F));
Assert.That(target.ADecimal, Is.EqualTo(34.567M));
Assert.That(target.AGuid, Is.EqualTo(new Guid(_testGuidString)));
Assert.That(target.ANullableInt, Is.EqualTo(42));
Assert.That(target.ANullableBoolean, Is.True);
Assert.That(target.ANullableDate, Is.EqualTo(new DateTime(1970, 5, 21, 13, 55, 21, 934, DateTimeKind.Utc)));
Assert.That(target.ANullableDouble, Is.EqualTo(12.345D));
Assert.That(target.ANullableFloat, Is.EqualTo(23.456F));
Assert.That(target.ANullableDecimal, Is.EqualTo(34.567M));
Assert.That(target.ANullableGuid, Is.EqualTo(new Guid(_testGuidString)));
}
[Test]
@@ -339,7 +373,8 @@ namespace Orchard.Tests.ContentManagement {
.ToAttr(t => t.ANullableDate)
.ToAttr(t => t.ANullableDouble)
.ToAttr(t => t.ANullableFloat)
.ToAttr(t => t.ANullableDecimal);
.ToAttr(t => t.ANullableDecimal)
.ToAttr(t => t.ANullableGuid);
Assert.That(el.Attr("AString"), Is.EqualTo(""));
Assert.That(el.Attr("ANullableInt"), Is.EqualTo("null"));
@@ -348,6 +383,7 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(el.Attr("ANullableDouble"), Is.EqualTo("null"));
Assert.That(el.Attr("ANullableFloat"), Is.EqualTo("null"));
Assert.That(el.Attr("ANullableDecimal"), Is.EqualTo("null"));
Assert.That(el.Attr("ANullableGuid"), Is.EqualTo("null"));
}
[Test]
@@ -357,7 +393,7 @@ namespace Orchard.Tests.ContentManagement {
XElement.Parse(
"<data AString=\"null\" ANullableInt=\"null\" ANullableBoolean=\"null\" " +
"ANullableDate=\"null\" ANullableDouble=\"null\" " +
"ANullableFloat=\"null\" ANullableDecimal=\"null\"/>");
"ANullableFloat=\"null\" ANullableDecimal=\"null\" ANullableGuid=\"null\"/>");
el.With(target)
.FromAttr(t => t.AString)
.FromAttr(t => t.ANullableInt)
@@ -365,7 +401,8 @@ namespace Orchard.Tests.ContentManagement {
.FromAttr(t => t.ANullableDate)
.FromAttr(t => t.ANullableDouble)
.FromAttr(t => t.ANullableFloat)
.FromAttr(t => t.ANullableDecimal);
.FromAttr(t => t.ANullableDecimal)
.FromAttr(t => t.ANullableGuid);
Assert.That(target.AString, Is.EqualTo("null"));
Assert.That(target.ANullableInt, Is.Null);
@@ -374,6 +411,7 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(target.ANullableDouble, Is.Null);
Assert.That(target.ANullableFloat, Is.Null);
Assert.That(target.ANullableDecimal, Is.Null);
Assert.That(target.ANullableGuid, Is.Null);
}
private class Target {
@@ -384,12 +422,14 @@ namespace Orchard.Tests.ContentManagement {
public double ADouble { get; set; }
public float AFloat { get; set; }
public decimal ADecimal { get; set; }
public Guid AGuid { get; set; }
public int? ANullableInt { get; set; }
public bool? ANullableBoolean { get; set; }
public DateTime? ANullableDate { get; set; }
public double? ANullableDouble { get; set; }
public float? ANullableFloat { get; set; }
public decimal? ANullableDecimal { get; set; }
public Guid? ANullableGuid { get; set; }
}
}
}

View File

@@ -1,7 +1,13 @@
using Autofac;
using System.IO;
using Autofac;
using NHibernate;
using NUnit.Framework;
using Orchard.Caching;
using Orchard.Data;
using Orchard.Localization.Records;
using Orchard.Localization.Services;
using Orchard.Mvc;
using Orchard.Tests.ContentManagement;
using Orchard.Tests.Stubs;
namespace Orchard.Tests.Localization {
@@ -10,25 +16,56 @@ namespace Orchard.Tests.Localization {
private IContainer _container;
private IWorkContextStateProvider _currentCultureStateProvider;
private WorkContext _workContext;
private ISessionFactory _sessionFactory;
private ISession _session;
private string _databaseFileName;
private const string _testCulture = "fr-CA";
[TestFixtureSetUp]
public void InitFixture() {
_databaseFileName = Path.GetTempFileName();
_sessionFactory = DataUtility.CreateSessionFactory(
_databaseFileName,
typeof(CultureRecord));
}
[SetUp]
public void Init() {
_session = _sessionFactory.OpenSession();
var builder = new ContainerBuilder();
_workContext = new StubWorkContext();
builder.RegisterInstance(new StubCultureSelector("fr-CA")).As<ICultureSelector>();
builder.RegisterInstance(new StubCultureSelector(_testCulture)).As<ICultureSelector>();
builder.RegisterInstance(new StubHttpContext("~/"));
builder.RegisterInstance(_workContext);
builder.RegisterType<StubHttpContextAccessor>().As<IHttpContextAccessor>();
builder.RegisterType<CurrentCultureWorkContext>().As<IWorkContextStateProvider>();
builder.RegisterType<DefaultCultureManager>().As<ICultureManager>();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
builder.RegisterType<Signals>().As<ISignals>().SingleInstance();
builder.RegisterType<StubWorkContextAccessor>().As<IWorkContextAccessor>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
_session = _sessionFactory.OpenSession();
builder.RegisterInstance(new TestTransactionManager(_session)).As<ITransactionManager>();
_container = builder.Build();
_currentCultureStateProvider = _container.Resolve<IWorkContextStateProvider>();
_container.Resolve<ICultureManager>().AddCulture(_testCulture);
}
[TearDown]
public void Term() {
_session.Close();
}
[TestFixtureTearDown]
public void TermFixture() {
File.Delete(_databaseFileName);
}
[Test]
public void CultureManagerReturnsCultureFromSelectors() {
var actualCulture = _currentCultureStateProvider.Get<string>("CurrentCulture")(_workContext);
var expectedCulture = "fr-CA";
Assert.That(actualCulture, Is.EqualTo(expectedCulture));
Assert.That(actualCulture, Is.EqualTo(_testCulture));
}
}
}

View File

@@ -13,7 +13,7 @@ using Orchard.Localization.Services;
namespace Orchard.Tests.Localization {
[TestFixture()]
[Category("longrunning")]
[Category("longrunning")]
public class DefaultDateFormatterTests {
[SetUp]

View File

@@ -12,6 +12,7 @@
<RootNamespace>Orchard.Tests</RootNamespace>
<AssemblyName>Orchard.Framework.Tests</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>7.3</LangVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -44,7 +45,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
@@ -56,7 +56,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
@@ -133,7 +132,6 @@
<HintPath>..\..\lib\sqlce\System.Data.SqlServerCe.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>

View File

@@ -1,10 +1,9 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using NUnit.Framework;
using System;
using Orchard.Environment;
using Orchard.Environment.Configuration;
using Orchard.FileSystems.Media;
@@ -215,8 +214,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void GetFileFailsInInvalidPath() {
Assert.That(() => _storageProvider.GetFile(@"../InvalidFile.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.GetFile(@"../../InvalidFile.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.GetFile(@"../InvalidFile.txt"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.GetFile(@"../../InvalidFile.txt"), Throws.InstanceOf(typeof(OrchardException)));
// Valid get one level up within the storage provider domain
_storageProvider.CreateFile(@"test.txt");
@@ -226,8 +225,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void ListFilesFailsInInvalidPath() {
Assert.That(() => _storageProvider.ListFiles(@"../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.ListFiles(@"../../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.ListFiles(@"../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.ListFiles(@"../../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException)));
// Valid get one level up within the storage provider domain
Assert.That(_storageProvider.ListFiles(@"SubFolder1"), Is.Not.Null);
@@ -236,8 +235,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void ListFoldersFailsInInvalidPath() {
Assert.That(() => _storageProvider.ListFolders(@"../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.ListFolders(@"../../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.ListFolders(@"../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.ListFolders(@"../../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException)));
// Valid get one level up within the storage provider domain
Assert.That(_storageProvider.ListFolders(@"SubFolder1"), Is.Not.Null);
@@ -255,8 +254,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void CreateFolderFailsInInvalidPath() {
Assert.That(() => _storageProvider.CreateFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.CreateFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.CreateFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.CreateFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException)));
// Valid create one level up within the storage provider domain
_storageProvider.CreateFolder(@"SubFolder1\..\ValidFolder1");
@@ -265,8 +264,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void DeleteFolderFailsInInvalidPath() {
Assert.That(() => _storageProvider.DeleteFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.DeleteFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.DeleteFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.DeleteFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException)));
// Valid create one level up within the storage provider domain
Assert.That(GetFolder("SubFolder1"), Is.Not.Null);
@@ -277,8 +276,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void RenameFolderFailsInInvalidPath() {
Assert.That(GetFolder(@"SubFolder1/SubSubFolder1"), Is.Not.Null);
Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../SubSubFolder1"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../../SubSubFolder1"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../SubSubFolder1"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../../SubSubFolder1"), Throws.InstanceOf(typeof(OrchardException)));
// Valid move one level up within the storage provider domain
_storageProvider.RenameFolder(@"SubFolder1\SubSubFolder1", @"SubFolder1\..\SubSubFolder1");
@@ -291,8 +290,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void DeleteFileFailsInInvalidPath() {
Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(OrchardException)));
// Valid move one level up within the storage provider domain
_storageProvider.CreateFile(@"test.txt");
@@ -308,8 +307,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void RenameFileFailsInInvalidPath() {
Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(OrchardException)));
// Valid move one level up within the storage provider domain
_storageProvider.CreateFile(@"test.txt");
@@ -322,8 +321,8 @@ namespace Orchard.Tests.Storage {
[Test]
public void CreateFileFailsInInvalidPath() {
Assert.That(() => _storageProvider.CreateFile(@"../InvalidFolder1.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.CreateFile(@"../../InvalidFolder1.txt"), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.CreateFile(@"../InvalidFolder1.txt"), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.CreateFile(@"../../InvalidFolder1.txt"), Throws.InstanceOf(typeof(OrchardException)));
// Valid create one level up within the storage provider domain
_storageProvider.CreateFile(@"SubFolder1\..\ValidFolder1.txt");
@@ -335,8 +334,8 @@ namespace Orchard.Tests.Storage {
_storageProvider.CreateFile(@"test.txt");
using (Stream stream = GetFile("test.txt").OpenRead()) {
Assert.That(() => _storageProvider.SaveStream(@"../newTest.txt", stream), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.SaveStream(@"../../newTest.txt", stream), Throws.InstanceOf(typeof(ArgumentException)));
Assert.That(() => _storageProvider.SaveStream(@"../newTest.txt", stream), Throws.InstanceOf(typeof(OrchardException)));
Assert.That(() => _storageProvider.SaveStream(@"../../newTest.txt", stream), Throws.InstanceOf(typeof(OrchardException)));
// Valid create one level up within the storage provider domain
_storageProvider.SaveStream(@"SubFolder1\..\newTest.txt", stream);

View File

@@ -11,6 +11,7 @@
<RootNamespace>Orchard.WarmupStarter</RootNamespace>
<AssemblyName>Orchard.WarmupStarter</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>7.3</LangVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
@@ -22,7 +23,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<Prefer32Bit>false</Prefer32Bit>
<UseVSHostingProcess>false</UseVSHostingProcess>
<CodeAnalysisRuleSet>..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
@@ -34,7 +34,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>

View File

@@ -11,6 +11,7 @@
<RootNamespace>Orchard.Web.Tests</RootNamespace>
<AssemblyName>Orchard.Web.Tests</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>7.3</LangVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -41,7 +42,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
@@ -53,7 +53,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>

View File

@@ -10,6 +10,7 @@ using Orchard.Core.Common.Settings;
using Orchard.Core.Common.ViewModels;
using Orchard.Localization;
using Orchard.Services;
using Orchard.Utility.Extensions;
namespace Orchard.Core.Common.Drivers {
public class TextFieldDriver : ContentFieldDriver<TextField> {
@@ -71,6 +72,16 @@ namespace Orchard.Core.Common.Drivers {
if (settings.Required && String.IsNullOrWhiteSpace(field.Value)) {
updater.AddModelError("Text", T("The field {0} is mandatory", T(field.DisplayName)));
}
if (settings.MaxLength > 0) {
var value = new HtmlString(_htmlFilters.Aggregate(field.Value, (text, filter) => filter.ProcessContent(text, settings.Flavor)))
.ToString().RemoveTags();
if (value.Length > settings.MaxLength) {
updater.AddModelError("Text", T("The maximum allowed length for the field {0} is {1}", T(field.DisplayName), settings.MaxLength));
}
}
}
return Editor(part, field, shapeHelper);

View File

@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Orchard.Core.Common.Settings {
@@ -8,5 +9,8 @@ namespace Orchard.Core.Common.Settings {
public bool Required { get; set; }
public string Hint { get; set; }
public string DefaultValue { get; set; }
[Range(0, int.MaxValue)]
[DisplayName("Maximum Length")]
public int MaxLength { get; set; }
}
}

View File

@@ -34,9 +34,10 @@ namespace Orchard.Core.Common.Settings {
builder.WithSetting("TextFieldSettings.Hint", model.Settings.Hint);
builder.WithSetting("TextFieldSettings.Required", model.Settings.Required.ToString(CultureInfo.InvariantCulture));
builder.WithSetting("TextFieldSettings.DefaultValue", model.Settings.DefaultValue);
yield return DefinitionTemplate(model);
builder.WithSetting("TextFieldSettings.MaxLength", model.Settings.MaxLength.ToString());
}
yield return DefinitionTemplate(model);
}
}
}

View File

@@ -1,7 +1,14 @@
@{
var htmlAttributes = new Dictionary<string, object> {
{"class", "text large"}
};
var htmlAttributes = (Dictionary<string, object>)Model.HtmlAttributes;
if (htmlAttributes == null) {
htmlAttributes = new Dictionary<string, object> {
{"class", "text large"}
};
}
else {
htmlAttributes["class"] = "text large";
}
if (Model.Required == true) {
htmlAttributes["required"] = "required";

View File

@@ -1,7 +1,14 @@
@{
var htmlAttributes = new Dictionary<string, object> {
{"class", "text small"}
};
var htmlAttributes = (Dictionary<string, object>)Model.HtmlAttributes;
if (htmlAttributes == null) {
htmlAttributes = new Dictionary<string, object> {
{"class", "text small"}
};
}
else {
htmlAttributes["class"] = "text small";
}
if (Model.Required == true) {
htmlAttributes["required"] = "required";

View File

@@ -1,5 +1,10 @@
@{
var htmlAttributes = new Dictionary<string, object>();
var htmlAttributes = (Dictionary<string, object>)Model.HtmlAttributes;
if (htmlAttributes == null) {
htmlAttributes = new Dictionary<string, object>();
}
if (Model.Required == true) {
htmlAttributes["required"] = "required";

View File

@@ -1,7 +1,14 @@
@{
var htmlAttributes = new Dictionary<string, object> {
{"class", "text medium"}
};
var htmlAttributes = (Dictionary<string, object>)Model.HtmlAttributes;
if (htmlAttributes == null) {
htmlAttributes = new Dictionary<string, object> {
{"class", "text medium"}
};
}
else {
htmlAttributes["class"] = "text medium";
}
if (Model.Required == true) {
htmlAttributes["required"] = "required";

View File

@@ -1,10 +1,16 @@
@using Orchard.Utility.Extensions;
@{
string editorFlavor = Model.EditorFlavor;
var htmlAttributes = (Dictionary<string, object>)Model.HtmlAttributes;
var htmlAttributes = new Dictionary<string, object> {
{"class", editorFlavor.HtmlClassify()}
};
if (htmlAttributes == null) {
htmlAttributes = new Dictionary<string, object> {
{"class", editorFlavor.HtmlClassify()}};
}
else {
htmlAttributes["class"] = editorFlavor.HtmlClassify();
}
if (Model.Required == true) {
htmlAttributes["required"] = "required";

View File

@@ -7,6 +7,12 @@
@Html.ValidationMessageFor(m => m.Settings.Flavor)
</div>
</fieldset>
<fieldset>
<label for="@Html.FieldIdFor(m => m.Settings.MaxLength)">@T("Maximum length")</label>
@Html.EditorFor(m => m.Settings.MaxLength, new { htmlAttributes = new { min = 0 } })
<span class="hint">@T("Maximum length allowed for this field. Setting the value to 0 means unlimited length.")</span>
@Html.ValidationMessageFor(m => m.Settings.MaxLength)
</fieldset>
<fieldset>
<div>
@Html.CheckBoxFor(m => m.Settings.Required) <label for="@Html.FieldIdFor(m => m.Settings.Required)" class="forcheckbox">@T("Required")</label>
@@ -21,4 +27,4 @@
</fieldset>
<fieldset>
@Display.DefinitionTemplate(TemplateName: "TextFieldDefaultValueEditor", Model: Model)
</fieldset>
</fieldset>

View File

@@ -1,15 +1,26 @@
@model Orchard.Core.Common.ViewModels.TextFieldDriverViewModel
@{
var maxLength = Model.Settings.MaxLength > 0 ? Model.Settings.MaxLength.ToString() : "";
}
<fieldset>
<label for="@Html.FieldIdFor(m => m.Text)" @if(Model.Settings.Required) { <text>class="required"</text> }>@Model.Field.DisplayName</label>
<label for="@Html.FieldIdFor(m => m.Text)" @if (Model.Settings.Required) { <text> class="required" </text> }>@Model.Field.DisplayName</label>
@if (String.IsNullOrWhiteSpace(Model.Settings.Flavor)) {
@(Model.Settings.Required ? Html.TextBoxFor(m => m.Text, new {@class = "text", required = "required"}) : Html.TextBoxFor(m => m.Text, new {@class = "text"}))
@(Model.Settings.Required
? Html.TextBoxFor(m => m.Text, new {@class = "text", required = "required", maxlength = maxLength})
: Html.TextBoxFor(m => m.Text, new {@class = "text", maxlength = maxLength }))
@Html.ValidationMessageFor(m => m.Text)
}
else {
@Display.Body_Editor(Text: Model.Text, EditorFlavor: Model.Settings.Flavor, Required: Model.Settings.Required, ContentItem: Model.ContentItem, Field: Model.Field)
var htmlAttributes = new Dictionary<string, object> {
{"maxlength", maxLength}
};
@Display.Body_Editor(Text: Model.Text, EditorFlavor: Model.Settings.Flavor, Required: Model.Settings.Required,
ContentItem: Model.ContentItem, Field: Model.Field, HtmlAttributes: htmlAttributes)
}
@if (HasText(Model.Settings.Hint)) {
<span class="hint">@Model.Settings.Hint</span>
<span class="hint">@Model.Settings.Hint</span>
}
</fieldset>

View File

@@ -1,74 +1,75 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using System.Web.Routing;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Aspects;
using Orchard.ContentManagement.Handlers;
using Orchard.Core.Contents.Settings;
using Orchard.Core.Navigation.Models;
using Orchard.Core.Navigation.Services;
using Orchard.Core.Navigation.ViewModels;
using Orchard.Localization;
using Orchard.Mvc.Extensions;
using Orchard.UI;
using Orchard.UI.Notify;
using Orchard.UI.Navigation;
using Orchard.Utility;
using System;
using Orchard.ContentManagement.Handlers;
using Orchard.Logging;
using Orchard.Exceptions;
using Orchard.ContentManagement.Aspects;
using Orchard.Utility.Extensions;
using Orchard.Mvc.Html;
using Orchard.Core.Contents.Settings;
using Orchard.Data;
using System.Web.Routing;
using Orchard.Exceptions;
using Orchard.Localization;
using Orchard.Logging;
using Orchard.Mvc.Extensions;
using Orchard.Mvc.Html;
using Orchard.Security;
using Orchard.UI;
using Orchard.UI.Navigation;
using Orchard.UI.Notify;
using Orchard.Utility;
using Orchard.Utility.Extensions;
namespace Orchard.Core.Navigation.Controllers {
[ValidateInput(false)]
public class AdminController : Controller, IUpdateModel {
private readonly IContentManager _contentManager;
private readonly ITransactionManager _transactionManager;
private readonly IAuthorizer _authorizer;
private readonly INotifier _notifier;
private readonly IMenuService _menuService;
private readonly INavigationManager _navigationManager;
private readonly IEnumerable<IContentHandler> _handlers;
private readonly IMenuManager _menuManager;
private readonly IContentManager _contentManager;
private readonly ITransactionManager _transactionManager;
public AdminController(
IOrchardServices orchardServices,
IContentManager contentManager,
ITransactionManager transactionManager,
IMenuService menuService,
IMenuManager menuManager,
INavigationManager navigationManager,
IEnumerable<IContentHandler> handlers) {
_contentManager = contentManager;
_transactionManager = transactionManager;
_contentManager = orchardServices.ContentManager;
_transactionManager = orchardServices.TransactionManager;
_authorizer = orchardServices.Authorizer;
_notifier = orchardServices.Notifier;
_menuService = menuService;
_menuManager = menuManager;
_navigationManager = navigationManager;
_handlers = handlers;
Services = orchardServices;
T = NullLocalizer.Instance;
Logger = NullLogger.Instance;
}
public Localizer T { get; set; }
public ILogger Logger { get; set; }
public IOrchardServices Services { get; set; }
public ActionResult Index(NavigationManagementViewModel model, int? menuId) {
var menus = Services.ContentManager.Query("Menu").List().ToList()
var menus = _contentManager.Query("Menu").List().ToList()
.OrderBy(x => x.ContentManager.GetItemMetadata(x).DisplayText);
if (!menus.Any()) {
if (!Services.Authorizer.Authorize(Permissions.ManageMenus, T("Not allowed to manage menus"))) {
if (!_authorizer.Authorize(Permissions.ManageMenus, T("Not allowed to manage menus"))) {
return new HttpUnauthorizedResult();
}
return RedirectToAction("Create", "Admin", new { area = "Contents", id = "Menu", returnUrl = Request.RawUrl });
}
var allowedMenus = menus.Where(menu => Services.Authorizer.Authorize(Permissions.ManageMenus, menu)).ToList();
var allowedMenus = menus.Where(menu => _authorizer.Authorize(Permissions.ManageMenus, menu)).ToList();
if (!allowedMenus.Any()) {
return new HttpUnauthorizedResult();
@@ -87,7 +88,11 @@ namespace Orchard.Core.Navigation.Controllers {
}
if (model.MenuItemEntries == null || !model.MenuItemEntries.Any()) {
model.MenuItemEntries = _menuService.GetMenuParts(currentMenu.Id).Select(CreateMenuItemEntries).OrderBy(menuPartEntry => menuPartEntry.Position, new FlatPositionComparer()).ToList();
model.MenuItemEntries = _menuService
.GetMenuParts(currentMenu.Id)
.Select(CreateMenuItemEntries)
.OrderBy(menuPartEntry => menuPartEntry.Position, new FlatPositionComparer())
.ToList();
}
model.MenuItemDescriptors = _menuManager.GetMenuItemTypes();
@@ -100,7 +105,10 @@ namespace Orchard.Core.Navigation.Controllers {
[HttpPost, ActionName("Index")]
public ActionResult IndexPOST(IList<MenuItemEntry> menuItemEntries, int? menuId) {
if (!Services.Authorizer.Authorize(Permissions.ManageMenus, (menuId.HasValue) ? _menuService.GetMenu(menuId.Value) : null, T("Couldn't manage the main menu")))
if (!_authorizer.Authorize(
Permissions.ManageMenus,
menuId.HasValue ? _menuService.GetMenu(menuId.Value) : null,
T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
// See https://github.com/OrchardCMS/Orchard/issues/948
@@ -123,25 +131,15 @@ namespace Orchard.Core.Navigation.Controllers {
return RedirectToAction("Index", new { menuId });
}
private MenuItemEntry CreateMenuItemEntries(MenuPart menuPart) {
return new MenuItemEntry {
MenuItemId = menuPart.Id,
IsMenuItem = menuPart.Is<MenuItemPart>(),
Text = menuPart.MenuText,
Position = menuPart.MenuPosition,
Url = menuPart.Is<MenuItemPart>()
? menuPart.As<MenuItemPart>().Url
: _navigationManager.GetUrl(null, Services.ContentManager.GetItemMetadata(menuPart).DisplayRouteValues),
ContentItem = menuPart.ContentItem,
};
}
[HttpPost]
public ActionResult Delete(int id) {
MenuPart menuPart = _menuService.Get(id);
int? menuId = null;
if (!Services.Authorizer.Authorize(Permissions.ManageMenus, (menuPart != null) ? _menuService.GetMenu(menuPart.Menu.Id) : null, T("Couldn't manage the main menu")))
if (!_authorizer.Authorize(
Permissions.ManageMenus,
menuPart == null ? null : _menuService.GetMenu(menuPart.Menu.Id),
T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
if (menuPart != null) {
@@ -155,7 +153,8 @@ namespace Orchard.Core.Navigation.Controllers {
foreach (var menuItem in menuItems.Concat(new[] { menuPart })) {
// if the menu item is a concrete content item, don't delete it, just unreference the menu
if (!menuPart.ContentItem.TypeDefinition.Settings.ContainsKey("Stereotype") || menuPart.ContentItem.TypeDefinition.Settings["Stereotype"] != "MenuItem") {
if (!menuPart.ContentItem.TypeDefinition.Settings.ContainsKey("Stereotype")
|| menuPart.ContentItem.TypeDefinition.Settings["Stereotype"] != "MenuItem") {
menuPart.Menu = null;
}
else {
@@ -168,26 +167,18 @@ namespace Orchard.Core.Navigation.Controllers {
return RedirectToAction("Index", new { menuId });
}
bool IUpdateModel.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
return TryUpdateModel(model, prefix, includeProperties, excludeProperties);
}
void IUpdateModel.AddModelError(string key, LocalizedString errorMessage) {
ModelState.AddModelError(key, errorMessage.ToString());
}
public ActionResult CreateMenuItem(string id, int menuId, string returnUrl) {
if (!Services.Authorizer.Authorize(Permissions.ManageMenus, _menuService.GetMenu(menuId), T("Couldn't manage the main menu")))
if (!_authorizer.Authorize(Permissions.ManageMenus, _menuService.GetMenu(menuId), T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
// create a new temporary menu item
var menuPart = Services.ContentManager.New<MenuPart>(id);
var menuPart = _contentManager.New<MenuPart>(id);
if (menuPart == null)
return HttpNotFound();
// load the menu
var menu = Services.ContentManager.Get(menuId);
var menu = _contentManager.Get(menuId);
if (menu == null)
return HttpNotFound();
@@ -196,7 +187,7 @@ namespace Orchard.Core.Navigation.Controllers {
// filter the content items for this specific menu
menuPart.MenuPosition = Position.GetNext(_navigationManager.BuildMenu(menu));
menuPart.Menu = menu;
var model = Services.ContentManager.BuildEditor(menuPart);
var model = _contentManager.BuildEditor(menuPart);
return View(model);
}
@@ -206,32 +197,32 @@ namespace Orchard.Core.Navigation.Controllers {
}
Logger.Error(T("Creating menu item failed: {0}", exception.Message).Text);
Services.Notifier.Error(T("Creating menu item failed: {0}", exception.Message));
_notifier.Error(T("Creating menu item failed: {0}", exception.Message));
return this.RedirectLocal(returnUrl, () => RedirectToAction("Index"));
}
}
[HttpPost, ActionName("CreateMenuItem")]
public ActionResult CreateMenuItemPost(string id, int menuId, string returnUrl) {
if (!Services.Authorizer.Authorize(Permissions.ManageMenus, _menuService.GetMenu(menuId), T("Couldn't manage the main menu")))
if (!_authorizer.Authorize(Permissions.ManageMenus, _menuService.GetMenu(menuId), T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
var menuPart = Services.ContentManager.New<MenuPart>(id);
var menuPart = _contentManager.New<MenuPart>(id);
if (menuPart == null)
return HttpNotFound();
// load the menu
var menu = Services.ContentManager.Get(menuId);
var menu = _contentManager.Get(menuId);
if (menu == null)
return HttpNotFound();
menuPart.Menu = menu;
var model = Services.ContentManager.UpdateEditor(menuPart, this);
var model = _contentManager.UpdateEditor(menuPart, this);
menuPart.MenuPosition = Position.GetNext(_navigationManager.BuildMenu(menu));
Services.ContentManager.Create(menuPart);
_contentManager.Create(menuPart);
if (!ModelState.IsValid) {
Services.TransactionManager.Cancel();
_transactionManager.Cancel();
return View(model);
}
Services.Notifier.Information(T("Your {0} has been added.", menuPart.TypeDefinition.DisplayName));
_notifier.Information(T("Your {0} has been added.", menuPart.TypeDefinition.DisplayName));
return this.RedirectLocal(returnUrl, () => RedirectToAction("Index"));
}
@@ -241,7 +232,7 @@ namespace Orchard.Core.Navigation.Controllers {
if (contentItem == null)
return HttpNotFound();
if (!Services.Authorizer.Authorize(Permissions.ManageMenus, contentItem.Content.MenuPart.Menu, T("Couldn't manage the main menu")))
if (!_authorizer.Authorize(Permissions.ManageMenus, contentItem.Content.MenuPart.Menu, T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
var model = _contentManager.BuildEditor(contentItem);
@@ -252,19 +243,81 @@ namespace Orchard.Core.Navigation.Controllers {
[Mvc.FormValueRequired("submit.Save")]
public ActionResult EditPOST(int id, string returnUrl) {
return EditPOST(id, returnUrl, contentItem => {
if (!contentItem.Has<IPublishingControlAspect>() && !contentItem.TypeDefinition.Settings.GetModel<ContentTypeSettings>().Draftable)
if (!contentItem.Has<IPublishingControlAspect>()
&& !contentItem.TypeDefinition.Settings.GetModel<ContentTypeSettings>().Draftable
&& contentItem.IsPublished())
_contentManager.Publish(contentItem);
});
}
private ActionResult EditPOST(int id, string returnUrl, Action<ContentItem> conditionallyPublish) {
var contentItem = _contentManager.Get(id, VersionOptions.DraftRequired);
if (contentItem == null)
[HttpPost]
// Copy of Contents/AdminController/Publish, but with different permission check and redirect.
public ActionResult Publish(int id) {
var menuPart = _contentManager.GetLatest<MenuPart>(id);
if (menuPart == null)
return HttpNotFound();
if (!Services.Authorizer.Authorize(Permissions.ManageMenus, contentItem.Content.MenuPart.Menu, T("Couldn't manage the main menu")))
if (!_authorizer.Authorize(Permissions.ManageMenus, menuPart.Menu, T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
_contentManager.Publish(menuPart.ContentItem);
_notifier.Information(
string.IsNullOrWhiteSpace(menuPart.MenuText)
? string.IsNullOrWhiteSpace(menuPart.TypeDefinition.DisplayName)
? T("Your content has been published.")
: T("Your {0} has been published.", menuPart.TypeDefinition.DisplayName)
: T("'{0}' has been published.", menuPart.MenuText));
return RedirectToAction("Index", new { menuId = menuPart.Menu.Id });
}
[HttpPost]
// Copy of Contents/AdminController/Unpublish, but with different permission check and redirect.
public ActionResult Unpublish(int id) {
var menuPart = _contentManager.GetLatest<MenuPart>(id);
if (menuPart == null)
return HttpNotFound();
if (!_authorizer.Authorize(Permissions.ManageMenus, menuPart.Menu, T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
_contentManager.Unpublish(menuPart.ContentItem);
_notifier.Information(
string.IsNullOrWhiteSpace(menuPart.MenuText)
? string.IsNullOrWhiteSpace(menuPart.TypeDefinition.DisplayName)
? T("Your content has been unpublished.")
: T("Your {0} has been unpublished.", menuPart.TypeDefinition.DisplayName)
: T("'{0}' has been unpublished.", menuPart.MenuText));
return RedirectToAction("Index", new { menuId = menuPart.Menu.Id });
}
private MenuItemEntry CreateMenuItemEntries(MenuPart menuPart) {
return new MenuItemEntry {
MenuItemId = menuPart.Id,
IsMenuItem = menuPart.Is<MenuItemPart>(),
Text = menuPart.MenuText,
Position = menuPart.MenuPosition,
Url = menuPart.Is<MenuItemPart>()
? menuPart.As<MenuItemPart>().Url
: _navigationManager.GetUrl(null, _contentManager.GetItemMetadata(menuPart).DisplayRouteValues),
ContentItem = menuPart.ContentItem,
};
}
private ActionResult EditPOST(int id, string returnUrl, Action<ContentItem> conditionallyPublish) {
var menuPart = _contentManager.GetDraftRequired<MenuPart>(id);
if (menuPart == null)
return HttpNotFound();
if (!_authorizer.Authorize(Permissions.ManageMenus, menuPart.Menu, T("Couldn't manage the menu")))
return new HttpUnauthorizedResult();
var contentItem = menuPart.ContentItem;
string previousRoute = null;
if (contentItem.Has<IAliasAspect>()
&& !string.IsNullOrWhiteSpace(returnUrl)
@@ -289,11 +342,22 @@ namespace Orchard.Core.Navigation.Controllers {
returnUrl = Url.ItemDisplayUrl(contentItem);
}
Services.Notifier.Information(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName)
? T("Your content has been saved.")
: T("Your {0} has been saved.", contentItem.TypeDefinition.DisplayName));
_notifier.Information(
string.IsNullOrWhiteSpace(menuPart.MenuText)
? string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName)
? T("Your content has been saved.")
: T("Your {0} has been saved.", contentItem.TypeDefinition.DisplayName)
: T("'{0}' has been saved.", menuPart.MenuText));
return this.RedirectLocal(returnUrl, () => RedirectToAction("Edit", new RouteValueDictionary { { "Id", contentItem.Id } }));
return RedirectToAction("Index", new { menuId = menuPart.Menu.Id });
}
bool IUpdateModel.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
return TryUpdateModel(model, prefix, includeProperties, excludeProperties);
}
void IUpdateModel.AddModelError(string key, LocalizedString errorMessage) {
ModelState.AddModelError(key, errorMessage.ToString());
}
}
}

View File

@@ -19,8 +19,8 @@ namespace Orchard.Core.Navigation.Services {
public IEnumerable<MenuPart> GetMenuParts(int menuId) {
return _contentManager
.Query<MenuPart, MenuPartRecord>()
.Where( x => x.MenuId == menuId)
.Query<MenuPart, MenuPartRecord>(VersionOptions.Latest)
.Where(x => x.MenuId == menuId)
.List();
}

View File

@@ -1,5 +1,7 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Orchard.ContentManagement;
using Orchard.Core.Navigation.Models;
namespace Orchard.Core.Navigation.ViewModels {
public class MenuPartViewModel {
@@ -7,7 +9,8 @@ namespace Orchard.Core.Navigation.ViewModels {
public int CurrentMenuId { get; set; }
public bool OnMenu { get; set; }
public ContentItem ContentItem { get; set; }
public ContentItem ContentItem { get; set; }
[StringLength(MenuPartRecord.DefaultMenuTextLength)]
public string MenuText { get; set; }
}
}

View File

@@ -1,4 +1,6 @@
@model NavigationManagementViewModel
@using Orchard.ContentManagement;
@using Orchard.Core.Navigation.ViewModels;
@using Orchard.Utility.Extensions;
@@ -115,8 +117,21 @@
<span class="navigation-position"><input type="text" class="text" name="@Html.NameOf(m => m.MenuItemEntries[i].Position)" value="@menuPartEntry.Position" /></span>
<span class="navigation-actions">
<input type="hidden" name="@Html.NameOf(m => m.MenuItemEntries[i].MenuItemId)" value="@menuPartEntry.MenuItemId" />
@Html.ItemEditLink(T("Edit").Text, menuPartEntry.ContentItem, new { returnUrl = Request.RawUrl })@T(" | ")
@Html.Link(T("Delete").Text, Url.ItemRemoveUrl(menuPartEntry.ContentItem,null), new { itemprop = "RemoveUrl UnsafeUrl" })
@{
var menuItemHasPublished = menuPartEntry.ContentItem.HasPublished();
}
@Html.Link(
menuItemHasPublished ? T("Unpublish").Text : T("Publish").Text,
Url.Action(
menuItemHasPublished ? "Unpublish": "Publish",
"Admin",
new { area = "Navigation", id = menuPartEntry.ContentItem.Id }),
new { itemprop = "UnsafeUrl" })
@T(" | ")
@Html.ItemEditLink(T("Edit").Text, menuPartEntry.ContentItem, new { returnUrl = Request.RawUrl })
@T(" | ")
@Html.Link(T("Delete").Text, Url.ItemRemoveUrl(menuPartEntry.ContentItem, null), new { itemprop = "RemoveUrl UnsafeUrl" })
</span>
</div>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -14,7 +13,7 @@
<RootNamespace>Orchard.Core</RootNamespace>
<AssemblyName>Orchard.Core</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>4.0</OldToolsVersion>
@@ -39,7 +38,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
<UseVSHostingProcess>false</UseVSHostingProcess>
@@ -51,13 +49,12 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -293,6 +290,8 @@
<Compile Include="Title\Migrations.cs" />
<Compile Include="Title\Models\TitlePart.cs" />
<Compile Include="Title\Models\TitlePartRecord.cs" />
<Compile Include="Title\Settings\TitlePartSettings.cs" />
<Compile Include="Title\Settings\TitlePartSettingsEvents.cs" />
<Compile Include="XmlRpc\Controllers\HomeController.cs" />
<Compile Include="XmlRpc\Controllers\LiveWriterController.cs" />
<Compile Include="XmlRpc\IXmlRpcDriver.cs" />
@@ -612,6 +611,7 @@
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<Content Include="Title\Views\DefinitionTemplates\TitlePartSettings.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
@@ -657,10 +657,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -1,7 +1,9 @@
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers;
using Orchard.Core.Common.Settings;
using Orchard.Core.Title.Models;
using Orchard.Core.Title.Settings;
using Orchard.Localization;
namespace Orchard.Core.Title.Drivers {
@@ -33,7 +35,14 @@ namespace Orchard.Core.Title.Drivers {
}
protected override DriverResult Editor(TitlePart part, IUpdateModel updater, dynamic shapeHelper) {
updater.TryUpdateModel(part, Prefix, null, null);
if (updater.TryUpdateModel(part, Prefix, null, null)){
var settings = part.Settings.GetModel<TitlePartSettings>();
if (settings.MaxLength > 0 && part.Title.Length > settings.MaxLength) {
updater.AddModelError("Title", T("The maximum allowed length for the title is {0}", settings.MaxLength));
}
}
return Editor(part, shapeHelper);
}

View File

@@ -1,6 +1,7 @@
using Orchard.ContentManagement.MetaData;
using Orchard.Core.Contents.Extensions;
using Orchard.Data.Migration;
using Orchard.Core.Title.Settings;
namespace Orchard.Core.Title {
public class Migrations : DataMigrationImpl {
@@ -9,7 +10,7 @@ namespace Orchard.Core.Title {
SchemaBuilder.CreateTable("TitlePartRecord",
table => table
.ContentPartVersionRecord()
.Column<string>("Title", column => column.WithLength(1024))
.Column<string>("Title", column => column.WithLength(TitlePartSettings.MaxTitleLength))
);
ContentDefinitionManager.AlterPartDefinition("TitlePart", builder => builder

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Linq;
using System.Web;
namespace Orchard.Core.Title.Settings {
public class TitlePartSettings {
// Whenever this constant is changed a new migration step must be created to update the length of the field on the DB
public const int MaxTitleLength = 1024;
[Range(0, MaxTitleLength)]
[DisplayName("Maximum Length")]
public int MaxLength {get; set;}
}
}

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Orchard.ContentManagement;
using Orchard.ContentManagement.MetaData;
using Orchard.ContentManagement.MetaData.Builders;
using Orchard.ContentManagement.MetaData.Models;
using Orchard.ContentManagement.ViewModels;
namespace Orchard.Core.Title.Settings {
public class TitlePartSettingsEvents : ContentDefinitionEditorEventsBase {
public override IEnumerable<TemplateViewModel> TypePartEditor(ContentTypePartDefinition definition) {
if (definition.PartDefinition.Name != "TitlePart") {
yield break;
}
var settings = definition
.Settings
.GetModel<TitlePartSettings>()
?? new TitlePartSettings();
yield return DefinitionTemplate(settings);
}
public override IEnumerable<TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel) {
if (builder.Name != "TitlePart") {
yield break;
}
var model = new TitlePartSettings();
if (updateModel.TryUpdateModel(model, "TitlePartSettings", null, null)) {
builder.WithSetting("TitlePartSettings.MaxLength", model.MaxLength.ToString());
}
yield return DefinitionTemplate(model);
}
}
}

View File

@@ -0,0 +1,12 @@
@using Orchard.Core.Title.Settings;
@model TitlePartSettings
@{
var maxLength = TitlePartSettings.MaxTitleLength;
}
<fieldset>
<label for="@Html.FieldIdFor(m => m.MaxLength)">@T("Maximum length")</label>
@Html.EditorFor(m => m.MaxLength, new { htmlAttributes = new { min = 0, max = maxLength } })
<span class="hint">@T("Maximum length allowed for the title. Setting the value to 0 means the maximum allowed length is {0} characters.", maxLength)</span>
@Html.ValidationMessageFor(m => m.MaxLength)
</fieldset>

View File

@@ -1,7 +1,11 @@
@model Orchard.Core.Title.Models.TitlePart
@using Orchard.Core.Title.Settings
@model Orchard.Core.Title.Models.TitlePart
@{
var maxLength = Model.Settings.GetModel<TitlePartSettings>().MaxLength > 0 ? Model.Settings.GetModel<TitlePartSettings>().MaxLength.ToString() : "";
}
<fieldset>
<label for="@Html.FieldIdFor(m => m.Title)" class="required">@T("Title")</label>
@Html.TextBoxFor(m => m.Title, new { @class = "text large", autofocus = "autofocus" })
<label for="@Html.FieldIdFor(m => m.Title)" class="required">@T("Title")</label>
@Html.TextBoxFor(m => m.Title, new { @class = "text large", autofocus = "autofocus", maxlength = maxLength })
<span class="hint">@T("You must provide a title for this content item")</span>
</fieldset>

View File

@@ -21,7 +21,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\bin\roslyn" />
</appSettings>
@@ -73,8 +72,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -3,6 +3,6 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
</packages>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -15,7 +14,7 @@
<RootNamespace>Lucene</RootNamespace>
<AssemblyName>Lucene</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<UseIISExpress>false</UseIISExpress>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -40,7 +39,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -51,7 +49,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
@@ -61,8 +58,8 @@
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -170,10 +167,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -21,7 +21,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\..\bin\roslyn" />
</appSettings>
@@ -72,8 +71,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -4,7 +4,7 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
<package id="SharpZipLib" version="1.3.3" targetFramework="net48" />
</packages>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -14,7 +13,7 @@
<RootNamespace>Markdown</RootNamespace>
<AssemblyName>Markdown</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>4.0</OldToolsVersion>
@@ -39,7 +38,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -50,7 +48,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -58,8 +55,8 @@
<Reference Include="Markdig.Signed, Version=0.22.1.0, Culture=neutral, PublicKeyToken=870da25a133885f8, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Markdig.Signed.0.22.1\lib\net452\Markdig.Signed.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
@@ -234,10 +231,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -21,7 +21,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\..\bin\roslyn" />
</appSettings>
@@ -73,8 +72,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -4,7 +4,7 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Memory" version="4.5.4" targetFramework="net48" />

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -14,7 +13,7 @@
<RootNamespace>Orchard.Alias</RootNamespace>
<AssemblyName>Orchard.Alias</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>4.0</OldToolsVersion>
@@ -39,7 +38,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -50,13 +48,12 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -196,10 +193,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -6,8 +6,6 @@
@using Orchard.Utility.Extensions
@{
var urlPrefix = WorkContext.Resolve<ShellSettings>().RequestUrlPrefix;
Layout.Title = T("Manage Aliases").Text;
var aliasService = WorkContext.Resolve<IAliasService>();
AdminIndexOptions options = Model.Options;
@@ -59,10 +57,10 @@
<tr>
<td>
<input type="hidden" value="@alias.Path" name="@Html.FieldNameFor(m => Model.AliasEntries[index].Alias.Path)" />
@Html.Link(alias.Path == String.Empty ? "/" : alias.Path, Href("~/" + urlPrefix + alias.Path))
@Html.Link(alias.Path == String.Empty ? "/" : alias.Path, Href("~/" + alias.Path))
</td>
<td>
@Html.Link(url, Href("~/" + urlPrefix + "/" + url))
@Html.Link(url, Href("~/" + url))
</td>
</tr>
}

View File

@@ -6,8 +6,6 @@
@using Orchard.Utility.Extensions
@{
var urlPrefix = WorkContext.Resolve<ShellSettings>().RequestUrlPrefix;
Layout.Title = T("Manage Aliases").Text;
var aliasService = WorkContext.Resolve<IAliasService>();
AdminIndexOptions options = Model.Options;
@@ -73,10 +71,10 @@
<input type="checkbox" value="true" name="@Html.FieldNameFor(m => Model.AliasEntries[index].IsChecked)" />
</td>
<td>
@Html.Link(alias.Path == String.Empty ? "/" : alias.Path, Href("~/" + urlPrefix + alias.Path))
@Html.Link(alias.Path == String.Empty ? "/" : alias.Path, Href("~/" + alias.Path))
</td>
<td>
@Html.Link(url, Href("~/" + urlPrefix + "/" + url))
@Html.Link(url, Href("~/" + url))
</td>
<td>
@Html.ActionLink(T("Edit").Text, "Edit", new { path = alias.Path == String.Empty ? "/" : alias.Path })@T(" | ")

View File

@@ -21,7 +21,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\..\bin\roslyn" />
</appSettings>
@@ -73,8 +72,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -3,6 +3,6 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
</packages>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -14,7 +13,7 @@
<RootNamespace>Orchard.AntiSpam</RootNamespace>
<AssemblyName>Orchard.AntiSpam</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>4.0</OldToolsVersion>
@@ -39,7 +38,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -50,13 +48,12 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -253,10 +250,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -21,7 +21,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\..\bin\roslyn" />
</appSettings>
@@ -73,8 +72,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -3,7 +3,7 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net48" />
</packages>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -15,7 +14,7 @@
<RootNamespace>Orchard.ArchiveLater</RootNamespace>
<AssemblyName>Orchard.ArchiveLater</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
@@ -40,7 +39,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -51,12 +49,11 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -169,10 +166,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -21,7 +21,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\..\bin\roslyn" />
</appSettings>
@@ -73,8 +72,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -3,6 +3,6 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
</packages>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -14,7 +13,7 @@
<RootNamespace>Orchard.AuditTrail</RootNamespace>
<AssemblyName>Orchard.AuditTrail</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>4.0</OldToolsVersion>
@@ -38,7 +37,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -49,7 +47,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -57,8 +54,8 @@
<Reference Include="Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Iesi.Collections.4.0.1.4000\lib\net40\Iesi.Collections.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -401,10 +398,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -21,7 +21,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\..\bin\roslyn" />
</appSettings>
@@ -29,6 +28,7 @@
<compilation targetFramework="4.8">
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
@@ -74,8 +74,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -4,7 +4,7 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net48" />
<package id="NHibernate" version="4.1.2.4000" targetFramework="net48" />

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -14,7 +13,7 @@
<RootNamespace>Orchard.Autoroute</RootNamespace>
<AssemblyName>Orchard.Autoroute</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>4.0</OldToolsVersion>
@@ -39,7 +38,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -50,13 +48,12 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -216,10 +213,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

View File

@@ -41,6 +41,7 @@ namespace Orchard.Autoroute.Providers {
context.For<IContent>("Content")
// {Content.Slug}
.Token("Slug", (content => content == null ? String.Empty : _slugService.Slugify(content)))
.Chain("Slug", "Text", (content => content == null ? String.Empty : _slugService.Slugify(content)))
.Token("Path", (content => {
var autoroutePart = content.As<AutoroutePart>();
if (autoroutePart == null) {

View File

@@ -186,7 +186,7 @@ namespace Orchard.Autoroute.Services {
}
public string GenerateUniqueSlug(AutoroutePart part, IEnumerable<string> existingPaths) {
if (existingPaths == null || !existingPaths.Contains(part.Path))
if (existingPaths == null || !existingPaths.Contains(part.Path, StringComparer.OrdinalIgnoreCase))
return part.Path;
var version = existingPaths.Select(s => GetSlugVersion(part.Path, s)).OrderBy(i => i).LastOrDefault();
@@ -287,7 +287,8 @@ namespace Orchard.Autoroute.Services {
private static int? GetSlugVersion(string path, string potentialConflictingPath) {
int v;
var slugParts = potentialConflictingPath.Split(new[] { path }, StringSplitOptions.RemoveEmptyEntries);
// Matching needs to ignore case, so both paths are forced to lowercase.
var slugParts = potentialConflictingPath.ToLower().Split(new[] { path.ToLower() }, StringSplitOptions.RemoveEmptyEntries);
if (slugParts.Length == 0)
return 2;

View File

@@ -20,7 +20,6 @@
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- Registering Roslyn as a compiler for Razor IntelliSense. -->
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="..\..\bin\roslyn" />
</appSettings>
@@ -72,8 +71,7 @@
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</compilers>
</system.codedom>
</configuration>

View File

@@ -3,6 +3,6 @@
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net48" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
</packages>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -14,7 +13,7 @@
<RootNamespace>Orchard.Azure.MediaServices</RootNamespace>
<AssemblyName>Orchard.Azure.MediaServices</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<LangVersion>7.3</LangVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>4.0</OldToolsVersion>
@@ -38,7 +37,6 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -49,7 +47,6 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>latest</LangVersion>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
@@ -66,8 +63,8 @@
<Reference Include="Microsoft.Azure.KeyVault.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.Azure.KeyVault.Core.1.0.0\lib\net40\Microsoft.Azure.KeyVault.Core.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Data.Edm, Version=5.8.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -591,10 +588,4 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
</Project>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -27,4 +27,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwiY2xvdWRtZWRpYS1hZG1pbi1jb21tb24udHMiXSwibmFtZXMiOlsiT3JjaGFyZCIsIk9yY2hhcmQuQXp1cmUiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4iLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4uQ29tbW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBU2I7QUFURCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FTbkJBO0lBVGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBU2pDQTtRQVRvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsS0FBS0EsQ0FTdkNBO1lBVGtDQSxXQUFBQSxLQUFLQTtnQkFBQ0MsSUFBQUEsTUFBTUEsQ0FTOUNBO2dCQVR3Q0EsV0FBQUEsTUFBTUEsRUFBQ0EsQ0FBQ0E7b0JBQzdDQyxDQUFDQSxDQUFDQTt3QkFDRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsT0FBT0EsRUFBRUEscUNBQXFDQSxFQUFFQSxVQUFTQSxDQUFDQTs0QkFDbkUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFFcEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ2pCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDM0IsQ0FBQyxDQUFDQSxDQUFDQTtvQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ1BBLENBQUNBLEVBVHdDRCxNQUFNQSxHQUFOQSxZQUFNQSxLQUFOQSxZQUFNQSxRQVM5Q0E7WUFBREEsQ0FBQ0EsRUFUa0NELEtBQUtBLEdBQUxBLG1CQUFLQSxLQUFMQSxtQkFBS0EsUUFTdkNBO1FBQURBLENBQUNBLEVBVG9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBU2pDQTtJQUFEQSxDQUFDQSxFQVRjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQVNuQkE7QUFBREEsQ0FBQ0EsRUFUTSxPQUFPLEtBQVAsT0FBTyxRQVNiIiwiZmlsZSI6ImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XG5cbm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4uQ29tbW9uIHtcbiAgICAkKCgpID0+IHtcbiAgICAgICAgJChcImZvcm1cIikub24oXCJjbGlja1wiLCBcImJ1dHRvbltkYXRhLXByb21wdF0sIGFbZGF0YS1wcm9tcHRdXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciBwcm9tcHQgPSAkKHRoaXMpLmRhdGEoXCJwcm9tcHRcIik7XG5cbiAgICAgICAgICAgIGlmICghY29uZmlybShwcm9tcHQpKVxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59ICJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwiY2xvdWRtZWRpYS1hZG1pbi1jb21tb24udHMiXSwibmFtZXMiOlsiT3JjaGFyZCIsIk9yY2hhcmQuQXp1cmUiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4iLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4uQ29tbW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBU2I7QUFURCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FTbkJBO0lBVGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBU2pDQTtRQVRvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsS0FBS0EsQ0FTdkNBO1lBVGtDQSxXQUFBQSxLQUFLQTtnQkFBQ0MsSUFBQUEsTUFBTUEsQ0FTOUNBO2dCQVR3Q0EsV0FBQUEsTUFBTUEsRUFBQ0EsQ0FBQ0E7b0JBQzdDQyxDQUFDQSxDQUFDQTt3QkFDRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsT0FBT0EsRUFBRUEscUNBQXFDQSxFQUFFQSxVQUFTQSxDQUFDQTs0QkFDbkUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFFcEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ2pCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDM0IsQ0FBQyxDQUFDQSxDQUFDQTtvQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ1BBLENBQUNBLEVBVHdDRCxNQUFNQSxHQUFOQSxZQUFNQSxLQUFOQSxZQUFNQSxRQVM5Q0E7WUFBREEsQ0FBQ0EsRUFUa0NELEtBQUtBLEdBQUxBLG1CQUFLQSxLQUFMQSxtQkFBS0EsUUFTdkNBO1FBQURBLENBQUNBLEVBVG9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBU2pDQTtJQUFEQSxDQUFDQSxFQVRjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQVNuQkE7QUFBREEsQ0FBQ0EsRUFUTSxPQUFPLEtBQVAsT0FBTyxRQVNiIiwiZmlsZSI6ImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XHJcblxyXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkFkbWluLkNvbW1vbiB7XHJcbiAgICAkKCgpID0+IHtcclxuICAgICAgICAkKFwiZm9ybVwiKS5vbihcImNsaWNrXCIsIFwiYnV0dG9uW2RhdGEtcHJvbXB0XSwgYVtkYXRhLXByb21wdF1cIiwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICB2YXIgcHJvbXB0ID0gJCh0aGlzKS5kYXRhKFwicHJvbXB0XCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFjb25maXJtKHByb21wdCkpXHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufSAiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

File diff suppressed because one or more lines are too long

View File

@@ -35,4 +35,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYXV0b3JlZnJlc2guanMiLCJjbG91ZG1lZGlhLWF1dG9yZWZyZXNoLnRzIl0sIm5hbWVzIjpbIk9yY2hhcmQiLCJPcmNoYXJkLkF6dXJlIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkF1dG9SZWZyZXNoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBcUJiO0FBckJELFdBQU8sT0FBTztJQUFDQSxJQUFBQSxLQUFLQSxDQXFCbkJBO0lBckJjQSxXQUFBQSxLQUFLQTtRQUFDQyxJQUFBQSxhQUFhQSxDQXFCakNBO1FBckJvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsV0FBV0EsQ0FxQjdDQTtZQXJCa0NBLFdBQUFBLFdBQVdBLEVBQUNBLENBQUNBO2dCQUM1Q0MsaUNBQWlDQTtnQkFDakNBLENBQUNBLENBQUNBO29CQUNFQSxDQUFDQSxDQUFDQSxvQkFBb0JBLENBQUNBLENBQUNBLElBQUlBLENBQUNBO3dCQUN6QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25CLElBQUksTUFBTSxHQUFHOzRCQUNULElBQUksU0FBUyxHQUFHLElBQUksQ0FBQzs0QkFDckIsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFFeEMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQ0FDSCxHQUFHLEVBQUUsR0FBRztnQ0FDUixLQUFLLEVBQUUsS0FBSzs2QkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsSUFBSTtnQ0FDUixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNyQixVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUM3QixDQUFDLENBQUMsQ0FBQzt3QkFDUCxDQUFDLENBQUM7d0JBRUYsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDN0IsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUFyQmtDRCxXQUFXQSxHQUFYQSx5QkFBV0EsS0FBWEEseUJBQVdBLFFBcUI3Q0E7UUFBREEsQ0FBQ0EsRUFyQm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBcUJqQ0E7SUFBREEsQ0FBQ0EsRUFyQmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBcUJuQkE7QUFBREEsQ0FBQ0EsRUFyQk0sT0FBTyxLQUFQLE9BQU8sUUFxQmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1hdXRvcmVmcmVzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxuXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkF1dG9SZWZyZXNoIHtcbiAgICAvLyBQZXJpb2RpY2FsbHkgcmVmcmVzaCBlbGVtZW50cy5cbiAgICAkKCgpID0+IHtcbiAgICAgICAgJChcIltkYXRhLXJlZnJlc2gtdXJsXVwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWxmID0gJCh0aGlzKTtcbiAgICAgICAgICAgIHZhciB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHNlbGY7XG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IGNvbnRhaW5lci5kYXRhKFwicmVmcmVzaC11cmxcIik7XG5cbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSkudGhlbihodG1sID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmh0bWwoaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodXBkYXRlLCA1MDAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQodXBkYXRlLCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYXV0b3JlZnJlc2guanMiLCJjbG91ZG1lZGlhLWF1dG9yZWZyZXNoLnRzIl0sIm5hbWVzIjpbIk9yY2hhcmQiLCJPcmNoYXJkLkF6dXJlIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkF1dG9SZWZyZXNoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBcUJiO0FBckJELFdBQU8sT0FBTztJQUFDQSxJQUFBQSxLQUFLQSxDQXFCbkJBO0lBckJjQSxXQUFBQSxLQUFLQTtRQUFDQyxJQUFBQSxhQUFhQSxDQXFCakNBO1FBckJvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsV0FBV0EsQ0FxQjdDQTtZQXJCa0NBLFdBQUFBLFdBQVdBLEVBQUNBLENBQUNBO2dCQUM1Q0MsaUNBQWlDQTtnQkFDakNBLENBQUNBLENBQUNBO29CQUNFQSxDQUFDQSxDQUFDQSxvQkFBb0JBLENBQUNBLENBQUNBLElBQUlBLENBQUNBO3dCQUN6QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25CLElBQUksTUFBTSxHQUFHOzRCQUNULElBQUksU0FBUyxHQUFHLElBQUksQ0FBQzs0QkFDckIsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFFeEMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQ0FDSCxHQUFHLEVBQUUsR0FBRztnQ0FDUixLQUFLLEVBQUUsS0FBSzs2QkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsSUFBSTtnQ0FDUixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNyQixVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUM3QixDQUFDLENBQUMsQ0FBQzt3QkFDUCxDQUFDLENBQUM7d0JBRUYsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDN0IsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUFyQmtDRCxXQUFXQSxHQUFYQSx5QkFBV0EsS0FBWEEseUJBQVdBLFFBcUI3Q0E7UUFBREEsQ0FBQ0EsRUFyQm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBcUJqQ0E7SUFBREEsQ0FBQ0EsRUFyQmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBcUJuQkE7QUFBREEsQ0FBQ0EsRUFyQk0sT0FBTyxLQUFQLE9BQU8sUUFxQmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1hdXRvcmVmcmVzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxyXG5cclxubW9kdWxlIE9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5BdXRvUmVmcmVzaCB7XHJcbiAgICAvLyBQZXJpb2RpY2FsbHkgcmVmcmVzaCBlbGVtZW50cy5cclxuICAgICQoKCkgPT4ge1xyXG4gICAgICAgICQoXCJbZGF0YS1yZWZyZXNoLXVybF1cIikuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBzZWxmID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgdmFyIHVwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBzZWxmO1xyXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IGNvbnRhaW5lci5kYXRhKFwicmVmcmVzaC11cmxcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgICAgICAgICBjYWNoZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0pLnRoZW4oaHRtbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmh0bWwoaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh1cGRhdGUsIDUwMDApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHVwZGF0ZSwgNTAwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

View File

@@ -45,4 +45,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFDNUMsOENBQThDO0FBRTlDLElBQU8sT0FBTyxDQTZCYjtBQTdCRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0E2Qm5CQTtJQTdCY0EsV0FBQUEsS0FBS0E7UUFBQ0MsSUFBQUEsYUFBYUEsQ0E2QmpDQTtRQTdCb0JBLFdBQUFBLGFBQWFBO1lBQUNDLElBQUFBLFNBQVNBLENBNkIzQ0E7WUE3QmtDQSxXQUFBQSxTQUFTQTtnQkFBQ0MsSUFBQUEsS0FBS0EsQ0E2QmpEQTtnQkE3QjRDQSxXQUFBQSxLQUFLQSxFQUFDQSxDQUFDQTtvQkFDaERDLENBQUNBLENBQUNBO3dCQUNFLElBQUksUUFBUSxHQUFRLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUUvQyxRQUFRLENBQUMsTUFBTSxDQUFDOzRCQUNaLE1BQU0sRUFBRTtnQ0FDSixXQUFXLEVBQUUsQ0FBQztnQ0FDZCxnQkFBZ0IsRUFBRSxJQUFJO2dDQUN0QixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFOzZCQUNoQzs0QkFDRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO3lCQUNuQyxDQUFDLENBQUM7d0JBRUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBUyxDQUFDOzRCQUNuQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUMsQ0FBQzt3QkFFSCxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7NEJBQ3RDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ2pDLENBQUMsQ0FBQyxDQUFDO3dCQUVILCtDQUErQzt3QkFDL0Msd0RBQXdEO3dCQUN4RCxzQ0FBc0M7d0JBQ3RDLHVCQUF1Qjt3QkFDdkIscUNBQXFDO3dCQUNyQyxPQUFPO3dCQUNQLEtBQUs7b0JBQ1QsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsRUE3QjRDRCxLQUFLQSxHQUFMQSxlQUFLQSxLQUFMQSxlQUFLQSxRQTZCakRBO1lBQURBLENBQUNBLEVBN0JrQ0QsU0FBU0EsR0FBVEEsdUJBQVNBLEtBQVRBLHVCQUFTQSxRQTZCM0NBO1FBQURBLENBQUNBLEVBN0JvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQTZCakNBO0lBQURBLENBQUNBLEVBN0JjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQTZCbkJBO0FBQURBLENBQUNBLEVBN0JNLE9BQU8sS0FBUCxPQUFPLFFBNkJiIiwiZmlsZSI6ImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5dWkuZC50c1wiIC8+XG5cbm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIHtcbiAgICAkKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyZWVWaWV3OiBhbnkgPSAkKFwiI2Fzc2V0LWZpbGVzLXRyZWV2aWV3XCIpO1xuXG4gICAgICAgIHRyZWVWaWV3LmpzdHJlZSh7XG4gICAgICAgICAgICBcImNvcmVcIjoge1xuICAgICAgICAgICAgICAgIFwiYW5pbWF0aW9uXCI6IDAsXG4gICAgICAgICAgICAgICAgXCJjaGVja19jYWxsYmFja1wiOiB0cnVlLFxuICAgICAgICAgICAgICAgIFwidGhlbWVzXCI6IHsgXCJzdHJpcGVzXCI6IHRydWUgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInBsdWdpbnNcIjogW1wic3RhdGVcIiwgXCJ3aG9sZXJvd1wiXVxuICAgICAgICB9KTtcblxuICAgICAgICAkKFwiLmV4cGFuZC1hbGxcIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICB0cmVlVmlldy5qc3RyZWUoJ29wZW5fYWxsJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoXCIuY29sbGFwc2UtYWxsXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHRyZWVWaWV3LmpzdHJlZSgnY2xvc2VfYWxsJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRPRE86IE1ha2UgbGlua3Mgd29yayAoUHJpdmF0ZS9QdWJsaWMgVVJMUykuXG4gICAgICAgIC8vdHJlZVZpZXcub24oXCJzZWxlY3Rfbm9kZS5qc3RyZWVcIiwgZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgICAgLy8gICAgdmFyIHVybCA9IGRhdGEubm9kZS5hX2F0dHIuaHJlZjtcbiAgICAgICAgLy8gICAgaWYgKHVybCAhPSBcIiNcIikge1xuICAgICAgICAvLyAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgICAgIC8vICAgIH1cbiAgICAgICAgLy99KTtcbiAgICB9KTtcbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFDNUMsOENBQThDO0FBRTlDLElBQU8sT0FBTyxDQTZCYjtBQTdCRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0E2Qm5CQTtJQTdCY0EsV0FBQUEsS0FBS0E7UUFBQ0MsSUFBQUEsYUFBYUEsQ0E2QmpDQTtRQTdCb0JBLFdBQUFBLGFBQWFBO1lBQUNDLElBQUFBLFNBQVNBLENBNkIzQ0E7WUE3QmtDQSxXQUFBQSxTQUFTQTtnQkFBQ0MsSUFBQUEsS0FBS0EsQ0E2QmpEQTtnQkE3QjRDQSxXQUFBQSxLQUFLQSxFQUFDQSxDQUFDQTtvQkFDaERDLENBQUNBLENBQUNBO3dCQUNFLElBQUksUUFBUSxHQUFRLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUUvQyxRQUFRLENBQUMsTUFBTSxDQUFDOzRCQUNaLE1BQU0sRUFBRTtnQ0FDSixXQUFXLEVBQUUsQ0FBQztnQ0FDZCxnQkFBZ0IsRUFBRSxJQUFJO2dDQUN0QixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFOzZCQUNoQzs0QkFDRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO3lCQUNuQyxDQUFDLENBQUM7d0JBRUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBUyxDQUFDOzRCQUNuQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUMsQ0FBQzt3QkFFSCxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7NEJBQ3RDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ2pDLENBQUMsQ0FBQyxDQUFDO3dCQUVILCtDQUErQzt3QkFDL0Msd0RBQXdEO3dCQUN4RCxzQ0FBc0M7d0JBQ3RDLHVCQUF1Qjt3QkFDdkIscUNBQXFDO3dCQUNyQyxPQUFPO3dCQUNQLEtBQUs7b0JBQ1QsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsRUE3QjRDRCxLQUFLQSxHQUFMQSxlQUFLQSxLQUFMQSxlQUFLQSxRQTZCakRBO1lBQURBLENBQUNBLEVBN0JrQ0QsU0FBU0EsR0FBVEEsdUJBQVNBLEtBQVRBLHVCQUFTQSxRQTZCM0NBO1FBQURBLENBQUNBLEVBN0JvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQTZCakNBO0lBQURBLENBQUNBLEVBN0JjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQTZCbkJBO0FBQURBLENBQUNBLEVBN0JNLE9BQU8sS0FBUCxPQUFPLFFBNkJiIiwiZmlsZSI6ImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnl1aS5kLnRzXCIgLz5cclxuXHJcbm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIHtcclxuICAgICQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB0cmVlVmlldzogYW55ID0gJChcIiNhc3NldC1maWxlcy10cmVldmlld1wiKTtcclxuXHJcbiAgICAgICAgdHJlZVZpZXcuanN0cmVlKHtcclxuICAgICAgICAgICAgXCJjb3JlXCI6IHtcclxuICAgICAgICAgICAgICAgIFwiYW5pbWF0aW9uXCI6IDAsXHJcbiAgICAgICAgICAgICAgICBcImNoZWNrX2NhbGxiYWNrXCI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBcInRoZW1lc1wiOiB7IFwic3RyaXBlc1wiOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwicGx1Z2luc1wiOiBbXCJzdGF0ZVwiLCBcIndob2xlcm93XCJdXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQoXCIuZXhwYW5kLWFsbFwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgdHJlZVZpZXcuanN0cmVlKCdvcGVuX2FsbCcpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKFwiLmNvbGxhcHNlLWFsbFwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHRyZWVWaWV3LmpzdHJlZSgnY2xvc2VfYWxsJyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFRPRE86IE1ha2UgbGlua3Mgd29yayAoUHJpdmF0ZS9QdWJsaWMgVVJMUykuXHJcbiAgICAgICAgLy90cmVlVmlldy5vbihcInNlbGVjdF9ub2RlLmpzdHJlZVwiLCBmdW5jdGlvbiAoZSwgZGF0YSkge1xyXG4gICAgICAgIC8vICAgIHZhciB1cmwgPSBkYXRhLm5vZGUuYV9hdHRyLmhyZWY7XHJcbiAgICAgICAgLy8gICAgaWYgKHVybCAhPSBcIiNcIikge1xyXG4gICAgICAgIC8vICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgLy99KTtcclxuICAgIH0pO1xyXG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9

View File

@@ -28,4 +28,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBLDRDQUE0QztBQUM1Qyw4Q0FBOEM7QUFFOUMsSUFBTyxPQUFPLENBV2I7QUFYRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FXbkJBO0lBWGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBV2pDQTtRQVhvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsU0FBU0EsQ0FXM0NBO1lBWGtDQSxXQUFBQSxTQUFTQSxFQUFDQSxDQUFDQTtnQkFDMUNDLENBQUNBLENBQUNBO29CQUNFLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDWixRQUFRLEVBQUU7NEJBQ04sRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0NBQ3JDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdEYsQ0FBQzt3QkFDRCxNQUFNLEVBQUUsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUk7cUJBQ2pHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxDQUFDLENBQUNBLENBQUNBO1lBQ1BBLENBQUNBLEVBWGtDRCxTQUFTQSxHQUFUQSx1QkFBU0EsS0FBVEEsdUJBQVNBLFFBVzNDQTtRQUFEQSxDQUFDQSxFQVhvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQVdqQ0E7SUFBREEsQ0FBQ0EsRUFYY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFXbkJBO0FBQURBLENBQUNBLEVBWE0sT0FBTyxLQUFQLE9BQU8sUUFXYiIsImZpbGUiOiJjbG91ZG1lZGlhLWVkaXQtYXNzZXQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeS5kLnRzXCIgLz5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeXVpLmQudHNcIiAvPlxuXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkFzc2V0RWRpdCB7XG4gICAgJChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGxvY2FsU3RvcmFnZSA9IHdpbmRvd1tcImxvY2FsU3RvcmFnZVwiXTtcbiAgICAgICAgJChcIiN0YWJzXCIpLnRhYnMoe1xuICAgICAgICAgICAgYWN0aXZhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlICYmIGxvY2FsU3RvcmFnZS5zZXRJdGVtKVxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInNlbGVjdGVkQXNzZXRUYWJcIiwgJChcIiN0YWJzXCIpLnRhYnMoXCJvcHRpb25cIiwgXCJhY3RpdmVcIikpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZTogbG9jYWxTdG9yYWdlICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzZWxlY3RlZEFzc2V0VGFiXCIpIDogbnVsbFxuICAgICAgICB9KS5zaG93KCk7IFxuICAgIH0pO1xufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBLDRDQUE0QztBQUM1Qyw4Q0FBOEM7QUFFOUMsSUFBTyxPQUFPLENBV2I7QUFYRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FXbkJBO0lBWGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBV2pDQTtRQVhvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsU0FBU0EsQ0FXM0NBO1lBWGtDQSxXQUFBQSxTQUFTQSxFQUFDQSxDQUFDQTtnQkFDMUNDLENBQUNBLENBQUNBO29CQUNFLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDWixRQUFRLEVBQUU7NEJBQ04sRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0NBQ3JDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdEYsQ0FBQzt3QkFDRCxNQUFNLEVBQUUsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUk7cUJBQ2pHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxDQUFDLENBQUNBLENBQUNBO1lBQ1BBLENBQUNBLEVBWGtDRCxTQUFTQSxHQUFUQSx1QkFBU0EsS0FBVEEsdUJBQVNBLFFBVzNDQTtRQUFEQSxDQUFDQSxFQVhvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQVdqQ0E7SUFBREEsQ0FBQ0EsRUFYY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFXbkJBO0FBQURBLENBQUNBLEVBWE0sT0FBTyxLQUFQLE9BQU8sUUFXYiIsImZpbGUiOiJjbG91ZG1lZGlhLWVkaXQtYXNzZXQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeS5kLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5dWkuZC50c1wiIC8+XHJcblxyXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkFzc2V0RWRpdCB7XHJcbiAgICAkKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3dbXCJsb2NhbFN0b3JhZ2VcIl07XHJcbiAgICAgICAgJChcIiN0YWJzXCIpLnRhYnMoe1xyXG4gICAgICAgICAgICBhY3RpdmF0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSlcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInNlbGVjdGVkQXNzZXRUYWJcIiwgJChcIiN0YWJzXCIpLnRhYnMoXCJvcHRpb25cIiwgXCJhY3RpdmVcIikpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhY3RpdmU6IGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2VsZWN0ZWRBc3NldFRhYlwiKSA6IG51bGxcclxuICAgICAgICB9KS5zaG93KCk7IFxyXG4gICAgfSk7XHJcbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

View File

@@ -39,4 +39,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC5qcyIsImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdC5oYXNDb3JzU3VwcG9ydCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFDTEEsNENBQTRDO0FBQzVDLDhDQUE4QztBQUU5QyxJQUFPLE9BQU8sQ0F3QmI7QUF4QkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBd0JuQkE7SUF4QmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBd0JqQ0E7UUF4Qm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxjQUFjQSxDQXdCaERBO1lBeEJrQ0EsV0FBQUEsY0FBY0EsRUFBQ0EsQ0FBQ0E7Z0JBQy9DQztvQkFDSUMsTUFBTUEsQ0FBQ0EsaUJBQWlCQSxJQUFJQSxJQUFJQSxjQUFjQSxFQUFFQSxDQUFDQTtnQkFDckRBLENBQUNBO2dCQUVERCxDQUFDQSxDQUFDQTtvQkFDRSxJQUFJLGFBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztvQkFFckMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzt3QkFDaEIscUNBQXNCLEVBQUUsQ0FBQztvQkFDN0IsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDSixzQ0FBdUIsRUFBRSxDQUFDO29CQUM5QixDQUFDO29CQUVELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxVQUFVLEdBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUNuRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNaLFFBQVEsRUFBRTs0QkFDTixFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQztnQ0FDckMsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUMzRixDQUFDO3dCQUNELE1BQU0sRUFBRSxDQUFDLFVBQVUsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsSUFBSTtxQkFDckgsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUF4QmtDRCxjQUFjQSxHQUFkQSw0QkFBY0EsS0FBZEEsNEJBQWNBLFFBd0JoREE7UUFBREEsQ0FBQ0EsRUF4Qm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBd0JqQ0E7SUFBREEsQ0FBQ0EsRUF4QmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBd0JuQkE7QUFBREEsQ0FBQ0EsRUF4Qk0sT0FBTyxLQUFQLE9BQU8sUUF3QmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1lZGl0LWNsb3VkdmlkZW9wYXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnl1aS5kLnRzXCIgLz5cblxubW9kdWxlIE9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCB7XG4gICAgZnVuY3Rpb24gaGFzQ29yc1N1cHBvcnQoKSB7XG4gICAgICAgIHJldHVybiAnd2l0aENyZWRlbnRpYWxzJyBpbiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB9XG5cbiAgICAkKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY29yc1N1cHBvcnRlZCA9IGhhc0NvcnNTdXBwb3J0KCk7XG5cbiAgICAgICAgaWYgKGNvcnNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIGluaXRpYWxpemVVcGxvYWREaXJlY3QoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluaXRpYWxpemVVcGxvYWRQcm94aWVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxTdG9yYWdlID0gd2luZG93W1wibG9jYWxTdG9yYWdlXCJdO1xuICAgICAgICB2YXIgaXNDcmVhdGluZzogYm9vbGVhbiA9ICQoXCIjdGFic1wiKS5kYXRhKFwiY2xvdWR2aWRlby1pc2NyZWF0aW5nXCIpO1xuICAgICAgICAkKFwiI3RhYnNcIikudGFicyh7XG4gICAgICAgICAgICBhY3RpdmF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlLnNldEl0ZW0pXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwic2VsZWN0ZWRDbG91ZFZpZGVvVGFiXCIsICQoXCIjdGFic1wiKS50YWJzKFwib3B0aW9uXCIsIFwiYWN0aXZlXCIpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmU6ICFpc0NyZWF0aW5nICYmIGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2VsZWN0ZWRDbG91ZFZpZGVvVGFiXCIpIDogbnVsbFxuICAgICAgICB9KS5zaG93KCk7XG4gICAgfSk7XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC5qcyIsImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdC5oYXNDb3JzU3VwcG9ydCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFDTEEsNENBQTRDO0FBQzVDLDhDQUE4QztBQUU5QyxJQUFPLE9BQU8sQ0F3QmI7QUF4QkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBd0JuQkE7SUF4QmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBd0JqQ0E7UUF4Qm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxjQUFjQSxDQXdCaERBO1lBeEJrQ0EsV0FBQUEsY0FBY0EsRUFBQ0EsQ0FBQ0E7Z0JBQy9DQztvQkFDSUMsTUFBTUEsQ0FBQ0EsaUJBQWlCQSxJQUFJQSxJQUFJQSxjQUFjQSxFQUFFQSxDQUFDQTtnQkFDckRBLENBQUNBO2dCQUVERCxDQUFDQSxDQUFDQTtvQkFDRSxJQUFJLGFBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztvQkFFckMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzt3QkFDaEIscUNBQXNCLEVBQUUsQ0FBQztvQkFDN0IsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDSixzQ0FBdUIsRUFBRSxDQUFDO29CQUM5QixDQUFDO29CQUVELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxVQUFVLEdBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUNuRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNaLFFBQVEsRUFBRTs0QkFDTixFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQztnQ0FDckMsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUMzRixDQUFDO3dCQUNELE1BQU0sRUFBRSxDQUFDLFVBQVUsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsSUFBSTtxQkFDckgsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUF4QmtDRCxjQUFjQSxHQUFkQSw0QkFBY0EsS0FBZEEsNEJBQWNBLFFBd0JoREE7UUFBREEsQ0FBQ0EsRUF4Qm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBd0JqQ0E7SUFBREEsQ0FBQ0EsRUF4QmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBd0JuQkE7QUFBREEsQ0FBQ0EsRUF4Qk0sT0FBTyxLQUFQLE9BQU8sUUF3QmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1lZGl0LWNsb3VkdmlkZW9wYXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeXVpLmQudHNcIiAvPlxyXG5cclxubW9kdWxlIE9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCB7XHJcbiAgICBmdW5jdGlvbiBoYXNDb3JzU3VwcG9ydCgpIHtcclxuICAgICAgICByZXR1cm4gJ3dpdGhDcmVkZW50aWFscycgaW4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgJChmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgY29yc1N1cHBvcnRlZCA9IGhhc0NvcnNTdXBwb3J0KCk7XHJcblxyXG4gICAgICAgIGlmIChjb3JzU3VwcG9ydGVkKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxpemVVcGxvYWREaXJlY3QoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpbml0aWFsaXplVXBsb2FkUHJveGllZCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGxvY2FsU3RvcmFnZSA9IHdpbmRvd1tcImxvY2FsU3RvcmFnZVwiXTtcclxuICAgICAgICB2YXIgaXNDcmVhdGluZzogYm9vbGVhbiA9ICQoXCIjdGFic1wiKS5kYXRhKFwiY2xvdWR2aWRlby1pc2NyZWF0aW5nXCIpO1xyXG4gICAgICAgICQoXCIjdGFic1wiKS50YWJzKHtcclxuICAgICAgICAgICAgYWN0aXZhdGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlLnNldEl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJzZWxlY3RlZENsb3VkVmlkZW9UYWJcIiwgJChcIiN0YWJzXCIpLnRhYnMoXCJvcHRpb25cIiwgXCJhY3RpdmVcIikpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhY3RpdmU6ICFpc0NyZWF0aW5nICYmIGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2VsZWN0ZWRDbG91ZFZpZGVvVGFiXCIpIDogbnVsbFxyXG4gICAgICAgIH0pLnNob3coKTtcclxuICAgIH0pO1xyXG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9

View File

@@ -26,4 +26,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS5qcyIsImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllciIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllci5EYXRhIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLlZpZGVvUGxheWVyLkRhdGEuQXNzZXRUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSxJQUFPLE9BQU8sQ0FrRmI7QUFsRkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBa0ZuQkE7SUFsRmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBa0ZqQ0E7UUFsRm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxXQUFXQSxDQWtGN0NBO1lBbEZrQ0EsV0FBQUEsV0FBV0E7Z0JBQUNDLElBQUFBLElBQUlBLENBa0ZsREE7Z0JBbEY4Q0EsV0FBQUEsSUFBSUEsRUFBQ0EsQ0FBQ0E7b0JBb0JqREMsV0FBWUEsU0FBU0E7d0JBQ2pCQyxxREFBVUEsQ0FBQUE7d0JBQ1ZBLG1FQUFpQkEsQ0FBQUE7d0JBQ2pCQSw2REFBY0EsQ0FBQUE7d0JBQ2RBLDJEQUFhQSxDQUFBQTtvQkFDakJBLENBQUNBLEVBTFdELGNBQVNBLEtBQVRBLGNBQVNBLFFBS3BCQTtvQkFMREEsSUFBWUEsU0FBU0EsR0FBVEEsY0FLWEEsQ0FBQUE7Z0JBeURMQSxDQUFDQSxFQWxGOENELElBQUlBLEdBQUpBLGdCQUFJQSxLQUFKQSxnQkFBSUEsUUFrRmxEQTtZQUFEQSxDQUFDQSxFQWxGa0NELFdBQVdBLEdBQVhBLHlCQUFXQSxLQUFYQSx5QkFBV0EsUUFrRjdDQTtRQUFEQSxDQUFDQSxFQWxGb0JELGFBQWFBLEdBQWJBLG1CQUFhQSxLQUFiQSxtQkFBYUEsUUFrRmpDQTtJQUFEQSxDQUFDQSxFQWxGY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFrRm5CQTtBQUFEQSxDQUFDQSxFQWxGTSxPQUFPLEtBQVAsT0FBTyxRQWtGYiIsImZpbGUiOiJjbG91ZG1lZGlhLXZpZGVvcGxheWVyLWRhdGEuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuVmlkZW9QbGF5ZXIuRGF0YSB7XG5cbiAgICBpbXBvcnQgRHVyYXRpb24gPSBtb21lbnQuRHVyYXRpb247XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIElBc3NldERhdGEge1xuICAgICAgICBWaWRlb0Fzc2V0czogSVZpZGVvQXNzZXRbXTtcbiAgICAgICAgRHluYW1pY1ZpZGVvQXNzZXRzOiBJRHluYW1pY1ZpZGVvQXNzZXRbXTtcbiAgICAgICAgVGh1bWJuYWlsQXNzZXRzOiBJVGh1bWJuYWlsQXNzZXRbXTtcbiAgICAgICAgU3VidGl0bGVBc3NldHM6IElTdWJ0aXRsZUFzc2V0W107XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJQXNzZXQge1xuICAgICAgICBUeXBlOiBBc3NldFR5cGU7XG4gICAgICAgIElkOiBudW1iZXI7XG4gICAgICAgIE5hbWU6IHN0cmluZztcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcbiAgICAgICAgTWFpbkZpbGVVcmw6IHN0cmluZztcbiAgICAgICAgTWVkaWFRdWVyeTogc3RyaW5nO1xuICAgIH1cblxuICAgIGV4cG9ydCBlbnVtIEFzc2V0VHlwZSB7XG4gICAgICAgIFZpZGVvQXNzZXQsXG4gICAgICAgIER5bmFtaWNWaWRlb0Fzc2V0LFxuICAgICAgICBUaHVtYm5haWxBc3NldCxcbiAgICAgICAgU3VidGl0bGVBc3NldFxuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVZpZGVvQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xuICAgICAgICBFbmNvZGluZ1ByZXNldDogc3RyaW5nO1xuICAgICAgICBFbmNvZGVyTWV0YWRhdGE6IElFbmNvZGVyTWV0YWRhdGE7XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY1ZpZGVvQXNzZXQgZXh0ZW5kcyBJVmlkZW9Bc3NldCB7XG4gICAgICAgIFNtb290aFN0cmVhbWluZ1VybDogc3RyaW5nO1xuICAgICAgICBIbHNVcmw6IHN0cmluZztcbiAgICAgICAgTXBlZ0Rhc2hVcmw6IHN0cmluZztcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIElUaHVtYm5haWxBc3NldCBleHRlbmRzIElBc3NldCB7XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJU3VidGl0bGVBc3NldCBleHRlbmRzIElBc3NldCB7XG4gICAgICAgIExhbmd1YWdlOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJRW5jb2Rlck1ldGFkYXRhIHtcbiAgICAgICAgQXNzZXRGaWxlczogSUFzc2V0RmlsZVtdO1xuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0RmlsZSB7XG4gICAgICAgIE5hbWU6IHN0cmluZztcbiAgICAgICAgU2l6ZTogbnVtYmVyO1xuICAgICAgICBEdXJhdGlvbjogRHVyYXRpb247XG4gICAgICAgIEF1ZGlvVHJhY2tzOiBJQXVkaW9UcmFja1tdO1xuICAgICAgICBWaWRlb1RyYWNrczogSVZpZGVvVHJhY2tbXTtcbiAgICAgICAgU291cmNlczogc3RyaW5nW107XG4gICAgICAgIEJpdHJhdGU6IG51bWJlcjtcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIElBdWRpb1RyYWNrIHtcbiAgICAgICAgSW5kZXg6IG51bWJlcjtcbiAgICAgICAgQml0cmF0ZTogbnVtYmVyO1xuICAgICAgICBTYW1wbGluZ1JhdGU6IG51bWJlcjtcbiAgICAgICAgQml0c1BlclNhbXBsZTogbnVtYmVyO1xuICAgICAgICBDaGFubmVsczogbnVtYmVyO1xuICAgICAgICBDb2RlYzogc3RyaW5nO1xuICAgICAgICBFbmNvZGVyVmVyc2lvbjogc3RyaW5nO1xuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVZpZGVvVHJhY2sge1xuICAgICAgICBJbmRleDogbnVtYmVyO1xuICAgICAgICBCaXRyYXRlOiBudW1iZXI7XG4gICAgICAgIFRhcmdldEJpdHJhdGU6IG51bWJlcjtcbiAgICAgICAgRnJhbWVyYXRlOiBudW1iZXI7XG4gICAgICAgIFRhcmdldEZyYW1lcmF0ZTogbnVtYmVyO1xuICAgICAgICBGb3VyQ2M6IHN0cmluZztcbiAgICAgICAgV2lkdGg6IG51bWJlcjtcbiAgICAgICAgSGVpZ2h0OiBudW1iZXI7XG4gICAgICAgIERpc3BsYXlSYXRpb1g6IG51bWJlcjtcbiAgICAgICAgRGlzcGxheVJhdGlvWTogbnVtYmVyO1xuICAgIH1cbn0gIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS5qcyIsImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllciIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllci5EYXRhIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLlZpZGVvUGxheWVyLkRhdGEuQXNzZXRUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSxJQUFPLE9BQU8sQ0FrRmI7QUFsRkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBa0ZuQkE7SUFsRmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBa0ZqQ0E7UUFsRm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxXQUFXQSxDQWtGN0NBO1lBbEZrQ0EsV0FBQUEsV0FBV0E7Z0JBQUNDLElBQUFBLElBQUlBLENBa0ZsREE7Z0JBbEY4Q0EsV0FBQUEsSUFBSUEsRUFBQ0EsQ0FBQ0E7b0JBb0JqREMsV0FBWUEsU0FBU0E7d0JBQ2pCQyxxREFBVUEsQ0FBQUE7d0JBQ1ZBLG1FQUFpQkEsQ0FBQUE7d0JBQ2pCQSw2REFBY0EsQ0FBQUE7d0JBQ2RBLDJEQUFhQSxDQUFBQTtvQkFDakJBLENBQUNBLEVBTFdELGNBQVNBLEtBQVRBLGNBQVNBLFFBS3BCQTtvQkFMREEsSUFBWUEsU0FBU0EsR0FBVEEsY0FLWEEsQ0FBQUE7Z0JBeURMQSxDQUFDQSxFQWxGOENELElBQUlBLEdBQUpBLGdCQUFJQSxLQUFKQSxnQkFBSUEsUUFrRmxEQTtZQUFEQSxDQUFDQSxFQWxGa0NELFdBQVdBLEdBQVhBLHlCQUFXQSxLQUFYQSx5QkFBV0EsUUFrRjdDQTtRQUFEQSxDQUFDQSxFQWxGb0JELGFBQWFBLEdBQWJBLG1CQUFhQSxLQUFiQSxtQkFBYUEsUUFrRmpDQTtJQUFEQSxDQUFDQSxFQWxGY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFrRm5CQTtBQUFEQSxDQUFDQSxFQWxGTSxPQUFPLEtBQVAsT0FBTyxRQWtGYiIsImZpbGUiOiJjbG91ZG1lZGlhLXZpZGVvcGxheWVyLWRhdGEuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuVmlkZW9QbGF5ZXIuRGF0YSB7XHJcblxyXG4gICAgaW1wb3J0IER1cmF0aW9uID0gbW9tZW50LkR1cmF0aW9uO1xyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0RGF0YSB7XHJcbiAgICAgICAgVmlkZW9Bc3NldHM6IElWaWRlb0Fzc2V0W107XHJcbiAgICAgICAgRHluYW1pY1ZpZGVvQXNzZXRzOiBJRHluYW1pY1ZpZGVvQXNzZXRbXTtcclxuICAgICAgICBUaHVtYm5haWxBc3NldHM6IElUaHVtYm5haWxBc3NldFtdO1xyXG4gICAgICAgIFN1YnRpdGxlQXNzZXRzOiBJU3VidGl0bGVBc3NldFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcclxuICAgICAgICBUeXBlOiBBc3NldFR5cGU7XHJcbiAgICAgICAgSWQ6IG51bWJlcjtcclxuICAgICAgICBOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcclxuICAgICAgICBNYWluRmlsZVVybDogc3RyaW5nO1xyXG4gICAgICAgIE1lZGlhUXVlcnk6IHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZW51bSBBc3NldFR5cGUge1xyXG4gICAgICAgIFZpZGVvQXNzZXQsXHJcbiAgICAgICAgRHluYW1pY1ZpZGVvQXNzZXQsXHJcbiAgICAgICAgVGh1bWJuYWlsQXNzZXQsXHJcbiAgICAgICAgU3VidGl0bGVBc3NldFxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVZpZGVvQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xyXG4gICAgICAgIEVuY29kaW5nUHJlc2V0OiBzdHJpbmc7XHJcbiAgICAgICAgRW5jb2Rlck1ldGFkYXRhOiBJRW5jb2Rlck1ldGFkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNWaWRlb0Fzc2V0IGV4dGVuZHMgSVZpZGVvQXNzZXQge1xyXG4gICAgICAgIFNtb290aFN0cmVhbWluZ1VybDogc3RyaW5nO1xyXG4gICAgICAgIEhsc1VybDogc3RyaW5nO1xyXG4gICAgICAgIE1wZWdEYXNoVXJsOiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJVGh1bWJuYWlsQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVN1YnRpdGxlQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xyXG4gICAgICAgIExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJRW5jb2Rlck1ldGFkYXRhIHtcclxuICAgICAgICBBc3NldEZpbGVzOiBJQXNzZXRGaWxlW107XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJQXNzZXRGaWxlIHtcclxuICAgICAgICBOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgU2l6ZTogbnVtYmVyO1xyXG4gICAgICAgIER1cmF0aW9uOiBEdXJhdGlvbjtcclxuICAgICAgICBBdWRpb1RyYWNrczogSUF1ZGlvVHJhY2tbXTtcclxuICAgICAgICBWaWRlb1RyYWNrczogSVZpZGVvVHJhY2tbXTtcclxuICAgICAgICBTb3VyY2VzOiBzdHJpbmdbXTtcclxuICAgICAgICBCaXRyYXRlOiBudW1iZXI7XHJcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgaW50ZXJmYWNlIElBdWRpb1RyYWNrIHtcclxuICAgICAgICBJbmRleDogbnVtYmVyO1xyXG4gICAgICAgIEJpdHJhdGU6IG51bWJlcjtcclxuICAgICAgICBTYW1wbGluZ1JhdGU6IG51bWJlcjtcclxuICAgICAgICBCaXRzUGVyU2FtcGxlOiBudW1iZXI7XHJcbiAgICAgICAgQ2hhbm5lbHM6IG51bWJlcjtcclxuICAgICAgICBDb2RlYzogc3RyaW5nO1xyXG4gICAgICAgIEVuY29kZXJWZXJzaW9uOiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJVmlkZW9UcmFjayB7XHJcbiAgICAgICAgSW5kZXg6IG51bWJlcjtcclxuICAgICAgICBCaXRyYXRlOiBudW1iZXI7XHJcbiAgICAgICAgVGFyZ2V0Qml0cmF0ZTogbnVtYmVyO1xyXG4gICAgICAgIEZyYW1lcmF0ZTogbnVtYmVyO1xyXG4gICAgICAgIFRhcmdldEZyYW1lcmF0ZTogbnVtYmVyO1xyXG4gICAgICAgIEZvdXJDYzogc3RyaW5nO1xyXG4gICAgICAgIFdpZHRoOiBudW1iZXI7XHJcbiAgICAgICAgSGVpZ2h0OiBudW1iZXI7XHJcbiAgICAgICAgRGlzcGxheVJhdGlvWDogbnVtYmVyO1xyXG4gICAgICAgIERpc3BsYXlSYXRpb1k6IG51bWJlcjtcclxuICAgIH1cclxufSAiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

Some files were not shown because too many files have changed in this diff Show More