From 10b2adcf678421b44af13ea620566bfa30f2cb72 Mon Sep 17 00:00:00 2001 From: Jeremy Miller Date: Sat, 12 May 2012 15:47:30 -0500 Subject: [PATCH] moved EndpointDriver and its associated classes to FubuMVC, removed Serenity out of the main FubuMVC repo --- rakefile.rb | 28 +- .../Endpoints/EndpointDriver.cs | 5 +- .../Endpoints/EndpointFormatting.cs | 2 +- .../Endpoints/EndpointInvocation.cs | 4 +- .../Endpoints/HttpResponse.cs | 6 +- .../Endpoints/WebRequestResponseExtensions.cs | 2 +- src/FubuMVC.Core/FubuMVC.Core.csproj | 5 + src/FubuMVC.sln | 51 - src/Serenity.Testing/BrowserFixture.cs | 73 - .../FakeSystem/IntegratedTester.cs | 160 -- .../Grammars/CheckValueGrammarTester.cs | 128 - .../Fixtures/Grammars/ClickGrammerTester.cs | 112 - .../Grammars/EnterValueGrammarTester.cs | 109 - .../Handlers/SelectElementHandlerTester.cs | 138 - .../ScreenFixtureCommonGrammarsTester.cs | 105 - .../Fixtures/ScreenFixtureTester.cs | 325 --- src/Serenity.Testing/HTMLPage1.htm | 25 - .../InProcessSerenitySystemTester.cs | 74 - .../Jasmine/PackageSpecificationsTester.cs | 24 - .../SpecificationGraphIntegratedTester.cs | 76 - .../Jasmine/SpecificationGraphTester.cs | 147 - .../Jasmine/SpecificationTester.cs | 147 - .../TestPackage1/content/scripts/Player.js | 22 - .../TestPackage1/content/scripts/Song.js | 7 - .../content/scripts/specs/PlayerSpec.js | 68 - .../Jasmine/TestPackage1/player.asset.config | 1 - .../scripts/specs/folder1/folder2/spec6.js | 8 - .../scripts/specs/folder1/folder2/spec7.js | 8 - .../scripts/specs/folder1/folder2/spec8.js | 8 - .../content/scripts/specs/folder1/spec4.js | 8 - .../content/scripts/specs/folder1/spec5.js | 8 - .../content/scripts/specs/spec1.js | 8 - .../content/scripts/specs/spec2.js | 8 - .../content/scripts/specs/spec3.js | 8 - .../Jasmine/TestPackage2/fake.asset.config | 1 - src/Serenity.Testing/Kayak.application.config | 5 - .../NavigationDriverTester.cs | 16 - .../Properties/AssemblyInfo.cs | 36 - src/Serenity.Testing/Serenity.Testing.csproj | 178 -- .../Serenity.Testing.dll.config | 25 - src/Serenity.Testing/SerenitySystemTester.cs | 83 - .../WebDriverSettingsTester.cs | 76 - src/Serenity.Testing/debugging.cs | 74 - src/Serenity.Testing/jasmine.txt | 3 - src/Serenity.Testing/packages.config | 19 - src/Serenity/ApplicationUnderTest.cs | 183 -- src/Serenity/BrowserType.cs | 9 - .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 178 -> 0 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 120 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 105 -> 0 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 111 -> 0 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 110 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 101 -> 0 bytes .../base/images/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes .../base/images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes .../base/images/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes .../base/images/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes .../base/images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes .../Content/themes/base/jquery-ui.css | 566 ---- .../themes/base/jquery.ui.accordion.css | 19 - .../Content/themes/base/jquery.ui.all.css | 11 - .../themes/base/jquery.ui.autocomplete.css | 53 - .../Content/themes/base/jquery.ui.base.css | 21 - .../Content/themes/base/jquery.ui.button.css | 38 - .../Content/themes/base/jquery.ui.core.css | 41 - .../themes/base/jquery.ui.datepicker.css | 68 - .../Content/themes/base/jquery.ui.dialog.css | 21 - .../themes/base/jquery.ui.progressbar.css | 11 - .../themes/base/jquery.ui.resizable.css | 20 - .../themes/base/jquery.ui.selectable.css | 10 - .../Content/themes/base/jquery.ui.slider.css | 24 - .../Content/themes/base/jquery.ui.tabs.css | 18 - .../Content/themes/base/jquery.ui.theme.css | 247 -- .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 178 -> 0 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 120 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 105 -> 0 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 111 -> 0 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 110 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 101 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes .../themes/base/minified/jquery-ui.min.css | 10 - .../base/minified/jquery.ui.accordion.min.css | 10 - .../base/minified/jquery.ui.all.min.css | 10 - .../minified/jquery.ui.autocomplete.min.css | 10 - .../base/minified/jquery.ui.base.min.css | 10 - .../base/minified/jquery.ui.button.min.css | 10 - .../base/minified/jquery.ui.core.min.css | 10 - .../minified/jquery.ui.datepicker.min.css | 10 - .../base/minified/jquery.ui.dialog.min.css | 10 - .../minified/jquery.ui.progressbar.min.css | 10 - .../base/minified/jquery.ui.resizable.min.css | 10 - .../minified/jquery.ui.selectable.min.css | 10 - .../base/minified/jquery.ui.slider.min.css | 10 - .../base/minified/jquery.ui.tabs.min.css | 10 - .../base/minified/jquery.ui.theme.min.css | 12 - src/Serenity/Fixtures/DateTimeExtensions.cs | 28 - .../Fixtures/Grammars/CheckValueGrammar.cs | 54 - .../Fixtures/Grammars/ClickGrammar.cs | 22 - .../Fixtures/Grammars/EnterValueGrammar.cs | 38 - .../Fixtures/Grammars/GestureConfig.cs | 43 - .../Fixtures/Grammars/SimpleElementGesture.cs | 83 - .../Fixtures/Handlers/BasicMatchingHandler.cs | 22 - .../Handlers/DefaultElementHandler.cs | 24 - .../Fixtures/Handlers/ElementHandlers.cs | 22 - .../Fixtures/Handlers/IElementHandler.cs | 11 - .../Fixtures/Handlers/IMatchingHandler.cs | 9 - .../Fixtures/Handlers/SelectElementHandler.cs | 88 - .../Handlers/TextboxElementHandler.cs | 29 - src/Serenity/Fixtures/ScreenFixture.cs | 185 -- src/Serenity/Fixtures/WebDriverExtensions.cs | 24 - src/Serenity/IApplicationUnderTest.cs | 35 - src/Serenity/InProcessApplicationUnderTest.cs | 157 -- src/Serenity/InProcessSerenitySystem.cs | 78 - src/Serenity/Jasmine/ConfigFileLoader.cs | 53 - src/Serenity/Jasmine/Header.htm | 14 - src/Serenity/Jasmine/ISpecNode.cs | 24 - src/Serenity/Jasmine/ISpecVisitor.cs | 9 - src/Serenity/Jasmine/JasmineCommand.cs | 49 - src/Serenity/Jasmine/JasmineInput.cs | 50 - src/Serenity/Jasmine/JasminePages.cs | 88 - src/Serenity/Jasmine/JasmineRunner.cs | 241 -- .../NulloCombinationDeterminationService.cs | 12 - .../Jasmine/SerenityJasmineApplication.cs | 53 - .../Jasmine/SerenityJasmineRegistry.cs | 24 - src/Serenity/Jasmine/SpecAssetRequirements.cs | 46 - src/Serenity/Jasmine/SpecHierarchyBuilder.cs | 164 -- src/Serenity/Jasmine/SpecPath.cs | 90 - src/Serenity/Jasmine/Specification.cs | 212 -- src/Serenity/Jasmine/SpecificationFolder.cs | 166 -- src/Serenity/Jasmine/SpecificationGraph.cs | 176 -- src/Serenity/NavigationDriver.cs | 142 - src/Serenity/Properties/AssemblyInfo.cs | 9 - src/Serenity/Serenity.csproj | 270 -- src/Serenity/SerenityApplications.cs | 44 - src/Serenity/SerenitySystem.cs | 58 - src/Serenity/Wait.cs | 25 - .../content/images/fubu-project.png | Bin 9052 -> 0 bytes .../content/images/jasmine_logo.png | Bin 4980 -> 0 bytes .../content/scripts/images/ajax-loader.gif | Bin 847 -> 0 bytes .../content/scripts/images/file.gif | Bin 110 -> 0 bytes .../content/scripts/images/folder-closed.gif | Bin 105 -> 0 bytes .../content/scripts/images/folder.gif | Bin 106 -> 0 bytes .../content/scripts/images/minus.gif | Bin 837 -> 0 bytes .../content/scripts/images/plus.gif | Bin 841 -> 0 bytes .../scripts/images/treeview-black-line.gif | Bin 1877 -> 0 bytes .../content/scripts/images/treeview-black.gif | Bin 1216 -> 0 bytes .../scripts/images/treeview-default-line.gif | Bin 1993 -> 0 bytes .../scripts/images/treeview-default.gif | Bin 1222 -> 0 bytes .../images/treeview-famfamfam-line.gif | Bin 807 -> 0 bytes .../scripts/images/treeview-famfamfam.gif | Bin 1280 -> 0 bytes .../scripts/images/treeview-gray-line.gif | Bin 1877 -> 0 bytes .../content/scripts/images/treeview-gray.gif | Bin 1230 -> 0 bytes .../scripts/images/treeview-red-line.gif | Bin 1877 -> 0 bytes .../content/scripts/images/treeview-red.gif | Bin 1230 -> 0 bytes .../content/scripts/jasmine-html.js | 190 -- .../content/scripts/jasmine-jquery-1.3.1.js | 288 -- .../content/scripts/jasmine-runner.js | 26 - .../WebContent/content/scripts/jasmine.css | 166 -- .../WebContent/content/scripts/jasmine.js | 2476 ----------------- .../content/scripts/jasmine_favicon.png | Bin 905 -> 0 bytes .../content/scripts/jquery-1.7.min.js | 4 - .../content/scripts/jquery.treeview.css | 74 - .../content/scripts/jquery.treeview.js | 256 -- .../content/scripts/serenity-jasmine.js | 3 - src/Serenity/WebContent/jasmine.asset.config | 16 - src/Serenity/WebDriverSettings.cs | 60 - src/Serenity/WebElementExtensions.cs | 40 - src/Serenity/packages.config | 19 - src/SerenityRunner/Program.cs | 40 - src/SerenityRunner/Properties/AssemblyInfo.cs | 36 - src/SerenityRunner/SerenityRunner.csproj | 81 - src/SerenityRunner/app.config | 18 - src/SerenityRunner/packages.config | 4 - ...ing_asset_tags_with_and_without_bottles.cs | 2 +- .../Conneg/FubuRegistryRunner.cs | 2 +- .../OutputFromAnActionThatReturnsStrings.cs | 1 - .../IntegrationTesting.csproj | 8 - 185 files changed, 13 insertions(+), 10704 deletions(-) rename src/{Serenity => FubuMVC.Core}/Endpoints/EndpointDriver.cs (95%) rename src/{Serenity => FubuMVC.Core}/Endpoints/EndpointFormatting.cs (70%) rename src/{Serenity => FubuMVC.Core}/Endpoints/EndpointInvocation.cs (93%) rename src/{Serenity => FubuMVC.Core}/Endpoints/HttpResponse.cs (91%) rename src/{Serenity => FubuMVC.Core}/Endpoints/WebRequestResponseExtensions.cs (94%) delete mode 100644 src/Serenity.Testing/BrowserFixture.cs delete mode 100644 src/Serenity.Testing/FakeSystem/IntegratedTester.cs delete mode 100644 src/Serenity.Testing/Fixtures/Grammars/CheckValueGrammarTester.cs delete mode 100644 src/Serenity.Testing/Fixtures/Grammars/ClickGrammerTester.cs delete mode 100644 src/Serenity.Testing/Fixtures/Grammars/EnterValueGrammarTester.cs delete mode 100644 src/Serenity.Testing/Fixtures/Handlers/SelectElementHandlerTester.cs delete mode 100644 src/Serenity.Testing/Fixtures/ScreenFixtureCommonGrammarsTester.cs delete mode 100644 src/Serenity.Testing/Fixtures/ScreenFixtureTester.cs delete mode 100644 src/Serenity.Testing/HTMLPage1.htm delete mode 100644 src/Serenity.Testing/InProcessSerenitySystemTester.cs delete mode 100644 src/Serenity.Testing/Jasmine/PackageSpecificationsTester.cs delete mode 100644 src/Serenity.Testing/Jasmine/SpecificationGraphIntegratedTester.cs delete mode 100644 src/Serenity.Testing/Jasmine/SpecificationGraphTester.cs delete mode 100644 src/Serenity.Testing/Jasmine/SpecificationTester.cs delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Player.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Song.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/specs/PlayerSpec.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage1/player.asset.config delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec6.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec7.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec8.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec4.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec5.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec1.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec2.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec3.js delete mode 100644 src/Serenity.Testing/Jasmine/TestPackage2/fake.asset.config delete mode 100644 src/Serenity.Testing/Kayak.application.config delete mode 100644 src/Serenity.Testing/NavigationDriverTester.cs delete mode 100644 src/Serenity.Testing/Properties/AssemblyInfo.cs delete mode 100644 src/Serenity.Testing/Serenity.Testing.csproj delete mode 100644 src/Serenity.Testing/Serenity.Testing.dll.config delete mode 100644 src/Serenity.Testing/SerenitySystemTester.cs delete mode 100644 src/Serenity.Testing/WebDriverSettingsTester.cs delete mode 100644 src/Serenity.Testing/debugging.cs delete mode 100644 src/Serenity.Testing/jasmine.txt delete mode 100644 src/Serenity.Testing/packages.config delete mode 100644 src/Serenity/ApplicationUnderTest.cs delete mode 100644 src/Serenity/BrowserType.cs delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-icons_222222_256x240.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-icons_2e83ff_256x240.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-icons_454545_256x240.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-icons_888888_256x240.png delete mode 100644 src/Serenity/Content/themes/base/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/Serenity/Content/themes/base/jquery-ui.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.accordion.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.all.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.autocomplete.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.base.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.button.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.core.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.datepicker.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.dialog.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.progressbar.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.resizable.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.selectable.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.slider.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.tabs.css delete mode 100644 src/Serenity/Content/themes/base/jquery.ui.theme.css delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-icons_222222_256x240.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-icons_454545_256x240.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-icons_888888_256x240.png delete mode 100644 src/Serenity/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png delete mode 100644 src/Serenity/Content/themes/base/minified/jquery-ui.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.accordion.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.all.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.autocomplete.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.base.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.button.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.core.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.datepicker.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.dialog.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.progressbar.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.resizable.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.selectable.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.slider.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.tabs.min.css delete mode 100644 src/Serenity/Content/themes/base/minified/jquery.ui.theme.min.css delete mode 100644 src/Serenity/Fixtures/DateTimeExtensions.cs delete mode 100644 src/Serenity/Fixtures/Grammars/CheckValueGrammar.cs delete mode 100644 src/Serenity/Fixtures/Grammars/ClickGrammar.cs delete mode 100644 src/Serenity/Fixtures/Grammars/EnterValueGrammar.cs delete mode 100644 src/Serenity/Fixtures/Grammars/GestureConfig.cs delete mode 100644 src/Serenity/Fixtures/Grammars/SimpleElementGesture.cs delete mode 100644 src/Serenity/Fixtures/Handlers/BasicMatchingHandler.cs delete mode 100644 src/Serenity/Fixtures/Handlers/DefaultElementHandler.cs delete mode 100644 src/Serenity/Fixtures/Handlers/ElementHandlers.cs delete mode 100644 src/Serenity/Fixtures/Handlers/IElementHandler.cs delete mode 100644 src/Serenity/Fixtures/Handlers/IMatchingHandler.cs delete mode 100644 src/Serenity/Fixtures/Handlers/SelectElementHandler.cs delete mode 100644 src/Serenity/Fixtures/Handlers/TextboxElementHandler.cs delete mode 100644 src/Serenity/Fixtures/ScreenFixture.cs delete mode 100644 src/Serenity/Fixtures/WebDriverExtensions.cs delete mode 100644 src/Serenity/IApplicationUnderTest.cs delete mode 100644 src/Serenity/InProcessApplicationUnderTest.cs delete mode 100644 src/Serenity/InProcessSerenitySystem.cs delete mode 100644 src/Serenity/Jasmine/ConfigFileLoader.cs delete mode 100644 src/Serenity/Jasmine/Header.htm delete mode 100644 src/Serenity/Jasmine/ISpecNode.cs delete mode 100644 src/Serenity/Jasmine/ISpecVisitor.cs delete mode 100644 src/Serenity/Jasmine/JasmineCommand.cs delete mode 100644 src/Serenity/Jasmine/JasmineInput.cs delete mode 100644 src/Serenity/Jasmine/JasminePages.cs delete mode 100644 src/Serenity/Jasmine/JasmineRunner.cs delete mode 100644 src/Serenity/Jasmine/NulloCombinationDeterminationService.cs delete mode 100644 src/Serenity/Jasmine/SerenityJasmineApplication.cs delete mode 100644 src/Serenity/Jasmine/SerenityJasmineRegistry.cs delete mode 100644 src/Serenity/Jasmine/SpecAssetRequirements.cs delete mode 100644 src/Serenity/Jasmine/SpecHierarchyBuilder.cs delete mode 100644 src/Serenity/Jasmine/SpecPath.cs delete mode 100644 src/Serenity/Jasmine/Specification.cs delete mode 100644 src/Serenity/Jasmine/SpecificationFolder.cs delete mode 100644 src/Serenity/Jasmine/SpecificationGraph.cs delete mode 100644 src/Serenity/NavigationDriver.cs delete mode 100644 src/Serenity/Properties/AssemblyInfo.cs delete mode 100644 src/Serenity/Serenity.csproj delete mode 100644 src/Serenity/SerenityApplications.cs delete mode 100644 src/Serenity/SerenitySystem.cs delete mode 100644 src/Serenity/Wait.cs delete mode 100644 src/Serenity/WebContent/content/images/fubu-project.png delete mode 100644 src/Serenity/WebContent/content/images/jasmine_logo.png delete mode 100644 src/Serenity/WebContent/content/scripts/images/ajax-loader.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/file.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/folder-closed.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/folder.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/minus.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/plus.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-black-line.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-black.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-default-line.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-default.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-famfamfam-line.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-famfamfam.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-gray-line.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-gray.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-red-line.gif delete mode 100644 src/Serenity/WebContent/content/scripts/images/treeview-red.gif delete mode 100644 src/Serenity/WebContent/content/scripts/jasmine-html.js delete mode 100644 src/Serenity/WebContent/content/scripts/jasmine-jquery-1.3.1.js delete mode 100644 src/Serenity/WebContent/content/scripts/jasmine-runner.js delete mode 100644 src/Serenity/WebContent/content/scripts/jasmine.css delete mode 100644 src/Serenity/WebContent/content/scripts/jasmine.js delete mode 100644 src/Serenity/WebContent/content/scripts/jasmine_favicon.png delete mode 100644 src/Serenity/WebContent/content/scripts/jquery-1.7.min.js delete mode 100644 src/Serenity/WebContent/content/scripts/jquery.treeview.css delete mode 100644 src/Serenity/WebContent/content/scripts/jquery.treeview.js delete mode 100644 src/Serenity/WebContent/content/scripts/serenity-jasmine.js delete mode 100644 src/Serenity/WebContent/jasmine.asset.config delete mode 100644 src/Serenity/WebDriverSettings.cs delete mode 100644 src/Serenity/WebElementExtensions.cs delete mode 100644 src/Serenity/packages.config delete mode 100644 src/SerenityRunner/Program.cs delete mode 100644 src/SerenityRunner/Properties/AssemblyInfo.cs delete mode 100644 src/SerenityRunner/SerenityRunner.csproj delete mode 100644 src/SerenityRunner/app.config delete mode 100644 src/SerenityRunner/packages.config diff --git a/rakefile.rb b/rakefile.rb index 49ec8042d6..cb87eb87d1 100644 --- a/rakefile.rb +++ b/rakefile.rb @@ -79,13 +79,8 @@ def waitfor(&block) raise 'waitfor timeout expired' if checks > 10 end -desc "Packages the Serenity bottle files" -task :bottle_serenity do - bottles("assembly-pak src/Serenity") -end - desc "Compiles the app" -task :compile => [:restore_if_missing, :clean, :version, :bottle_serenity] do +task :compile => [:restore_if_missing, :clean, :version] do MSBuildRunner.compile :compilemode => COMPILE_TARGET, :solutionfile => 'src/FubuMVC.sln', :clrversion => CLR_TOOLS_VERSION #AspNetCompilerRunner.compile :webPhysDir => "src/FubuMVC.HelloWorld", :webVirDir => "localhost/xyzzyplugh" @@ -127,17 +122,6 @@ def copyOutputFiles(fromDir, filePattern, outDir) runner.executeTests ['FubuMVC.Tests', 'FubuMVC.Spark.Tests', 'FubuMVC.Razor.Tests'] end -desc "Runs the unit tests for Serenity" -task :serenity_test => :compile do - runner = NUnitRunner.new :compilemode => COMPILE_TARGET, :source => 'src', :platform => 'x86' - runner.executeTests ['Serenity.Testing'] -end - - -desc "Runs the StoryTeller suite of end to end tests. IIS must be running first" -task :storyteller => [:compile] do - storyteller("Storyteller.xml output/st-results.htm") -end desc "Set up the virtual directories for the HelloWorld applications" task :virtual_dir => [:compile] do @@ -161,16 +145,6 @@ def self.bottles(args) sh "#{bottles} #{args}" end -def self.storyteller(args) -st = Platform.runtime(Nuget.tool("Storyteller", "StorytellerRunner.exe")) -sh "#{st} #{args}" -end - -desc "Runs the StoryTeller UI" -task :run_st do - st = Platform.runtime(Nuget.tool("Storyteller", "StorytellerUI.exe")) - sh st -end def self.fubu(args) fubu = Platform.runtime("src/fubu/bin/#{COMPILE_TARGET}/fubu.exe") diff --git a/src/Serenity/Endpoints/EndpointDriver.cs b/src/FubuMVC.Core/Endpoints/EndpointDriver.cs similarity index 95% rename from src/Serenity/Endpoints/EndpointDriver.cs rename to src/FubuMVC.Core/Endpoints/EndpointDriver.cs index 06e083d7e7..36c9ad34b8 100644 --- a/src/Serenity/Endpoints/EndpointDriver.cs +++ b/src/FubuMVC.Core/Endpoints/EndpointDriver.cs @@ -4,19 +4,16 @@ using System.Linq.Expressions; using System.Net; using System.Text; -using System.Web; using System.Web.Script.Serialization; using System.Xml.Serialization; using FubuCore; using FubuCore.Reflection; -using FubuMVC.Core; using FubuMVC.Core.Assets.Files; -using FubuMVC.Core.Http; using FubuMVC.Core.Runtime; using FubuMVC.Core.Urls; using System.Linq; -namespace Serenity.Endpoints +namespace FubuMVC.Core.Endpoints { public enum ContentFormat { diff --git a/src/Serenity/Endpoints/EndpointFormatting.cs b/src/FubuMVC.Core/Endpoints/EndpointFormatting.cs similarity index 70% rename from src/Serenity/Endpoints/EndpointFormatting.cs rename to src/FubuMVC.Core/Endpoints/EndpointFormatting.cs index f8f8de416a..a1698aa6b9 100644 --- a/src/Serenity/Endpoints/EndpointFormatting.cs +++ b/src/FubuMVC.Core/Endpoints/EndpointFormatting.cs @@ -1,4 +1,4 @@ -namespace Serenity.Endpoints +namespace FubuMVC.Core.Endpoints { public enum EndpointFormatting { diff --git a/src/Serenity/Endpoints/EndpointInvocation.cs b/src/FubuMVC.Core/Endpoints/EndpointInvocation.cs similarity index 93% rename from src/Serenity/Endpoints/EndpointInvocation.cs rename to src/FubuMVC.Core/Endpoints/EndpointInvocation.cs index 955d6771bb..2c56e9557a 100644 --- a/src/Serenity/Endpoints/EndpointInvocation.cs +++ b/src/FubuMVC.Core/Endpoints/EndpointInvocation.cs @@ -6,10 +6,8 @@ using System.Xml.Serialization; using FubuCore; -namespace Serenity.Endpoints +namespace FubuMVC.Core.Endpoints { - using FubuMVC.Core; - public class EndpointInvocation { public string Accept = "*/*"; diff --git a/src/Serenity/Endpoints/HttpResponse.cs b/src/FubuMVC.Core/Endpoints/HttpResponse.cs similarity index 91% rename from src/Serenity/Endpoints/HttpResponse.cs rename to src/FubuMVC.Core/Endpoints/HttpResponse.cs index f4e65c9b10..3f4785a201 100644 --- a/src/Serenity/Endpoints/HttpResponse.cs +++ b/src/FubuMVC.Core/Endpoints/HttpResponse.cs @@ -1,15 +1,11 @@ -using System; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web.Script.Serialization; using System.Xml; -using FubuMVC.Core.Runtime; -using HtmlTags; -using StoryTeller.Assertions; -namespace Serenity.Endpoints +namespace FubuMVC.Core.Endpoints { public class HttpResponse { diff --git a/src/Serenity/Endpoints/WebRequestResponseExtensions.cs b/src/FubuMVC.Core/Endpoints/WebRequestResponseExtensions.cs similarity index 94% rename from src/Serenity/Endpoints/WebRequestResponseExtensions.cs rename to src/FubuMVC.Core/Endpoints/WebRequestResponseExtensions.cs index 3d4b6b24ef..a2b9834da2 100644 --- a/src/Serenity/Endpoints/WebRequestResponseExtensions.cs +++ b/src/FubuMVC.Core/Endpoints/WebRequestResponseExtensions.cs @@ -5,7 +5,7 @@ using System.Threading; using FubuCore; -namespace Serenity.Endpoints +namespace FubuMVC.Core.Endpoints { public static class WebRequestResponseExtensions { diff --git a/src/FubuMVC.Core/FubuMVC.Core.csproj b/src/FubuMVC.Core/FubuMVC.Core.csproj index 0b468ab818..4a450e640e 100755 --- a/src/FubuMVC.Core/FubuMVC.Core.csproj +++ b/src/FubuMVC.Core/FubuMVC.Core.csproj @@ -92,6 +92,11 @@ + + + + + diff --git a/src/FubuMVC.sln b/src/FubuMVC.sln index 5ee7d0d2c7..149b1b92fb 100755 --- a/src/FubuMVC.sln +++ b/src/FubuMVC.sln @@ -48,10 +48,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FubuMVC.GettingStarted", "F EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuickStart", "QuickStart\QuickStart.csproj", "{66A9D435-DC25-4DE1-99A8-003C54B0111B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Serenity", "Serenity\Serenity.csproj", "{900A0419-3579-4DAE-85BE-71A3E4B34239}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Serenity.Testing", "Serenity.Testing\Serenity.Testing.csproj", "{5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FubuMVC.OwinHost", "FubuMVC.OwinHost\FubuMVC.OwinHost.csproj", "{EA10DF80-FD95-4172-BC18-DB0DFB279844}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FubuMVC.OwinHost.Testing", "FubuMVC.OwinHost.Testing\FubuMVC.OwinHost.Testing.csproj", "{E3C7DC9E-332B-4272-9486-BCB573AA9E22}" @@ -62,8 +58,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FubuMVC.Diagnostics", "Fubu EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FubuMVC.Diagnostics.Tests", "FubuMVC.Diagnostics.Tests\FubuMVC.Diagnostics.Tests.csproj", "{99A53042-2455-464F-A68E-00C401B177C0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SerenityRunner", "SerenityRunner\SerenityRunner.csproj", "{FC5172BC-C96A-4656-B87B-36978B19AD85}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KayakTestApplication", "KayakTestApplication\KayakTestApplication.csproj", "{68CC89AB-EE8B-4B2D-9BA0-8B0FBF460446}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FubuMVC.Razor", "FubuMVC.Razor\FubuMVC.Razor.csproj", "{A88246A6-2A7A-4964-902E-A5A7FDAAA9D4}" @@ -387,36 +381,6 @@ Global {66A9D435-DC25-4DE1-99A8-003C54B0111B}.Retail|Mixed Platforms.ActiveCfg = Release|Any CPU {66A9D435-DC25-4DE1-99A8-003C54B0111B}.Retail|Mixed Platforms.Build.0 = Release|Any CPU {66A9D435-DC25-4DE1-99A8-003C54B0111B}.Retail|x86.ActiveCfg = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Debug|Any CPU.Build.0 = Debug|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Debug|x86.ActiveCfg = Debug|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Release|Any CPU.ActiveCfg = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Release|Any CPU.Build.0 = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Release|x86.ActiveCfg = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Retail|Any CPU.ActiveCfg = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Retail|Any CPU.Build.0 = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Retail|Mixed Platforms.ActiveCfg = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Retail|Mixed Platforms.Build.0 = Release|Any CPU - {900A0419-3579-4DAE-85BE-71A3E4B34239}.Retail|x86.ActiveCfg = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Debug|x86.ActiveCfg = Debug|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Release|Any CPU.Build.0 = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Release|x86.ActiveCfg = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Retail|Any CPU.ActiveCfg = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Retail|Any CPU.Build.0 = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Retail|Mixed Platforms.ActiveCfg = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Retail|Mixed Platforms.Build.0 = Release|Any CPU - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F}.Retail|x86.ActiveCfg = Release|Any CPU {EA10DF80-FD95-4172-BC18-DB0DFB279844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EA10DF80-FD95-4172-BC18-DB0DFB279844}.Debug|Any CPU.Build.0 = Debug|Any CPU {EA10DF80-FD95-4172-BC18-DB0DFB279844}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -492,21 +456,6 @@ Global {99A53042-2455-464F-A68E-00C401B177C0}.Retail|Mixed Platforms.ActiveCfg = Release|Any CPU {99A53042-2455-464F-A68E-00C401B177C0}.Retail|Mixed Platforms.Build.0 = Release|Any CPU {99A53042-2455-464F-A68E-00C401B177C0}.Retail|x86.ActiveCfg = Release|Any CPU - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Debug|Any CPU.ActiveCfg = Debug|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Debug|x86.ActiveCfg = Debug|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Debug|x86.Build.0 = Debug|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Release|Any CPU.ActiveCfg = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Release|Mixed Platforms.Build.0 = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Release|x86.ActiveCfg = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Release|x86.Build.0 = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Retail|Any CPU.ActiveCfg = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Retail|Mixed Platforms.ActiveCfg = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Retail|Mixed Platforms.Build.0 = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Retail|x86.ActiveCfg = Release|x86 - {FC5172BC-C96A-4656-B87B-36978B19AD85}.Retail|x86.Build.0 = Release|x86 {68CC89AB-EE8B-4B2D-9BA0-8B0FBF460446}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {68CC89AB-EE8B-4B2D-9BA0-8B0FBF460446}.Debug|Any CPU.Build.0 = Debug|Any CPU {68CC89AB-EE8B-4B2D-9BA0-8B0FBF460446}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU diff --git a/src/Serenity.Testing/BrowserFixture.cs b/src/Serenity.Testing/BrowserFixture.cs deleted file mode 100644 index 1e8b7ac41c..0000000000 --- a/src/Serenity.Testing/BrowserFixture.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using FubuMVC.Core; -using HtmlTags; -using NUnit.Framework; -using OpenQA.Selenium; -using OpenQA.Selenium.Chrome; -using OpenQA.Selenium.Firefox; -using OpenQA.Selenium.IE; -using FubuCore; -using FubuTestingSupport; - -namespace Serenity.Testing -{ - [TestFixture, Explicit] - public class TryItOut : BrowserFixture - { - [Test] - public void lets_just_see() - { - OpenTo(x => x.Add("div").Text("Hello").Id("hello")); - - driver.FindElement(By.Id("hello")).Text.ShouldEqual("Hello"); - - - } - } - - [TestFixture] - public abstract class BrowserFixture - { - private IWebDriver _driver; - - [TestFixtureSetUp] - public void FixtureSetUp() - { - _driver = new FirefoxDriver(); - } - - protected IWebDriver driver - { - get - { - return _driver; - } - } - - public void OpenTo(string file) - { - var path = file.ToFullPath(); - _driver.Navigate().GoToUrl("file:///" + path); - } - - public void OpenTo(Action configure) - { - var document = new HtmlDocument(); - configure(document); - var fileName = "doc.htm"; - - document.WriteToFile(fileName); - - OpenTo(fileName); - } - - - - [TestFixtureTearDown] - public void FixtureTeardown() - { - _driver.Close(); - _driver.SafeDispose(); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/FakeSystem/IntegratedTester.cs b/src/Serenity.Testing/FakeSystem/IntegratedTester.cs deleted file mode 100644 index d2aa7760da..0000000000 --- a/src/Serenity.Testing/FakeSystem/IntegratedTester.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using FubuMVC.Core; -using FubuMVC.Core.UI; -using HtmlTags; - -using NUnit.Framework; -using FubuMVC.StructureMap; -using Serenity.Fixtures; -using StoryTeller.Domain; -using StoryTeller.Engine; -using StoryTeller.Execution; -using StructureMap; -using FubuCore; -using Serenity.Testing.Fixtures; - -namespace Serenity.Testing.FakeSystem -{ - [TestFixture] - public class IntegratedTester - { - private ITestRunner theRunner; - - [TestFixtureSetUp] - public void SetUp() - { - theRunner = TestRunnerBuilder.ForSystem(); - } - - [Test] - public void run_simple_test() - { - var test = new Test("Try it"); - test.Add(Section.For().WithStep("GoTo", "name:Jeremy")); - - var testResult = theRunner.RunTest(new TestExecutionRequest(test, new TestStopConditions())); - //var testResult = TestRunnerExtensions.RunTest(theRunner, test); - TestingExtensions.ShouldEqual(testResult.Counts, 0, 0, 0, 0); - //testResult.Counts.ShouldEqual(1, 0, 0, 0); - } - - [Test] - public void run_more_complicated_test_positive() - { - var test = new Test("Try it"); - var section = Section.For() - .WithStep("GoTo", "name:Jeremy") - .WithStep("CheckName", "Name:Jeremy"); - test.Add(section); - - var testResult = theRunner.RunTest(new TestExecutionRequest(test, new TestStopConditions())); - //var testResult = theRunner.RunTest(test); - TestingExtensions.ShouldEqual(testResult.Counts, 1, 0, 0, 0); - //testResult.Counts.ShouldEqual(1, 0, 0, 0); - } - - - [Test] - public void run_more_complicated_test_negative() - { - var test = new Test("Try it"); - var section = Section.For() - .WithStep("GoTo", "name:Jeremy") - .WithStep("CheckName", "Name:Max"); - test.Add(section); - - var testResult = theRunner.RunTest(new TestExecutionRequest(test, new TestStopConditions())); - //var testResult = theRunner.RunTest(test); - TestingExtensions.ShouldEqual(testResult.Counts, 0, 1, 0, 0); - //testResult.Counts.ShouldEqual(0, 1, 0, 0); - } - - [TestFixtureTearDown] - public void Teardown() - { - FubuCore.BasicExtensions.SafeDispose(theRunner); - //theRunner.SafeDispose(); - } - } - - public class NameScreenFixture : ScreenFixture - { - public NameScreenFixture() - { - EditableElement(x => x.Name); - } - - [FormatAs("Go to name {name}")] - public void GoTo(string name) - { - // Add to ScreenFixture - var driver = new NavigationDriver(Application); - driver.NavigateTo(new TextModel{Name = name}); - } - } - - public class FakeSerenitySystem : InProcessSerenitySystem - { - - protected override ApplicationSettings findApplicationSettings() - { - var settings = ApplicationSettings.For(); - settings.PhysicalPath = FubuCore.StringExtensions.ToFullPath("."); - - return settings; - } - - public override void RegisterFixtures(FixtureRegistry registry) - { - registry.AddFixture(); - } - } - - public class FakeSerenitySource : IApplicationSource - { - public FubuApplication BuildApplication() - { - return BootstrappingExtensions.StructureMap( - FubuApplication.For() - , new Container()); - } - } - - public class FakeSerenityRegistry : FubuRegistry - { - public FakeSerenityRegistry() - { - Actions.IncludeType(); - } - } - - public class TextModel - { - public string Name { get; set;} - } - - public class FakeSerenityActions - { - private readonly IServiceLocator _services; - - public FakeSerenityActions(IServiceLocator services) - { - _services = services; - } - - public HtmlDocument get_person_Name(TextModel model) - { - var document = new FubuHtmlDocument(_services){ - Model = model - }; - - document.Title = "Persion:" + model.Name; - - document.Push("p"); - document.Add(x => x.LabelFor(o => o.Name)); - document.Add(x => x.InputFor(o => o.Name)); - - return document; - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Fixtures/Grammars/CheckValueGrammarTester.cs b/src/Serenity.Testing/Fixtures/Grammars/CheckValueGrammarTester.cs deleted file mode 100644 index 45599af4be..0000000000 --- a/src/Serenity.Testing/Fixtures/Grammars/CheckValueGrammarTester.cs +++ /dev/null @@ -1,128 +0,0 @@ -using System.Diagnostics; -using HtmlTags; -using HtmlTags.Extended.Attributes; -using Newtonsoft.Json; -using NUnit.Framework; -using OpenQA.Selenium; -using Serenity.Fixtures.Grammars; -using StoryTeller.Domain; - -namespace Serenity.Testing.Fixtures.Grammars -{ - - [TestFixture] - public class fake - { - [Test] - public void TESTNAME() - { - Debug.WriteLine(typeof(JsonSerializer).Assembly.FullName); - } - } - - [TestFixture] - public class CheckValueGrammarTester : ScreenManipulationTester - { - protected override void configureDocument(HtmlDocument document) - { - document.Add(new TextboxTag("emptytextbox", string.Empty).Id("emptytextbox")); - document.Add(new TextboxTag("textbox", "initial").Id("textbox")); - - document.Add(new SelectTag(tag => - { - tag.Option("a", "a"); - tag.Option("b", 2).Id("b"); - tag.Option("c", 3).Id("c"); - - tag.SelectByValue("2"); - }).Name("select1").Id("select1")); - - document.Add("div").Id("div1").Text("the div text"); - } - - private CheckValueGrammar grammarForId(string id) - { - var config = new GestureConfig{ - Finder = () => theDriver.FindElement(By.Id(id)), - FinderDescription = "#" + id, - CellName = "data" - }; - - return new CheckValueGrammar(config); - } - - [Test] - public void positive_case_for_select_verifying_by_value() - { - var grammar = grammarForId("select1"); - var step = new Step().With("data", 2); - - grammar.Execute(step).Counts.ShouldEqual(1, 0, 0, 0); - } - - [Test] - public void positive_case_for_select_verifying_by_display() - { - var grammar = grammarForId("select1"); - var step = new Step().With("data", "b"); - - grammar.Execute(step).Counts.ShouldEqual(1, 0, 0, 0); - } - - [Test] - public void negative_case_for_select() - { - var grammar = grammarForId("select1"); - var step = new Step().With("data", "different"); - - grammar.Execute(step).Counts.ShouldEqual(0, 1, 0, 0); - } - - [Test] - public void positive_case_against_textbox() - { - var grammar = grammarForId("textbox"); - - grammar.Execute(new Step().With("data", "initial")) - .Counts.ShouldEqual(1, 0, 0, 0); - } - - [Test] - public void negative_case_against_textbox() - { - var grammar = grammarForId("textbox"); - - grammar.Execute(new Step().With("data", "something different")) - .Counts.ShouldEqual(0, 1, 0, 0); - } - - [Test] - public void positive_case_against_div() - { - var grammar = grammarForId("div1"); - var step = new Step().With("data", "the div text"); - - grammar.Execute(step).Counts.ShouldEqual(1, 0, 0, 0); - } - - [Test] - public void negative_case_against_div() - { - var grammar = grammarForId("div1"); - var step = new Step().With("data", "different text"); - - grammar.Execute(step).Counts.ShouldEqual(0, 1, 0, 0); - } - - [Test] - public void negative_case_with_syntax_error() - { - var grammar = grammarForId("div1"); - var step = new Step(); - - grammar.Execute(step).Counts.ShouldEqual(0, 0, 0, 1); - } - - - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Fixtures/Grammars/ClickGrammerTester.cs b/src/Serenity.Testing/Fixtures/Grammars/ClickGrammerTester.cs deleted file mode 100644 index 3546694b32..0000000000 --- a/src/Serenity.Testing/Fixtures/Grammars/ClickGrammerTester.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System; -using FubuCore; -using FubuTestingSupport; -using HtmlTags; -using NUnit.Framework; -using OpenQA.Selenium; -using Serenity.Fixtures.Grammars; -using StoryTeller.Assertions; - -namespace Serenity.Testing.Fixtures.Grammars -{ - [TestFixture] - public class ClickGrammerTester : ScreenManipulationTester - { - protected override void configureDocument(HtmlDocument doc) - { - doc.Add("div").Id("clickTarget"); - doc.Add("button").Id("happyPath").Text("Hey there!").Attr("onclick", "document.getElementById('clickTarget').innerHTML = 'clicked'"); - - doc.Add("button").Id("disabled").Text("disabled").Attr("disabled", true); - - doc.Add("button").Id("hidden").Text("hidden").Style("display", "none"); - } - - private ClickGrammar grammarForId(string id) - { - var config = new GestureConfig{ - Finder = () => theDriver.FindElement(By.Id(id)), - FinderDescription = "#" + id, - Template = "Clicking " + id - }; - - return new ClickGrammar(config); - } - - [Test] - public void click_element_that_does_not_exist_should_throw_descriptive_exception() - { - Exception.ShouldBeThrownBy(() => - { - grammarForId("notexistent").Execute(); - }).ShouldContainErrorMessage(ClickGrammar.NonexistentElementMessage); - } - - [Test] - public void click_hidden_element_should_throw_exception() - { - Exception.ShouldBeThrownBy(() => - { - grammarForId("hidden").Execute(); - }).ShouldContainErrorMessage(ClickGrammar.HiddenElementMessage); - } - - [Test] - public void click_disabled_element_should_throw_exception() - { - Exception.ShouldBeThrownBy(() => - { - grammarForId("disabled").Execute(); - }).ShouldContainErrorMessage(ClickGrammar.DisabledElementMessage); - } - - [Test] - public void use_location_in_disabled_message_if_it_exists() - { - var grammar = grammarForId("disabled"); - grammar.Config.FinderDescription.IsNotEmpty().ShouldBeTrue(); - - Exception.ShouldBeThrownBy(() => - { - grammar.Execute(); - }).ShouldContainErrorMessage(grammar.Config.FinderDescription); - } - - [Test] - public void check_click_grammar_happy_path() - { - var grammar = grammarForId("happyPath"); - - grammar.Execute().Counts.ShouldEqual(0, 0, 0, 0); - - theDriver.FindElement(By.Id("clickTarget")).Text.ShouldEqual("clicked"); - } - - [Test] - public void calls_the_action_after_a_successful_click() - { - Action action = () => theDriver.FindElement(By.Id("clickTarget")).Text.ShouldEqual("clicked"); - - var grammar = grammarForId("happyPath"); - grammar.Config.AfterClick = action; - - grammar.Execute().Counts.ShouldEqual(0, 0, 0, 0); - } - - [Test] - public void before_click_is_called_before_trying_to_click() - { - var grammar = grammarForId("happyPath"); - var wasCalled = false; - grammar.Config.BeforeClick = () => - { - wasCalled = true; - theDriver.FindElement(By.Id("clickTarget")).Text.ShouldBeEmpty(); - }; - - grammar.Execute(); - - wasCalled.ShouldBeTrue(); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Fixtures/Grammars/EnterValueGrammarTester.cs b/src/Serenity.Testing/Fixtures/Grammars/EnterValueGrammarTester.cs deleted file mode 100644 index c461c1bfe3..0000000000 --- a/src/Serenity.Testing/Fixtures/Grammars/EnterValueGrammarTester.cs +++ /dev/null @@ -1,109 +0,0 @@ -using HtmlTags; -using NUnit.Framework; -using OpenQA.Selenium; -using Serenity.Fixtures.Grammars; -using StoryTeller.Assertions; -using StoryTeller.Domain; -using FubuTestingSupport; -using HtmlTags.Extended.Attributes; - -namespace Serenity.Testing.Fixtures.Grammars -{ - [TestFixture] - public class EnterValueGrammarTester : ScreenManipulationTester - { - protected override void configureDocument(HtmlDocument document) - { - document.Add(new TextboxTag("emptytextbox", string.Empty)); - document.Add(new TextboxTag("textbox", "initial")); - - document.Add(new TextboxTag("disabled", "something").Attr("disabled", true)); - document.Add(new TextboxTag("hidden", "something").Style("display", "none")); - - document.Add(new SelectTag(tag => - { - tag.Option("a", "a"); - tag.Option("b", 2).Id("b"); - tag.Option("c", 3).Id("c"); - }).Name("select1")); - } - - private EnterValueGrammar grammarForName(string name) - { - var def = new GestureConfig{ - Template = "enter {data} for textbox", - Finder = () => theDriver.FindElement(By.Name(name)), - FinderDescription = "name=" + name, - Description = "Enter data for blah", - CellName = "data", - - }; - - return new EnterValueGrammar(def); - } - - [Test] - public void select_value_in_select_tag_by_display_first() - { - grammarForName("select1").Execute(new Step().With("data", "b")); - - theDriver.FindElement(By.Name("select1")).FindElement(By.Id("b")).Selected.ShouldBeTrue(); - - grammarForName("select1").Execute(new Step().With("data", "c")); - theDriver.FindElement(By.Name("select1")).FindElement(By.Id("c")).Selected.ShouldBeTrue(); - } - - [Test] - public void select_option_that_does_not_exist_should_toss_out_a_list_of_all_the_available_options() - { - Exception.ShouldBeThrownBy(() => - { - grammarForName("select1").Execute(new Step().With("data", "d")); - }).ShouldContainErrorMessage("a/a\nb/2\nc/3"); - } - - [Test] - public void select_value_in_select_tag_by_value_second() - { - grammarForName("select1").Execute(new Step().With("data", "2")); - - theDriver.FindElement(By.Name("select1")).FindElement(By.Id("b")).Selected.ShouldBeTrue(); - - grammarForName("select1").Execute(new Step().With("data", "3")); - theDriver.FindElement(By.Name("select1")).FindElement(By.Id("c")).Selected.ShouldBeTrue(); - } - - [Test] - public void click_hidden_element_should_throw_exception() - { - Exception.ShouldBeThrownBy(() => - { - grammarForName("hidden").Execute(); - }).ShouldContainErrorMessage(ClickGrammar.HiddenElementMessage); - } - - [Test] - public void click_disabled_element_should_throw_exception() - { - Exception.ShouldBeThrownBy(() => - { - grammarForName("disabled").Execute(); - }).ShouldContainErrorMessage(ClickGrammar.DisabledElementMessage); - } - - [Test] - public void enter_text_for_an_empty_textbox() - { - grammarForName("emptytextbox").Execute(new Step().With("data", "some text")); - - theDriver.FindElement(By.Name("emptytextbox")).GetAttribute("value").ShouldEqual("some text"); - } - - [Test] - public void enter_text_for_a_textbox_that_is_not_initially_empty() - { - grammarForName("textbox").Execute(new Step().With("data", "different")); - theDriver.FindElement(By.Name("textbox")).GetAttribute("value").ShouldEqual("different"); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Fixtures/Handlers/SelectElementHandlerTester.cs b/src/Serenity.Testing/Fixtures/Handlers/SelectElementHandlerTester.cs deleted file mode 100644 index cedfcd8e49..0000000000 --- a/src/Serenity.Testing/Fixtures/Handlers/SelectElementHandlerTester.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System; -using System.Threading; -using FubuCore; -using FubuTestingSupport; -using HtmlTags; -using HtmlTags.Extended.Attributes; -using NUnit.Framework; -using OpenQA.Selenium; -using Serenity.Fixtures.Handlers; -using Serenity.Testing.Fixtures.Grammars; - -namespace Serenity.Testing.Fixtures.Handlers -{ - [TestFixture] - public class SelectElementHandlerTester - { - private IWebDriver theDriver; - private IWebElement select1; - private IWebElement nothingSelectedElement; - private IWebElement select3; - private SelectElementHandler theHandler = new SelectElementHandler(); - private IWebElement select4; - - [TestFixtureSetUp] - public void SetUp() - { - var document = new HtmlDocument(); - document.Add(new SelectTag(tag => - { - tag.Option("a", "a"); - tag.Option("b", "2").Id("b"); - tag.Option("c", 3).Id("c"); - - tag.SelectByValue("2"); - }).Name("select1").Id("select1")); - - document.Add(new SelectTag(tag => - { - tag.Option("a", "a"); - tag.Option("b", 2).Id("b"); - tag.Option("c", 3).Id("c"); - - }).Name("select2").Id("select2")); - - document.Add(new SelectTag(tag => - { - tag.Add("option").Text("a"); - tag.Add("option").Text("b").Attr("selected", "selected"); - tag.Add("option").Text("c"); - - }).Name("select3").Id("select3")); - - document.Add(new SelectTag(tag => - { - tag.Option("a", "a"); - tag.Option("b", 2).Id("b"); - tag.Option("c", 3).Id("c"); - tag.Option("value", "b").Id("c"); - - tag.SelectByValue(2); - }).Name("select4").Id("select4")); - - document.WriteToFile("select.htm"); - - try - { - startDriver(); - } - catch (Exception) - { - Thread.Sleep(2000); - startDriver(); - } - - select1 = theDriver.FindElement(By.Id("select1")); - nothingSelectedElement = theDriver.FindElement(By.Id("select2")); - select3 = theDriver.FindElement(By.Id("select3")); - select4 = theDriver.FindElement(By.Id("select4")); - } - - private void startDriver() - { - theDriver = WebDriverSettings.DriverBuilder()(); - theDriver.Navigate().GoToUrl("file:///" + "select.htm".ToFullPath()); - } - - [TestFixtureTearDown] - public void TearDown() - { - theDriver.SafeDispose(); - } - - [Test] - public void get_data_with_selected_option_with_both_value_and_text() - { - theHandler.GetData(null, select1).ShouldEqual("b=2"); - } - - [Test] - public void get_data_with_selected_option_that_has_only_text() - { - theHandler.GetData(null, select3).ShouldEqual("b=b"); - } - - [Test] - public void match_against_value_is_default() - { - theHandler.MatchesData(select1, 2).ShouldBeTrue(); - theHandler.MatchesData(select1, 3).ShouldBeFalse(); - } - - [Test] - public void can_fall_thru_to_checking_against_display_if_value_does_not_exist() - { - theHandler.MatchesData(select1, "b").ShouldBeTrue(); - theHandler.MatchesData(select1, "c").ShouldBeFalse(); - } - - [Test] - public void match_by_display_if_value_does_not_exist() - { - theHandler.MatchesData(select1, "b").ShouldBeTrue(); - theHandler.MatchesData(select1, "c").ShouldBeFalse(); - } - - [Test] - public void does_not_fall_thru_to_display_if_the_expected_value_is_a_value() - { - theHandler.MatchesData(select4, "b").ShouldBeFalse(); - } - - [Test] - public void matches_has_to_be_false_when_nothing_is_selected() - { - theHandler.MatchesData(nothingSelectedElement, "anything").ShouldBeFalse(); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Fixtures/ScreenFixtureCommonGrammarsTester.cs b/src/Serenity.Testing/Fixtures/ScreenFixtureCommonGrammarsTester.cs deleted file mode 100644 index b23ab3fcb0..0000000000 --- a/src/Serenity.Testing/Fixtures/ScreenFixtureCommonGrammarsTester.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Threading; -using FubuCore; -using HtmlTags; -using NUnit.Framework; -using OpenQA.Selenium; -using Serenity.Fixtures; -using StoryTeller; -using StoryTeller.Domain; -using StoryTeller.Engine; -using TestContext = StoryTeller.Engine.TestContext; - -namespace Serenity.Testing.Fixtures -{ - public abstract class ScreenManipulationTester : ScreenFixture - { - [SetUp] - public void SetUp() - { - new FileSystem().DeleteFile("screenfixture.htm"); - - var document = new HtmlDocument(); - configureDocument(document); - - document.WriteToFile("screenfixture.htm"); - - try - { - startDriver(); - } - catch (Exception) - { - Thread.Sleep(2000); - startDriver(); - } - } - - private void startDriver() - { - theDriver = WebDriverSettings.DriverBuilder()(); - theDriver.Navigate().GoToUrl("file:///" + "screenfixture.htm".ToFullPath()); - theFixture = new StubScreenFixture(theDriver); - } - - [TearDown] - public void TearDown() - { - theDriver.SafeDispose(); - } - - protected IWebDriver theDriver; - protected StubScreenFixture theFixture; - - protected abstract void configureDocument(HtmlDocument document); - } - - - - public class StubScreenFixture : ScreenFixture - { - public StubScreenFixture(IWebDriver driver) - { - PushElementContext(driver); - } - } - - public class StepExecutionResult - { - public IStepResults Results { get; set; } - public Counts Counts { get; set; } - } - - public static class TestingExtensions - { - public static StepExecutionResult Execute(this IGrammar grammar, IStep step) - { - var context = new TestContext(); - - grammar.Execute(step, context); - - return new StepExecutionResult{ - Counts = context.Counts, - Results = context.ResultsFor(step) - }; - } - - public static StepExecutionResult Execute(this IGrammar grammar) - { - return grammar.Execute(new Step()); - } - - public static void ShouldEqual(this Counts counts, int rights, int wrongs, int exceptions, int syntaxErrors) - { - var expected = new Counts - { - Rights = rights, - Wrongs = wrongs, - Exceptions = exceptions, - SyntaxErrors = syntaxErrors - }; - - Assert.AreEqual(expected, counts); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Fixtures/ScreenFixtureTester.cs b/src/Serenity.Testing/Fixtures/ScreenFixtureTester.cs deleted file mode 100644 index da5ad7cadc..0000000000 --- a/src/Serenity.Testing/Fixtures/ScreenFixtureTester.cs +++ /dev/null @@ -1,325 +0,0 @@ -using System; -using System.Globalization; -using System.Threading; -using FubuLocalization; -using HtmlTags; -using NUnit.Framework; -using OpenQA.Selenium; -using Serenity.Fixtures; -using Serenity.Fixtures.Grammars; -using Serenity.Fixtures.Handlers; -using StoryTeller; -using System.Linq; -using FubuTestingSupport; -using HtmlTags.Extended.Attributes; -using StoryTeller.Domain; - -namespace Serenity.Testing.Fixtures -{ - [TestFixture] - public class ScreenFixtureIntegratedTester : ScreenManipulationTester - { - private IGrammar theGrammar; - - protected override void configureDocument(HtmlDocument document) - { - document.Add("input").Attr("type", "text").Name("Direction"); - document.Add("input").Attr("type", "text").Name("Blank") - .Attr("onclick", "document.getElementById('clickTarget').innerHTML = 'clicked'"); - - document.Add("div").Id("clickTarget"); - document.Add("button").Id("happyPath").Text("Hey there!").Attr("onclick", "document.getElementById('clickTarget').innerHTML = 'clicked'"); - - } - - - - private IGrammar grammarNamed(string name) - { - var fixture = new FakeFixture(theDriver); - return fixture[name]; - } - - [Test] - public void exercise_click_by_specific_selector() - { - var grammar = grammarNamed("selector"); - grammar.Execute().Counts.ShouldEqual(0, 0, 0, 0); - - theDriver.FindElement(By.Id("clickTarget")).Text.ShouldEqual("clicked"); - } - - [Test] - public void exercise_click_by_id() - { - var grammar = grammarNamed("id"); - grammar.Execute().Counts.ShouldEqual(0, 0, 0, 0); - - theDriver.FindElement(By.Id("clickTarget")).Text.ShouldEqual("clicked"); - } - - [Test] - public void exercise_click_by_name() - { - var grammar = grammarNamed("name"); - grammar.Execute().Counts.ShouldEqual(0, 0, 0, 0); - - theDriver.FindElement(By.Id("clickTarget")).Text.ShouldEqual("clicked"); - } - - [Test] - public void exercise_click_by_css() - { - var grammar = grammarNamed("css"); - grammar.Execute().Counts.ShouldEqual(0, 0, 0, 0); - - theDriver.FindElement(By.Id("clickTarget")).Text.ShouldEqual("clicked"); - } - - - - - [Test] - public void exercise_enter_value_grammar() - { - var fixture = new ScreenFixture(); - - theGrammar = grammarNamed("EnterDirection"); - - theGrammar.Execute(new Step().With("Direction", "North")); - - theDriver.FindElement(By.Name("Direction")) - .GetAttribute("value").ShouldEqual("North"); - } - - [Test] - public void exercise_enter_value_grammar_with_overriden_key() - { - theGrammar = grammarNamed("EnterDirection2"); - - theGrammar.Execute(new Step().With("dir", "North")); - - theDriver.FindElement(By.Name("Direction")) - .GetAttribute("value").ShouldEqual("North"); - } - - public class FakeFixture : ScreenFixture - { - - public FakeFixture(ISearchContext context) - { - PushElementContext(context); - - this["selector"] = Click(selector: By.Id("happyPath")); - this["css"] = Click(css: "#happyPath"); - this["id"] = Click(id: "happyPath"); - this["name"] = Click(name: "Blank"); - - this["EnterDirection"] = EnterScreenValue(x => x.Direction); - this["EnterDirection2"] = EnterScreenValue(x => x.Direction, key: "dir"); - this["CheckDirection"] = CheckScreenValue(x => x.Direction); - } - } - - [Test] - public void exercise_check_value_grammar() - { - new TextboxElementHandler().EnterData(null, theDriver.FindElement(By.Name("Direction")), "South"); - - var grammar = grammarNamed("CheckDirection"); - - grammar.Execute(new Step().With("Direction", "South")) - .Counts.ShouldEqual(1, 0, 0, 0); - - grammar.Execute(new Step().With("Direction", "East")) - .Counts.ShouldEqual(0, 1, 0, 0); - - } - } - - - public class ViewModel - { - public string Direction { get; set; } - public int Age { get; set; } - public bool Selected { get; set; } - } - - [TestFixture] - public class ScreenFixtureTester - { - private TheFixture theFixture; - - public class TheFixture : ScreenFixture - { - public TheFixture() - { - EditableElement(x => x.Direction); - } - } - - [SetUp] - public void SetUp() - { - theFixture = new TheFixture(); - } - - [Test] - public void editable_element_adds_check_value_grammar() - { - theFixture["CheckDirection"].ShouldBeOfType(); - } - - [Test] - public void editable_element_adds_enter_value_grammar() - { - theFixture["CheckDirection"].ShouldBeOfType(); - } - - public class EditableFixture : ScreenFixture - { - public EditableFixture() - { - EditableElementsForAllImmediateProperties(); - } - } - - [Test] - public void editable_elements_for_all_immediate_properties() - { - var fixture = new EditableFixture(); - - fixture.HasGrammar("CheckDirection").ShouldBeTrue(); - fixture.HasGrammar("EnterDirection").ShouldBeTrue(); - fixture.HasGrammar("CheckAge").ShouldBeTrue(); - fixture.HasGrammar("EnterAge").ShouldBeTrue(); - fixture.HasGrammar("CheckSelected").ShouldBeTrue(); - fixture.HasGrammar("EnterSelected").ShouldBeTrue(); - } - } - - [TestFixture] - public class when_creating_a_click_grammar - { - public class ClickFixture : ScreenFixture - { - public ClickFixture() - { - this["click1"] = Click(css: ".big").As(); - this["click2"] = Click(css: ".big", label: "the big thing"); - this["click3"] = Click(css: ".big", template: "launch the something"); - } - } - - [Test] - public void by_css_no_label_no_template() - { - var grammar = new ClickFixture()["click1"].As(); - - grammar.Template.ShouldEqual("Click CssSelector: .big"); - } - - [Test] - public void by_css_with_a_label_but_no_template() - { - var grammar = new ClickFixture()["click2"].As(); - - grammar.Template.ShouldEqual("Click the big thing"); - } - - [Test] - public void by_css_with_a_template() - { - var fixture = new ScreenFixture(); - var grammar = new ClickFixture()["click3"].As(); - - grammar.Template.ShouldEqual("launch the something"); - } - } - - [TestFixture] - public class when_creating_a_check_grammar_with_defaults - { - private LineGrammar theGrammar; - - public class CheckGrammarFixture : ScreenFixture - { - public CheckGrammarFixture() - { - this["CheckDirection"] = CheckScreenValue(x => x.Direction); - } - } - - [SetUp] - public void SetUp() - { - // Leave this here! - Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); - LocalizationManager.Stub(); - - theGrammar = new CheckGrammarFixture()["CheckDirection"] as LineGrammar; - } - - [Test] - public void the_cell_value_should_be_named_for_the_property() - { - theGrammar.GetCells().Single().Key.ShouldEqual("Direction"); - } - - [Test] - public void the_template_is_derived_from_the_property() - { - theGrammar.Template.ShouldEqual("The text of en-US_Direction should be {Direction}"); - } - - [Test] - public void should_add_a_description() - { - theGrammar.Description.ShouldEqual("Check data for property Direction"); - } - } - - [TestFixture] - public class when_creating_an_enter_value_grammar_with_defaults - { - private LineGrammar theGrammar; - - public class EnterGrammarFixture : ScreenFixture - { - public EnterGrammarFixture() - { - this["EnterDirection"] = EnterScreenValue(x => x.Direction); - } - } - - [SetUp] - public void SetUp() - { - // Leave this here! - Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); - LocalizationManager.Stub(); - - theGrammar = new EnterGrammarFixture()["EnterDirection"] as LineGrammar; - } - - [Test] - public void the_cell_value_should_be_named_for_the_property() - { - theGrammar.GetCells().Single().Key.ShouldEqual("Direction"); - } - - [Test] - public void the_template_is_derived_from_the_property() - { - theGrammar.Template.ShouldEqual("Enter {Direction} for en-US_Direction"); - } - - [Test] - public void should_add_a_description() - { - theGrammar.Description.ShouldEqual("Enter data for property Direction"); - } - } - - -} \ No newline at end of file diff --git a/src/Serenity.Testing/HTMLPage1.htm b/src/Serenity.Testing/HTMLPage1.htm deleted file mode 100644 index fce23ac000..0000000000 --- a/src/Serenity.Testing/HTMLPage1.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -
    -
  • folder1 -
      -
    • file1
    • -
    • file2
    • -
    • file3
    • -
    -
  • -
  • folder1 -
      -
    • file1
    • -
    • file2
    • -
    • file3
    • -
    -
  • - -
- - \ No newline at end of file diff --git a/src/Serenity.Testing/InProcessSerenitySystemTester.cs b/src/Serenity.Testing/InProcessSerenitySystemTester.cs deleted file mode 100644 index 0e71d2fc74..0000000000 --- a/src/Serenity.Testing/InProcessSerenitySystemTester.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System.Diagnostics; -using FubuCore.Conversion; -using FubuTestingSupport; -using KayakTestApplication; -using NUnit.Framework; -using OpenQA.Selenium; -using TestContext = StoryTeller.Engine.TestContext; - -namespace Serenity.Testing -{ - [TestFixture] - public class InProcessSerenitySystemTester - { - private NavigationDriver theDriver; - private InProcessSerenitySystem theSystem; - private IApplicationUnderTest theApplication; - - [TestFixtureSetUp] - public void SetUp() - { - var context = new TestContext(); - theSystem = new InProcessSerenitySystem(); - theSystem.Setup(); - theSystem.RegisterServices(context); - - theApplication = theSystem.Get(); - theDriver = theApplication.Navigation; - } - - [TestFixtureTearDown] - public void TearDown() - { - theSystem.TeardownEnvironment(); - } - - [Test] - public void can_activate_a_spark_screen_proving_that_the_file_system_paths_are_correct() - { - theDriver.NavigateToUrl("http://localhost:5500/say/Jeremy"); - theDriver.Driver.FindElement(By.TagName("h1")).Text.ShouldEqual("My name is Jeremy"); - } - - [Test] - public void can_get_with_no_body() - { - theApplication.Endpoints().ReadTextFrom(x => x.Hello()) - .ShouldStartWith("Hello"); - } - - [Test] - public void can_open_the_top_level_page() - { - theDriver.NavigateToHome(); - theDriver.Driver.PageSource.ShouldContain("Hello, it's"); - } - - [Test] - public void can_post() - { - var driver = theApplication.Endpoints(); - var response = driver.PostJson(new NameModel{ - Name = "Jeremy" - }); - - Debug.WriteLine(response.ToString()); - } - - [Test] - public void get_by_type_from_the_system() - { - theSystem.Get(typeof (IObjectConverter)).ShouldBeOfType(); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/PackageSpecificationsTester.cs b/src/Serenity.Testing/Jasmine/PackageSpecificationsTester.cs deleted file mode 100644 index 6342b154c4..0000000000 --- a/src/Serenity.Testing/Jasmine/PackageSpecificationsTester.cs +++ /dev/null @@ -1,24 +0,0 @@ -using NUnit.Framework; -using Serenity.Jasmine; -using FubuTestingSupport; - -namespace Serenity.Testing.Jasmine -{ - - - [TestFixture] - public class SpecificationFolderTester - { - [Test] - public void find_child_folder() - { - var folder = new SpecificationFolder("pak1"); - var child = folder.ChildFolderFor("f1/f2/f3"); - - child.FullName.ShouldEqual("pak1/f1/f2/f3"); - child.Parent.FullName.ShouldEqual("pak1/f1/f2"); - child.Parent.Parent.FullName.ShouldEqual("pak1/f1"); - child.Parent.Parent.Parent.FullName.ShouldEqual("pak1"); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/SpecificationGraphIntegratedTester.cs b/src/Serenity.Testing/Jasmine/SpecificationGraphIntegratedTester.cs deleted file mode 100644 index 8c71ef141b..0000000000 --- a/src/Serenity.Testing/Jasmine/SpecificationGraphIntegratedTester.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System.Diagnostics; -using Bottles.Diagnostics; -using FubuCore; -using FubuMVC.Core.Assets.Files; -using NUnit.Framework; -using Serenity.Jasmine; -using FubuTestingSupport; -using System.Linq; -using System.Collections.Generic; - -namespace Serenity.Testing.Jasmine -{ - [TestFixture] - public class SpecificationGraphIntegratedTester - { - private AssetPipeline thePipeline; - private SpecificationGraph theGraph; - - [SetUp] - public void SetUp() - { - thePipeline = new AssetPipeline(); - var builder = new AssetPipelineBuilder(new FileSystem(), thePipeline, new PackageLog()); - builder.LoadFiles(new PackageAssetDirectory{ - Directory = FileSystem.Combine("..", "..", "Jasmine", "TestPackage2"), - PackageName = "Pak2" - }); - - theGraph = new SpecificationGraph(thePipeline); - } - - [Test] - public void specifications_have_the_correct_spec_path() - { - theGraph.FindSpecByLibraryName("spec6.js").Path().FullName.ShouldEqual("Pak2/folder1/folder2/spec6.js"); - theGraph.FindSpecByLibraryName("spec4.js").Path().FullName.ShouldEqual("Pak2/folder1/spec4.js"); - theGraph.FindSpecByLibraryName("spec1.js").Path().FullName.ShouldEqual("Pak2/spec1.js"); - } - - [Test] - public void has_all_the_nodes() - { - var expectedValues = - @" -Pak2 -Pak2/folder1 -Pak2/folder1/folder2 -Pak2/folder1/folder2/spec6.js -Pak2/folder1/folder2/spec7.js -Pak2/folder1/folder2/spec8.js -Pak2/folder1/spec4.js -Pak2/folder1/spec5.js -Pak2/spec1.js -Pak2/spec2.js -Pak2/spec3.js -" - .ReadLines().Where(x => x.IsNotEmpty()); - - - theGraph.AllNodes.Select(x => x.FullName).ShouldHaveTheSameElementsAs(expectedValues); - } - - - [Test] - public void find_specs_by_path() - { - ISpecNode findSpecs = theGraph.FindSpecNode(new SpecPath("Pak2/folder1/folder2")); - findSpecs.ShouldNotBeNull(); - - - findSpecs.AllSpecifications.Select(x => x.LibraryName).ShouldHaveTheSameElementsAs("spec6.js", "spec7.js", "spec8.js"); - theGraph.FindSpecNode(new SpecPath("Pak2/folder1")).AllSpecifications.Select(x => x.LibraryName).ShouldHaveTheSameElementsAs("spec6.js", "spec7.js", "spec8.js", "spec4.js", "spec5.js"); - theGraph.FindSpecNode(new SpecPath("Pak2")).AllSpecifications.Select(x => x.LibraryName).ShouldHaveTheSameElementsAs("spec6.js", "spec7.js", "spec8.js", "spec4.js", "spec5.js", "spec1.js", "spec2.js", "spec3.js"); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/SpecificationGraphTester.cs b/src/Serenity.Testing/Jasmine/SpecificationGraphTester.cs deleted file mode 100644 index d4702e7dac..0000000000 --- a/src/Serenity.Testing/Jasmine/SpecificationGraphTester.cs +++ /dev/null @@ -1,147 +0,0 @@ -using System.Diagnostics; -using Bottles.Diagnostics; -using FubuMVC.Core.Assets; -using FubuMVC.Core.Assets.Files; -using NUnit.Framework; -using Serenity.Jasmine; -using System.Linq; -using FubuTestingSupport; -using System.Collections.Generic; - -namespace Serenity.Testing.Jasmine -{ - [TestFixture] - public class SpecificationGraphTester - { - private AssetPipeline thePipeline; - private AssetFileDataMother theFiles; - - [SetUp] - public void SetUp() - { - thePipeline = new AssetPipeline(); - theFiles = new AssetFileDataMother(thePipeline.AddFile); - } - - [Test] - public void finds_all_the_specs_and_puts_in_folder_structure() - { - theFiles.LoadAssets(@" -scripts/lib1.js -scripts/lib2.js -scripts/lib3.js -pak1:scripts/specs/something.js -pak1:scripts/specs/something.fixture.html -pak1:scripts/specs/lib1.spec.js -pak1:scripts/specs/lib2.spec.js -pak1:scripts/specs/lib3.spec.js -pak1:scripts/specs/lib4.spec.js -pak1:scripts/specs/lib5.spec.js -pak1:scripts/specs/lib6.spec.js -pak1:scripts/f1/specs/lib7.spec.js -pak2:scripts/specs/f1/lib8.spec.js -"); - - var graph = new SpecificationGraph(thePipeline); - - - graph.AllSpecifications.Select(x => x.File.Name) - .ShouldHaveTheSameElementsAs( - "f1/specs/lib7.spec.js", - "specs/something.js", -"specs/lib1.spec.js", -"specs/lib2.spec.js", -"specs/lib3.spec.js", - -"specs/lib4.spec.js", - -"specs/lib5.spec.js", -"specs/lib6.spec.js", - -"specs/f1/lib8.spec.js" - ); - - graph.FindSpecByLibraryName("something.js") - .HtmlFiles.Single().LibraryName().ShouldEqual("something.fixture.html"); - - } - - [Test] - public void applies_helpers() - { - theFiles.LoadAssets(@" -scripts/lib1.js -scripts/lib2.js -scripts/lib3.js -pak1:scripts/specs/jasmine.helper.js -pak1:scripts/specs/something.js -pak1:scripts/specs/lib1.spec.js -pak1:scripts/specs/lib2.spec.js -pak1:scripts/specs/lib3.spec.js -pak1:scripts/specs/lib4.spec.js -pak1:scripts/specs/lib5.spec.js -pak1:scripts/specs/f1/jasmine.helper.js -pak1:scripts/specs/f1/lib6.spec.js -pak1:scripts/specs/f1/lib7.spec.js -pak2:scripts/specs/f1/lib8.spec.js -"); - - var graph = new SpecificationGraph(thePipeline); - - - graph.AllSpecifications.Select(x => x.File.Name) - .ShouldHaveTheSameElementsAs( - "specs/f1/lib6.spec.js", - "specs/f1/lib7.spec.js", - "specs/something.js", -"specs/lib1.spec.js", -"specs/lib2.spec.js", -"specs/lib3.spec.js", - -"specs/lib4.spec.js", - -"specs/lib5.spec.js", -"specs/f1/lib8.spec.js" - ); - - - graph.FindSpecByFullName("pak1/lib1.spec.js") - .Libraries.Single().Name.ShouldEqual("specs/jasmine.helper.js"); - - graph.FindSpecByFullName("pak1/f1/lib6.spec.js") - .Libraries.Select(x => x.Name).ShouldHaveTheSameElementsAs("specs/jasmine.helper.js", "specs/f1/jasmine.helper.js"); - - } - - [Test] - public void makes_asset_graph_dependencies_between_files() - { - theFiles.LoadAssets(@" -pak1:scripts/lib1.js -pak1:scripts/lib2.js -pak1:scripts/lib3.js -pak1:scripts/specs/something.js -pak1:scripts/specs/lib1.spec.js -pak1:scripts/specs/lib2.spec.js -pak1:scripts/specs/lib3.spec.js -"); - - - var graph = new SpecificationGraph(thePipeline); - - graph.FindSpecByFullName("pak1/lib1.spec.js").Libraries.Select(x => x.Name) - .ShouldHaveTheSameElementsAs("lib1.js"); - - - graph.FindSpecByFullName("pak1/lib2.spec.js").Libraries.Select(x => x.Name) - .ShouldHaveTheSameElementsAs("lib2.js"); - - - graph.FindSpecByFullName("pak1/lib3.spec.js").Libraries.Select(x => x.Name) - .ShouldHaveTheSameElementsAs("lib3.js"); - - graph.FindSpecByFullName("pak1/something.js").Libraries.Any().ShouldBeFalse(); - - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/SpecificationTester.cs b/src/Serenity.Testing/Jasmine/SpecificationTester.cs deleted file mode 100644 index 20b3198ae3..0000000000 --- a/src/Serenity.Testing/Jasmine/SpecificationTester.cs +++ /dev/null @@ -1,147 +0,0 @@ -using FubuMVC.Core.Assets.Files; -using NUnit.Framework; -using Serenity.Jasmine; -using FubuTestingSupport; -using System.Linq; - -namespace Serenity.Testing.Jasmine -{ - [TestFixture] - public class SpecificationTester - { - - private bool isDependency(string specName, string assetName) - { - var specification = new Specification(new AssetFile(specName)); - - return specification.DependsOn(new AssetFile(assetName)); - } - - [TearDown] - public void Teardown() - { - Specification.RebuildIgnoredExtensions(); - } - - [Test] - public void is_specification() - { - Specification.IsSpecification(new AssetFile("specs/something.js")).ShouldBeTrue(); - Specification.IsSpecification(new AssetFile("specs/folder/something.js")).ShouldBeTrue(); - Specification.IsSpecification(new AssetFile("folder/something.spec.js")).ShouldBeFalse(); - } - - [Test] - public void determine_library_name() - { - Specification.DetermineLibraryName(new AssetFile("lib1.js")).ShouldEqual("lib1"); - Specification.DetermineLibraryName(new AssetFile("jquery.forms.js")).ShouldEqual("jquery.forms"); - Specification.DetermineLibraryName(new AssetFile("shared/jquery.forms.js")).ShouldEqual("jquery.forms"); - - Specification.IgnoreExtension(".coffee"); - - Specification.DetermineLibraryName(new AssetFile("shared/my.system.lib.coffee.js")) - .ShouldEqual("my.system.lib"); - } - - [Test] - public void javascript_extension_is_ignored_by_default() - { - Specification.RebuildIgnoredExtensions(); - Specification.IgnoredExtensions.ShouldContain(".js"); - } - - [Test] - public void spec_extension_is_ignored_by_default() - { - Specification.RebuildIgnoredExtensions(); - Specification.IgnoredExtensions.ShouldContain(".spec"); - } - - [Test] - public void content_folder() - { - new Specification("specs/lib1.spec.js").ContentFolder.ShouldBeNull(); - new Specification("specs/f1/lib1.spec.js").ContentFolder.ShouldEqual("f1"); - new Specification("specs/f1/f2/lib1.spec.js").ContentFolder.ShouldEqual("f1/f2"); - new Specification("f1/specs/lib1.spec.js").ContentFolder.ShouldEqual("f1"); - } - - [Test] - public void subject() - { - - - new Specification("specs/lib1.spec.js").Subject.ShouldEqual("lib1"); - new Specification("specs/lib1.spec.coffee").Subject.ShouldEqual("lib1"); - new Specification("specs/f1/lib1.spec.js").Subject.ShouldEqual("lib1"); - new Specification("specs/f1/f2/lib1.spec.js").Subject.ShouldEqual("lib1"); - new Specification("specs/f1/f2/lib1.other.spec.js").Subject.ShouldEqual("lib1.other"); - } - - [Test] - public void depends_on_simple_cases() - { - isDependency("specs/lib1.spec.js", "lib1.js").ShouldBeTrue(); - isDependency("specs/folder/folder2/lib1.spec.js", "folder/folder2/lib1.js").ShouldBeTrue(); - - isDependency("specs/lib2.spec.js", "lib1.js").ShouldBeFalse(); - isDependency("specs/lib1.spec.js", "lib2.js").ShouldBeFalse(); - isDependency("specs/folder2/lib1.spec.js", "folder/lib1.js").ShouldBeFalse(); - isDependency("specs/folder2/lib1.spec.js", "folder/folder2/lib1.js").ShouldBeFalse(); - } - - [Test] - public void depends_on_simple_cases_deep_folder() - { - - isDependency("specs/folder/lib1.spec.js", "folder/lib1.js").ShouldBeTrue(); - - } - - [Test] - public void depends_on_simple_cases_is_case_insensitive() - { - isDependency("specs/Lib1.spec.js", "lib1.js").ShouldBeTrue(); - isDependency("specs/lib1.spec.js", "Lib1.js").ShouldBeTrue(); - isDependency("specs/Folder/lib1.spec.js", "folder/lib1.js").ShouldBeTrue(); - isDependency("specs/folder/folder2/lib1.spec.js", "Folder/folder2/lib1.js").ShouldBeTrue(); - - isDependency("specs/lib2.spec.js", "Lib1.js").ShouldBeFalse(); - isDependency("specs/liB1.spec.js", "lib2.js").ShouldBeFalse(); - isDependency("specs/Folder2/lib1.spec.js", "folder/lib1.js").ShouldBeFalse(); - isDependency("specs/folder2/lib1.spec.js", "Folder/folder2/lib1.js").ShouldBeFalse(); - } - - [Test] - public void depends_on_complex_names() - { - isDependency("specs/jquery.forms.spec.js", "jquery.forms.js").ShouldBeTrue(); - isDependency("specs/jquery.spec.js", "jquery.js").ShouldBeTrue(); - - } - - [Test] - public void can_use_ignored_extensions_to_be_more_exact_in_matching() - { - isDependency("specs/jquery.spec.js", "jquery.forms.js").ShouldBeFalse(); - } - - [Test] - public void select_html_files() - { - var spec = new Specification("somelib.spec.js"); - - var files = new System.Collections.Generic.List(){ - new AssetFile("not.fixture.html"), - new AssetFile("somelib.css"), - new AssetFile("somelib.fixture.html") - }; - - spec.SelectHtmlFiles(files); - spec.HtmlFiles.Select(x => x.Name) - .ShouldHaveTheSameElementsAs("somelib.fixture.html"); - - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Player.js b/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Player.js deleted file mode 100644 index fcce8268c0..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Player.js +++ /dev/null @@ -1,22 +0,0 @@ -function Player() { -} -Player.prototype.play = function(song) { - this.currentlyPlayingSong = song; - this.isPlaying = true; -}; - -Player.prototype.pause = function() { - this.isPlaying = false; -}; - -Player.prototype.resume = function() { - if (this.isPlaying) { - throw new Error("song is already playing"); - } - - this.isPlaying = true; -}; - -Player.prototype.makeFavorite = function() { - this.currentlyPlayingSong.persistFavoriteStatus(true); -}; \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Song.js b/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Song.js deleted file mode 100644 index a8a3f2ddd4..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/Song.js +++ /dev/null @@ -1,7 +0,0 @@ -function Song() { -} - -Song.prototype.persistFavoriteStatus = function(value) { - // something complicated - throw new Error("not yet implemented"); -}; \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/specs/PlayerSpec.js b/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/specs/PlayerSpec.js deleted file mode 100644 index 3e21730606..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage1/content/scripts/specs/PlayerSpec.js +++ /dev/null @@ -1,68 +0,0 @@ -beforeEach(function () { - this.addMatchers({ - toBePlaying: function (expectedSong) { - var player = this.actual; - return player.currentlyPlayingSong === expectedSong && - player.isPlaying; - } - }); -}); - -describe("Player", function() { - var player; - var song; - - beforeEach(function() { - player = new Player(); - song = new Song(); - }); - - it("should be able to play a Song", function() { - player.play(song); - expect(player.currentlyPlayingSong).toEqual(song); - - //demonstrates use of custom matcher - expect(player).toBePlaying(song); - }); - - describe("when song has been paused", function() { - beforeEach(function() { - player.play(song); - player.pause(); - }); - - it("should indicate that the song is currently paused", function() { - expect(player.isPlaying).toBeFalsy(); - - // demonstrates use of 'not' with a custom matcher - expect(player).not.toBePlaying(song); - }); - - it("should be possible to resume", function() { - player.resume(); - expect(player.isPlaying).toBeTruthy(); - expect(player.currentlyPlayingSong).toEqual(song); - }); - }); - - // demonstrates use of spies to intercept and test method calls - it("tells the current song if the user has made it a favorite", function() { - spyOn(song, 'persistFavoriteStatus'); - - player.play(song); - player.makeFavorite(); - - expect(song.persistFavoriteStatus).toHaveBeenCalledWith(true); - }); - - //demonstrates use of expected exceptions - describe("#resume", function() { - it("should throw an exception if song is already playing", function() { - player.play(song); - - expect(function() { - player.resume(); - }).toThrow("song is already playing"); - }); - }); -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage1/player.asset.config b/src/Serenity.Testing/Jasmine/TestPackage1/player.asset.config deleted file mode 100644 index 820740ee6e..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage1/player.asset.config +++ /dev/null @@ -1 +0,0 @@ -specs/PlayerSpec.js requires Player.js, Song.js \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec6.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec6.js deleted file mode 100644 index c8e1e4c625..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec6.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec6", function () { - - it("should succeed # 6", function () { - expect(1).toEqual(1); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec7.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec7.js deleted file mode 100644 index dd692577fe..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec7.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec7", function () { - - it("should succeed # 7", function () { - expect(1).toEqual(1); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec8.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec8.js deleted file mode 100644 index 30bc9322b9..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/folder2/spec8.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec8", function () { - - it("should succeed #8", function () { - expect(1).toEqual(1); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec4.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec4.js deleted file mode 100644 index 6d9f1d097f..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec4.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec4", function () { - - it("should fail #4", function () { - expect(1).toEqual(2); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec5.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec5.js deleted file mode 100644 index 0642cabd2d..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/folder1/spec5.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec5", function () { - - it("should succeed #5", function () { - expect(1).toEqual(1); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec1.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec1.js deleted file mode 100644 index 8082886669..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec1.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec1", function () { - - it("should succeed #1", function () { - expect(1).toEqual(1); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec2.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec2.js deleted file mode 100644 index dc4c9f5fd3..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec2.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec2", function () { - - it("should succeed #2", function () { - expect(1).toEqual(1); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec3.js b/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec3.js deleted file mode 100644 index 543111bd4a..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/content/scripts/specs/spec3.js +++ /dev/null @@ -1,8 +0,0 @@ -describe("Spec3", function () { - - it("should fail #3", function () { - expect(1).toEqual(1); - }); - - -}); \ No newline at end of file diff --git a/src/Serenity.Testing/Jasmine/TestPackage2/fake.asset.config b/src/Serenity.Testing/Jasmine/TestPackage2/fake.asset.config deleted file mode 100644 index a4aafa80c5..0000000000 --- a/src/Serenity.Testing/Jasmine/TestPackage2/fake.asset.config +++ /dev/null @@ -1 +0,0 @@ -# nothing to see heregfd \ No newline at end of file diff --git a/src/Serenity.Testing/Kayak.application.config b/src/Serenity.Testing/Kayak.application.config deleted file mode 100644 index 020ce14cfd..0000000000 --- a/src/Serenity.Testing/Kayak.application.config +++ /dev/null @@ -1,5 +0,0 @@ -ApplicationSettings.ApplicationSourceName=KayakTestApplication.KayakApplication, KayakTestApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null -ApplicationSettings.Port=5500 -ApplicationSettings.Name=Kayak -ApplicationSettings.RootUrl=http://localhost/kayak -ApplicationSettings.PhysicalPath=../../../KayakTestApplication diff --git a/src/Serenity.Testing/NavigationDriverTester.cs b/src/Serenity.Testing/NavigationDriverTester.cs deleted file mode 100644 index 0f3913e668..0000000000 --- a/src/Serenity.Testing/NavigationDriverTester.cs +++ /dev/null @@ -1,16 +0,0 @@ -using NUnit.Framework; -using FubuTestingSupport; - -namespace Serenity.Testing -{ - [TestFixture] - public class NavigationDriverTester - { - [Test] - public void by_default_uses_a_nullo_after_navigation() - { - var driver = new NavigationDriver(null); - driver.AfterNavigation.ShouldBeOfType(); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/Properties/AssemblyInfo.cs b/src/Serenity.Testing/Properties/AssemblyInfo.cs deleted file mode 100644 index 0f6c32894c..0000000000 --- a/src/Serenity.Testing/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Serenity.Testing")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("Serenity.Testing")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("084e65fa-2fdf-446a-89c6-ca64452f3893")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Serenity.Testing/Serenity.Testing.csproj b/src/Serenity.Testing/Serenity.Testing.csproj deleted file mode 100644 index c17b692eb5..0000000000 --- a/src/Serenity.Testing/Serenity.Testing.csproj +++ /dev/null @@ -1,178 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F} - Library - Properties - Serenity.Testing - Serenity.Testing - v4.0 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Bottles.0.9.1.278\lib\Bottles.dll - - - ..\packages\Castle.Core.3.0.0.4001\lib\net40-client\Castle.Core.dll - - - ..\packages\FubuCore.0.9.9.151\lib\FubuCore.dll - - - ..\packages\FubuLocalization.0.9.5.43\lib\FubuLocalization.dll - - - ..\packages\FubuTestingSupport.0.9.9.151\lib\FubuTestingSupport.dll - - - ..\packages\HtmlTags.1.1.0.71\lib\4.0\HtmlTags.dll - - - ..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll - - - ..\packages\Newtonsoft.Json.4.5.1\lib\net40\Newtonsoft.Json.dll - - - ..\packages\NUnit.2.5.10.11092\lib\nunit.framework.dll - - - ..\packages\NUnit.2.5.10.11092\lib\nunit.mocks.dll - - - ..\packages\NUnit.2.5.10.11092\lib\pnunit.framework.dll - - - ..\packages\RhinoMocks.3.6\lib\Rhino.Mocks.dll - - - ..\packages\Selenium.WebDriverBackedSelenium.2.20.0\lib\net40\Selenium.WebDriverBackedSelenium.dll - - - ..\packages\Storyteller.1.1.0.498\lib\net40\StoryTeller.dll - - - ..\packages\structuremap.2.6.3\lib\StructureMap.dll - - - ..\packages\structuremap.automocking.2.6.3\lib\StructureMap.AutoMocking.dll - - - - - - - - - - - - ..\packages\Selenium.WebDriver.2.20.0\lib\net40\WebDriver.dll - - - ..\packages\Selenium.Support.2.20.0\lib\net40\WebDriver.Support.dll - - - - - - - - - - - - - - - - - - - - - - - - {E18FD922-0E7A-49CD-B89F-473826077B9D} - FubuMVC.Core - - - {ABFEA520-820C-4B77-9015-6A09E24252FA} - FubuMVC.StructureMap - - - {68CC89AB-EE8B-4B2D-9BA0-8B0FBF460446} - KayakTestApplication - - - {900A0419-3579-4DAE-85BE-71A3E4B34239} - Serenity - - - - - - - Content - PreserveNewest - - - - PreserveNewest - Designer - - - - - chromedriver.exe - PreserveNewest - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Serenity.Testing/Serenity.Testing.dll.config b/src/Serenity.Testing/Serenity.Testing.dll.config deleted file mode 100644 index 4d883cc14b..0000000000 --- a/src/Serenity.Testing/Serenity.Testing.dll.config +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Serenity.Testing/SerenitySystemTester.cs b/src/Serenity.Testing/SerenitySystemTester.cs deleted file mode 100644 index 87760716b5..0000000000 --- a/src/Serenity.Testing/SerenitySystemTester.cs +++ /dev/null @@ -1,83 +0,0 @@ -using FubuMVC.Core; -using NUnit.Framework; -using FubuTestingSupport; -using TestContext = StoryTeller.Engine.TestContext; - -namespace Serenity.Testing -{ - [TestFixture] - public class SerenitySystemTester - { - [SetUp] - public void SetUp() - { - new ApplicationSettings() - { - Name = "Foo", - PhysicalPath = "source/foo", - RootUrl = "http://localhost/foo" - }.Write(); - - new ApplicationSettings() - { - Name = "Bar", - PhysicalPath = "source/bar", - RootUrl = "http://localhost/bar" - }.Write(); - } - - - [Test] - public void add_an_application() - { - var system = new SerenitySystem(); - system.AddApplication(new Foo()); - - var app = system.Applications.PrimaryApplication(); - app.ShouldNotBeNull(); - app.Name.ShouldEqual("Foo"); - } - - [Test] - public void register_services_puts_both_the_serenity_applications_and_primary_app_in() - { - var system = new SerenitySystem(); - system.AddApplication(); - system.AddApplication(); - - var context = new TestContext(); - system.RegisterServices(context); - - context.Retrieve().Name.ShouldEqual("Foo"); - context.Retrieve().ShouldBeTheSameAs(system.Applications); - } - } - - public class Foo : FubuRegistry, IApplicationSource - { - public FubuApplication BuildApplication() - { - return FubuApplication.For(this).ContainerFacility(() => null); - } - - public override string Name - { - get { return "Foo"; } - } - } - - public class Bar : FubuRegistry, IApplicationSource - { - public FubuApplication BuildApplication() - { - return FubuApplication.For(this).ContainerFacility(() => null); - } - - public override string Name - { - get { return "Bar"; } - } - } - - -} \ No newline at end of file diff --git a/src/Serenity.Testing/WebDriverSettingsTester.cs b/src/Serenity.Testing/WebDriverSettingsTester.cs deleted file mode 100644 index e4b77ccdc7..0000000000 --- a/src/Serenity.Testing/WebDriverSettingsTester.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System.Reflection; -using FubuCore; -using NUnit.Framework; -using FubuTestingSupport; -using OpenQA.Selenium; -using OpenQA.Selenium.Chrome; -using OpenQA.Selenium.Firefox; -using OpenQA.Selenium.IE; - -namespace Serenity.Testing -{ - [TestFixture] - public class WebDriverSettingsTester - { - - [Test] - public void read_website_settings_if_there_is_no_file() - { - new FileSystem().DeleteFile(WebDriverSettings.Filename); - - WebDriverSettings.Read().Browser.ShouldEqual(new WebDriverSettings().Browser); - } - - [Test] - public void read_website_settings() - { - new FileSystem().AlterFlatFile(WebDriverSettings.Filename, list => list.Add("WebDriverSettings.Browser=IE")); - - WebDriverSettings.Read().Browser.ShouldEqual(BrowserType.IE); - } - - - - [Test] - public void default_browser_is_firefox() - { - // It's this way because the web driver for firefox works best on my - // box and I'm the one who wants this to work quickly today - // - Jeremy 10/5/2011 - - new WebDriverSettings().Browser.ShouldEqual(BrowserType.Firefox); - } - - [Test] - public void build_firefox_driver() - { - using (var browser = WebDriverSettings.DriverBuilder(BrowserType.Firefox)()) - { - browser.ShouldBeOfType(); - browser.Close(); - } - - } - - [Test] - public void build_chrome_driver() - { - using (var browser = WebDriverSettings.DriverBuilder(BrowserType.Chrome)()) - { - browser.ShouldBeOfType(); - browser.Close(); - } - } - - [Test] - public void build_IE_driver_because_you_know_you_will_have_to_do_this_at_some_point() - { - using (var browser = WebDriverSettings.DriverBuilder(BrowserType.IE)()) - { - browser.ShouldBeOfType(); - browser.Close(); - } - - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/debugging.cs b/src/Serenity.Testing/debugging.cs deleted file mode 100644 index 015d220687..0000000000 --- a/src/Serenity.Testing/debugging.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Reflection; -using System.Threading; -using FubuCore.Conversion; -using FubuMVC.Core; -using FubuMVC.Core.Assets.Files; -using FubuMVC.Core.Assets.Http; -using FubuMVC.Core.Registration; -using FubuMVC.Core.Runtime; -using HtmlTags; -using KayakTestApplication; -using NUnit.Framework; -using StructureMap; -using TestContext = StoryTeller.Engine.TestContext; -using FubuTestingSupport; - -namespace Serenity.Testing -{ - [TestFixture, Explicit] - public class debugging - { - - [Test] - public void does_is_uneque_work() - { - typeof (SingleTypeActionSource).GetConstructors().Each( - x => Debug.WriteLine(x)); - } - - [Test] - public void start_an_inprocess_system_without_blowing_up() - { - var context = new TestContext(); - var system = new InProcessSerenitySystem(); - system.SetupEnvironment(); - system.RegisterServices(context); - - var driver = context.Retrieve(); - - driver.NavigateToHome(); - - Thread.Sleep(5000); - - system.TeardownEnvironment(); - } - - [Test] - public void what_does_by_to_string_look_like() - { - var dictionary = new Dictionary(); - var list = new List>(); - for (var i = 0; i < 5; i++) - { - var dict = new Dictionary(); - dict.Add("key", i); - dict.Add("name", "somebody"); - list.Add(dict); - } - - dictionary.Add("nodes", list); - - Debug.WriteLine(JsonUtil.ToJson(dictionary)); - } - - [Test] - public void write_source() - { - var settings = ApplicationSettings.For(); - settings.Write(); - } - } -} \ No newline at end of file diff --git a/src/Serenity.Testing/jasmine.txt b/src/Serenity.Testing/jasmine.txt deleted file mode 100644 index e05644bd60..0000000000 --- a/src/Serenity.Testing/jasmine.txt +++ /dev/null @@ -1,3 +0,0 @@ -include:Jasmine/TestPackage1 -include:Jasmine/TestPackage2 -include:Jasmine/TestPackage3 \ No newline at end of file diff --git a/src/Serenity.Testing/packages.config b/src/Serenity.Testing/packages.config deleted file mode 100644 index 220926a472..0000000000 --- a/src/Serenity.Testing/packages.config +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Serenity/ApplicationUnderTest.cs b/src/Serenity/ApplicationUnderTest.cs deleted file mode 100644 index 3b8959f1f2..0000000000 --- a/src/Serenity/ApplicationUnderTest.cs +++ /dev/null @@ -1,183 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Net; -using FubuCore; -using FubuMVC.Core; -using FubuMVC.Core.Bootstrapping; -using FubuMVC.Core.Http; -using FubuMVC.Core.Urls; - -using OpenQA.Selenium; -using Serenity.Endpoints; - -namespace Serenity -{ - public class ApplicationUnderTest : IApplicationUnderTest - { - private readonly string _name; - private readonly string _rootUrl; - private Lazy _driver; - private readonly Lazy _container; - private readonly Lazy _urls; - private readonly Lazy _services; - private readonly Func _createWebDriver; - - - public ApplicationUnderTest(FubuRuntime runtime, ApplicationSettings settings, Func createWebDriver) - : this(settings.Name, settings.RootUrl, createWebDriver, () => runtime.Facility) - { - - } - - public ApplicationUnderTest(IApplicationSource source, ApplicationSettings settings, Func createWebDriver) - : this(source.GetType().Name, settings.RootUrl, createWebDriver, () => - { - var app = source.BuildApplication(); - - app.ModifyRegistry(r => r.Services(x => - { - x.ReplaceService(new StubCurrentHttpRequest - { - ApplicationRoot = settings.RootUrl - }); - })); - - app.Bootstrap(); - - - return app.Facility; - }) - { - - } - - private ApplicationUnderTest(string name, string rootUrl, Func createWebDriver, Func containerSource) - { - _name = name; - _rootUrl = rootUrl; - - _createWebDriver = createWebDriver; - - StartWebDriver(); - - _container = new Lazy(containerSource); - - _urls = new Lazy(() => - { - var urls = GetInstance(); - urls.As().RootAt(_rootUrl); - return urls; - }); - - _services = new Lazy(() => _container.Value.Get()); - } - - public string Name - { - get { return _name; } - } - - public bool IsDriverInUse - { - get { return _driver != null && _driver.IsValueCreated; } - } - - public string RootUrl - { - get { return _rootUrl; } - } - - public T GetInstance() - { - return _container.Value.Get(); - } - - public object GetInstance(Type type) - { - return _services.Value.GetInstance(type); - } - - public IEnumerable GetAll() - { - return _container.Value.GetAll(); - } - - public IUrlRegistry Urls - { - get { return _urls.Value; } - } - - public void StartWebDriver() - { - _driver = new Lazy(_createWebDriver); - } - - public void StopWebDriver() - { - if (!IsDriverInUse) return; - - Driver.Close(); - Driver.SafeDispose(); - } - - public void Ping() - { - var client = new WebClient(); - if (_rootUrl != null) client.DownloadDataAsync(new Uri(_rootUrl)); - } - - public void Teardown() - { - StopWebDriver(); - } - - public virtual NavigationDriver Navigation - { - get { return new NavigationDriver(this); } - } - - public virtual EndpointDriver Endpoints() - { - return new EndpointDriver(Urls); - } - - public IWebDriver Driver - { - get { return _driver.Value; } - } - } - - public class StubCurrentHttpRequest : ICurrentHttpRequest - { - public string TheRawUrl; - public string TheRelativeUrl; - public string ApplicationRoot = "http://server"; - public string TheHttpMethod = "GET"; - public string StubFullUrl = "http://server/"; - - public string RawUrl() - { - return TheRawUrl; - } - - public string RelativeUrl() - { - return TheRelativeUrl; - } - - public string FullUrl() - { - return StubFullUrl; - } - - public string ToFullUrl(string url) - { - return url.ToAbsoluteUrl(ApplicationRoot); - } - - public string HttpMethod() - { - return TheHttpMethod; - } - } -} \ No newline at end of file diff --git a/src/Serenity/BrowserType.cs b/src/Serenity/BrowserType.cs deleted file mode 100644 index fac71eda11..0000000000 --- a/src/Serenity/BrowserType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Serenity -{ - public enum BrowserType - { - Firefox, - IE, - Chrome - } -} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/Serenity/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index 5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 diff --git a/src/Serenity/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/src/Serenity/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png deleted file mode 100644 index ac8b229af950c29356abf64a6c4aa894575445f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= diff --git a/src/Serenity/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/Serenity/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index ad3d6346e00f246102f72f2e026ed0491988b394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v diff --git a/src/Serenity/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/src/Serenity/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100644 index 42ccba269b6e91bef12ad0fa18be651b5ef0ee68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& diff --git a/src/Serenity/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/src/Serenity/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 5a46b47cb16631068aee9e0bd61269fc4e95e5cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse diff --git a/src/Serenity/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/Serenity/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 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 diff --git a/src/Serenity/Content/themes/base/images/ui-icons_2e83ff_256x240.png b/src/Serenity/Content/themes/base/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 45e8928e5284adacea3f9ec07b9b50667d2ac65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 zcmd^?`8O2)_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~GmFhwsn)TR1w<4t)tA3_robX4CdCOHJC|7j+vW z%J-EMX&`87enIluaSc0_SnYUx$GzUc?vrNXt&I`o?~7C3RJ>C-Ajq!3AfU8Dx90^_ zp3}MKjJzYC+`T(&egFXQ#9Ek{*oVAaa!zrZtmlRFnwQPRJXH<%pkK2*eP`pT=lwD7 zifq+4BY_rUTa+U|2#&?i7>PVvD?7R4ZfOLPT{e9G~G!Ls3s8JtQE`jMM9wl2V9&Q+K2DHW0M+uQmEr%nYJ^7cK?uIpU-)=wn71ZZ-=@ar0;3^AY z5+TI{2b(e%t{2PZ^HKF*vu@+Xr&BAc@2BC4 z_vCgww#i=)ea5Vo$glEEVBBg_VPBj!)OO>)f@}#dg6ULOeC>LBHz<;*5Y;YfE0lNx zg{N+4@lO~ozxpF69qV@VOGnc248Iuag4C1T)P^(hWkpP!{h!JekX}m^Q#b2B4f1oT zIjsGz)4}-$rQ*-tSuc%qG>%<4xM#E& zN)7lRK~^2VdiloY4>;#}A!yHOAXEmEi^+eA#05pawGXs>!z)gSoDuI#>bRCq-qjJe zZ)r=A`*EMX6+)~er1kdv1L^)0-PsAEM7JF$O6G8>496$24lkOSR^RTfUuIz%iSfn5b-t!##cs7sQI);gdAvqmn_v|%I9k;fCPl0Z)R1+hNQONJN zH%3jT9sOq*a`LF*MiY=zlSSQZ;{_FL9M07A=In+O!~wR}=bzGEQpk2!Vc0p)qKAH? zOk{(%06W#)DdICQ_S%Q@<0Y+!?9%#$gWJ%)EO->^YZP{<`oB4~9xh zL9-0*c4@B#O2ylYs_g`Ky$zb~v!M`NRaMNFYF*Gsu|7)=JyyMHjFC=HhGUE@{aI|B zJ~ITXU052%7jFb5Ys#fhS_?4kqc7H0EU49B8(Chg0&JzU=Gka#xOz1)H0d4m7ZnRA z=M^tdY|U6T!fmte{W?_r8H~qdq|q{5AMU_2It1I4143n~xL?4&K#BOB48l9_Rdm!(c^C?JU;tF0 zEh@o1y6Qa_>}#AwX{VY+`C^kNkxhgb1P5cB0%xupAXyg9NO=SnXrJUE?rQg{Lcsn+ zAZKctGLfbK_B#^&Nev|0^fB&?DN=ak8|0!np524LD25=s84BP8Vl(3=jflNp{X>e@ z637Ri5xx;&JNl+XYImA|{;XR~P*svYDEWYJ6I5!6uO~2twFC1ZQevB7#3z~(apxn& z^J@>Mc`>PJair{yT`iuan-V+i%|Ho-pA<1?V-k^R2Q<5;Co%XxmL` z018t4T0TTwO^w)Gx{9OSJ^9_|kgwX`7%0Rw!PO~@?xvnfUehvN;2Rc;^l>3kfbtk3 z8{j7p;S&{uTlTe9&HTc38q@%_KQFk<&n{vmrN7y&Cz{etcE->rq!6HL)2F!aa=0%! zM%Bwo!7TQ5t;@a_#Q}sjk{UebWQZ8{cp&HN^$*JfH#8spkhk{R@CVBiPuP@yEhu{} zsQfuhTqV%rioATpEphMfhyRYbVfVW`YwLFXUWm-===J(byMf!5;W^CV1g~2194Xx) zFK|z{pm%n-)-DRe{Qhk(d!QaoI*y%Wn6h7<6A{i*Sob&B^y|Spg!&J$`kN>zwUJ3x zaB$ciu*0FJKg}T ztgnh)ASF8njz5>h6?f#{c=*Yr4W_34$GmVIo8OLWjcZK4a0`+Yv-!*}9 zBwKm;DAsA(nDI-`iH@;`=gP+m{lgFLHK3m$W@?)&dGhDA_Z2xOzI0$p(ZJtH$vCxE zj>+kYNBJzs-TlSx!tSH}%I9fQv)mc!C7X0bKlZv4f&}C3+O-4k7AmVO|KYZ9ydP%(N1^uisV8y;~p`x4qFXD?!_OyN9=w(Od6W; zGrT?G;l2v@Ob5k^8w<9w%Jbjb^|H}PYKo}I~bobd!XrTbzp2Zp~H8lgJ)I3?l&(bDiWf8gE&6b z>)9GB=Iu-6%I((+>=jGP>CzD8c0oWITFZGgM!Q7|JrUYq4#^Y(vuDu-a>OWDa4Y4} z5a_*lW#IL_aVf8L+Ty}c&2VojLEIA-;eQK6Wo?xAuK>i;1VWx3c=!s2;j_*iRHOsb*>6-CgcYP+Ho=L@XLd*j~2ln-;WHg)|cCixksH$K={5rGSD@yB%LI|(NCc8 z1Er8H+QO)~S~K{g?nH|2dB8SKs)BxQ?%G}}o*LV!NG2m*TmR|pWj~g`>)ClJCE#F$ zcj)fBg(dKOKmc$Cy}IRlasngIR>z~kP&WW~9cC951{AKmnZ~ZMsqup6QQf7J0T1;C zK9*Qd5*(HxW=tl|RfjO>nkoW#AU3t>JkuzWxy4-l?xmTv15_r1X@p@dz^{&j&;{Mq z$^0$0q&y?kbdZh)kZ+NfXfqLTG}Q^j>qHlUH4VEK`3y^-z6Y<6O88Hf4v^;}!{t-a zDWg;znYu%6zA1~A5~w?fxO~i8-Ib(^02{c4pXjhDI^2 zXB1LP4dvWuc%PXQ{r!d#6>${rm+M8EJM8yf#!H$Kp8AxwUXm5`7Tu-J$mHeCG>vw|&Ay415}_1w&*9K8+2d3v1N+@a$|820o4u60Tj@u&kI!~q2V9X; z>tMvQDI|O$#m+m2O**ZHq`_{#8)ry6`&5s~2k{O4Du16Fn0P;&_(0!e5%Bel){nU0 zJX~<8U6hoI%yx}qGY_1Tq7YKDJ)ETOCs&W)TiCrK*1%DE*vXdD-7hwE*LUgjeHRM` z&@pkhTi>m#Kc+QIK+2Ybn9-sFVKNHyIgfob4H_77yYh))Rq$7Pw|+aD6&yZ|ki9 z8Zb6s{oBt1G+PgfIcxd}{m@~1nzhe;LH)5;!gS8@ddyabpdBc?7JVl?tS+<#bPSMT z2@0uYdsWN(;Ww)n-PlA-0r+62@bYkEa`k{0s})fJgYZ#5=DmIdEvok7aZJRi{w-|} zkea&6X}ZA3b7&vbDb7)v8CuI(+zzSf3z&P2eOrPNP?D~ zf zn0@)0h;~5F&BG5vOFU!=woW&ZSl~nrs{?1w>nWfW_dnpTd z4qvLDYJ*ft>Sp%M(^_xCZpNBnc66JX}A|ZL9IENM`U>`ph7d<+RQiI}@E8Y)70s zMC*_&))}GlmR}@{v9*nm)29-=rn`Q$rc^4G)GVQHlTr6BpGxtHuU(8AF7Ffh54?5w zj+EYT9>x)PWL-iQ@RNmT?R+|c@=FOmj)5Za6_ z@DkVy4l^L>Z3#SI@s_eVwd3D)<^Ivq8a~J{|4mhOL^<7M4D8){ut;GIqqn`oqCk|x pNh;Wa$C0(mdpqYz&F>xK-uVD=DT5%Jzh8ZT#aXmjr70%*{{S|9XD$E$ diff --git a/src/Serenity/Content/themes/base/images/ui-icons_454545_256x240.png b/src/Serenity/Content/themes/base/images/ui-icons_454545_256x240.png deleted file mode 100644 index 7ec70d11bfb2f77374dfd00ef61ba0c3647b5a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 k*Kv;w;*%(i9W@fAqs5i2wiq diff --git a/src/Serenity/Content/themes/base/images/ui-icons_888888_256x240.png b/src/Serenity/Content/themes/base/images/ui-icons_888888_256x240.png deleted file mode 100644 index 5ba708c39172a69e069136bd1309c4322c61f571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 zcmd^?`8yPD_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~GmI3`<(O3xvulR&VAkQJHZBho(m=l0{{SA7UpJl008iB z3RqU$@Wfh}nb?QCTyjovo2=)B^qQB=#XMCF_n=?1Jbh>5sptJM?}}{I zHzR=-V_TFXKM0P+&lrh3TPr)c<8EmLl3g~EY}W@od*0X6Ljv>L(67bjz58EDypsu&ddu2a@@x)`5aA^S^DxkW8rs_vKtu8N8(o0 z#Nf}*Ch4&iw866BiW!_r4*HRsHn%80xlBW<`IOcXDu%LQam7$Ge$q#1415XvN>cnS zk_qU%P}4fO0v>J{Zw9o*)JF-CPA!KcpFR1Pn(l@*bKh=1_!ZRWb?FoG5a22cVG<$5 z0|%Qj7p@n}=Hrkk`BkD99I57h7_+lQ-AZ-?fETz5E~q(= z!!d%~_yivn82d_pX#M+Y`|`-F^s6-{6}S!?_mFzr<=n>M{{PUq7g-N`hqOcY-y_m= zc#xZEqMPgqc5cu{ag@Tdli5@JlV{xH8J%TA}P<$=Qej`5Hq>_Gzk+NDFM{b*SA6Yydp9VOs1VgIYAcj@1BIt< zXz@=NF2DLCC>`r|^h-z5@eIEh>Vnjh+|-6M@nuC!oc*856_8#_6jL|rKLYu=)Ew4+ z*XiJVgHrKl?=0wjQ)aeNu2^jkUW>@Hei_S;nuA%RRe49V`VM;8SxUBxpZPe>l9ZA{YS(NU; zhnP(vSd1kYiV^KQ02>XpH6u}Xk)wrk`+SxNxC73cSAefm+V!<`c^b#A9NaTn45bEq zkRYp$U%h-|^9P*syb!eKG!QC-$;IS9MdE^@-`WRSzTp+8M9zqJCUsoPC-3Tr+qbkO z$o;ra-wGjC64H8m{(*FVitg+LQKH+96D4!FREFb|Scex)lw()`rHV$WMdUJNe3E}`->+?@(FDYcZt1#>wXwgHzQ6{p% zTY#PF?iBGE7<=u*`SFt0Lw0HX!oh85UlzQH{;k~&JH?kPJzdQX=gAmX40n@#()wBu zSllJ`lX^ZF9!&n2{1443>o2BzK(6sGDQ?n~RYk_ih&{?TJNBH*Eq`73g$F~WrJz{` zce}LL0;S^ZMb&nKyWR#(_t{VguBs~LOSLX&q*$M&haRh5HO5G%C&MvDmi{a@PM;Zq z)h;XzD;Cshu#GG)RsptBTJvnQHC(-#7@G7B`iqJMl=F%g zD7I#-8sWBC_kJC!{tU)rGSX-nt`B$M86ARc$^oIWRNOCMU!X+%PKM$X`mI~kxxaKB znBMvsb8nZ)0}JBmidn3FUeG@ZcdpwZy_4oi*b{&c?T^HaVC|`tnlo?1SjRKLNPk{gDWT+_1fio|Ic{5kU=X{rvm3 zZIZ6BO4vMQdqO`~Ef~j4Z?cQ(+Ff$wxGAlyMBqd}_S__(_xM@v-fTM;$Q^HhR@PU= zE|8KP1IM4s;)*-+Z@m25>p^N(PgHJsq+a!8`ezsTQ3Np0+k4Mtdkgu z^}tg`-YMQKuuO>dsJQkgyjabt1)2OM)|R(}hto4zSIj5V;^@PYtIwI&4#+%;&Kf)o z7)jrDgZ%f?x$UCa=&~<9SHq{ZhxKx!b+ft~!I?(H$&BMOox4KuOo95gl<%5AIg+is zd=%?6ZOr(k=S0U?!*k{1h5q3O_ZrYo5Hq#Sl|1?L+WU%}6JI(orD)*qq-300E63z? z#iM){^ff?RwehBsE3Uh)}m z74!C`a^?2x1@?-i<#cI?a=RcP4Xx$88l&B!g`Nm)Fo$Fcf!VX@0y$z7EVz~OXbALP zyfX0m-nf+4I&E=bsAjk~l_2g3i}1e%qO!KkQ@Ij*%HbGO)w=i^^5FvkHIIee`4l@J zN(eR%MpMiipJjP0Cxd|&4n@b?>6{Ue05+A0q?xd^oCpYNXpePmO#{q`vISfX)oT82 zc+d5gPn5-?9wBmlt3pk*z*hj`X#ycn4?KJY!|++>4l2@t>FhVEjPeFAhW%k5Vkm2~ zbcy`#HFb1XOYOKAcKGGN*GG%skMBnYSL@4d#@wS$CLny@9vSEwSCUSW;OHk%_<>T$ z7HwfvT&)@WQFkIm_dH-5Csjc|H+OBX6;F-rR3wuTudV;|_Oc(#-}UUgloD_-!aH>L z-NF)hJ|F-%gI?Y8Jvo7qXRG7UV5l2_yAHF93IhsP-b`cH*wlEz^Qi99$$*D?10PGQ zCkYPA5Hltd=c+>(bWIfjJP@1Obe?Gx$=qVDe)rPM+5sw)!8F3K7T{OMLFj_+>SX>F zTT-48YC1?q1IV|?OSG8?IGXAN;&q~nz?z0#i+qM9P~U@BNG1FyO9#kvk>T>G=#)_^ zj!fMlH{X;+ONmr!LsJx(j*b2&WMpJ+s&cN;7Tyu8gf>RT2kOR+DBzZr7=m-v-UheM zgj$|(0HN;F)qrlz6$FyVsy6e02`M!$<1L&Bz z+b!=_(#ur8?I=h&thJP2c+^S%)lEi*8fSaPs>Or&i1kF^p9QX&8C;)E+S__7fCh{W zSpW930L|8eV$Pa=LO*oao@VWHUr>MSl`x%iydJaFA!rB6u0`Jo5337p0UZNmSb{=o z*%W(>6W|^!F&8DUAC~&Vo2D?gE{V0S3{B;atoXLUNo9J? z0AWHot1HHimnr%xGf~-qSOO6>z*MtHe(EIN3<7@k-U&gFD+Xq}Ua*o~(!1kApC zO+-7O=jP#uq4B~*JwPs<`_;tw%;J3m{g-9xU(RBU&q^x&eSc@Ik<8NR$i0+>JBKgT zPqjfRC3Q3V=4q|BVK-yVuyUMByvXqR1a4^k&=*MqJ_v2b7I+El z1&0}s^tJ?^uXsz@oZ9j4x^n+$X$>D_nE$4#I-;EJG6wc;Jy@i$hSA&JVNoE;;UpDo l!Q;r<<-MKrq~`aIaqoP9xRgPV&EKy+z~U_0tkM({{ePlYU?u&Z`mr_kcwz5Nh&g=McJ3E!;CE1E0ryV5Ro;>nvty8 zA{omJnn+{p4952Let*87zvA;auXFF~{<`_uPA4&sV%P>LMpp1PTBEIL*yWZ2%{t3Pe;FXZ3XmxI8(D_g57_$Zil~sY6d4T}-hu9_Wqp4C0AMO{-e2$W~1A}=8 z?24)=?B)4HUDo_oXckN%okP)HFJjaB4*3_SNpKaf;yPT}KqfS{2x7`d{0xbPErH%h zh`mQJ03DaATP9aP!}a4$fY#``NI~M6&RljED)8z}hhWxrNbxIBlTxG^j z!X>$3AQQ&I%_5mRECOjaGwR-GHmde})^)t-3_~aFM1G_L#mpCNdcLqr(RKjv3R}(z zG2^yBftMYh;H3a#-slaj|5$BX9+{PTv&NtR*P-L?l21FGTG`$H9~##p%VE!uR>=NG zc&auxVl!1_lP%uX71AJvlz(wLYl?63oLd~dqjZRrU#UEWw8J6Yn-7L~T$$tjeAQiW z9$XG5Hu>rxFBnzgd6ho#^gE5pY>U$dTCRN85Y1tQQ0=Pn{?7OJ10x9Xk!>P2f(f^f zILd}5--N;Po4*25F|J3ywIv+R@rfcYNj}R-sXrH2TFAiK{jFGG(ru1p=w$wR;IXQwAX*S~oiEK{g;kZPW;YE|!QY|g^2`dMS{&1Fr zkf?!sj~m)xO3v`hh4KQRJ&&Q!=X1HNq8T_Sg2P^B&rZX{VQUNc9O(K+B_Z4hiTH7M zW7K5Y!Ec5xD~B9zFlKUWG_Rd)xTK7U#hRGhp51T++e6oS{gT^?3s~>V4?6{zchhc_ z3UBb_W2U+~guMsG-g=@#aWPSFypk)5jIUTxFiM zycGZzbxQuCTnvH*kv=E=LsRnltLbhgm$=ttS1IzU0)1t~4(XE>bHVwJpAPKOqoI-# zrdc{yo0R7Qx%~ZQl{UPa?gmxo#ZWM|vNHNxl@8NLksfn5Ek>C${w=x~pekl%gfwaLwWspL{af)?f zTOBmhTyU&3;}QeF&VLwhJ>Dezu>~P zc+$aFxKDWKj-CmD(v`}uH|ts*SefX@lyrc<%~WE6tHU#dv;y+LlA@cTgl8J!u@@u6 z@@fvJdC)1TvBa$QT@ck`rUxF**7w4Yh0!vZUsGu%Lm(cl(l#QPpmoOH3JC>FMe07G zq0kl#K+GLndyoOx8{t9g8JiLs#`pH8JWqR_ZM%J!Yr>cp>95<^#=FWQfzPm%q;5B+ z0>}ul8+l+gRaHV$$tsq5|MU;?AJ~m-XNxjW3U6JH2k`tOXAqi)yGI@^uA&dQ% zZCJIe7{qK>+p_F)Sqy-GC!x-5MgogsP6lwiUH`N^a7*LKPdO{!4L^_^;goe*e}3s( z0i~~@V#)#L*W~2F?}&N*IQ)0a4Z1$uTU)p7^Mq&IM6K6d*$vpX2+L*+$9vY0=7?$b zxdD4R`8~74HMWsx#*goNSp#(_;z`UT-GuGxoUl-){JNk1rf)aSKE!W`#m`t#v6V!u zgn>fufpkVprL(KqSkhl*Z+yRQosF)bEiV<#K8hOr>yQ1@7Xg>g3EjKwLB7)(9$3%X z$G30OD&Z2Nh{;v5!}oF4fUu0TM%&2F-6aS1+fqu3cn;K4k4-#kkB|BO?bZtcTygp+ zB|R0)0x`)UVEm;Fwx~Vt*6ZV3k5Xcj6_=(X2y*8M&NGz^?Jr>Jutu8idcHpesED^^ znM9MV2AcX%oppm45TS9yYBtteX?1liAe($}l8Mrk|YY*cFUp@Yl5_|Ih%+ z5^dz*^BpQ&l8;Le-Z+E?J1_|}dtK>`0HCSg@u z*e9pUpX4zkcJ~*%3c8N=D_*8f&2puu6>riMeA#MG3E+*kYt|0Dnl;U^u0x`IJLnY* zjELAyFaL6=ihd=uwgnc)F;a_ZKEBsA_UuVc$NS1$GwozcE)2-hGS_c!*V9@%u`#?lhbMR;p$MXpbUS7*AsAt5?3(xQtcatZ zK;B-KhX__vb(?F4Q0GloBJ>|QvdJoM?lDbgsR3iM@a;Z3?cA&4wtslYkr80ETZHkc z9*>q7Q7<0~XHK7PK#yo@cBi@smopq(-%`e-KH4Qx-~rbHu}dW58QqJ{;3Inef@=x4 zI)BgQYXff|j7xg1Qx_M8s)u`0@M0d&aKAfD6qe?B3THxh84PWrQX5xII()>h>b|f$ zpKR+*4#vbnsS3H{v&>IrrO}Xrp{O`p?Q{I%z{XPHRAc7mQ~rVVZ80t_sel;~R{!fE znoWNU9=P1`jx=A?#Ye1fm8**6`|yK3jKQSofyZy4XkM$FK?NExjqO&YVea7N(7$X$ zbR{k3PT@a2CJt_@Dead-55GO?f3gVr{BdM(wXV#1%q{YCJlyB~k-m;m1@SZyhI$5p z9ViBGQ5QzVRGUDbbtaN^E&{f(lI64ub2s){aFm!11riDV*6MFh58H{nU5}0{$^Hi; zJVW(-UYp)>>|Lx|%+y^DwKhz`tPS-85#6Rh0)ckL)U$^na{7 z@VVG(5^ui@Hf1odF537(mlR>ZBhjf%rT+ zPUdZ~CgvIZM_wUkJAw%w}x9jc8!TL)0!EfOi*AMUgP00QdmWDhdxHH4HGc<~J zIVYb|Vj$~E#d*)1>gzKQFOMaAy}BVVo}IK&7ZMB zx!9l*+ek@g>FsKVCTu!A+bt50<5zR%LvhtB47 zphLoLmz-;H4@2#)g8=!k#zLI#UMqFnH)&}~tj#&gW_Q99mQw+L7dU5Tu)W%;@9Qi9 z>QGi--TSZnR2z4)8B5wJy^vu$s+IRc0ll#|LNt!?I`me%fGty24eDN4Xl+O{(+NPj z1ygVh>zf*$Pk&fEX-3AP^1w$s1y_e7lBxzgSu6?iXt=l939t1dNMV&Hw?hI}<+!vx zKuXRw@aAWBEW)iT2xma>qG11B|GnfLf43m`S%SD z3d3^-2o=m;T`_XFO4d`JiOd4T*vl!w_t?SMNPGOr712xew$!m3PP4`3g2iVGiU!9* z&w=GY2O}!evGB%RQa5rA7s5%`YA&A$+(`a%B< z)4%^Wyf-xKA)KjJ=y>(k$Cki3nVk)wxAEYIGA3p>sG^i;f$cIw3$H&^I7dNHU=sw$d)j7 zh|(sSuhT>1EWU{wVQLz{XV1iYPIvxnNv=>Vu3kdkB_SVNJ(KJiSF;#9T-Gc6A9!kU z?a4i1-1H;R$hx=;;1@G7Jsm?|a=U>2b+qZz`aN9sgsIyFSp6r%%!9oq%tbmjY#K7P z-Gux{jUMaKw>DF`W{3tTZ|SIDqX6v)w4@1rITXmow6pv9GTr+NsJ`V>Zv++iD5MFK z@5#Rx6sk|u-Qs__;w5Q)X2-Ad+QXxzHC&)U-n+`G@G_e77|5&TV3EucN^AXqK{AmK pCn+FvZU>f5ukGw-)qi%3dglGbB=rNWkH7i=^YbXv3KMkH{{f&jC-?vW diff --git a/src/Serenity/Content/themes/base/jquery-ui.css b/src/Serenity/Content/themes/base/jquery-ui.css deleted file mode 100644 index 759a187fae..0000000000 --- a/src/Serenity/Content/themes/base/jquery-ui.css +++ /dev/null @@ -1,566 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } -/* - * jQuery UI Accordion 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -/* IE/Win - Fix animation bug - #4615 */ -.ui-accordion { width: 100%; } -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } -.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; } -/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { position: absolute; cursor: default; } - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* - * jQuery UI Menu 1.8.16 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} -/* - * jQuery UI Button 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text { padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ -/* - * jQuery UI Datepicker 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } -/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* - * jQuery UI Resizable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } -/* - * jQuery UI Slider 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/ - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } -.ui-widget-content a { color: #222222/*{fcContent}*/; } -.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } -.ui-widget-header a { color: #222222/*{fcHeader}*/; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } -.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } - -/* Overlays */ -.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/jquery.ui.accordion.css b/src/Serenity/Content/themes/base/jquery.ui.accordion.css deleted file mode 100644 index 327beb50e8..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.accordion.css +++ /dev/null @@ -1,19 +0,0 @@ -/* - * jQuery UI Accordion 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -/* IE/Win - Fix animation bug - #4615 */ -.ui-accordion { width: 100%; } -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } -.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; } diff --git a/src/Serenity/Content/themes/base/jquery.ui.all.css b/src/Serenity/Content/themes/base/jquery.ui.all.css deleted file mode 100644 index bf68bc41e0..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.all.css +++ /dev/null @@ -1,11 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming - */ -@import "jquery.ui.base.css"; -@import "jquery.ui.theme.css"; diff --git a/src/Serenity/Content/themes/base/jquery.ui.autocomplete.css b/src/Serenity/Content/themes/base/jquery.ui.autocomplete.css deleted file mode 100644 index 6de6867367..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.autocomplete.css +++ /dev/null @@ -1,53 +0,0 @@ -/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { position: absolute; cursor: default; } - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* - * jQuery UI Menu 1.8.16 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} diff --git a/src/Serenity/Content/themes/base/jquery.ui.base.css b/src/Serenity/Content/themes/base/jquery.ui.base.css deleted file mode 100644 index 209c24f30f..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.base.css +++ /dev/null @@ -1,21 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming - */ -@import url("jquery.ui.core.css"); - -@import url("jquery.ui.accordion.css"); -@import url("jquery.ui.autocomplete.css"); -@import url("jquery.ui.button.css"); -@import url("jquery.ui.datepicker.css"); -@import url("jquery.ui.dialog.css"); -@import url("jquery.ui.progressbar.css"); -@import url("jquery.ui.resizable.css"); -@import url("jquery.ui.selectable.css"); -@import url("jquery.ui.slider.css"); -@import url("jquery.ui.tabs.css"); diff --git a/src/Serenity/Content/themes/base/jquery.ui.button.css b/src/Serenity/Content/themes/base/jquery.ui.button.css deleted file mode 100644 index 31c79f9c4e..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.button.css +++ /dev/null @@ -1,38 +0,0 @@ -/* - * jQuery UI Button 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text { padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ diff --git a/src/Serenity/Content/themes/base/jquery.ui.core.css b/src/Serenity/Content/themes/base/jquery.ui.core.css deleted file mode 100644 index 375d4ad92d..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.core.css +++ /dev/null @@ -1,41 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } diff --git a/src/Serenity/Content/themes/base/jquery.ui.datepicker.css b/src/Serenity/Content/themes/base/jquery.ui.datepicker.css deleted file mode 100644 index 28efc94692..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.datepicker.css +++ /dev/null @@ -1,68 +0,0 @@ -/* - * jQuery UI Datepicker 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/jquery.ui.dialog.css b/src/Serenity/Content/themes/base/jquery.ui.dialog.css deleted file mode 100644 index 1b95d7f4dc..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.dialog.css +++ /dev/null @@ -1,21 +0,0 @@ -/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/src/Serenity/Content/themes/base/jquery.ui.progressbar.css b/src/Serenity/Content/themes/base/jquery.ui.progressbar.css deleted file mode 100644 index e885ced6c8..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.progressbar.css +++ /dev/null @@ -1,11 +0,0 @@ -/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/jquery.ui.resizable.css b/src/Serenity/Content/themes/base/jquery.ui.resizable.css deleted file mode 100644 index dc706797ff..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.resizable.css +++ /dev/null @@ -1,20 +0,0 @@ -/* - * jQuery UI Resizable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/jquery.ui.selectable.css b/src/Serenity/Content/themes/base/jquery.ui.selectable.css deleted file mode 100644 index 2d505fbfe5..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.selectable.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } diff --git a/src/Serenity/Content/themes/base/jquery.ui.slider.css b/src/Serenity/Content/themes/base/jquery.ui.slider.css deleted file mode 100644 index 982f42c589..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.slider.css +++ /dev/null @@ -1,24 +0,0 @@ -/* - * jQuery UI Slider 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; } \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/jquery.ui.tabs.css b/src/Serenity/Content/themes/base/jquery.ui.tabs.css deleted file mode 100644 index 84d27b82c8..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.tabs.css +++ /dev/null @@ -1,18 +0,0 @@ -/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } diff --git a/src/Serenity/Content/themes/base/jquery.ui.theme.css b/src/Serenity/Content/themes/base/jquery.ui.theme.css deleted file mode 100644 index 1f6c8f2df6..0000000000 --- a/src/Serenity/Content/themes/base/jquery.ui.theme.css +++ /dev/null @@ -1,247 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/ - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } -.ui-widget-content a { color: #222222/*{fcContent}*/; } -.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } -.ui-widget-header a { color: #222222/*{fcHeader}*/; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } -.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } - -/* Overlays */ -.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/Serenity/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index 5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 diff --git a/src/Serenity/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png b/src/Serenity/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png deleted file mode 100644 index ac8b229af950c29356abf64a6c4aa894575445f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= diff --git a/src/Serenity/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/Serenity/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index ad3d6346e00f246102f72f2e026ed0491988b394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v diff --git a/src/Serenity/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png b/src/Serenity/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100644 index 42ccba269b6e91bef12ad0fa18be651b5ef0ee68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& diff --git a/src/Serenity/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png b/src/Serenity/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 5a46b47cb16631068aee9e0bd61269fc4e95e5cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse diff --git a/src/Serenity/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/Serenity/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 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 diff --git a/src/Serenity/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png b/src/Serenity/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 45e8928e5284adacea3f9ec07b9b50667d2ac65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/src/Serenity/Content/themes/base/minified/images/ui-icons_454545_256x240.png b/src/Serenity/Content/themes/base/minified/images/ui-icons_454545_256x240.png deleted file mode 100644 index 7ec70d11bfb2f77374dfd00ef61ba0c3647b5a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 zcmd^?`8yPD_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~GmI3`<(O3xvulR&VAkQJHZBho(m=l0{{SA7UpJl008iB z3RqC-Ajq!3AfU8Dx90^_p3}MK zjJzYC+`T(&egFXQ#9Ek{*oVAaa!zrZtmlRFnwQPRJXH<%pkK2*eP`pT=lwD7ifq+4 zBY_rUTa+U|2#&?i7>PVvD?7R4ZfOLPT{e9G~G!Ls3s8JtQE`jMM9wl2V9&Q+K2DHW0M+uQmEr%nYJ^7cK?uIpU-)=wn71ZZ-=@ar0;3^AY5+TI{ z2b(e%t{2PZ^HKF*vu@+Xr&BAc@2BC4_vCgw zw#i=)ea5Vo$glEEVBBg_VPBj!)OO>)f@}#dg6ULOeC>LBHz<;*5Y;YfE0lNxg{N+4 z@lO~ozxpF69qV@VOGnc248Iuag4C1T)P^(hWkpP!{h!JekX}m^Q#b2B0{OYr9M*o< z>EL{WQt@Z+Ea-hxX0}nTSZxnpi^#Kn8Ox8FgIS|hc}KJQ4tm*HO16ui{(O9}1YN)G zjiQt6fGq`Cj+^`zUf?8hk^(T{{cOQGWFP98am}is28A!5%{R#ENv8fCN!j69lMEK(2z?|BY=Je$XD9mB-Kkem*(d-j^9j$2#6r$Dz?s)-TCDCGCs8>6Pv zj{Y+YIeFA@qY22V$)awy@q!9A4rgk5b9TcC;s9Ig^G|6nDP+5=Fzg&?(L=vcCbGd> zfSu~@6!94td+o#d@sid!EIX$rx7*cawe6`dScJ z+$HssdOjE)O#Ybs56vm-FQ$7yuJJD^Zqk%hMaIgAJ<2yb_MFQte_i;62ScT$pjifY zyR_E=rQ+>H)pmlr-Udzg*-!|ssw(D7wJvC+Sf8bb9;;q8#z?0p!!bsd{wy|5pBaMH zE-Ve>i#LLjHRaMLtp%9&(HCng7Sw96jVv!#0k%?F^K7&=T)mnYn)D9(i;4x5^NJTJ zwq~pv;kH@#ejTd*48~(J(r6j34|m`h9fEDj0im)~+%I5XphWymhT;_Zty|Q&zjPg# z-ufAHZ1M*Gccw?Kf|8Pnhtb0`!{N`Bqsa37J+>wC$!e00k+2 zEgzz;rbcWoUB%Jvp8W1}$XD%e3>4y;;OZ1ccT-O#uW6Ys@C}Pa`nZrNKzR(24e%3) z@QI4SE&E!lW`5y14QhbepBG%_XBV-O(%5tj)@9#|;sC-MNev!zGDHk}JdpGC`iJF#8=8-P$Xoku_=Dw%Cv3{U7L>gfRQ?<$ zt`cZ*MP5GQmbmx#!++P@u>0MewRO9GFGS{b^m_fJ-N0?j@EqoFf>$khj+E|@7r3We z&^tR^YZrxKe*d22agXqCO0l44&kqCv{u)T|(lv`~PK@DvE{QI_T zlCH5z*gR!>LO)k67{^R+vWx24U2^2ODXpwT;6y+6+$5m)_*w4WY&#do9dCeE)>p+Y zkdhq($DhmMiaYXey!_kiL26uz($aJ!QT{B^Wu}U$^9e#5)=c+XF9@Ill?ZmMlNgHi zz*9!vDc&uxOo;ZVxb`Q!Sk0*gnfxWzmbZh4(=%CD%qP?0=);n$&zaW_$UKV98axdc zN#AyZ{P)wj?V{P}vM)YY!>6@}^>U+iv$`9>nMTCPjN>z%yF&3yf%>+T@0vh4lC8Xa z6zeo?%=o3}M8{aebLHcO{^1Ar8qiM=Gquf?Jo)q5`-+?sUpg?QXyEUpWSm+n$K-Uy zqkIwHLquru~o(OF)hhz$Y*|X>ZIbswnxRvr~2=rdO zGVuD|xRlpAZE<0!X1F(%Anpl^@V^D3vbM}qxe|NI;TTiZy7(IM;R69RkA>a&6gwYE z2sREzQ_LHmWqB+ogMk(fMaSFeoDq-!HkFB_nXt5+2ncFuk9BQL1I&oB1zZi)YW{6_ z&-Ip1l*OVRA##1ILQS;5R{-K^0wGTiJbVSi@LA^$D$;@J>^G{6@&+%4{b3(sC~LEH ziTv(0b#zxt?YJ0r_~pUZM~mQ(??(n#>&tD%+@nq=Abj5*8R!~Ul1`G~=qFJ4fl|m8 zZDCYgtr`4LcOpgiJYX9qRY5;DcWti~PmS$VB$E-Zt^f4)vLDOe_3XTq5^ylWJ9PKm z!V-8sAOJXnUfuFNIf0R9tK-pNs2hO04zr620}5B(Ok>yB)Of-3sP59qfQNbmA4{w! z2@cB;GbR(~szVrbO%(w=5S!X`o@o@x++wbN_tMPT0Vc)*I;Fgsbf^*g02Di?H zTApwKq3+YwfNsqd3iP%{hyK1iyuVZc@*0tO_3+N0#GFsz>8MjeJ2UJ%L!%hiGYYAt zhH`E+ywA*u{(eJ=ia3h*%k?779rk-K<0VZAPkl;TFUbmei|$fqWO8!_zIvqt$ly$V zrlH46nnpX~X5Yk0iBJl;=WuA4>~X4-f&K0yWf42h&0b30t@NYX$7egQ1Fp!abui-D z6cWCWV&|R1CY@G8(qOmWjWeX3eX7UggZPGimA}soOuQdXe4uZ#2>5zN>qlI09xk}l zE=tNpX1m6*nFr2EQ3xs79!^sCldDJYE$m(qYv3q7>}1R7?iZW7>$~*%zKaC|=$N?M zE$>#+%T&MZC`dW1wUl6Z)JgxkeN920S>e@EK`q~>k| zuYcsgA>F%!@rFciD(>Iwzn8KT;2tb77bUPCmioh+rZBfIiM6f_P34cQ__o1GWqQp3 zVL~~pE5?qODf%iiQQ3f42YF@09tQ*$4v_EKUx;t1KCPCBtgqg@+Tn; zO)a0uky_%jm+WjNB?=~VyH>V#L!*=l*@OSMSVyt_UEH&NA=?V2stHPyKkVN!&jg<#cjros){#ji)dK%)We0 zL_478=HZ8-@xnwsKrWs8)x`MB;(Y`Cmu2c-&SH(vN-F(*e`l?c%+l$|y_AJJhcDGn zwLvN+bu;_sX|1AiePhx@u&%P$hf*xE+O=~D?_(_KGWQ!158YL-y9$*6mmPo;Rp*Dl5lm-mVM2i`h-M@nxv z590_tvMwPD_{l=b$iOm|+|S{D9&P%zeT$GgX6Akl-tfUF>tL@Ld!B&{pN39tH>3V> zqksMAYul+jb7UiouWVGPNsxX7Ueba+9|~dz?d*QM$ng0DZfO0`7fAy?2yMm|cnRzU zhZ&IcwgjH9cuU!w+VStYa{p*)4IgBf|E8)sqMYtB2KH_}SfsFq(c9i(Q6S3UBo%DI k*Kv;w;*%(i9W@fAqs5i2wiq diff --git a/src/Serenity/Content/themes/base/minified/images/ui-icons_888888_256x240.png b/src/Serenity/Content/themes/base/minified/images/ui-icons_888888_256x240.png deleted file mode 100644 index 5ba708c39172a69e069136bd1309c4322c61f571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/src/Serenity/Content/themes/base/minified/jquery-ui.min.css b/src/Serenity/Content/themes/base/minified/jquery-ui.min.css deleted file mode 100644 index 82af48be7f..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery-ui.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ -.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;}.ui-accordion .ui-accordion-li-fix{display:inline;}.ui-accordion .ui-accordion-header-active{border-bottom:0!important;}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em;}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em;}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1;}.ui-accordion .ui-accordion-content-active{display:block;}.ui-autocomplete{position:absolute;cursor:default;}* html .ui-autocomplete{width:1px;}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left;}.ui-menu .ui-menu{margin-top:-3px;}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1;}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px;}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:1.4;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}button.ui-button::-moz-focus-inner{border:0;padding:0;}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em;}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px;}.ui-datepicker .ui-datepicker-prev{left:2px;}.ui-datepicker .ui-datepicker-next{right:2px;}.ui-datepicker .ui-datepicker-prev-hover{left:1px;}.ui-datepicker .ui-datepicker-next-hover{right:1px;}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}.ui-datepicker select.ui-datepicker-month-year{width:100%;}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}.ui-datepicker td{border:0;padding:1px;}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none;}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}.ui-datepicker.ui-datepicker-multi{width:auto;}.ui-datepicker-multi .ui-datepicker-group{float:left;}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em;}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%;}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}.ui-datepicker-row-break{clear:both;width:100%;font-size:0;}.ui-datepicker-rtl{direction:rtl;}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto;}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto;}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}.ui-datepicker-rtl .ui-datepicker-group{float:right;}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.ui-progressbar{height:2em;text-align:left;}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;}.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}.ui-slider-horizontal{height:.8em;}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;}.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}.ui-slider-horizontal .ui-slider-range-min{left:0;}.ui-slider-horizontal .ui-slider-range-max{right:0;}.ui-slider-vertical{width:.8em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em;}.ui-slider-vertical .ui-slider-range{left:0;width:100%;}.ui-slider-vertical .ui-slider-range-min{bottom:0;}.ui-slider-vertical .ui-slider-range-max{top:0;}.ui-tabs{position:relative;padding:.2em;zoom:1;}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0!important;padding:0;white-space:nowrap;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px;}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text;}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer;}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}.ui-tabs .ui-tabs-hide{display:none!important;}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222;}.ui-widget-content a{color:#222;}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold;}.ui-widget-header a{color:#222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-widget :active{outline:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-off{background-position:-96px -144px;}.ui-icon-radio-on{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.accordion.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.accordion.min.css deleted file mode 100644 index a904840929..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.accordion.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Accordion 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;}.ui-accordion .ui-accordion-li-fix{display:inline;}.ui-accordion .ui-accordion-header-active{border-bottom:0!important;}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em;}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em;}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1;}.ui-accordion .ui-accordion-content-active{display:block;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.all.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.all.min.css deleted file mode 100644 index 5212b3d35d..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.all.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming - */ -@import "jquery.ui.base.min.css";@import "jquery.ui.theme.min.css"; \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.autocomplete.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.autocomplete.min.css deleted file mode 100644 index bc105164de..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.autocomplete.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete{position:absolute;cursor:default;}* html .ui-autocomplete{width:1px;}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left;}.ui-menu .ui-menu{margin-top:-3px;}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1;}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.base.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.base.min.css deleted file mode 100644 index 0f9a8a5fa5..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.base.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming - */ -@import url("jquery.ui.core.min.css");@import url("jquery.ui.accordion.min.css");@import url("jquery.ui.autocomplete.min.css");@import url("jquery.ui.button.min.css");@import url("jquery.ui.datepicker.min.css");@import url("jquery.ui.dialog.min.css");@import url("jquery.ui.progressbar.min.css");@import url("jquery.ui.resizable.min.css");@import url("jquery.ui.selectable.min.css");@import url("jquery.ui.slider.min.css");@import url("jquery.ui.tabs.min.css"); \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.button.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.button.min.css deleted file mode 100644 index 75d866d358..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.button.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Button 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:1.4;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}button.ui-button::-moz-focus-inner{border:0;padding:0;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.core.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.core.min.css deleted file mode 100644 index e8bfab70a6..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.core.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ -.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.datepicker.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.datepicker.min.css deleted file mode 100644 index af8120e17c..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.datepicker.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Datepicker 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker{width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em;}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px;}.ui-datepicker .ui-datepicker-prev{left:2px;}.ui-datepicker .ui-datepicker-next{right:2px;}.ui-datepicker .ui-datepicker-prev-hover{left:1px;}.ui-datepicker .ui-datepicker-next-hover{right:1px;}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}.ui-datepicker select.ui-datepicker-month-year{width:100%;}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}.ui-datepicker td{border:0;padding:1px;}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none;}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}.ui-datepicker.ui-datepicker-multi{width:auto;}.ui-datepicker-multi .ui-datepicker-group{float:left;}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em;}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%;}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}.ui-datepicker-row-break{clear:both;width:100%;font-size:0;}.ui-datepicker-rtl{direction:rtl;}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto;}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto;}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}.ui-datepicker-rtl .ui-datepicker-group{float:right;}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.dialog.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.dialog.min.css deleted file mode 100644 index cd1816be79..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.dialog.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.progressbar.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.progressbar.min.css deleted file mode 100644 index b7961777d0..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.progressbar.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar{height:2em;text-align:left;}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.resizable.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.resizable.min.css deleted file mode 100644 index db3cde0bdd..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.resizable.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Resizable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.selectable.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.selectable.min.css deleted file mode 100644 index 6515a8f25a..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.selectable.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.slider.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.slider.min.css deleted file mode 100644 index 13dac73694..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.slider.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Slider 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}.ui-slider-horizontal{height:.8em;}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;}.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}.ui-slider-horizontal .ui-slider-range-min{left:0;}.ui-slider-horizontal .ui-slider-range-max{right:0;}.ui-slider-vertical{width:.8em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em;}.ui-slider-vertical .ui-slider-range{left:0;width:100%;}.ui-slider-vertical .ui-slider-range-min{bottom:0;}.ui-slider-vertical .ui-slider-range-max{top:0;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.tabs.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.tabs.min.css deleted file mode 100644 index 90e42ab851..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.tabs.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs{position:relative;padding:.2em;zoom:1;}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0!important;padding:0;white-space:nowrap;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px;}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text;}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer;}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}.ui-tabs .ui-tabs-hide{display:none!important;} \ No newline at end of file diff --git a/src/Serenity/Content/themes/base/minified/jquery.ui.theme.min.css b/src/Serenity/Content/themes/base/minified/jquery.ui.theme.min.css deleted file mode 100644 index c8bbe2081f..0000000000 --- a/src/Serenity/Content/themes/base/minified/jquery.ui.theme.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/ - */ -.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222;}.ui-widget-content a{color:#222;}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold;}.ui-widget-header a{color:#222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-widget :active{outline:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-off{background-position:-96px -144px;}.ui-icon-radio-on{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;} \ No newline at end of file diff --git a/src/Serenity/Fixtures/DateTimeExtensions.cs b/src/Serenity/Fixtures/DateTimeExtensions.cs deleted file mode 100644 index a4793d0b0f..0000000000 --- a/src/Serenity/Fixtures/DateTimeExtensions.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; - -namespace Serenity.Fixtures -{ - // TODO -- get these into FubuCore already - public static class DateTimeExtensions - { - public static TimeSpan Minutes(this int number) - { - return new TimeSpan(0, 0, number, 0); - } - - public static TimeSpan Hours(this int number) - { - return new TimeSpan(0, number, 0, 0); - } - - public static TimeSpan Days(this int number) - { - return new TimeSpan(number, 0, 0, 0); - } - - public static TimeSpan Seconds(this int number) - { - return new TimeSpan(0, 0, number); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Grammars/CheckValueGrammar.cs b/src/Serenity/Fixtures/Grammars/CheckValueGrammar.cs deleted file mode 100644 index a8944397a6..0000000000 --- a/src/Serenity/Fixtures/Grammars/CheckValueGrammar.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using OpenQA.Selenium; -using Serenity.Fixtures.Handlers; -using StoryTeller.Domain; -using StoryTeller.Engine; - -namespace Serenity.Fixtures.Grammars -{ - public class CheckValueGrammar : SimpleElementGesture - { - private readonly Cell _cell; - - public CheckValueGrammar(GestureConfig config) : base(config) - { - _cell = new Cell(config.CellName, config.CellType){ - IsResult = true - }; - } - - protected override void execute(IWebElement element, IDictionary cellValues, IStep step, ITestContext context) - { - // TODO -- StoryTeller needs to pull this all inside the Cell - if (!cellValues.ContainsKey(_cell.Key)) - { - // already caught as a syntax error - return; - } - - var handler = ElementHandlers.FindHandler(element); - var expectedValue = cellValues[_cell.Key]; - - var matchingHandler = handler as IMatchingHandler ?? new BasicMatchingHandler(handler, context); - - if (matchingHandler.MatchesData(element, expectedValue)) - { - context.IncrementRights(); - } - else - { - context.ResultsFor(step).MarkFailure(_cell.Key); - context.IncrementWrongs(); - } - - context.ResultsFor(step).SetActual(_cell.Key, handler.GetData(CurrentContext, element)); - } - - - public override IList GetCells() - { - return new List{_cell}; - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Grammars/ClickGrammar.cs b/src/Serenity/Fixtures/Grammars/ClickGrammar.cs deleted file mode 100644 index eeb3afb733..0000000000 --- a/src/Serenity/Fixtures/Grammars/ClickGrammar.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections.Generic; -using OpenQA.Selenium; -using StoryTeller.Domain; -using StoryTeller.Engine; - -namespace Serenity.Fixtures.Grammars -{ - public class ClickGrammar : SimpleElementGesture - { - public ClickGrammar(GestureConfig config) : base(config) - { - } - - protected override void execute(IWebElement element, IDictionary cellValues, IStep step, ITestContext context) - { - assertCondition(element.Enabled, DisabledElementMessage); - assertCondition(element.Displayed, HiddenElementMessage); - - element.Click(); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Grammars/EnterValueGrammar.cs b/src/Serenity/Fixtures/Grammars/EnterValueGrammar.cs deleted file mode 100644 index a82b56f3ac..0000000000 --- a/src/Serenity/Fixtures/Grammars/EnterValueGrammar.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Collections.Generic; -using OpenQA.Selenium; -using Serenity.Fixtures.Handlers; -using StoryTeller.Domain; -using StoryTeller.Engine; - -namespace Serenity.Fixtures.Grammars -{ - public class EnterValueGrammar : SimpleElementGesture - { - private readonly Cell _cell; - - public EnterValueGrammar(GestureConfig def) : base(def) - { - _cell = new Cell(def.CellName, def.CellType); - } - - protected override void execute(IWebElement element, IDictionary cellValues, IStep step, ITestContext context) - { - assertCondition(element.Enabled, DisabledElementMessage); - - // TODO -- start a convenience class for extensions on IWebElement - bool isShown = element.Displayed || element.IsHiddenInput(); - - assertCondition(isShown, HiddenElementMessage); - - var data = cellValues[Config.CellName]; - ElementHandlers.FindHandler(element).EnterData(CurrentContext, element, data); - } - - public override IList GetCells() - { - return new List{ - _cell - }; - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Grammars/GestureConfig.cs b/src/Serenity/Fixtures/Grammars/GestureConfig.cs deleted file mode 100644 index e18b436fe1..0000000000 --- a/src/Serenity/Fixtures/Grammars/GestureConfig.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Linq.Expressions; -using FubuCore; -using OpenQA.Selenium; -using FubuCore.Reflection; - -namespace Serenity.Fixtures.Grammars -{ - public class GestureConfig - { - public string CellName = "value"; - public Type CellType = typeof(string); - public string Template; - public string Description; - public Func Finder; - public Action BeforeClick = () => { }; - public Action AfterClick = () => { }; - public string FinderDescription; - public string Label = string.Empty; - public Func FindContext = () => { return null; }; - - public static GestureConfig ByName(Func findContext, string name) - { - return new GestureConfig{ - Finder = () => - { - var context = findContext(); - return context.FindElement(By.Name(name)) ?? context.FindElement(By.Id(name)); - }, - FinderDescription = "Name/Id = '{0}'".ToFormat(name), - CellName = name, - Label = name, - FindContext = findContext - }; - } - - public static GestureConfig ByProperty(Func findContext, Expression> expression) - { - var accessor = expression.ToAccessor(); - return ByName(findContext, accessor.Name); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Grammars/SimpleElementGesture.cs b/src/Serenity/Fixtures/Grammars/SimpleElementGesture.cs deleted file mode 100644 index ab38e107a3..0000000000 --- a/src/Serenity/Fixtures/Grammars/SimpleElementGesture.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System.Collections.Generic; -using FubuCore; -using OpenQA.Selenium; -using StoryTeller; -using StoryTeller.Assertions; -using StoryTeller.Domain; -using StoryTeller.Engine; - -namespace Serenity.Fixtures.Grammars -{ - public abstract class SimpleElementGesture : LineGrammar - { - private readonly GestureConfig _config; - public static readonly string DisabledElementMessage = "Found the element, but it was disabled and could not be manipulated"; - public static readonly string HiddenElementMessage = "Found the element, but it was not visible and should not be manipulated"; - public static readonly string NonexistentElementMessage = "Could not find the element"; - - - public SimpleElementGesture(GestureConfig config) : base(config.Template) - { - _config = config; - } - - public ISearchContext CurrentContext - { - get - { - return _config.FindContext(); - } - } - - public override string Description - { - get { return _config.Description; } - } - - public GestureConfig Config - { - get { return _config; } - } - - public override void Execute(IStep containerStep, ITestContext context) - { - if (_config.BeforeClick != null) _config.BeforeClick(); - - - try - { - var element = _config.Finder(); - - var values = new Dictionary(); - System.Collections.Generic.GenericEnumerableExtensions.Each(GetCells(), - cell => cell.ReadArgument(context, containerStep, o => values.Add(cell.Key, o))); - - execute(element, values, containerStep, context); - - _config.AfterClick(); - } - catch (NoSuchElementException) - { - assertCondition(false, NonexistentElementMessage); - } - } - - protected abstract void execute(IWebElement element, IDictionary cellValues, IStep step, ITestContext context); - - protected void assertCondition(bool condition, string message) - { - if (condition) return; - - if (_config.FinderDescription.IsNotEmpty()) - { - message += "\nElement at --> " + _config.FinderDescription; - } - StoryTellerAssert.Fail(message); - } - - public override IList GetCells() - { - return new List(); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Handlers/BasicMatchingHandler.cs b/src/Serenity/Fixtures/Handlers/BasicMatchingHandler.cs deleted file mode 100644 index 7fe0e9d875..0000000000 --- a/src/Serenity/Fixtures/Handlers/BasicMatchingHandler.cs +++ /dev/null @@ -1,22 +0,0 @@ -using OpenQA.Selenium; -using StoryTeller.Engine; - -namespace Serenity.Fixtures.Handlers -{ - public class BasicMatchingHandler : IMatchingHandler - { - private readonly IElementHandler _inner; - private readonly ITestContext _context; - - public BasicMatchingHandler(IElementHandler inner, ITestContext context) - { - _inner = inner; - _context = context; - } - - public bool MatchesData(IWebElement element, object expected) - { - return _context.Matches(expected, _inner.GetData(null, element)); - } - } -} diff --git a/src/Serenity/Fixtures/Handlers/DefaultElementHandler.cs b/src/Serenity/Fixtures/Handlers/DefaultElementHandler.cs deleted file mode 100644 index 9a4bdcd0de..0000000000 --- a/src/Serenity/Fixtures/Handlers/DefaultElementHandler.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using OpenQA.Selenium; - -namespace Serenity.Fixtures.Handlers -{ - public class DefaultElementHandler : IElementHandler - { - public bool Matches(IWebElement element) - { - return true; - } - - public void EnterData(ISearchContext context, IWebElement element, object data) - { - - throw new NotImplementedException(); - } - - public string GetData(ISearchContext context, IWebElement element) - { - return element.Text; - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Handlers/ElementHandlers.cs b/src/Serenity/Fixtures/Handlers/ElementHandlers.cs deleted file mode 100644 index 872ae174f7..0000000000 --- a/src/Serenity/Fixtures/Handlers/ElementHandlers.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using OpenQA.Selenium; - -namespace Serenity.Fixtures.Handlers -{ - public static class ElementHandlers - { - private static readonly IList _handlers = new List(); - private static readonly IList _defaultHandlers = new List{new SelectElementHandler(), new TextboxElementHandler(), new DefaultElementHandler()}; - - public static IList Handlers - { - get { return _handlers; } - } - - public static IElementHandler FindHandler(IWebElement element) - { - return _handlers.Union(_defaultHandlers).First(x => x.Matches(element)); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Handlers/IElementHandler.cs b/src/Serenity/Fixtures/Handlers/IElementHandler.cs deleted file mode 100644 index dcc74f36b7..0000000000 --- a/src/Serenity/Fixtures/Handlers/IElementHandler.cs +++ /dev/null @@ -1,11 +0,0 @@ -using OpenQA.Selenium; - -namespace Serenity.Fixtures.Handlers -{ - public interface IElementHandler - { - bool Matches(IWebElement element); - void EnterData(ISearchContext context, IWebElement element, object data); - string GetData(ISearchContext context, IWebElement element); - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Handlers/IMatchingHandler.cs b/src/Serenity/Fixtures/Handlers/IMatchingHandler.cs deleted file mode 100644 index d971617b1d..0000000000 --- a/src/Serenity/Fixtures/Handlers/IMatchingHandler.cs +++ /dev/null @@ -1,9 +0,0 @@ -using OpenQA.Selenium; - -namespace Serenity.Fixtures.Handlers -{ - public interface IMatchingHandler - { - bool MatchesData(IWebElement element, object expected); - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Handlers/SelectElementHandler.cs b/src/Serenity/Fixtures/Handlers/SelectElementHandler.cs deleted file mode 100644 index f2bfcc8f99..0000000000 --- a/src/Serenity/Fixtures/Handlers/SelectElementHandler.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections.ObjectModel; -using OpenQA.Selenium; -using FubuCore; -using StoryTeller.Assertions; -using System.Linq; -using System.Collections.Generic; - -namespace Serenity.Fixtures.Handlers -{ - public class SelectElementHandler : IElementHandler, IMatchingHandler - { - public bool Matches(IWebElement element) - { - return element.TagName.ToLower() == "select"; - } - - public void EnterData(ISearchContext context, IWebElement element, object data) - { - var options = findOptions(element); - foreach (var option in options) - { - if (option.Text == data.ToString()) - { - option.Click(); - return; - } - } - - foreach (var option in options) - { - if (option.GetAttribute("value") == data.ToString()) - { - option.Click(); - return; - } - } - - var message = "Cannot find the desired option\nThe available options are\nDisplay/Key\n"; - foreach (var option in options) - { - message += "\n" + "{0}/{1}".ToFormat(option.Text, option.GetAttribute("value")); - } - - StoryTellerAssert.Fail(message); - - } - - private static IEnumerable findOptions(IWebElement element) - { - return element.FindElements(By.TagName("option")); - } - - public string GetData(ISearchContext context, IWebElement element) - { - var selected = findSelected(element); - - if (selected == null) return "Nothing"; - - var value = selected.GetAttribute("value"); - return value.IsEmpty() ? selected.Text : "{0}={1}".ToFormat(selected.Text, value); - } - - private IWebElement findSelected(IWebElement element) - { - var options = findOptions(element); - return options.FirstOrDefault(x => x.GetAttribute("selected").IsNotEmpty()); - } - - public bool MatchesData(IWebElement element, object expected) - { - var expectedValue = expected.ToString(); - var selected = findSelected(element); - - if (selected == null) return false; - - - if (selected.GetAttribute("value") == expectedValue) return true; - - if (findOptions(element).Select(x => x.GetAttribute("value")).Contains(expectedValue)) - { - return false; - } - - return selected.Text == expectedValue; - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/Handlers/TextboxElementHandler.cs b/src/Serenity/Fixtures/Handlers/TextboxElementHandler.cs deleted file mode 100644 index 175e25eca0..0000000000 --- a/src/Serenity/Fixtures/Handlers/TextboxElementHandler.cs +++ /dev/null @@ -1,29 +0,0 @@ -using FubuCore; -using OpenQA.Selenium; - -namespace Serenity.Fixtures.Handlers -{ - public class TextboxElementHandler : IElementHandler - { - public bool Matches(IWebElement element) - { - // TODO --- Change to psuedo CSS class? Less repeated logic - return element.TagName.ToLower() == "input" && element.GetAttribute("type").ToLower() == "text"; - } - - public void EnterData(ISearchContext context, IWebElement element, object data) - { - while (element.GetAttribute("value").IsNotEmpty()) - { - element.SendKeys(Keys.Backspace); - } - - element.SendKeys(data as string ?? string.Empty); - } - - public string GetData(ISearchContext context, IWebElement element) - { - return element.GetAttribute("value"); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/ScreenFixture.cs b/src/Serenity/Fixtures/ScreenFixture.cs deleted file mode 100644 index b08ec322b0..0000000000 --- a/src/Serenity/Fixtures/ScreenFixture.cs +++ /dev/null @@ -1,185 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using FubuCore; -using FubuCore.Reflection; -using FubuLocalization; -using OpenQA.Selenium; -using Serenity.Endpoints; -using Serenity.Fixtures.Grammars; -using StoryTeller; -using StoryTeller.Assertions; -using StoryTeller.Engine; - -namespace Serenity.Fixtures -{ - public class ScreenFixture : Fixture - { - private readonly Stack _searchContexts = new Stack(); - private IApplicationUnderTest _application; - - protected ISearchContext SearchContext - { - get - { - if (_searchContexts.Count == 0) - { - _searchContexts.Push(_application.Driver); - } - - return _searchContexts.Peek(); - } - } - - protected IApplicationUnderTest Application - { - get { return _application; } - } - - protected NavigationDriver Navigation - { - get { return _application.Navigation; } - } - - protected EndpointDriver Endpoints - { - get { return _application.Endpoints(); } - } - - protected IWebDriver Driver - { - get { return _application.Driver; } - } - - public override sealed void SetUp(ITestContext context) - { - // TODO -- later, make this thing be able to swap up the application under test - _application = context.Retrieve(); - - beforeRunning(); - } - - protected virtual void beforeRunning() - { - } - - protected IGrammar Click(By selector = null, string id = null, string css = null, string name = null, - string label = null, string template = null) - { - var by = selector ?? id.ById() ?? css.ByCss() ?? name.ByName(); - - if (by == null) - throw new InvalidOperationException("Must specify either the selector, css, or name property"); - - label = label ?? by.ToString().Replace("By.", ""); - - var config = new GestureConfig{ - Template = template ?? "Click " + label, - Description = "Click " + label, - Finder = () => SearchContext.FindElement(by), - FinderDescription = by.ToString() - }; - - return new ClickGrammar(config); - } - - protected void PushElementContext(ISearchContext context) - { - _searchContexts.Push(context); - } - - protected void PushElementContext(By selector) - { - var element = SearchContext.FindElement(selector); - StoryTellerAssert.Fail(element == null, () => "Unable to find element with " + selector); - - PushElementContext(element); - } - - protected void waitForElement(By elementSearch, int millisecondPolling = 500, int timeoutInMilliseconds = 5000) - { - Wait.Until(() => SearchContext.FindElement(elementSearch) != null, millisecondPolling, timeoutInMilliseconds); - } - - protected void PopElementContext() - { - _searchContexts.Pop(); - } - } - - public class ScreenFixture : ScreenFixture - { - private GestureConfig getGesture(Expression> expression, string label = null, string key = null) - { - // TODO -- later on, use the naming convention from fubu instead of pretending - // that this rule is always true - var config = GestureForProperty(expression); - if (FubuCore.StringExtensions.IsNotEmpty(key)) - { - config.CellName = key; - } - - config.Label = label ?? LocalizationManager.GetHeader(expression); - - return config; - } - - - protected IGrammar EnterScreenValue(Expression> expression, string label = null, - string key = null) - { - var config = getGesture(expression, label, key); - - config.Template = "Enter {" + config.CellName + "} for " + config.Label; - config.Description = "Enter data for property " + FubuCore.Reflection.ReflectionExtensions.ToAccessor(expression).Name; - - return new EnterValueGrammar(config); - } - - protected IGrammar CheckScreenValue(Expression> expression, string label = null, - string key = null) - { - var config = getGesture(expression, label, key); - - config.Template = "The text of " + config.Label + " should be {" + config.CellName + "}"; - config.Description = "Check data for property " + FubuCore.Reflection.ReflectionExtensions.ToAccessor(expression).Name; - - return new CheckValueGrammar(config); - } - - - protected GestureConfig GestureForProperty(Expression> expression) - { - return GestureConfig.ByProperty(() => SearchContext, expression); - } - - protected void EditableElement(Expression> expression, string label = null) - { - var accessor = FubuCore.Reflection.ReflectionExtensions.ToAccessor(expression); - var name = accessor.Name; - - this["Check" + name] = CheckScreenValue(expression, label); - this["Enter" + name] = EnterScreenValue(expression, label); - } - - protected void EditableElementsForAllImmediateProperties() - { - System.Collections.Generic.GenericEnumerableExtensions.Each( - System.Linq.Enumerable.Where( - typeof (T) - .GetProperties(BindingFlags.Public | BindingFlags.Instance), - x => x.CanRead && x.CanWrite), - prop => - { - var accessor = new SingleProperty(prop); - var expression = accessor.ToExpression(); - - EditableElement(expression); - }); - } - - //public void EditableElements(params) - } -} \ No newline at end of file diff --git a/src/Serenity/Fixtures/WebDriverExtensions.cs b/src/Serenity/Fixtures/WebDriverExtensions.cs deleted file mode 100644 index e046abca46..0000000000 --- a/src/Serenity/Fixtures/WebDriverExtensions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using FubuCore; -using OpenQA.Selenium; - -namespace Serenity.Fixtures -{ - public static class WebDriverExtensions - { - public static By ByCss(this string css) - { - return css.IsEmpty() ? null : By.CssSelector(css); - } - - public static By ByName(this string name) - { - return name.IsEmpty() ? null : By.Name(name); - } - - public static By ById(this string id) - { - return id.IsEmpty() ? null : By.Id(id); - } - - } -} \ No newline at end of file diff --git a/src/Serenity/IApplicationUnderTest.cs b/src/Serenity/IApplicationUnderTest.cs deleted file mode 100644 index f5864e8f37..0000000000 --- a/src/Serenity/IApplicationUnderTest.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using FubuMVC.Core.Urls; -using OpenQA.Selenium; -using Serenity.Endpoints; - -namespace Serenity -{ - public interface IApplicationUnderTest - { - string Name { get; } - IUrlRegistry Urls { get; } - IWebDriver Driver { get; } - - string RootUrl { get; } - - T GetInstance(); - object GetInstance(Type type); - IEnumerable GetAll(); - - // TODO -- don't care for this at all. Needs to be - // encapsulated into ApplicationUnderTest itself - void StartWebDriver(); - void StopWebDriver(); - bool IsDriverInUse { get; } - - void Ping(); - - void Teardown(); - - NavigationDriver Navigation { get;} - EndpointDriver Endpoints(); - - } -} \ No newline at end of file diff --git a/src/Serenity/InProcessApplicationUnderTest.cs b/src/Serenity/InProcessApplicationUnderTest.cs deleted file mode 100644 index f78d14c4dc..0000000000 --- a/src/Serenity/InProcessApplicationUnderTest.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading; -using FubuKayak; -using FubuMVC.Core; -using FubuMVC.Core.Http; -using FubuMVC.Core.Packaging; -using FubuMVC.Core.Registration.ObjectGraph; -using FubuMVC.Core.Urls; - -using OpenQA.Selenium; -using FubuCore; -using Serenity.Endpoints; - -namespace Serenity -{ - public class InProcessApplicationUnderTest : IApplicationUnderTest where TSystem : IApplicationSource, new() - { - private readonly ApplicationSettings _settings; - private readonly Lazy _runtime; - private readonly Lazy _urls; - private readonly IList _disposals = new List(); - private Listener _listener; - private Thread _listeningThread; - private Lazy _browser; - - public InProcessApplicationUnderTest(ApplicationSettings settings) - { - _settings = settings; - - _runtime = new Lazy(() => - { - FubuMvcPackageFacility.PhysicalRootPath = settings.GetApplicationFolder(); - - // TODO -- add some diagnostics here - var runtime = new TSystem().BuildApplication().Bootstrap(); - runtime.Facility.Register(typeof(ICurrentHttpRequest), ObjectDef.ForValue(new StubCurrentHttpRequest() - { - ApplicationRoot = "http://localhost:" + settings.Port - })); - - return runtime; - }); - - _urls = new Lazy(() => _runtime.Value.Facility.Get()); - - StartWebDriver(); - } - - private ManualResetEvent startListener(ApplicationSettings settings, FubuRuntime runtime) - { - var reset = new ManualResetEvent(false); - - _listeningThread = new Thread(o => - { - _listener = new Listener(settings.Port); - _listener.Start(runtime, () => reset.Set()); - }); - - _listeningThread.Name = "Serenity:Kayak:Thread"; - _listeningThread.Start(); - - return reset; - } - - - - - public string Name - { - get { return typeof(TSystem).Name; } - } - - public IUrlRegistry Urls - { - get { return _urls.Value; } - } - - public IWebDriver Driver - { - get { return _browser.Value; } - } - - public bool IsDriverInUse - { - get { return _browser != null && _browser.IsValueCreated; } - } - - public string RootUrl - { - get { return _settings.RootUrl; } - } - - public T GetInstance() - { - return _runtime.Value.Facility.Get(); - } - - public object GetInstance(Type type) - { - return _runtime.Value.Facility.Get().GetInstance(type); - } - - public IEnumerable GetAll() - { - return _runtime.Value.Facility.GetAll(); - } - - public void StartWebDriver() - { - _browser = new Lazy(() => - { - var reset = startListener(_settings, _runtime.Value); - - _disposals.Add(() => - { - _listener.Stop(); - _listener.SafeDispose(); - - _listeningThread.Join(3000); - }); - - reset.WaitOne(); - - var browser = WebDriverSettings.DriverBuilder()(); - _disposals.Add(browser.Close); - - return browser; - }); - } - - public void StopWebDriver() - { - _disposals.Each(x => x()); - } - - public void Ping() - { - // NO-OP - } - - public void Teardown() - { - StopWebDriver(); - } - - public NavigationDriver Navigation - { - get { return new NavigationDriver(this); } - } - - public EndpointDriver Endpoints() - { - return new EndpointDriver(Urls); - } - } -} \ No newline at end of file diff --git a/src/Serenity/InProcessSerenitySystem.cs b/src/Serenity/InProcessSerenitySystem.cs deleted file mode 100644 index d4ce0a9f86..0000000000 --- a/src/Serenity/InProcessSerenitySystem.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using FubuCore; -using FubuMVC.Core; -using FubuMVC.OwinHost; -using StoryTeller.Engine; - -namespace Serenity -{ - public class InProcessSerenitySystem : BasicSystem where TSystem : IApplicationSource, new() - { - private readonly Lazy _application; - - public InProcessSerenitySystem() - { - _application = new Lazy(() => - { - var settings = findApplicationSettings(); - settings.Port = PortFinder.FindPort(settings.Port); - settings.RootUrl = "http://localhost:" + settings.Port; - - return new InProcessApplicationUnderTest(settings); - }); - } - - protected virtual ApplicationSettings findApplicationSettings() - { - return ApplicationSettings.ReadFor(); - } - - public override void RegisterServices(ITestContext context) - { - if (_application.IsValueCreated) - { - context.Store(_application.Value); - context.Store(new NavigationDriver(_application.Value)); - } - } - - public override sealed void Setup() - { - - beforeExecutingTest(_application.Value); - } - - - protected virtual void beforeExecutingTest(IApplicationUnderTest application) - { - } - - public T Get() - { - return _application.Value.GetInstance(); - } - - public override object Get(Type type) - { - if (type == typeof (IApplicationUnderTest)) - { - return _application; - } - - return _application.Value.GetInstance(type); - } - - public override sealed void TeardownEnvironment() - { - if (_application.IsValueCreated) _application.Value.Teardown(); - - shutDownSystem(); - } - - protected virtual void shutDownSystem() - { - } - - - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/ConfigFileLoader.cs b/src/Serenity/Jasmine/ConfigFileLoader.cs deleted file mode 100644 index 124d447dcf..0000000000 --- a/src/Serenity/Jasmine/ConfigFileLoader.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.IO; -using FubuCore; -using System.Linq; -using FubuCore.CommandLine; - -namespace Serenity.Jasmine -{ - - - public class ConfigFileLoader - { - private readonly string _file; - private readonly ISerenityJasmineApplication _application; - - public ConfigFileLoader(string file, ISerenityJasmineApplication application) - { - _file = file.ToFullPath(); - _application = application; - } - - public void ReadFile() - { - Console.WriteLine("Reading directives from " + _file); - - - var fileSystem = new FileSystem(); - if (!fileSystem.FileExists(_file)) - { - throw new CommandFailureException("Designated serenity/jasmine file at {0} does not exist".ToFormat(_file)); - } - - fileSystem.ReadTextFile(_file, ReadText); - } - - public void ReadText(string text) - { - if (text.IsEmpty()) return; - - if (text.StartsWith("include:")) - { - var folder = text.Split(':').Last(); - if (!Path.IsPathRooted(folder)) - { - folder = _file.ParentDirectory().AppendPath(folder); - } - - Console.WriteLine("Adding content from folder " + folder); - _application.AddContentFolder(folder); - } - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/Header.htm b/src/Serenity/Jasmine/Header.htm deleted file mode 100644 index 4c009516df..0000000000 --- a/src/Serenity/Jasmine/Header.htm +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/Serenity/Jasmine/ISpecNode.cs b/src/Serenity/Jasmine/ISpecNode.cs deleted file mode 100644 index 169792962c..0000000000 --- a/src/Serenity/Jasmine/ISpecNode.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; - -namespace Serenity.Jasmine -{ - public interface ISpecNode - { - SpecPath Path(); - IEnumerable AllSpecifications { get; } - IEnumerable AllNodes { get; } - string FullName { get; } - - - IEnumerable ImmediateChildren - { - get; - } - - string TreeClass { get; } - - ISpecNode Parent(); - - void AcceptVisitor(ISpecVisitor visitor); - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/ISpecVisitor.cs b/src/Serenity/Jasmine/ISpecVisitor.cs deleted file mode 100644 index 65a76b750a..0000000000 --- a/src/Serenity/Jasmine/ISpecVisitor.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Serenity.Jasmine -{ - public interface ISpecVisitor - { - void Specification(Specification spec); - void Folder(SpecificationFolder folder); - void Graph(SpecificationGraph graph); - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/JasmineCommand.cs b/src/Serenity/Jasmine/JasmineCommand.cs deleted file mode 100644 index a694475acf..0000000000 --- a/src/Serenity/Jasmine/JasmineCommand.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using FubuCore; -using FubuCore.CommandLine; -using System.Linq; -using System.Collections.Generic; - -namespace Serenity.Jasmine -{ - [CommandDescription("Opens up a web browser application to browse and execute Jasmine specifications", - Name = "jasmine")] - [Usage("default", "runs the jasmine tests")] - [Usage("add_folders", "adds new folders to a Serenity/Jasmine project")] - public class JasmineCommand : FubuCommand - { - public override bool Execute(JasmineInput input) - { - if (input.Mode == JasmineMode.add_folders) - { - new FileSystem().AlterFlatFile(input.SerenityFile, list => - { - var includes = input.Folders.Select(folder => "include:" + folder); - list.Fill(includes); - }); - - return true; - } - - // TODO -- tighten up the defensive programming against bad input - var runner = new JasmineRunner(input); - - if (input.Mode == JasmineMode.interactive) - { - runner.OpenInteractive(); - } - - if (input.Mode == JasmineMode.run) - { - if (!runner.RunAllSpecs()) - { - throw new ApplicationException("Jasmine specs failed!"); - } - } - - - - return true; - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/JasmineInput.cs b/src/Serenity/Jasmine/JasmineInput.cs deleted file mode 100644 index 21d4ab32f1..0000000000 --- a/src/Serenity/Jasmine/JasmineInput.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using FubuCore.CommandLine; -using OpenQA.Selenium; - - -namespace Serenity.Jasmine -{ - public enum JasmineMode - { - interactive, - run, - add_folders - - } - - public class JasmineInput - { - public JasmineInput() - { - PortFlag = 5500; - BrowserFlag = BrowserType.Chrome; - - } - - [Description("Chooses whether to open the browser application or just run all the specs in CLI mode")] - [RequiredUsage("default", "add_folders")] - public JasmineMode Mode { get; set; } - - [Description("Name of the file containing directives for where the specifications are located")] - [RequiredUsage("default", "add_folders")] - public string SerenityFile { get; set; } - - [Description("Optionally overrides which port number Kayak uses for the web application. Default is 5500")] - public int PortFlag { get; set; } - - [Description("Choose which browser to use for the testing")] - public BrowserType BrowserFlag { get; set; } - - [Description("Adds folders to a Jasmine project in the add_folders. \nFolders can be either absolute paths or relative to the jasmine text file")] - [RequiredUsage("add_folders")] - public IEnumerable Folders { get; set; } - - public Func GetBrowserBuilder() - { - return WebDriverSettings.DriverBuilder(BrowserFlag); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/JasminePages.cs b/src/Serenity/Jasmine/JasminePages.cs deleted file mode 100644 index 8521a8eb46..0000000000 --- a/src/Serenity/Jasmine/JasminePages.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using FubuCore; -using FubuMVC.Core.UI; -using HtmlTags; - -namespace Serenity.Jasmine -{ - public class JasminePages - { - private const string Title = "Serenity Jasmine Runner"; - private static readonly string _header; - private readonly SpecHierarchyBuilder _builder; - private readonly FubuHtmlDocument _document; - private readonly SpecAssetRequirements _requirements; - private readonly SpecificationGraph _specifications; - - static JasminePages() - { - _header = - Assembly.GetExecutingAssembly().GetManifestResourceStream(typeof (JasminePages), "Header.htm"). - ReadAllText(); - } - - public JasminePages(SpecificationGraph specifications, SpecHierarchyBuilder builder, - SpecAssetRequirements requirements, FubuHtmlDocument document) - { - _specifications = specifications; - _builder = builder; - _requirements = requirements; - _document = document; - - - _document.Body.Append(new HtmlTag("div").Text(_header).Encoded(false)); - } - - public HtmlDocument Home() - { - _document.Title = Title; - - //_requirements.WriteBasicAssetsInto(_document); - - var tag = _builder.CompleteHierarchy(); - _document.Add(tag); - - return _document; - } - - public HtmlDocument AllSpecs() - { - _document.Title = Title + ": All Specifications"; - - writeNode(_specifications); - - return _document; - } - - public HtmlDocument Spec(SpecPath path) - { - _document.Title = Title + ": " + path.Parts.Join("/"); - - var node = _specifications.FindSpecNode(path); - - writeNode(node); - - return _document; - } - - private void writeNode(ISpecNode node) - { - var tag = _builder.BuildInPlaceHierarchyFor(node); - - - _document.Add(tag); - _document.Add("hr"); - - _requirements.WriteAssetsInto(_document, node.AllSpecifications); - - var fileSystem = new FileSystem(); - node.AllSpecifications.SelectMany(x => x.HtmlFiles).Each(file => - { - var html = fileSystem.ReadStringFromFile(file.FullPath); - _document.Add("div").Text(html).Encoded(false); - }); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/JasmineRunner.cs b/src/Serenity/Jasmine/JasmineRunner.cs deleted file mode 100644 index 2ce6e4acb3..0000000000 --- a/src/Serenity/Jasmine/JasmineRunner.cs +++ /dev/null @@ -1,241 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading; -using Bottles; -using FubuCore; -using FubuKayak; -using FubuMVC.Core; -using FubuMVC.Core.Assets.Caching; -using OpenQA.Selenium; - -namespace Serenity.Jasmine -{ - public class JasmineRunner : ISpecFileListener - { - private readonly JasmineInput _input; - private readonly ManualResetEvent _reset = new ManualResetEvent(false); - private SerenityJasmineApplication _application; - private ApplicationUnderTest _applicationUnderTest; - private NavigationDriver _driver; - private FubuKayakApplication _kayak; - private Thread _kayakLoop; - private AssetFileWatcher _watcher; - - - public JasmineRunner(JasmineInput input) - { - _input = input; - } - - void ISpecFileListener.Changed() - { - _applicationUnderTest.Driver.Navigate().Refresh(); - } - - void ISpecFileListener.Deleted() - { - _kayak.Recycle(watchAssetFiles); - // TODO -- make a helper method for this - _applicationUnderTest.Driver.Navigate().GoToUrl(_applicationUnderTest.RootUrl); - } - - void ISpecFileListener.Added() - { - Recycle(); - } - - public void Recycle() - { - _kayak.Recycle(watchAssetFiles); - _applicationUnderTest.Driver.Navigate().Refresh(); - } - - public void OpenInteractive() - { - buildApplication(); - - var threadStart = new ThreadStart(run); - _kayakLoop = new Thread(threadStart); - _kayakLoop.Start(); - - - // TODO -- make a helper method for this - _driver.NavigateToHome(); - - _reset.WaitOne(); - } - - public bool RunAllSpecs() - { - var title = "Running Jasmine specs for project at " + _input.SerenityFile; - Console.WriteLine(title); - var line = "".PadRight(title.Length, '-'); - - Console.WriteLine(line); - - buildApplication(); - var returnValue = true; - - _kayak = new FubuKayakApplication(_application); - _kayak.RunApplication(_input.PortFlag, runtime => - { - _driver.NavigateTo(x => x.AllSpecs()); - - var browser = _applicationUnderTest.Driver; - Wait.Until(() => browser.FindElement(By.ClassName("finished-at")).Text.IsNotEmpty()); - var failures = browser.FindElements(By.CssSelector("div.suite.failed")); - - - if (failures.Any()) - { - returnValue = false; - - Console.WriteLine(line); - writeFailures(failures); - } - - Console.WriteLine(); - Console.WriteLine(line); - writeTotals(browser); - - browser.Quit(); - browser.SafeDispose(); - _kayak.Stop(); - }); - - - return returnValue; - } - - private static void writeTotals(IWebDriver browser) - { - var totals = browser.FindElement(By.CssSelector("div.jasmine_reporter a.description")).Text; - - Console.WriteLine(totals); - } - - - private static void writeFailures(IEnumerable failures) - { - failures.Each(suite => - { - Console.WriteLine(suite.FindElement(By.CssSelector("a.description")).Text); - - suite.FindElements(By.CssSelector("div.spec.failed a.description")) - .Each(spec => Console.WriteLine(" " + spec.Text)); - }); - } - - private void run() - { - _kayak = new FubuKayakApplication(_application); - _kayak.RunApplication(_input.PortFlag, watchAssetFiles); - - _reset.Set(); - } - - private void watchAssetFiles(FubuRuntime runtime) - { - if (_watcher == null) - { - _watcher = runtime.Facility.Get(); - _watcher.StartWatching(this); - } - } - - - private void buildApplication() - { - _application = new SerenityJasmineApplication(); - var configLoader = new ConfigFileLoader(_input.SerenityFile, _application); - configLoader.ReadFile(); - - - var applicationSettings = new ApplicationSettings{ - RootUrl = "http://localhost:" + _input.PortFlag - }; - - var browserBuilder = _input.GetBrowserBuilder(); - - _applicationUnderTest = new ApplicationUnderTest(_application, applicationSettings, browserBuilder); - - _driver = new NavigationDriver(_applicationUnderTest); - } - } - - public class AssetFileWatcher - { - private readonly IAssetContentCache _cache; - private readonly IFileSystem _fileSystem = new FileSystem(); - private readonly IList _watchers = new List(); - - public AssetFileWatcher(IAssetContentCache cache) - { - _cache = cache; - } - - public void StartWatching(ISpecFileListener listener) - { - PackageRegistry.Packages.Each(pak => - { - pak.ForFolder(BottleFiles.WebContentFolder, dir => - { - var contentFolder = dir.AppendPath("content"); - if (_fileSystem.DirectoryExists(contentFolder)) - { - addContentFolder(contentFolder, listener); - } - - var watcher = new FileSystemWatcher(dir, "*.config"); - watcher.Changed += (x, y) => listener.Recycle(); - watcher.Deleted += (x, y) => listener.Recycle(); - watcher.EnableRaisingEvents = true; - watcher.IncludeSubdirectories = true; - - _watchers.Add(watcher); - }); - }); - } - - private void addContentFolder(string dir, ISpecFileListener listener) - { - var watcher = new FileSystemWatcher(dir); - watcher.Changed += (x, file) => - { - Console.WriteLine("Detected a change to " + file.FullPath); - - _cache.FlushAll(); - listener.Changed(); - }; - - watcher.Created += (x, y) => - { - Console.WriteLine("Detected a new file at " + y.FullPath); - listener.Added(); - }; - watcher.Deleted += (x, y) => - { - Console.WriteLine("Detected a file deletion at " + y.FullPath); - listener.Deleted(); - }; - - watcher.EnableRaisingEvents = true; - watcher.IncludeSubdirectories = true; - } - - public void StopWatching() - { - _watchers.Each(x => x.SafeDispose()); - } - } - - public interface ISpecFileListener - { - void Changed(); - void Deleted(); - void Added(); - void Recycle(); - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/NulloCombinationDeterminationService.cs b/src/Serenity/Jasmine/NulloCombinationDeterminationService.cs deleted file mode 100644 index 3f2875f591..0000000000 --- a/src/Serenity/Jasmine/NulloCombinationDeterminationService.cs +++ /dev/null @@ -1,12 +0,0 @@ -using FubuMVC.Core.Assets.Combination; - -namespace Serenity.Jasmine -{ - public class NulloCombinationDeterminationService : ICombinationDeterminationService - { - public void TryToReplaceWithCombinations(AssetTagPlan plan) - { - // That's right, do nothing - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/SerenityJasmineApplication.cs b/src/Serenity/Jasmine/SerenityJasmineApplication.cs deleted file mode 100644 index b8cf6e5aff..0000000000 --- a/src/Serenity/Jasmine/SerenityJasmineApplication.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Bottles; -using Bottles.Diagnostics; -using FubuMVC.Core; -using FubuMVC.Core.Packaging; -using FubuMVC.StructureMap; -using StructureMap; - -namespace Serenity.Jasmine -{ - public interface ISerenityJasmineApplication - { - void AddContentFolder(string contentFolder); - } - - public class SerenityJasmineApplication : IApplicationSource, IPackageLoader, ISerenityJasmineApplication - { - private readonly IList _contentFolders = new List(); - - public FubuApplication BuildApplication() - { - return FubuApplication - .For() - .StructureMap(new Container()) - .Packages(x => - { - x.Assembly(GetType().Assembly); - x.Loader(this); - }); - } - - public string Name - { - get { return "Serenity Jasmine Runner"; } - } - - public IEnumerable Load(IPackageLog log) - { - return _contentFolders.Select(x => - { - log.Trace("Loading content package from " + x); - return new ContentOnlyPackageInfo(x, Path.GetFileName(x)); - }); - } - - public void AddContentFolder(string contentFolder) - { - _contentFolders.Add(contentFolder); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/SerenityJasmineRegistry.cs b/src/Serenity/Jasmine/SerenityJasmineRegistry.cs deleted file mode 100644 index 760a0b4f66..0000000000 --- a/src/Serenity/Jasmine/SerenityJasmineRegistry.cs +++ /dev/null @@ -1,24 +0,0 @@ -using FubuMVC.Core; -using FubuMVC.Core.Assets.Combination; -using FubuMVC.Core.Http; -using FubuMVC.OwinHost; - -namespace Serenity.Jasmine -{ - public class SerenityJasmineRegistry : FubuRegistry - { - public SerenityJasmineRegistry() - { - IncludeDiagnostics(true); - - Actions.IncludeType(); - Routes.HomeIs(x => x.Home()); - - Services(x => - { - x.ReplaceService(); - x.ReplaceService(); - }); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/SpecAssetRequirements.cs b/src/Serenity/Jasmine/SpecAssetRequirements.cs deleted file mode 100644 index 82baf66e72..0000000000 --- a/src/Serenity/Jasmine/SpecAssetRequirements.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using FubuMVC.Core.Assets; -using FubuMVC.Core.UI; - -namespace Serenity.Jasmine -{ - public class SpecAssetRequirements - { - private readonly IAssetRequirements _requirements; - - public SpecAssetRequirements(IAssetRequirements requirements) - { - _requirements = requirements; - } - - public void WriteAssetsInto(FubuHtmlDocument document, IEnumerable specs) - { - RegisterRequirements(specs); - document.WriteAssetsToHead(); - - RegisterSpecifications(specs); - document.WriteAssetsToHead(); - } - - public void RegisterRequirements(IEnumerable specs) - { - _requirements.Require("core"); - _requirements.Require("jasmine"); - - specs.SelectMany(x => x.Libraries).Each(lib => _requirements.Require(lib.Name)); - } - - public void RegisterSpecifications(IEnumerable specs) - { - specs.Each(spec => _requirements.Require(spec.File.Name)); - } - - public void WriteBasicAssetsInto(FubuHtmlDocument document) - { - _requirements.Require("jquery", "jquery.treeview.js", "jasmine.treeview.css"); - document.WriteAssetsToHead(); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/SpecHierarchyBuilder.cs b/src/Serenity/Jasmine/SpecHierarchyBuilder.cs deleted file mode 100644 index 815665f446..0000000000 --- a/src/Serenity/Jasmine/SpecHierarchyBuilder.cs +++ /dev/null @@ -1,164 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using FubuMVC.Core.Urls; -using HtmlTags; - -namespace Serenity.Jasmine -{ - public class SpecHierarchyBuilder - { - private readonly SpecificationGraph _graph; - private readonly IUrlRegistry _urls; - - public SpecHierarchyBuilder(SpecificationGraph graph, IUrlRegistry urls) - { - _graph = graph; - _urls = urls; - } - - public HtmlTag TopTag(HtmlTag topChild) - { - if (topChild.TagName() != "ul") - { - throw new ArgumentOutOfRangeException("Only ul tags are valid here: \n" + topChild.ToString()); - } - - var topUrl = _urls.UrlFor(x => x.AllSpecs(), null); - return new HtmlTag("ul", tag => - { - tag.Id("all-specs-node").AddClass("filetree"); - - var link = new LinkTag("All Specs", topUrl, "all-specs"); - var li = tag.Add("li"); - li.Add("span").AddClass("folder").Append(link); - - li.Append(topChild); - }); - } - - public HtmlTag CompleteHierarchy() - { - var topChild = new HtmlTag("ul"); - var builder = new ChildTagBuilder(this, topChild); - builder.AddChildren(_graph); - - return TopTag(topChild); - - } - - public HtmlTag BuildInPlaceHierarchyFor(ISpecNode node) - { - var active = BuildActiveTag(node); - - var builder = new ChildTagBuilder(this, active.Add("ul")); - builder.AddChildren(node); - - var currentTag = active; - while (node.Parent() != null) - { - var parentTag = BuildLeafTag(node.Parent()); - parentTag.Add("ul").Append(currentTag); - - currentTag = parentTag; - - node = node.Parent(); - } - - if (node is SpecificationGraph) - { - return new HtmlTag("ul").Append(currentTag).Id("all-specs-node").AddClass("filetree"); - } - - var topTag = TopTag(new HtmlTag("ul").Append(currentTag) ); - - return topTag; - } - - public HtmlTag BuildLeafTag(ISpecNode node) - { - return new HtmlTag("li", tag => - { - var url = _urls.UrlFor(node.Path()); - var link = new LinkTag(node.Path().Parts.Last(), url); - - tag.Add("span").AddClass("file").Append(link); - }); - } - - public HtmlTag BuildActiveTag(ISpecNode node) - { - return new HtmlTag("li", x => - { - string text = node.Path().Parts.LastOrDefault() ?? "All Specs"; - x.Add("span").AddClass("active").Text(text).AddClass(node.TreeClass); - }); - } - - public HtmlTag BuildFolderTag(SpecificationFolder folder) - { - var folderTag = new HtmlTag("li"); - var link = linkTagForFolder(folder); - - folderTag.Add("span").AddClass("folder").Append(link); - - var ul = folderTag.Add("ul"); - - var builder = new ChildTagBuilder(this, ul); - folder.ImmediateChildren.Each(x => x.AcceptVisitor(builder)); - - - return folderTag; - } - - private LinkTag linkTagForFolder(SpecificationFolder folder) - { - var specPath = folder.Path(); - var url = _urls.UrlFor(specPath); - return new LinkTag(specPath.Parts.Last(), url); - } - - #region Nested type: ChildTagBuilder - - public class ChildTagBuilder : ISpecVisitor - { - private readonly SpecHierarchyBuilder _builder; - private readonly HtmlTag _parent; - - public ChildTagBuilder(SpecHierarchyBuilder builder, HtmlTag parent) - { - if (parent.TagName() != "ul") - { - throw new ArgumentOutOfRangeException("Only ul tags are valid here: \n" + parent.ToString()); - } - - _builder = builder; - _parent = parent; - } - - public void Specification(Specification spec) - { - var tag = _builder.BuildLeafTag(spec); - _parent.Append(tag); - } - - public void Folder(SpecificationFolder folder) - { - var tag = _builder.BuildFolderTag(folder); - _parent.Append(tag); - } - - public void Graph(SpecificationGraph graph) - { - throw new NotImplementedException(); - } - - public void AddChildren(ISpecNode node) - { - node.ImmediateChildren.Each(child => child.AcceptVisitor(this)); - } - } - - #endregion - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/SpecPath.cs b/src/Serenity/Jasmine/SpecPath.cs deleted file mode 100644 index 422710412a..0000000000 --- a/src/Serenity/Jasmine/SpecPath.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using FubuMVC.Core.Assets.Files; -using FubuMVC.Core.Resources.PathBased; - -namespace Serenity.Jasmine -{ - public class SpecPath : ResourcePath - { - private readonly IList _parts; - - - - public SpecPath(IList parts) : base(parts.Join("/")) - { - _parts = parts; - } - - public SpecPath(string packageName, string assetName) : base(packageName + "/" + assetName) - { - _parts = new List{ - packageName - }; - - _parts.AddRange(assetName.Split('/')); - } - - public SpecPath(string fullPath) : base(fullPath) - { - _parts = new List(); - - var path = new AssetPath(fullPath); - if (path.Package != null) _parts.Add(path.Package); - _parts.AddRange(path.Name.Split('/')); - } - - public string FullName - { - get - { - return _parts.Join("/"); - } - } - - public bool Equals(SpecPath other) - { - if (ReferenceEquals(null, other)) return false; - if (ReferenceEquals(this, other)) return true; - return Equals(other.FullName, FullName); - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != typeof (SpecPath)) return false; - return Equals((SpecPath) obj); - } - - public override int GetHashCode() - { - return (_parts != null ? FullName.GetHashCode() : 0); - } - - public string TopFolder - { - get { return _parts.FirstOrDefault(); } - } - - public IList Parts - { - get { return _parts; } - } - - public SpecPath ChildPath() - { - return new SpecPath(_parts.Skip(1).ToList()); - } - - public SpecPath Append(string libraryName) - { - var list = new List(_parts); - list.Add(libraryName); - return new SpecPath(list); - } - - - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/Specification.cs b/src/Serenity/Jasmine/Specification.cs deleted file mode 100644 index a98bfa530b..0000000000 --- a/src/Serenity/Jasmine/Specification.cs +++ /dev/null @@ -1,212 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using FubuMVC.Core.Assets.Files; -using FubuMVC.Core.Runtime; -using FubuCore; - -namespace Serenity.Jasmine -{ - public class Specification : ISpecNode - { - private readonly string _contentFolder; - private readonly string _subject; - private readonly static IList _ignoredExtensions = new List(); - private readonly IList _libraries = new List(); - private readonly string _libraryName; - private readonly Lazy _fullname; - private readonly IList _htmlFiles = new List(); - - public static readonly string HelperName = "jasmine.helper.js"; - - static Specification() - { - RebuildIgnoredExtensions(); - } - - public static IEnumerable IgnoredExtensions - { - get { return _ignoredExtensions; } - } - - public static void IgnoreExtension(string extension) - { - _ignoredExtensions.Add(extension); - } - - public static void RebuildIgnoredExtensions() - { - _ignoredExtensions.Clear(); - - _ignoredExtensions.AddRange(MimeType.Javascript.Extensions); - _ignoredExtensions.Add(".spec"); - } - - public static string DetermineLibraryName(AssetFile file) - { - var libraryNameParts = file.LibraryName().Split('.').ToList(); - while (libraryNameParts.Any() && _ignoredExtensions.Contains("." + libraryNameParts.Last())) - { - libraryNameParts.RemoveAt(libraryNameParts.Count - 1); - } - - return libraryNameParts.Join("."); - } - - public static bool IsSpecification(AssetFile file) - { - if (file.MimeType != MimeType.Javascript) return false; - if (file.ContentFolder().IsEmpty()) return false; - - return file.ContentFolder().Split('/').Contains("specs"); - } - - public Specification(string name) : this(new AssetFile(name)) - { - - } - - public Specification(AssetFile file) - { - _fullname = new Lazy(() => Parent.FullName + "/" + _libraryName); - - File = file; - - string fileContentFolder = file.ContentFolder(); - if (fileContentFolder == null || fileContentFolder == "specs") - { - _contentFolder = null; - } - else - { - var list = fileContentFolder.Split('/').ToList(); - list.Remove("specs"); - - _contentFolder = list.Join("/"); - } - - _libraryName = file.LibraryName(); - var libraryParts = _libraryName.Split('.').ToList(); - - var index = libraryParts.IndexOf("spec"); - if (index > -1) - { - _subject = libraryParts.Take(index).Join("."); - } - else - { - _subject = libraryParts.Where(x => !_ignoredExtensions.Contains("." + x)).Join("."); - } - - - - - } - - - - public string LibraryName - { - get { return _libraryName; } - } - - public SpecificationFolder Parent { get; set; } - - public string Subject - { - get { return _subject; } - } - - - public string ContentFolder - { - get { return _contentFolder; } - } - - - - public AssetFile File { get; private set;} - - public bool DependsOn(AssetFile other) - { - if (!string.Equals(_contentFolder, other.ContentFolder(), StringComparison.InvariantCultureIgnoreCase)) - { - return false; - } - - return string.Equals(_subject, DetermineLibraryName(other), StringComparison.InvariantCultureIgnoreCase); - } - - public void AddLibrary(AssetFile file) - { - _libraries.Add(file); - } - - public IEnumerable Libraries - { - get { return _libraries; } - } - - public SpecPath Path() - { - return Parent.Path().Append(_libraryName); - } - - public string FullName - { - get { return _fullname.Value; } - } - - public IEnumerable ImmediateChildren - { - get { yield break; } - } - - public string TreeClass - { - get { return "file"; } - } - - ISpecNode ISpecNode.Parent() - { - return Parent; - } - - public void AcceptVisitor(ISpecVisitor visitor) - { - visitor.Specification(this); - } - - public IEnumerable AllSpecifications - { - get { yield return this; } - } - - public IEnumerable AllNodes - { - get { yield break; } - } - - public void AddHtmlFile(AssetFile file) - { - _htmlFiles.Add(file); - } - - public static readonly string FixtureHtmlSuffix = ".fixture.html"; - - public void SelectHtmlFiles(IEnumerable files) - { - var libName = _subject + FixtureHtmlSuffix; - - Debug.WriteLine("I'm looking for " + libName); - - files.Where(x => x.LibraryName() == libName).Each(_htmlFiles.Add); - } - - public IEnumerable HtmlFiles - { - get { return _htmlFiles; } - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/SpecificationFolder.cs b/src/Serenity/Jasmine/SpecificationFolder.cs deleted file mode 100644 index cf8319d204..0000000000 --- a/src/Serenity/Jasmine/SpecificationFolder.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using FubuCore.Util; -using FubuMVC.Core.Assets.Files; - -namespace Serenity.Jasmine -{ - public class SpecificationFolder : ISpecNode - { - private readonly Cache _children; - private readonly string _name; - private readonly SpecificationFolder _parent; - private readonly IList _specifications = new List(); - - public SpecificationFolder(string name) - { - _name = name; - - _children = new Cache(path => new SpecificationFolder(path, this)); - } - - public SpecificationFolder(string name, SpecificationFolder parent) : this(name) - { - _parent = parent; - } - - public void ApplyHelpers() - { - var helper = _specifications.FirstOrDefault(x => x.LibraryName == Specification.HelperName); - if (helper != null) - { - _specifications.Remove(helper); - AllSpecifications.Each(x => x.AddLibrary(helper.File)); - } - - _children.Each(x => x.ApplyHelpers()); - } - - public SpecificationFolder Parent - { - get { return _parent; } - } - - public string FullName - { - get { return _parent == null ? _name : _parent.FullName + "/" + _name; } - } - - public IEnumerable ImmediateChildren - { - get - { - foreach (var folder in _children) - { - yield return folder; - } - - foreach (var specification in _specifications) - { - yield return specification; - } - } - } - - public string TreeClass - { - get { return "folder"; } - } - - ISpecNode ISpecNode.Parent() - { - return Parent; - } - - public void AcceptVisitor(ISpecVisitor visitor) - { - visitor.Folder(this); - } - - public IEnumerable Specifications - { - get { return _specifications; } - } - - public IEnumerable AllSpecifications - { - get - { - foreach (var folder in _children) - { - foreach (var spec in folder.AllSpecifications) - { - yield return spec; - } - } - - foreach (var spec in _specifications) - { - yield return spec; - } - } - } - - public IEnumerable AllNodes - { - get - { - foreach (var folder in _children) - { - yield return folder; - - foreach (var node in folder.AllNodes) - { - yield return node; - } - } - - foreach (var spec in _specifications) - { - yield return spec; - } - - } - } - - public SpecPath Path() - { - var list = new List{ - _name - }; - - var parent = Parent; - while (parent != null) - { - list.Add(parent._name); - parent = parent.Parent; - } - - list.Reverse(); - - return new SpecPath(list); - } - - public SpecificationFolder ChildFolderFor(string name) - { - return ChildFolderFor(new SpecPath(name)); - } - - public SpecificationFolder ChildFolderFor(SpecPath path) - { - return path.Parts.Count == 1 - ? _children[path.TopFolder] - : _children[path.TopFolder].ChildFolderFor(path.ChildPath()); - } - - - public void AddSpecs(IEnumerable assetFiles) - { - var specs = assetFiles.Select(x => new Specification(x){ - Parent = this - }); - _specifications.AddRange(specs); - } - } -} \ No newline at end of file diff --git a/src/Serenity/Jasmine/SpecificationGraph.cs b/src/Serenity/Jasmine/SpecificationGraph.cs deleted file mode 100644 index fd7fc7e106..0000000000 --- a/src/Serenity/Jasmine/SpecificationGraph.cs +++ /dev/null @@ -1,176 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Bottles.PackageLoaders.Assemblies; -using FubuCore; -using FubuCore.Util; -using FubuMVC.Core.Assets.Files; -using FubuMVC.Core.Runtime; - -namespace Serenity.Jasmine -{ - public class SpecificationGraph : ISpecNode - { - private readonly Cache _packages - = new Cache(name => new SpecificationFolder(name)); - - public SpecificationGraph(IAssetPipeline pipeline) - { - pipeline.AllPackages.Where(IsSpecPackage).Each(AddSpecs); - - _packages.Each(x => x.ApplyHelpers()); - } - - public IEnumerable Folders - { - get { return _packages; } - } - - public SpecPath Path() - { - return new SpecPath(new List()); - } - - public IEnumerable AllSpecifications - { - get { return _packages.OrderBy(x => x.FullName).SelectMany(x => x.AllSpecifications); } - } - - public IEnumerable AllNodes - { - get - { - foreach (var package in _packages) - { - yield return package; - - foreach (var node in package.AllNodes) - { - yield return node; - } - } - } - } - - public string FullName - { - get { return string.Empty; } - } - - public IEnumerable ImmediateChildren - { - get - { - foreach (var package in _packages) - { - yield return package; - } - ; - } - } - - public string TreeClass - { - get { return "folder"; } - } - - public ISpecNode Parent() - { - return null; - } - - public void AcceptVisitor(ISpecVisitor visitor) - { - visitor.Graph(this); - } - - public static bool IsSpecPackage(PackageAssets package) - { - if (package.PackageName == "application") return false; - - if (package.PackageName == AssemblyPackageInfo.CreateFor(typeof (SpecificationGraph).Assembly).Name) - return false; - - return true; - } - - public void AddSpecs(PackageAssets package) - { - var packageFolder = _packages[package.PackageName]; - - var javascriptFiles = package - .AllFiles() - .Where(x => x.MimeType == MimeType.Javascript).ToList(); - - - - addSpecs(javascriptFiles, packageFolder); - associateSpecs(javascriptFiles); - - associateHtmlFiles(package, packageFolder); - } - - private static void associateHtmlFiles(PackageAssets package, SpecificationFolder packageFolder) - { - var htmlFiles = package.AllFiles().Where(x => x.MimeType == MimeType.Html).ToList(); - packageFolder.AllSpecifications.Each(x => x.SelectHtmlFiles(htmlFiles)); - } - - private void associateSpecs(List javascriptFiles) - { - var specs = AllSpecifications.ToList(); - javascriptFiles.RemoveAll(file => specs.Any(x => x.File == file)); - specs.Each(spec => - { - // Brute force baby! No elegance needed here. - // Ten bucks says this is a perf problem down the line - javascriptFiles.Where(spec.DependsOn).Each(spec.AddLibrary); - - }); - } - - private static void addSpecs(IEnumerable javascriptFiles, SpecificationFolder packageFolder) - { - javascriptFiles - .Where(Specification.IsSpecification) - .GroupBy(DetermineSpecContentFolder) - .Each(group => - { - var folder = packageFolder; - - if (!group.Key.IsEmpty()) - { - folder = packageFolder.ChildFolderFor(new SpecPath(group.Key)); - } - - folder.AddSpecs(group); - }); - } - - public Specification FindSpecByFullName(string name) - { - return AllSpecifications.FirstOrDefault(x => x.FullName == name); - } - - public Specification FindSpecByLibraryName(string name) - { - return AllSpecifications.FirstOrDefault(x => x.LibraryName == name); - } - - public ISpecNode FindSpecNode(SpecPath path) - { - if (path.FullName.IsEmpty()) return this; - - var fullName = path.FullName; - return AllNodes.FirstOrDefault(x => x.FullName == fullName); - } - - public static string DetermineSpecContentFolder(AssetFile file) - { - var contentFolder = file.ContentFolder(); - var list = contentFolder.Split('/').ToList(); - list.RemoveAll(x => x == "specs"); - - return list.Join("/"); - } - } -} \ No newline at end of file diff --git a/src/Serenity/NavigationDriver.cs b/src/Serenity/NavigationDriver.cs deleted file mode 100644 index 379806ec0e..0000000000 --- a/src/Serenity/NavigationDriver.cs +++ /dev/null @@ -1,142 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Linq.Expressions; -using FubuMVC.Core.Assets.Http; -using OpenQA.Selenium; -using Serenity.Endpoints; - -namespace Serenity -{ - /// - /// Called immediately after navigating the browser to a new url. - /// Useful as a way to deal with login pages in a web application - /// - public interface IAfterNavigation - { - void AfterNavigation(IWebDriver driver, string desiredUrl); - } - - public class NulloAfterNavigation : IAfterNavigation - { - public void AfterNavigation(IWebDriver driver, string desiredUrl) - { - // Do nothing! - } - } - - public class NavigationDriver - { - private readonly IApplicationUnderTest _application; - private IAfterNavigation _afterNavigation = new NulloAfterNavigation(); - - public NavigationDriver(IApplicationUnderTest application) - { - _application = application; - } - - public IAfterNavigation AfterNavigation - { - get { return _afterNavigation; } - set { _afterNavigation = value; } - } - - public void NavigateTo(object target) - { - var url = _application.Urls.UrlFor(target); - - NavigateToUrl(url); - } - - public void NavigateToUrl(string url) - { - Debug.WriteLine("Navigating to " + url); - _application.Driver.Navigate().GoToUrl(url); - - _afterNavigation.AfterNavigation(_application.Driver, url); - } - - public void NavigateTo(Expression> expression) - { - var url = _application.Urls.UrlFor(expression, null); - NavigateToUrl(url); - } - - public string AssetUrlFor(string file) - { - return _application.RootUrl + ("/_content/" + file).Replace("//", "/"); - } - - public void NavigateToHome() - { - NavigateToUrl(_application.RootUrl); - } - - // - public IWebDriver Driver - { - get - { - return _application.Driver; - } - } - - // TODO -- let's get rid of this - public EndpointDriver GetEndpointDriver() - { - return new EndpointDriver(_application.Urls); - } - - public ScreenDriver GetCurrentScreen() - { - return new ScreenDriver(Driver); - } - } - - public class AssetTagsState - { - public IList Scripts { get; set; } - public IList Styles { get; set; } - } - - public class ScreenDriver - { - private readonly IWebDriver _browser; - private readonly Lazy _head; - - public ScreenDriver(IWebDriver browser) - { - _browser = browser; - _head = new Lazy(() => _browser.FindElement(By.TagName("head"))); - } - - private IWebElement head - { - get { return _head.Value; } - } - - private IWebElement elementFor(string name) - { - return _browser.FindElement(By.Id(name)) ?? _browser.FindElement(By.Name(name)); - } - - public AssetTagsState GetAssetDeclarationsFromTheHead() - { - return new AssetTagsState - { - Scripts = head.FindElements(By.TagName("script")).ToList(), - Styles = head.FindElements(By.TagName("link")).Where(x => x.IsCssLink()).ToList() - }; - } - - public AssetTagsState GetAssetDeclarations() - { - return new AssetTagsState - { - Scripts = _browser.FindElements(By.TagName("script")).ToList(), - Styles = _browser.FindElements(By.TagName("link")).Where(x => x.IsCssLink()).ToList() - }; - } - } -} \ No newline at end of file diff --git a/src/Serenity/Properties/AssemblyInfo.cs b/src/Serenity/Properties/AssemblyInfo.cs deleted file mode 100644 index 2467651e9a..0000000000 --- a/src/Serenity/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Serenity")] - diff --git a/src/Serenity/Serenity.csproj b/src/Serenity/Serenity.csproj deleted file mode 100644 index c13815b880..0000000000 --- a/src/Serenity/Serenity.csproj +++ /dev/null @@ -1,270 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {900A0419-3579-4DAE-85BE-71A3E4B34239} - Library - Properties - Serenity - Serenity - v4.0 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Bottles.0.9.1.278\lib\Bottles.dll - - - ..\packages\Castle.Core.3.0.0.4001\lib\net40-client\Castle.Core.dll - - - ..\packages\FubuCore.0.9.9.151\lib\FubuCore.dll - - - ..\packages\FubuLocalization.0.9.5.43\lib\FubuLocalization.dll - - - ..\packages\Gate.0.1.4\lib\Gate.dll - - - ..\packages\Gate.Kayak.0.1.4\lib\Gate.Kayak.dll - - - ..\packages\HtmlTags.1.1.0.71\lib\4.0\HtmlTags.dll - - - ..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll - - - ..\packages\Kayak.0.7.2\lib\Kayak.dll - - - ..\packages\Newtonsoft.Json.4.5.1\lib\net40\Newtonsoft.Json.dll - - - ..\packages\Selenium.WebDriverBackedSelenium.2.20.0\lib\net40\Selenium.WebDriverBackedSelenium.dll - - - ..\packages\Storyteller.1.1.0.498\lib\net40\StoryTeller.dll - - - ..\packages\structuremap.2.6.3\lib\StructureMap.dll - - - - - - - - - - - - - - ..\packages\Selenium.WebDriver.2.20.0\lib\net40\WebDriver.dll - - - ..\packages\Selenium.Support.2.20.0\lib\net40\WebDriver.Support.dll - - - - - CommonAssemblyInfo.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {3C9279B1-DDDF-4E6A-B95A-6276942882EC} - FubuKayak - - - {E18FD922-0E7A-49CD-B89F-473826077B9D} - FubuMVC.Core - - - {EA10DF80-FD95-4172-BC18-DB0DFB279844} - FubuMVC.OwinHost - - - {ABFEA520-820C-4B77-9015-6A09E24252FA} - FubuMVC.StructureMap - - - - - Designer - - - - - - chromedriver.exe - PreserveNewest - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Serenity/SerenityApplications.cs b/src/Serenity/SerenityApplications.cs deleted file mode 100644 index 4c38aaadc1..0000000000 --- a/src/Serenity/SerenityApplications.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using FubuCore.Util; - -namespace Serenity -{ - public class SerenityApplications : IEnumerable - { - private readonly Cache _applications = new Cache(); - private IApplicationUnderTest _primary; - - public IEnumerator GetEnumerator() - { - return _applications.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public void AddPrimaryApplication(IApplicationUnderTest application) - { - AddApplication(application); - _primary = application; - } - - public void AddApplication(IApplicationUnderTest application) - { - if (!_applications.Any()) - { - _primary = application; - } - - _applications[application.Name] = application; - } - - public IApplicationUnderTest PrimaryApplication() - { - return _primary ?? _applications.GetAll().FirstOrDefault(); - } - } -} \ No newline at end of file diff --git a/src/Serenity/SerenitySystem.cs b/src/Serenity/SerenitySystem.cs deleted file mode 100644 index ff75019937..0000000000 --- a/src/Serenity/SerenitySystem.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using FubuMVC.Core; -using OpenQA.Selenium; -using StoryTeller.Engine; - -namespace Serenity -{ - public class SerenitySystem : BasicSystem - { - private readonly SerenityApplications _applications = new SerenityApplications(); - private readonly Func _browserBuilder; - - public SerenitySystem() - { - _browserBuilder = WebDriverSettings.DriverBuilder(); - } - - public SerenityApplications Applications - { - get { return _applications; } - } - - public void AddApplication(IApplicationSource source) - { - var settings = ApplicationSettings.ReadByName(source.GetType().Name); - var application = new ApplicationUnderTest(source, settings, _browserBuilder); - _applications.AddApplication(application); - } - - // TODO -- have a way to do this inline - public void AddApplication() where T : IApplicationSource, new() - { - AddApplication(new T()); - } - - public override void RegisterServices(ITestContext context) - { - context.Store(_applications); - context.Store(_applications.PrimaryApplication()); - } - - public override void SetupEnvironment() - { - foreach (var app in _applications) - { - app.Ping(); - } - } - - public override void TeardownEnvironment() - { - foreach (var app in _applications) - { - app.Teardown(); - } - } - } -} \ No newline at end of file diff --git a/src/Serenity/Wait.cs b/src/Serenity/Wait.cs deleted file mode 100644 index ea777f04be..0000000000 --- a/src/Serenity/Wait.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Diagnostics; -using System.Threading; - -namespace Serenity -{ - public static class Wait - { - public static void Until(Func condition, int millisecondPolling = 500, int timeoutInMilliseconds = 5000) - { - if (condition()) return; - - var clock = new Stopwatch(); - clock.Start(); - - while (clock.ElapsedMilliseconds < timeoutInMilliseconds) - { - Thread.Yield(); - Thread.Sleep(500); - - if (condition()) return; - } - } - } -} \ No newline at end of file diff --git a/src/Serenity/WebContent/content/images/fubu-project.png b/src/Serenity/WebContent/content/images/fubu-project.png deleted file mode 100644 index 64872ed2831eab6e8d5e3f3fd1322e3fecf0070b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9052 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 C7z9fI diff --git a/src/Serenity/WebContent/content/images/jasmine_logo.png b/src/Serenity/WebContent/content/images/jasmine_logo.png deleted file mode 100644 index 9ffc5a034f04a11cb1eafc3e5fb6556932a7d8ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4980 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 L;uWgGz+epk&R;19 diff --git a/src/Serenity/WebContent/content/scripts/images/folder-closed.gif b/src/Serenity/WebContent/content/scripts/images/folder-closed.gif deleted file mode 100644 index 541107888e6739a7b367ad3d208e1efa933f877d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ diff --git a/src/Serenity/WebContent/content/scripts/images/folder.gif b/src/Serenity/WebContent/content/scripts/images/folder.gif deleted file mode 100644 index 2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 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 diff --git a/src/Serenity/WebContent/content/scripts/images/treeview-gray-line.gif b/src/Serenity/WebContent/content/scripts/images/treeview-gray-line.gif deleted file mode 100644 index 37600447dc002bbc0dd16e1391b711360aae2e34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn diff --git a/src/Serenity/WebContent/content/scripts/images/treeview-gray.gif b/src/Serenity/WebContent/content/scripts/images/treeview-gray.gif deleted file mode 100644 index cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 diff --git a/src/Serenity/WebContent/content/scripts/images/treeview-red-line.gif b/src/Serenity/WebContent/content/scripts/images/treeview-red-line.gif deleted file mode 100644 index df9e749a8f1f58862588efc64988003efad01d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A diff --git a/src/Serenity/WebContent/content/scripts/images/treeview-red.gif b/src/Serenity/WebContent/content/scripts/images/treeview-red.gif deleted file mode 100644 index 3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~* 0) ? "runner failed" : "runner passed"; - this.runnerDiv.setAttribute("class", className); - //do it twice for IE - this.runnerDiv.setAttribute("className", className); - var specs = runner.specs(); - var specCount = 0; - for (var i = 0; i < specs.length; i++) { - if (this.specFilter(specs[i])) { - specCount++; - } - } - var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s"); - message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s"; - this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild); - - this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString())); -}; - -jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) { - var results = suite.results(); - var status = results.passed() ? 'passed' : 'failed'; - if (results.totalCount === 0) { // todo: change this to check results.skipped - status = 'skipped'; - } - this.suiteDivs[suite.id].className += " " + status; -}; - -jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) { - if (this.logRunningSpecs) { - this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...'); - } -}; - -jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) { - var results = spec.results(); - var status = results.passed() ? 'passed' : 'failed'; - if (results.skipped) { - status = 'skipped'; - } - var specDiv = this.createDom('div', { className: 'spec ' + status }, - this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"), - this.createDom('a', { - className: 'description', - href: '?spec=' + encodeURIComponent(spec.getFullName()), - title: spec.getFullName() - }, spec.description)); - - - var resultItems = results.getItems(); - var messagesDiv = this.createDom('div', { className: 'messages' }); - for (var i = 0; i < resultItems.length; i++) { - var result = resultItems[i]; - - if (result.type == 'log') { - messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString())); - } else if (result.type == 'expect' && result.passed && !result.passed()) { - messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message)); - - if (result.trace.stack) { - messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack)); - } - } - } - - if (messagesDiv.childNodes.length > 0) { - specDiv.appendChild(messagesDiv); - } - - this.suiteDivs[spec.suite.id].appendChild(specDiv); -}; - -jasmine.TrivialReporter.prototype.log = function() { - var console = jasmine.getGlobal().console; - if (console && console.log) { - if (console.log.apply) { - console.log.apply(console, arguments); - } else { - console.log(arguments); // ie fix: console.log.apply doesn't exist on ie - } - } -}; - -jasmine.TrivialReporter.prototype.getLocation = function() { - return this.document.location; -}; - -jasmine.TrivialReporter.prototype.specFilter = function(spec) { - var paramMap = {}; - var params = this.getLocation().search.substring(1).split('&'); - for (var i = 0; i < params.length; i++) { - var p = params[i].split('='); - paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]); - } - - if (!paramMap.spec) { - return true; - } - return spec.getFullName().indexOf(paramMap.spec) === 0; -}; diff --git a/src/Serenity/WebContent/content/scripts/jasmine-jquery-1.3.1.js b/src/Serenity/WebContent/content/scripts/jasmine-jquery-1.3.1.js deleted file mode 100644 index 7e85548aa7..0000000000 --- a/src/Serenity/WebContent/content/scripts/jasmine-jquery-1.3.1.js +++ /dev/null @@ -1,288 +0,0 @@ -var readFixtures = function() { - return jasmine.getFixtures().proxyCallTo_('read', arguments); -}; - -var preloadFixtures = function() { - jasmine.getFixtures().proxyCallTo_('preload', arguments); -}; - -var loadFixtures = function() { - jasmine.getFixtures().proxyCallTo_('load', arguments); -}; - -var setFixtures = function(html) { - jasmine.getFixtures().set(html); -}; - -var sandbox = function(attributes) { - return jasmine.getFixtures().sandbox(attributes); -}; - -var spyOnEvent = function(selector, eventName) { - jasmine.JQuery.events.spyOn(selector, eventName); -} - -jasmine.getFixtures = function() { - return jasmine.currentFixtures_ = jasmine.currentFixtures_ || new jasmine.Fixtures(); -}; - -jasmine.Fixtures = function() { - this.containerId = 'jasmine-fixtures'; - this.fixturesCache_ = {}; - this.fixturesPath = 'spec/javascripts/fixtures'; -}; - -jasmine.Fixtures.prototype.set = function(html) { - this.cleanUp(); - this.createContainer_(html); -}; - -jasmine.Fixtures.prototype.preload = function() { - this.read.apply(this, arguments); -}; - -jasmine.Fixtures.prototype.load = function() { - this.cleanUp(); - this.createContainer_(this.read.apply(this, arguments)); -}; - -jasmine.Fixtures.prototype.read = function() { - var htmlChunks = []; - - var fixtureUrls = arguments; - for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) { - htmlChunks.push(this.getFixtureHtml_(fixtureUrls[urlIndex])); - } - - return htmlChunks.join(''); -}; - -jasmine.Fixtures.prototype.clearCache = function() { - this.fixturesCache_ = {}; -}; - -jasmine.Fixtures.prototype.cleanUp = function() { - jQuery('#' + this.containerId).remove(); -}; - -jasmine.Fixtures.prototype.sandbox = function(attributes) { - var attributesToSet = attributes || {}; - return jQuery('
').attr(attributesToSet); -}; - -jasmine.Fixtures.prototype.createContainer_ = function(html) { - var container; - if(html instanceof jQuery) { - container = jQuery('
'); - container.html(html); - } else { - container = '
' + html + '
' - } - jQuery('body').append(container); -}; - -jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) { - if (typeof this.fixturesCache_[url] == 'undefined') { - this.loadFixtureIntoCache_(url); - } - return this.fixturesCache_[url]; -}; - -jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) { - var self = this; - var url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl; - jQuery.ajax({ - async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded - cache: false, - dataType: 'html', - url: url, - success: function(data) { - self.fixturesCache_[relativeUrl] = data; - }, - error: function(jqXHR, status, errorThrown) { - throw Error('Fixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')'); - } - }); -}; - -jasmine.Fixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) { - return this[methodName].apply(this, passedArguments); -}; - - -jasmine.JQuery = function() {}; - -jasmine.JQuery.browserTagCaseIndependentHtml = function(html) { - return jQuery('
').append(html).html(); -}; - -jasmine.JQuery.elementToString = function(element) { - return jQuery('
').append(element.clone()).html(); -}; - -jasmine.JQuery.matchersClass = {}; - -(function(namespace) { - var data = { - spiedEvents: {}, - handlers: [] - }; - - namespace.events = { - spyOn: function(selector, eventName) { - var handler = function(e) { - data.spiedEvents[[selector, eventName]] = e; - }; - jQuery(selector).bind(eventName, handler); - data.handlers.push(handler); - }, - - wasTriggered: function(selector, eventName) { - return !!(data.spiedEvents[[selector, eventName]]); - }, - - cleanUp: function() { - data.spiedEvents = {}; - data.handlers = []; - } - } -})(jasmine.JQuery); - -(function(){ - var jQueryMatchers = { - toHaveClass: function(className) { - return this.actual.hasClass(className); - }, - - toBeVisible: function() { - return this.actual.is(':visible'); - }, - - toBeHidden: function() { - return this.actual.is(':hidden'); - }, - - toBeSelected: function() { - return this.actual.is(':selected'); - }, - - toBeChecked: function() { - return this.actual.is(':checked'); - }, - - toBeEmpty: function() { - return this.actual.is(':empty'); - }, - - toExist: function() { - return this.actual.size() > 0; - }, - - toHaveAttr: function(attributeName, expectedAttributeValue) { - return hasProperty(this.actual.attr(attributeName), expectedAttributeValue); - }, - - toHaveId: function(id) { - return this.actual.attr('id') == id; - }, - - toHaveHtml: function(html) { - return this.actual.html() == jasmine.JQuery.browserTagCaseIndependentHtml(html); - }, - - toHaveText: function(text) { - if (text && jQuery.isFunction(text.test)) { - return text.test(this.actual.text()); - } else { - return this.actual.text() == text; - } - }, - - toHaveValue: function(value) { - return this.actual.val() == value; - }, - - toHaveData: function(key, expectedValue) { - return hasProperty(this.actual.data(key), expectedValue); - }, - - toBe: function(selector) { - return this.actual.is(selector); - }, - - toContain: function(selector) { - return this.actual.find(selector).size() > 0; - }, - - toBeDisabled: function(selector){ - return this.actual.is(':disabled'); - }, - - // tests the existence of a specific event binding - toHandle: function(eventName) { - var events = this.actual.data("events"); - return events && events[eventName].length > 0; - }, - - // tests the existence of a specific event binding + handler - toHandleWith: function(eventName, eventHandler) { - var stack = this.actual.data("events")[eventName]; - var i; - for (i = 0; i < stack.length; i++) { - if (stack[i].handler == eventHandler) { - return true; - } - } - return false; - } - }; - - var hasProperty = function(actualValue, expectedValue) { - if (expectedValue === undefined) { - return actualValue !== undefined; - } - return actualValue == expectedValue; - }; - - var bindMatcher = function(methodName) { - var builtInMatcher = jasmine.Matchers.prototype[methodName]; - - jasmine.JQuery.matchersClass[methodName] = function() { - if (this.actual instanceof jQuery) { - var result = jQueryMatchers[methodName].apply(this, arguments); - this.actual = jasmine.JQuery.elementToString(this.actual); - return result; - } - - if (builtInMatcher) { - return builtInMatcher.apply(this, arguments); - } - - return false; - }; - }; - - for(var methodName in jQueryMatchers) { - bindMatcher(methodName); - } -})(); - -beforeEach(function() { - this.addMatchers(jasmine.JQuery.matchersClass); - this.addMatchers({ - toHaveBeenTriggeredOn: function(selector) { - this.message = function() { - return [ - "Expected event " + this.actual + " to have been triggered on" + selector, - "Expected event " + this.actual + " not to have been triggered on" + selector - ]; - }; - return jasmine.JQuery.events.wasTriggered(selector, this.actual); - } - }) -}); - -afterEach(function() { - jasmine.getFixtures().cleanUp(); - jasmine.JQuery.events.cleanUp(); -}); diff --git a/src/Serenity/WebContent/content/scripts/jasmine-runner.js b/src/Serenity/WebContent/content/scripts/jasmine-runner.js deleted file mode 100644 index e076e15cf1..0000000000 --- a/src/Serenity/WebContent/content/scripts/jasmine-runner.js +++ /dev/null @@ -1,26 +0,0 @@ -(function () { - var jasmineEnv = jasmine.getEnv(); - jasmineEnv.updateInterval = 1000; - - var trivialReporter = new jasmine.TrivialReporter(); - - jasmineEnv.addReporter(trivialReporter); - - jasmineEnv.specFilter = function (spec) { - return trivialReporter.specFilter(spec); - }; - - var currentWindowOnload = window.onload; - - window.onload = function () { - if (currentWindowOnload) { - currentWindowOnload(); - } - execJasmine(); - }; - - function execJasmine() { - jasmineEnv.execute(); - } - -})(); \ No newline at end of file diff --git a/src/Serenity/WebContent/content/scripts/jasmine.css b/src/Serenity/WebContent/content/scripts/jasmine.css deleted file mode 100644 index 6583fe7c66..0000000000 --- a/src/Serenity/WebContent/content/scripts/jasmine.css +++ /dev/null @@ -1,166 +0,0 @@ -body { - font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; -} - - -.jasmine_reporter a:visited, .jasmine_reporter a { - color: #303; -} - -.jasmine_reporter a:hover, .jasmine_reporter a:active { - color: blue; -} - -.run_spec { - float:right; - padding-right: 5px; - font-size: .8em; - text-decoration: none; -} - -.jasmine_reporter { - margin: 0 5px; -} - -.banner { - color: #303; - background-color: #fef; - padding: 5px; -} - -.logo { - float: left; - font-size: 1.1em; - padding-left: 5px; -} - -.logo .version { - font-size: .6em; - padding-left: 1em; -} - -.runner.running { - background-color: yellow; -} - - -.options { - text-align: right; - font-size: .8em; -} - - - - -.suite { - border: 1px outset gray; - margin: 5px 0; - padding-left: 1em; -} - -.suite .suite { - margin: 5px; -} - -.suite.passed { - background-color: #dfd; -} - -.suite.failed { - background-color: #fdd; -} - -.spec { - margin: 5px; - padding-left: 1em; - clear: both; -} - -.spec.failed, .spec.passed, .spec.skipped { - padding-bottom: 5px; - border: 1px solid gray; -} - -.spec.failed { - background-color: #fbb; - border-color: red; -} - -.spec.passed { - background-color: #bfb; - border-color: green; -} - -.spec.skipped { - background-color: #bbb; -} - -.messages { - border-left: 1px dashed gray; - padding-left: 1em; - padding-right: 1em; -} - -.passed { - background-color: #cfc; - display: none; -} - -.failed { - background-color: #fbb; -} - -.skipped { - color: #777; - background-color: #eee; - display: none; -} - - -/*.resultMessage {*/ - /*white-space: pre;*/ -/*}*/ - -.resultMessage span.result { - display: block; - line-height: 2em; - color: black; -} - -.resultMessage .mismatch { - color: black; -} - -.stackTrace { - white-space: pre; - font-size: .8em; - margin-left: 10px; - max-height: 5em; - overflow: auto; - border: 1px inset red; - padding: 1em; - background: #eef; -} - -.finished-at { - padding-left: 1em; - font-size: .6em; -} - -.show-passed .passed, -.show-skipped .skipped { - display: block; -} - - -#jasmine_content { - position:fixed; - right: 100%; -} - -.runner { - border: 1px solid gray; - display: block; - margin: 5px 0; - padding: 2px 0 2px 10px; -} diff --git a/src/Serenity/WebContent/content/scripts/jasmine.js b/src/Serenity/WebContent/content/scripts/jasmine.js deleted file mode 100644 index c3d2dc7d2d..0000000000 --- a/src/Serenity/WebContent/content/scripts/jasmine.js +++ /dev/null @@ -1,2476 +0,0 @@ -var isCommonJS = typeof window == "undefined"; - -/** - * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework. - * - * @namespace - */ -var jasmine = {}; -if (isCommonJS) exports.jasmine = jasmine; -/** - * @private - */ -jasmine.unimplementedMethod_ = function() { - throw new Error("unimplemented method"); -}; - -/** - * Use jasmine.undefined instead of undefined, since undefined is just - * a plain old variable and may be redefined by somebody else. - * - * @private - */ -jasmine.undefined = jasmine.___undefined___; - -/** - * Show diagnostic messages in the console if set to true - * - */ -jasmine.VERBOSE = false; - -/** - * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed. - * - */ -jasmine.DEFAULT_UPDATE_INTERVAL = 250; - -/** - * Default timeout interval in milliseconds for waitsFor() blocks. - */ -jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000; - -jasmine.getGlobal = function() { - function getGlobal() { - return this; - } - - return getGlobal(); -}; - -/** - * Allows for bound functions to be compared. Internal use only. - * - * @ignore - * @private - * @param base {Object} bound 'this' for the function - * @param name {Function} function to find - */ -jasmine.bindOriginal_ = function(base, name) { - var original = base[name]; - if (original.apply) { - return function() { - return original.apply(base, arguments); - }; - } else { - // IE support - return jasmine.getGlobal()[name]; - } -}; - -jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout'); -jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout'); -jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval'); -jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval'); - -jasmine.MessageResult = function(values) { - this.type = 'log'; - this.values = values; - this.trace = new Error(); // todo: test better -}; - -jasmine.MessageResult.prototype.toString = function() { - var text = ""; - for (var i = 0; i < this.values.length; i++) { - if (i > 0) text += " "; - if (jasmine.isString_(this.values[i])) { - text += this.values[i]; - } else { - text += jasmine.pp(this.values[i]); - } - } - return text; -}; - -jasmine.ExpectationResult = function(params) { - this.type = 'expect'; - this.matcherName = params.matcherName; - this.passed_ = params.passed; - this.expected = params.expected; - this.actual = params.actual; - this.message = this.passed_ ? 'Passed.' : params.message; - - var trace = (params.trace || new Error(this.message)); - this.trace = this.passed_ ? '' : trace; -}; - -jasmine.ExpectationResult.prototype.toString = function () { - return this.message; -}; - -jasmine.ExpectationResult.prototype.passed = function () { - return this.passed_; -}; - -/** - * Getter for the Jasmine environment. Ensures one gets created - */ -jasmine.getEnv = function() { - var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env(); - return env; -}; - -/** - * @ignore - * @private - * @param value - * @returns {Boolean} - */ -jasmine.isArray_ = function(value) { - return jasmine.isA_("Array", value); -}; - -/** - * @ignore - * @private - * @param value - * @returns {Boolean} - */ -jasmine.isString_ = function(value) { - return jasmine.isA_("String", value); -}; - -/** - * @ignore - * @private - * @param value - * @returns {Boolean} - */ -jasmine.isNumber_ = function(value) { - return jasmine.isA_("Number", value); -}; - -/** - * @ignore - * @private - * @param {String} typeName - * @param value - * @returns {Boolean} - */ -jasmine.isA_ = function(typeName, value) { - return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; -}; - -/** - * Pretty printer for expecations. Takes any object and turns it into a human-readable string. - * - * @param value {Object} an object to be outputted - * @returns {String} - */ -jasmine.pp = function(value) { - var stringPrettyPrinter = new jasmine.StringPrettyPrinter(); - stringPrettyPrinter.format(value); - return stringPrettyPrinter.string; -}; - -/** - * Returns true if the object is a DOM Node. - * - * @param {Object} obj object to check - * @returns {Boolean} - */ -jasmine.isDomNode = function(obj) { - return obj.nodeType > 0; -}; - -/** - * Returns a matchable 'generic' object of the class type. For use in expecations of type when values don't matter. - * - * @example - * // don't care about which function is passed in, as long as it's a function - * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function)); - * - * @param {Class} clazz - * @returns matchable object of the type clazz - */ -jasmine.any = function(clazz) { - return new jasmine.Matchers.Any(clazz); -}; - -/** - * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks. - * - * Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine - * expectation syntax. Spies can be checked if they were called or not and what the calling params were. - * - * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs). - * - * Spies are torn down at the end of every spec. - * - * Note: Do not call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj. - * - * @example - * // a stub - * var myStub = jasmine.createSpy('myStub'); // can be used anywhere - * - * // spy example - * var foo = { - * not: function(bool) { return !bool; } - * } - * - * // actual foo.not will not be called, execution stops - * spyOn(foo, 'not'); - - // foo.not spied upon, execution will continue to implementation - * spyOn(foo, 'not').andCallThrough(); - * - * // fake example - * var foo = { - * not: function(bool) { return !bool; } - * } - * - * // foo.not(val) will return val - * spyOn(foo, 'not').andCallFake(function(value) {return value;}); - * - * // mock example - * foo.not(7 == 7); - * expect(foo.not).toHaveBeenCalled(); - * expect(foo.not).toHaveBeenCalledWith(true); - * - * @constructor - * @see spyOn, jasmine.createSpy, jasmine.createSpyObj - * @param {String} name - */ -jasmine.Spy = function(name) { - /** - * The name of the spy, if provided. - */ - this.identity = name || 'unknown'; - /** - * Is this Object a spy? - */ - this.isSpy = true; - /** - * The actual function this spy stubs. - */ - this.plan = function() { - }; - /** - * Tracking of the most recent call to the spy. - * @example - * var mySpy = jasmine.createSpy('foo'); - * mySpy(1, 2); - * mySpy.mostRecentCall.args = [1, 2]; - */ - this.mostRecentCall = {}; - - /** - * Holds arguments for each call to the spy, indexed by call count - * @example - * var mySpy = jasmine.createSpy('foo'); - * mySpy(1, 2); - * mySpy(7, 8); - * mySpy.mostRecentCall.args = [7, 8]; - * mySpy.argsForCall[0] = [1, 2]; - * mySpy.argsForCall[1] = [7, 8]; - */ - this.argsForCall = []; - this.calls = []; -}; - -/** - * Tells a spy to call through to the actual implemenatation. - * - * @example - * var foo = { - * bar: function() { // do some stuff } - * } - * - * // defining a spy on an existing property: foo.bar - * spyOn(foo, 'bar').andCallThrough(); - */ -jasmine.Spy.prototype.andCallThrough = function() { - this.plan = this.originalValue; - return this; -}; - -/** - * For setting the return value of a spy. - * - * @example - * // defining a spy from scratch: foo() returns 'baz' - * var foo = jasmine.createSpy('spy on foo').andReturn('baz'); - * - * // defining a spy on an existing property: foo.bar() returns 'baz' - * spyOn(foo, 'bar').andReturn('baz'); - * - * @param {Object} value - */ -jasmine.Spy.prototype.andReturn = function(value) { - this.plan = function() { - return value; - }; - return this; -}; - -/** - * For throwing an exception when a spy is called. - * - * @example - * // defining a spy from scratch: foo() throws an exception w/ message 'ouch' - * var foo = jasmine.createSpy('spy on foo').andThrow('baz'); - * - * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch' - * spyOn(foo, 'bar').andThrow('baz'); - * - * @param {String} exceptionMsg - */ -jasmine.Spy.prototype.andThrow = function(exceptionMsg) { - this.plan = function() { - throw exceptionMsg; - }; - return this; -}; - -/** - * Calls an alternate implementation when a spy is called. - * - * @example - * var baz = function() { - * // do some stuff, return something - * } - * // defining a spy from scratch: foo() calls the function baz - * var foo = jasmine.createSpy('spy on foo').andCall(baz); - * - * // defining a spy on an existing property: foo.bar() calls an anonymnous function - * spyOn(foo, 'bar').andCall(function() { return 'baz';} ); - * - * @param {Function} fakeFunc - */ -jasmine.Spy.prototype.andCallFake = function(fakeFunc) { - this.plan = fakeFunc; - return this; -}; - -/** - * Resets all of a spy's the tracking variables so that it can be used again. - * - * @example - * spyOn(foo, 'bar'); - * - * foo.bar(); - * - * expect(foo.bar.callCount).toEqual(1); - * - * foo.bar.reset(); - * - * expect(foo.bar.callCount).toEqual(0); - */ -jasmine.Spy.prototype.reset = function() { - this.wasCalled = false; - this.callCount = 0; - this.argsForCall = []; - this.calls = []; - this.mostRecentCall = {}; -}; - -jasmine.createSpy = function(name) { - - var spyObj = function() { - spyObj.wasCalled = true; - spyObj.callCount++; - var args = jasmine.util.argsToArray(arguments); - spyObj.mostRecentCall.object = this; - spyObj.mostRecentCall.args = args; - spyObj.argsForCall.push(args); - spyObj.calls.push({object: this, args: args}); - return spyObj.plan.apply(this, arguments); - }; - - var spy = new jasmine.Spy(name); - - for (var prop in spy) { - spyObj[prop] = spy[prop]; - } - - spyObj.reset(); - - return spyObj; -}; - -/** - * Determines whether an object is a spy. - * - * @param {jasmine.Spy|Object} putativeSpy - * @returns {Boolean} - */ -jasmine.isSpy = function(putativeSpy) { - return putativeSpy && putativeSpy.isSpy; -}; - -/** - * Creates a more complicated spy: an Object that has every property a function that is a spy. Used for stubbing something - * large in one call. - * - * @param {String} baseName name of spy class - * @param {Array} methodNames array of names of methods to make spies - */ -jasmine.createSpyObj = function(baseName, methodNames) { - if (!jasmine.isArray_(methodNames) || methodNames.length === 0) { - throw new Error('createSpyObj requires a non-empty array of method names to create spies for'); - } - var obj = {}; - for (var i = 0; i < methodNames.length; i++) { - obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]); - } - return obj; -}; - -/** - * All parameters are pretty-printed and concatenated together, then written to the current spec's output. - * - * Be careful not to leave calls to jasmine.log in production code. - */ -jasmine.log = function() { - var spec = jasmine.getEnv().currentSpec; - spec.log.apply(spec, arguments); -}; - -/** - * Function that installs a spy on an existing object's method name. Used within a Spec to create a spy. - * - * @example - * // spy example - * var foo = { - * not: function(bool) { return !bool; } - * } - * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops - * - * @see jasmine.createSpy - * @param obj - * @param methodName - * @returns a Jasmine spy that can be chained with all spy methods - */ -var spyOn = function(obj, methodName) { - return jasmine.getEnv().currentSpec.spyOn(obj, methodName); -}; -if (isCommonJS) exports.spyOn = spyOn; - -/** - * Creates a Jasmine spec that will be added to the current suite. - * - * // TODO: pending tests - * - * @example - * it('should be true', function() { - * expect(true).toEqual(true); - * }); - * - * @param {String} desc description of this specification - * @param {Function} func defines the preconditions and expectations of the spec - */ -var it = function(desc, func) { - return jasmine.getEnv().it(desc, func); -}; -if (isCommonJS) exports.it = it; - -/** - * Creates a disabled Jasmine spec. - * - * A convenience method that allows existing specs to be disabled temporarily during development. - * - * @param {String} desc description of this specification - * @param {Function} func defines the preconditions and expectations of the spec - */ -var xit = function(desc, func) { - return jasmine.getEnv().xit(desc, func); -}; -if (isCommonJS) exports.xit = xit; - -/** - * Starts a chain for a Jasmine expectation. - * - * It is passed an Object that is the actual value and should chain to one of the many - * jasmine.Matchers functions. - * - * @param {Object} actual Actual value to test against and expected value - */ -var expect = function(actual) { - return jasmine.getEnv().currentSpec.expect(actual); -}; -if (isCommonJS) exports.expect = expect; - -/** - * Defines part of a jasmine spec. Used in cominbination with waits or waitsFor in asynchrnous specs. - * - * @param {Function} func Function that defines part of a jasmine spec. - */ -var runs = function(func) { - jasmine.getEnv().currentSpec.runs(func); -}; -if (isCommonJS) exports.runs = runs; - -/** - * Waits a fixed time period before moving to the next block. - * - * @deprecated Use waitsFor() instead - * @param {Number} timeout milliseconds to wait - */ -var waits = function(timeout) { - jasmine.getEnv().currentSpec.waits(timeout); -}; -if (isCommonJS) exports.waits = waits; - -/** - * Waits for the latchFunction to return true before proceeding to the next block. - * - * @param {Function} latchFunction - * @param {String} optional_timeoutMessage - * @param {Number} optional_timeout - */ -var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { - jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments); -}; -if (isCommonJS) exports.waitsFor = waitsFor; - -/** - * A function that is called before each spec in a suite. - * - * Used for spec setup, including validating assumptions. - * - * @param {Function} beforeEachFunction - */ -var beforeEach = function(beforeEachFunction) { - jasmine.getEnv().beforeEach(beforeEachFunction); -}; -if (isCommonJS) exports.beforeEach = beforeEach; - -/** - * A function that is called after each spec in a suite. - * - * Used for restoring any state that is hijacked during spec execution. - * - * @param {Function} afterEachFunction - */ -var afterEach = function(afterEachFunction) { - jasmine.getEnv().afterEach(afterEachFunction); -}; -if (isCommonJS) exports.afterEach = afterEach; - -/** - * Defines a suite of specifications. - * - * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared - * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization - * of setup in some tests. - * - * @example - * // TODO: a simple suite - * - * // TODO: a simple suite with a nested describe block - * - * @param {String} description A string, usually the class under test. - * @param {Function} specDefinitions function that defines several specs. - */ -var describe = function(description, specDefinitions) { - return jasmine.getEnv().describe(description, specDefinitions); -}; -if (isCommonJS) exports.describe = describe; - -/** - * Disables a suite of specifications. Used to disable some suites in a file, or files, temporarily during development. - * - * @param {String} description A string, usually the class under test. - * @param {Function} specDefinitions function that defines several specs. - */ -var xdescribe = function(description, specDefinitions) { - return jasmine.getEnv().xdescribe(description, specDefinitions); -}; -if (isCommonJS) exports.xdescribe = xdescribe; - - -// Provide the XMLHttpRequest class for IE 5.x-6.x: -jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() { - function tryIt(f) { - try { - return f(); - } catch(e) { - } - return null; - } - - var xhr = tryIt(function() { - return new ActiveXObject("Msxml2.XMLHTTP.6.0"); - }) || - tryIt(function() { - return new ActiveXObject("Msxml2.XMLHTTP.3.0"); - }) || - tryIt(function() { - return new ActiveXObject("Msxml2.XMLHTTP"); - }) || - tryIt(function() { - return new ActiveXObject("Microsoft.XMLHTTP"); - }); - - if (!xhr) throw new Error("This browser does not support XMLHttpRequest."); - - return xhr; -} : XMLHttpRequest; -/** - * @namespace - */ -jasmine.util = {}; - -/** - * Declare that a child class inherit it's prototype from the parent class. - * - * @private - * @param {Function} childClass - * @param {Function} parentClass - */ -jasmine.util.inherit = function(childClass, parentClass) { - /** - * @private - */ - var subclass = function() { - }; - subclass.prototype = parentClass.prototype; - childClass.prototype = new subclass(); -}; - -jasmine.util.formatException = function(e) { - var lineNumber; - if (e.line) { - lineNumber = e.line; - } - else if (e.lineNumber) { - lineNumber = e.lineNumber; - } - - var file; - - if (e.sourceURL) { - file = e.sourceURL; - } - else if (e.fileName) { - file = e.fileName; - } - - var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString(); - - if (file && lineNumber) { - message += ' in ' + file + ' (line ' + lineNumber + ')'; - } - - return message; -}; - -jasmine.util.htmlEscape = function(str) { - if (!str) return str; - return str.replace(/&/g, '&') - .replace(//g, '>'); -}; - -jasmine.util.argsToArray = function(args) { - var arrayOfArgs = []; - for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]); - return arrayOfArgs; -}; - -jasmine.util.extend = function(destination, source) { - for (var property in source) destination[property] = source[property]; - return destination; -}; - -/** - * Environment for Jasmine - * - * @constructor - */ -jasmine.Env = function() { - this.currentSpec = null; - this.currentSuite = null; - this.currentRunner_ = new jasmine.Runner(this); - - this.reporter = new jasmine.MultiReporter(); - - this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL; - this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL; - this.lastUpdate = 0; - this.specFilter = function() { - return true; - }; - - this.nextSpecId_ = 0; - this.nextSuiteId_ = 0; - this.equalityTesters_ = []; - - // wrap matchers - this.matchersClass = function() { - jasmine.Matchers.apply(this, arguments); - }; - jasmine.util.inherit(this.matchersClass, jasmine.Matchers); - - jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass); -}; - - -jasmine.Env.prototype.setTimeout = jasmine.setTimeout; -jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout; -jasmine.Env.prototype.setInterval = jasmine.setInterval; -jasmine.Env.prototype.clearInterval = jasmine.clearInterval; - -/** - * @returns an object containing jasmine version build info, if set. - */ -jasmine.Env.prototype.version = function () { - if (jasmine.version_) { - return jasmine.version_; - } else { - throw new Error('Version not set'); - } -}; - -/** - * @returns string containing jasmine version build info, if set. - */ -jasmine.Env.prototype.versionString = function() { - if (!jasmine.version_) { - return "version unknown"; - } - - var version = this.version(); - var versionString = version.major + "." + version.minor + "." + version.build; - if (version.release_candidate) { - versionString += ".rc" + version.release_candidate; - } - versionString += " revision " + version.revision; - return versionString; -}; - -/** - * @returns a sequential integer starting at 0 - */ -jasmine.Env.prototype.nextSpecId = function () { - return this.nextSpecId_++; -}; - -/** - * @returns a sequential integer starting at 0 - */ -jasmine.Env.prototype.nextSuiteId = function () { - return this.nextSuiteId_++; -}; - -/** - * Register a reporter to receive status updates from Jasmine. - * @param {jasmine.Reporter} reporter An object which will receive status updates. - */ -jasmine.Env.prototype.addReporter = function(reporter) { - this.reporter.addReporter(reporter); -}; - -jasmine.Env.prototype.execute = function() { - this.currentRunner_.execute(); -}; - -jasmine.Env.prototype.describe = function(description, specDefinitions) { - var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite); - - var parentSuite = this.currentSuite; - if (parentSuite) { - parentSuite.add(suite); - } else { - this.currentRunner_.add(suite); - } - - this.currentSuite = suite; - - var declarationError = null; - try { - specDefinitions.call(suite); - } catch(e) { - declarationError = e; - } - - if (declarationError) { - this.it("encountered a declaration exception", function() { - throw declarationError; - }); - } - - this.currentSuite = parentSuite; - - return suite; -}; - -jasmine.Env.prototype.beforeEach = function(beforeEachFunction) { - if (this.currentSuite) { - this.currentSuite.beforeEach(beforeEachFunction); - } else { - this.currentRunner_.beforeEach(beforeEachFunction); - } -}; - -jasmine.Env.prototype.currentRunner = function () { - return this.currentRunner_; -}; - -jasmine.Env.prototype.afterEach = function(afterEachFunction) { - if (this.currentSuite) { - this.currentSuite.afterEach(afterEachFunction); - } else { - this.currentRunner_.afterEach(afterEachFunction); - } - -}; - -jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) { - return { - execute: function() { - } - }; -}; - -jasmine.Env.prototype.it = function(description, func) { - var spec = new jasmine.Spec(this, this.currentSuite, description); - this.currentSuite.add(spec); - this.currentSpec = spec; - - if (func) { - spec.runs(func); - } - - return spec; -}; - -jasmine.Env.prototype.xit = function(desc, func) { - return { - id: this.nextSpecId(), - runs: function() { - } - }; -}; - -jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) { - if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) { - return true; - } - - a.__Jasmine_been_here_before__ = b; - b.__Jasmine_been_here_before__ = a; - - var hasKey = function(obj, keyName) { - return obj !== null && obj[keyName] !== jasmine.undefined; - }; - - for (var property in b) { - if (!hasKey(a, property) && hasKey(b, property)) { - mismatchKeys.push("expected has key '" + property + "', but missing from actual."); - } - } - for (property in a) { - if (!hasKey(b, property) && hasKey(a, property)) { - mismatchKeys.push("expected missing key '" + property + "', but present in actual."); - } - } - for (property in b) { - if (property == '__Jasmine_been_here_before__') continue; - if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) { - mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual."); - } - } - - if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) { - mismatchValues.push("arrays were not the same length"); - } - - delete a.__Jasmine_been_here_before__; - delete b.__Jasmine_been_here_before__; - return (mismatchKeys.length === 0 && mismatchValues.length === 0); -}; - -jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) { - mismatchKeys = mismatchKeys || []; - mismatchValues = mismatchValues || []; - - for (var i = 0; i < this.equalityTesters_.length; i++) { - var equalityTester = this.equalityTesters_[i]; - var result = equalityTester(a, b, this, mismatchKeys, mismatchValues); - if (result !== jasmine.undefined) return result; - } - - if (a === b) return true; - - if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) { - return (a == jasmine.undefined && b == jasmine.undefined); - } - - if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) { - return a === b; - } - - if (a instanceof Date && b instanceof Date) { - return a.getTime() == b.getTime(); - } - - if (a instanceof jasmine.Matchers.Any) { - return a.matches(b); - } - - if (b instanceof jasmine.Matchers.Any) { - return b.matches(a); - } - - if (jasmine.isString_(a) && jasmine.isString_(b)) { - return (a == b); - } - - if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) { - return (a == b); - } - - if (typeof a === "object" && typeof b === "object") { - return this.compareObjects_(a, b, mismatchKeys, mismatchValues); - } - - //Straight check - return (a === b); -}; - -jasmine.Env.prototype.contains_ = function(haystack, needle) { - if (jasmine.isArray_(haystack)) { - for (var i = 0; i < haystack.length; i++) { - if (this.equals_(haystack[i], needle)) return true; - } - return false; - } - return haystack.indexOf(needle) >= 0; -}; - -jasmine.Env.prototype.addEqualityTester = function(equalityTester) { - this.equalityTesters_.push(equalityTester); -}; -/** No-op base class for Jasmine reporters. - * - * @constructor - */ -jasmine.Reporter = function() { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportRunnerStarting = function(runner) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportRunnerResults = function(runner) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportSuiteResults = function(suite) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportSpecStarting = function(spec) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportSpecResults = function(spec) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.log = function(str) { -}; - -/** - * Blocks are functions with executable code that make up a spec. - * - * @constructor - * @param {jasmine.Env} env - * @param {Function} func - * @param {jasmine.Spec} spec - */ -jasmine.Block = function(env, func, spec) { - this.env = env; - this.func = func; - this.spec = spec; -}; - -jasmine.Block.prototype.execute = function(onComplete) { - try { - this.func.apply(this.spec); - } catch (e) { - this.spec.fail(e); - } - onComplete(); -}; -/** JavaScript API reporter. - * - * @constructor - */ -jasmine.JsApiReporter = function() { - this.started = false; - this.finished = false; - this.suites_ = []; - this.results_ = {}; -}; - -jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) { - this.started = true; - var suites = runner.topLevelSuites(); - for (var i = 0; i < suites.length; i++) { - var suite = suites[i]; - this.suites_.push(this.summarize_(suite)); - } -}; - -jasmine.JsApiReporter.prototype.suites = function() { - return this.suites_; -}; - -jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) { - var isSuite = suiteOrSpec instanceof jasmine.Suite; - var summary = { - id: suiteOrSpec.id, - name: suiteOrSpec.description, - type: isSuite ? 'suite' : 'spec', - children: [] - }; - - if (isSuite) { - var children = suiteOrSpec.children(); - for (var i = 0; i < children.length; i++) { - summary.children.push(this.summarize_(children[i])); - } - } - return summary; -}; - -jasmine.JsApiReporter.prototype.results = function() { - return this.results_; -}; - -jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) { - return this.results_[specId]; -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) { - this.finished = true; -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) { - this.results_[spec.id] = { - messages: spec.results().getItems(), - result: spec.results().failedCount > 0 ? "failed" : "passed" - }; -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.log = function(str) { -}; - -jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){ - var results = {}; - for (var i = 0; i < specIds.length; i++) { - var specId = specIds[i]; - results[specId] = this.summarizeResult_(this.results_[specId]); - } - return results; -}; - -jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){ - var summaryMessages = []; - var messagesLength = result.messages.length; - for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) { - var resultMessage = result.messages[messageIndex]; - summaryMessages.push({ - text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined, - passed: resultMessage.passed ? resultMessage.passed() : true, - type: resultMessage.type, - message: resultMessage.message, - trace: { - stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined - } - }); - } - - return { - result : result.result, - messages : summaryMessages - }; -}; - -/** - * @constructor - * @param {jasmine.Env} env - * @param actual - * @param {jasmine.Spec} spec - */ -jasmine.Matchers = function(env, actual, spec, opt_isNot) { - this.env = env; - this.actual = actual; - this.spec = spec; - this.isNot = opt_isNot || false; - this.reportWasCalled_ = false; -}; - -// todo: @deprecated as of Jasmine 0.11, remove soon [xw] -jasmine.Matchers.pp = function(str) { - throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!"); -}; - -// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw] -jasmine.Matchers.prototype.report = function(result, failing_message, details) { - throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs"); -}; - -jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) { - for (var methodName in prototype) { - if (methodName == 'report') continue; - var orig = prototype[methodName]; - matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig); - } -}; - -jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) { - return function() { - var matcherArgs = jasmine.util.argsToArray(arguments); - var result = matcherFunction.apply(this, arguments); - - if (this.isNot) { - result = !result; - } - - if (this.reportWasCalled_) return result; - - var message; - if (!result) { - if (this.message) { - message = this.message.apply(this, arguments); - if (jasmine.isArray_(message)) { - message = message[this.isNot ? 1 : 0]; - } - } else { - var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); - message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate; - if (matcherArgs.length > 0) { - for (var i = 0; i < matcherArgs.length; i++) { - if (i > 0) message += ","; - message += " " + jasmine.pp(matcherArgs[i]); - } - } - message += "."; - } - } - var expectationResult = new jasmine.ExpectationResult({ - matcherName: matcherName, - passed: result, - expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0], - actual: this.actual, - message: message - }); - this.spec.addMatcherResult(expectationResult); - return jasmine.undefined; - }; -}; - - - - -/** - * toBe: compares the actual to the expected using === - * @param expected - */ -jasmine.Matchers.prototype.toBe = function(expected) { - return this.actual === expected; -}; - -/** - * toNotBe: compares the actual to the expected using !== - * @param expected - * @deprecated as of 1.0. Use not.toBe() instead. - */ -jasmine.Matchers.prototype.toNotBe = function(expected) { - return this.actual !== expected; -}; - -/** - * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc. - * - * @param expected - */ -jasmine.Matchers.prototype.toEqual = function(expected) { - return this.env.equals_(this.actual, expected); -}; - -/** - * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual - * @param expected - * @deprecated as of 1.0. Use not.toNotEqual() instead. - */ -jasmine.Matchers.prototype.toNotEqual = function(expected) { - return !this.env.equals_(this.actual, expected); -}; - -/** - * Matcher that compares the actual to the expected using a regular expression. Constructs a RegExp, so takes - * a pattern or a String. - * - * @param expected - */ -jasmine.Matchers.prototype.toMatch = function(expected) { - return new RegExp(expected).test(this.actual); -}; - -/** - * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch - * @param expected - * @deprecated as of 1.0. Use not.toMatch() instead. - */ -jasmine.Matchers.prototype.toNotMatch = function(expected) { - return !(new RegExp(expected).test(this.actual)); -}; - -/** - * Matcher that compares the actual to jasmine.undefined. - */ -jasmine.Matchers.prototype.toBeDefined = function() { - return (this.actual !== jasmine.undefined); -}; - -/** - * Matcher that compares the actual to jasmine.undefined. - */ -jasmine.Matchers.prototype.toBeUndefined = function() { - return (this.actual === jasmine.undefined); -}; - -/** - * Matcher that compares the actual to null. - */ -jasmine.Matchers.prototype.toBeNull = function() { - return (this.actual === null); -}; - -/** - * Matcher that boolean not-nots the actual. - */ -jasmine.Matchers.prototype.toBeTruthy = function() { - return !!this.actual; -}; - - -/** - * Matcher that boolean nots the actual. - */ -jasmine.Matchers.prototype.toBeFalsy = function() { - return !this.actual; -}; - - -/** - * Matcher that checks to see if the actual, a Jasmine spy, was called. - */ -jasmine.Matchers.prototype.toHaveBeenCalled = function() { - if (arguments.length > 0) { - throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); - } - - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - - this.message = function() { - return [ - "Expected spy " + this.actual.identity + " to have been called.", - "Expected spy " + this.actual.identity + " not to have been called." - ]; - }; - - return this.actual.wasCalled; -}; - -/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */ -jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled; - -/** - * Matcher that checks to see if the actual, a Jasmine spy, was not called. - * - * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead - */ -jasmine.Matchers.prototype.wasNotCalled = function() { - if (arguments.length > 0) { - throw new Error('wasNotCalled does not take arguments'); - } - - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - - this.message = function() { - return [ - "Expected spy " + this.actual.identity + " to not have been called.", - "Expected spy " + this.actual.identity + " to have been called." - ]; - }; - - return !this.actual.wasCalled; -}; - -/** - * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters. - * - * @example - * - */ -jasmine.Matchers.prototype.toHaveBeenCalledWith = function() { - var expectedArgs = jasmine.util.argsToArray(arguments); - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - this.message = function() { - if (this.actual.callCount === 0) { - // todo: what should the failure message for .not.toHaveBeenCalledWith() be? is this right? test better. [xw] - return [ - "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called.", - "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was." - ]; - } else { - return [ - "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall), - "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall) - ]; - } - }; - - return this.env.contains_(this.actual.argsForCall, expectedArgs); -}; - -/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */ -jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith; - -/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */ -jasmine.Matchers.prototype.wasNotCalledWith = function() { - var expectedArgs = jasmine.util.argsToArray(arguments); - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - - this.message = function() { - return [ - "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was", - "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was" - ]; - }; - - return !this.env.contains_(this.actual.argsForCall, expectedArgs); -}; - -/** - * Matcher that checks that the expected item is an element in the actual Array. - * - * @param {Object} expected - */ -jasmine.Matchers.prototype.toContain = function(expected) { - return this.env.contains_(this.actual, expected); -}; - -/** - * Matcher that checks that the expected item is NOT an element in the actual Array. - * - * @param {Object} expected - * @deprecated as of 1.0. Use not.toNotContain() instead. - */ -jasmine.Matchers.prototype.toNotContain = function(expected) { - return !this.env.contains_(this.actual, expected); -}; - -jasmine.Matchers.prototype.toBeLessThan = function(expected) { - return this.actual < expected; -}; - -jasmine.Matchers.prototype.toBeGreaterThan = function(expected) { - return this.actual > expected; -}; - -/** - * Matcher that checks that the expected item is equal to the actual item - * up to a given level of decimal precision (default 2). - * - * @param {Number} expected - * @param {Number} precision - */ -jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) { - if (!(precision === 0)) { - precision = precision || 2; - } - var multiplier = Math.pow(10, precision); - var actual = Math.round(this.actual * multiplier); - expected = Math.round(expected * multiplier); - return expected == actual; -}; - -/** - * Matcher that checks that the expected exception was thrown by the actual. - * - * @param {String} expected - */ -jasmine.Matchers.prototype.toThrow = function(expected) { - var result = false; - var exception; - if (typeof this.actual != 'function') { - throw new Error('Actual is not a function'); - } - try { - this.actual(); - } catch (e) { - exception = e; - } - if (exception) { - result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected)); - } - - var not = this.isNot ? "not " : ""; - - this.message = function() { - if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) { - return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' '); - } else { - return "Expected function to throw an exception."; - } - }; - - return result; -}; - -jasmine.Matchers.Any = function(expectedClass) { - this.expectedClass = expectedClass; -}; - -jasmine.Matchers.Any.prototype.matches = function(other) { - if (this.expectedClass == String) { - return typeof other == 'string' || other instanceof String; - } - - if (this.expectedClass == Number) { - return typeof other == 'number' || other instanceof Number; - } - - if (this.expectedClass == Function) { - return typeof other == 'function' || other instanceof Function; - } - - if (this.expectedClass == Object) { - return typeof other == 'object'; - } - - return other instanceof this.expectedClass; -}; - -jasmine.Matchers.Any.prototype.toString = function() { - return ''; -}; - -/** - * @constructor - */ -jasmine.MultiReporter = function() { - this.subReporters_ = []; -}; -jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter); - -jasmine.MultiReporter.prototype.addReporter = function(reporter) { - this.subReporters_.push(reporter); -}; - -(function() { - var functionNames = [ - "reportRunnerStarting", - "reportRunnerResults", - "reportSuiteResults", - "reportSpecStarting", - "reportSpecResults", - "log" - ]; - for (var i = 0; i < functionNames.length; i++) { - var functionName = functionNames[i]; - jasmine.MultiReporter.prototype[functionName] = (function(functionName) { - return function() { - for (var j = 0; j < this.subReporters_.length; j++) { - var subReporter = this.subReporters_[j]; - if (subReporter[functionName]) { - subReporter[functionName].apply(subReporter, arguments); - } - } - }; - })(functionName); - } -})(); -/** - * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults - * - * @constructor - */ -jasmine.NestedResults = function() { - /** - * The total count of results - */ - this.totalCount = 0; - /** - * Number of passed results - */ - this.passedCount = 0; - /** - * Number of failed results - */ - this.failedCount = 0; - /** - * Was this suite/spec skipped? - */ - this.skipped = false; - /** - * @ignore - */ - this.items_ = []; -}; - -/** - * Roll up the result counts. - * - * @param result - */ -jasmine.NestedResults.prototype.rollupCounts = function(result) { - this.totalCount += result.totalCount; - this.passedCount += result.passedCount; - this.failedCount += result.failedCount; -}; - -/** - * Adds a log message. - * @param values Array of message parts which will be concatenated later. - */ -jasmine.NestedResults.prototype.log = function(values) { - this.items_.push(new jasmine.MessageResult(values)); -}; - -/** - * Getter for the results: message & results. - */ -jasmine.NestedResults.prototype.getItems = function() { - return this.items_; -}; - -/** - * Adds a result, tracking counts (total, passed, & failed) - * @param {jasmine.ExpectationResult|jasmine.NestedResults} result - */ -jasmine.NestedResults.prototype.addResult = function(result) { - if (result.type != 'log') { - if (result.items_) { - this.rollupCounts(result); - } else { - this.totalCount++; - if (result.passed()) { - this.passedCount++; - } else { - this.failedCount++; - } - } - } - this.items_.push(result); -}; - -/** - * @returns {Boolean} True if everything below passed - */ -jasmine.NestedResults.prototype.passed = function() { - return this.passedCount === this.totalCount; -}; -/** - * Base class for pretty printing for expectation results. - */ -jasmine.PrettyPrinter = function() { - this.ppNestLevel_ = 0; -}; - -/** - * Formats a value in a nice, human-readable string. - * - * @param value - */ -jasmine.PrettyPrinter.prototype.format = function(value) { - if (this.ppNestLevel_ > 40) { - throw new Error('jasmine.PrettyPrinter: format() nested too deeply!'); - } - - this.ppNestLevel_++; - try { - if (value === jasmine.undefined) { - this.emitScalar('undefined'); - } else if (value === null) { - this.emitScalar('null'); - } else if (value === jasmine.getGlobal()) { - this.emitScalar(''); - } else if (value instanceof jasmine.Matchers.Any) { - this.emitScalar(value.toString()); - } else if (typeof value === 'string') { - this.emitString(value); - } else if (jasmine.isSpy(value)) { - this.emitScalar("spy on " + value.identity); - } else if (value instanceof RegExp) { - this.emitScalar(value.toString()); - } else if (typeof value === 'function') { - this.emitScalar('Function'); - } else if (typeof value.nodeType === 'number') { - this.emitScalar('HTMLNode'); - } else if (value instanceof Date) { - this.emitScalar('Date(' + value + ')'); - } else if (value.__Jasmine_been_here_before__) { - this.emitScalar(''); - } else if (jasmine.isArray_(value) || typeof value == 'object') { - value.__Jasmine_been_here_before__ = true; - if (jasmine.isArray_(value)) { - this.emitArray(value); - } else { - this.emitObject(value); - } - delete value.__Jasmine_been_here_before__; - } else { - this.emitScalar(value.toString()); - } - } finally { - this.ppNestLevel_--; - } -}; - -jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) { - for (var property in obj) { - if (property == '__Jasmine_been_here_before__') continue; - fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && - obj.__lookupGetter__(property) !== null) : false); - } -}; - -jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_; -jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_; -jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_; -jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_; - -jasmine.StringPrettyPrinter = function() { - jasmine.PrettyPrinter.call(this); - - this.string = ''; -}; -jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter); - -jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) { - this.append(value); -}; - -jasmine.StringPrettyPrinter.prototype.emitString = function(value) { - this.append("'" + value + "'"); -}; - -jasmine.StringPrettyPrinter.prototype.emitArray = function(array) { - this.append('[ '); - for (var i = 0; i < array.length; i++) { - if (i > 0) { - this.append(', '); - } - this.format(array[i]); - } - this.append(' ]'); -}; - -jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) { - var self = this; - this.append('{ '); - var first = true; - - this.iterateObject(obj, function(property, isGetter) { - if (first) { - first = false; - } else { - self.append(', '); - } - - self.append(property); - self.append(' : '); - if (isGetter) { - self.append(''); - } else { - self.format(obj[property]); - } - }); - - this.append(' }'); -}; - -jasmine.StringPrettyPrinter.prototype.append = function(value) { - this.string += value; -}; -jasmine.Queue = function(env) { - this.env = env; - this.blocks = []; - this.running = false; - this.index = 0; - this.offset = 0; - this.abort = false; -}; - -jasmine.Queue.prototype.addBefore = function(block) { - this.blocks.unshift(block); -}; - -jasmine.Queue.prototype.add = function(block) { - this.blocks.push(block); -}; - -jasmine.Queue.prototype.insertNext = function(block) { - this.blocks.splice((this.index + this.offset + 1), 0, block); - this.offset++; -}; - -jasmine.Queue.prototype.start = function(onComplete) { - this.running = true; - this.onComplete = onComplete; - this.next_(); -}; - -jasmine.Queue.prototype.isRunning = function() { - return this.running; -}; - -jasmine.Queue.LOOP_DONT_RECURSE = true; - -jasmine.Queue.prototype.next_ = function() { - var self = this; - var goAgain = true; - - while (goAgain) { - goAgain = false; - - if (self.index < self.blocks.length && !this.abort) { - var calledSynchronously = true; - var completedSynchronously = false; - - var onComplete = function () { - if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) { - completedSynchronously = true; - return; - } - - if (self.blocks[self.index].abort) { - self.abort = true; - } - - self.offset = 0; - self.index++; - - var now = new Date().getTime(); - if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) { - self.env.lastUpdate = now; - self.env.setTimeout(function() { - self.next_(); - }, 0); - } else { - if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) { - goAgain = true; - } else { - self.next_(); - } - } - }; - self.blocks[self.index].execute(onComplete); - - calledSynchronously = false; - if (completedSynchronously) { - onComplete(); - } - - } else { - self.running = false; - if (self.onComplete) { - self.onComplete(); - } - } - } -}; - -jasmine.Queue.prototype.results = function() { - var results = new jasmine.NestedResults(); - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].results) { - results.addResult(this.blocks[i].results()); - } - } - return results; -}; - - -/** - * Runner - * - * @constructor - * @param {jasmine.Env} env - */ -jasmine.Runner = function(env) { - var self = this; - self.env = env; - self.queue = new jasmine.Queue(env); - self.before_ = []; - self.after_ = []; - self.suites_ = []; -}; - -jasmine.Runner.prototype.execute = function() { - var self = this; - if (self.env.reporter.reportRunnerStarting) { - self.env.reporter.reportRunnerStarting(this); - } - self.queue.start(function () { - self.finishCallback(); - }); -}; - -jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) { - beforeEachFunction.typeName = 'beforeEach'; - this.before_.splice(0,0,beforeEachFunction); -}; - -jasmine.Runner.prototype.afterEach = function(afterEachFunction) { - afterEachFunction.typeName = 'afterEach'; - this.after_.splice(0,0,afterEachFunction); -}; - - -jasmine.Runner.prototype.finishCallback = function() { - this.env.reporter.reportRunnerResults(this); -}; - -jasmine.Runner.prototype.addSuite = function(suite) { - this.suites_.push(suite); -}; - -jasmine.Runner.prototype.add = function(block) { - if (block instanceof jasmine.Suite) { - this.addSuite(block); - } - this.queue.add(block); -}; - -jasmine.Runner.prototype.specs = function () { - var suites = this.suites(); - var specs = []; - for (var i = 0; i < suites.length; i++) { - specs = specs.concat(suites[i].specs()); - } - return specs; -}; - -jasmine.Runner.prototype.suites = function() { - return this.suites_; -}; - -jasmine.Runner.prototype.topLevelSuites = function() { - var topLevelSuites = []; - for (var i = 0; i < this.suites_.length; i++) { - if (!this.suites_[i].parentSuite) { - topLevelSuites.push(this.suites_[i]); - } - } - return topLevelSuites; -}; - -jasmine.Runner.prototype.results = function() { - return this.queue.results(); -}; -/** - * Internal representation of a Jasmine specification, or test. - * - * @constructor - * @param {jasmine.Env} env - * @param {jasmine.Suite} suite - * @param {String} description - */ -jasmine.Spec = function(env, suite, description) { - if (!env) { - throw new Error('jasmine.Env() required'); - } - if (!suite) { - throw new Error('jasmine.Suite() required'); - } - var spec = this; - spec.id = env.nextSpecId ? env.nextSpecId() : null; - spec.env = env; - spec.suite = suite; - spec.description = description; - spec.queue = new jasmine.Queue(env); - - spec.afterCallbacks = []; - spec.spies_ = []; - - spec.results_ = new jasmine.NestedResults(); - spec.results_.description = description; - spec.matchersClass = null; -}; - -jasmine.Spec.prototype.getFullName = function() { - return this.suite.getFullName() + ' ' + this.description + '.'; -}; - - -jasmine.Spec.prototype.results = function() { - return this.results_; -}; - -/** - * All parameters are pretty-printed and concatenated together, then written to the spec's output. - * - * Be careful not to leave calls to jasmine.log in production code. - */ -jasmine.Spec.prototype.log = function() { - return this.results_.log(arguments); -}; - -jasmine.Spec.prototype.runs = function (func) { - var block = new jasmine.Block(this.env, func, this); - this.addToQueue(block); - return this; -}; - -jasmine.Spec.prototype.addToQueue = function (block) { - if (this.queue.isRunning()) { - this.queue.insertNext(block); - } else { - this.queue.add(block); - } -}; - -/** - * @param {jasmine.ExpectationResult} result - */ -jasmine.Spec.prototype.addMatcherResult = function(result) { - this.results_.addResult(result); -}; - -jasmine.Spec.prototype.expect = function(actual) { - var positive = new (this.getMatchersClass_())(this.env, actual, this); - positive.not = new (this.getMatchersClass_())(this.env, actual, this, true); - return positive; -}; - -/** - * Waits a fixed time period before moving to the next block. - * - * @deprecated Use waitsFor() instead - * @param {Number} timeout milliseconds to wait - */ -jasmine.Spec.prototype.waits = function(timeout) { - var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this); - this.addToQueue(waitsFunc); - return this; -}; - -/** - * Waits for the latchFunction to return true before proceeding to the next block. - * - * @param {Function} latchFunction - * @param {String} optional_timeoutMessage - * @param {Number} optional_timeout - */ -jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { - var latchFunction_ = null; - var optional_timeoutMessage_ = null; - var optional_timeout_ = null; - - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; - switch (typeof arg) { - case 'function': - latchFunction_ = arg; - break; - case 'string': - optional_timeoutMessage_ = arg; - break; - case 'number': - optional_timeout_ = arg; - break; - } - } - - var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this); - this.addToQueue(waitsForFunc); - return this; -}; - -jasmine.Spec.prototype.fail = function (e) { - var expectationResult = new jasmine.ExpectationResult({ - passed: false, - message: e ? jasmine.util.formatException(e) : 'Exception', - trace: { stack: e.stack } - }); - this.results_.addResult(expectationResult); -}; - -jasmine.Spec.prototype.getMatchersClass_ = function() { - return this.matchersClass || this.env.matchersClass; -}; - -jasmine.Spec.prototype.addMatchers = function(matchersPrototype) { - var parent = this.getMatchersClass_(); - var newMatchersClass = function() { - parent.apply(this, arguments); - }; - jasmine.util.inherit(newMatchersClass, parent); - jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass); - this.matchersClass = newMatchersClass; -}; - -jasmine.Spec.prototype.finishCallback = function() { - this.env.reporter.reportSpecResults(this); -}; - -jasmine.Spec.prototype.finish = function(onComplete) { - this.removeAllSpies(); - this.finishCallback(); - if (onComplete) { - onComplete(); - } -}; - -jasmine.Spec.prototype.after = function(doAfter) { - if (this.queue.isRunning()) { - this.queue.add(new jasmine.Block(this.env, doAfter, this)); - } else { - this.afterCallbacks.unshift(doAfter); - } -}; - -jasmine.Spec.prototype.execute = function(onComplete) { - var spec = this; - if (!spec.env.specFilter(spec)) { - spec.results_.skipped = true; - spec.finish(onComplete); - return; - } - - this.env.reporter.reportSpecStarting(this); - - spec.env.currentSpec = spec; - - spec.addBeforesAndAftersToQueue(); - - spec.queue.start(function () { - spec.finish(onComplete); - }); -}; - -jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() { - var runner = this.env.currentRunner(); - var i; - - for (var suite = this.suite; suite; suite = suite.parentSuite) { - for (i = 0; i < suite.before_.length; i++) { - this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this)); - } - } - for (i = 0; i < runner.before_.length; i++) { - this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this)); - } - for (i = 0; i < this.afterCallbacks.length; i++) { - this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this)); - } - for (suite = this.suite; suite; suite = suite.parentSuite) { - for (i = 0; i < suite.after_.length; i++) { - this.queue.add(new jasmine.Block(this.env, suite.after_[i], this)); - } - } - for (i = 0; i < runner.after_.length; i++) { - this.queue.add(new jasmine.Block(this.env, runner.after_[i], this)); - } -}; - -jasmine.Spec.prototype.explodes = function() { - throw 'explodes function should not have been called'; -}; - -jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) { - if (obj == jasmine.undefined) { - throw "spyOn could not find an object to spy upon for " + methodName + "()"; - } - - if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) { - throw methodName + '() method does not exist'; - } - - if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) { - throw new Error(methodName + ' has already been spied upon'); - } - - var spyObj = jasmine.createSpy(methodName); - - this.spies_.push(spyObj); - spyObj.baseObj = obj; - spyObj.methodName = methodName; - spyObj.originalValue = obj[methodName]; - - obj[methodName] = spyObj; - - return spyObj; -}; - -jasmine.Spec.prototype.removeAllSpies = function() { - for (var i = 0; i < this.spies_.length; i++) { - var spy = this.spies_[i]; - spy.baseObj[spy.methodName] = spy.originalValue; - } - this.spies_ = []; -}; - -/** - * Internal representation of a Jasmine suite. - * - * @constructor - * @param {jasmine.Env} env - * @param {String} description - * @param {Function} specDefinitions - * @param {jasmine.Suite} parentSuite - */ -jasmine.Suite = function(env, description, specDefinitions, parentSuite) { - var self = this; - self.id = env.nextSuiteId ? env.nextSuiteId() : null; - self.description = description; - self.queue = new jasmine.Queue(env); - self.parentSuite = parentSuite; - self.env = env; - self.before_ = []; - self.after_ = []; - self.children_ = []; - self.suites_ = []; - self.specs_ = []; -}; - -jasmine.Suite.prototype.getFullName = function() { - var fullName = this.description; - for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { - fullName = parentSuite.description + ' ' + fullName; - } - return fullName; -}; - -jasmine.Suite.prototype.finish = function(onComplete) { - this.env.reporter.reportSuiteResults(this); - this.finished = true; - if (typeof(onComplete) == 'function') { - onComplete(); - } -}; - -jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) { - beforeEachFunction.typeName = 'beforeEach'; - this.before_.unshift(beforeEachFunction); -}; - -jasmine.Suite.prototype.afterEach = function(afterEachFunction) { - afterEachFunction.typeName = 'afterEach'; - this.after_.unshift(afterEachFunction); -}; - -jasmine.Suite.prototype.results = function() { - return this.queue.results(); -}; - -jasmine.Suite.prototype.add = function(suiteOrSpec) { - this.children_.push(suiteOrSpec); - if (suiteOrSpec instanceof jasmine.Suite) { - this.suites_.push(suiteOrSpec); - this.env.currentRunner().addSuite(suiteOrSpec); - } else { - this.specs_.push(suiteOrSpec); - } - this.queue.add(suiteOrSpec); -}; - -jasmine.Suite.prototype.specs = function() { - return this.specs_; -}; - -jasmine.Suite.prototype.suites = function() { - return this.suites_; -}; - -jasmine.Suite.prototype.children = function() { - return this.children_; -}; - -jasmine.Suite.prototype.execute = function(onComplete) { - var self = this; - this.queue.start(function () { - self.finish(onComplete); - }); -}; -jasmine.WaitsBlock = function(env, timeout, spec) { - this.timeout = timeout; - jasmine.Block.call(this, env, null, spec); -}; - -jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block); - -jasmine.WaitsBlock.prototype.execute = function (onComplete) { - if (jasmine.VERBOSE) { - this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...'); - } - this.env.setTimeout(function () { - onComplete(); - }, this.timeout); -}; -/** - * A block which waits for some condition to become true, with timeout. - * - * @constructor - * @extends jasmine.Block - * @param {jasmine.Env} env The Jasmine environment. - * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true. - * @param {Function} latchFunction A function which returns true when the desired condition has been met. - * @param {String} message The message to display if the desired condition hasn't been met within the given time period. - * @param {jasmine.Spec} spec The Jasmine spec. - */ -jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) { - this.timeout = timeout || env.defaultTimeoutInterval; - this.latchFunction = latchFunction; - this.message = message; - this.totalTimeSpentWaitingForLatch = 0; - jasmine.Block.call(this, env, null, spec); -}; -jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block); - -jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10; - -jasmine.WaitsForBlock.prototype.execute = function(onComplete) { - if (jasmine.VERBOSE) { - this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen')); - } - var latchFunctionResult; - try { - latchFunctionResult = this.latchFunction.apply(this.spec); - } catch (e) { - this.spec.fail(e); - onComplete(); - return; - } - - if (latchFunctionResult) { - onComplete(); - } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) { - var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen'); - this.spec.fail({ - name: 'timeout', - message: message - }); - - this.abort = true; - onComplete(); - } else { - this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT; - var self = this; - this.env.setTimeout(function() { - self.execute(onComplete); - }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT); - } -}; -// Mock setTimeout, clearTimeout -// Contributed by Pivotal Computer Systems, www.pivotalsf.com - -jasmine.FakeTimer = function() { - this.reset(); - - var self = this; - self.setTimeout = function(funcToCall, millis) { - self.timeoutsMade++; - self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false); - return self.timeoutsMade; - }; - - self.setInterval = function(funcToCall, millis) { - self.timeoutsMade++; - self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true); - return self.timeoutsMade; - }; - - self.clearTimeout = function(timeoutKey) { - self.scheduledFunctions[timeoutKey] = jasmine.undefined; - }; - - self.clearInterval = function(timeoutKey) { - self.scheduledFunctions[timeoutKey] = jasmine.undefined; - }; - -}; - -jasmine.FakeTimer.prototype.reset = function() { - this.timeoutsMade = 0; - this.scheduledFunctions = {}; - this.nowMillis = 0; -}; - -jasmine.FakeTimer.prototype.tick = function(millis) { - var oldMillis = this.nowMillis; - var newMillis = oldMillis + millis; - this.runFunctionsWithinRange(oldMillis, newMillis); - this.nowMillis = newMillis; -}; - -jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) { - var scheduledFunc; - var funcsToRun = []; - for (var timeoutKey in this.scheduledFunctions) { - scheduledFunc = this.scheduledFunctions[timeoutKey]; - if (scheduledFunc != jasmine.undefined && - scheduledFunc.runAtMillis >= oldMillis && - scheduledFunc.runAtMillis <= nowMillis) { - funcsToRun.push(scheduledFunc); - this.scheduledFunctions[timeoutKey] = jasmine.undefined; - } - } - - if (funcsToRun.length > 0) { - funcsToRun.sort(function(a, b) { - return a.runAtMillis - b.runAtMillis; - }); - for (var i = 0; i < funcsToRun.length; ++i) { - try { - var funcToRun = funcsToRun[i]; - this.nowMillis = funcToRun.runAtMillis; - funcToRun.funcToCall(); - if (funcToRun.recurring) { - this.scheduleFunction(funcToRun.timeoutKey, - funcToRun.funcToCall, - funcToRun.millis, - true); - } - } catch(e) { - } - } - this.runFunctionsWithinRange(oldMillis, nowMillis); - } -}; - -jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) { - this.scheduledFunctions[timeoutKey] = { - runAtMillis: this.nowMillis + millis, - funcToCall: funcToCall, - recurring: recurring, - timeoutKey: timeoutKey, - millis: millis - }; -}; - -/** - * @namespace - */ -jasmine.Clock = { - defaultFakeTimer: new jasmine.FakeTimer(), - - reset: function() { - jasmine.Clock.assertInstalled(); - jasmine.Clock.defaultFakeTimer.reset(); - }, - - tick: function(millis) { - jasmine.Clock.assertInstalled(); - jasmine.Clock.defaultFakeTimer.tick(millis); - }, - - runFunctionsWithinRange: function(oldMillis, nowMillis) { - jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis); - }, - - scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) { - jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring); - }, - - useMock: function() { - if (!jasmine.Clock.isInstalled()) { - var spec = jasmine.getEnv().currentSpec; - spec.after(jasmine.Clock.uninstallMock); - - jasmine.Clock.installMock(); - } - }, - - installMock: function() { - jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer; - }, - - uninstallMock: function() { - jasmine.Clock.assertInstalled(); - jasmine.Clock.installed = jasmine.Clock.real; - }, - - real: { - setTimeout: jasmine.getGlobal().setTimeout, - clearTimeout: jasmine.getGlobal().clearTimeout, - setInterval: jasmine.getGlobal().setInterval, - clearInterval: jasmine.getGlobal().clearInterval - }, - - assertInstalled: function() { - if (!jasmine.Clock.isInstalled()) { - throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()"); - } - }, - - isInstalled: function() { - return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer; - }, - - installed: null -}; -jasmine.Clock.installed = jasmine.Clock.real; - -//else for IE support -jasmine.getGlobal().setTimeout = function(funcToCall, millis) { - if (jasmine.Clock.installed.setTimeout.apply) { - return jasmine.Clock.installed.setTimeout.apply(this, arguments); - } else { - return jasmine.Clock.installed.setTimeout(funcToCall, millis); - } -}; - -jasmine.getGlobal().setInterval = function(funcToCall, millis) { - if (jasmine.Clock.installed.setInterval.apply) { - return jasmine.Clock.installed.setInterval.apply(this, arguments); - } else { - return jasmine.Clock.installed.setInterval(funcToCall, millis); - } -}; - -jasmine.getGlobal().clearTimeout = function(timeoutKey) { - if (jasmine.Clock.installed.clearTimeout.apply) { - return jasmine.Clock.installed.clearTimeout.apply(this, arguments); - } else { - return jasmine.Clock.installed.clearTimeout(timeoutKey); - } -}; - -jasmine.getGlobal().clearInterval = function(timeoutKey) { - if (jasmine.Clock.installed.clearTimeout.apply) { - return jasmine.Clock.installed.clearInterval.apply(this, arguments); - } else { - return jasmine.Clock.installed.clearInterval(timeoutKey); - } -}; - -jasmine.version_= { - "major": 1, - "minor": 1, - "build": 0, - "revision": 1315677058 -}; diff --git a/src/Serenity/WebContent/content/scripts/jasmine_favicon.png b/src/Serenity/WebContent/content/scripts/jasmine_favicon.png deleted file mode 100644 index 218f3b43713598fa5a3e78b57aceb909c33f46df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmV;419tq0P)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_0008u zNkl3{fod28|PjmA)7fYg4w8-(2my9xtBGOs}K`n&t1VzxMO^X)M zrW+Ln1udc?q6TP)z5gAjt)P&D!M$+HJK#x<`xnD030zwD?KrxxY!2tlA zGc-58?0D7SsT)7Km=v+tNVNUk`?s@;^OxCF)y6P}_mL;~7;S<@b|MzmKq)m8l@yky zT1~ECpxZw@64!nkI34QLiUsA%i%N>-$&zGYR7WJyi9ERMyS(%kf z7A_r)X>!90&m(FwDQZ>q;+nOa*KR2+E6Fz)QwU=W1Oyo*4>_qlm|~joa|{4_A_3W8 z#FFZzRp-xMIx5a7D_Fj3&#r^TbIY@cND1d0f*^qDIs{!pw!IWGQ_%l4#ASm_D5Vet z0%ek7^)@xPihX_G0&hIc9*14ca=D!8oG}vW?H%~w^F?f_s>zU|fKrNJXJ_d6{v!t( zpEoqMws_yQws>3o?VW8Txq~#->dJG^ELW5irR!s`(_JvD^6;r+ho~eIK@ia8_lH(h zt*-p?CFC1_h2MV=?jP){uW!7WjLjCaO&c1D+tf582!XEaoB#xWAYcN5f$sLtf$koW zQs{{>)ZTq?FC6|J_%n}AWbiFK(Bo-%^-{H`*)E(ucjo-r%SYm)W5f6tN=xz=S646E fNXW#U{x?4WXWJ").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"":"")+""),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="
"+""+"
";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.style.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&& -(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after" -,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cz.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cz.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cA(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cA(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/src/Serenity/WebContent/content/scripts/jquery.treeview.css b/src/Serenity/WebContent/content/scripts/jquery.treeview.css deleted file mode 100644 index 8927a99f9c..0000000000 --- a/src/Serenity/WebContent/content/scripts/jquery.treeview.css +++ /dev/null @@ -1,74 +0,0 @@ -.treeview, .treeview ul { - padding: 0; - margin: 0; - list-style: none; -} - -.treeview ul { - background-color: white; - margin-top: 4px; -} - -.treeview .hitarea { - background: url(images/treeview-default.gif) -64px -25px no-repeat; - height: 16px; - width: 16px; - margin-left: -16px; - float: left; - cursor: pointer; -} -/* fix for IE6 */ -* html .hitarea { - display: inline; - float:none; -} - -.treeview li { - margin: 0; - padding: 3px 0pt 3px 16px; -} - -.treeview a.selected { - background-color: #eee; -} - -#treecontrol { margin: 1em 0; display: none; } - -.treeview .hover { color: red; cursor: pointer; } - -.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; } -.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } - -.treeview .expandable-hitarea { background-position: -80px -3px; } - -.treeview li.last { background-position: 0 -1766px } -.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); } -.treeview li.lastCollapsable { background-position: 0 -111px } -.treeview li.lastExpandable { background-position: -32px -67px } - -.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; } - -.treeview-red li { background-image: url(images/treeview-red-line.gif); } -.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); } - -.treeview-black li { background-image: url(images/treeview-black-line.gif); } -.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); } - -.treeview-gray li { background-image: url(images/treeview-gray-line.gif); } -.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); } - -.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); } -.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); } - -.treeview .placeholder { - background: url(images/ajax-loader.gif) 0 0 no-repeat; - height: 16px; - width: 16px; - display: block; -} - -.filetree li { padding: 3px 0 2px 16px; } -.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; } -.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; } -.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; } -.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; } diff --git a/src/Serenity/WebContent/content/scripts/jquery.treeview.js b/src/Serenity/WebContent/content/scripts/jquery.treeview.js deleted file mode 100644 index 02b452c22a..0000000000 --- a/src/Serenity/WebContent/content/scripts/jquery.treeview.js +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Treeview 1.5pre - jQuery plugin to hide and show branches of a tree - * - * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ - * http://docs.jquery.com/Plugins/Treeview - * - * Copyright (c) 2007 Jörn Zaefferer - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Revision: $Id: jquery.treeview.js 5759 2008-07-01 07:50:28Z joern.zaefferer $ - * - */ - -;(function($) { - - // TODO rewrite as a widget, removing all the extra plugins - $.extend($.fn, { - swapClass: function(c1, c2) { - var c1Elements = this.filter('.' + c1); - this.filter('.' + c2).removeClass(c2).addClass(c1); - c1Elements.removeClass(c1).addClass(c2); - return this; - }, - replaceClass: function(c1, c2) { - return this.filter('.' + c1).removeClass(c1).addClass(c2).end(); - }, - hoverClass: function(className) { - className = className || "hover"; - return this.hover(function() { - $(this).addClass(className); - }, function() { - $(this).removeClass(className); - }); - }, - heightToggle: function(animated, callback) { - animated ? - this.animate({ height: "toggle" }, animated, callback) : - this.each(function(){ - jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ](); - if(callback) - callback.apply(this, arguments); - }); - }, - heightHide: function(animated, callback) { - if (animated) { - this.animate({ height: "hide" }, animated, callback); - } else { - this.hide(); - if (callback) - this.each(callback); - } - }, - prepareBranches: function(settings) { - if (!settings.prerendered) { - // mark last tree items - this.filter(":last-child:not(ul)").addClass(CLASSES.last); - // collapse whole tree, or only those marked as closed, anyway except those marked as open - this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide(); - } - // return all items with sublists - return this.filter(":has(>ul)"); - }, - applyClasses: function(settings, toggler) { - // TODO use event delegation - this.filter(":has(>ul):not(:has(>a))").find(">span").unbind("click.treeview").bind("click.treeview", function(event) { - // don't handle click events on children, eg. checkboxes - if ( this == event.target ) - toggler.apply($(this).next()); - }).add( $("a", this) ).hoverClass(); - - if (!settings.prerendered) { - // handle closed ones first - this.filter(":has(>ul:hidden)") - .addClass(CLASSES.expandable) - .replaceClass(CLASSES.last, CLASSES.lastExpandable); - - // handle open ones - this.not(":has(>ul:hidden)") - .addClass(CLASSES.collapsable) - .replaceClass(CLASSES.last, CLASSES.lastCollapsable); - - // create hitarea if not present - var hitarea = this.find("div." + CLASSES.hitarea); - if (!hitarea.length) - hitarea = this.prepend("
").find("div." + CLASSES.hitarea); - hitarea.removeClass().addClass(CLASSES.hitarea).each(function() { - var classes = ""; - $.each($(this).parent().attr("class").split(" "), function() { - classes += this + "-hitarea "; - }); - $(this).addClass( classes ); - }) - } - - // apply event to hitarea - this.find("div." + CLASSES.hitarea).click( toggler ); - }, - treeview: function(settings) { - - settings = $.extend({ - cookieId: "treeview" - }, settings); - - if ( settings.toggle ) { - var callback = settings.toggle; - settings.toggle = function() { - return callback.apply($(this).parent()[0], arguments); - }; - } - - // factory for treecontroller - function treeController(tree, control) { - // factory for click handlers - function handler(filter) { - return function() { - // reuse toggle event handler, applying the elements to toggle - // start searching for all hitareas - toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() { - // for plain toggle, no filter is provided, otherwise we need to check the parent element - return filter ? $(this).parent("." + filter).length : true; - }) ); - return false; - }; - } - // click on first element to collapse tree - $("a:eq(0)", control).click( handler(CLASSES.collapsable) ); - // click on second to expand tree - $("a:eq(1)", control).click( handler(CLASSES.expandable) ); - // click on third to toggle tree - $("a:eq(2)", control).click( handler() ); - } - - // handle toggle event - function toggler() { - $(this) - .parent() - // swap classes for hitarea - .find(">.hitarea") - .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) - .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) - .end() - // swap classes for parent li - .swapClass( CLASSES.collapsable, CLASSES.expandable ) - .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) - // find child lists - .find( ">ul" ) - // toggle them - .heightToggle( settings.animated, settings.toggle ); - if ( settings.unique ) { - $(this).parent() - .siblings() - // swap classes for hitarea - .find(">.hitarea") - .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) - .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) - .end() - .replaceClass( CLASSES.collapsable, CLASSES.expandable ) - .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) - .find( ">ul" ) - .heightHide( settings.animated, settings.toggle ); - } - } - this.data("toggler", toggler); - - function serialize() { - function binary(arg) { - return arg ? 1 : 0; - } - var data = []; - branches.each(function(i, e) { - data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; - }); - $.cookie(settings.cookieId, data.join(""), settings.cookieOptions ); - } - - function deserialize() { - var stored = $.cookie(settings.cookieId); - if ( stored ) { - var data = stored.split(""); - branches.each(function(i, e) { - $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ](); - }); - } - } - - // add treeview class to activate styles - this.addClass("treeview"); - - // prepare branches and find all tree items with child lists - var branches = this.find("li").prepareBranches(settings); - - switch(settings.persist) { - case "cookie": - var toggleCallback = settings.toggle; - settings.toggle = function() { - serialize(); - if (toggleCallback) { - toggleCallback.apply(this, arguments); - } - }; - deserialize(); - break; - case "location": - var current = this.find("a").filter(function() { - return this.href.toLowerCase() == location.href.toLowerCase(); - }); - if ( current.length ) { - // TODO update the open/closed classes - var items = current.addClass("selected").parents("ul, li").add( current.next() ).show(); - if (settings.prerendered) { - // if prerendered is on, replicate the basic class swapping - items.filter("li") - .swapClass( CLASSES.collapsable, CLASSES.expandable ) - .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) - .find(">.hitarea") - .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) - .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ); - } - } - break; - } - - branches.applyClasses(settings, toggler); - - // if control option is set, create the treecontroller and show it - if ( settings.control ) { - treeController(this, settings.control); - $(settings.control).show(); - } - - return this; - } - }); - - // classes used by the plugin - // need to be styled via external stylesheet, see first example - $.treeview = {}; - var CLASSES = ($.treeview.classes = { - open: "open", - closed: "closed", - expandable: "expandable", - expandableHitarea: "expandable-hitarea", - lastExpandableHitarea: "lastExpandable-hitarea", - collapsable: "collapsable", - collapsableHitarea: "collapsable-hitarea", - lastCollapsableHitarea: "lastCollapsable-hitarea", - lastCollapsable: "lastCollapsable", - lastExpandable: "lastExpandable", - last: "last", - hitarea: "hitarea" - }); - -})(jQuery); \ No newline at end of file diff --git a/src/Serenity/WebContent/content/scripts/serenity-jasmine.js b/src/Serenity/WebContent/content/scripts/serenity-jasmine.js deleted file mode 100644 index d4d4d5c078..0000000000 --- a/src/Serenity/WebContent/content/scripts/serenity-jasmine.js +++ /dev/null @@ -1,3 +0,0 @@ -$(document).ready(function () { - $('#all-specs-node').treeview(); -}); \ No newline at end of file diff --git a/src/Serenity/WebContent/jasmine.asset.config b/src/Serenity/WebContent/jasmine.asset.config deleted file mode 100644 index a02ec1038a..0000000000 --- a/src/Serenity/WebContent/jasmine.asset.config +++ /dev/null @@ -1,16 +0,0 @@ -jquery is jquery-1.7.min.js -jasmine-jquery is jasmine-jquery-1.3.1.js - -jasmine includes jasmine.css, jquery.treeview.css - -ordered set jasmine is -jquery -jasmine.js -jasmine-html.js -jasmine-jquery -jasmine-runner.js -jquery.treeview.js -serenity-jasmine.js - - - diff --git a/src/Serenity/WebDriverSettings.cs b/src/Serenity/WebDriverSettings.cs deleted file mode 100644 index e77c9a8e6e..0000000000 --- a/src/Serenity/WebDriverSettings.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using FubuCore.Configuration; -using OpenQA.Selenium; -using OpenQA.Selenium.Chrome; -using OpenQA.Selenium.Firefox; -using OpenQA.Selenium.IE; - -namespace Serenity -{ - public class WebDriverSettings - { - public static readonly string Filename = "browser.settings.config"; - private static readonly Lazy _settings = new Lazy(Read); - - public WebDriverSettings() - { - // Why is the default Firefox you ask? Because it's the first one that Jeremy got working on his box. - Browser = BrowserType.Firefox; - } - - public BrowserType Browser { get; set; } - - public static WebDriverSettings Read() - { - var settings = SettingsData.ReadFromFile(SettingCategory.core, Filename); - return SettingsProvider.For(settings).SettingsFor(); - } - - public static WebDriverSettings Current - { - get - { - return _settings.Value; - } - } - - public static Func DriverBuilder() - { - return DriverBuilder(Current.Browser); - } - - public static Func DriverBuilder(BrowserType browserType) - { - switch (browserType) - { - case BrowserType.Chrome: - return () => new ChromeDriver(); - - case BrowserType.IE: - return () => new InternetExplorerDriver(); - - case BrowserType.Firefox: - return () => new FirefoxDriver(); - - default: - throw new ArgumentOutOfRangeException("Unrecognized browser"); - } - } - } -} \ No newline at end of file diff --git a/src/Serenity/WebElementExtensions.cs b/src/Serenity/WebElementExtensions.cs deleted file mode 100644 index b0c602e243..0000000000 --- a/src/Serenity/WebElementExtensions.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using FubuMVC.Core.Runtime; -using FubuMVC.Core.Urls; -using OpenQA.Selenium; - -namespace Serenity -{ - public static class WebElementExtensions - { - public static bool IsCssLink(this IWebElement element) - { - return element.TagName == "link" && - element.GetMimeType() == MimeType.Css; - } - - public static string Href(this IWebElement element) - { - return element.GetAttribute("href"); - } - - public static string AssetName(this IWebElement element) - { - var parts = (element.Href() ?? element.GetAttribute("src")).Split('/').ToList(); - var index = parts.IndexOf(UrlRegistry.AssetsUrlFolder); - - return parts.Skip(index).Join("/"); - } - - public static MimeType GetMimeType(this IWebElement element) - { - return MimeType.MimeTypeByFileName(element.Href()); - } - - public static bool IsHiddenInput(this IWebElement element) - { - return element.TagName == "input" && element.GetAttribute("type") == "hidden"; - } - } -} \ No newline at end of file diff --git a/src/Serenity/packages.config b/src/Serenity/packages.config deleted file mode 100644 index cbf1f5ce49..0000000000 --- a/src/Serenity/packages.config +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/SerenityRunner/Program.cs b/src/SerenityRunner/Program.cs deleted file mode 100644 index da855755a5..0000000000 --- a/src/SerenityRunner/Program.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using FubuCore.CommandLine; -using Serenity.Jasmine; - -namespace SerenityRunner -{ - internal class Program - { - private static int Main(string[] args) - { - var success = false; - - try - { - var factory = new CommandFactory(); - factory.RegisterCommands(typeof (Program).Assembly); - factory.RegisterCommands(typeof (JasminePages).Assembly); - - - var executor = new CommandExecutor(factory); - success = executor.Execute(args); - } - catch (CommandFailureException e) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("ERROR: " + e.Message); - Console.ResetColor(); - return 1; - } - catch (Exception ex) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("ERROR: " + ex); - Console.ResetColor(); - return 1; - } - return success ? 0 : 1; - } - } -} \ No newline at end of file diff --git a/src/SerenityRunner/Properties/AssemblyInfo.cs b/src/SerenityRunner/Properties/AssemblyInfo.cs deleted file mode 100644 index 0c7b75b1f3..0000000000 --- a/src/SerenityRunner/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SerenityRunner")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SerenityRunner")] -[assembly: AssemblyCopyright("Copyright © 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("a89b7026-f66f-4406-a8e0-4a23a16febb4")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/SerenityRunner/SerenityRunner.csproj b/src/SerenityRunner/SerenityRunner.csproj deleted file mode 100644 index 1d8acf6385..0000000000 --- a/src/SerenityRunner/SerenityRunner.csproj +++ /dev/null @@ -1,81 +0,0 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {FC5172BC-C96A-4656-B87B-36978B19AD85} - Exe - Properties - SerenityRunner - SerenityRunner - v4.0 - - - 512 - - - x86 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - x86 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\FubuCore.0.9.9.151\lib\FubuCore.dll - - - - - - - - - - - - - - - - {900A0419-3579-4DAE-85BE-71A3E4B34239} - Serenity - - - - - Designer - - - Designer - - - - - chromedriver.exe - PreserveNewest - - - - - \ No newline at end of file diff --git a/src/SerenityRunner/app.config b/src/SerenityRunner/app.config deleted file mode 100644 index a14f907e2c..0000000000 --- a/src/SerenityRunner/app.config +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/SerenityRunner/packages.config b/src/SerenityRunner/packages.config deleted file mode 100644 index 31dc22893f..0000000000 --- a/src/SerenityRunner/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/StoryTellerTesting/Assets/writing_asset_tags_with_and_without_bottles.cs b/src/StoryTellerTesting/Assets/writing_asset_tags_with_and_without_bottles.cs index 9a5a6b496d..d7d2c6dcbf 100644 --- a/src/StoryTellerTesting/Assets/writing_asset_tags_with_and_without_bottles.cs +++ b/src/StoryTellerTesting/Assets/writing_asset_tags_with_and_without_bottles.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using FubuMVC.Core; +using FubuMVC.Core.Endpoints; using IntegrationTesting.Conneg; using NUnit.Framework; -using Serenity.Endpoints; using FubuTestingSupport; namespace IntegrationTesting.Assets diff --git a/src/StoryTellerTesting/Conneg/FubuRegistryRunner.cs b/src/StoryTellerTesting/Conneg/FubuRegistryRunner.cs index dbf7e7be9a..8f09722046 100644 --- a/src/StoryTellerTesting/Conneg/FubuRegistryRunner.cs +++ b/src/StoryTellerTesting/Conneg/FubuRegistryRunner.cs @@ -11,6 +11,7 @@ using FubuMVC.Core; using FubuMVC.Core.Diagnostics.HtmlWriting; using FubuMVC.Core.Diagnostics.Querying; +using FubuMVC.Core.Endpoints; using FubuMVC.Core.Packaging; using FubuMVC.Core.Runtime; using FubuMVC.Core.Urls; @@ -18,7 +19,6 @@ using FubuMVC.StructureMap; using FubuTestingSupport; using NUnit.Framework; -using Serenity.Endpoints; using StructureMap; namespace IntegrationTesting.Conneg diff --git a/src/StoryTellerTesting/Conneg/OutputFromAnActionThatReturnsStrings.cs b/src/StoryTellerTesting/Conneg/OutputFromAnActionThatReturnsStrings.cs index 5c49b9787d..95092e50c7 100644 --- a/src/StoryTellerTesting/Conneg/OutputFromAnActionThatReturnsStrings.cs +++ b/src/StoryTellerTesting/Conneg/OutputFromAnActionThatReturnsStrings.cs @@ -4,7 +4,6 @@ using FubuMVC.Core.Runtime; using FubuTestingSupport; using NUnit.Framework; -using Serenity.Endpoints; namespace IntegrationTesting.Conneg { diff --git a/src/StoryTellerTesting/IntegrationTesting.csproj b/src/StoryTellerTesting/IntegrationTesting.csproj index a45b451117..e244690e55 100644 --- a/src/StoryTellerTesting/IntegrationTesting.csproj +++ b/src/StoryTellerTesting/IntegrationTesting.csproj @@ -148,14 +148,6 @@ {90DBE31C-948D-47AF-8C17-0056511A7313} Fubu - - {5E69E72A-B92F-47BE-B7F7-6E6A926EC90F} - Serenity.Testing - - - {900A0419-3579-4DAE-85BE-71A3E4B34239} - Serenity - {1F18D6EB-4D9C-407A-BD70-C5D525E377B6} TestPackage1