API remove UploadField, AssetField and associated files

Fixes #6481
This commit is contained in:
Christopher Joe 2017-02-28 16:01:13 +13:00 committed by Damian Mooyman
parent 97a29c1ee2
commit 50deb17763
81 changed files with 2897 additions and 11213 deletions

View File

@ -3,7 +3,6 @@ client/dist/
admin/client/dist/
# Ignore legacy files
admin/client/src/legacy/AssetUploadField.js
admin/client/src/legacy/ConfirmedPasswordField.js
admin/client/src/legacy/DateField.js
admin/client/src/legacy/GridField.js
@ -16,10 +15,6 @@ admin/client/src/legacy/TinyMCE_SSPlugin.js
admin/client/src/legacy/ToggleCompositeField.js
admin/client/src/legacy/ToggleField.js
admin/client/src/legacy/TreeDropdownField.js
admin/client/src/legacy/UploadField.js
admin/client/src/legacy/UploadField_downloadtemplate.js
admin/client/src/legacy/UploadField_select.js
admin/client/src/legacy/UploadField_uploadtemplate.js
admin/client/src/i18n.js
admin/client/src/i18nx.js
admin/client/src/jQuery.js

View File

@ -329,7 +329,6 @@ mappings:
EncryptAllPasswordsTask: SilverStripe\Dev\Tasks\EncryptAllPasswordsTask
i18nTextCollectorTask: SilverStripe\Dev\Tasks\i18nTextCollectorTask
MigrateFileTask: SilverStripe\Dev\Tasks\MigrateFileTask
AssetField: SilverStripe\Forms\AssetField
CheckboxField: SilverStripe\Forms\CheckboxField
CheckboxField_Readonly: SilverStripe\Forms\CheckboxField_Readonly
CheckboxSetField: SilverStripe\Forms\CheckboxSetField
@ -399,9 +398,6 @@ mappings:
TreeDropdownField_Readonly: SilverStripe\Forms\TreeDropdownField_Readonly
TreeMultiselectField: SilverStripe\Forms\TreeMultiselectField
TreeMultiselectField_Readonly: SilverStripe\Forms\TreeMultiselectField_Readonly
UploadField: SilverStripe\Forms\UploadField
UploadField_ItemHandler: SilverStripe\Forms\UploadField_ItemHandler
UploadField_SelectHandler: SilverStripe\Forms\UploadField_SelectHandler
Validator: SilverStripe\Forms\Validator
HTMLEditorConfig: SilverStripe\Forms\HTMLEditor\HTMLEditorConfig
HTMLEditorField: SilverStripe\Forms\HTMLEditor\HTMLEditorField
@ -655,10 +651,6 @@ mappings:
YamlFixtureTest: SilverStripe\Dev\Tests\YamlFixtureTest
YamlFixtureTest_DataObject: SilverStripe\Dev\Tests\YamlFixtureTest\TestDataObject
YamlFixtureTest_DataObjectRelation: SilverStripe\Dev\Tests\YamlFixtureTest\DataObjectRelation
AssetFieldTest: SilverStripe\Forms\Tests\AssetFieldTest
AssetFieldTest_Object: SilverStripe\Forms\Tests\AssetFieldTest\TestObject
AssetFieldTest_Form: SilverStripe\Forms\Tests\AssetFieldTest\TestForm
AssetFieldTest_Controller: SilverStripe\Forms\Tests\AssetFieldTest\TestController
CheckboxFieldTest: SilverStripe\Forms\Tests\CheckboxFieldTest
CheckboxFieldTest_Article: SilverStripe\Forms\Tests\CheckboxFieldtest\Article
CheckboxSetFieldTest: SilverStripe\Forms\Tests\CheckboxSetFieldTest
@ -731,12 +723,6 @@ mappings:
TextFieldTest: SilverStripe\Forms\Tests\TextFieldTest
TimeFieldTest: SilverStripe\Forms\Tests\TimeFieldTest
TreeDropdownFieldTest: SilverStripe\Forms\Tests\TreeDropdownFieldTest
UploadFieldTest: SilverStripe\Forms\Tests\UploadFieldTest
UploadFieldTest_Record: SilverStripe\Forms\Tests\UploadFieldTest\TestRecord
UploadFieldTest_FileExtension: SilverStripe\Forms\Tests\UploadFieldTest\FileExtension
UploadFieldTest_ExtendedFile: SilverStripe\Forms\Tests\UploadFieldTest\ExtendedFile
UploadFieldTestForm: SilverStripe\Forms\Tests\UploadFieldTest\UploadFieldTestForm
UploadFieldTest_Controller: SilverStripe\Forms\Tests\UploadFieldTest\TestController
i18nTest: SilverStripe\i18n\Tests\i18nTest
i18nTest_DataObject: SilverStripe\i18n\Tests\i18Test\TestDataObject
i18nTest_Object: SilverStripe\i18n\Tests\i18Test\TestObject

View File

@ -1,94 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by Fontastic.me</metadata>
<defs>
<font id="silverstripe" horiz-adv-x="512">
<font-face font-family="silverstripe" units-per-em="512" ascent="480" descent="-32"/>
<missing-glyph horiz-adv-x="512" />
<glyph glyph-name="search" unicode="&#115;" d="M450 117c10-12 11-22 3-32 0 0-24-24-24-24-12-10-24-10-35 0 0 0-97 98-97 98-25-15-52-22-80-22-44 0-82 16-114 49-33 32-49 70-49 114 0 44 16 81 46 112 31 31 68 47 112 47 44 0 82-16 115-49 32-32 49-70 49-114 0-30-8-58-24-83 0 0 98-96 98-96m-348 183c0-30 12-57 35-80 23-23 50-35 80-35 30 0 56 11 77 33 22 21 33 47 33 78 0 30-12 56-35 79-23 23-50 35-80 35-30 0-56-11-77-33-22-21-33-47-33-77"/>
<glyph glyph-name="sync" unicode="&#99;" d="M141 148c0 0 60 60 60 60 0 0 0-150 0-150 0 0-142 9-142 9 0 0 45 44 45 44-39 41-59 91-58 148 1 57 21 107 62 148 34 34 75 53 122 59 0 0 2-52 2-52-34-6-63-21-88-45-30-30-45-67-46-109 0-43 14-80 43-112m170 307c0 0 142-9 142-9 0 0-45-44-45-44 39-41 59-91 58-148-1-57-21-107-62-148-32-33-73-53-122-60 0 0-1 53-1 53 33 6 62 21 87 45 30 30 45 67 46 109 0 43-14 80-43 112 0 0-59-60-59-60 0 0-1 150-1 150"/>
<glyph glyph-name="print" unicode="&#100;" d="M39 346c-9 0-13 4-11 11 1 4 3 6 6 8 0 0 9 2 25 8 16 6 32 12 47 17 16 5 26 7 30 7 0 0 23 0 23 0 0 0 0 77 0 77 0 0 194 0 194 0 0 0 0-77 0-77 0 0 24 0 24 0 4 0 14-2 29-7 15-5 31-11 47-17 16-6 25-8 25-8 6-3 8-8 6-14-1-3-4-5-10-5 0 0-435 0-435 0m440-29c7 0 13-3 19-9 6-7 9-14 9-21 0 0 0-89 0-89 0-8-3-15-9-21-6-7-12-10-19-10 0 0-51 0-51 0 0 0 23-128 23-128 0 0-390 0-390 0 0 0 23 128 23 128 0 0-50 0-50 0-7 0-14 3-20 10-6 6-9 13-9 21 0 0 0 89 0 89 0 7 3 14 9 21 6 6 13 9 20 9 0 0 445 0 445 0m-366-227c0 0 286 0 286 0 0 0-35 166-35 166 0 0-216 0-216 0 0 0-35-166-35-166"/>
<glyph glyph-name="list" unicode="&#101;" d="M110 110c0-16-6-28-16-39-11-11-24-16-39-16-15 0-28 5-39 16-11 11-16 23-16 39 0 15 5 28 16 39 11 10 24 16 39 16 15 0 28-6 39-16 10-11 16-24 16-39z m0 146c0-15-6-28-16-39-11-11-24-16-39-16-15 0-28 5-39 16-11 11-16 24-16 39 0 15 5 28 16 39 11 11 24 16 39 16 15 0 28-5 39-16 10-11 16-24 16-39z m402-119l0-55c0-2-1-4-3-6-2-2-4-3-6-3l-348 0c-2 0-4 1-6 3-2 2-3 4-3 6l0 55c0 3 1 5 3 7 2 1 4 2 6 2l348 0c2 0 4-1 6-2 2-2 3-4 3-7z m-402 265c0-15-6-28-16-39-11-10-24-16-39-16-15 0-28 6-39 16-11 11-16 24-16 39 0 16 5 28 16 39 11 11 24 16 39 16 15 0 28-5 39-16 10-11 16-23 16-39z m402-119l0-54c0-3-1-5-3-7-2-2-4-3-6-3l-348 0c-2 0-4 1-6 3-2 2-3 4-3 7l0 54c0 3 1 5 3 7 2 2 4 3 6 3l348 0c2 0 4-1 6-3 2-2 3-4 3-7z m0 147l0-55c0-3-1-5-3-7-2-1-4-2-6-2l-348 0c-2 0-4 1-6 2-2 2-3 4-3 7l0 55c0 2 1 4 3 6 2 2 4 3 6 3l348 0c2 0 4-1 6-3 2-2 3-4 3-6z"/>
<glyph glyph-name="plus-circled" unicode="&#102;" d="M256 471c59 0 110-21 152-63 42-42 63-93 63-152 0-59-21-110-63-152-42-42-93-63-152-63-59 0-110 21-152 63-42 42-63 93-63 152 0 59 21 110 63 152 42 42 93 63 152 63m27-241c0 0 102 0 102 0 0 0 0 53 0 53 0 0-102 0-102 0 0 0 0 103 0 103 0 0-53 0-53 0 0 0 0-103 0-103 0 0-103 0-103 0 0 0 0-53 0-53 0 0 103 0 103 0 0 0 0-103 0-103 0 0 53 0 53 0 0 0 0 103 0 103"/>
<glyph glyph-name="check-mark-2" unicode="&#107;" d="M421 246l0-91c0-22-8-42-25-58-16-16-35-24-58-24l-237 0c-23 0-42 8-59 24-16 16-24 36-24 58l0 238c0 23 8 42 24 58 17 16 36 24 59 24l237 0c12 0 23-2 34-7 3-1 4-3 5-6 0-4 0-6-3-9l-14-14c-2-1-4-2-6-2-1 0-2 0-3 0-4 1-9 2-13 2l-237 0c-13 0-24-5-33-14-9-9-13-19-13-32l0-238c0-12 4-23 13-32 9-9 20-13 33-13l237 0c13 0 24 4 33 13 9 9 13 20 13 32l0 73c0 2 1 5 3 6l18 19c2 1 4 2 6 2 2 0 3 0 4 0 4-2 6-5 6-9z m66 140l-233-233c-5-4-10-6-16-6-7 0-12 2-17 6l-122 123c-5 5-7 10-7 17 0 6 2 11 7 16l31 31c5 5 10 7 16 7 7 0 12-2 17-7l75-75 185 185c4 5 10 7 16 7 6 0 12-2 16-7l32-31c4-5 6-10 6-17 0-6-2-11-6-16z"/>
<glyph glyph-name="book" unicode="&#110;" d="M426 381c6-3 9-8 9-14 0 0 0-288 0-288 0-5-2-9-6-13-4-4-9-6-14-6-16 0-24 7-24 19 0 0 0 267 0 267 0 4-2 7-6 9 0 0-207 111-207 111-11 3-22 2-35-5-15-7-24-15-28-23 0 0 209-116 209-116 6-3 9-8 9-15 0 0 0-281 0-281 0-8-3-13-9-15-2-1-5-2-9-2-4 0-8 1-10 2-3 2-37 24-103 65-66 42-103 64-109 67-9 7-13 12-13 18 0 0-3 268-3 268 0 10 2 18 7 27 10 15 27 29 52 39 25 11 45 12 60 5 0 0 230-119 230-119"/>
<glyph glyph-name="book-open" unicode="&#111;" d="M200 199c0 0 0-35 0-35 0 0-103 41-103 41 0 0 0 35 0 35 0 0 103-41 103-41m0 106c0 0 0-35 0-35 0 0-103 41-103 41 0 0 0 35 0 35 0 0 103-41 103-41m275 177c8-4 11-11 11-21 0 0 0-328 0-328 0-11-5-19-16-23 0 0-204-82-204-82-2-1-4-1-5-1-1 0-1-1-2-1-1 0-2 0-3 0-1 0-2 0-3 0-1 0-1 1-2 1 0 0-5 1-5 1 0 0-204 82-204 82-11 4-16 12-16 23 0 0 0 328 0 328 0 10 3 17 11 21 7 6 15 7 23 3 0 0 196-78 196-78 0 0 196 78 196 78 8 4 16 3 23-3m-245-403c0 0 0 287 0 287 0 0-163 65-163 65 0 0 0-287 0-287 0 0 163-65 163-65m215 65c0 0 0 287 0 287 0 0-163-65-163-65 0 0 0-287 0-287 0 0 163 65 163 65m-30 96c0 0 0-35 0-35 0 0-103-41-103-41 0 0 0 35 0 35 0 0 103 41 103 41m0 106c0 0 0-35 0-35 0 0-103-41-103-41 0 0 0 35 0 35 0 0 103 41 103 41"/>
<glyph glyph-name="plus" unicode="&#106;" d="M418 418c-45 43-102 66-162 66-60 0-117-23-162-66-43-45-66-102-66-162 0-60 23-117 66-162 45-43 102-66 162-66 60 0 117 23 162 66 43 45 66 102 66 162 0 60-23 117-66 162z m-37-287c-34-34-77-51-125-51-48 0-91 17-125 51-34 34-51 77-51 125 0 48 17 91 51 125 34 34 77 51 125 51 48 0 91-17 125-51 34-34 51-77 51-125 0-48-17-91-51-125z m-14 99l-85 0 0-85-52 0 0 85-85 0 0 52 85 0 0 85 52 0 0-85 85 0z"/>
<glyph glyph-name="tree" unicode="&#112;" d="M358 401l0 43c0 17 15 28 29 28l68 0c17 0 29-14 29-28l0-117c0-17-15-28-29-28l-65 0c-17 0-29 14-29 28l0 46-94 0c0-9 0-217 0-217 0-8 6-14 15-14l76 0 0 43c0 17 15 28 29 28l68 0c17 0 29-14 29-28l0-117c0-17-15-28-29-28l-65 0c-17 0-29 14-29 28l0 43-79 0c-26 0-46 20-46 43l0 219-82 0 0-43c0-17-15-28-29-28l-68 0c-17 0-29 14-29 28l0 114c0 17 15 28 29 28l65 0c17 0 29-14 29-28l0-43z"/>
<glyph glyph-name="flow-tree" unicode="&#113;" d="M460 134c24-11 37-31 37-57 0-17-6-32-18-44-12-12-27-18-44-18-17 0-31 6-43 18-12 12-18 27-18 44 0 26 12 46 37 57 0 0 0 59 0 59 0 26-13 39-39 39 0 0-51 0-51 0-16 0-29 2-40 7 0 0 0-105 0-105 24-11 36-31 36-57 0-17-6-32-17-44-12-12-27-18-44-18-17 0-32 6-44 18-11 12-17 27-17 44 0 26 12 46 36 57 0 0 0 105 0 105-10-5-23-7-38-7 0 0-52 0-52 0-11 0-20-3-27-9-6-7-10-12-11-17-1-5-2-9-2-13 0 0 0-59 0-59 25-11 37-31 37-57 0-17-6-32-18-44-12-12-26-18-43-18-17 0-32 6-44 18-12 12-18 27-18 44 0 26 13 46 37 57 0 0 0 59 0 59 0 21 8 41 22 60 15 18 37 28 67 28 0 0 52 0 52 0 25 0 38 8 38 26 0 0 0 72 0 72-24 11-36 30-36 56 0 17 6 32 17 44 12 12 27 18 44 18 17 0 32-6 44-18 11-12 17-27 17-44 0-26-12-45-36-56 0 0 0-72 0-72 0-18 13-26 40-26 0 0 51 0 51 0 29 0 51-10 66-28 14-19 22-39 22-60 0 0 0-59 0-59m-347-57c0 10-4 19-11 25-7 7-16 11-25 11-10 0-18-4-25-11-7-6-10-15-10-25 0-10 3-18 10-25 7-7 15-10 25-10 9 0 18 3 25 10 7 7 11 15 11 25m108 358c0-9 4-18 10-24 7-7 15-11 25-11 10 0 18 4 25 11 7 6 11 15 11 24 0 10-4 19-11 26-7 7-15 10-25 10-10 0-18-3-25-10-6-7-10-16-10-26m71-358c0 10-4 19-11 25-7 7-15 11-25 11-10 0-18-4-25-11-6-6-10-15-10-25 0-10 4-18 10-25 7-7 15-10 25-10 10 0 18 3 25 10 7 7 11 15 11 25m143-35c10 0 18 3 25 10 7 7 11 15 11 25 0 10-4 19-11 25-7 7-15 11-25 11-9 0-18-4-24-11-7-6-11-15-11-25 0-10 4-18 11-25 6-7 15-10 24-10"/>
<glyph glyph-name="info-circled" unicode="&#121;" d="M253 492c65 0 120-22 167-67 46-45 70-100 72-165 0-65-22-121-68-167-45-47-100-71-165-73-65 0-121 22-167 68-47 45-71 100-72 165-1 65 21 121 67 167 46 47 101 71 166 72m27-78c-15 0-26-4-34-13-8-8-12-16-12-25 0-10 2-17 8-23 6-5 14-8 25-8 13 0 24 4 31 11 8 8 12 17 12 28 0 20-10 30-30 30m-62-304c10 0 25 4 43 13 19 9 37 22 54 40 0 0-9 12-9 12-16-12-28-18-37-18-4 0-5 6-2 19 0 0 22 82 22 82 9 33 5 49-11 49-11 0-26-5-46-15-20-10-40-22-59-38 0 0 8-13 8-13 18 11 31 17 38 17 4 0 4-6 0-17 0 0-18-78-18-78-9-36-3-53 17-53"/>
<glyph glyph-name="chart-line" unicode="&#66;" d="M17 222c-14 4-20 13-16 29 3 14 12 20 27 16 0 0 50-12 50-12 0 0-26-41-26-41 0 0-35 8-35 8m455-6c4 4 10 6 16 6 7-1 12-3 16-8 11-11 11-22-1-33 0 0-128-115-128-115-5-4-10-6-16-6-5 0-9 2-14 5 0 0-146 112-146 112 0 0-28 8-28 8 0 0 26 40 26 40 0 0 18-4 18-4 4-1 7-2 8-4 0 0 135-104 135-104 0 0 114 103 114 103m-251 112c0 0-178-280-178-280-4-8-11-12-20-12-4 0-8 2-12 5-5 3-9 8-10 14-1 7 0 12 3 17 0 0 191 300 191 300 3 6 7 9 14 11 6 2 12 1 19-3 0 0 125-80 125-80 0 0 115 166 115 166 4 6 9 9 15 10 6 1 12-1 17-5 13-8 15-18 6-31 0 0-128-185-128-185-9-12-19-14-32-6 0 0-125 79-125 79"/>
<glyph glyph-name="graph-bar" unicode="&#69;" d="M236 204l-73 0c-4 0-7-4-7-8l0-112c0-4 3-8 7-8l73 0c4 0 8 4 8 8l0 112c0 5-4 8-8 8z m113 232l-73 0c-4 0-8-4-8-8l0-344c0-4 4-8 8-8l73 0c4 0 7 4 7 8l0 344c0 4-3 8-7 8z m113-105l-72 0c-5 0-8-3-8-7l0-240c0-4 3-8 8-8l72 0c4 0 8 4 8 8l0 240c0 4-4 7-8 7z m-340 0l-72 0c-4 0-8-3-8-7l0-240c0-4 4-8 8-8l72 0c5 0 8 4 8 8l0 240c0 4-3 7-8 7z"/>
<glyph glyph-name="torsos-all" unicode="&#70;" d="M492 217l-83 40c20 12 33 36 33 63 0 40-28 72-62 72-12 0-23-4-32-11 6-14 9-29 9-46 0-24-7-48-20-67 4-5 9-9 15-12l0 0 53-25c15-8 25-24 25-41l0-70 57 0c7 0 14 7 14 16l0 66c0 7-4 13-9 15z m-330 40c4 3 8 6 12 10-13 19-21 43-21 68 0 17 4 33 10 47-10 6-20 10-31 10-34 0-62-32-62-72 0-28 14-52 34-64l-84-39c-5-2-9-8-9-15l0-66c0-9 7-16 14-16l55 0 0 70c0 17 10 34 26 41z m232-49l-72 34-31 15c14 8 25 21 32 37 5 12 9 26 9 41 0 9-2 17-4 24-9 38-38 65-73 65-34 0-63-26-73-63-2-8-3-17-3-26 0-16 3-31 10-44 7-14 18-27 31-35l-29-13-75-35c-6-3-10-10-10-18l0-82c0-11 7-20 17-20l264 0c10 0 18 9 18 20l0 82c0 8-5 15-11 18z"/>
<glyph glyph-name="torso" unicode="&#72;" d="M410 203l-80 38-34 16c15 9 27 24 35 41 6 14 10 29 10 46 0 9-1 18-4 27-10 41-42 72-81 72-38 0-70-30-81-70-2-9-4-19-4-29 0-18 4-34 11-49 8-16 20-30 35-39l-32-15-83-38c-7-4-12-12-12-21l0-91c0-12 8-22 19-22l294 0c11 0 19 10 19 22l0 91c0 9-4 17-12 21z"/>
<glyph glyph-name="picture" unicode="&#118;" d="M438 342c0 0-51 0-51 0 0 0-63 77-63 77 0 0-110-77-110-77 0 0-92 0-92 0-18 0-33-7-46-20-13-13-19-29-19-47 0 0 0-81 0-81 0 0-56 151-56 151-3 13 1 22 11 27 0 0 349 127 349 127 12 3 20-1 25-13 0 0 52-144 52-144m55-46c5 0 10-2 14-6 3-4 5-9 5-15 0 0 0-241 0-241 0-6-2-10-5-15-4-4-9-6-14-6 0 0-371 0-371 0-5 0-10 2-14 6-4 5-5 9-5 15 0 0 0 241 0 241 0 6 1 11 5 15 4 4 9 6 14 6 0 0 371 0 371 0m-29-231c0 0 0 82 0 82 0 0-37 82-37 82 0 0-85-30-85-30 0 0-66-68-66-68 0 0-71 87-71 87 0 0-47-109-47-109 0 0 0-44 0-44 0 0 306 0 306 0"/>
<glyph glyph-name="chart-pie" unicode="&#65;" d="M229 471c0 0 0-188 0-188 0 0-188 0-188 0 6 49 27 92 62 127 35 35 77 56 126 61m55 0c53-7 97-31 133-71 36-41 54-88 54-143 0-59-21-110-63-153-42-42-93-63-153-63-55 0-102 18-142 54-41 36-65 80-72 134 0 0 217 0 217 0 7 0 13 3 18 8 5 4 8 10 8 18 0 0 0 216 0 216"/>
<glyph glyph-name="sitemap" unicode="&#67;" d="M512 155l0-91c0-8-3-14-8-19-5-6-12-8-19-8l-92 0c-7 0-14 2-19 8-6 5-8 11-8 19l0 91c0 8 2 15 8 20 5 5 12 8 19 8l28 0 0 55-147 0 0-55 28 0c7 0 14-3 19-8 5-5 8-12 8-20l0-91c0-8-3-14-8-19-5-6-12-8-19-8l-92 0c-7 0-14 2-19 8-5 5-8 11-8 19l0 91c0 8 3 15 8 20 5 5 12 8 19 8l28 0 0 55-147 0 0-55 28 0c7 0 14-3 19-8 6-5 8-12 8-20l0-91c0-8-2-14-8-19-5-6-12-8-19-8l-92 0c-7 0-14 2-19 8-5 5-8 11-8 19l0 91c0 8 3 15 8 20 5 5 12 8 19 8l28 0 0 55c0 10 3 18 11 25 7 8 16 11 25 11l147 0 0 55-28 0c-7 0-14 3-19 8-5 5-8 12-8 20l0 91c0 8 3 14 8 19 5 6 12 8 19 8l92 0c7 0 14-2 19-8 5-5 8-11 8-19l0-91c0-8-3-15-8-20-5-5-12-8-19-8l-28 0 0-55 147 0c9 0 18-3 25-11 8-7 11-15 11-25l0-55 28 0c7 0 14-3 19-8 5-5 8-12 8-20z"/>
<glyph glyph-name="globe-1" unicode="&#82;" d="M256 502c68 0 126-24 174-72 48-49 72-106 72-174 0-68-24-126-72-174-48-48-106-72-174-72-68 0-125 24-174 72-48 48-72 106-72 174 0 68 24 125 72 174 49 48 106 72 174 72m210-246c0 45-13 86-40 122-27 37-61 62-103 77-7-9-9-14-9-17 2-13 5-21 10-26 4-4 9-5 15-3 0 0 16 6 16 6 0 0 4 0 11 1 7-8 7-16 0-24-8-8-16-18-23-29-8-11-8-24-1-39 12-22 28-33 49-33 10-1 17-7 22-19 5-11 8-22 9-33 3-28 1-52-7-72-8-15-5-28 7-39 29 38 44 81 44 128m-239 207c-38-5-72-19-102-43-29-24-51-54-65-89 2 0 6-1 12-1 5-1 10-1 14-2 4 0 9-1 13-2 5-1 9-2 13-4 3-2 5-4 6-7 1-4-1-11-7-23-7-11-10-21-10-31 0-10 7-20 20-29 13-8 19-16 19-23 0-10 2-21 4-35 3-14 4-21 4-22 0-5 7-14 19-28 12-14 21-22 27-22 3 0 5 4 5 12 1 7 0 16-1 27-1 11-1 18-1 21 0 11 2 23 7 38 4 14 14 26 30 36 16 9 25 17 28 23 6 12 7 22 5 31-3 10-6 17-9 22-3 6-9 11-17 15-9 4-16 7-21 8-6 2-12 4-19 5-7 1-11 2-12 2-5 2-12 3-21 4-9 0-15-1-18-2-4-1-9 1-14 6-6 5-9 10-9 15 0 3 3 8 8 13 5 6 11 12 18 19 6 7 11 12 14 16 3 4 6 8 9 10 3 3 6 6 11 9 4 3 9 6 14 10 1 2 5 5 13 9 7 5 11 8 13 12m-37-407c23-7 45-10 66-10 44 0 82 12 116 35-9 15-29 21-61 17-8 0-19-3-33-8-14-6-22-8-24-9-25-6-38-8-39-8-4-1-8-3-13-7-5-5-9-8-12-10"/>
<glyph glyph-name="chat" unicode="&#116;" d="M148 200c0 0 180 0 180 0 0 0 1 0 3 1 0 0 2 0 2 0 0 0 0-47 0-47 0-14-5-26-15-36-10-10-22-16-36-16 0 0-128 0-128 0 0 0-77-76-77-76 0 0 0 76 0 76 0 0-26 0-26 0-13 0-25 6-36 16-10 10-15 22-15 36 0 0 0 153 0 153 0 15 5 27 15 37 11 9 23 14 36 14 0 0 97 0 97 0 0 0 0-158 0-158m313 286c14 0 26-5 36-14 10-10 15-22 15-37 0 0 0-153 0-153 0-14-5-26-15-36-10-10-22-16-36-16 0 0-26 0-26 0 0 0 0-76 0-76 0 0-77 76-77 76 0 0-179 0-179 0 0 0 0 205 0 205 0 15 5 27 16 37 10 9 22 14 35 14 0 0 231 0 231 0"/>
<glyph glyph-name="comment" unicode="&#119;" d="M410 435c14 0 26-5 36-15 10-10 15-22 15-36 0 0 0-179 0-179 0-14-5-26-15-36-10-10-22-15-36-15 0 0-103 0-103 0 0 0 0-77 0-77 0 0-102 77-102 77 0 0-103 0-103 0-13 0-25 5-35 15-11 10-16 22-16 36 0 0 0 179 0 179 0 14 5 26 16 36 10 10 22 15 35 15 0 0 308 0 308 0"/>
<glyph glyph-name="logout" unicode="&#122;" d="M283 77c0 0 0 51 0 51 0 0 50 0 50 0 0 0 0-51 0-51 0-14-5-26-15-36-10-10-22-15-36-15 0 0-205 0-205 0-14 0-26 5-36 15-10 10-15 22-15 36 0 0 0 358 0 358 0 15 5 27 15 37 10 9 22 14 36 14 0 0 205 0 205 0 14 0 26-5 36-14 10-10 15-22 15-37 0 0 0-77 0-77 0 0-50 0-50 0 0 0 0 77 0 77 0 0-206 0-206 0 0 0 0-358 0-358 0 0 206 0 206 0m203 167c0 0-101-101-101-101 0 0 0 62 0 62 0 0-230 0-230 0 0 0 0 77 0 77 0 0 230 0 230 0 0 0 0 61 0 61 0 0 101-99 101-99"/>
<glyph glyph-name="cancel-circled" unicode="&#81;" d="M256 471c59 0 110-21 152-63 42-42 63-93 63-152 0-59-21-110-63-152-42-42-93-63-152-63-59 0-110 21-152 63-42 42-63 93-63 152 0 59 21 110 63 152 42 42 93 63 152 63m44-215c0 0 79 79 79 79 0 0-44 44-44 44 0 0-79-78-79-78 0 0-78 78-78 78 0 0-45-44-45-44 0 0 79-79 79-79 0 0-79-78-79-78 0 0 45-44 45-44 0 0 78 78 78 78 0 0 79-78 79-78 0 0 44 44 44 44 0 0-79 78-79 78"/>
<glyph glyph-name="left-open" unicode="&#84;" d="M293 397c4 6 11 9 20 9 8 0 15-3 21-9 13-12 13-26 0-41 0 0-96-100-96-100 0 0 96-99 96-99 13-15 13-29 0-41-6-6-13-8-21-8-8 0-15 2-20 8 0 0-116 121-116 121-6 5-8 11-8 19 0 8 2 15 8 20 70 74 109 114 116 121"/>
<glyph glyph-name="right-open" unicode="&#85;" d="M219 397c0 0 116-121 116-121 5-5 8-12 8-20 0-8-3-14-8-19 0 0-116-121-116-121-5-6-12-8-20-8-9 0-15 2-21 8-12 12-12 26 0 41 0 0 95 99 95 99 0 0-95 100-95 100-12 15-12 29 0 41 6 6 13 9 21 9 9 0 15-3 20-9"/>
<glyph glyph-name="check-mark" unicode="&#71;" d="M477 350c0-7-2-14-8-19l-206-207-39-39c-6-5-12-8-20-8-7 0-14 3-19 8l-142 142c-6 6-8 12-8 20 0 7 2 14 8 19l38 39c6 5 12 8 20 8 7 0 14-3 19-8l84-84 188 188c5 5 12 8 19 8 8 0 14-3 20-8l38-39c6-6 8-12 8-20z"/>
<glyph glyph-name="check-mark-circle" unicode="&#73;" d="M403 302c0 6-1 10-5 13l-26 26c-3 4-8 6-13 6-5 0-9-2-12-6l-117-116-65 64c-3 4-7 6-12 6-5 0-10-2-13-6l-26-25c-4-4-5-8-5-13 0-6 1-10 5-13l103-104c4-3 8-5 13-5 5 0 10 2 13 5l155 155c4 4 5 8 5 13z m72-46c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
<glyph glyph-name="back-in-time" unicode="&#88;" d="M288 466c58 0 107-21 148-62 40-40 61-90 61-148 0-58-21-108-61-148-41-41-90-62-148-62-47 0-90 15-129 45 0 0 36 39 36 39 28-20 59-31 93-31 43 0 80 16 110 46 31 31 46 68 46 111 0 44-15 81-46 112-30 30-67 46-110 46-43 0-79-15-109-44-31-30-47-66-48-108 0 0 73 0 73 0 0 0-94-105-94-105 0 0-95 105-95 105 0 0 64 0 64 0 1 57 22 105 63 145 40 39 89 59 146 59m-19-97c0 0 36 0 36 0 0 0 0-105 0-105 0 0 67-66 67-66 0 0-26-26-26-26 0 0-77 77-77 77 0 0 0 120 0 120"/>
<glyph glyph-name="cog" unicode="&#89;" d="M430 256c0-25 14-45 41-62-4-14-10-28-17-42-24 6-47-2-70-23-18-20-24-43-17-70-14-6-28-13-43-18-16 28-39 42-68 42-29 0-52-14-68-42-15 5-29 12-43 18 7 28 1 51-17 70-18 18-42 24-70 17-4 9-10 23-17 42 28 18 42 41 42 68 0 25-14 46-42 63 7 20 13 34 17 42 26-6 49 2 70 23 18 19 24 42 17 70 15 7 29 13 43 17 16-27 39-41 68-41 29 0 52 14 68 41 14-4 28-10 43-17-7-27-1-50 17-70 23-21 46-29 70-23 7-14 13-28 17-42-27-17-41-38-41-63m-174-93c26 0 48 9 66 27 18 18 27 40 27 66 0 26-9 48-27 67-18 18-40 27-66 27-26 0-48-9-66-27-18-19-27-41-27-67 0-26 9-48 27-66 18-18 40-27 66-27"/>
<glyph glyph-name="fast-forward" unicode="&#104;" d="M474 268c5-3 7-7 7-12 0-5-2-9-7-11 0 0-190-127-190-127-8-5-14-6-19-3-5 2-8 9-8 18 0 0 0 247 0 247 0 9 3 16 8 18 5 3 11 2 19-3 0 0 190-127 190-127m-232 0c4-3 7-7 7-12 0-5-3-9-7-11 0 0-185-127-185-127-6-5-13-6-18-3-6 2-8 9-8 18 0 0 0 247 0 247 0 9 2 16 8 18 5 3 12 2 18-3 0 0 185-127 185-127"/>
<glyph glyph-name="install" unicode="&#97;" d="M478 233c8-17 11-34 7-49 0 0-17-94-17-94-1-7-4-13-10-18-6-5-12-7-20-7 0 0-364 0-364 0-8 0-15 2-20 7-6 5-9 11-10 18 0 0-18 94-18 94-2 17 0 34 8 49 0 0 80 192 80 192 8 16 20 24 37 24 0 0 54 0 54 0 0 0-11-105-11-105 0 0-68 0-68 0 0 0 130-107 130-107 0 0 131 107 131 107 0 0-70 0-70 0 0 0-9 105-9 105 0 0 52 0 52 0 17 0 30-8 38-24 0 0 80-192 80-192m-35-67c1 7-1 14-5 19-4 6-10 9-17 9 0 0-330 0-330 0-8 0-13-3-17-9-5-5-6-12-6-19 0 0 8-38 8-38 0-8 4-14 9-19 6-5 12-8 19-8 0 0 303 0 303 0 8 0 15 3 20 8 6 5 9 11 10 19 0 0 6 38 6 38"/>
<glyph glyph-name="down-circled" unicode="&#105;" d="M256 492c65 0 120-24 166-70 46-46 70-101 70-166 0-65-24-120-70-166-46-46-101-70-166-70-65 0-120 24-166 70-46 46-70 101-70 166 0 65 24 120 70 166 46 46 101 70 166 70m0-420c51 0 94 18 130 54 36 36 54 79 54 130 0 51-18 95-54 131-36 35-79 53-130 53-51 0-94-18-130-53-36-36-54-80-54-131 0-51 18-94 54-130 36-36 79-54 130-54m46 283c0 0 0-105 0-105 0 0 57 0 57 0 0 0-103-97-103-97 0 0-103 97-103 97 0 0 57 0 57 0 0 0 0 105 0 105 0 0 92 0 92 0"/>
<glyph glyph-name="eye" unicode="&#108;" d="M256 399c31 0 62-4 91-12 29-9 53-20 72-32 19-13 36-26 51-40 14-13 25-25 32-36 7-11 10-18 10-23 0-5-3-12-10-23-7-10-18-22-32-36-15-14-32-27-51-40-19-12-43-23-72-32-29-8-60-12-91-12-31 0-62 4-91 12-29 9-53 20-72 32-19 13-36 26-51 40-14 14-25 26-32 36-7 11-10 18-10 23 0 5 3 12 10 23 7 11 18 23 32 36 15 14 32 27 51 40 19 12 43 23 72 32 29 8 60 12 91 12m0-253c31 0 58 11 80 33 23 21 34 47 34 77 0 31-11 57-34 78-22 22-49 33-80 33-31 0-58-11-80-33-23-21-34-47-34-78 0-30 11-56 34-77 22-22 49-33 80-33m0 110c3-3 9-3 19-1 10 2 18 4 26 6 7 1 11 0 12-5 0-15-5-28-17-38-11-11-24-16-40-16-16 0-29 5-40 16-11 10-16 23-16 38 0 16 5 29 16 39 11 11 24 16 40 16 5 0 6-4 5-11-1-8-3-16-6-25-3-8-2-14 1-19"/>
<glyph glyph-name="columns" unicode="&#114;" d="M64 73l174 0 0 329-183 0 0-320c0-2 1-4 3-6 1-2 4-3 6-3z m393 9l0 320-183 0 0-329 174 0c2 0 5 1 6 3 2 2 3 4 3 6z m37 348l0-348c0-12-5-23-14-32-9-9-19-13-32-13l-384 0c-13 0-23 4-32 13-9 9-14 20-14 32l0 348c0 12 5 23 14 32 9 9 19 13 32 13l384 0c13 0 23-4 32-13 9-9 14-20 14-32z"/>
<glyph glyph-name="edit-write" unicode="&#117;" d="M254 174l33 33-44 43-33-33 0-16 28 0 0-27z m125 205c-3 3-6 3-9 0l-100-100c-3-3-3-6 0-9 3-3 6-3 9 0l100 100c3 3 3 6 0 9z m23-169l0-55c0-22-8-42-24-58-16-16-35-24-58-24l-238 0c-22 0-42 8-58 24-16 16-24 36-24 58l0 238c0 23 8 42 24 58 16 16 36 24 58 24l238 0c12 0 23-2 33-7 3-1 5-3 6-6 0-4-1-6-3-9l-14-14c-3-2-6-3-9-2-5 1-9 2-13 2l-238 0c-12 0-23-5-32-14-9-9-13-19-13-32l0-238c0-12 4-23 13-32 9-9 20-13 32-13l238 0c13 0 23 4 32 13 9 9 14 20 14 32l0 36c0 3 1 5 2 7l19 18c2 3 6 4 10 2 3-2 5-4 5-8z m-27 211l82-83-192-192-82 0 0 83z m127-38l-27-26-82 82 26 26c6 5 12 8 20 8 7 0 14-3 19-8l44-43c5-6 8-12 8-20 0-7-3-14-8-19z"/>
<glyph glyph-name="monitor" unicode="&#120;" d="M462 445l-412 0c-16 0-29-12-29-28l0-252c0-16 13-29 29-29l155 0 0-44-48 0c-5 0-8-4-8-8l0-9c0-5 3-8 8-8l194 0c4 0 8 3 8 8l0 9c0 4-4 8-8 8l-44 0 0 44 155 0c16 0 29 13 29 29l0 252c0 16-13 28-29 28z m-390-258l0 207 368 0 0-207z"/>
<glyph glyph-name="mobile" unicode="&#74;" d="M353 507c15 0 27-5 37-15 10-10 14-22 14-36 0 0 0-400 0-400 0-13-4-25-14-36-10-10-22-15-37-15 0 0-194 0-194 0-14 0-26 5-36 15-10 11-15 23-15 36 0 0 0 400 0 400 0 14 5 26 15 36 10 10 22 15 36 15 0 0 194 0 194 0m-97-481c10 0 19 2 26 7 6 5 10 11 10 18 0 8-4 14-10 19-7 4-16 7-26 7-10 0-18-3-25-8-7-5-11-11-11-18 0-7 4-13 11-18 7-5 15-7 25-7m108 76c0 0 0 338 0 338 0 0-216 0-216 0 0 0 0-338 0-338 0 0 216 0 216 0"/>
<glyph glyph-name="tablet" unicode="&#75;" d="M274 110c0 5-2 9-5 13-4 3-8 5-13 5-5 0-9-2-13-5-3-4-5-8-5-13 0-5 2-10 5-13 4-4 8-6 13-6 5 0 9 2 13 6 3 3 5 8 5 13z m110 45l0 275c0 2-1 4-3 6-2 2-4 3-6 3l-238 0c-2 0-4-1-6-3-2-2-3-4-3-6l0-275c0-2 1-4 3-6 2-2 4-3 6-3l238 0c2 0 4 1 6 3 2 2 3 4 3 6z m37 275l0-311c0-13-5-23-14-32-9-9-20-14-32-14l-238 0c-12 0-23 5-32 14-9 9-14 19-14 32l0 311c0 12 5 23 14 32 9 9 20 13 32 13l238 0c12 0 23-4 32-13 9-9 14-20 14-32z"/>
<glyph glyph-name="pencil" unicode="&#109;" d="M424 425c11-11 19-22 24-33 5-11 8-19 8-24 0 0 0-9 0-9 0 0-129-129-129-129 0 0-149-147-149-147 0 0-122-27-122-27 0 0 26 123 26 123 0 0 148 148 148 148 0 0 129 129 129 129 19 4 40-6 65-31m-253-328c0 0 12 13 12 13 0 15-9 31-26 48-8 7-16 13-23 18-8 4-14 6-18 6 0 0-7 1-7 1 0 0-12-12-12-12 0 0-9-41-9-41 10-5 17-11 24-17 8-9 14-17 18-25 0 0 41 9 41 9"/>
<glyph glyph-name="trash" unicode="&#103;" d="M388 341l-264 0c-7 0-12-5-12-12l0-256c0-6 5-12 12-12l264 0c7 0 12 6 12 12l0 256c0 7-5 12-12 12z m17 82l-101 0 0 16c0 6-5 12-12 12l-72 0c-7 0-12-6-12-12l0-16-100 0c-7 0-13-5-13-12l0-35c0-7 6-13 13-13l297 0c6 0 12 6 12 13l0 35c0 7-6 12-12 12z"/>
<glyph glyph-name="edit" unicode="&#78;" d="M160 64l-96 0 0 96z m352 352l-320-320-96 96 320 320z m-448-416l0 32 352 0 0-32z"/>
<glyph glyph-name="tick" unicode="&#79;" d="M458 418l-273-270-131 128-26-26 131-131 26-25 25 25 274 274z m0 0"/>
<glyph glyph-name="upload" unicode="&#98;" d="M389 330c34 0 63-12 87-35 24-23 36-52 36-85 0-34-12-62-36-85-24-23-53-35-87-35 0 0-97 0-97 0 0 0 0 97 0 97 0 0 54 0 54 0 0 0-90 118-90 118 0 0-89-118-89-118 0 0 53 0 53 0 0 0 0-97 0-97 0 0-127 0-127 0-25 0-47 9-65 27-19 17-28 39-28 63 0 25 9 47 27 65 18 17 40 26 66 26 5 0 8 0 10-1 0 4-1 11-1 20 0 37 14 68 40 94 27 26 59 39 97 39 30 0 58-9 82-27 23-17 39-40 48-68 9 1 16 2 20 2"/>
<glyph glyph-name="folder-add" unicode="&#83;" d="M440 389l-188 0c-10 12-20 25-23 28-2 6-8 10-14 10l-75 0c-5 0-9-3-13-6l-25-32-30 0c-16 0-28-13-28-28l0-248c0-15 12-28 28-28l368 0c16 0 28 13 28 28l0 248c0 15-12 28-28 28z m-22-201c0-1-1-2-1-2-1-1-2-1-3-1l-45 0 0-45c0-1 0-2-1-3 0 0-1-1-2-1l-32 0c-1 0-1 1-2 1-1 1-1 2-1 3l0 45-45 0c-1 0-2 0-2 1-1 0-1 1-1 2l0 31c0 2 1 4 3 4l45 0 0 45c0 2 1 3 3 3l32 0c2 0 3-1 3-3l0-45 45 0c2 0 4-2 4-4z"/>
<glyph glyph-name="silverstripe" unicode="&#77;" d="M151 440c-50-33-97-67-104-74-27-26-41-70-35-106 10-62 63-108 125-108 34 0 67 14 87 36 15 16 21 33 21 56 0 21-9 46-16 44-2-1-20-13-40-27-34-23-38-25-50-25-27 0-43 16-43 42 0 12 1 18 6 24 3 4 31 25 62 46 31 22 62 43 68 49 22 22 29 62 16 91l-7 14z m190-84c-33-9-61-33-70-58-6-18-5-45 2-61 4-10 7-14 10-12 2 0 20 12 40 26 34 23 38 25 50 25 27 0 43-16 43-42 0-12-1-18-6-24-3-4-31-25-62-46-32-22-62-43-68-49-22-22-30-62-16-91l7-14 90 61c50 34 97 68 104 75 16 16 31 45 35 70 4 24 0 49-13 74-26 54-88 81-146 66z"/>
<glyph glyph-name="thumbnails" unicode="&#87;" d="M146 155l0-54c0-8-2-15-8-20-5-5-12-8-19-8l-92 0c-7 0-14 3-19 8-5 5-8 12-8 20l0 54c0 8 3 15 8 20 5 5 12 8 19 8l92 0c7 0 14-3 19-8 6-5 8-12 8-20z m0 147l0-55c0-8-2-14-8-20-5-5-12-8-19-8l-92 0c-7 0-14 3-19 8-5 6-8 12-8 20l0 55c0 7 3 14 8 19 5 5 12 8 19 8l92 0c7 0 14-3 19-8 6-5 8-12 8-19z m183-147l0-54c0-8-3-15-8-20-5-5-12-8-19-8l-92 0c-7 0-14 3-19 8-5 5-8 12-8 20l0 54c0 8 3 15 8 20 5 5 12 8 19 8l92 0c7 0 14-3 19-8 5-5 8-12 8-20z m-183 293l0-55c0-7-2-14-8-19-5-6-12-8-19-8l-92 0c-7 0-14 2-19 8-5 5-8 12-8 19l0 55c0 8 3 14 8 19 5 6 12 8 19 8l92 0c7 0 14-2 19-8 6-5 8-11 8-19z m183-146l0-55c0-8-3-14-8-20-5-5-12-8-19-8l-92 0c-7 0-14 3-19 8-5 6-8 12-8 20l0 55c0 7 3 14 8 19 5 5 12 8 19 8l92 0c7 0 14-3 19-8 5-5 8-12 8-19z m183-147l0-54c0-8-3-15-8-20-5-5-12-8-19-8l-92 0c-7 0-14 3-19 8-6 5-8 12-8 20l0 54c0 8 2 15 8 20 5 5 12 8 19 8l92 0c7 0 14-3 19-8 5-5 8-12 8-20z m-183 293l0-55c0-7-3-14-8-19-5-6-12-8-19-8l-92 0c-7 0-14 2-19 8-5 5-8 12-8 19l0 55c0 8 3 14 8 19 5 6 12 8 19 8l92 0c7 0 14-2 19-8 5-5 8-11 8-19z m183-146l0-55c0-8-3-14-8-20-5-5-12-8-19-8l-92 0c-7 0-14 3-19 8-6 6-8 12-8 20l0 55c0 7 2 14 8 19 5 5 12 8 19 8l92 0c7 0 14-3 19-8 5-5 8-12 8-19z m0 146l0-55c0-7-3-14-8-19-5-6-12-8-19-8l-92 0c-7 0-14 2-19 8-6 5-8 12-8 19l0 55c0 8 2 14 8 19 5 6 12 8 19 8l92 0c7 0 14-2 19-8 5-5 8-11 8-19z"/>
<glyph glyph-name="down-open" unicode="&#48;" d="M396 293c0 0-120-115-120-115-6-6-12-9-20-9-8 0-14 3-20 9 0 0-120 115-120 115-6 5-8 12-8 21 0 8 2 15 8 21 13 13 26 13 40 0 0 0 100-96 100-96 0 0 100 96 100 96 14 13 27 13 40 0 6-6 8-13 8-21 0-9-2-16-8-21"/>
<glyph glyph-name="up-open" unicode="&#49;" d="M396 220c6-5 8-12 8-21 0-8-2-15-8-21-13-13-26-13-40 0 0 0-100 96-100 96 0 0-100-96-100-96-14-13-27-13-40 0-6 6-8 13-8 21 0 9 2 16 8 21 0 0 120 115 120 115 5 5 12 8 20 8 8 0 15-3 20-8 0 0 120-115 120-115"/>
<glyph glyph-name="link" unicode="&#50;" d="M202 136c5 5 10 7 17 7 7 0 13-2 19-7 10-11 10-23 0-36 0 0-22-20-22-20-19-19-42-29-68-29-26 0-49 10-68 29-19 19-29 42-29 67 0 27 10 50 29 69 0 0 76 76 76 76 24 23 48 36 73 39 26 3 47-4 66-22 5-5 8-11 8-18 0-7-3-13-8-19-12-11-24-11-36 0-17 17-40 11-68-17 0 0-75-75-75-75-9-9-14-20-14-33 0-13 5-23 14-31 9-9 19-14 32-14 13 0 23 5 32 14 0 0 22 20 22 20m230 294c19-19 29-42 29-68 0-26-10-49-29-68 0 0-81-81-81-81-25-25-51-37-77-37-21 0-40 9-57 26-5 5-7 10-7 17 0 7 2 13 7 19 5 4 11 7 18 7 7 0 13-3 18-7 17-17 38-13 62 12 0 0 81 80 81 80 10 9 15 20 15 32 0 13-5 24-15 32-8 9-17 14-28 16-11 2-22-2-31-11 0 0-26-25-26-25-5-5-11-7-18-7-7 0-13 2-18 7-11 11-11 23 0 36 0 0 26 25 26 25 18 19 40 27 65 26 25-1 47-11 66-31"/>
<glyph glyph-name="level-up" unicode="&#86;" d="M179 430l-94-185c-3-3 3-6 6-3l46 14c2 3 8-3 8-6l0-150c0-6 3-9 9-9l267 0c6 0 9 3 9 9l0 65c0 6-3 9-9 9l-185 0c-6 0-8 2-8 8l0 65c0 3 2 6 8 6l46-14c2 0 5 3 5 3l-94 185c-8 5-11 5-14 3z"/>
<glyph glyph-name="image" unicode="&#52;" d="M171 341c0-14-5-26-15-36-10-10-22-15-37-15-14 0-26 5-36 15-10 10-15 22-15 36 0 15 5 27 15 37 10 10 22 15 36 15 15 0 27-5 37-15 10-10 15-22 15-37z m273-102l0-120-376 0 0 52 86 85 42-43 137 137z m25 188l-426 0c-3 0-5-1-6-3-2-2-3-4-3-6l0-324c0-2 1-4 3-6 1-2 3-3 6-3l426 0c3 0 5 1 6 3 2 2 3 4 3 6l0 324c0 2-1 4-3 6-1 2-3 3-6 3z m43-9l0-324c0-12-4-22-13-30-8-9-18-13-30-13l-426 0c-12 0-22 4-30 13-9 8-13 18-13 30l0 324c0 12 4 22 13 30 8 9 18 13 30 13l426 0c12 0 22-4 30-13 9-8 13-18 13-30z"/>
<glyph glyph-name="trash-bin" unicode="&#80;" d="M201 302l0-165c0-3-1-5-2-6-2-2-4-3-7-3l-18 0c-3 0-5 1-7 3-2 1-2 3-2 6l0 165c0 2 0 5 2 6 2 2 4 3 7 3l18 0c3 0 5-1 7-3 1-1 2-4 2-6z m73 0l0-165c0-3-1-5-2-6-2-2-4-3-7-3l-18 0c-3 0-5 1-7 3-1 1-2 3-2 6l0 165c0 2 1 5 2 6 2 2 4 3 7 3l18 0c3 0 5-1 7-3 1-1 2-4 2-6z m73 0l0-165c0-3 0-5-2-6-2-2-4-3-7-3l-18 0c-3 0-5 1-7 3-1 1-2 3-2 6l0 165c0 2 1 5 2 6 2 2 4 3 7 3l18 0c3 0 5-1 7-3 2-1 2-4 2-6z m37-207l0 271-256 0 0-271c0-4 1-8 2-12 1-3 3-6 4-7 2-2 3-3 3-3l238 0c0 0 1 1 3 3 1 1 3 4 4 7 1 4 2 8 2 12z m-192 307l128 0-14 34c-1 1-3 2-5 3l-90 0c-2-1-4-2-5-3z m265-9l0-18c0-3-1-5-2-7-2-1-4-2-7-2l-27 0 0-271c0-16-5-30-14-41-9-12-20-17-32-17l-238 0c-12 0-23 5-32 16-9 11-14 25-14 41l0 272-27 0c-3 0-5 1-7 2-1 2-2 4-2 7l0 18c0 3 1 5 2 7 2 1 4 2 7 2l88 0 20 48c3 7 8 13 16 18 7 5 15 7 22 7l92 0c7 0 15-2 22-7 8-5 13-11 16-18l20-48 88 0c3 0 5-1 7-2 1-2 2-4 2-7z"/>
<glyph glyph-name="code" unicode="&#51;" d="M195 402c5-4 8-10 8-16 0-6-3-11-8-15 0 0-126-115-126-115 0 0 126-116 126-116 5-4 8-9 8-15 0-6-3-12-8-16-11-11-21-11-31 0 0 0-164 147-164 147 0 0 164 146 164 146 10 11 20 11 31 0m154 0c0 0 163-146 163-146 0 0-163-147-163-147-11-11-21-11-32 0-10 10-10 21 0 31 0 0 127 116 127 116 0 0-127 115-127 115-10 10-10 21 0 31 11 11 21 11 32 0"/>
<glyph glyph-name="left-open-big" unicode="&#53;" d="M368 67c9-9 9-18 0-25-8-9-17-9-24 0 0 0-201 202-201 202-8 8-8 16 0 25 0 0 201 202 201 202 7 9 16 9 24 0 9-7 9-16 0-25 0 0-183-190-183-190 0 0 183-189 183-189"/>
<glyph glyph-name="down-open-big" unicode="&#54;" d="M67 369c0 0 189-183 189-183 0 0 190 183 190 183 8 9 16 9 25 0 9-8 9-16 0-25 0 0-203-201-203-201-7-7-15-7-24 0 0 0-203 201-203 201-9 9-9 17 0 25 8 8 17 8 26 0"/>
<glyph glyph-name="up-open-big" unicode="&#55;" d="M446 143c0 0-190 184-190 184 0 0-189-184-189-184-9-7-18-7-26 0-8 9-8 17 0 26 0 0 203 200 203 200 9 9 17 9 24 0 0 0 203-200 203-200 8-9 8-17 0-26-9-7-17-7-25 0"/>
<glyph glyph-name="right-open-big" unicode="&#56;" d="M144 67c0 0 183 189 183 189 0 0-183 190-183 190-9 9-9 18 0 25 8 9 17 9 24 0 0 0 201-202 201-202 8-9 8-17 0-25 0 0-201-202-201-202-7-9-16-9-24 0-9 7-9 16 0 25"/>
<glyph glyph-name="dot-3" unicode="&#57;" d="M77 312c16 0 29-5 40-16 11-11 16-24 16-40 0-15-5-28-16-39-11-12-24-17-40-17-16 0-29 5-40 17-11 11-17 24-17 39 0 16 6 29 17 40 11 11 24 16 40 16m179 0c16 0 29-5 40-16 11-11 16-24 16-40 0-15-5-28-17-39-11-12-24-17-39-17-15 0-28 5-39 17-12 11-17 24-17 39 0 16 5 29 16 40 11 11 24 16 40 16m179 0c16 0 29-5 40-16 11-11 17-24 17-40 0-15-6-28-17-39-11-12-24-17-40-17-15 0-29 5-40 17-11 11-16 24-16 39 0 16 5 29 16 40 11 11 25 16 40 16"/>
<glyph glyph-name="save" unicode="&#33;" d="M358 125c0 3 0 6 0 6l0 34c46 0 83 37 83 82 0 46-37 83-83 83-11 0-25-3-34-9l-17 17c-28 63-102 92-165 63-45-20-74-63-74-114 0-68 23-125 94-125l0-34c0-3 0-6 0-6-91 3-134 77-134 168 0 91 74 165 165 165 60 0 114-31 145-85 69 14 134-32 146-100 11-68-32-133-100-145-6 0-17 0-26 0z m-102 188l-85-114 57 0 0-171 56 0 0 171 57 0z"/>
<glyph glyph-name="rocket" unicode="&#90;" d="M102 51c35 6 74 17 91 63 0 0 0 3-2 3-15-6-29-12-43-12 0 0-3 0-3 3-3 14 0 29 3 43 0 0 0 3-3 3-43-23-48-60-51-100 6 0 6-3 8-3z m111 262c-62-6-119-37-159-83 0-2 3-2 3-2 37 11 74 11 111 5 3 0 3-3 3-8l-9-43c0-3 0-6 3-6 11-2 20-8 28-17 9-8 17-17 20-28 0-3 3-3 6-3l40 17c3 0 6 0 8-3 12-34 15-74 9-111 0-3 0-3 3-3 0 0 3 0 3 0 42 46 65 106 62 168 0 3 0 3 3 3 85 71 134 174 137 282-109-15-205-77-265-168-3 3-3 0-6 0z m148 31c17-17 20-42 3-60-17-17-43-19-60-2-20 14-20 42-5 59 17 17 42 20 62 3 0 3 0 3 0 0z"/>
<glyph glyph-name="cancel" unicode="&#68;" d="M284 256l106 105c5 6 8 9 8 14 3 12-5 20-17 23-3 0-3 0-6 0-5 0-11-3-14-5l-105-109-105 109c-6 2-12 5-14 5-12 3-20-5-23-17 0-3 0-3 0-6 0-5 3-8 5-14l109-105-109-105c-2-6-5-12-5-14 0-12 5-20 17-20 3 0 3 0 6 0 5 0 11 2 14 5l105 106 105-106c3-3 9-5 14-5 12-3 20 5 20 17 0 0 0 3 0 3 0 5-2 11-5 14z"/>
<glyph glyph-name="happy" unicode="&#34;" d="M256 0c-141 0-256 115-256 256 0 141 115 256 256 256 141 0 256-115 256-256 0-141-115-256-256-256z m0 492c-130 0-236-106-236-236 0-130 106-236 236-236 130 0 236 106 236 236-1 130-106 235-236 236z m0-369c-46 0-90 18-123 51l14 14c60-60 157-60 217 0l15-14c-33-33-77-51-123-51z m-41 194c0-11-9-20-20-20-12 0-21 9-21 20 0 12 9 21 21 21 11 0 20-9 20-21z m123 0c0-11-9-20-21-20-11 0-20 9-20 20 0 12 9 21 20 21 12 0 21-9 21-21z"/>
<glyph glyph-name="sad" unicode="&#35;" d="M256 0c-141 0-256 115-256 256 0 141 115 256 256 256 141 0 256-115 256-256 0-141-115-256-256-256z m0 492c-130 0-236-106-236-236 0-130 106-236 236-236 130 0 236 106 236 236-1 130-106 235-236 236z m109-366c-60 60-158 60-218 0l-14 14c68 68 178 68 246 0z m-150 191c0-11-9-20-20-20-12 0-21 9-21 20 0 12 9 21 21 21 11 0 20-9 20-21z m123 0c0-11-9-20-21-20-11 0-20 9-20 20 0 12 9 21 20 21 12 0 21-9 21-21z"/>
<glyph glyph-name="angle-double-right" unicode="&#36;" d="M280 238c0-3-1-5-3-7l-133-133c-2-2-4-3-7-3-2 0-5 1-6 3l-15 14c-2 2-3 4-3 7 0 2 1 5 3 6l113 113-113 112c-2 2-3 4-3 7 0 2 1 4 3 6l15 14c1 2 4 3 6 3 3 0 5-1 7-3l133-133c2-2 3-4 3-6z m109 0c0-3-1-5-2-7l-134-133c-1-2-4-3-6-3-3 0-5 1-7 3l-14 14c-2 2-3 4-3 7 0 2 1 5 3 6l112 113-112 112c-2 2-3 4-3 7 0 2 1 4 3 6l14 14c2 2 4 3 7 3 2 0 5-1 6-3l134-133c1-2 2-4 2-6z"/>
<glyph glyph-name="angle-double-left" unicode="&#37;" d="M289 119c0-3-1-5-3-7l-14-14c-2-2-4-3-7-3-2 0-5 1-6 3l-134 133c-1 2-2 4-2 7 0 2 1 4 2 6l134 133c1 2 4 3 6 3 3 0 5-1 7-3l14-14c2-2 3-4 3-6 0-3-1-5-3-7l-112-112 112-113c2-1 3-4 3-6z m110 0c0-3-1-5-3-7l-15-14c-1-2-4-3-6-3-3 0-5 1-7 3l-133 133c-2 2-3 4-3 7 0 2 1 4 3 6l133 133c2 2 4 3 7 3 2 0 5-1 6-3l15-14c2-2 3-4 3-6 0-3-1-5-3-7l-113-112 113-113c2-1 3-4 3-6z"/>
<glyph glyph-name="angle-right" unicode="&#38;" d="M335 238c0-3-1-5-3-7l-133-133c-2-2-5-3-7-3-2 0-5 1-7 3l-14 14c-2 2-3 4-3 7 0 2 1 5 3 6l112 113-112 112c-2 2-3 4-3 7 0 2 1 4 3 6l14 14c2 2 5 3 7 3 2 0 5-1 7-3l133-133c2-2 3-4 3-6z"/>
<glyph glyph-name="angle-left" unicode="&#39;" d="M344 357c0-3-1-5-3-7l-112-112 112-113c2-1 3-4 3-6 0-3-1-5-3-7l-14-14c-2-2-5-3-7-3-2 0-5 1-7 3l-133 133c-2 2-3 4-3 7 0 2 1 4 3 6l133 133c2 2 5 3 7 3 2 0 5-1 7-3l14-14c2-2 3-4 3-6z"/>
<glyph glyph-name="caret-up-down" unicode="&#41;" d="M402 201c0-5-2-9-5-13l-128-128c-4-3-8-5-13-5-5 0-9 2-13 5l-128 128c-3 4-5 8-5 13 0 5 2 9 5 13 4 4 8 5 13 5l256 0c5 0 9-1 13-5 3-4 5-8 5-13z m0 110c0-5-2-9-5-13-4-4-8-5-13-5l-256 0c-5 0-9 1-13 5-3 4-5 8-5 13 0 5 2 9 5 13l128 128c4 3 8 5 13 5 5 0 9-2 13-5l128-128c3-4 5-8 5-13z"/>
<glyph glyph-name="caret-down-two" unicode="&#40;" d="M402 311c0-5-2-9-5-13l-128-128c-4-4-8-5-13-5-5 0-9 1-13 5l-128 128c-3 4-5 8-5 13 0 5 2 9 5 13 4 3 8 5 13 5l256 0c5 0 9-2 13-5 3-4 5-8 5-13z"/>
<glyph glyph-name="caret-up-two" unicode="&#42;" d="M402 165c0-5-2-10-5-13-4-4-8-6-13-6l-256 0c-5 0-9 2-13 6-3 3-5 8-5 13 0 5 2 9 5 12l128 128c4 4 8 6 13 6 5 0 9-2 13-6l128-128c3-3 5-7 5-12z"/>
<glyph glyph-name="right-dir" unicode="&#43;" d="M154 374c0 0 204-118 204-118 0 0-204-118-204-118 0 0 0 236 0 236"/>
<glyph glyph-name="down-dir" unicode="&#44;" d="M374 358c0 0-118-204-118-204 0 0-118 204-118 204 0 0 236 0 236 0"/>
<glyph glyph-name="link-broken" unicode="&#45;" d="M144 149l-73-73c-2-2-5-3-7-3-2 0-4 1-7 3-1 2-2 4-2 6 0 3 1 5 2 7l74 73c1 2 4 3 6 3 3 0 5-1 7-3 1-2 2-4 2-7 0-2-1-4-2-6z m48-12l0-91c0-3-1-5-3-7-1-2-3-2-6-2-3 0-5 0-7 2-1 2-2 4-2 7l0 91c0 3 1 5 2 7 2 1 4 2 7 2 3 0 5-1 6-2 2-2 3-4 3-7z m-64 64c0-3-1-5-3-6-1-2-3-3-6-3l-92 0c-2 0-4 1-6 3-2 1-3 3-3 6 0 3 1 5 3 7 2 1 4 2 6 2l92 0c3 0 5-1 6-2 2-2 3-4 3-7z m361-36c0-23-8-43-24-58l-42-42c-16-16-35-24-58-24-23 0-43 8-58 24l-96 96c-4 4-8 9-12 16l68 5 78-78c6-5 12-8 20-8 8 0 14 3 19 8l42 41c6 6 8 12 8 20 0 7-2 14-8 19l-78 79 5 68c7-4 12-8 16-12l96-96c16-17 24-36 24-58z m-176 206l-68-5-78 79c-6 5-12 8-20 8-7 0-14-3-19-8l-42-42c-6-5-8-12-8-19 0-8 2-14 8-19l78-79-5-68c-7 4-12 8-16 12l-96 96c-16 16-24 36-24 58 0 23 8 42 24 58l42 42c16 16 35 23 58 23 23 0 43-8 58-24l96-96c4-4 8-9 12-16z m181-24c0-2-1-4-3-6-2-2-4-3-6-3l-92 0c-3 0-5 1-6 3-2 2-3 4-3 6 0 3 1 5 3 7 1 2 3 3 6 3l92 0c2 0 4-1 6-3 2-2 3-4 3-7z m-156 156l0-92c0-2-1-4-2-6-2-2-4-3-7-3-3 0-5 1-6 3-2 2-3 4-3 6l0 92c0 3 1 5 3 6 1 2 3 3 6 3 3 0 5-1 7-3 1-1 2-3 2-6z m117-43l-74-73c-2-2-4-3-6-3-2 0-5 1-7 3-1 1-2 4-2 6 0 3 1 5 2 7l73 73c2 2 5 2 7 2 2 0 5 0 7-2 1-2 2-4 2-7 0-2-1-4-2-6z"/>
<glyph glyph-name="switch" unicode="&#46;" d="M358 380c0 0 0-72 0-72 0 0-256 0-256 0 0 0 0-46 0-46 0 0-102 82-102 82 0 0 102 87 102 87 0 0 0-51 0-51 0 0 256 0 256 0m154-215c0 0-102-82-102-82 0 0 0 46 0 46 0 0-256 0-256 0 0 0 0 72 0 72 0 0 256 0 256 0 0 0 0 51 0 51 0 0 102-87 102-87"/>
<glyph glyph-name="resize" unicode="&#76;" d="M336 296l-199 0 0-36-80 64 80 67 0-39 199 0 0-57z m39-175l0 35-199 0 0 57 199 0 0 39 80-68z m-347 334l29 0 0-398-29 0z m427 0l29 0 0-398-29 0z"/>
<glyph glyph-name="menu" unicode="&#47;" d="M410 282c7 0 13-3 18-8 5-5 7-11 7-18 0-7-2-13-7-18-6-5-12-8-18-8 0 0-308 0-308 0-6 0-12 3-18 8-5 5-7 11-7 18 0 7 2 13 7 18 5 5 11 8 18 8 0 0 308 0 308 0m-308 51c-6 0-12 2-18 7-5 6-7 12-7 18 0 7 2 13 7 18 5 5 11 8 18 8 0 0 308 0 308 0 7 0 13-3 18-8 5-5 7-11 7-18 0-6-2-12-7-18-6-5-12-7-18-7 0 0-308 0-308 0m308-154c7 0 13-2 18-7 5-6 7-12 7-18 0-7-2-13-7-18-6-5-12-8-18-8 0 0-308 0-308 0-6 0-12 3-18 8-5 5-7 11-7 18 0 6 2 12 7 18 5 5 11 7 18 7 0 0 308 0 308 0"/>
<glyph glyph-name="edit-list" unicode="&#58;" d="M199 114l73 0 218 218-72 73-219-218z m-199 284l284 0 0-28-284 0z m0-85l199 0 0-29-199 0z m0-85l114 0 0-29-114 0z"/>
<glyph glyph-name="help-circled" unicode="&#59;" d="M253 492c65 0 120-22 167-67 46-45 70-100 72-165 0-65-22-121-68-167-45-47-100-71-165-73-65 0-121 22-167 68-47 45-71 100-72 165-1 65 21 121 67 167 46 47 101 71 166 72m-1-379c10 0 19 3 25 9 6 7 10 15 10 24 0 11-2 19-9 26-6 6-15 9-25 9 0 0-1 0-1 0-10 0-18-3-24-9-7-6-10-14-11-24 0-10 3-18 10-25 6-6 14-10 24-10 0 0 1 0 1 0m85 168c9 11 13 24 13 40 0 26-9 46-27 59-18 13-41 19-69 19-22 0-40-4-53-13-24-14-36-39-37-75 0 0 0-2 0-2 0 0 56 0 56 0 0 0 0 2 0 2 0 9 3 18 8 28 6 8 15 12 28 12 14 0 23-3 27-10 5-7 8-14 8-23 0-6-3-13-8-20-3-4-7-8-11-10 0 0-3-2-3-2-2-2-4-4-8-6-3-2-7-5-10-8-4-2-7-5-11-8-4-3-7-6-9-9-4-7-7-20-9-40 0 0 0-4 0-4 0 0 56 0 56 0 0 0 0 2 0 2 0 4 0 9 2 14 2 7 6 13 14 19 0 0 14 9 14 9 16 12 25 20 29 26"/>
<glyph glyph-name="block" unicode="&#60;" d="M256 502c68 0 126-24 174-72 48-48 72-106 72-174 0-68-24-125-72-174-48-48-106-72-174-72-68 0-125 24-174 72-48 49-72 106-72 174 0 68 24 126 72 174 49 48 106 72 174 72m132-113l0 0m-318-133c0-45 14-84 42-118 0 0 263 263 263 263-34 28-74 42-119 42-52 0-96-18-132-54-36-37-54-81-54-133m54-132l0 0m132-54c52 0 96 18 133 54 36 37 54 81 54 132 0 44-14 84-42 119 0 0-263-263-263-263 34-28 73-42 118-42"/>
<glyph glyph-name="icon-enlarge" unicode="&#61;" d="M473 98l-103 103c18 28 28 61 28 95-2 103-85 185-188 188-100 0-182-82-182-182 3-103 85-186 188-188 32 0 64 8 92 25l102-103c11-10 28-10 39 0l29 28c4 5 6 12 5 18-1 7-4 13-10 16z m-388 204c1 68 57 124 125 125 72-3 129-60 131-131 0-69-56-125-125-125-71 2-128 59-131 131z m114 68l29 0 0-142-29 0z m-57-86l0 29 142 0 0-29z"/>
<glyph glyph-name="page-multiple" unicode="&#62;" d="M443 393l-18 0 0-343c0-4-4-7-8-7l-253 0 0-18c0-5 3-8 8-8l271 0c4 0 7 3 7 8l0 360c0 4-3 8-7 8z m-44-317l0 360c0 4-3 8-7 8l-18 0 0-343c0-4-4-7-8-7l-253 0 0-18c0-4 3-8 7-8l272 0c4 0 7 4 7 8z m-51 51l0 360c0 5-3 8-8 8l-271 0c-4 0-7-3-7-8l0-360c0-4 3-8 7-8l271 0c5 0 8 4 8 8z"/>
<glyph glyph-name="database" unicode="&#63;" d="M428 183c5 7 7 7 7-1 0 0 0-51 0-51 0-25-18-48-53-69-36-21-78-31-126-31-48 0-90 10-125 31-36 21-54 44-54 69 0 0 0 51 0 51 0 3 0 5 2 5 1 1 3 0 5-4 11-17 32-32 64-44 32-11 68-17 108-17 40 0 76 6 108 17 32 12 53 27 64 44m1 130c3 6 5 6 6 0 0 0 0-59 0-59 0-23-17-43-52-58-35-16-77-24-127-24-49 0-91 8-126 24-36 15-53 35-53 58 0 0 0 59 0 59 0 7 2 7 7 0 10-15 31-28 63-38 33-10 69-15 109-15 40 0 76 5 109 15 32 10 53 23 64 38m-173 168c49 0 91-6 126-20 36-13 53-29 53-47 0 0 0-33 0-33 0-20-17-37-53-51-35-14-77-21-126-21-49 0-91 7-126 21-36 14-53 31-53 51 0 0 0 33 0 33 0 18 17 34 53 47 35 14 77 20 126 20"/>
<glyph glyph-name="external-link" unicode="&#64;" d="M402 247l0-92c0-22-8-42-24-58-16-16-35-24-58-24l-238 0c-22 0-42 8-58 24-16 16-24 36-24 58l0 238c0 23 8 42 24 58 16 16 36 24 58 24l201 0c3 0 5 0 7-2 2-2 3-4 3-7l0-18c0-3-1-5-3-7-2-1-4-2-7-2l-201 0c-12 0-23-5-32-14-9-9-13-19-13-32l0-238c0-12 4-23 13-32 9-9 20-13 32-13l238 0c13 0 23 4 32 13 9 9 14 20 14 32l0 92c0 3 1 5 2 6 2 2 4 3 7 3l18 0c3 0 5-1 7-3 1-1 2-3 2-6z m110 247l0-147c0-5-2-9-5-12-4-4-8-6-13-6-5 0-10 2-13 6l-50 50-187-186c-2-2-4-3-6-3-3 0-5 1-7 3l-32 32c-2 2-3 4-3 7 0 2 1 4 3 6l186 187-50 50c-4 3-6 8-6 13 0 5 2 9 6 13 3 3 7 5 12 5l147 0c5 0 9-2 13-5 3-4 5-8 5-13z"/>
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -1,56 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="-355 222.5 312 324.5" enable-background="new -355 222.5 312 324.5" xml:space="preserve">
<path fill="#2C7EB0" d="M-142.7,374.4c-2.8,0-5.6,0.2-8.3,0.7c-6.7-22-27.6-38-52.3-38c-30.1,0-54.5,23.9-54.5,53.3
c0,2.6,0.2,5.2,0.6,7.7c-1.4-0.2-2.9-0.3-4.4-0.3c-20.5,0-37.1,16.2-37.1,36.3c0,20,16.6,36.3,37.1,36.3h51.1v-38.6l-21.5-0.3
l35.9-51.3l35.9,51.3l-21.5,0.3v38.6h39.1c27.1,0,49.1-21.5,49.1-48C-93.6,395.9-115.6,374.4-142.7,374.4z"/>
<path fill="#2C7EB0" d="M-277.1,537.4v-22.9h7.9c1.8,0,3.1,0.1,4.1,0.3c1.3,0.3,2.4,0.8,3.4,1.6c1.2,1,2.1,2.3,2.7,3.9
c0.6,1.6,0.9,3.4,0.9,5.4c0,1.7-0.2,3.3-0.6,4.6s-0.9,2.5-1.6,3.3c-0.6,0.9-1.3,1.6-2.1,2.1c-0.8,0.5-1.7,0.9-2.7,1.1
c-1.1,0.3-2.3,0.4-3.7,0.4h-8.3V537.4z M-274,534.7h4.9c1.5,0,2.7-0.1,3.6-0.4s1.5-0.7,2.1-1.2c0.7-0.7,1.3-1.7,1.7-2.9
c0.4-1.2,0.6-2.7,0.6-4.4c0-2.4-0.4-4.2-1.2-5.5c-0.8-1.3-1.7-2.1-2.9-2.6c-0.8-0.3-2.1-0.5-3.9-0.5h-4.8v17.5H-274z M-255.4,537.4
v-16.6h2.5v2.5c0.6-1.2,1.2-2,1.8-2.3s1.1-0.6,1.8-0.6c0.9,0,1.9,0.3,2.9,0.9l-1,2.6c-0.7-0.4-1.4-0.6-2.1-0.6
c-0.6,0-1.2,0.2-1.7,0.6c-0.5,0.4-0.8,0.9-1,1.5c-0.3,1-0.5,2.1-0.5,3.3v8.7L-255.4,537.4L-255.4,537.4z M-234.4,535.4
c-1,0.9-2,1.5-3,1.9s-2,0.5-3.1,0.5c-1.8,0-3.2-0.4-4.2-1.3c-1-0.9-1.5-2-1.5-3.4c0-0.8,0.2-1.6,0.6-2.2c0.4-0.7,0.9-1.2,1.5-1.6
c0.6-0.4,1.3-0.7,2-0.9c0.6-0.1,1.4-0.3,2.5-0.4c2.3-0.3,3.9-0.6,5-1c0-0.4,0-0.6,0-0.7c0-1.1-0.3-2-0.8-2.4c-0.7-0.6-1.8-1-3.2-1
c-1.3,0-2.3,0.2-2.9,0.7c-0.6,0.5-1.1,1.3-1.4,2.5l-2.8-0.4c0.2-1.2,0.7-2.1,1.2-2.9c0.6-0.7,1.4-1.3,2.5-1.7s2.3-0.6,3.8-0.6
c1.4,0,2.6,0.2,3.5,0.5s1.5,0.8,2,1.3c0.4,0.5,0.7,1.1,0.9,1.9c0.1,0.5,0.1,1.3,0.1,2.6v3.8c0,2.6,0.1,4.3,0.2,5
c0.1,0.7,0.4,1.4,0.7,2h-2.9C-234.1,536.9-234.3,536.2-234.4,535.4z M-234.6,529.1c-1,0.4-2.6,0.8-4.6,1.1c-1.2,0.2-2,0.4-2.5,0.6
c-0.5,0.2-0.8,0.5-1.1,0.9s-0.4,0.8-0.4,1.3c0,0.8,0.3,1.4,0.9,1.9c0.6,0.5,1.4,0.8,2.5,0.8s2-0.2,2.9-0.7c0.8-0.5,1.5-1.1,1.9-1.9
c0.3-0.6,0.5-1.6,0.5-2.8L-234.6,529.1L-234.6,529.1z M-228.4,538.8l2.7,0.4c0.1,0.8,0.4,1.5,1,1.8c0.7,0.5,1.7,0.8,2.9,0.8
c1.3,0,2.3-0.3,3-0.8s1.2-1.2,1.4-2.2c0.1-0.6,0.2-1.8,0.2-3.6c-1.2,1.4-2.8,2.2-4.6,2.2c-2.3,0-4-0.8-5.3-2.5
c-1.2-1.6-1.9-3.6-1.9-5.9c0-1.6,0.3-3,0.9-4.4c0.6-1.3,1.4-2.4,2.5-3.1c1.1-0.7,2.4-1.1,3.8-1.1c2,0,3.6,0.8,4.8,2.4v-2h2.6v14.3
c0,2.6-0.3,4.4-0.8,5.5s-1.4,1.9-2.5,2.6s-2.5,0.9-4.2,0.9c-2,0-3.6-0.4-4.8-1.3S-228.4,540.6-228.4,538.8z M-226,528.8
c0,2.2,0.4,3.8,1.3,4.8c0.9,1,1.9,1.5,3.2,1.5s2.4-0.5,3.2-1.5c0.9-1,1.3-2.6,1.3-4.7c0-2-0.5-3.6-1.4-4.6s-2-1.5-3.3-1.5
c-1.2,0-2.3,0.5-3.2,1.5S-226,526.8-226,528.8z M-189,534.7c-0.9,1-1.9,1.8-3,2.3s-2.3,0.8-3.5,0.8c-2.3,0-4.2-0.8-5.6-2.4
c-1.1-1.3-1.7-2.7-1.7-4.3c0-1.4,0.5-2.7,1.4-3.8s2.3-2.1,4.1-3c-1-1.2-1.7-2.2-2.1-2.9c-0.3-0.7-0.5-1.5-0.5-2.1
c0-1.4,0.5-2.6,1.6-3.6s2.4-1.5,4.1-1.5c1.6,0,2.8,0.5,3.8,1.4c1,1,1.5,2.1,1.5,3.5c0,2.2-1.4,4-4.3,5.6l4.1,5.2
c0.5-0.9,0.8-2,1.1-3.2l2.9,0.6c-0.5,2-1.2,3.6-2,4.9c1.1,1.4,2.2,2.6,3.6,3.5l-1.9,2.2C-186.6,537.2-187.8,536.2-189,534.7z
M-190.7,532.5l-5.2-6.4c-1.5,0.9-2.5,1.7-3.1,2.5c-0.5,0.8-0.8,1.5-0.8,2.3c0,0.9,0.4,1.9,1.1,2.9c0.7,1,1.8,1.5,3.1,1.5
c0.8,0,1.7-0.3,2.6-0.8C-192,534-191.3,533.3-190.7,532.5z M-194.7,522.8c1.2-0.7,2-1.3,2.4-1.9c0.4-0.5,0.5-1.1,0.5-1.8
c0-0.8-0.2-1.4-0.7-1.9s-1.1-0.7-1.9-0.7c-0.8,0-1.4,0.2-1.9,0.7s-0.8,1.1-0.8,1.8c0,0.4,0.1,0.7,0.3,1.1c0.2,0.4,0.5,0.8,0.8,1.2
L-194.7,522.8z M-162,537.4v-2.1c-1.1,1.6-2.6,2.5-4.6,2.5c-1.3,0-2.5-0.4-3.6-1.1s-2-1.7-2.6-3.1c-0.6-1.3-0.9-2.8-0.9-4.5
s0.3-3.2,0.8-4.5c0.6-1.3,1.4-2.4,2.5-3.1c1.1-0.7,2.3-1.1,3.7-1.1c1,0,1.9,0.2,2.7,0.6s1.4,1,1.9,1.6v-8.2h2.8v22.9L-162,537.4
L-162,537.4z M-170.9,529.2c0,2.1,0.4,3.7,1.3,4.8c0.9,1.1,2,1.6,3.2,1.6s2.3-0.5,3.1-1.5c0.9-1,1.3-2.5,1.3-4.6
c0-2.3-0.4-3.9-1.3-5s-2-1.6-3.2-1.6s-2.3,0.5-3.1,1.5C-170.4,525.3-170.9,527-170.9,529.2z M-155.4,537.4v-16.6h2.5v2.5
c0.6-1.2,1.2-2,1.8-2.3s1.1-0.6,1.8-0.6c0.9,0,1.9,0.3,2.9,0.9l-1,2.6c-0.7-0.4-1.4-0.6-2.1-0.6c-0.6,0-1.2,0.2-1.7,0.6
c-0.5,0.4-0.8,0.9-1,1.5c-0.3,1-0.5,2.1-0.5,3.3v8.7L-155.4,537.4L-155.4,537.4z M-146.2,529.1c0-3.1,0.9-5.3,2.6-6.8
c1.4-1.2,3.2-1.8,5.2-1.8c2.3,0,4.1,0.7,5.6,2.2c1.4,1.5,2.2,3.6,2.2,6.2c0,2.1-0.3,3.8-1,5c-0.6,1.2-1.6,2.2-2.8,2.9s-2.6,1-4,1
c-2.3,0-4.2-0.7-5.6-2.2C-145.5,534.1-146.2,531.9-146.2,529.1z M-143.3,529.1c0,2.1,0.5,3.7,1.4,4.8s2.1,1.6,3.5,1.6
s2.6-0.5,3.5-1.6s1.4-2.7,1.4-4.9c0-2.1-0.5-3.6-1.4-4.7c-0.9-1.1-2.1-1.6-3.5-1.6s-2.6,0.5-3.5,1.6
C-142.9,525.4-143.3,527-143.3,529.1z M-127.8,543.8v-23h2.6v2.2c0.6-0.8,1.3-1.5,2-1.9c0.8-0.4,1.7-0.6,2.8-0.6
c1.4,0,2.7,0.4,3.8,1.1c1.1,0.7,1.9,1.8,2.5,3.1s0.8,2.8,0.8,4.4c0,1.7-0.3,3.2-0.9,4.6s-1.5,2.4-2.7,3.1c-1.2,0.7-2.4,1.1-3.7,1.1
c-0.9,0-1.8-0.2-2.5-0.6c-0.7-0.4-1.4-0.9-1.8-1.5v8.1L-127.8,543.8L-127.8,543.8z M-125.3,529.2c0,2.1,0.4,3.7,1.3,4.7
s1.9,1.5,3.1,1.5s2.3-0.5,3.2-1.6c0.9-1.1,1.3-2.7,1.3-4.9c0-2.1-0.4-3.7-1.3-4.8s-1.9-1.6-3.1-1.6s-2.3,0.6-3.2,1.7
C-124.8,525.5-125.3,527.1-125.3,529.2z"/>
<path fill="#2C7EB0" d="M-172.5,241.5l-2.8-16.1l-56.5,9.9l8.3,47.2l5.6-0.9v4.1h57.4v-44.1h-12V241.5z M-217.9,276.8l-1.8,0.3
l-6.7-38.1l47.4-8.4l1.9,10.8h-40.7v35.4H-217.9z M-165.2,280.9h-48.1v-34.8h48.1V280.9z M-210.1,249.2V275l9.8-6.5l6,3.8l14.7-16.1
l1.9,0.8l9.5,11v-18.7L-210.1,249.2L-210.1,249.2z M-200.8,260.4c-2.2,0-4.1-1.9-4.1-4.1c0-2.2,1.9-4.1,4.1-4.1
c2.2,0,4.1,1.9,4.1,4.1C-196.7,258.5-198.6,260.4-200.8,260.4z"/>
<path fill="#2C7EB0" d="M-331.5,277.8v35.4c-2-0.9-4.6-1.1-7.1-0.6c-5.4,1.2-9.1,5.6-8.3,9.8c0.7,3.4,4.3,5.9,8.7,5.9
c0.9,0,1.8-0.1,2.7-0.3c4.7-1,8.2-4.5,8.4-8.3v-33.1l26.1-3.9v25.8c-2-0.9-4.6-1.1-7.1-0.6c-5.4,1.2-9.1,5.6-8.3,9.8
c0.7,3.4,4.3,5.9,8.7,5.9l0,0c0.9,0,1.8-0.1,2.7-0.3c4.7-1,8.2-4.5,8.4-8.3v-42.1L-331.5,277.8z"/>
<path fill="#2C7EB0" d="M-52.7,319.3v-6.7h6.7v-7.5h-6.7v-6.7h6.7v-6.7h-6.7v-7.5h6.7v-6.7h-65.1v6.7h6.7v7.5h-6.7v6.7h6.7v6.7h-6.7
v7.5h6.7v6.7h-6.7v6.7H-46v-6.7H-52.7z M-82.8,309.1v-13.9l12.1,7L-82.8,309.1z"/>
</svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,23 +0,0 @@
webpackJsonp([3],[function(t,e){"use strict"
function i(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}var n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e]
for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t}
!function(){var t={getInfo:function e(){return{longname:"Media Dialog for SilverStripe CMS",author:"Sam Minnée",authorurl:"http://www.siverstripe.com/",infourl:"http://www.silverstripe.com/",version:"1.1"
}},init:function a(t){t.addButton("ssmedia",{icon:"image",title:"Insert Media",cmd:"ssmedia"}),t.addMenuItem("ssmedia",{icon:"image",text:"Insert Media",cmd:"ssmedia"}),t.addCommand("ssmedia",function(){
window.jQuery("#"+t.id).entwine("ss").openMediaDialog()}),t.on("BeforeExecCommand",function(e){var i=e.command,n=e.ui,a=e.value
"mceAdvImage"!==i&&"mceImage"!==i||(e.preventDefault(),t.execCommand("ssmedia",n,a))}),t.on("SaveContent",function(t){var e=window.jQuery(t.content),i=function n(t){return Object.keys(t).map(function(e){
return t[e]?e+'="'+t[e]+'"':null}).filter(function(t){return null!==t}).join(" ")}
e.find(".ss-htmleditorfield-file.embed").each(function(){var t=window.jQuery(this),e={width:t.attr("width"),"class":t.attr("cssclass"),thumbnail:t.data("thumbnail")},n="[embed "+i(e)+"]"+t.data("url")+"[/embed]"
t.replaceWith(n)}),e.find("img").each(function(){var t=window.jQuery(this),e={src:t.attr("src"),id:t.data("id"),width:t.attr("width"),height:t.attr("height"),"class":t.attr("class"),title:t.attr("title"),
alt:t.attr("alt")},n="[image "+i(e)+"]"
t.replaceWith(n)}),t.content="",e.each(function(){void 0!==this.outerHTML&&(t.content+=this.outerHTML)})}),t.on("BeforeSetContent",function(t){for(var e=null,a=t.content,r=function l(t){return t.match(/([^\s\/'"=,]+)\s*=\s*(('([^']+)')|("([^"]+)")|([^\s,\]]+))/g).reduce(function(t,e){
var a=e.match(/^([^\s\/'"=,]+)\s*=\s*(?:(?:'([^']+)')|(?:"([^"]+)")|(?:[^\s,\]]+))$/),r=a[1],s=a[2]||a[3]||a[4]
return n({},t,i({},r,s))},{})},s=/\[embed(.*?)](.+?)\[\/\s*embed\s*]/gi,c=function m(){var t=r(e[1]),i=window.jQuery("<img/>").attr({src:t.thumbnail,width:t.width,height:t.height,"class":t["class"],"data-url":e[2]
}).addClass("ss-htmleditorfield-file embed")
t.cssclass=t["class"],Object.keys(t).forEach(function(e){return i.attr("data-"+e,t[e])}),a=a.replace(e[0],window.jQuery("<div/>").append(i).html())};e=s.exec(a);)c()
for(var o=/\[image(.*?)]/gi;e=o.exec(a);){var d=r(e[1]),u=window.jQuery("<img/>").attr({src:d.src,width:d.width,height:d.height,"class":d["class"],alt:d.alt,title:d.title,"data-id":d.id})
a=a.replace(e[0],window.jQuery("<div/>").append(u).html())}t.content=a})}}
tinymce.PluginManager.add("ssmedia",function(e){return t.init(e)})}()}])

View File

@ -1,6 +0,0 @@
webpackJsonp([3],[function(e,n,t){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var o=t(1),r=i(o)
r["default"].entwine("ss",function(e){e("form.uploadfield-form .TreeDropdownField").entwine({onmatch:function n(){this._super()
var e=this
this.bind("change",function(){var n=e.closest("form").find(".grid-field")
n.setState("ParentID",e.getValue()),n.reload()})},onunmatch:function t(){this._super()}})})}])

View File

@ -1,50 +1,51 @@
webpackJsonp([4],[function(e,t,n){"use strict"
webpackJsonp([3],[function(e,t,n){"use strict"
n(2),n(3),n(6),n(16),n(18),n(24),n(26),n(28),n(29),n(31),n(34),n(104),n(112),n(116),n(126),n(127),n(128),n(129),n(130),n(131),n(133),n(136),n(138),n(140),n(143),n(146),n(148),n(150),n(152),n(154),n(156),
n(157),n(166),n(167),n(169),n(170),n(171),n(172),n(173),n(174),n(175),n(176),n(177),n(178),n(179),n(180),n(181),n(184),n(186),n(187),n(188),n(189),n(193),n(194),n(195),n(196),n(197),n(194),n(200),n(202),
n(204),n(205)},,function(e,t){"use strict"
n(157),n(166),n(167),n(169),n(170),n(171),n(172),n(173),n(174),n(175),n(176),n(177),n(178),n(179),n(180),n(181),n(184),n(186),n(187),n(188),n(189),n(190),n(191),n(192),n(189),n(195),n(197),n(199),n(200)
},,function(e,t){"use strict"
function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(){function e(){
n(this,e),this.defaultLocale="en_US",this.currentLocale=this.detectLocale(),this.lang={}}return i(e,[{key:"setLocale",value:function t(e){this.currentLocale=e}},{key:"getLocale",value:function r(){return null!==this.currentLocale?this.currentLocale:this.defaultLocale
var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function(){function e(){
n(this,e),this.defaultLocale="en_US",this.currentLocale=this.detectLocale(),this.lang={}}return r(e,[{key:"setLocale",value:function t(e){this.currentLocale=e}},{key:"getLocale",value:function i(){return null!==this.currentLocale?this.currentLocale:this.defaultLocale
}},{key:"_t",value:function a(e,t,n,i){var r=this.getLocale().replace(/_[\w]+/i,""),a=this.defaultLocale.replace(/_[\w]+/i,"")
return this.lang&&this.lang[this.getLocale()]&&this.lang[this.getLocale()][e]?this.lang[this.getLocale()][e]:this.lang&&this.lang[r]&&this.lang[r][e]?this.lang[r][e]:this.lang&&this.lang[this.defaultLocale]&&this.lang[this.defaultLocale][e]?this.lang[this.defaultLocale][e]:this.lang&&this.lang[a]&&this.lang[a][e]?this.lang[a][e]:t?t:""
}},{key:"_t",value:function o(e,t,n,r){var i=this.getLocale().replace(/_[\w]+/i,""),o=this.defaultLocale.replace(/_[\w]+/i,"")
return this.lang&&this.lang[this.getLocale()]&&this.lang[this.getLocale()][e]?this.lang[this.getLocale()][e]:this.lang&&this.lang[i]&&this.lang[i][e]?this.lang[i][e]:this.lang&&this.lang[this.defaultLocale]&&this.lang[this.defaultLocale][e]?this.lang[this.defaultLocale][e]:this.lang&&this.lang[o]&&this.lang[o][e]?this.lang[o][e]:t?t:""
}},{key:"addDictionary",value:function o(e,t){"undefined"==typeof this.lang[e]&&(this.lang[e]={})
}},{key:"addDictionary",value:function a(e,t){"undefined"==typeof this.lang[e]&&(this.lang[e]={})
for(var n in t)this.lang[e][n]=t[n]}},{key:"getDictionary",value:function s(e){return this.lang[e]}},{key:"stripStr",value:function l(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}},{key:"stripStrML",
value:function u(e){for(var t=e.split("\n"),n=0;n<t.length;n+=1)t[n]=stripStr(t[n])
return stripStr(t.join(" "))}},{key:"sprintf",value:function c(e){for(var t=arguments.length,n=Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i]
return stripStr(t.join(" "))}},{key:"sprintf",value:function c(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r]
if(0===n.length)return e
var r=new RegExp("(.?)(%s)","g"),a=0
return e.replace(r,function(e,t,i,r,o){return"%"===t?e:t+n[a++]})}},{key:"inject",value:function d(e,t){var n=new RegExp("{([A-Za-z0-9_]*)}","g")
return e.replace(n,function(e,n,i,r){return t[n]?t[n]:e})}},{key:"detectLocale",value:function f(){var t,n
if(t=document.body.getAttribute("lang"),!t)for(var i=document.getElementsByTagName("meta"),r=0;r<i.length;r++)i[r].attributes["http-equiv"]&&"content-language"==i[r].attributes["http-equiv"].nodeValue.toLowerCase()&&(t=i[r].attributes.content.nodeValue)
var i=new RegExp("(.?)(%s)","g"),o=0
return e.replace(i,function(e,t,r,i,a){return"%"===t?e:t+n[o++]})}},{key:"inject",value:function d(e,t){var n=new RegExp("{([A-Za-z0-9_]*)}","g")
return e.replace(n,function(e,n,r,i){return t[n]?t[n]:e})}},{key:"detectLocale",value:function f(){var t,n
if(t=document.body.getAttribute("lang"),!t)for(var r=document.getElementsByTagName("meta"),i=0;i<r.length;i++)r[i].attributes["http-equiv"]&&"content-language"==r[i].attributes["http-equiv"].nodeValue.toLowerCase()&&(t=r[i].attributes.content.nodeValue)
t||(t=this.defaultLocale)
var a=t.match(/([^-|_]*)[-|_](.*)/)
if(2==t.length){for(var o in e.lang)if(o.substr(0,2).toLowerCase()==t.toLowerCase()){n=o
break}}else a&&(n=a[1].toLowerCase()+"_"+a[2].toUpperCase())
return n}},{key:"addEvent",value:function p(e,t,n,i){return e.addEventListener?(e.addEventListener(t,n,i),!0):e.attachEvent?e.attachEvent("on"+t,n):void console.log("Handler could not be attached")}}]),
e}(),a=new r
window.ss="undefined"!=typeof window.ss?window.ss:{},window.ss.i18n=window.i18n=a,t["default"]=a},function(e,t,n){(function(t){e.exports=t.SilverStripeComponent=n(4)}).call(t,function(){return this}())
var o=t.match(/([^-|_]*)[-|_](.*)/)
if(2==t.length){for(var a in e.lang)if(a.substr(0,2).toLowerCase()==t.toLowerCase()){n=a
break}}else o&&(n=o[1].toLowerCase()+"_"+o[2].toUpperCase())
return n}},{key:"addEvent",value:function p(e,t,n,r){return e.addEventListener?(e.addEventListener(t,n,r),!0):e.attachEvent?e.attachEvent("on"+t,n):void console.log("Handler could not be attached")}}]),
e}(),o=new i
window.ss="undefined"!=typeof window.ss?window.ss:{},window.ss.i18n=window.i18n=o,t["default"]=o},function(e,t,n){(function(t){e.exports=t.SilverStripeComponent=n(4)}).call(t,function(){return this}())
},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(1),d=i(c),f=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"componentDidMount",value:function n(){if("undefined"!=typeof this.props.cmsEvents){
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(1),d=r(c),f=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"componentDidMount",value:function n(){if("undefined"!=typeof this.props.cmsEvents){
this.cmsEvents=this.props.cmsEvents
for(var e in this.cmsEvents)({}).hasOwnProperty.call(this.cmsEvents,e)&&(0,d["default"])(document).on(e,this.cmsEvents[e].bind(this))}}},{key:"componentWillUnmount",value:function i(){for(var e in this.cmsEvents)({}).hasOwnProperty.call(this.cmsEvents,e)&&(0,
for(var e in this.cmsEvents)({}).hasOwnProperty.call(this.cmsEvents,e)&&(0,d["default"])(document).on(e,this.cmsEvents[e].bind(this))}}},{key:"componentWillUnmount",value:function r(){for(var e in this.cmsEvents)({}).hasOwnProperty.call(this.cmsEvents,e)&&(0,
d["default"])(document).off(e)}},{key:"emitCmsEvent",value:function l(e,t){(0,d["default"])(document).trigger(e,t)}}]),t}(l.Component)
f.propTypes={cmsEvents:u["default"].PropTypes.object},t["default"]=f},,function(e,t,n){(function(t){e.exports=t.Backend=n(7)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t,n){return t in e?Object.defineProperty(e,t,{
value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){var t=null,n=null
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t,n){return t in e?Object.defineProperty(e,t,{
value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e){var t=null,n=null
if(!(e.status>=200&&e.status<300))throw n=new Error(e.statusText),n.response=e,n
return t=e}function s(e){var t=null
if(e instanceof FormData||"string"==typeof e)t=e
@ -55,187 +56,182 @@ default:throw new Error("Can't encode format: "+e)}}function u(e,t){switch(e){ca
case"application/json":case"application/x-json":case"application/x-javascript":case"text/javascript":case"text/x-javascript":case"text/x-json":return JSON.parse(t)
default:throw new Error("Can't decode format: "+e)}}function c(e,t){return""===t?e:e.match(/\?/)?e+"&"+t:e+"?"+t}function d(e){return e.text().then(function(t){return u(e.headers.get("Content-Type"),t)
})}function f(e,t){return Object.keys(t).reduce(function(n,i){var r=e[i]
return!r||r.remove!==!0&&r.querystring!==!0?m(n,a({},i,t[i])):n},{})}function p(e,t,n){var i=arguments.length<=3||void 0===arguments[3]?{setFromData:!1}:arguments[3],r=t,o=Object.keys(n).reduce(function(t,r){
var o=e[r],s=i.setFromData===!0&&!(o&&o.remove===!0),l=o&&o.querystring===!0&&o.remove!==!0
return s||l?m(t,a({},r,n[r])):t},{}),s=l("application/x-www-form-urlencoded",o)
return r=c(r,s),r=Object.keys(e).reduce(function(t,i){var r=e[i].urlReplacement
return r?t.replace(r,n[i]):t},r)}Object.defineProperty(t,"__esModule",{value:!0})
var h=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),m=Object.assign||function(e){
})}function f(e,t){return Object.keys(t).reduce(function(n,r){var i=e[r]
return!i||i.remove!==!0&&i.querystring!==!0?m(n,o({},r,t[r])):n},{})}function p(e,t,n){var r=arguments.length<=3||void 0===arguments[3]?{setFromData:!1}:arguments[3],i=t,a=Object.keys(n).reduce(function(t,i){
var a=e[i],s=r.setFromData===!0&&!(a&&a.remove===!0),l=a&&a.querystring===!0&&a.remove!==!0
return s||l?m(t,o({},i,n[i])):t},{}),s=l("application/x-www-form-urlencoded",a)
return i=c(i,s),i=Object.keys(e).reduce(function(t,r){var i=e[r].urlReplacement
return i?t.replace(i,n[r]):t},i)}Object.defineProperty(t,"__esModule",{value:!0})
var h=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),m=Object.assign||function(e){
for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e
},v=n(8),y=i(v),b=n(10),_=i(b),w=n(13),C=i(w),T=n(14),E=i(T)
},y=n(8),b=r(y),v=n(10),_=r(v),w=n(13),C=r(w),T=n(14),P=r(T)
_["default"].polyfill()
var P=function(){function e(){r(this,e),this.fetch=y["default"]}return h(e,[{key:"createEndpointFetcher",value:function t(e){var t=this,n=m({method:"get",payloadFormat:"application/x-www-form-urlencoded",
responseFormat:"application/json",payloadSchema:{},defaultData:{}},e),i={json:"application/json",urlencoded:"application/x-www-form-urlencoded"}
return["payloadFormat","responseFormat"].forEach(function(e){i[n[e]]&&(n[e]=i[n[e]])}),function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=m({},i,{
Accept:n.responseFormat,"Content-Type":n.payloadFormat}),a=E["default"].recursive({},n.defaultData,e),o=p(n.payloadSchema,n.url,a,{setFromData:"get"===n.method.toLowerCase()}),s="get"!==n.method.toLowerCase()?l(n.payloadFormat,f(n.payloadSchema,a)):"",u="get"===n.method.toLowerCase()?[o,r]:[o,s,r]
var E=function(){function e(){i(this,e),this.fetch=b["default"]}return h(e,[{key:"createEndpointFetcher",value:function t(e){var t=this,n=m({method:"get",payloadFormat:"application/x-www-form-urlencoded",
responseFormat:"application/json",payloadSchema:{},defaultData:{}},e),r={json:"application/json",urlencoded:"application/x-www-form-urlencoded"}
return["payloadFormat","responseFormat"].forEach(function(e){r[n[e]]&&(n[e]=r[n[e]])}),function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=m({},r,{
Accept:n.responseFormat,"Content-Type":n.payloadFormat}),o=P["default"].recursive({},n.defaultData,e),a=p(n.payloadSchema,n.url,o,{setFromData:"get"===n.method.toLowerCase()}),s="get"!==n.method.toLowerCase()?l(n.payloadFormat,f(n.payloadSchema,o)):"",u="get"===n.method.toLowerCase()?[a,i]:[a,s,i]
return t[n.method.toLowerCase()].apply(t,u).then(d)}}},{key:"get",value:function n(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1]
return this.fetch(e,{method:"get",credentials:"same-origin",headers:t}).then(o)}},{key:"post",value:function i(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i={
return this.fetch(e,{method:"get",credentials:"same-origin",headers:t}).then(a)}},{key:"post",value:function r(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r={
"Content-Type":"application/x-www-form-urlencoded"}
return this.fetch(e,{method:"post",credentials:"same-origin",body:s(t),headers:m({},i,n)}).then(o)}},{key:"put",value:function a(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2]
return this.fetch(e,{method:"post",credentials:"same-origin",body:s(t),headers:m({},r,n)}).then(a)}},{key:"put",value:function o(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2]
return this.fetch(e,{method:"put",credentials:"same-origin",body:s(t),headers:n}).then(o)}},{key:"delete",value:function u(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2]
return this.fetch(e,{method:"put",credentials:"same-origin",body:s(t),headers:n}).then(a)}},{key:"delete",value:function u(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2]
return this.fetch(e,{method:"delete",credentials:"same-origin",body:s(t),headers:n}).then(o)}}]),e}(),O=new P
return this.fetch(e,{method:"delete",credentials:"same-origin",body:s(t),headers:n}).then(a)}}]),e}(),O=new E
t["default"]=O},function(e,t,n){n(9),e.exports=self.fetch.bind(self)},function(e,t){!function(e){"use strict"
function t(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name")
return e.toLowerCase()}function n(e){return"string"!=typeof e&&(e=String(e)),e}function i(e){var t={next:function(){var t=e.shift()
return{done:void 0===t,value:t}}}
return m.iterable&&(t[Symbol.iterator]=function(){return t}),t}function r(e){this.map={},e instanceof r?e.forEach(function(e,t){this.append(t,e)},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){
this.append(t,e[t])},this)}function a(e){return e.bodyUsed?Promise.reject(new TypeError("Already read")):void(e.bodyUsed=!0)}function o(e){return new Promise(function(t,n){e.onload=function(){t(e.result)
return e.toLowerCase()}function n(e){return"string"!=typeof e&&(e=String(e)),e}function r(e){this.map={},e instanceof r?e.forEach(function(e,t){this.append(t,e)},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){
this.append(t,e[t])},this)}function i(e){return e.bodyUsed?Promise.reject(new TypeError("Already read")):void(e.bodyUsed=!0)}function o(e){return new Promise(function(t,n){e.onload=function(){t(e.result)
},e.onerror=function(){n(e.error)}})}function s(e){var t=new FileReader
return t.readAsArrayBuffer(e),o(t)}function l(e){var t=new FileReader
return t.readAsText(e),o(t)}function u(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,"string"==typeof e)this._bodyText=e
else if(m.blob&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e
else if(m.formData&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e
else if(m.searchParams&&URLSearchParams.prototype.isPrototypeOf(e))this._bodyText=e.toString()
else if(e){if(!m.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(e))throw new Error("unsupported BodyInit type")}else this._bodyText=""
this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):m.searchParams&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))
},e.onerror=function(){n(e.error)}})}function a(e){var t=new FileReader
return t.readAsArrayBuffer(e),o(t)}function s(e){var t=new FileReader
return t.readAsText(e),o(t)}function l(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,"string"==typeof e)this._bodyText=e
else if(h.blob&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e
else if(h.formData&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e
else if(e){if(!h.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(e))throw new Error("unsupported BodyInit type")}else this._bodyText=""
this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type&&this.headers.set("content-type",this._bodyBlob.type))
},m.blob?(this.blob=function(){var e=a(this)
},h.blob?(this.blob=function(){var e=i(this)
if(e)return e
if(this._bodyBlob)return Promise.resolve(this._bodyBlob)
if(this._bodyFormData)throw new Error("could not read FormData body as blob")
return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this.blob().then(s)},this.text=function(){var e=a(this)
return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this.blob().then(a)},this.text=function(){var e=i(this)
if(e)return e
if(this._bodyBlob)return l(this._bodyBlob)
if(this._bodyBlob)return s(this._bodyBlob)
if(this._bodyFormData)throw new Error("could not read FormData body as text")
return Promise.resolve(this._bodyText)}):this.text=function(){var e=a(this)
return e?e:Promise.resolve(this._bodyText)},m.formData&&(this.formData=function(){return this.text().then(f)}),this.json=function(){return this.text().then(JSON.parse)},this}function c(e){var t=e.toUpperCase()
return Promise.resolve(this._bodyText)}):this.text=function(){var e=i(this)
return e?e:Promise.resolve(this._bodyText)},h.formData&&(this.formData=function(){return this.text().then(d)}),this.json=function(){return this.text().then(JSON.parse)},this}function u(e){var t=e.toUpperCase()
return g.indexOf(t)>-1?t:e}function d(e,t){t=t||{}
return m.indexOf(t)>-1?t:e}function c(e,t){t=t||{}
var n=t.body
if(d.prototype.isPrototypeOf(e)){if(e.bodyUsed)throw new TypeError("Already read")
if(c.prototype.isPrototypeOf(e)){if(e.bodyUsed)throw new TypeError("Already read")
this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new r(e.headers)),this.method=e.method,this.mode=e.mode,n||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=e
if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new r(t.headers)),this.method=c(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,
if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new r(t.headers)),this.method=u(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,
("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests")
this._initBody(n)}function f(e){var t=new FormData
return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ")
t.append(decodeURIComponent(i),decodeURIComponent(r))}}),t}function p(e){var t=new r,n=(e.getAllResponseHeaders()||"").trim().split("\n")
return n.forEach(function(e){var n=e.trim().split(":"),i=n.shift().trim(),r=n.join(":").trim()
t.append(i,r)}),t}function h(e,t){t||(t={}),this.type="default",this.status=t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText,this.headers=t.headers instanceof r?t.headers:new r(t.headers),
this.url=t.url||"",this._initBody(e)}if(!e.fetch){var m={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,
!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e}
r.prototype.append=function(e,i){e=t(e),i=n(i)
var r=this.map[e]
r||(r=[],this.map[e]=r),r.push(i)},r.prototype["delete"]=function(e){delete this.map[t(e)]},r.prototype.get=function(e){var n=this.map[t(e)]
return n?n[0]:null},r.prototype.getAll=function(e){return this.map[t(e)]||[]},r.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},r.prototype.set=function(e,i){this.map[t(e)]=[n(i)]},r.prototype.forEach=function(e,t){
Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(i){e.call(t,i,n,this)},this)},this)},r.prototype.keys=function(){var e=[]
return this.forEach(function(t,n){e.push(n)}),i(e)},r.prototype.values=function(){var e=[]
return this.forEach(function(t){e.push(t)}),i(e)},r.prototype.entries=function(){var e=[]
return this.forEach(function(t,n){e.push([n,t])}),i(e)},m.iterable&&(r.prototype[Symbol.iterator]=r.prototype.entries)
var g=["DELETE","GET","HEAD","OPTIONS","POST","PUT"]
d.prototype.clone=function(){return new d(this)},u.call(d.prototype),u.call(h.prototype),h.prototype.clone=function(){return new h(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new r(this.headers),
url:this.url})},h.error=function(){var e=new h(null,{status:0,statusText:""})
this._initBody(n)}function d(e){var t=new FormData
return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ")
t.append(decodeURIComponent(r),decodeURIComponent(i))}}),t}function f(e){var t=new r,n=e.getAllResponseHeaders().trim().split("\n")
return n.forEach(function(e){var n=e.trim().split(":"),r=n.shift().trim(),i=n.join(":").trim()
t.append(r,i)}),t}function p(e,t){t||(t={}),this.type="default",this.status=t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText,this.headers=t.headers instanceof r?t.headers:new r(t.headers),
this.url=t.url||"",this._initBody(e)}if(!e.fetch){r.prototype.append=function(e,r){e=t(e),r=n(r)
var i=this.map[e]
i||(i=[],this.map[e]=i),i.push(r)},r.prototype["delete"]=function(e){delete this.map[t(e)]},r.prototype.get=function(e){var n=this.map[t(e)]
return n?n[0]:null},r.prototype.getAll=function(e){return this.map[t(e)]||[]},r.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},r.prototype.set=function(e,r){this.map[t(e)]=[n(r)]},r.prototype.forEach=function(e,t){
Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){e.call(t,r,n,this)},this)},this)}
var h={blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e},m=["DELETE","GET","HEAD","OPTIONS","POST","PUT"]
c.prototype.clone=function(){return new c(this)},l.call(c.prototype),l.call(p.prototype),p.prototype.clone=function(){return new p(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new r(this.headers),
url:this.url})},p.error=function(){var e=new p(null,{status:0,statusText:""})
return e.type="error",e}
var v=[301,302,303,307,308]
h.redirect=function(e,t){if(v.indexOf(t)===-1)throw new RangeError("Invalid status code")
return new h(null,{status:t,headers:{location:e}})},e.Headers=r,e.Request=d,e.Response=h,e.fetch=function(e,t){return new Promise(function(n,i){function r(){return"responseURL"in o?o.responseURL:/^X-Request-URL:/m.test(o.getAllResponseHeaders())?o.getResponseHeader("X-Request-URL"):void 0
var g=[301,302,303,307,308]
p.redirect=function(e,t){if(g.indexOf(t)===-1)throw new RangeError("Invalid status code")
return new p(null,{status:t,headers:{location:e}})},e.Headers=r,e.Request=c,e.Response=p,e.fetch=function(e,t){return new Promise(function(n,r){function i(){return"responseURL"in a?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):void 0
}var a
a=d.prototype.isPrototypeOf(e)&&!t?e:new d(e,t)
var o=new XMLHttpRequest
o.onload=function(){var e={status:o.status,statusText:o.statusText,headers:p(o),url:r()},t="response"in o?o.response:o.responseText
n(new h(t,e))},o.onerror=function(){i(new TypeError("Network request failed"))},o.ontimeout=function(){i(new TypeError("Network request failed"))},o.open(a.method,a.url,!0),"include"===a.credentials&&(o.withCredentials=!0),
"responseType"in o&&m.blob&&(o.responseType="blob"),a.headers.forEach(function(e,t){o.setRequestHeader(t,e)}),o.send("undefined"==typeof a._bodyInit?null:a._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)
},function(e,t,n){var i;(function(t,r){!function(t,n){e.exports=n()}(this,function(){"use strict"
function e(e){return"function"==typeof e||"object"==typeof e&&null!==e}function a(e){return"function"==typeof e}function o(e){K=e}function s(e){J=e}function l(){return function(){return t.nextTick(p)}}
}var o
o=c.prototype.isPrototypeOf(e)&&!t?e:new c(e,t)
var a=new XMLHttpRequest
a.onload=function(){var e=1223===a.status?204:a.status
if(e<100||e>599)return void r(new TypeError("Network request failed"))
var t={status:e,statusText:a.statusText,headers:f(a),url:i()},o="response"in a?a.response:a.responseText
n(new p(o,t))},a.onerror=function(){r(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&h.blob&&(a.responseType="blob"),
o.headers.forEach(function(e,t){a.setRequestHeader(t,e)}),a.send("undefined"==typeof o._bodyInit?null:o._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},function(e,t,n){var r;(function(t,i){
!function(t,n){e.exports=n()}(this,function(){"use strict"
function e(e){return"function"==typeof e||"object"==typeof e&&null!==e}function o(e){return"function"==typeof e}function a(e){K=e}function s(e){J=e}function l(){return function(){return t.nextTick(p)}}
function u(){return function(){Q(p)}}function c(){var e=0,t=new ee(p),n=document.createTextNode("")
return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}function d(){var e=new MessageChannel
return e.port1.onmessage=p,function(){return e.port2.postMessage(0)}}function f(){var e=setTimeout
return function(){return e(p,1)}}function p(){for(var e=0;e<X;e+=2){var t=ie[e],n=ie[e+1]
t(n),ie[e]=void 0,ie[e+1]=void 0}X=0}function h(){try{var e=i,t=n(12)
return Q=t.runOnLoop||t.runOnContext,u()}catch(r){return f()}}function m(e,t){var n=arguments,i=this,r=new this.constructor(v)
void 0===r[ae]&&M(r)
var a=i._state
return a?!function(){var e=n[a-1]
J(function(){return A(a,r,e,i._result)})}():j(i,r,e,t),r}function g(e){var t=this
return function(){return e(p,1)}}function p(){for(var e=0;e<W;e+=2){var t=re[e],n=re[e+1]
t(n),re[e]=void 0,re[e+1]=void 0}W=0}function h(){try{var e=r,t=n(12)
return Q=t.runOnLoop||t.runOnContext,u()}catch(i){return f()}}function m(e,t){var n=arguments,r=this,i=new this.constructor(y)
void 0===i[oe]&&M(i)
var o=r._state
return o?!function(){var e=n[o-1]
J(function(){return A(o,i,e,r._result)})}():j(r,i,e,t),i}function g(e){var t=this
if(e&&"object"==typeof e&&e.constructor===t)return e
var n=new t(v)
return P(n,e),n}function v(){}function y(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function _(e){
try{return e.then}catch(t){return ue.error=t,ue}}function w(e,t,n,i){try{e.call(t,n,i)}catch(r){return r}}function C(e,t,n){J(function(e){var i=!1,r=w(n,t,function(n){i||(i=!0,t!==n?P(e,n):S(e,n))},function(t){
i||(i=!0,k(e,t))},"Settle: "+(e._label||" unknown promise"))
!i&&r&&(i=!0,k(e,r))},e)}function T(e,t){t._state===se?S(e,t._result):t._state===le?k(e,t._result):j(t,void 0,function(t){return P(e,t)},function(t){return k(e,t)})}function E(e,t,n){t.constructor===e.constructor&&n===m&&t.constructor.resolve===g?T(e,t):n===ue?k(e,ue.error):void 0===n?S(e,t):a(n)?C(e,t,n):S(e,t)
var n=new t(y)
return E(n,e),n}function y(){}function b(){return new TypeError("You cannot resolve a promise with itself")}function v(){return new TypeError("A promises callback cannot return that same promise.")}function _(e){
try{return e.then}catch(t){return ue.error=t,ue}}function w(e,t,n,r){try{e.call(t,n,r)}catch(i){return i}}function C(e,t,n){J(function(e){var r=!1,i=w(n,t,function(n){r||(r=!0,t!==n?E(e,n):k(e,n))},function(t){
r||(r=!0,S(e,t))},"Settle: "+(e._label||" unknown promise"))
!r&&i&&(r=!0,S(e,i))},e)}function T(e,t){t._state===se?k(e,t._result):t._state===le?S(e,t._result):j(t,void 0,function(t){return E(e,t)},function(t){return S(e,t)})}function P(e,t,n){t.constructor===e.constructor&&n===m&&t.constructor.resolve===g?T(e,t):n===ue?S(e,ue.error):void 0===n?k(e,t):o(n)?C(e,t,n):k(e,t)
}function P(t,n){t===n?k(t,y()):e(n)?E(t,n,_(n)):S(t,n)}function O(e){e._onerror&&e._onerror(e._result),x(e)}function S(e,t){e._state===oe&&(e._result=t,e._state=se,0!==e._subscribers.length&&J(x,e))}function k(e,t){
e._state===oe&&(e._state=le,e._result=t,J(O,e))}function j(e,t,n,i){var r=e._subscribers,a=r.length
e._onerror=null,r[a]=t,r[a+se]=n,r[a+le]=i,0===a&&e._state&&J(x,e)}function x(e){var t=e._subscribers,n=e._state
if(0!==t.length){for(var i=void 0,r=void 0,a=e._result,o=0;o<t.length;o+=3)i=t[o],r=t[o+n],i?A(n,i,r,a):r(a)
e._subscribers.length=0}}function R(){this.error=null}function I(e,t){try{return e(t)}catch(n){return ce.error=n,ce}}function A(e,t,n,i){var r=a(n),o=void 0,s=void 0,l=void 0,u=void 0
if(r){if(o=I(n,i),o===ce?(u=!0,s=o.error,o=null):l=!0,t===o)return void k(t,b())}else o=i,l=!0
t._state!==oe||(r&&l?P(t,o):u?k(t,s):e===se?S(t,o):e===le&&k(t,o))}function F(e,t){try{t(function i(t){P(e,t)},function r(t){k(e,t)})}catch(n){k(e,n)}}function D(){return de++}function M(e){e[ae]=de++,
e._state=void 0,e._result=void 0,e._subscribers=[]}function N(e,t){this._instanceConstructor=e,this.promise=new e(v),this.promise[ae]||M(this.promise),W(t)?(this._input=t,this.length=t.length,this._remaining=t.length,
this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&S(this.promise,this._result))):k(this.promise,U())}function U(){
return new Error("Array Methods must be provided an Array")}function L(e){return new N(this,e).promise}function B(e){var t=this
return new t(W(e)?function(n,i){for(var r=e.length,a=0;a<r;a++)t.resolve(e[a]).then(n,i)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function H(e){var t=this,n=new t(v)
return k(n,e),n}function $(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function q(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")
}function E(t,n){t===n?S(t,b()):e(n)?P(t,n,_(n)):k(t,n)}function O(e){e._onerror&&e._onerror(e._result),x(e)}function k(e,t){e._state===ae&&(e._result=t,e._state=se,0!==e._subscribers.length&&J(x,e))}function S(e,t){
e._state===ae&&(e._state=le,e._result=t,J(O,e))}function j(e,t,n,r){var i=e._subscribers,o=i.length
e._onerror=null,i[o]=t,i[o+se]=n,i[o+le]=r,0===o&&e._state&&J(x,e)}function x(e){var t=e._subscribers,n=e._state
if(0!==t.length){for(var r=void 0,i=void 0,o=e._result,a=0;a<t.length;a+=3)r=t[a],i=t[a+n],r?A(n,r,i,o):i(o)
e._subscribers.length=0}}function R(){this.error=null}function I(e,t){try{return e(t)}catch(n){return ce.error=n,ce}}function A(e,t,n,r){var i=o(n),a=void 0,s=void 0,l=void 0,u=void 0
if(i){if(a=I(n,r),a===ce?(u=!0,s=a.error,a=null):l=!0,t===a)return void S(t,v())}else a=r,l=!0
t._state!==ae||(i&&l?E(t,a):u?S(t,s):e===se?k(t,a):e===le&&S(t,a))}function D(e,t){try{t(function r(t){E(e,t)},function i(t){S(e,t)})}catch(n){S(e,n)}}function F(){return de++}function M(e){e[oe]=de++,
e._state=void 0,e._result=void 0,e._subscribers=[]}function N(e,t){this._instanceConstructor=e,this.promise=new e(y),this.promise[oe]||M(this.promise),X(t)?(this._input=t,this.length=t.length,this._remaining=t.length,
this._result=new Array(this.length),0===this.length?k(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&k(this.promise,this._result))):S(this.promise,L())}function L(){
return new Error("Array Methods must be provided an Array")}function U(e){return new N(this,e).promise}function B(e){var t=this
return new t(X(e)?function(n,r){for(var i=e.length,o=0;o<i;o++)t.resolve(e[o]).then(n,r)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function H(e){var t=this,n=new t(y)
return S(n,e),n}function $(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function q(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")
}function V(e){this[ae]=D(),this._result=this._state=void 0,this._subscribers=[],v!==e&&("function"!=typeof e&&$(),this instanceof V?F(this,e):q())}function G(){var e=void 0
if("undefined"!=typeof r)e=r
}function V(e){this[oe]=F(),this._result=this._state=void 0,this._subscribers=[],y!==e&&("function"!=typeof e&&$(),this instanceof V?D(this,e):q())}function G(){var e=void 0
if("undefined"!=typeof i)e=i
else if("undefined"!=typeof self)e=self
else try{e=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=e.Promise
if(n){var i=null
try{i=Object.prototype.toString.call(n.resolve())}catch(t){}if("[object Promise]"===i&&!n.cast)return}e.Promise=V}var z=void 0
if(n){var r=null
try{r=Object.prototype.toString.call(n.resolve())}catch(t){}if("[object Promise]"===r&&!n.cast)return}e.Promise=V}var z=void 0
z=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)}
var W=z,X=0,Q=void 0,K=void 0,J=function fe(e,t){ie[X]=e,ie[X+1]=t,X+=2,2===X&&(K?K(p):re())},Y="undefined"!=typeof window?window:void 0,Z=Y||{},ee=Z.MutationObserver||Z.WebKitMutationObserver,te="undefined"==typeof self&&"undefined"!=typeof t&&"[object process]"==={}.toString.call(t),ne="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,ie=new Array(1e3),re=void 0
var X=z,W=0,Q=void 0,K=void 0,J=function fe(e,t){re[W]=e,re[W+1]=t,W+=2,2===W&&(K?K(p):ie())},Y="undefined"!=typeof window?window:void 0,Z=Y||{},ee=Z.MutationObserver||Z.WebKitMutationObserver,te="undefined"==typeof self&&"undefined"!=typeof t&&"[object process]"==={}.toString.call(t),ne="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,re=new Array(1e3),ie=void 0
re=te?l():ee?c():ne?d():void 0===Y?h():f()
var ae=Math.random().toString(36).substring(16),oe=void 0,se=1,le=2,ue=new R,ce=new R,de=0
return N.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===oe&&n<e;n++)this._eachEntry(t[n],n)},N.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,i=n.resolve
ie=te?l():ee?c():ne?d():void 0===Y?h():f()
var oe=Math.random().toString(36).substring(16),ae=void 0,se=1,le=2,ue=new R,ce=new R,de=0
return N.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===ae&&n<e;n++)this._eachEntry(t[n],n)},N.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve
if(i===g){var r=_(e)
if(r===m&&e._state!==oe)this._settledAt(e._state,t,e._result)
else if("function"!=typeof r)this._remaining--,this._result[t]=e
else if(n===V){var a=new n(v)
E(a,e,r),this._willSettleAt(a,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(i(e),t)},N.prototype._settledAt=function(e,t,n){var i=this.promise
i._state===oe&&(this._remaining--,e===le?k(i,n):this._result[t]=n),0===this._remaining&&S(i,this._result)},N.prototype._willSettleAt=function(e,t){var n=this
j(e,void 0,function(e){return n._settledAt(se,t,e)},function(e){return n._settledAt(le,t,e)})},V.all=L,V.race=B,V.resolve=g,V.reject=H,V._setScheduler=o,V._setAsap=s,V._asap=J,V.prototype={constructor:V,
if(r===g){var i=_(e)
if(i===m&&e._state!==ae)this._settledAt(e._state,t,e._result)
else if("function"!=typeof i)this._remaining--,this._result[t]=e
else if(n===V){var o=new n(y)
P(o,e,i),this._willSettleAt(o,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(r(e),t)},N.prototype._settledAt=function(e,t,n){var r=this.promise
r._state===ae&&(this._remaining--,e===le?S(r,n):this._result[t]=n),0===this._remaining&&k(r,this._result)},N.prototype._willSettleAt=function(e,t){var n=this
j(e,void 0,function(e){return n._settledAt(se,t,e)},function(e){return n._settledAt(le,t,e)})},V.all=U,V.race=B,V.resolve=g,V.reject=H,V._setScheduler=a,V._setAsap=s,V._asap=J,V.prototype={constructor:V,
then:m,"catch":function pe(e){return this.then(null,e)}},G(),V.polyfill=G,V.Promise=V,V})}).call(t,n(11),function(){return this}())},,function(e,t){},function(e,t){e.exports=qs},function(e,t,n){(function(e){
!function(t){function n(e,t){if("object"!==r(e))return t
for(var i in t)"object"===r(e[i])&&"object"===r(t[i])?e[i]=n(e[i],t[i]):e[i]=t[i]
return e}function i(e,t,i){var o=i[0],s=i.length;(e||"object"!==r(o))&&(o={})
for(var l=0;l<s;++l){var u=i[l],c=r(u)
if("object"===c)for(var d in u){var f=e?a.clone(u[d]):u[d]
t?o[d]=n(o[d],f):o[d]=f}}return o}function r(e){return{}.toString.call(e).slice(8,-1).toLowerCase()}var a=function(e){return i(e===!0,!1,arguments)},o="merge"
a.recursive=function(e){return i(e===!0,!0,arguments)},a.clone=function(e){var t=e,n=r(e),i,o
if("array"===n)for(t=[],o=e.length,i=0;i<o;++i)t[i]=a.clone(e[i])
!function(t){function n(e,t){if("object"!==i(e))return t
for(var r in t)"object"===i(e[r])&&"object"===i(t[r])?e[r]=n(e[r],t[r]):e[r]=t[r]
return e}function r(e,t,r){var a=r[0],s=r.length;(e||"object"!==i(a))&&(a={})
for(var l=0;l<s;++l){var u=r[l],c=i(u)
if("object"===c)for(var d in u){var f=e?o.clone(u[d]):u[d]
t?a[d]=n(a[d],f):a[d]=f}}return a}function i(e){return{}.toString.call(e).slice(8,-1).toLowerCase()}var o=function(e){return r(e===!0,!1,arguments)},a="merge"
o.recursive=function(e){return r(e===!0,!0,arguments)},o.clone=function(e){var t=e,n=i(e),r,a
if("array"===n)for(t=[],a=e.length,r=0;r<a;++r)t[r]=o.clone(e[r])
else if("object"===n){t={}
for(i in e)t[i]=a.clone(e[i])}return t},t?e.exports=a:window[o]=a}("object"==typeof e&&e&&"object"==typeof e.exports&&e.exports)}).call(t,n(15)(e))},,function(e,t,n){(function(t){e.exports=t.schemaFieldValues=n(17)
for(r in e)t[r]=o.clone(e[r])}return t},t?e.exports=o:window[a]=o}("object"==typeof e&&e&&"object"==typeof e.exports&&e.exports)}).call(t,n(15)(e))},,function(e,t,n){(function(t){e.exports=t.schemaFieldValues=n(17)
}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){return"undefined"==typeof t?e:c["default"].recursive(!0,e,{
data:t.data,source:t.source,message:t.message,valid:t.valid,value:t.value})}function o(e,t){var n=null
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){return"undefined"==typeof t?e:c["default"].recursive(!0,e,{
data:t.data,source:t.source,message:t.message,valid:t.valid,value:t.value})}function a(e,t){var n=null
if(!e)return n
n=e.find(function(e){return e.name===t})
var i=!0,r=!1,a=void 0
try{for(var s=e[Symbol.iterator](),l;!(i=(l=s.next()).done);i=!0){var u=l.value
var r=!0,i=!1,o=void 0
try{for(var s=e[Symbol.iterator](),l;!(r=(l=s.next()).done);r=!0){var u=l.value
if(n)break
n=o(u.children,t)}}catch(c){r=!0,a=c}finally{try{!i&&s["return"]&&s["return"]()}finally{if(r)throw a}}return n}function s(e,t){return t?t.fields.reduce(function(t,n){var i=o(e.fields,n.name)
return i?"Structural"===i.type||i.readOnly===!0?t:l({},t,r({},i.name,n.value)):t},{}):{}}Object.defineProperty(t,"__esModule",{value:!0})
n=a(u.children,t)}}catch(c){i=!0,o=c}finally{try{!r&&s["return"]&&s["return"]()}finally{if(i)throw o}}return n}function s(e,t){return t?t.fields.reduce(function(t,n){var r=a(e.fields,n.name)
return r?"Structural"===r.type||r.readOnly===!0?t:l({},t,i({},r.name,n.value)):t},{}):{}}Object.defineProperty(t,"__esModule",{value:!0})
var l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}
t.schemaMerge=a,t.findField=o,t["default"]=s
var u=n(14),c=i(u)},function(e,t,n){(function(t){e.exports=t.FieldHolder=n(19)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}
t.schemaMerge=o,t.findField=a,t["default"]=s
var u=n(14),c=r(u)},function(e,t,n){(function(t){e.exports=t.FieldHolder=n(19)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=function(t){
function n(){return r(this,n),a(this,(n.__proto__||Object.getPrototypeOf(n)).apply(this,arguments))}return o(n,t),u(n,[{key:"renderDescription",value:function i(){return null===this.props.description?null:(0,
function n(){return i(this,n),o(this,(n.__proto__||Object.getPrototypeOf(n)).apply(this,arguments))}return a(n,t),u(n,[{key:"renderDescription",value:function r(){return null===this.props.description?null:(0,
g["default"])("div",this.props.description,{className:"form__field-description"})}},{key:"renderMessage",value:function s(){var e=this.props.meta,t=e?e.error:null
return!t||e&&!e.touched?null:d["default"].createElement(y["default"],l({className:"form__field-message"},t))}},{key:"renderLeftTitle",value:function c(){var e=null!==this.props.leftTitle?this.props.leftTitle:this.props.title
return!t||e&&!e.touched?null:d["default"].createElement(b["default"],l({className:"form__field-message"},t))}},{key:"renderLeftTitle",value:function c(){var e=null!==this.props.leftTitle?this.props.leftTitle:this.props.title
return!e||this.props.hideLabels?null:(0,g["default"])(h.ControlLabel,e,{className:"form__field-label"})}},{key:"renderRightTitle",value:function f(){return!this.props.rightTitle||this.props.hideLabels?null:(0,
@ -248,34 +244,34 @@ return t.propTypes={leftTitle:d["default"].PropTypes.any,rightTitle:d["default"]
id:d["default"].PropTypes.string,description:d["default"].PropTypes.any,hideLabels:d["default"].PropTypes.bool,message:d["default"].PropTypes.shape({extraClass:d["default"].PropTypes.string,value:d["default"].PropTypes.any,
type:d["default"].PropTypes.string})},t.defaultProps={className:"",extraClass:"",leftTitle:null,rightTitle:null},t}Object.defineProperty(t,"__esModule",{value:!0})
var l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),c=n(5),d=i(c),f=n(20),p=i(f),h=n(21),m=n(22),g=i(m),v=n(23),y=i(v)
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),c=n(5),d=r(c),f=n(20),p=r(f),h=n(21),m=n(22),g=r(m),y=n(23),b=r(y)
t["default"]=s},function(e,t){e.exports=SilverStripeComponent},function(e,t){e.exports=ReactBootstrap},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2]
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2]
if(t&&"undefined"!=typeof t.react)return l["default"].createElement(e,n,t.react)
if(t&&"undefined"!=typeof t.html){if(null!==t.html){var i={__html:t.html}
return l["default"].createElement(e,o({},n,{dangerouslySetInnerHTML:i}))}return null}var r=null
if(r=t&&"undefined"!=typeof t.text?t.text:t,r&&"object"===("undefined"==typeof r?"undefined":a(r)))throw new Error("Unsupported string value "+JSON.stringify(r))
return null!==r&&"undefined"!=typeof r?l["default"].createElement(e,n,r):null}Object.defineProperty(t,"__esModule",{value:!0})
var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},o=Object.assign||function(e){
if(t&&"undefined"!=typeof t.html){if(null!==t.html){var r={__html:t.html}
return l["default"].createElement(e,a({},n,{dangerouslySetInnerHTML:r}))}return null}var i=null
if(i=t&&"undefined"!=typeof t.text?t.text:t,i&&"object"===("undefined"==typeof i?"undefined":o(i)))throw new Error("Unsupported string value "+JSON.stringify(i))
return null!==i&&"undefined"!=typeof i?l["default"].createElement(e,n,i):null}Object.defineProperty(t,"__esModule",{value:!0})
var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},a=Object.assign||function(e){
for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}
t["default"]=r
var s=n(5),l=i(s)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}
t["default"]=i
var s=n(5),l=r(s)},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(21),p=n(22),h=i(p),m=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleDismiss=n.handleDismiss.bind(n),n.state={visible:!0},n}return o(t,e),s(t,[{key:"handleDismiss",value:function n(){"function"==typeof this.props.onDismiss?this.props.onDismiss():this.setState({
visible:!1})}},{key:"getMessageStyle",value:function i(){switch(this.props.type){case"good":case"success":return"success"
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(21),p=n(22),h=r(p),m=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleDismiss=n.handleDismiss.bind(n),n.state={visible:!0},n}return a(t,e),s(t,[{key:"handleDismiss",value:function n(){"function"==typeof this.props.onDismiss?this.props.onDismiss():this.setState({
visible:!1})}},{key:"getMessageStyle",value:function r(){switch(this.props.type){case"good":case"success":return"success"
case"info":return"info"
case"warn":case"warning":return"warning"
default:return"danger"}}},{key:"getMessageProps",value:function l(){var e=this.props.type||"no-type"
@ -284,22 +280,22 @@ closeLabel:this.props.closeLabel}}},{key:"render",value:function c(){if("boolean
if(e)return u["default"].createElement(f.Alert,this.getMessageProps(),e)}return null}}]),t}(d["default"])
m.propTypes={extraClass:l.PropTypes.string,value:l.PropTypes.any,type:l.PropTypes.string,onDismiss:l.PropTypes.func,closeLabel:l.PropTypes.string,visible:l.PropTypes.bool},m.defaultProps={extraClass:"",
className:""},t["default"]=m},function(e,t,n){(function(t){e.exports=t.Form=n(25)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(20),f=i(d),p=n(23),h=i(p),m=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),l(t,[{key:"renderMessages",value:function n(){return Array.isArray(this.props.messages)?this.props.messages.map(function(e,t){
return c["default"].createElement(h["default"],s({key:t,className:t?"":"message-box--panel-top"},e))}):null}},{key:"render",value:function i(){var e=this.props.valid!==!1,t=this.props.mapFieldsToComponents(this.props.fields),n=this.props.mapActionsToComponents(this.props.actions),i=this.renderMessages(),r=["form"]
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(20),f=r(d),p=n(23),h=r(p),m=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"renderMessages",value:function n(){return Array.isArray(this.props.messages)?this.props.messages.map(function(e,t){
return c["default"].createElement(h["default"],s({key:t,className:t?"":"message-box--panel-top"},e))}):null}},{key:"render",value:function r(){var e=this.props.valid!==!1,t=this.props.mapFieldsToComponents(this.props.fields),n=this.props.mapActionsToComponents(this.props.actions),r=this.renderMessages(),i=["form"]
e===!1&&r.push("form--invalid"),this.props.attributes&&this.props.attributes.className&&r.push(this.props.attributes.className)
var a=s({},this.props.attributes,{onSubmit:this.props.handleSubmit,className:r.join(" ")})
return c["default"].createElement("form",a,i,this.props.afterMessages,t&&c["default"].createElement("fieldset",null,t),n&&c["default"].createElement("div",{className:"btn-toolbar",role:"group"},n))}}]),
e===!1&&i.push("form--invalid"),this.props.attributes&&this.props.attributes.className&&i.push(this.props.attributes.className)
var o=s({},this.props.attributes,{onSubmit:this.props.handleSubmit,className:i.join(" ")})
return c["default"].createElement("form",o,r,this.props.afterMessages,t&&c["default"].createElement("fieldset",null,t),n&&c["default"].createElement("div",{className:"btn-toolbar",role:"group"},n))}}]),
t}(f["default"])
m.propTypes={actions:u.PropTypes.array,afterMessages:u.PropTypes.node,attributes:u.PropTypes.shape({action:u.PropTypes.string.isRequired,className:u.PropTypes.string,encType:u.PropTypes.string,id:u.PropTypes.string,
method:u.PropTypes.string.isRequired}),fields:u.PropTypes.array.isRequired,handleSubmit:u.PropTypes.func,mapActionsToComponents:u.PropTypes.func.isRequired,mapFieldsToComponents:u.PropTypes.func.isRequired,
@ -308,20 +304,20 @@ messages:u.PropTypes.arrayOf(u.PropTypes.shape({extraClass:u.PropTypes.string,va
}).call(t,function(){return this}())},function(e,t){"use strict"
Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={CSRF_HEADER:"X-SecurityID"}},function(e,t,n){(function(t){e.exports=t.FormAlert=n(23)}).call(t,function(){return this}())},function(e,t,n){
(function(t){e.exports=t.FormAction=n(30)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(20),f=i(d),p=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleClick=n.handleClick.bind(n),n}return o(t,e),l(t,[{key:"render",value:function n(){return c["default"].createElement("button",this.getButtonProps(),this.getLoadingIcon(),c["default"].createElement("span",null,this.props.title))
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(20),f=r(d),p=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleClick=n.handleClick.bind(n),n}return a(t,e),l(t,[{key:"render",value:function n(){return c["default"].createElement("button",this.getButtonProps(),this.getLoadingIcon(),c["default"].createElement("span",null,this.props.title))
}},{key:"getButtonProps",value:function i(){return s({},"undefined"==typeof this.props.attributes?{}:this.props.attributes,{id:this.props.id,name:this.props.name,className:this.getButtonClasses(),disabled:this.props.disabled,
}},{key:"getButtonProps",value:function r(){return s({},"undefined"==typeof this.props.attributes?{}:this.props.attributes,{id:this.props.id,name:this.props.name,className:this.getButtonClasses(),disabled:this.props.disabled,
onClick:this.handleClick})}},{key:"getButtonClasses",value:function u(){var e=["btn"],t=this.getButtonStyle()
t&&e.push("btn-"+t),"string"!=typeof this.props.title&&e.push("btn--no-text")
var n=this.getIcon()
@ -337,87 +333,87 @@ p.propTypes={id:c["default"].PropTypes.string,name:c["default"].PropTypes.string
icon:c["default"].PropTypes.string,disabled:c["default"].PropTypes.bool,data:c["default"].PropTypes.oneOfType([c["default"].PropTypes.array,c["default"].PropTypes.shape({buttonStyle:c["default"].PropTypes.string
})]),extraClass:c["default"].PropTypes.string,attributes:c["default"].PropTypes.object},p.defaultProps={title:"",icon:"",extraClass:"",attributes:{},data:{},disabled:!1},t["default"]=p},function(e,t,n){
(function(t){e.exports=t.SchemaActions=n(32)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){return{type:u["default"].SET_SCHEMA,payload:s({id:e},t)}}function a(e,t){return{type:u["default"].SET_SCHEMA_STATE_OVERRIDES,payload:{
id:e,stateOverride:t}}}function o(e,t){return{type:u["default"].SET_SCHEMA_LOADING,payload:{id:e,loading:t}}}Object.defineProperty(t,"__esModule",{value:!0})
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){return{type:u["default"].SET_SCHEMA,payload:s({id:e},t)}}function o(e,t){return{type:u["default"].SET_SCHEMA_STATE_OVERRIDES,payload:{
id:e,stateOverride:t}}}function a(e,t){return{type:u["default"].SET_SCHEMA_LOADING,payload:{id:e,loading:t}}}Object.defineProperty(t,"__esModule",{value:!0})
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}
t.setSchema=r,t.setSchemaStateOverrides=a,t.setSchemaLoading=o
var l=n(33),u=i(l)},function(e,t){"use strict"
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}
t.setSchema=i,t.setSchemaStateOverrides=o,t.setSchemaLoading=a
var l=n(33),u=r(l)},function(e,t){"use strict"
Object.defineProperty(t,"__esModule",{value:!0})
var n={SET_SCHEMA:"SET_SCHEMA",SET_SCHEMA_STATE_OVERRIDES:"SET_SCHEMA_STATE_OVERRIDES",SET_SCHEMA_LOADING:"SET_SCHEMA_LOADING"}
t["default"]=n},function(e,t,n){(function(t){e.exports=t.FormBuilder=n(35)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")
}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.schemaPropType=t.basePropTypes=void 0
var l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},u=function(){function e(e,t){var n=[],i=!0,r=!1,a=void 0
try{for(var o=e[Symbol.iterator](),s;!(i=(s=o.next()).done)&&(n.push(s.value),!t||n.length!==t);i=!0);}catch(l){r=!0,a=l}finally{try{!i&&o["return"]&&o["return"]()}finally{if(r)throw a}}return n}return function(t,n){
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=function(){function e(e,t){var n=[],r=!0,i=!1,o=void 0
try{for(var a=e[Symbol.iterator](),s;!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(l){i=!0,o=l}finally{try{!r&&a["return"]&&a["return"]()}finally{if(i)throw o}}return n}return function(t,n){
if(Array.isArray(t))return t
if(Symbol.iterator in Object(t))return e(t,n)
throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=n(5),f=i(d),p=n(14),h=i(p),m=n(17),g=i(m),v=n(20),y=i(v),b=n(36),_=i(b),w=n(102),C=i(w),T=n(103),E=i(T),P=function(e){
function t(e){a(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e)),i=e.schema.schema
return n.state={submittingAction:null},n.submitApi=C["default"].createEndpointFetcher({url:i.attributes.action,method:i.attributes.method}),n.mapActionsToComponents=n.mapActionsToComponents.bind(n),n.mapFieldsToComponents=n.mapFieldsToComponents.bind(n),
throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),d=n(5),f=r(d),p=n(14),h=r(p),m=n(17),g=r(m),y=n(20),b=r(y),v=n(36),_=r(v),w=n(102),C=r(w),T=n(103),P=r(T),E=function(e){
function t(e){o(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e)),r=e.schema.schema
return n.state={submittingAction:null},n.submitApi=C["default"].createEndpointFetcher({url:r.attributes.action,method:r.attributes.method}),n.mapActionsToComponents=n.mapActionsToComponents.bind(n),n.mapFieldsToComponents=n.mapFieldsToComponents.bind(n),
n.handleSubmit=n.handleSubmit.bind(n),n.handleAction=n.handleAction.bind(n),n.buildComponent=n.buildComponent.bind(n),n.validateForm=n.validateForm.bind(n),n}return s(t,e),c(t,[{key:"validateForm",value:function n(e){
var t=this
if("function"==typeof this.props.validate)return this.props.validate(e)
var n=this.props.schema&&this.props.schema.schema
if(!n)return{}
var i=new _["default"](e)
return Object.entries(e).reduce(function(e,n){var a=u(n,1),o=a[0],s=(0,m.findField)(t.props.schema.schema.fields,o),c=i.validateFieldSchema(s),d=c.valid,p=c.errors
var r=new _["default"](e)
return Object.entries(e).reduce(function(e,n){var o=u(n,1),a=o[0],s=(0,m.findField)(t.props.schema.schema.fields,a),c=r.validateFieldSchema(s),d=c.valid,p=c.errors
if(d)return e
var h=p.map(function(e,t){return f["default"].createElement("span",{key:t,className:"form__validation-message"},e)})
return l({},e,r({},o,{type:"error",value:{react:h}}))},{})}},{key:"handleAction",value:function i(e){"function"==typeof this.props.handleAction&&this.props.handleAction(e,this.props.values),e.isPropagationStopped()||this.setState({
submittingAction:e.currentTarget.name})}},{key:"handleSubmit",value:function d(e){var t=this,n=this.state.submittingAction?this.state.submittingAction:this.props.schema.schema.actions[0].name,i=l({},e,r({},n,1)),a=this.props.responseRequestedSchema.join(),o={
"X-Formschema-Request":a,"X-Requested-With":"XMLHttpRequest"},s=function u(e){return t.submitApi(e||i,o).then(function(e){return t.setState({submittingAction:null}),e})["catch"](function(e){throw t.setState({
return l({},e,i({},a,{type:"error",value:{react:h}}))},{})}},{key:"handleAction",value:function r(e){"function"==typeof this.props.handleAction&&this.props.handleAction(e,this.props.values),e.isPropagationStopped()||this.setState({
submittingAction:e.currentTarget.name})}},{key:"handleSubmit",value:function d(e){var t=this,n=this.state.submittingAction?this.state.submittingAction:this.props.schema.schema.actions[0].name,r=l({},e,i({},n,1)),o=this.props.responseRequestedSchema.join(),a={
"X-Formschema-Request":o,"X-Requested-With":"XMLHttpRequest"},s=function u(e){return t.submitApi(e||r,a).then(function(e){return t.setState({submittingAction:null}),e})["catch"](function(e){throw t.setState({
submittingAction:null}),e})}
return"function"==typeof this.props.handleSubmit?this.props.handleSubmit(i,n,s):s()}},{key:"buildComponent",value:function p(e){var t=e,n=null!==t.schemaComponent?E["default"].getComponentByName(t.schemaComponent):E["default"].getComponentByDataType(t.type)
return"function"==typeof this.props.handleSubmit?this.props.handleSubmit(r,n,s):s()}},{key:"buildComponent",value:function p(e){var t=e,n=null!==t.schemaComponent?P["default"].getComponentByName(t.schemaComponent):P["default"].getComponentByDataType(t.type)
if(null===n)return null
if(null!==t.schemaComponent&&void 0===n)throw Error("Component not found in injector: "+t.schemaComponent)
t=l({},t,t.input),delete t.input
var i=this.props.createFn
return"function"==typeof i?i(n,t):f["default"].createElement(n,l({key:t.id},t))}},{key:"mapFieldsToComponents",value:function v(e){var t=this,n=this.props.baseFieldComponent
return e.map(function(e){var i=e
return e.children&&(i=l({},e,{children:t.mapFieldsToComponents(e.children)})),i=l({onAutofill:t.props.onAutofill,form:t.props.form},i),"Structural"===e.type||e.readOnly===!0?t.buildComponent(i):f["default"].createElement(n,l({
key:i.id},i,{component:t.buildComponent}))})}},{key:"mapActionsToComponents",value:function y(e){var t=this
var r=this.props.createFn
return"function"==typeof r?r(n,t):f["default"].createElement(n,l({key:t.id},t))}},{key:"mapFieldsToComponents",value:function y(e){var t=this,n=this.props.baseFieldComponent
return e.map(function(e){var r=e
return e.children&&(r=l({},e,{children:t.mapFieldsToComponents(e.children)})),r=l({onAutofill:t.props.onAutofill,form:t.props.form},r),"Structural"===e.type||e.readOnly===!0?t.buildComponent(r):f["default"].createElement(n,l({
key:r.id},r,{component:t.buildComponent}))})}},{key:"mapActionsToComponents",value:function b(e){var t=this
return e.map(function(e){var n=l({},e)
return e.children?n.children=t.mapActionsToComponents(e.children):(n.handleClick=t.handleAction,t.props.submitting&&t.state.submittingAction===e.name&&(n.loading=!0)),t.buildComponent(n)})}},{key:"normalizeFields",
value:function b(e,t){var n=this
return e.map(function(e){var i=t&&t.fields?t.fields.find(function(t){return t.id===e.id}):{},r=h["default"].recursive(!0,(0,m.schemaMerge)(e,i),{schemaComponent:e.component})
return e.children&&(r.children=n.normalizeFields(e.children,t)),r})}},{key:"normalizeActions",value:function w(e){var t=this
value:function v(e,t){var n=this
return e.map(function(e){var r=t&&t.fields?t.fields.find(function(t){return t.id===e.id}):{},i=h["default"].recursive(!0,(0,m.schemaMerge)(e,r),{schemaComponent:e.component})
return e.children&&(i.children=n.normalizeFields(e.children,t)),i})}},{key:"normalizeActions",value:function w(e){var t=this
return e.map(function(e){var n=h["default"].recursive(!0,e,{schemaComponent:e.component})
return e.children&&(n.children=t.normalizeActions(e.children)),n})}},{key:"render",value:function T(){var e=this.props.schema.schema,t=this.props.schema.state,n=this.props.baseFormComponent,i=l({},e.attributes,{
return e.children&&(n.children=t.normalizeActions(e.children)),n})}},{key:"render",value:function T(){var e=this.props.schema.schema,t=this.props.schema.state,n=this.props.baseFormComponent,r=l({},e.attributes,{
className:e.attributes["class"],encType:e.attributes.enctype})
delete i["class"],delete i.enctype
var r=this.props,a=r.asyncValidate,o=r.onSubmitFail,s=r.onSubmitSuccess,u=r.shouldAsyncValidate,c=r.touchOnBlur,d=r.touchOnChange,p=r.persistentSubmitErrors,h=r.form,m=r.afterMessages,v={form:h,afterMessages:m,
fields:this.normalizeFields(e.fields,t),actions:this.normalizeActions(e.actions),attributes:i,data:e.data,initialValues:(0,g["default"])(e,t),onSubmit:this.handleSubmit,valid:t&&t.valid,messages:t&&Array.isArray(t.messages)?t.messages:[],
mapActionsToComponents:this.mapActionsToComponents,mapFieldsToComponents:this.mapFieldsToComponents,asyncValidate:a,onSubmitFail:o,onSubmitSuccess:s,shouldAsyncValidate:u,touchOnBlur:c,touchOnChange:d,
delete r["class"],delete r.enctype
var i=this.props,o=i.asyncValidate,a=i.onSubmitFail,s=i.onSubmitSuccess,u=i.shouldAsyncValidate,c=i.touchOnBlur,d=i.touchOnChange,p=i.persistentSubmitErrors,h=i.form,m=i.afterMessages,y={form:h,afterMessages:m,
fields:this.normalizeFields(e.fields,t),actions:this.normalizeActions(e.actions),attributes:r,data:e.data,initialValues:(0,g["default"])(e,t),onSubmit:this.handleSubmit,valid:t&&t.valid,messages:t&&Array.isArray(t.messages)?t.messages:[],
mapActionsToComponents:this.mapActionsToComponents,mapFieldsToComponents:this.mapFieldsToComponents,asyncValidate:o,onSubmitFail:a,onSubmitSuccess:s,shouldAsyncValidate:u,touchOnBlur:c,touchOnChange:d,
persistentSubmitErrors:p,validate:this.validateForm}
return f["default"].createElement(n,v)}}]),t}(y["default"]),O=d.PropTypes.shape({id:d.PropTypes.string,schema:d.PropTypes.shape({attributes:d.PropTypes.shape({"class":d.PropTypes.string,enctype:d.PropTypes.string
}),fields:d.PropTypes.array.isRequired}),state:d.PropTypes.shape({fields:d.PropTypes.array}),loading:d.PropTypes["boolean"],stateOverride:d.PropTypes.shape({fields:d.PropTypes.array})}),S={createFn:d.PropTypes.func,
return f["default"].createElement(n,y)}}]),t}(b["default"]),O=d.PropTypes.shape({id:d.PropTypes.string,schema:d.PropTypes.shape({attributes:d.PropTypes.shape({"class":d.PropTypes.string,enctype:d.PropTypes.string
}),fields:d.PropTypes.array.isRequired}),state:d.PropTypes.shape({fields:d.PropTypes.array}),loading:d.PropTypes["boolean"],stateOverride:d.PropTypes.shape({fields:d.PropTypes.array})}),k={createFn:d.PropTypes.func,
handleSubmit:d.PropTypes.func,handleAction:d.PropTypes.func,asyncValidate:d.PropTypes.func,onSubmitFail:d.PropTypes.func,onSubmitSuccess:d.PropTypes.func,shouldAsyncValidate:d.PropTypes.func,touchOnBlur:d.PropTypes.bool,
touchOnChange:d.PropTypes.bool,persistentSubmitErrors:d.PropTypes.bool,validate:d.PropTypes.func,values:d.PropTypes.object,submitting:d.PropTypes.bool,baseFormComponent:d.PropTypes.func.isRequired,baseFieldComponent:d.PropTypes.func.isRequired,
responseRequestedSchema:d.PropTypes.arrayOf(d.PropTypes.oneOf(["schema","state","errors","auto"]))}
P.propTypes=l({},S,{form:d.PropTypes.string.isRequired,schema:O.isRequired}),P.defaultProps={responseRequestedSchema:["auto"]},t.basePropTypes=S,t.schemaPropType=O,t["default"]=P},function(e,t,n){"use strict"
E.propTypes=l({},k,{form:d.PropTypes.string.isRequired,schema:O.isRequired}),E.defaultProps={responseRequestedSchema:["auto"]},t.basePropTypes=k,t.schemaPropType=O,t["default"]=E},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var a=function(){function e(e,t){var n=[],i=!0,r=!1,a=void 0
try{for(var o=e[Symbol.iterator](),s;!(i=(s=o.next()).done)&&(n.push(s.value),!t||n.length!==t);i=!0);}catch(l){r=!0,a=l}finally{try{!i&&o["return"]&&o["return"]()}finally{if(r)throw a}}return n}return function(t,n){
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var o=function(){function e(e,t){var n=[],r=!0,i=!1,o=void 0
try{for(var a=e[Symbol.iterator](),s;!(r=(s=a.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(l){i=!0,o=l}finally{try{!r&&a["return"]&&a["return"]()}finally{if(i)throw o}}return n}return function(t,n){
if(Array.isArray(t))return t
if(Symbol.iterator in Object(t))return e(t,n)
throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(37),u=i(l),c=function(){
function e(t){r(this,e),this.setValues(t)}return s(e,[{key:"setValues",value:function t(e){this.values=e}},{key:"getFieldValue",value:function n(e){var t=this.values[e]
return"string"!=typeof t&&(t="undefined"==typeof t||null===t||t===!1?"":t.toString()),t}},{key:"validateValue",value:function i(e,t,n){switch(t){case"equals":var i=this.getFieldValue(n.field)
return u["default"].equals(e,i)
throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(37),u=r(l),c=function(){
function e(t){i(this,e),this.setValues(t)}return s(e,[{key:"setValues",value:function t(e){this.values=e}},{key:"getFieldValue",value:function n(e){var t=this.values[e]
return"string"!=typeof t&&(t="undefined"==typeof t||null===t||t===!1?"":t.toString()),t}},{key:"validateValue",value:function r(e,t,n){switch(t){case"equals":var r=this.getFieldValue(n.field)
return u["default"].equals(e,r)
case"numeric":return u["default"].isNumeric(e)
case"date":return u["default"].isDate(e)
case"alphanumeric":return u["default"].isAlphanumeric(e)
@ -441,19 +437,19 @@ case"alphanumeric":n="{name} is not an alpha-numeric value."
break
case"alpha":n="{name} is not only letters."
break
default:n="{name} is not a valid value."}return t.title&&(n=n.replace("{name}",t.title)),n}},{key:"validateField",value:function d(e,t,n,i){var r=this,s={valid:!0,errors:[]}
default:n="{name} is not a valid value."}return t.title&&(n=n.replace("{name}",t.title)),n}},{key:"validateField",value:function d(e,t,n,r){var i=this,s={valid:!0,errors:[]}
if(!t)return s
var l=this.getFieldValue(e)
if(""===l&&t.required){var u=o({title:""!==n?n:e},t.required),c=i||this.getMessage("required",u)
return{valid:!1,errors:[c]}}return Object.entries(t).forEach(function(t){var i=a(t,2),u=i[0],c=i[1],d=o({title:e},{title:n},c)
if("required"!==u){var f=r.validateValue(l,u,d)
if(!f){var p=r.getMessage(u,d)
s.valid=!1,s.errors.push(p)}}}),i&&!s.valid&&(s.errors=[i]),s}}]),e}()
if(""===l&&t.required){var u=a({title:""!==n?n:e},t.required),c=r||this.getMessage("required",u)
return{valid:!1,errors:[c]}}return Object.entries(t).forEach(function(t){var r=o(t,2),u=r[0],c=r[1],d=a({title:e},{title:n},c)
if("required"!==u){var f=i.validateValue(l,u,d)
if(!f){var p=i.getMessage(u,d)
s.valid=!1,s.errors.push(p)}}}),r&&!s.valid&&(s.errors=[r]),s}}]),e}()
t["default"]=c},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){e.exports=Backend},function(e,t){"use strict"
function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(){function e(){
n(this,e),this.components={}}return i(e,[{key:"getComponentByName",value:function t(e){return this.components[e]}},{key:"getComponentByDataType",value:function r(e){switch(e){case"Text":case"Date":case"DateTime":
var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function(){function e(){
n(this,e),this.components={}}return r(e,[{key:"getComponentByName",value:function t(e){return this.components[e]}},{key:"getComponentByDataType",value:function i(e){switch(e){case"Text":case"Date":case"DateTime":
return this.components.TextField
case"Hidden":return this.components.HiddenField
case"SingleSelect":return this.components.SingleSelectField
@ -461,264 +457,264 @@ case"Custom":return this.components.GridField
case"Structural":return this.components.CompositeField
case"Boolean":return this.components.CheckboxField
case"MultiSelect":return this.components.CheckboxSetField
default:return null}}},{key:"register",value:function a(e,t){this.components[e]=t}}]),e}()
window.ss=window.ss||{},window.ss.injector=window.ss.injector||new r,t["default"]=window.ss.injector},function(e,t,n){(function(t){e.exports=t.FormBuilderLoader=n(105)}).call(t,function(){return this}())
default:return null}}},{key:"register",value:function o(e,t){this.components[e]=t}}]),e}()
window.ss=window.ss||{},window.ss.injector=window.ss.injector||new i,t["default"]=window.ss.injector},function(e,t,n){(function(t){e.exports=t.FormBuilderLoader=n(105)}).call(t,function(){return this}())
},function(e,t,n){"use strict"
function i(e){if(e&&e.__esModule)return e
function r(e){if(e&&e.__esModule)return e
var t={}
if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])
return t["default"]=e,t}function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return t["default"]=e,t}function i(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=e.schemas[t.schemaUrl],i=e.form&&e.form[t.schemaUrl],r=i&&i.submitting,a=i&&i.values,o=n&&n.stateOverride,s=n&&n.metadata&&n.metadata.loading
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=e.schemas[t.schemaUrl],r=e.form&&e.form[t.schemaUrl],i=r&&r.submitting,o=r&&r.values,a=n&&n.stateOverride,s=n&&n.metadata&&n.metadata.loading
return{schema:n,submitting:r,values:a,stateOverrides:o,loading:s}}function u(e){return{actions:{schema:(0,m.bindActionCreators)(C,e),reduxForm:(0,m.bindActionCreators)({autofill:_.autofill},e)}}}Object.defineProperty(t,"__esModule",{
return{schema:n,submitting:i,values:o,stateOverrides:a,loading:s}}function u(e){return{actions:{schema:(0,m.bindActionCreators)(C,e),reduxForm:(0,m.bindActionCreators)({autofill:_.autofill},e)}}}Object.defineProperty(t,"__esModule",{
value:!0})
var c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},d=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),f=n(5),p=r(f),h=n(106),m=n(107),g=n(8),v=r(g),y=n(108),b=r(y),_=n(109),w=n(110),C=i(w),T=n(14),E=r(T),P=n(25),O=r(P),S=n(111),k=r(S),j=function(e){
function t(e){a(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),f=n(5),p=i(f),h=n(106),m=n(107),g=n(8),y=i(g),b=n(108),v=i(b),_=n(109),w=n(110),C=r(w),T=n(14),P=i(T),E=n(25),O=i(E),k=n(111),S=i(k),j=function(e){
function t(e){o(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleSubmit=n.handleSubmit.bind(n),n.clearSchema=n.clearSchema.bind(n),n.reduceSchemaErrors=n.reduceSchemaErrors.bind(n),n.handleAutofill=n.handleAutofill.bind(n),n}return s(t,e),d(t,[{key:"componentDidMount",
value:function n(){this.fetch()}},{key:"componentDidUpdate",value:function i(e){this.props.schemaUrl!==e.schemaUrl&&(this.clearSchema(e.schemaUrl),this.fetch())}},{key:"componentWillUnmount",value:function r(){
value:function n(){this.fetch()}},{key:"componentDidUpdate",value:function r(e){this.props.schemaUrl!==e.schemaUrl&&(this.clearSchema(e.schemaUrl),this.fetch())}},{key:"componentWillUnmount",value:function i(){
this.clearSchema(this.props.schemaUrl)}},{key:"getMessages",value:function l(e){var t={}
return e&&e.fields&&e.fields.forEach(function(e){e.message&&(t[e.name]=e.message)}),t}},{key:"clearSchema",value:function u(e){e&&((0,_.destroy)(e),this.props.actions.schema.setSchema(e,null))}},{key:"handleSubmit",
value:function f(e,t,n){var i=this,r=null
if(r="function"==typeof this.props.handleSubmit?this.props.handleSubmit(e,t,n):n(),!r)throw new Error("Promise was not returned for submitting")
return r.then(function(e){var t=e
return t&&(t=i.reduceSchemaErrors(t),i.props.actions.schema.setSchema(i.props.schemaUrl,t)),t}).then(function(e){if(!e||!e.state)return e
var t=i.getMessages(e.state)
value:function f(e,t,n){var r=this,i=null
if(i="function"==typeof this.props.handleSubmit?this.props.handleSubmit(e,t,n):n(),!i)throw new Error("Promise was not returned for submitting")
return i.then(function(e){var t=e
return t&&(t=r.reduceSchemaErrors(t),r.props.actions.schema.setSchema(r.props.schemaUrl,t)),t}).then(function(e){if(!e||!e.state)return e
var t=r.getMessages(e.state)
if(Object.keys(t).length)throw new _.SubmissionError(t)
return e})}},{key:"reduceSchemaErrors",value:function h(e){if(!e.errors)return e
var t=c({},e)
return t.state||(t=c({},t,{state:this.props.schema.state})),t=c({},t,{state:c({},t.state,{fields:t.state.fields.map(function(t){return c({},t,{message:e.errors.find(function(e){return e.field===t.name})
})}),messages:e.errors.filter(function(e){return!e.field})})}),delete t.errors,(0,b["default"])(t)}},{key:"overrideStateData",value:function m(e){if(!this.props.stateOverrides||!e)return e
})}),messages:e.errors.filter(function(e){return!e.field})})}),delete t.errors,(0,v["default"])(t)}},{key:"overrideStateData",value:function m(e){if(!this.props.stateOverrides||!e)return e
var t=this.props.stateOverrides.fields,n=e.fields
return t&&n&&(n=n.map(function(e){var n=t.find(function(t){return t.name===e.name})
return n?E["default"].recursive(!0,e,n):e})),c({},e,this.props.stateOverrides,{fields:n})}},{key:"callFetch",value:function g(e){return(0,v["default"])(this.props.schemaUrl,{headers:{"X-FormSchema-Request":e.join(",")
},credentials:"same-origin"}).then(function(e){return e.json()})}},{key:"fetch",value:function y(){var e=this,t=arguments.length<=0||void 0===arguments[0]||arguments[0],n=arguments.length<=1||void 0===arguments[1]||arguments[1],i=[]
return n?P["default"].recursive(!0,e,n):e})),c({},e,this.props.stateOverrides,{fields:n})}},{key:"callFetch",value:function g(e){return(0,y["default"])(this.props.schemaUrl,{headers:{"X-FormSchema-Request":e.join(",")
},credentials:"same-origin"}).then(function(e){return e.json()})}},{key:"fetch",value:function b(){var e=this,t=arguments.length<=0||void 0===arguments[0]||arguments[0],n=arguments.length<=1||void 0===arguments[1]||arguments[1],r=[]
return t&&i.push("schema"),n&&i.push("state"),this.props.loading?Promise.resolve({}):(this.props.actions.schema.setSchemaLoading(this.props.schemaUrl,!0),this.callFetch(i).then(function(t){if(e.props.actions.schema.setSchemaLoading(e.props.schemaUrl,!1),
return t&&r.push("schema"),n&&r.push("state"),this.props.loading?Promise.resolve({}):(this.props.actions.schema.setSchemaLoading(this.props.schemaUrl,!0),this.callFetch(r).then(function(t){if(e.props.actions.schema.setSchemaLoading(e.props.schemaUrl,!1),
"undefined"!=typeof t.id){var n=c({},t,{state:e.overrideStateData(t.state)})
return e.props.actions.schema.setSchema(e.props.schemaUrl,n),n}return t}))}},{key:"handleAutofill",value:function w(e,t){this.props.actions.reduxForm.autofill(this.props.schemaUrl,e,t)}},{key:"render",
value:function C(){if(!this.props.schema||!this.props.schema.schema||this.props.loading)return null
var e=c({},this.props,{form:this.props.schemaUrl,onSubmitSuccess:this.props.onSubmitSuccess,handleSubmit:this.handleSubmit,onAutofill:this.handleAutofill})
return p["default"].createElement(k["default"],e)}}]),t}(f.Component)
j.propTypes=c({},S.basePropTypes,{actions:f.PropTypes.shape({schema:f.PropTypes.object,reduxFrom:f.PropTypes.object}),schemaUrl:f.PropTypes.string.isRequired,schema:S.schemaPropType,form:f.PropTypes.string,
return p["default"].createElement(S["default"],e)}}]),t}(f.Component)
j.propTypes=c({},k.basePropTypes,{actions:f.PropTypes.shape({schema:f.PropTypes.object,reduxFrom:f.PropTypes.object}),schemaUrl:f.PropTypes.string.isRequired,schema:k.schemaPropType,form:f.PropTypes.string,
submitting:f.PropTypes.bool}),j.defaultProps={baseFormComponent:(0,_.reduxForm)()(O["default"]),baseFieldComponent:_.Field},t["default"]=(0,h.connect)(l,u)(j)},,,function(e,t){e.exports=DeepFreezeStrict
},function(e,t){e.exports=ReduxForm},function(e,t){e.exports=SchemaActions},function(e,t){e.exports=FormBuilder},function(e,t,n){(function(t){e.exports=t.FormBuilderModal=n(113)}).call(t,function(){return this
}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(114),d=i(c),f=n(21),p=n(20),h=i(p),m=n(115),g=i(m),v=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleSubmit=n.handleSubmit.bind(n),n.handleHide=n.handleHide.bind(n),n.clearResponse=n.clearResponse.bind(n),n}return o(t,e),s(t,[{key:"getForm",value:function n(){return this.props.schemaUrl?u["default"].createElement(g["default"],{
schemaUrl:this.props.schemaUrl,handleSubmit:this.handleSubmit,handleAction:this.props.handleAction}):null}},{key:"getResponse",value:function i(){if(!this.state||!this.state.response)return null
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(114),d=r(c),f=n(21),p=n(20),h=r(p),m=n(115),g=r(m),y=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleSubmit=n.handleSubmit.bind(n),n.handleHide=n.handleHide.bind(n),n.clearResponse=n.clearResponse.bind(n),n}return a(t,e),s(t,[{key:"getForm",value:function n(){return this.props.schemaUrl?u["default"].createElement(g["default"],{
schemaUrl:this.props.schemaUrl,handleSubmit:this.handleSubmit,handleAction:this.props.handleAction}):null}},{key:"getResponse",value:function r(){if(!this.state||!this.state.response)return null
var e=""
return e=this.state.error?this.props.responseClassBad||"response error":this.props.responseClassGood||"response good",u["default"].createElement("div",{className:e},u["default"].createElement("span",null,this.state.response))
}},{key:"clearResponse",value:function l(){this.setState({response:null})}},{key:"handleHide",value:function c(){this.clearResponse(),"function"==typeof this.props.handleHide&&this.props.handleHide()}},{
key:"handleSubmit",value:function p(e,t,n){var i=this,r=null
if(r="function"==typeof this.props.handleSubmit?this.props.handleSubmit(e,t,n):n(),!r)throw new Error("Promise was not returned for submitting")
return r.then(function(e){return i.setState({response:e.message,error:!1}),e})["catch"](function(e){e.then(function(e){i.setState({response:e,error:!0})})}),r}},{key:"renderHeader",value:function h(){return this.props.title!==!1?u["default"].createElement(f.Modal.Header,{
key:"handleSubmit",value:function p(e,t,n){var r=this,i=null
if(i="function"==typeof this.props.handleSubmit?this.props.handleSubmit(e,t,n):n(),!i)throw new Error("Promise was not returned for submitting")
return i.then(function(e){return r.setState({response:e.message,error:!1}),e})["catch"](function(e){e.then(function(e){r.setState({response:e,error:!0})})}),i}},{key:"renderHeader",value:function h(){return this.props.title!==!1?u["default"].createElement(f.Modal.Header,{
closeButton:!0},u["default"].createElement(f.Modal.Title,null,this.props.title)):"function"==typeof this.props.handleHide?u["default"].createElement("button",{type:"button",className:"close form-builder-modal__close-button",
onClick:this.handleHide,"aria-label":d["default"]._t("FormBuilderModal.CLOSE","Close")},u["default"].createElement("span",{"aria-hidden":"true"},"×")):null}},{key:"render",value:function m(){var e=this.getForm(),t=this.getResponse()
return u["default"].createElement(f.Modal,{show:this.props.show,onHide:this.handleHide,className:this.props.className,bsSize:this.props.bsSize},this.renderHeader(),u["default"].createElement(f.Modal.Body,{
className:this.props.bodyClassName},t,e,this.props.children))}}]),t}(h["default"])
v.propTypes={show:u["default"].PropTypes.bool,title:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.bool]),className:u["default"].PropTypes.string,bodyClassName:u["default"].PropTypes.string,
y.propTypes={show:u["default"].PropTypes.bool,title:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.bool]),className:u["default"].PropTypes.string,bodyClassName:u["default"].PropTypes.string,
handleHide:u["default"].PropTypes.func,schemaUrl:u["default"].PropTypes.string,handleSubmit:u["default"].PropTypes.func,handleAction:u["default"].PropTypes.func,responseClassGood:u["default"].PropTypes.string,
responseClassBad:u["default"].PropTypes.string},v.defaultProps={show:!1,title:null},t["default"]=v},function(e,t){e.exports=i18n},function(e,t){e.exports=FormBuilderLoader},function(e,t,n){(function(t){
responseClassBad:u["default"].PropTypes.string},y.defaultProps={show:!1,title:null},t["default"]=y},function(e,t){e.exports=i18n},function(e,t){e.exports=FormBuilderLoader},function(e,t,n){(function(t){
e.exports=t.GridField=n(117)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){if(e&&e.__esModule)return e
function r(e){if(e&&e.__esModule)return e
var t={}
if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])
return t["default"]=e,t}function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return t["default"]=e,t}function i(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=t.data?t.data.recordType:null
return{config:e.config,records:n&&e.records[n]?e.records[n]:M}}function u(e){return{actions:(0,g.bindActionCreators)(D,e)}}Object.defineProperty(t,"__esModule",{value:!0})
var c=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=function U(e,t,n){null===e&&(e=Function.prototype)
return{config:e.config,records:n&&e.records[n]?e.records[n]:M}}function u(e){return{actions:(0,g.bindActionCreators)(F,e)}}Object.defineProperty(t,"__esModule",{value:!0})
var c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),d=function L(e,t,n){null===e&&(e=Function.prototype)
var i=Object.getOwnPropertyDescriptor(e,t)
if(void 0===i){var r=Object.getPrototypeOf(e)
return null===r?void 0:U(r,t,n)}if("value"in i)return i.value
var a=i.get
if(void 0!==a)return a.call(n)},f=n(5),p=r(f),h=n(114),m=r(h),g=n(107),v=n(106),y=n(20),b=r(y),_=n(118),w=r(_),C=n(119),T=r(C),E=n(121),P=r(E),O=n(120),S=r(O),k=n(122),j=r(k),x=n(123),R=r(x),I=n(27),A=r(I),F=n(124),D=i(F),M={},N=function(e){
function t(e){a(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
var r=Object.getOwnPropertyDescriptor(e,t)
if(void 0===r){var i=Object.getPrototypeOf(e)
return null===i?void 0:L(i,t,n)}if("value"in r)return r.value
var o=r.get
if(void 0!==o)return o.call(n)},f=n(5),p=i(f),h=n(114),m=i(h),g=n(107),y=n(106),b=n(20),v=i(b),_=n(118),w=i(_),C=n(119),T=i(C),P=n(121),E=i(P),O=n(120),k=i(O),S=n(122),j=i(S),x=n(123),R=i(x),I=n(27),A=i(I),D=n(124),F=r(D),M={},N=function(e){
function t(e){o(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.deleteRecord=n.deleteRecord.bind(n),n.editRecord=n.editRecord.bind(n),n}return s(t,e),c(t,[{key:"componentDidMount",value:function n(){d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentDidMount",this).call(this)
var e=this.props.data
this.props.actions.fetchRecords(e.recordType,e.collectionReadEndpoint.method,e.collectionReadEndpoint.url)}},{key:"render",value:function i(){var e=this
this.props.actions.fetchRecords(e.recordType,e.collectionReadEndpoint.method,e.collectionReadEndpoint.url)}},{key:"render",value:function r(){var e=this
if(this.props.records===M)return p["default"].createElement("div",null,m["default"]._t("Campaigns.LOADING","Loading..."))
if(!Object.getOwnPropertyNames(this.props.records).length)return p["default"].createElement("div",null,m["default"]._t("Campaigns.NO_RECORDS","No campaigns created yet."))
var t=p["default"].createElement("th",{key:"holder",className:"grid-field__action-placeholder"}),n=this.props.data.columns.map(function(e){return p["default"].createElement(P["default"],{key:""+e.name},e.name)
var t=p["default"].createElement("th",{key:"holder",className:"grid-field__action-placeholder"}),n=this.props.data.columns.map(function(e){return p["default"].createElement(E["default"],{key:""+e.name},e.name)
}),i=p["default"].createElement(T["default"],null,n.concat(t)),r=Object.keys(this.props.records).map(function(t){return e.createRow(e.props.records[t])})
return p["default"].createElement(w["default"],{header:i,rows:r})}},{key:"createRowActions",value:function r(e){return p["default"].createElement(j["default"],{className:"grid-field__cell--actions",key:"Actions"
}),r=p["default"].createElement(T["default"],null,n.concat(t)),i=Object.keys(this.props.records).map(function(t){return e.createRow(e.props.records[t])})
return p["default"].createElement(w["default"],{header:r,rows:i})}},{key:"createRowActions",value:function i(e){return p["default"].createElement(j["default"],{className:"grid-field__cell--actions",key:"Actions"
},p["default"].createElement(R["default"],{icon:"cog",handleClick:this.editRecord,record:e}),p["default"].createElement(R["default"],{icon:"cancel",handleClick:this.deleteRecord,record:e}))}},{key:"createCell",
value:function l(e,t){var n=this.props.data.handleDrillDown,i={className:n?"grid-field__cell--drillable":"",handleDrillDown:n?function(t){return n(t,e)}:null,key:""+t.name,width:t.width},r=t.field.split(".").reduce(function(e,t){
value:function l(e,t){var n=this.props.data.handleDrillDown,r={className:n?"grid-field__cell--drillable":"",handleDrillDown:n?function(t){return n(t,e)}:null,key:""+t.name,width:t.width},i=t.field.split(".").reduce(function(e,t){
return e[t]},e)
return p["default"].createElement(j["default"],i,r)}},{key:"createRow",value:function u(e){var t=this,n={className:this.props.data.handleDrillDown?"grid-field__row--drillable":"",key:""+e.ID},i=this.props.data.columns.map(function(n){
return t.createCell(e,n)}),r=this.createRowActions(e)
return p["default"].createElement(S["default"],n,i,r)}},{key:"deleteRecord",value:function f(e,t){e.preventDefault()
return p["default"].createElement(j["default"],r,i)}},{key:"createRow",value:function u(e){var t=this,n={className:this.props.data.handleDrillDown?"grid-field__row--drillable":"",key:""+e.ID},r=this.props.data.columns.map(function(n){
return t.createCell(e,n)}),i=this.createRowActions(e)
return p["default"].createElement(k["default"],n,r,i)}},{key:"deleteRecord",value:function f(e,t){e.preventDefault()
var n={}
n[A["default"].CSRF_HEADER]=this.props.config.SecurityID,confirm(m["default"]._t("Campaigns.DELETECAMPAIGN","Are you sure you want to delete this record?"))&&this.props.actions.deleteRecord(this.props.data.recordType,t,this.props.data.itemDeleteEndpoint.method,this.props.data.itemDeleteEndpoint.url,n)
}},{key:"editRecord",value:function h(e,t){e.preventDefault(),"undefined"!=typeof this.props.data&&"undefined"!=typeof this.props.data.handleEditRecord&&this.props.data.handleEditRecord(e,t)}}]),t}(b["default"])
}},{key:"editRecord",value:function h(e,t){e.preventDefault(),"undefined"!=typeof this.props.data&&"undefined"!=typeof this.props.data.handleEditRecord&&this.props.data.handleEditRecord(e,t)}}]),t}(v["default"])
N.propTypes={data:p["default"].PropTypes.shape({recordType:p["default"].PropTypes.string.isRequired,headerColumns:p["default"].PropTypes.array,collectionReadEndpoint:p["default"].PropTypes.object,handleDrillDown:p["default"].PropTypes.func,
handleEditRecord:p["default"].PropTypes.func})},t["default"]=(0,v.connect)(l,u)(N)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
handleEditRecord:p["default"].PropTypes.func})},t["default"]=(0,y.connect)(l,u)(N)},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("div",{className:"grid-field"
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("div",{className:"grid-field"
},u["default"].createElement("table",{className:"table table-hover grid-field__table"},u["default"].createElement("thead",null,this.generateHeader()),u["default"].createElement("tbody",null,this.generateRows())))
}},{key:"generateHeader",value:function i(){return"undefined"!=typeof this.props.header?this.props.header:("undefined"!=typeof this.props.data,null)}},{key:"generateRows",value:function l(){return"undefined"!=typeof this.props.rows?this.props.rows:("undefined"!=typeof this.props.data,
}},{key:"generateHeader",value:function r(){return"undefined"!=typeof this.props.header?this.props.header:("undefined"!=typeof this.props.data,null)}},{key:"generateRows",value:function l(){return"undefined"!=typeof this.props.rows?this.props.rows:("undefined"!=typeof this.props.data,
null)}}]),t}(d["default"])
f.propTypes={data:u["default"].PropTypes.object,header:u["default"].PropTypes.object,rows:u["default"].PropTypes.array},t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(120),p=i(f),h=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement(p["default"],null,this.props.children)
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(120),p=r(f),h=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement(p["default"],null,this.props.children)
}}]),t}(d["default"])
t["default"]=h},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){var e="grid-field__row "+this.props.className
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){var e="grid-field__row "+this.props.className
return u["default"].createElement("tr",{tabIndex:"0",className:e},this.props.children)}}]),t}(d["default"])
t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("th",null,this.props.children)
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("th",null,this.props.children)
}}]),t}(d["default"])
f.PropTypes={width:u["default"].PropTypes.number},t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleDrillDown=n.handleDrillDown.bind(n),n}return o(t,e),s(t,[{key:"render",value:function n(){var e=["grid-field__cell"]
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleDrillDown=n.handleDrillDown.bind(n),n}return a(t,e),s(t,[{key:"render",value:function n(){var e=["grid-field__cell"]
"undefined"!=typeof this.props.className&&e.push(this.props.className)
var t={className:e.join(" "),onClick:this.handleDrillDown}
return u["default"].createElement("td",t,this.props.children)}},{key:"handleDrillDown",value:function i(e){"undefined"!=typeof this.props.handleDrillDown&&this.props.handleDrillDown(e)}}]),t}(d["default"])
return u["default"].createElement("td",t,this.props.children)}},{key:"handleDrillDown",value:function r(e){"undefined"!=typeof this.props.handleDrillDown&&this.props.handleDrillDown(e)}}]),t}(d["default"])
f.PropTypes={className:u["default"].PropTypes.string,width:u["default"].PropTypes.number,handleDrillDown:u["default"].PropTypes.func},t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleClick=n.handleClick.bind(n),n}return o(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("button",{className:"grid-field__icon-action font-icon-"+this.props.icon+" btn--icon-large",
onClick:this.handleClick})}},{key:"handleClick",value:function i(e){this.props.handleClick(e,this.props.record.ID)}}]),t}(d["default"])
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleClick=n.handleClick.bind(n),n}return a(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("button",{className:"grid-field__icon-action font-icon-"+this.props.icon+" btn--icon-large",
onClick:this.handleClick})}},{key:"handleClick",value:function r(e){this.props.handleClick(e,this.props.record.ID)}}]),t}(d["default"])
f.PropTypes={handleClick:u["default"].PropTypes.func.isRequired},t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){var n=["id"]
return n.reduce(function(e,n){return e.replace(":"+n,t[n])},e)}function a(e,t,n){var i={recordType:e},a={Accept:"text/json"},o=t.toLowerCase()
return function(t){t({type:u["default"].FETCH_RECORDS_REQUEST,payload:i})
var s="get"===o?[r(n,i),a]:[r(n,i),{},a]
return d["default"][o].apply(d["default"],s).then(function(e){return e.json()}).then(function(n){t({type:u["default"].FETCH_RECORDS_SUCCESS,payload:{recordType:e,data:n}})})["catch"](function(n){throw t({
type:u["default"].FETCH_RECORDS_FAILURE,payload:{error:n,recordType:e}}),n})}}function o(e,t,n){var i={recordType:e},a={Accept:"text/json"},o=t.toLowerCase()
return function(t){t({type:u["default"].FETCH_RECORD_REQUEST,payload:i})
var s="get"===o?[r(n,i),a]:[r(n,i),{},a]
return d["default"][o].apply(d["default"],s).then(function(e){return e.json()}).then(function(n){t({type:u["default"].FETCH_RECORD_SUCCESS,payload:{recordType:e,data:n}})})["catch"](function(n){throw t({
type:u["default"].FETCH_RECORD_FAILURE,payload:{error:n,recordType:e}}),n})}}function s(e,t,n,i){var a=arguments.length<=4||void 0===arguments[4]?{}:arguments[4],o={recordType:e,id:t},s=n.toLowerCase(),l="get"===s?[r(i,o),a]:[r(i,o),{},a]
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){var n=["id"]
return n.reduce(function(e,n){return e.replace(":"+n,t[n])},e)}function o(e,t,n){var r={recordType:e},o={Accept:"text/json"},a=t.toLowerCase()
return function(t){t({type:u["default"].FETCH_RECORDS_REQUEST,payload:r})
var s="get"===a?[i(n,r),o]:[i(n,r),{},o]
return d["default"][a].apply(d["default"],s).then(function(e){return e.json()}).then(function(n){t({type:u["default"].FETCH_RECORDS_SUCCESS,payload:{recordType:e,data:n}})})["catch"](function(n){throw t({
type:u["default"].FETCH_RECORDS_FAILURE,payload:{error:n,recordType:e}}),n})}}function a(e,t,n){var r={recordType:e},o={Accept:"text/json"},a=t.toLowerCase()
return function(t){t({type:u["default"].FETCH_RECORD_REQUEST,payload:r})
var s="get"===a?[i(n,r),o]:[i(n,r),{},o]
return d["default"][a].apply(d["default"],s).then(function(e){return e.json()}).then(function(n){t({type:u["default"].FETCH_RECORD_SUCCESS,payload:{recordType:e,data:n}})})["catch"](function(n){throw t({
type:u["default"].FETCH_RECORD_FAILURE,payload:{error:n,recordType:e}}),n})}}function s(e,t,n,r){var o=arguments.length<=4||void 0===arguments[4]?{}:arguments[4],a={recordType:e,id:t},s=n.toLowerCase(),l="get"===s?[i(r,a),o]:[i(r,a),{},o]
return function(n){return n({type:u["default"].DELETE_RECORD_REQUEST,payload:o}),d["default"][s].apply(d["default"],l).then(function(){n({type:u["default"].DELETE_RECORD_SUCCESS,payload:{recordType:e,id:t
}})})["catch"](function(i){throw n({type:u["default"].DELETE_RECORD_FAILURE,payload:{error:i,recordType:e,id:t}}),i})}}Object.defineProperty(t,"__esModule",{value:!0}),t.fetchRecords=a,t.fetchRecord=o,
return function(n){return n({type:u["default"].DELETE_RECORD_REQUEST,payload:a}),d["default"][s].apply(d["default"],l).then(function(){n({type:u["default"].DELETE_RECORD_SUCCESS,payload:{recordType:e,id:t
}})})["catch"](function(r){throw n({type:u["default"].DELETE_RECORD_FAILURE,payload:{error:r,recordType:e,id:t}}),r})}}Object.defineProperty(t,"__esModule",{value:!0}),t.fetchRecords=o,t.fetchRecord=a,
t.deleteRecord=s
var l=n(125),u=i(l),c=n(7),d=i(c)},function(e,t){"use strict"
var l=n(125),u=r(l),c=n(7),d=r(c)},function(e,t){"use strict"
Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={CREATE_RECORD:"CREATE_RECORD",UPDATE_RECORD:"UPDATE_RECORD",DELETE_RECORD:"DELETE_RECORD",FETCH_RECORDS_REQUEST:"FETCH_RECORDS_REQUEST",FETCH_RECORDS_FAILURE:"FETCH_RECORDS_FAILURE",
FETCH_RECORDS_SUCCESS:"FETCH_RECORDS_SUCCESS",FETCH_RECORD_REQUEST:"FETCH_RECORD_REQUEST",FETCH_RECORD_FAILURE:"FETCH_RECORD_FAILURE",FETCH_RECORD_SUCCESS:"FETCH_RECORD_SUCCESS",DELETE_RECORD_REQUEST:"DELETE_RECORD_REQUEST",
DELETE_RECORD_FAILURE:"DELETE_RECORD_FAILURE",DELETE_RECORD_SUCCESS:"DELETE_RECORD_SUCCESS"}},function(e,t,n){(function(t){e.exports=t.GridFieldCell=n(122)}).call(t,function(){return this}())},function(e,t,n){
(function(t){e.exports=t.GridFieldHeader=n(119)}).call(t,function(){return this}())},function(e,t,n){(function(t){e.exports=t.GridFieldHeaderCell=n(121)}).call(t,function(){return this}())},function(e,t,n){
(function(t){e.exports=t.GridFieldRow=n(120)}).call(t,function(){return this}())},function(e,t,n){(function(t){e.exports=t.GridFieldTable=n(118)}).call(t,function(){return this}())},function(e,t,n){(function(t){
e.exports=t.HiddenField=n(132)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(21),p=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"getInputProps",value:function n(){return{bsClass:this.props.bsClass,componentClass:"input",
className:this.props.className+" "+this.props.extraClass,id:this.props.id,name:this.props.name,type:"hidden",value:this.props.value}}},{key:"render",value:function i(){return u["default"].createElement(f.FormControl,this.getInputProps())
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(21),p=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"getInputProps",value:function n(){return{bsClass:this.props.bsClass,componentClass:"input",
className:this.props.className+" "+this.props.extraClass,id:this.props.id,name:this.props.name,type:"hidden",value:this.props.value}}},{key:"render",value:function r(){return u["default"].createElement(f.FormControl,this.getInputProps())
}}]),t}(d["default"])
p.propTypes={id:u["default"].PropTypes.string,extraClass:u["default"].PropTypes.string,name:u["default"].PropTypes.string.isRequired,value:u["default"].PropTypes.any},p.defaultProps={className:"",extraClass:"",
value:""},t["default"]=p},function(e,t,n){(function(t){e.exports=t.TextField=n(134)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.TextField=void 0
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(20),f=i(d),p=n(135),h=i(p),m=n(21),g=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleChange=n.handleChange.bind(n),n}return o(t,e),l(t,[{key:"render",value:function n(){var e=null
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(20),f=r(d),p=n(135),h=r(p),m=n(21),g=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleChange=n.handleChange.bind(n),n}return a(t,e),l(t,[{key:"render",value:function n(){var e=null
return e=this.props.readOnly?c["default"].createElement(m.FormControl.Static,this.getInputProps(),this.props.value):c["default"].createElement(m.FormControl,this.getInputProps())}},{key:"getInputProps",
value:function i(){var e={bsClass:this.props.bsClass,className:this.props.className+" "+this.props.extraClass,id:this.props.id,name:this.props.name,disabled:this.props.disabled,readOnly:this.props.readOnly
value:function r(){var e={bsClass:this.props.bsClass,className:this.props.className+" "+this.props.extraClass,id:this.props.id,name:this.props.name,disabled:this.props.disabled,readOnly:this.props.readOnly
}
return this.props.readOnly||(s(e,{placeholder:this.props.placeholder,onChange:this.handleChange,value:this.props.value}),this.isMultiline()?s(e,{componentClass:"textarea",rows:this.props.data.rows,cols:this.props.data.columns
}):s(e,{componentClass:"input",type:this.props.type.toLowerCase()})),e}},{key:"isMultiline",value:function u(){return this.props.data&&this.props.data.rows>1}},{key:"handleChange",value:function d(e){"function"==typeof this.props.onChange&&this.props.onChange(e,{
@ -727,48 +723,48 @@ g.propTypes={extraClass:c["default"].PropTypes.string,id:c["default"].PropTypes.
readOnly:c["default"].PropTypes.bool,disabled:c["default"].PropTypes.bool,placeholder:c["default"].PropTypes.string,type:c["default"].PropTypes.string},g.defaultProps={value:"",extraClass:"",className:"",
type:"text"},t.TextField=g,t["default"]=(0,h["default"])(g)},function(e,t){e.exports=FieldHolder},function(e,t,n){(function(t){e.exports=t.LiteralField=n(137)}).call(t,function(){return this}())},function(e,t,n){
"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(20),f=i(d),p=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),l(t,[{key:"getContent",value:function n(){return{__html:this.props.value}}},{key:"getInputProps",
value:function i(){return{className:this.props.className+" "+this.props.extraClass,id:this.props.id,name:this.props.name}}},{key:"render",value:function u(){return c["default"].createElement("div",s({},this.getInputProps(),{
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(20),f=r(d),p=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"getContent",value:function n(){return{__html:this.props.value}}},{key:"getInputProps",
value:function r(){return{className:this.props.className+" "+this.props.extraClass,id:this.props.id,name:this.props.name}}},{key:"render",value:function u(){return c["default"].createElement("div",s({},this.getInputProps(),{
dangerouslySetInnerHTML:this.getContent()}))}}]),t}(f["default"])
p.propTypes={id:c["default"].PropTypes.string,name:c["default"].PropTypes.string.isRequired,extraClass:c["default"].PropTypes.string,value:c["default"].PropTypes.string},p.defaultProps={extraClass:"",className:""
},t["default"]=p},function(e,t,n){(function(t){e.exports=t.Toolbar=n(139)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleBackButtonClick=n.handleBackButtonClick.bind(n),n}return o(t,e),s(t,[{key:"render",value:function n(){var e=["btn","btn-secondary","action","font-icon-left-open-big","toolbar__back-button","btn--no-text"],t={
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleBackButtonClick=n.handleBackButtonClick.bind(n),n}return a(t,e),s(t,[{key:"render",value:function n(){var e=["btn","btn-secondary","action","font-icon-left-open-big","toolbar__back-button","btn--no-text"],t={
className:e.join(" "),onClick:this.handleBackButtonClick,href:"#",type:"button"}
return u["default"].createElement("div",{className:"toolbar toolbar--north"},u["default"].createElement("div",{className:"toolbar__navigation fill-width"},this.props.showBackButton&&u["default"].createElement("button",t),this.props.children))
}},{key:"handleBackButtonClick",value:function i(e){return"undefined"!=typeof this.props.handleBackButtonClick?void this.props.handleBackButtonClick(e):void e.preventDefault()}}]),t}(d["default"])
}},{key:"handleBackButtonClick",value:function r(e){return"undefined"!=typeof this.props.handleBackButtonClick?void this.props.handleBackButtonClick(e):void e.preventDefault()}}]),t}(d["default"])
f.propTypes={handleBackButtonClick:u["default"].PropTypes.func,showBackButton:u["default"].PropTypes.bool,breadcrumbs:u["default"].PropTypes.array},f.defaultProps={showBackButton:!1},t["default"]=f},function(e,t,n){
(function(t){e.exports=t.Breadcrumb=n(141)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return{crumbs:e.breadcrumbs
}}Object.defineProperty(t,"__esModule",{value:!0}),t.Breadcrumb=void 0
var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(20),f=i(d),p=n(106),h=n(142),m=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),l(t,[{key:"getLastCrumb",value:function n(){return this.props.crumbs&&this.props.crumbs[this.props.crumbs.length-1]
var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(20),f=r(d),p=n(106),h=n(142),m=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"getLastCrumb",value:function n(){return this.props.crumbs&&this.props.crumbs[this.props.crumbs.length-1]
}},{key:"renderBreadcrumbs",value:function i(){return this.props.crumbs?this.props.crumbs.slice(0,-1).map(function(e,t){return c["default"].createElement("li",{key:t,className:"breadcrumb__item"},c["default"].createElement(h.Link,{
}},{key:"renderBreadcrumbs",value:function r(){return this.props.crumbs?this.props.crumbs.slice(0,-1).map(function(e,t){return c["default"].createElement("li",{key:t,className:"breadcrumb__item"},c["default"].createElement(h.Link,{
className:"breadcrumb__item-title",to:e.href,onClick:e.onClick},e.text))}).concat([c["default"].createElement("li",{key:this.props.crumbs.length-1,className:"breadcrumb__item"})]):null}},{key:"renderLastCrumb",
value:function s(){var e=this.getLastCrumb()
if(!e)return null
@ -779,240 +775,240 @@ className:"breadcrumb"},this.renderBreadcrumbs()),this.renderLastCrumb())}}]),t}
m.propTypes={crumbs:c["default"].PropTypes.array},t.Breadcrumb=m,t["default"]=(0,p.connect)(s)(m)},function(e,t){e.exports=ReactRouter},function(e,t,n){(function(t){e.exports=t.BreadcrumbsActions=n(144)
}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e){return{type:o["default"].SET_BREADCRUMBS,payload:{breadcrumbs:e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.setBreadcrumbs=r
var a=n(145),o=i(a)},function(e,t){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e){return{type:a["default"].SET_BREADCRUMBS,payload:{breadcrumbs:e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.setBreadcrumbs=i
var o=n(145),a=r(o)},function(e,t){"use strict"
Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={SET_BREADCRUMBS:"SET_BREADCRUMBS"}},function(e,t,n){(function(t){e.exports=t.Badge=n(147)}).call(t,function(){return this}())},function(e,t,n){
"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0})
var r=n(5),a=i(r),o=function s(e){var t=e.status,n=e.message,i=e.className
return t?a["default"].createElement("span",{className:(i||"")+" label label-"+t+" label-pill"},n):null}
o.propTypes={message:r.PropTypes.node,status:r.PropTypes.oneOf(["default","info","success","warning","danger","primary","secondary"]),className:r.PropTypes.string},t["default"]=o},function(e,t,n){(function(t){
function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0})
var i=n(5),o=r(i),a=function s(e){var t=e.status,n=e.message,r=e.className
return t?o["default"].createElement("span",{className:(r||"")+" label label-"+t+" label-pill"},n):null}
a.propTypes={message:i.PropTypes.node,status:i.PropTypes.oneOf(["default","info","success","warning","danger","primary","secondary"]),className:i.PropTypes.string},t["default"]=a},function(e,t,n){(function(t){
e.exports=t.Config=n(149)}).call(t,function(){return this}())},function(e,t){"use strict"
function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(){function e(){
n(this,e)}return i(e,null,[{key:"get",value:function t(e){return window.ss.config[e]}},{key:"getAll",value:function r(){return window.ss.config}},{key:"getSection",value:function a(e){return window.ss.config.sections[e]
var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function(){function e(){
n(this,e)}return r(e,null,[{key:"get",value:function t(e){return window.ss.config[e]}},{key:"getAll",value:function i(){return window.ss.config}},{key:"getSection",value:function o(e){return window.ss.config.sections[e]
}}]),e}()
t["default"]=r},function(e,t,n){(function(t){e.exports=t.DataFormat=n(151)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e){return c["default"].parse(e.replace(/^\?/,""))}function a(e){var t=null,n=""
t["default"]=i},function(e,t,n){(function(t){e.exports=t.DataFormat=n(151)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e){return c["default"].parse(e.replace(/^\?/,""))}function o(e){var t=null,n=""
return e<1024?(t=e,n="bytes"):e<10240?(t=Math.round(e/1024*10)/10,n="KB"):e<1048576?(t=Math.round(e/1024),n="KB"):e<10485760?(t=Math.round(e/1024*1024*10)/10,n="MB"):e<1073741824&&(t=Math.round(e/1024*1024),
n="MB"),(t||0===t)&&n||(t=Math.round(e/1073741824*10)/10,n="GB"),isNaN(t)?l["default"]._t("File.NO_SIZE","N/A"):t+" "+n}function o(e){return/[.]/.exec(e)?e.replace(/^.+[.]/,""):""}Object.defineProperty(t,"__esModule",{
value:!0}),t.decodeQuery=r,t.fileSize=a,t.getFileExtension=o
var s=n(114),l=i(s),u=n(13),c=i(u)},function(e,t,n){(function(t){e.exports=t.ReducerRegister=n(153)}).call(t,function(){return this}())},function(e,t){"use strict"
n="MB"),(t||0===t)&&n||(t=Math.round(e/1073741824*10)/10,n="GB"),isNaN(t)?l["default"]._t("File.NO_SIZE","N/A"):t+" "+n}function a(e){return/[.]/.exec(e)?e.replace(/^.+[.]/,""):""}Object.defineProperty(t,"__esModule",{
value:!0}),t.decodeQuery=i,t.fileSize=o,t.getFileExtension=a
var s=n(114),l=r(s),u=n(13),c=r(u)},function(e,t,n){(function(t){e.exports=t.ReducerRegister=n(153)}).call(t,function(){return this}())},function(e,t){"use strict"
function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r={},a=function(){function e(){
n(this,e)}return i(e,[{key:"add",value:function t(e,n){if("undefined"!=typeof r[e])throw new Error("Reducer already exists at '"+e+"'")
r[e]=n}},{key:"getAll",value:function a(){return r}},{key:"getByKey",value:function o(e){return r[e]}},{key:"remove",value:function s(e){delete r[e]}}]),e}()
window.ss=window.ss||{},window.ss.reducerRegister=window.ss.reducerRegister||new a,t["default"]=window.ss.reducerRegister},function(e,t,n){(function(t){e.exports=t.ReactRouteRegister=n(155)}).call(t,function(){
var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i={},o=function(){function e(){
n(this,e)}return r(e,[{key:"add",value:function t(e,n){if("undefined"!=typeof i[e])throw new Error("Reducer already exists at '"+e+"'")
i[e]=n}},{key:"getAll",value:function o(){return i}},{key:"getByKey",value:function a(e){return i[e]}},{key:"remove",value:function s(e){delete i[e]}}]),e}()
window.ss=window.ss||{},window.ss.reducerRegister=window.ss.reducerRegister||new o,t["default"]=window.ss.reducerRegister},function(e,t,n){(function(t){e.exports=t.ReactRouteRegister=n(155)}).call(t,function(){
return this}())},function(e,t){"use strict"
function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=function(){function e(){
n(this,e),this.reset()}return r(e,[{key:"reset",value:function t(){var e=this
this.childRoutes=[],this.rootRoute={path:"/",getChildRoutes:function t(n,i){i(null,e.childRoutes)}}}},{key:"updateRootRoute",value:function a(e){this.rootRoute=i({},this.rootRoute,e)}},{key:"add",value:function o(e){
var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],n=this.findChildRoute(t),r=i({},{childRoutes:[]},e),a=r.childRoutes[r.childRoutes.length-1]
a&&"**"===a.path||(a={path:"**"},r.childRoutes.push(a))
var o=n.findIndex(function(t){return t.path===e.path})
o>=0?n[o]=r:n.unshift(r)}},{key:"findChildRoute",value:function s(e){var t=this.childRoutes
var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(){function e(){
n(this,e),this.reset()}return i(e,[{key:"reset",value:function t(){var e=this
this.childRoutes=[],this.rootRoute={path:"/",getChildRoutes:function t(n,r){r(null,e.childRoutes)}}}},{key:"updateRootRoute",value:function o(e){this.rootRoute=r({},this.rootRoute,e)}},{key:"add",value:function a(e){
var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],n=this.findChildRoute(t),i=r({},{childRoutes:[]},e),o=i.childRoutes[i.childRoutes.length-1]
o&&"**"===o.path||(o={path:"**"},i.childRoutes.push(o))
var a=n.findIndex(function(t){return t.path===e.path})
a>=0?n[a]=i:n.unshift(i)}},{key:"findChildRoute",value:function s(e){var t=this.childRoutes
return e&&e.forEach(function(e){var n=t.find(function(t){return t.path===e})
if(!n)throw new Error("Parent path "+e+" could not be found.")
t=n.childRoutes}),t}},{key:"getRootRoute",value:function l(){return this.rootRoute}},{key:"getChildRoutes",value:function u(){return this.childRoutes}},{key:"remove",value:function c(e){var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],n=this.findChildRoute(t),i=n.findIndex(function(t){
t=n.childRoutes}),t}},{key:"getRootRoute",value:function l(){return this.rootRoute}},{key:"getChildRoutes",value:function u(){return this.childRoutes}},{key:"remove",value:function c(e){var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],n=this.findChildRoute(t),r=n.findIndex(function(t){
return t.path===e})
return i<0?null:n.splice(i,1)[0]}}]),e}()
window.ss=window.ss||{},window.ss.routeRegister=window.ss.routeRegister||new a,t["default"]=window.ss.routeRegister},function(e,t,n){(function(t){e.exports=t.Injector=n(103)}).call(t,function(){return this
return r<0?null:n.splice(r,1)[0]}}]),e}()
window.ss=window.ss||{},window.ss.routeRegister=window.ss.routeRegister||new o,t["default"]=window.ss.routeRegister},function(e,t,n){(function(t){e.exports=t.Injector=n(103)}).call(t,function(){return this
}())},function(e,t,n){(function(t){e.exports=t.Router=n(158)}).call(t,function(){return this}())},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e){var t=c["default"].getAbsoluteBase(),n=f["default"].resolve(t,e)
return 0!==n.indexOf(t)?n:n.substring(t.length-1)}function a(e){return function(t,n,i,r){return e(c["default"].resolveURLToBase(t),n,i,r)}}function o(e){var t=new c["default"].Route(e)
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e){var t=c["default"].getAbsoluteBase(),n=f["default"].resolve(t,e)
return 0!==n.indexOf(t)?n:n.substring(t.length-1)}function o(e){return function(t,n,r,i){return e(c["default"].resolveURLToBase(t),n,r,i)}}function a(e){var t=new c["default"].Route(e)
return t.match(c["default"].current,{})}function s(){return c["default"].absoluteBaseURL}function l(e){c["default"].absoluteBaseURL=e
var t=document.createElement("a")
t.href=e
var n=t.pathname
n=n.replace(/\/$/,""),n.match(/^[^\/]/)&&(n="/"+n),c["default"].base(n)}Object.defineProperty(t,"__esModule",{value:!0})
var u=n(159),c=i(u),d=n(160),f=i(d)
c["default"].oldshow||(c["default"].oldshow=c["default"].show),c["default"].setAbsoluteBase=l.bind(c["default"]),c["default"].getAbsoluteBase=s.bind(c["default"]),c["default"].resolveURLToBase=r.bind(c["default"]),
c["default"].show=a(c["default"].oldshow),c["default"].routeAppliesToCurrentLocation=o,window.ss=window.ss||{},window.ss.router=window.ss.router||c["default"],t["default"]=window.ss.router},function(e,t){
var u=n(159),c=r(u),d=n(160),f=r(d)
c["default"].oldshow||(c["default"].oldshow=c["default"].show),c["default"].setAbsoluteBase=l.bind(c["default"]),c["default"].getAbsoluteBase=s.bind(c["default"]),c["default"].resolveURLToBase=i.bind(c["default"]),
c["default"].show=o(c["default"].oldshow),c["default"].routeAppliesToCurrentLocation=a,window.ss=window.ss||{},window.ss.router=window.ss.router||c["default"],t["default"]=window.ss.router},function(e,t){
e.exports=Page},function(e,t,n){"use strict"
function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null
function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null
}function r(e,t,n){if(e&&u.isObject(e)&&e instanceof i)return e
var r=new i
return r.parse(e,t,n),r}function a(e){return u.isString(e)&&(e=r(e)),e instanceof i?e.format():i.prototype.format.call(e)}function o(e,t){return r(e,!1,!0).resolve(t)}function s(e,t){return e?r(e,!1,!0).resolveObject(t):t
}function i(e,t,n){if(e&&u.isObject(e)&&e instanceof r)return e
var i=new r
return i.parse(e,t,n),i}function o(e){return u.isString(e)&&(e=i(e)),e instanceof r?e.format():r.prototype.format.call(e)}function a(e,t){return i(e,!1,!0).resolve(t)}function s(e,t){return e?i(e,!1,!0).resolveObject(t):t
}var l=n(161),u=n(162)
t.parse=r,t.resolve=o,t.resolveObject=s,t.format=a,t.Url=i
var c=/^([a-z0-9.+-]+:)/i,d=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,p=["<",">",'"',"`"," ","\r","\n","\t"],h=["{","}","|","\\","^","`"].concat(p),m=["'"].concat(h),g=["%","/","?",";","#"].concat(m),v=["/","?","#"],y=255,b=/^[+a-z0-9A-Z_-]{0,63}$/,_=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,w={
javascript:!0,"javascript:":!0},C={javascript:!0,"javascript:":!0},T={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},E=n(163)
i.prototype.parse=function(e,t,n){if(!u.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e)
var i=e.indexOf("?"),r=i!==-1&&i<e.indexOf("#")?"?":"#",a=e.split(r),o=/\\/g
a[0]=a[0].replace(o,"/"),e=a.join(r)
t.parse=i,t.resolve=a,t.resolveObject=s,t.format=o,t.Url=r
var c=/^([a-z0-9.+-]+:)/i,d=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,p=["<",">",'"',"`"," ","\r","\n","\t"],h=["{","}","|","\\","^","`"].concat(p),m=["'"].concat(h),g=["%","/","?",";","#"].concat(m),y=["/","?","#"],b=255,v=/^[+a-z0-9A-Z_-]{0,63}$/,_=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,w={
javascript:!0,"javascript:":!0},C={javascript:!0,"javascript:":!0},T={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},P=n(163)
r.prototype.parse=function(e,t,n){if(!u.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e)
var r=e.indexOf("?"),i=r!==-1&&r<e.indexOf("#")?"?":"#",o=e.split(i),a=/\\/g
o[0]=o[0].replace(a,"/"),e=o.join(i)
var s=e
if(s=s.trim(),!n&&1===e.split("#").length){var d=f.exec(s)
if(d)return this.path=s,this.href=s,this.pathname=d[1],d[2]?(this.search=d[2],t?this.query=E.parse(this.search.substr(1)):this.query=this.search.substr(1)):t&&(this.search="",this.query={}),this}var p=c.exec(s)
if(d)return this.path=s,this.href=s,this.pathname=d[1],d[2]?(this.search=d[2],t?this.query=P.parse(this.search.substr(1)):this.query=this.search.substr(1)):t&&(this.search="",this.query={}),this}var p=c.exec(s)
if(p){p=p[0]
var h=p.toLowerCase()
this.protocol=h,s=s.substr(p.length)}if(n||p||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var P="//"===s.substr(0,2)
!P||p&&C[p]||(s=s.substr(2),this.slashes=!0)}if(!C[p]&&(P||p&&!T[p])){for(var O=-1,S=0;S<v.length;S++){var k=s.indexOf(v[S])
k!==-1&&(O===-1||k<O)&&(O=k)}var j,x
this.protocol=h,s=s.substr(p.length)}if(n||p||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var E="//"===s.substr(0,2)
!E||p&&C[p]||(s=s.substr(2),this.slashes=!0)}if(!C[p]&&(E||p&&!T[p])){for(var O=-1,k=0;k<y.length;k++){var S=s.indexOf(y[k])
S!==-1&&(O===-1||S<O)&&(O=S)}var j,x
x=O===-1?s.lastIndexOf("@"):s.lastIndexOf("@",O),x!==-1&&(j=s.slice(0,x),s=s.slice(x+1),this.auth=decodeURIComponent(j)),O=-1
for(var S=0;S<g.length;S++){var k=s.indexOf(g[S])
k!==-1&&(O===-1||k<O)&&(O=k)}O===-1&&(O=s.length),this.host=s.slice(0,O),s=s.slice(O),this.parseHost(),this.hostname=this.hostname||""
for(var k=0;k<g.length;k++){var S=s.indexOf(g[k])
S!==-1&&(O===-1||S<O)&&(O=S)}O===-1&&(O=s.length),this.host=s.slice(0,O),s=s.slice(O),this.parseHost(),this.hostname=this.hostname||""
var R="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1]
if(!R)for(var I=this.hostname.split(/\./),S=0,A=I.length;S<A;S++){var F=I[S]
if(F&&!F.match(b)){for(var D="",M=0,N=F.length;M<N;M++)D+=F.charCodeAt(M)>127?"x":F[M]
if(!D.match(b)){var U=I.slice(0,S),L=I.slice(S+1),B=F.match(_)
B&&(U.push(B[1]),L.unshift(B[2])),L.length&&(s="/"+L.join(".")+s),this.hostname=U.join(".")
break}}}this.hostname.length>y?this.hostname="":this.hostname=this.hostname.toLowerCase(),R||(this.hostname=l.toASCII(this.hostname))
if(!R)for(var I=this.hostname.split(/\./),k=0,A=I.length;k<A;k++){var D=I[k]
if(D&&!D.match(v)){for(var F="",M=0,N=D.length;M<N;M++)F+=D.charCodeAt(M)>127?"x":D[M]
if(!F.match(v)){var L=I.slice(0,k),U=I.slice(k+1),B=D.match(_)
B&&(L.push(B[1]),U.unshift(B[2])),U.length&&(s="/"+U.join(".")+s),this.hostname=L.join(".")
break}}}this.hostname.length>b?this.hostname="":this.hostname=this.hostname.toLowerCase(),R||(this.hostname=l.toASCII(this.hostname))
var H=this.port?":"+this.port:"",$=this.hostname||""
this.host=$+H,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!w[h])for(var S=0,A=m.length;S<A;S++){var q=m[S]
this.host=$+H,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!w[h])for(var k=0,A=m.length;k<A;k++){var q=m[k]
if(s.indexOf(q)!==-1){var V=encodeURIComponent(q)
V===q&&(V=escape(q)),s=s.split(q).join(V)}}var G=s.indexOf("#")
G!==-1&&(this.hash=s.substr(G),s=s.slice(0,G))
var z=s.indexOf("?")
if(z!==-1?(this.search=s.substr(z),this.query=s.substr(z+1),t&&(this.query=E.parse(this.query)),s=s.slice(0,z)):t&&(this.search="",this.query={}),s&&(this.pathname=s),T[h]&&this.hostname&&!this.pathname&&(this.pathname="/"),
this.pathname||this.search){var H=this.pathname||"",W=this.search||""
this.path=H+W}return this.href=this.format(),this},i.prototype.format=function(){var e=this.auth||""
if(z!==-1?(this.search=s.substr(z),this.query=s.substr(z+1),t&&(this.query=P.parse(this.query)),s=s.slice(0,z)):t&&(this.search="",this.query={}),s&&(this.pathname=s),T[h]&&this.hostname&&!this.pathname&&(this.pathname="/"),
this.pathname||this.search){var H=this.pathname||"",X=this.search||""
this.path=H+X}return this.href=this.format(),this},r.prototype.format=function(){var e=this.auth||""
e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@")
var t=this.protocol||"",n=this.pathname||"",i=this.hash||"",r=!1,a=""
this.host?r=e+this.host:this.hostname&&(r=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&u.isObject(this.query)&&Object.keys(this.query).length&&(a=E.stringify(this.query))
var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,o=""
this.host?i=e+this.host:this.hostname&&(i=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&u.isObject(this.query)&&Object.keys(this.query).length&&(o=P.stringify(this.query))
var o=this.search||a&&"?"+a||""
return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||T[t])&&r!==!1?(r="//"+(r||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):r||(r=""),i&&"#"!==i.charAt(0)&&(i="#"+i),o&&"?"!==o.charAt(0)&&(o="?"+o),n=n.replace(/[?#]/g,function(e){
return encodeURIComponent(e)}),o=o.replace("#","%23"),t+r+n+o+i},i.prototype.resolve=function(e){return this.resolveObject(r(e,!1,!0)).format()},i.prototype.resolveObject=function(e){if(u.isString(e)){
var t=new i
t.parse(e,!1,!0),e=t}for(var n=new i,r=Object.keys(this),a=0;a<r.length;a++){var o=r[a]
n[o]=this[o]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n
var a=this.search||o&&"?"+o||""
return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||T[t])&&i!==!1?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),a&&"?"!==a.charAt(0)&&(a="?"+a),n=n.replace(/[?#]/g,function(e){
return encodeURIComponent(e)}),a=a.replace("#","%23"),t+i+n+a+r},r.prototype.resolve=function(e){return this.resolveObject(i(e,!1,!0)).format()},r.prototype.resolveObject=function(e){if(u.isString(e)){
var t=new r
t.parse(e,!1,!0),e=t}for(var n=new r,i=Object.keys(this),o=0;o<i.length;o++){var a=i[o]
n[a]=this[a]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n
if(e.slashes&&!e.protocol){for(var s=Object.keys(e),l=0;l<s.length;l++){var c=s[l]
"protocol"!==c&&(n[c]=e[c])}return T[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!T[e.protocol]){for(var d=Object.keys(e),f=0;f<d.length;f++){
var p=d[f]
n[p]=e[p]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||C[e.protocol])n.pathname=e.pathname
else{for(var h=(e.pathname||"").split("/");h.length&&!(e.host=h.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==h[0]&&h.unshift(""),h.length<2&&h.unshift(""),n.pathname=h.join("/")}if(n.search=e.search,
n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var m=n.pathname||"",g=n.search||""
n.path=m+g}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var v=n.pathname&&"/"===n.pathname.charAt(0),y=e.host||e.pathname&&"/"===e.pathname.charAt(0),b=y||v||n.host&&e.pathname,_=b,w=n.pathname&&n.pathname.split("/")||[],h=e.pathname&&e.pathname.split("/")||[],E=n.protocol&&!T[n.protocol]
n.path=m+g}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),v=b||y||n.host&&e.pathname,_=v,w=n.pathname&&n.pathname.split("/")||[],h=e.pathname&&e.pathname.split("/")||[],P=n.protocol&&!T[n.protocol]
if(E&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===h[0]?h[0]=e.host:h.unshift(e.host)),e.host=null),b=b&&(""===h[0]||""===w[0])),
y)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,w=h
if(P&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===h[0]?h[0]=e.host:h.unshift(e.host)),e.host=null),v=v&&(""===h[0]||""===w[0])),
b)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,w=h
else if(h.length)w||(w=[]),w.pop(),w=w.concat(h),n.search=e.search,n.query=e.query
else if(!u.isNullOrUndefined(e.search)){if(E){n.hostname=n.host=w.shift()
var P=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@")
P&&(n.auth=P.shift(),n.host=n.hostname=P.shift())}return n.search=e.search,n.query=e.query,u.isNull(n.pathname)&&u.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),
else if(!u.isNullOrUndefined(e.search)){if(P){n.hostname=n.host=w.shift()
var E=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@")
E&&(n.auth=E.shift(),n.host=n.hostname=E.shift())}return n.search=e.search,n.query=e.query,u.isNull(n.pathname)&&u.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),
n}if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n
for(var O=w.slice(-1)[0],S=(n.host||e.host||w.length>1)&&("."===O||".."===O)||""===O,k=0,j=w.length;j>=0;j--)O=w[j],"."===O?w.splice(j,1):".."===O?(w.splice(j,1),k++):k&&(w.splice(j,1),k--)
if(!b&&!_)for(;k--;k)w.unshift("..")
!b||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),S&&"/"!==w.join("/").substr(-1)&&w.push("")
for(var O=w.slice(-1)[0],k=(n.host||e.host||w.length>1)&&("."===O||".."===O)||""===O,S=0,j=w.length;j>=0;j--)O=w[j],"."===O?w.splice(j,1):".."===O?(w.splice(j,1),S++):S&&(w.splice(j,1),S--)
if(!v&&!_)for(;S--;S)w.unshift("..")
!v||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),k&&"/"!==w.join("/").substr(-1)&&w.push("")
var x=""===w[0]||w[0]&&"/"===w[0].charAt(0)
if(E){n.hostname=n.host=x?"":w.length?w.shift():""
var P=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@")
P&&(n.auth=P.shift(),n.host=n.hostname=P.shift())}return b=b||n.host&&w.length,b&&!x&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),u.isNull(n.pathname)&&u.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),
n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=d.exec(e)
t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){var i;(function(e,r){!function(a){function o(e){throw RangeError(F[e])}function s(e,t){
for(var n=e.length,i=[];n--;)i[n]=t(e[n])
return i}function l(e,t){var n=e.split("@"),i=""
n.length>1&&(i=n[0]+"@",e=n[1]),e=e.replace(A,".")
var r=e.split("."),a=s(r,t).join(".")
return i+a}function u(e){for(var t=[],n=0,i=e.length,r,a;n<i;)r=e.charCodeAt(n++),r>=55296&&r<=56319&&n<i?(a=e.charCodeAt(n++),56320==(64512&a)?t.push(((1023&r)<<10)+(1023&a)+65536):(t.push(r),n--)):t.push(r)
if(P){n.hostname=n.host=x?"":w.length?w.shift():""
var E=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@")
E&&(n.auth=E.shift(),n.host=n.hostname=E.shift())}return v=v||n.host&&w.length,v&&!x&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),u.isNull(n.pathname)&&u.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),
n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var e=this.host,t=d.exec(e)
t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){var r;(function(e,i){!function(o){function a(e){throw RangeError(D[e])}function s(e,t){
for(var n=e.length,r=[];n--;)r[n]=t(e[n])
return r}function l(e,t){var n=e.split("@"),r=""
n.length>1&&(r=n[0]+"@",e=n[1]),e=e.replace(A,".")
var i=e.split("."),o=s(i,t).join(".")
return r+o}function u(e){for(var t=[],n=0,r=e.length,i,o;n<r;)i=e.charCodeAt(n++),i>=55296&&i<=56319&&n<r?(o=e.charCodeAt(n++),56320==(64512&o)?t.push(((1023&i)<<10)+(1023&o)+65536):(t.push(i),n--)):t.push(i)
return t}function c(e){return s(e,function(e){var t=""
return e>65535&&(e-=65536,t+=N(e>>>10&1023|55296),e=56320|1023&e),t+=N(e)}).join("")}function d(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}function f(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function p(e,t,n){
var i=0
for(e=n?M(e/S):e>>1,e+=M(e/t);e>D*P>>1;i+=T)e=M(e/D)
return M(i+(D+1)*e/(e+O))}function h(e){var t=[],n=e.length,i,r=0,a=j,s=k,l,u,f,h,m,g,v,y,b
for(l=e.lastIndexOf(x),l<0&&(l=0),u=0;u<l;++u)e.charCodeAt(u)>=128&&o("not-basic"),t.push(e.charCodeAt(u))
for(f=l>0?l+1:0;f<n;){for(h=r,m=1,g=T;f>=n&&o("invalid-input"),v=d(e.charCodeAt(f++)),(v>=T||v>M((C-r)/m))&&o("overflow"),r+=v*m,y=g<=s?E:g>=s+P?P:g-s,!(v<y);g+=T)b=T-y,m>M(C/b)&&o("overflow"),m*=b
i=t.length+1,s=p(r-h,i,0==h),M(r/i)>C-a&&o("overflow"),a+=M(r/i),r%=i,t.splice(r++,0,a)}return c(t)}function m(e){var t,n,i,r,a,s,l,c,d,h,m,g=[],v,y,b,_
for(e=u(e),v=e.length,t=j,n=0,a=k,s=0;s<v;++s)m=e[s],m<128&&g.push(N(m))
for(i=r=g.length,r&&g.push(x);i<v;){for(l=C,s=0;s<v;++s)m=e[s],m>=t&&m<l&&(l=m)
for(y=i+1,l-t>M((C-n)/y)&&o("overflow"),n+=(l-t)*y,t=l,s=0;s<v;++s)if(m=e[s],m<t&&++n>C&&o("overflow"),m==t){for(c=n,d=T;h=d<=a?E:d>=a+P?P:d-a,!(c<h);d+=T)_=c-h,b=T-h,g.push(N(f(h+_%b,0))),c=M(_/b)
g.push(N(f(c,0))),a=p(n,y,i==r),n=0,++i}++n,++t}return g.join("")}function g(e){return l(e,function(e){return R.test(e)?h(e.slice(4).toLowerCase()):e})}function v(e){return l(e,function(e){return I.test(e)?"xn--"+m(e):e
var r=0
for(e=n?M(e/k):e>>1,e+=M(e/t);e>F*E>>1;r+=T)e=M(e/F)
return M(r+(F+1)*e/(e+O))}function h(e){var t=[],n=e.length,r,i=0,o=j,s=S,l,u,f,h,m,g,y,b,v
for(l=e.lastIndexOf(x),l<0&&(l=0),u=0;u<l;++u)e.charCodeAt(u)>=128&&a("not-basic"),t.push(e.charCodeAt(u))
for(f=l>0?l+1:0;f<n;){for(h=i,m=1,g=T;f>=n&&a("invalid-input"),y=d(e.charCodeAt(f++)),(y>=T||y>M((C-i)/m))&&a("overflow"),i+=y*m,b=g<=s?P:g>=s+E?E:g-s,!(y<b);g+=T)v=T-b,m>M(C/v)&&a("overflow"),m*=v
r=t.length+1,s=p(i-h,r,0==h),M(i/r)>C-o&&a("overflow"),o+=M(i/r),i%=r,t.splice(i++,0,o)}return c(t)}function m(e){var t,n,r,i,o,s,l,c,d,h,m,g=[],y,b,v,_
for(e=u(e),y=e.length,t=j,n=0,o=S,s=0;s<y;++s)m=e[s],m<128&&g.push(N(m))
for(r=i=g.length,i&&g.push(x);r<y;){for(l=C,s=0;s<y;++s)m=e[s],m>=t&&m<l&&(l=m)
for(b=r+1,l-t>M((C-n)/b)&&a("overflow"),n+=(l-t)*b,t=l,s=0;s<y;++s)if(m=e[s],m<t&&++n>C&&a("overflow"),m==t){for(c=n,d=T;h=d<=o?P:d>=o+E?E:d-o,!(c<h);d+=T)_=c-h,v=T-h,g.push(N(f(h+_%v,0))),c=M(_/v)
g.push(N(f(c,0))),o=p(n,b,r==i),n=0,++r}++n,++t}return g.join("")}function g(e){return l(e,function(e){return R.test(e)?h(e.slice(4).toLowerCase()):e})}function y(e){return l(e,function(e){return I.test(e)?"xn--"+m(e):e
})}var y="object"==typeof t&&t&&!t.nodeType&&t,b="object"==typeof e&&e&&!e.nodeType&&e,_="object"==typeof r&&r
_.global!==_&&_.window!==_&&_.self!==_||(a=_)
var w,C=2147483647,T=36,E=1,P=26,O=38,S=700,k=72,j=128,x="-",R=/^xn--/,I=/[^\x20-\x7E]/,A=/[\x2E\u3002\uFF0E\uFF61]/g,F={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)",
"invalid-input":"Invalid input"},D=T-E,M=Math.floor,N=String.fromCharCode,U
w={version:"1.3.2",ucs2:{decode:u,encode:c},decode:h,encode:m,toASCII:v,toUnicode:g},i=function(){return w}.call(t,n,t,e),!(void 0!==i&&(e.exports=i))}(this)}).call(t,n(15)(e),function(){return this}())
})}var b="object"==typeof t&&t&&!t.nodeType&&t,v="object"==typeof e&&e&&!e.nodeType&&e,_="object"==typeof i&&i
_.global!==_&&_.window!==_&&_.self!==_||(o=_)
var w,C=2147483647,T=36,P=1,E=26,O=38,k=700,S=72,j=128,x="-",R=/^xn--/,I=/[^\x20-\x7E]/,A=/[\x2E\u3002\uFF0E\uFF61]/g,D={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)",
"invalid-input":"Invalid input"},F=T-P,M=Math.floor,N=String.fromCharCode,L
w={version:"1.3.2",ucs2:{decode:u,encode:c},decode:h,encode:m,toASCII:y,toUnicode:g},r=function(){return w}.call(t,n,t,e),!(void 0!==r&&(e.exports=r))}(this)}).call(t,n(15)(e),function(){return this}())
},function(e,t){"use strict"
e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,n){
"use strict"
t.decode=t.parse=n(164),t.encode=t.stringify=n(165)},function(e,t){"use strict"
function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,i,r){t=t||"&",i=i||"="
var a={}
if("string"!=typeof e||0===e.length)return a
var o=/\+/g
function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,i){t=t||"&",r=r||"="
var o={}
if("string"!=typeof e||0===e.length)return o
var a=/\+/g
e=e.split(t)
var s=1e3
r&&"number"==typeof r.maxKeys&&(s=r.maxKeys)
i&&"number"==typeof i.maxKeys&&(s=i.maxKeys)
var l=e.length
s>0&&l>s&&(l=s)
for(var u=0;u<l;++u){var c=e[u].replace(o,"%20"),d=c.indexOf(i),f,p,h,m
d>=0?(f=c.substr(0,d),p=c.substr(d+1)):(f=c,p=""),h=decodeURIComponent(f),m=decodeURIComponent(p),n(a,h)?Array.isArray(a[h])?a[h].push(m):a[h]=[a[h],m]:a[h]=m}return a}},function(e,t){"use strict"
for(var u=0;u<l;++u){var c=e[u].replace(a,"%20"),d=c.indexOf(r),f,p,h,m
d>=0?(f=c.substr(0,d),p=c.substr(d+1)):(f=c,p=""),h=decodeURIComponent(f),m=decodeURIComponent(p),n(o,h)?Array.isArray(o[h])?o[h].push(m):o[h]=[o[h],m]:o[h]=m}return o}},function(e,t){"use strict"
var n=function(e){switch(typeof e){case"string":return e
case"boolean":return e?"true":"false"
case"number":return isFinite(e)?e:""
default:return""}}
e.exports=function(e,t,i,r){return t=t||"&",i=i||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(r){var a=encodeURIComponent(n(r))+i
return Array.isArray(e[r])?e[r].map(function(e){return a+encodeURIComponent(n(e))}).join(t):a+encodeURIComponent(n(e[r]))}).join(t):r?encodeURIComponent(n(r))+i+encodeURIComponent(n(e)):""}},function(e,t,n){
e.exports=function(e,t,r,i){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(i){var o=encodeURIComponent(n(i))+r
return Array.isArray(e[i])?e[i].map(function(e){return o+encodeURIComponent(n(e))}).join(t):o+encodeURIComponent(n(e[i]))}).join(t):i?encodeURIComponent(n(i))+r+encodeURIComponent(n(e)):""}},function(e,t,n){
"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r),o=(0,a["default"])(window),s=(0,a["default"])("html"),l=(0,a["default"])("head"),u={urlParseRE:/^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
parseUrl:function c(e){if("object"===a["default"].type(e))return e
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i),a=(0,o["default"])(window),s=(0,o["default"])("html"),l=(0,o["default"])("head"),u={urlParseRE:/^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
parseUrl:function c(e){if("object"===o["default"].type(e))return e
var t=u.urlParseRE.exec(e||"")||[]
return{href:t[0]||"",hrefNoHash:t[1]||"",hrefNoSearch:t[2]||"",domain:t[3]||"",protocol:t[4]||"",doubleSlash:t[5]||"",authority:t[6]||"",username:t[8]||"",password:t[9]||"",host:t[10]||"",hostname:t[11]||"",
port:t[12]||"",pathname:t[13]||"",directory:t[14]||"",filename:t[15]||"",search:t[16]||"",hash:t[17]||""}},makePathAbsolute:function d(e,t){if(e&&"/"===e.charAt(0))return e
e=e||"",t=t?t.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):""
for(var n=t?t.split("/"):[],i=e.split("/"),r=0;r<i.length;r++){var a=i[r]
switch(a){case".":break
for(var n=t?t.split("/"):[],r=e.split("/"),i=0;i<r.length;i++){var o=r[i]
switch(o){case".":break
case"..":n.length&&n.pop()
break
default:n.push(a)}}return"/"+n.join("/")},isSameDomain:function f(e,t){return u.parseUrl(e).domain===u.parseUrl(t).domain},isRelativeUrl:function p(e){return""===u.parseUrl(e).protocol},isAbsoluteUrl:function h(e){
default:n.push(o)}}return"/"+n.join("/")},isSameDomain:function f(e,t){return u.parseUrl(e).domain===u.parseUrl(t).domain},isRelativeUrl:function p(e){return""===u.parseUrl(e).protocol},isAbsoluteUrl:function h(e){
return""!==u.parseUrl(e).protocol},makeUrlAbsolute:function m(e,t){if(!u.isRelativeUrl(e))return e
var n=u.parseUrl(e),i=u.parseUrl(t),r=n.protocol||i.protocol,a=n.protocol?n.doubleSlash:n.doubleSlash||i.doubleSlash,o=n.authority||i.authority,s=""!==n.pathname,l=u.makePathAbsolute(n.pathname||i.filename,i.pathname),c=n.search||!s&&i.search||"",d=n.hash
var n=u.parseUrl(e),r=u.parseUrl(t),i=n.protocol||r.protocol,o=n.protocol?n.doubleSlash:n.doubleSlash||r.doubleSlash,a=n.authority||r.authority,s=""!==n.pathname,l=u.makePathAbsolute(n.pathname||r.filename,r.pathname),c=n.search||!s&&r.search||"",d=n.hash
return r+a+o+l+c+d},addSearchParams:function g(e,t){var n=u.parseUrl(e),t="string"==typeof t?u.convertSearchToArray(t):t,i=a["default"].extend(u.convertSearchToArray(n.search),t)
return n.hrefNoSearch+"?"+a["default"].param(i)+(n.hash||"")},getSearchParams:function v(e){var t=u.parseUrl(e)
return u.convertSearchToArray(t.search)},convertSearchToArray:function y(e){var t,n,i,r={}
for(e=e.replace(/^\?/,""),t=e?e.split("&"):[],n=0;n<t.length;n++)i=t[n].split("="),r[decodeURIComponent(i[0])]=decodeURIComponent(i[1])
return r},convertUrlToDataUrl:function b(e){var t=u.parseUrl(e)
return i+o+a+l+c+d},addSearchParams:function g(e,t){var n=u.parseUrl(e),t="string"==typeof t?u.convertSearchToArray(t):t,r=o["default"].extend(u.convertSearchToArray(n.search),t)
return n.hrefNoSearch+"?"+o["default"].param(r)+(n.hash||"")},getSearchParams:function y(e){var t=u.parseUrl(e)
return u.convertSearchToArray(t.search)},convertSearchToArray:function b(e){var t,n,r,i={}
for(e=e.replace(/^\?/,""),t=e?e.split("&"):[],n=0;n<t.length;n++)r=t[n].split("="),i[decodeURIComponent(r[0])]=decodeURIComponent(r[1])
return i},convertUrlToDataUrl:function v(e){var t=u.parseUrl(e)
return u.isEmbeddedPage(t)?t.hash.split(dialogHashKey)[0].replace(/^#/,""):u.isSameDomain(t,document)?t.hrefNoHash.replace(document.domain,""):e},get:function _(e){return void 0===e&&(e=location.hash),
u.stripHash(e).replace(/[^\/]*\.[^\/*]+$/,"")},getFilePath:function w(e){var t="&"+a["default"].mobile.subPageUrlKey
return e&&e.split(t)[0].split(dialogHashKey)[0]},set:function C(e){location.hash=e},isPath:function T(e){return/\//.test(e)},clean:function E(e){return e.replace(document.domain,"")},stripHash:function P(e){
return e.replace(/^#/,"")},cleanHash:function O(e){return u.stripHash(e.replace(/\?.*$/,"").replace(dialogHashKey,""))},isExternal:function S(e){var t=u.parseUrl(e)
return!(!t.protocol||t.domain===document.domain)},hasProtocol:function k(e){return/^(:?\w+:)/.test(e)}}
a["default"].path=u},function(e,t,n){(function(e){"use strict"
function t(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=t(i)
n(168),r["default"].widget("ssui.ssdialog",r["default"].ui.dialog,{options:{iframeUrl:"",reloadOnOpen:!0,dialogExtraClass:"",modal:!0,bgiframe:!0,autoOpen:!1,autoPosition:!0,minWidth:500,maxWidth:800,minHeight:300,
maxHeight:700,widthRatio:.8,heightRatio:.8,resizable:!1},_create:function a(){r["default"].ui.dialog.prototype._create.call(this)
var e=this,t=(0,r["default"])('<iframe marginWidth="0" marginHeight="0" frameBorder="0" scrolling="auto"></iframe>')
t.bind("load",function(n){"about:blank"!=(0,r["default"])(this).attr("src")&&(t.addClass("loaded").show(),e._resizeIframe(),e.uiDialog.removeClass("loading"))}).hide(),this.options.dialogExtraClass&&this.uiDialog.addClass(this.options.dialogExtraClass),
this.element.append(t),this.options.iframeUrl&&this.element.css("overflow","hidden")},open:function o(){r["default"].ui.dialog.prototype.open.call(this)
u.stripHash(e).replace(/[^\/]*\.[^\/*]+$/,"")},getFilePath:function w(e){var t="&"+o["default"].mobile.subPageUrlKey
return e&&e.split(t)[0].split(dialogHashKey)[0]},set:function C(e){location.hash=e},isPath:function T(e){return/\//.test(e)},clean:function P(e){return e.replace(document.domain,"")},stripHash:function E(e){
return e.replace(/^#/,"")},cleanHash:function O(e){return u.stripHash(e.replace(/\?.*$/,"").replace(dialogHashKey,""))},isExternal:function k(e){var t=u.parseUrl(e)
return!(!t.protocol||t.domain===document.domain)},hasProtocol:function S(e){return/^(:?\w+:)/.test(e)}}
o["default"].path=u},function(e,t,n){(function(e){"use strict"
function t(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),i=t(r)
n(168),i["default"].widget("ssui.ssdialog",i["default"].ui.dialog,{options:{iframeUrl:"",reloadOnOpen:!0,dialogExtraClass:"",modal:!0,bgiframe:!0,autoOpen:!1,autoPosition:!0,minWidth:500,maxWidth:800,minHeight:300,
maxHeight:700,widthRatio:.8,heightRatio:.8,resizable:!1},_create:function o(){i["default"].ui.dialog.prototype._create.call(this)
var e=this,t=(0,i["default"])('<iframe marginWidth="0" marginHeight="0" frameBorder="0" scrolling="auto"></iframe>')
t.bind("load",function(n){"about:blank"!=(0,i["default"])(this).attr("src")&&(t.addClass("loaded").show(),e._resizeIframe(),e.uiDialog.removeClass("loading"))}).hide(),this.options.dialogExtraClass&&this.uiDialog.addClass(this.options.dialogExtraClass),
this.element.append(t),this.options.iframeUrl&&this.element.css("overflow","hidden")},open:function a(){i["default"].ui.dialog.prototype.open.call(this)
var e=this,t=this.element.children("iframe")
!this.options.iframeUrl||t.hasClass("loaded")&&!this.options.reloadOnOpen||(t.hide(),t.attr("src",this.options.iframeUrl),this.uiDialog.addClass("loading")),(0,r["default"])(window).bind("resize.ssdialog",function(){
e._resizeIframe()})},close:function s(){r["default"].ui.dialog.prototype.close.call(this),this.uiDialog.unbind("resize.ssdialog"),(0,r["default"])(window).unbind("resize.ssdialog")},_resizeIframe:function l(){
var t={},n,i,a=this.element.children("iframe")
this.options.widthRatio&&(n=(0,r["default"])(window).width()*this.options.widthRatio,this.options.minWidth&&n<this.options.minWidth?t.width=this.options.minWidth:this.options.maxWidth&&n>this.options.maxWidth?t.width=this.options.maxWidth:t.width=n),
this.options.heightRatio&&(i=(0,r["default"])(window).height()*this.options.heightRatio,this.options.minHeight&&i<this.options.minHeight?t.height=this.options.minHeight:this.options.maxHeight&&i>this.options.maxHeight?t.height=this.options.maxHeight:t.height=i),
e.isEmptyObject(t)||(this._setOptions(t),a.attr("width",t.width-parseFloat(this.element.css("paddingLeft"))-parseFloat(this.element.css("paddingRight"))),a.attr("height",t.height-parseFloat(this.element.css("paddingTop"))-parseFloat(this.element.css("paddingBottom"))),
this.options.autoPosition&&this._setOption("position",this.options.position))}}),r["default"].widget("ssui.titlebar",{_create:function u(){this.originalTitle=this.element.attr("title")
var e=this,t=this.options,n=t.title||this.originalTitle||"&nbsp;",i=r["default"].ui.dialog.getTitleId(this.element)
!this.options.iframeUrl||t.hasClass("loaded")&&!this.options.reloadOnOpen||(t.hide(),t.attr("src",this.options.iframeUrl),this.uiDialog.addClass("loading")),(0,i["default"])(window).bind("resize.ssdialog",function(){
e._resizeIframe()})},close:function s(){i["default"].ui.dialog.prototype.close.call(this),this.uiDialog.unbind("resize.ssdialog"),(0,i["default"])(window).unbind("resize.ssdialog")},_resizeIframe:function l(){
var t={},n,r,o=this.element.children("iframe")
this.options.widthRatio&&(n=(0,i["default"])(window).width()*this.options.widthRatio,this.options.minWidth&&n<this.options.minWidth?t.width=this.options.minWidth:this.options.maxWidth&&n>this.options.maxWidth?t.width=this.options.maxWidth:t.width=n),
this.options.heightRatio&&(r=(0,i["default"])(window).height()*this.options.heightRatio,this.options.minHeight&&r<this.options.minHeight?t.height=this.options.minHeight:this.options.maxHeight&&r>this.options.maxHeight?t.height=this.options.maxHeight:t.height=r),
e.isEmptyObject(t)||(this._setOptions(t),o.attr("width",t.width-parseFloat(this.element.css("paddingLeft"))-parseFloat(this.element.css("paddingRight"))),o.attr("height",t.height-parseFloat(this.element.css("paddingTop"))-parseFloat(this.element.css("paddingBottom"))),
this.options.autoPosition&&this._setOption("position",this.options.position))}}),i["default"].widget("ssui.titlebar",{_create:function u(){this.originalTitle=this.element.attr("title")
var e=this,t=this.options,n=t.title||this.originalTitle||"&nbsp;",r=i["default"].ui.dialog.getTitleId(this.element)
this.element.parent().addClass("ui-dialog")
var a=this.element.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
if(t.closeButton)var o=(0,r["default"])('<a href="#"/>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){o.addClass("ui-state-hover")},function(){o.removeClass("ui-state-hover")
var o=this.element.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
if(t.closeButton)var a=(0,i["default"])('<a href="#"/>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){a.addClass("ui-state-hover")},function(){a.removeClass("ui-state-hover")
}).focus(function(){o.addClass("ui-state-focus")}).blur(function(){o.removeClass("ui-state-focus")}).mousedown(function(e){e.stopPropagation()}).appendTo(a),s=(this.uiDialogTitlebarCloseText=(0,r["default"])("<span/>")).addClass("ui-icon ui-icon-closethick").text(t.closeText).appendTo(o)
}).focus(function(){a.addClass("ui-state-focus")}).blur(function(){a.removeClass("ui-state-focus")}).mousedown(function(e){e.stopPropagation()}).appendTo(o),s=(this.uiDialogTitlebarCloseText=(0,i["default"])("<span/>")).addClass("ui-icon ui-icon-closethick").text(t.closeText).appendTo(a)
var l=(0,r["default"])("<span/>").addClass("ui-dialog-title").attr("id",i).html(n).prependTo(a)
a.find("*").add(a).disableSelection()},destroy:function c(){this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.originalTitle&&this.element.attr("title",this.originalTitle)
var l=(0,i["default"])("<span/>").addClass("ui-dialog-title").attr("id",r).html(n).prependTo(o)
o.find("*").add(o).disableSelection()},destroy:function c(){this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.originalTitle&&this.element.attr("title",this.originalTitle)
}}),r["default"].extend(r["default"].ssui.titlebar,{version:"0.0.1",options:{title:"",closeButton:!1,closeText:"close"},uuid:0,getTitleId:function d(e){return"ui-dialog-title-"+(e.attr("id")||++this.uuid)
}}),i["default"].extend(i["default"].ssui.titlebar,{version:"0.0.1",options:{title:"",closeButton:!1,closeText:"close"},uuid:0,getTitleId:function d(e){return"ui-dialog-title-"+(e.attr("id")||++this.uuid)
}})}).call(t,n(1))},,function(module,exports,__webpack_require__){(function(jQuery){"use strict"
function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e
@ -1020,32 +1016,32 @@ function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}var _t
},_jQuery=__webpack_require__(1),_jQuery2=_interopRequireDefault(_jQuery)
__webpack_require__(167)
var windowWidth,windowHeight
_jQuery2["default"].noConflict(),window.ss=window.ss||{},window.ss.debounce=function(e,t,n){var i,r,a,o=function s(){i=null,n||e.apply(r,a)}
return function(){var s=n&&!i
r=this,a=arguments,clearTimeout(i),i=setTimeout(o,t),s&&e.apply(r,a)}},(0,_jQuery2["default"])(window).bind("resize.leftandmain",function(e){(0,_jQuery2["default"])(".cms-container").trigger("windowresize")
_jQuery2["default"].noConflict(),window.ss=window.ss||{},window.ss.debounce=function(e,t,n){var r,i,o,a=function s(){r=null,n||e.apply(i,o)}
return function(){var s=n&&!r
i=this,o=arguments,clearTimeout(r),r=setTimeout(a,t),s&&e.apply(i,o)}},(0,_jQuery2["default"])(window).bind("resize.leftandmain",function(e){(0,_jQuery2["default"])(".cms-container").trigger("windowresize")
}),_jQuery2["default"].entwine.warningLevel=_jQuery2["default"].entwine.WARN_LEVEL_BESTPRACTISE,_jQuery2["default"].entwine("ss",function($){$(window).on("message",function(e){var t,n=e.originalEvent,i="object"===_typeof(n.data)?n.data:JSON.parse(n.data)
}),_jQuery2["default"].entwine.warningLevel=_jQuery2["default"].entwine.WARN_LEVEL_BESTPRACTISE,_jQuery2["default"].entwine("ss",function($){$(window).on("message",function(e){var t,n=e.originalEvent,r="object"===_typeof(n.data)?n.data:JSON.parse(n.data)
if($.path.parseUrl(window.location.href).domain===$.path.parseUrl(n.origin).domain)switch(t=$("undefined"==typeof i.target?window:i.target),i.type){case"event":t.trigger(i.event,i.data)
if($.path.parseUrl(window.location.href).domain===$.path.parseUrl(n.origin).domain)switch(t=$("undefined"==typeof r.target?window:r.target),r.type){case"event":t.trigger(r.event,r.data)
break
case"callback":t[i.callback].call(t,i.data)}})
case"callback":t[r.callback].call(t,r.data)}})
var positionLoadingSpinner=function e(){var e=120,t=$(".ss-loading-screen .loading-animation"),n=($(window).height()-t.height())/2
t.css("top",n+e),t.show()},applyChosen=function t(e){e.is(":visible")?e.addClass("has-chosen").chosen({allow_single_deselect:!0,disable_search_threshold:20,display_disabled_options:!0,width:"100%"}):setTimeout(function(){
e.show(),t(e)},500)},isSameUrl=function n(e,t){var n=$("base").attr("href")
e=$.path.isAbsoluteUrl(e)?e:$.path.makeUrlAbsolute(e,n),t=$.path.isAbsoluteUrl(t)?t:$.path.makeUrlAbsolute(t,n)
var i=$.path.parseUrl(e),r=$.path.parseUrl(t)
return i.pathname.replace(/\/*$/,"")==r.pathname.replace(/\/*$/,"")&&i.search==r.search},ajaxCompleteEvent=window.ss.debounce(function(){$(window).trigger("ajaxComplete")},1e3,!0)
$(window).bind("resize",positionLoadingSpinner).trigger("resize"),$(document).ajaxComplete(function(e,t,n){var i=document.URL,r=t.getResponseHeader("X-ControllerURL"),a=n.url,o=null!==t.getResponseHeader("X-Status")?t.getResponseHeader("X-Status"):t.statusText,s=t.status<200||t.status>399?"bad":"good",l=["OK","success","HTTP/2.0 200"]
var r=$.path.parseUrl(e),i=$.path.parseUrl(t)
return r.pathname.replace(/\/*$/,"")==i.pathname.replace(/\/*$/,"")&&r.search==i.search},ajaxCompleteEvent=window.ss.debounce(function(){$(window).trigger("ajaxComplete")},1e3,!0)
$(window).bind("resize",positionLoadingSpinner).trigger("resize"),$(document).ajaxComplete(function(e,t,n){var r=document.URL,i=t.getResponseHeader("X-ControllerURL"),o=n.url,a=null!==t.getResponseHeader("X-Status")?t.getResponseHeader("X-Status"):t.statusText,s=t.status<200||t.status>399?"bad":"good",l=["OK","success","HTTP/2.0 200"]
return null===r||isSameUrl(i,r)&&isSameUrl(a,r)||window.ss.router.show(r,{id:(new Date).getTime()+String(Math.random()).replace(/\D/g,""),pjax:t.getResponseHeader("X-Pjax")?t.getResponseHeader("X-Pjax"):n.headers["X-Pjax"]
}),t.getResponseHeader("X-Reauthenticate")?void $(".cms-container").showLoginDialog():(0!==t.status&&o&&$.inArray(o,l)===-1&&statusMessage(decodeURIComponent(o),s),void ajaxCompleteEvent(this))}),$(".cms-container").entwine({
StateChangeXHR:null,FragmentXHR:{},StateChangeCount:0,LayoutOptions:{minContentWidth:940,minPreviewWidth:400,mode:"content"},onadd:function i(){return $.browser.msie&&parseInt($.browser.version,10)<8?($(".ss-loading-screen").append('<p class="ss-loading-incompat-warning"><span class="notice">Your browser is not compatible with the CMS interface. Please use Internet Explorer 8+, Google Chrome or Mozilla Firefox.</span></p>').css("z-index",$(".ss-loading-screen").css("z-index")+1),
return null===i||isSameUrl(r,i)&&isSameUrl(o,i)||window.ss.router.show(i,{id:(new Date).getTime()+String(Math.random()).replace(/\D/g,""),pjax:t.getResponseHeader("X-Pjax")?t.getResponseHeader("X-Pjax"):n.headers["X-Pjax"]
}),t.getResponseHeader("X-Reauthenticate")?void $(".cms-container").showLoginDialog():(0!==t.status&&a&&$.inArray(a,l)===-1&&statusMessage(decodeURIComponent(a),s),void ajaxCompleteEvent(this))}),$(".cms-container").entwine({
StateChangeXHR:null,FragmentXHR:{},StateChangeCount:0,LayoutOptions:{minContentWidth:940,minPreviewWidth:400,mode:"content"},onadd:function r(){return $.browser.msie&&parseInt($.browser.version,10)<8?($(".ss-loading-screen").append('<p class="ss-loading-incompat-warning"><span class="notice">Your browser is not compatible with the CMS interface. Please use Internet Explorer 8+, Google Chrome or Mozilla Firefox.</span></p>').css("z-index",$(".ss-loading-screen").css("z-index")+1),
$(".loading-animation").remove(),void this._super()):(this.redraw(),$(".ss-loading-screen").hide(),$("body").removeClass("loading"),$(window).unbind("resize",positionLoadingSpinner),this.restoreTabState(),
void this._super())},onwindowresize:function r(){this.redraw()},"from .cms-panel":{ontoggle:function a(){this.redraw()}},"from .cms-container":{onaftersubmitform:function o(){this.redraw()}},updateLayoutOptions:function s(e){
void this._super())},onwindowresize:function i(){this.redraw()},"from .cms-panel":{ontoggle:function o(){this.redraw()}},"from .cms-container":{onaftersubmitform:function a(){this.redraw()}},updateLayoutOptions:function s(e){
var t=this.getLayoutOptions(),n=!1
for(var i in e)t[i]!==e[i]&&(t[i]=e[i],n=!0)
for(var r in e)t[r]!==e[r]&&(t[r]=e[r],n=!0)
n&&this.redraw()},clearViewMode:function l(){this.removeClass("cms-container--split-mode"),this.removeClass("cms-container--preview-mode"),this.removeClass("cms-container--content-mode")},splitViewMode:function u(){
this.updateLayoutOptions({mode:"split"})},contentViewMode:function c(){this.updateLayoutOptions({mode:"content"})},previewMode:function d(){this.updateLayoutOptions({mode:"preview"})},RedrawSuppression:!1,
redraw:function f(){if(!this.getRedrawSuppression()){window.debug&&console.log("redraw",this.attr("class"),this.get(0))
@ -1054,89 +1050,89 @@ e||(this.find(".cms-panel-layout").redraw(),this.find(".cms-content-fields[data-
}},setProperMode:function p(){var e=this.getLayoutOptions(),t=e.mode
this.clearViewMode()
var n=this.find(".cms-content"),i=this.find(".cms-preview")
if(n.css({"min-width":0}),i.css({"min-width":0}),n.width()+i.width()>=e.minContentWidth+e.minPreviewWidth)n.css({"min-width":e.minContentWidth}),i.css({"min-width":e.minPreviewWidth}),i.trigger("enable")
else if(i.trigger("disable"),"split"==t)return i.trigger("forcecontent"),!0
return this.addClass("cms-container--"+t+"-mode"),!1},checkCanNavigate:function h(e){var t=this._findFragments(e||["Content"]),n=t.find(":data(changetracker)").add(t.filter(":data(changetracker)")),i=!0
var n=this.find(".cms-content"),r=this.find(".cms-preview")
if(n.css({"min-width":0}),r.css({"min-width":0}),n.width()+r.width()>=e.minContentWidth+e.minPreviewWidth)n.css({"min-width":e.minContentWidth}),r.css({"min-width":e.minPreviewWidth}),r.trigger("enable")
else if(r.trigger("disable"),"split"==t)return r.trigger("forcecontent"),!0
return this.addClass("cms-container--"+t+"-mode"),!1},checkCanNavigate:function h(e){var t=this._findFragments(e||["Content"]),n=t.find(":data(changetracker)").add(t.filter(":data(changetracker)")),r=!0
return!n.length||(n.each(function(){$(this).confirmUnsavedChanges()||(i=!1)}),i)},loadPanel:function m(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i=arguments[3],r=arguments.length<=4||void 0===arguments[4]?document.URL:arguments[4]
return!n.length||(n.each(function(){$(this).confirmUnsavedChanges()||(r=!1)}),r)},loadPanel:function m(e){var t=arguments.length<=1||void 0===arguments[1]?"":arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r=arguments[3],i=arguments.length<=4||void 0===arguments[4]?document.URL:arguments[4]
this.checkCanNavigate(n.pjax?n.pjax.split(","):["Content"])&&(this.saveTabState(),n.__forceReferer=r,i&&(n.__forceReload=1+Math.random()),window.ss.router.show(e,n))},reloadCurrentPanel:function g(){this.loadPanel(document.URL,null,null,!0)
this.checkCanNavigate(n.pjax?n.pjax.split(","):["Content"])&&(this.saveTabState(),n.__forceReferer=i,r&&(n.__forceReload=1+Math.random()),window.ss.router.show(e,n))},reloadCurrentPanel:function g(){this.loadPanel(document.URL,null,null,!0)
},submitForm:function v(e,t,n,i){var r=this
},submitForm:function y(e,t,n,r){var i=this
t||(t=this.find(".btn-toolbar :submit[name=action_save]")),t||(t=this.find(".btn-toolbar :submit:first")),e.trigger("beforesubmitform"),this.trigger("submitform",{form:e,button:t}),$(t).addClass("btn--loading loading"),
$(t).is("button")&&($(t).data("original-text",$(t).text()),$(t).text(""),$(t).append($('<div class="btn__loading-icon"><span class="btn__circle btn__circle--1" /><span class="btn__circle btn__circle--2" /><span class="btn__circle btn__circle--3" /></div>')),
$(t).css($(t).outerWidth()+"px"))
var a=e.validate(),o=function l(){$(t).removeClass("btn--loading loading"),$(t).find(".btn__loading-icon").remove(),$(t).css("width","auto"),$(t).text($(t).data("original-text"))}
"undefined"==typeof a||a||(statusMessage("Validation failed.","bad"),o())
var o=e.validate(),a=function l(){$(t).removeClass("btn--loading loading"),$(t).find(".btn__loading-icon").remove(),$(t).css("width","auto"),$(t).text($(t).data("original-text"))}
"undefined"==typeof o||o||(statusMessage("Validation failed.","bad"),a())
var s=e.serializeArray()
return s.push({name:$(t).attr("name"),value:"1"}),s.push({name:"BackURL",value:document.URL.replace(/\/$/,"")}),this.saveTabState(),jQuery.ajax(jQuery.extend({headers:{"X-Pjax":"CurrentForm,Breadcrumbs"
},url:e.attr("action"),data:s,type:"POST",complete:function u(){o()},success:function c(t,i,a){o(),e.removeClass("changed"),n&&n(t,i,a)
var l=r.handleAjaxResponse(t,i,a)
l&&l.filter("form").trigger("aftersubmitform",{status:i,xhr:a,formData:s})}},i)),!1},LastState:null,PauseState:!1,handleStateChange:function y(e){var t=arguments.length<=1||void 0===arguments[1]?window.history.state:arguments[1]
},url:e.attr("action"),data:s,type:"POST",complete:function u(){a()},success:function c(t,r,o){a(),e.removeClass("changed"),n&&n(t,r,o)
var l=i.handleAjaxResponse(t,r,o)
l&&l.filter("form").trigger("aftersubmitform",{status:r,xhr:o,formData:s})}},r)),!1},LastState:null,PauseState:!1,handleStateChange:function b(e){var t=arguments.length<=1||void 0===arguments[1]?window.history.state:arguments[1]
if(!this.getPauseState()){this.getStateChangeXHR()&&this.getStateChangeXHR().abort()
var n=this,i=t.pjax||"Content",r={},a=i.split(","),o=this._findFragments(a)
var n=this,r=t.pjax||"Content",i={},o=r.split(","),a=this._findFragments(o)
if(this.setStateChangeCount(this.getStateChangeCount()+1),!this.checkCanNavigate()){var s=this.getLastState()
return this.setPauseState(!0),s&&s.path?window.ss.router.show(s.path):window.ss.router.back(),void this.setPauseState(!1)}if(this.setLastState(t),o.length<a.length&&(i="Content",a=["Content"],o=this._findFragments(a)),
this.trigger("beforestatechange",{state:t,element:o}),r["X-Pjax"]=i,"undefined"!=typeof t.__forceReferer){var l=t.__forceReferer
try{l=decodeURI(l)}catch(u){}finally{r["X-Backurl"]=encodeURI(l)}}o.addClass("loading")
var c=$.ajax({headers:r,url:t.path||document.URL}).done(function(e,i,r){var a=n.handleAjaxResponse(e,i,r,t)
n.trigger("afterstatechange",{data:e,status:i,xhr:r,element:a,state:t})}).always(function(){n.setStateChangeXHR(null),o.removeClass("loading")})
return this.setStateChangeXHR(c),c}},loadFragment:function b(e,t){var n=this,i,r={},a=$("base").attr("href"),o=this.getFragmentXHR()
return"undefined"!=typeof o[t]&&null!==o[t]&&(o[t].abort(),o[t]=null),e=$.path.isAbsoluteUrl(e)?e:$.path.makeUrlAbsolute(e,a),r["X-Pjax"]=t,i=$.ajax({headers:r,url:e,success:function s(e,t,i){var r=n.handleAjaxResponse(e,t,i,null)
return this.setPauseState(!0),s&&s.path?window.ss.router.show(s.path):window.ss.router.back(),void this.setPauseState(!1)}if(this.setLastState(t),a.length<o.length&&(r="Content",o=["Content"],a=this._findFragments(o)),
this.trigger("beforestatechange",{state:t,element:a}),i["X-Pjax"]=r,"undefined"!=typeof t.__forceReferer){var l=t.__forceReferer
try{l=decodeURI(l)}catch(u){}finally{i["X-Backurl"]=encodeURI(l)}}a.addClass("loading")
var c=$.ajax({headers:i,url:t.path||document.URL}).done(function(e,r,i){var o=n.handleAjaxResponse(e,r,i,t)
n.trigger("afterstatechange",{data:e,status:r,xhr:i,element:o,state:t})}).always(function(){n.setStateChangeXHR(null),a.removeClass("loading")})
return this.setStateChangeXHR(c),c}},loadFragment:function v(e,t){var n=this,r,i={},o=$("base").attr("href"),a=this.getFragmentXHR()
return"undefined"!=typeof a[t]&&null!==a[t]&&(a[t].abort(),a[t]=null),e=$.path.isAbsoluteUrl(e)?e:$.path.makeUrlAbsolute(e,o),i["X-Pjax"]=t,r=$.ajax({headers:i,url:e,success:function s(e,t,r){var i=n.handleAjaxResponse(e,t,r,null)
n.trigger("afterloadfragment",{data:e,status:t,xhr:i,elements:r})},error:function l(e,t,i){n.trigger("loadfragmenterror",{xhr:e,status:t,error:i})},complete:function u(){var e=n.getFragmentXHR()
"undefined"!=typeof e[t]&&null!==e[t]&&(e[t]=null)}}),o[t]=i,i},handleAjaxResponse:function _(e,t,n,i){var r=this,a,o,s,l,u
if(n.getResponseHeader("X-Reload")&&n.getResponseHeader("X-ControllerURL")){var c=$("base").attr("href"),d=n.getResponseHeader("X-ControllerURL"),a=$.path.isAbsoluteUrl(d)?d:$.path.makeUrlAbsolute(d,c)
n.trigger("afterloadfragment",{data:e,status:t,xhr:r,elements:i})},error:function l(e,t,r){n.trigger("loadfragmenterror",{xhr:e,status:t,error:r})},complete:function u(){var e=n.getFragmentXHR()
"undefined"!=typeof e[t]&&null!==e[t]&&(e[t]=null)}}),a[t]=r,r},handleAjaxResponse:function _(e,t,n,r){var i=this,o,a,s,l,u
if(n.getResponseHeader("X-Reload")&&n.getResponseHeader("X-ControllerURL")){var c=$("base").attr("href"),d=n.getResponseHeader("X-ControllerURL"),o=$.path.isAbsoluteUrl(d)?d:$.path.makeUrlAbsolute(d,c)
return void(document.location.href=a)}if(e){var f=n.getResponseHeader("X-Title")
return void(document.location.href=o)}if(e){var f=n.getResponseHeader("X-Title")
f&&(document.title=decodeURIComponent(f.replace(/\+/g," ")))
var p={},h
n.getResponseHeader("Content-Type").match(/^((text)|(application))\/json[ \t]*;?/i)?p=e:(l=document.createDocumentFragment(),jQuery.clean([e],document,l,[]),u=$(jQuery.merge([],l.childNodes)),s="Content",
u.is("form")&&!u.is("[data-pjax-fragment~=Content]")&&(s="CurrentForm"),p[s]=u),this.setRedrawSuppression(!0)
try{$.each(p,function(e,t){var n=$("[data-pjax-fragment]").filter(function(){return $.inArray(e,$(this).data("pjaxFragment").split(" "))!=-1}),i=$(t)
if(h?h.add(i):h=i,i.find(".cms-container").length)throw'Content loaded via ajax is not allowed to contain tags matching the ".cms-container" selector to avoid infinite loops'
var r=n.attr("style"),a=n.parent(),o=["east","west","center","north","south","column-hidden"],s=n.attr("class"),l=[]
s&&(l=$.grep(s.split(" "),function(e){return $.inArray(e,o)>=0})),i.removeClass(o.join(" ")).addClass(l.join(" ")),r&&i.attr("style",r)
var u=i.find("style").detach()
u.length&&$(document).find("head").append(u),n.replaceWith(i)})
try{$.each(p,function(e,t){var n=$("[data-pjax-fragment]").filter(function(){return $.inArray(e,$(this).data("pjaxFragment").split(" "))!=-1}),r=$(t)
if(h?h.add(r):h=r,r.find(".cms-container").length)throw'Content loaded via ajax is not allowed to contain tags matching the ".cms-container" selector to avoid infinite loops'
var i=n.attr("style"),o=n.parent(),a=["east","west","center","north","south","column-hidden"],s=n.attr("class"),l=[]
s&&(l=$.grep(s.split(" "),function(e){return $.inArray(e,a)>=0})),r.removeClass(a.join(" ")).addClass(l.join(" ")),i&&r.attr("style",i)
var u=r.find("style").detach()
u.length&&$(document).find("head").append(u),n.replaceWith(r)})
var m=h.filter("form")
m.hasClass("cms-tabset")&&m.removeClass("cms-tabset").addClass("cms-tabset")}finally{this.setRedrawSuppression(!1)}return this.redraw(),this.restoreTabState(i&&"undefined"!=typeof i.tabState?i.tabState:null),
m.hasClass("cms-tabset")&&m.removeClass("cms-tabset").addClass("cms-tabset")}finally{this.setRedrawSuppression(!1)}return this.redraw(),this.restoreTabState(r&&"undefined"!=typeof r.tabState?r.tabState:null),
h}},_findFragments:function w(e){return $("[data-pjax-fragment]").filter(function(){var t,n=$(this).data("pjaxFragment").split(" ")
for(t in e)if($.inArray(e[t],n)!=-1)return!0
return!1})},refresh:function C(){$(window).trigger("statechange"),$(this).redraw()},saveTabState:function T(){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var e=[],t=this._tabStateUrl()
if(this.find(".cms-tabset,.ss-tabset").each(function(t,n){var i=$(n).attr("id")
i&&$(n).data("tabs")&&($(n).data("ignoreTabState")||$(n).getIgnoreTabState()||e.push({id:i,selected:$(n).tabs("option","selected")}))}),e){var n="tabs-"+t
try{window.sessionStorage.setItem(n,JSON.stringify(e))}catch(i){if(i.code===DOMException.QUOTA_EXCEEDED_ERR&&0===window.sessionStorage.length)return
throw i}}}},restoreTabState:function E(e){var t=this,n=this._tabStateUrl(),i="undefined"!=typeof window.sessionStorage&&window.sessionStorage,r=i?window.sessionStorage.getItem("tabs-"+n):null,a=!!r&&JSON.parse(r)
if(this.find(".cms-tabset,.ss-tabset").each(function(t,n){var r=$(n).attr("id")
r&&$(n).data("tabs")&&($(n).data("ignoreTabState")||$(n).getIgnoreTabState()||e.push({id:r,selected:$(n).tabs("option","selected")}))}),e){var n="tabs-"+t
try{window.sessionStorage.setItem(n,JSON.stringify(e))}catch(r){if(r.code===DOMException.QUOTA_EXCEEDED_ERR&&0===window.sessionStorage.length)return
throw r}}}},restoreTabState:function P(e){var t=this,n=this._tabStateUrl(),r="undefined"!=typeof window.sessionStorage&&window.sessionStorage,i=r?window.sessionStorage.getItem("tabs-"+n):null,o=!!i&&JSON.parse(i)
this.find(".cms-tabset, .ss-tabset").each(function(){var n,i,r=$(this),o=r.attr("id"),s=r.children("ul").children("li.ss-tabs-force-active")
r.data("tabs")&&(r.tabs("refresh"),s.length?n=s.first().index():e&&e[o]?(i=r.find(e[o].tabSelector),i.length&&(n=i.index())):a&&$.each(a,function(e,t){o==t.id&&(n=t.selected)}),null!==n&&(r.tabs("option","active",n),
t.trigger("tabstaterestored")))})},clearTabState:function P(e){if("undefined"!=typeof window.sessionStorage){var t=window.sessionStorage
this.find(".cms-tabset, .ss-tabset").each(function(){var n,r,i=$(this),a=i.attr("id"),s=i.children("ul").children("li.ss-tabs-force-active")
i.data("tabs")&&(i.tabs("refresh"),s.length?n=s.first().index():e&&e[a]?(r=i.find(e[a].tabSelector),r.length&&(n=r.index())):o&&$.each(o,function(e,t){a==t.id&&(n=t.selected)}),null!==n&&(i.tabs("option","active",n),
t.trigger("tabstaterestored")))})},clearTabState:function E(e){if("undefined"!=typeof window.sessionStorage){var t=window.sessionStorage
if(e)t.removeItem("tabs-"+e)
else for(var n=0;n<t.length;n++)t.key(n).match(/^tabs-/)&&t.removeItem(t.key(n))}},clearCurrentTabState:function O(){this.clearTabState(this._tabStateUrl())},_tabStateUrl:function S(){return window.location.href.replace(/\?.*/,"").replace(/#.*/,"").replace($("base").attr("href"),"")
else for(var n=0;n<t.length;n++)t.key(n).match(/^tabs-/)&&t.removeItem(t.key(n))}},clearCurrentTabState:function O(){this.clearTabState(this._tabStateUrl())},_tabStateUrl:function k(){return window.location.href.replace(/\?.*/,"").replace(/#.*/,"").replace($("base").attr("href"),"")
},showLoginDialog:function k(){var e=$("body").data("member-tempid"),t=$(".leftandmain-logindialog"),n="CMSSecurity/login"
},showLoginDialog:function S(){var e=$("body").data("member-tempid"),t=$(".leftandmain-logindialog"),n="CMSSecurity/login"
t.length&&t.remove(),n=$.path.addSearchParams(n,{tempid:e,BackURL:window.location.href}),t=$('<div class="leftandmain-logindialog"></div>'),t.attr("id",(new Date).getTime()),t.data("url",n),$("body").append(t)
}}),$(".leftandmain-logindialog").entwine({onmatch:function j(){this._super(),this.ssdialog({iframeUrl:this.data("url"),dialogClass:"leftandmain-logindialog-dialog",autoOpen:!0,minWidth:500,maxWidth:500,
minHeight:370,maxHeight:400,closeOnEscape:!1,open:function e(){$(".ui-widget-overlay").addClass("leftandmain-logindialog-overlay")},close:function t(){$(".ui-widget-overlay").removeClass("leftandmain-logindialog-overlay")
}})},onunmatch:function x(){this._super()},open:function R(){this.ssdialog("open")},close:function I(){this.ssdialog("close")},toggle:function A(e){this.is(":visible")?this.close():this.open()},reauthenticate:function F(e){
}})},onunmatch:function x(){this._super()},open:function R(){this.ssdialog("open")},close:function I(){this.ssdialog("close")},toggle:function A(e){this.is(":visible")?this.close():this.open()},reauthenticate:function D(e){
"undefined"!=typeof e.SecurityID&&$(":input[name=SecurityID]").val(e.SecurityID),"undefined"!=typeof e.TempID&&$("body").data("member-tempid",e.TempID),this.close()}}),$("form.loading,.cms-content.loading,.cms-content-fields.loading,.cms-content-view.loading").entwine({
onmatch:function D(){this.append('<div class="cms-content-loading-overlay ui-widget-overlay-light"></div><div class="cms-content-loading-spinner"></div>'),this._super()},onunmatch:function M(){this.find(".cms-content-loading-overlay,.cms-content-loading-spinner").remove(),
onmatch:function F(){this.append('<div class="cms-content-loading-overlay ui-widget-overlay-light"></div><div class="cms-content-loading-spinner"></div>'),this._super()},onunmatch:function M(){this.find(".cms-content-loading-overlay,.cms-content-loading-spinner").remove(),
this._super()}}),$(".cms .cms-panel-link").entwine({onclick:function N(e){if($(this).hasClass("external-link"))return void e.stopPropagation()
var t=this.attr("href"),n=t&&!t.match(/^#/)?t:this.data("href"),i={pjax:this.data("pjaxTarget")}
$(".cms-container").loadPanel(n,null,i),e.preventDefault()}}),$(".cms .ss-ui-button-ajax").entwine({onclick:function onclick(e){$(this).removeClass("ui-button-text-only"),$(this).addClass("ss-ui-button-loading ui-button-text-icons")
var t=this.attr("href"),n=t&&!t.match(/^#/)?t:this.data("href"),r={pjax:this.data("pjaxTarget")}
$(".cms-container").loadPanel(n,null,r),e.preventDefault()}}),$(".cms .ss-ui-button-ajax").entwine({onclick:function onclick(e){$(this).removeClass("ui-button-text-only"),$(this).addClass("ss-ui-button-loading ui-button-text-icons")
var loading=$(this).find(".ss-ui-loading-icon")
@ -1145,24 +1141,24 @@ var href=this.attr("href"),url=href?href:this.data("href")
jQuery.ajax({url:url,complete:function complete(xmlhttp,status){var msg=xmlhttp.getResponseHeader("X-Status")?xmlhttp.getResponseHeader("X-Status"):xmlhttp.responseText
try{"undefined"!=typeof msg&&null!==msg&&eval(msg)}catch(e){}loading.hide(),$(".cms-container").refresh(),$(this).removeClass("ss-ui-button-loading ui-button-text-icons"),$(this).addClass("ui-button-text-only")
},dataType:"html"}),e.preventDefault()}}),$(".cms .ss-ui-dialog-link").entwine({UUID:null,onmatch:function U(){this._super(),this.setUUID((new Date).getTime())},onunmatch:function L(){this._super()},onclick:function B(){
},dataType:"html"}),e.preventDefault()}}),$(".cms .ss-ui-dialog-link").entwine({UUID:null,onmatch:function L(){this._super(),this.setUUID((new Date).getTime())},onunmatch:function U(){this._super()},onclick:function B(){
this._super()
var e=this,t="ss-ui-dialog-"+this.getUUID(),n=$("#"+t)
n.length||(n=$('<div class="ss-ui-dialog" id="'+t+'" />'),$("body").append(n))
var i=this.data("popupclass")?this.data("popupclass"):""
return n.ssdialog({iframeUrl:this.attr("href"),autoOpen:!0,dialogExtraClass:i}),!1}}),$(".cms .field.date input.text").entwine({onmatch:function H(){var e=$(this).parents(".field.date:first"),t=e.data()
var r=this.data("popupclass")?this.data("popupclass"):""
return n.ssdialog({iframeUrl:this.attr("href"),autoOpen:!0,dialogExtraClass:r}),!1}}),$(".cms .field.date input.text").entwine({onmatch:function H(){var e=$(this).parents(".field.date:first"),t=e.data()
return t.showcalendar?(t.showOn="button",t.locale&&$.datepicker.regional[t.locale]&&(t=$.extend(t,$.datepicker.regional[t.locale],{})),this.prop("disabled")||this.prop("readonly")||$(this).datepicker(t),
void this._super()):void this._super()},onunmatch:function q(){this._super()}}),$(".cms .field.dropdown select, .cms .field select[multiple], .form__fieldgroup-item select.dropdown").entwine({onmatch:function V(){
return this.is(".no-chosen")?void this._super():(this.data("placeholder")||this.data("placeholder"," "),this.removeClass("has-chosen").chosen("destroy"),this.siblings(".chosen-container").remove(),applyChosen(this),
void this._super())},onunmatch:function G(){this._super()}}),$(".cms-panel-layout").entwine({redraw:function z(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))}}),$(".cms .grid-field").entwine({
showDetailView:function W(e){var t=window.location.search.replace(/^\?/,"")
t&&(e=$.path.addSearchParams(e,t)),$(".cms-container").loadPanel(e)}}),$(".cms-search-form").entwine({onsubmit:function X(e){var t,n
showDetailView:function X(e){var t=window.location.search.replace(/^\?/,"")
t&&(e=$.path.addSearchParams(e,t)),$(".cms-container").loadPanel(e)}}),$(".cms-search-form").entwine({onsubmit:function W(e){var t,n
t=this.find(":input:not(:submit)").filter(function(){var e=$.grep($(this).fieldValue(),function(e){return e})
return e.length}),n=this.attr("action"),t.length&&(n=$.path.addSearchParams(n,t.serialize().replace("+","%20")))
var i=this.closest(".cms-container")
return i.find(".cms-edit-form").tabs("select",0),i.loadPanel(n,"",{},!0),!1}}),$(".cms-search-form button[type=reset], .cms-search-form input[type=reset]").entwine({onclick:function Q(e){e.preventDefault()
var r=this.closest(".cms-container")
return r.find(".cms-edit-form").tabs("select",0),r.loadPanel(n,"",{},!0),!1}}),$(".cms-search-form button[type=reset], .cms-search-form input[type=reset]").entwine({onclick:function Q(e){e.preventDefault()
var t=$(this).parents("form")
@ -1173,33 +1169,33 @@ var e=this,t=this.data("url")
if(!t)throw'Elements of class .cms-panel-deferred need a "data-url" attribute'
this._super(),this.children().length||(this.data("deferredNoCache")||"undefined"==typeof window._panelDeferredCache[t]?(this.addClass("loading"),$.ajax({url:t,complete:function n(){e.removeClass("loading")
},success:function i(t,n,r){e.html(t)}})):this.html(window._panelDeferredCache[t]))}}),$(".cms-tabset").entwine({onadd:function Z(){this.redrawTabs(),this._super()},onremove:function ee(){this.data("tabs")&&this.tabs("destroy"),
},success:function r(t,n,i){e.html(t)}})):this.html(window._panelDeferredCache[t]))}}),$(".cms-tabset").entwine({onadd:function Z(){this.redrawTabs(),this._super()},onremove:function ee(){this.data("tabs")&&this.tabs("destroy"),
this._super()},redrawTabs:function te(){this.rewriteHashlinks()
var e=this.attr("id"),t=this.find("ul:first .ui-tabs-active")
this.data("tabs")||this.tabs({active:t.index()!=-1?t.index():0,beforeLoad:function n(e,t){return!1},beforeActivate:function i(e,t){var n=t.oldTab.find(".cms-panel-link")
if(n&&1===n.length)return!1},activate:function r(e,t){var n=$(this).closest("form").find(".btn-toolbar")
this.data("tabs")||this.tabs({active:t.index()!=-1?t.index():0,beforeLoad:function n(e,t){return!1},beforeActivate:function r(e,t){var n=t.oldTab.find(".cms-panel-link")
if(n&&1===n.length)return!1},activate:function i(e,t){var n=$(this).closest("form").find(".btn-toolbar")
$(t.newTab).closest("li").hasClass("readonly")?n.fadeOut():n.show()}}),this.trigger("afterredrawtabs")},rewriteHashlinks:function ne(){$(this).find("ul a").each(function(){if($(this).attr("href")){var e=$(this).attr("href").match(/#.*/)
e&&$(this).attr("href",document.location.href.replace(/#.*/,"")+e[0])}})}}),$("#filters-button").entwine({onmatch:function ie(){this._super(),this.data("collapsed",!0),this.data("animating",!1)},onunmatch:function re(){
this._super()},showHide:function ae(){var e=this,t=$(".cms-content-filters").first(),n=this.data("collapsed")
n?(this.addClass("active"),t.css("display","block")):(this.removeClass("active"),t.css("display","")),e.data("collapsed",!n)},onclick:function oe(){this.showHide()}})})
e&&$(this).attr("href",document.location.href.replace(/#.*/,"")+e[0])}})}}),$("#filters-button").entwine({onmatch:function re(){this._super(),this.data("collapsed",!0),this.data("animating",!1)},onunmatch:function ie(){
this._super()},showHide:function oe(){var e=this,t=$(".cms-content-filters").first(),n=this.data("collapsed")
n?(this.addClass("active"),t.css("display","block")):(this.removeClass("active"),t.css("display","")),e.data("collapsed",!n)},onclick:function ae(){this.showHide()}})})
var statusMessage=function e(t,n){t=jQuery("<div/>").text(t).html(),jQuery.noticeAdd({text:t,type:n,stayTime:5e3,inEffect:{left:"0",opacity:"show"}})}}).call(exports,__webpack_require__(1))},function(e,t,n){
"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".ss-tabset.ss-ui-action-tabset").entwine({IgnoreTabState:!0,onadd:function t(){this._super(),this.tabs({collapsible:!0,active:!1})},onremove:function n(){var t=e(".cms-container").find("iframe")
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".ss-tabset.ss-ui-action-tabset").entwine({IgnoreTabState:!0,onadd:function t(){this._super(),this.tabs({collapsible:!0,active:!1})},onremove:function n(){var t=e(".cms-container").find("iframe")
t.each(function(t,n){try{e(n).contents().off("click.ss-ui-action-tabset")}catch(i){console.warn("Unable to access iframe, possible https mis-match")}}),e(document).off("click.ss-ui-action-tabset"),this._super()
t.each(function(t,n){try{e(n).contents().off("click.ss-ui-action-tabset")}catch(r){console.warn("Unable to access iframe, possible https mis-match")}}),e(document).off("click.ss-ui-action-tabset"),this._super()
},ontabsbeforeactivate:function i(e,t){this.riseUp(e,t)},onclick:function r(e,t){this.attachCloseHandler(e,t)},attachCloseHandler:function a(t,n){var i=this,r=e(".cms-container").find("iframe"),a
a=function o(t){var n,r
n=e(t.target).closest(".ss-ui-action-tabset .ui-tabs-panel"),e(t.target).closest(i).length||n.length||(i.tabs("option","active",!1),r=e(".cms-container").find("iframe"),r.each(function(t,n){e(n).contents().off("click.ss-ui-action-tabset",a)
},ontabsbeforeactivate:function r(e,t){this.riseUp(e,t)},onclick:function i(e,t){this.attachCloseHandler(e,t)},attachCloseHandler:function o(t,n){var r=this,i=e(".cms-container").find("iframe"),o
o=function a(t){var n,i
n=e(t.target).closest(".ss-ui-action-tabset .ui-tabs-panel"),e(t.target).closest(r).length||n.length||(r.tabs("option","active",!1),i=e(".cms-container").find("iframe"),i.each(function(t,n){e(n).contents().off("click.ss-ui-action-tabset",o)
}),e(document).off("click.ss-ui-action-tabset",a))},e(document).on("click.ss-ui-action-tabset",a),r.length>0&&r.each(function(t,n){e(n).contents().on("click.ss-ui-action-tabset",a)})},riseUp:function o(t,n){
var i,r,a,o,s,l,u,c,d
return i=e(this).find(".ui-tabs-panel").outerHeight(),r=e(this).find(".ui-tabs-nav").outerHeight(),a=e(window).height()+e(document).scrollTop()-r,o=e(this).find(".ui-tabs-nav").offset().top,s=n.newPanel,
l=n.newTab,o+i>=a&&o-i>0?(this.addClass("rise-up"),null!==l.position()&&(u=-s.outerHeight(),c=s.parents(".toolbar--south"),c&&(d=l.offset().top-c.offset().top,u-=d),e(s).css("top",u+"px"))):(this.removeClass("rise-up"),
}),e(document).off("click.ss-ui-action-tabset",o))},e(document).on("click.ss-ui-action-tabset",o),i.length>0&&i.each(function(t,n){e(n).contents().on("click.ss-ui-action-tabset",o)})},riseUp:function a(t,n){
var r,i,o,a,s,l,u,c,d
return r=e(this).find(".ui-tabs-panel").outerHeight(),i=e(this).find(".ui-tabs-nav").outerHeight(),o=e(window).height()+e(document).scrollTop()-i,a=e(this).find(".ui-tabs-nav").offset().top,s=n.newPanel,
l=n.newTab,a+r>=o&&a-r>0?(this.addClass("rise-up"),null!==l.position()&&(u=-s.outerHeight(),c=s.parents(".toolbar--south"),c&&(d=l.offset().top-c.offset().top,u-=d),e(s).css("top",u+"px"))):(this.removeClass("rise-up"),
null!==l.position()&&e(s).css("bottom","100%")),!1}}),e(".cms-content-actions .ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function s(t,n){this._super(t,n),e(n.newPanel).length>0&&e(n.newPanel).css("left",n.newTab.position().left+"px")
}}),e(".cms-actions-row.ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function l(t,n){this._super(t,n),e(this).closest(".ss-ui-action-tabset").removeClass("tabset-open tabset-open-last")
@ -1212,92 +1208,92 @@ right:"0px"}),e(n.newPanel).parent().addClass("tabset-open-last")):(e(n.newPanel
}},ontabsbeforeactivate:function d(t,n){this._super(t,n),e(n.newPanel).css({left:"auto",right:"auto"}),e(n.newPanel).length>0&&e(n.newPanel).parent().addClass("tabset-open")}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e.entwine.warningLevel=e.entwine.WARN_LEVEL_BESTPRACTISE,e(".cms-panel").entwine({WidthExpanded:null,WidthCollapsed:null,canSetCookie:function t(){return void 0!==e.cookie&&void 0!==this.attr("id")
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e.entwine.warningLevel=e.entwine.WARN_LEVEL_BESTPRACTISE,e(".cms-panel").entwine({WidthExpanded:null,WidthCollapsed:null,canSetCookie:function t(){return void 0!==e.cookie&&void 0!==this.attr("id")
},getPersistedCollapsedState:function n(){var t,n
return this.canSetCookie()&&(n=e.cookie("cms-panel-collapsed-"+this.attr("id")),void 0!==n&&null!==n&&(t="true"===n)),t},setPersistedCollapsedState:function i(t){this.canSetCookie()&&e.cookie("cms-panel-collapsed-"+this.attr("id"),t,{
path:"/",expires:31})},clearPersistedCollapsedState:function r(){this.canSetCookie()&&e.cookie("cms-panel-collapsed-"+this.attr("id"),"",{path:"/",expires:-1})},getInitialCollapsedState:function a(){var e=this.getPersistedCollapsedState()
return this.canSetCookie()&&(n=e.cookie("cms-panel-collapsed-"+this.attr("id")),void 0!==n&&null!==n&&(t="true"===n)),t},setPersistedCollapsedState:function r(t){this.canSetCookie()&&e.cookie("cms-panel-collapsed-"+this.attr("id"),t,{
path:"/",expires:31})},clearPersistedCollapsedState:function i(){this.canSetCookie()&&e.cookie("cms-panel-collapsed-"+this.attr("id"),"",{path:"/",expires:-1})},getInitialCollapsedState:function o(){var e=this.getPersistedCollapsedState()
return void 0===e&&(e=this.hasClass("collapsed")),e},onadd:function o(){var t,n
return void 0===e&&(e=this.hasClass("collapsed")),e},onadd:function a(){var t,n
if(!this.find(".cms-panel-content").length)throw new Exception('Content panel for ".cms-panel" not found')
this.find(".cms-panel-toggle").length||(n=e("<div class='toolbar toolbar--south cms-panel-toggle'></div>").append('<a class="toggle-expand" href="#" data-toggle="tooltip" title="'+i18n._t("LeftAndMain.EXPANDPANEL","Expand Panel")+'"><span>&raquo;</span></a>').append('<a class="toggle-collapse" href="#" data-toggle="tooltip" title="'+i18n._t("LeftAndMain.COLLAPSEPANEL","Collapse Panel")+'"><span>&laquo;</span></a>'),
this.append(n)),this.setWidthExpanded(this.find(".cms-panel-content").innerWidth()),t=this.find(".cms-panel-content-collapsed"),this.setWidthCollapsed(t.length?t.innerWidth():this.find(".toggle-expand").innerWidth()),
this.togglePanel(!this.getInitialCollapsedState(),!0,!1),this._super()},togglePanel:function s(e,t,n){var i,r
t||(this.trigger("beforetoggle.sspanel",e),this.trigger(e?"beforeexpand":"beforecollapse")),this.toggleClass("collapsed",!e),i=e?this.getWidthExpanded():this.getWidthCollapsed(),this.width(i),r=this.find(".cms-panel-content-collapsed"),
r.length&&(this.find(".cms-panel-content")[e?"show":"hide"](),this.find(".cms-panel-content-collapsed")[e?"hide":"show"]()),n!==!1&&this.setPersistedCollapsedState(!e),this.trigger("toggle",e),this.trigger(e?"expand":"collapse")
this.togglePanel(!this.getInitialCollapsedState(),!0,!1),this._super()},togglePanel:function s(e,t,n){var r,i
t||(this.trigger("beforetoggle.sspanel",e),this.trigger(e?"beforeexpand":"beforecollapse")),this.toggleClass("collapsed",!e),r=e?this.getWidthExpanded():this.getWidthCollapsed(),this.width(r),i=this.find(".cms-panel-content-collapsed"),
i.length&&(this.find(".cms-panel-content")[e?"show":"hide"](),this.find(".cms-panel-content-collapsed")[e?"hide":"show"]()),n!==!1&&this.setPersistedCollapsedState(!e),this.trigger("toggle",e),this.trigger(e?"expand":"collapse")
},expandPanel:function l(e){(e||this.hasClass("collapsed"))&&this.togglePanel(!0)},collapsePanel:function u(e){!e&&this.hasClass("collapsed")||this.togglePanel(!1)}}),e(".cms-panel.collapsed .cms-panel-toggle").entwine({
onclick:function c(e){this.expandPanel(),e.preventDefault()}}),e(".cms-panel *").entwine({getPanel:function d(){return this.parents(".cms-panel:first")}}),e(".cms-panel .toggle-expand").entwine({onclick:function f(e){
e.preventDefault(),e.stopPropagation(),this.getPanel().expandPanel(),this._super(e)}}),e(".cms-panel .toggle-collapse").entwine({onclick:function p(e){e.preventDefault(),e.stopPropagation(),this.getPanel().collapsePanel(),
this._super(e)}}),e(".cms-content-tools.collapsed").entwine({onclick:function h(e){this.expandPanel(),this._super(e)}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss.tree",function(e){e(".cms-tree").entwine({Hints:null,IsUpdatingTree:!1,IsLoaded:!1,onadd:function t(){if(this._super(),!e.isNumeric(this.data("jstree_instance_id"))){var t=this.attr("data-hints")
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss.tree",function(e){e(".cms-tree").entwine({Hints:null,IsUpdatingTree:!1,IsLoaded:!1,onadd:function t(){if(this._super(),!e.isNumeric(this.data("jstree_instance_id"))){var t=this.attr("data-hints")
t&&this.setHints(e.parseJSON(t))
var n=this
this.jstree(this.getTreeConfig()).bind("loaded.jstree",function(t,i){n.setIsLoaded(!0),i.inst._set_settings({html_data:{ajax:{url:n.data("urlTree"),data:function r(t){var i=n.data("searchparams")||[]
return i=e.grep(i,function(e,t){return"ID"!=e.name&&"value"!=e.name}),i.push({name:"ID",value:e(t).data("id")?e(t).data("id"):0}),i.push({name:"ajax",value:1}),i}}}}),n.updateFromEditForm(),n.css("visibility","visible"),
i.inst.hide_checkboxes()}).bind("before.jstree",function(t,i){if("start_drag"==i.func&&(!n.hasClass("draggable")||n.hasClass("multiselect")))return t.stopImmediatePropagation(),!1
if(e.inArray(i.func,["check_node","uncheck_node"])){var r=e(i.args[0]).parents("li:first"),a=r.find("li:not(.disabled)")
if(r.hasClass("disabled")&&0==a)return t.stopImmediatePropagation(),!1}}).bind("move_node.jstree",function(t,i){if(!n.getIsUpdatingTree()){var r=i.rslt.o,a=i.rslt.np,o=i.inst._get_parent(r),s=e(a).data("id")||0,l=e(r).data("id"),u=e.map(e(r).siblings().andSelf(),function(t){
this.jstree(this.getTreeConfig()).bind("loaded.jstree",function(t,r){n.setIsLoaded(!0),r.inst._set_settings({html_data:{ajax:{url:n.data("urlTree"),data:function i(t){var r=n.data("searchparams")||[]
return r=e.grep(r,function(e,t){return"ID"!=e.name&&"value"!=e.name}),r.push({name:"ID",value:e(t).data("id")?e(t).data("id"):0}),r.push({name:"ajax",value:1}),r}}}}),n.updateFromEditForm(),n.css("visibility","visible"),
r.inst.hide_checkboxes()}).bind("before.jstree",function(t,r){if("start_drag"==r.func&&(!n.hasClass("draggable")||n.hasClass("multiselect")))return t.stopImmediatePropagation(),!1
if(e.inArray(r.func,["check_node","uncheck_node"])){var i=e(r.args[0]).parents("li:first"),o=i.find("li:not(.disabled)")
if(i.hasClass("disabled")&&0==o)return t.stopImmediatePropagation(),!1}}).bind("move_node.jstree",function(t,r){if(!n.getIsUpdatingTree()){var i=r.rslt.o,o=r.rslt.np,a=r.inst._get_parent(i),s=e(o).data("id")||0,l=e(i).data("id"),u=e.map(e(i).siblings().andSelf(),function(t){
return e(t).data("id")})
e.ajax({url:e.path.addSearchParams(n.data("urlSavetreenode"),n.data("extraParams")),type:"POST",data:{ID:l,ParentID:s,SiblingIDs:u},success:function c(){e(".cms-edit-form :input[name=ID]").val()==l&&e(".cms-edit-form :input[name=ParentID]").val(s),
n.updateNodesFromServer([l])},statusCode:{403:function d(){e.jstree.rollback(i.rlbk)}}})}}).bind("select_node.jstree check_node.jstree uncheck_node.jstree",function(t,n){e(document).triggerHandler(t,n)
n.updateNodesFromServer([l])},statusCode:{403:function d(){e.jstree.rollback(r.rlbk)}}})}}).bind("select_node.jstree check_node.jstree uncheck_node.jstree",function(t,n){e(document).triggerHandler(t,n)
})}},onremove:function n(){this.jstree("destroy"),this._super()},"from .cms-container":{onafterstatechange:function i(e){this.updateFromEditForm()}},"from .cms-container form":{onaftersubmitform:function r(t){
})}},onremove:function n(){this.jstree("destroy"),this._super()},"from .cms-container":{onafterstatechange:function r(e){this.updateFromEditForm()}},"from .cms-container form":{onaftersubmitform:function i(t){
var n=e(".cms-edit-form :input[name=ID]").val()
this.updateNodesFromServer([n])}},getTreeConfig:function a(){var t=this
return{core:{initially_open:["record-0"],animation:0,html_titles:!0},html_data:{},ui:{select_limit:1,initially_select:[this.find(".current").attr("id")]},crrm:{move:{check_move:function n(i){var r=e(i.o),a=e(i.np),o=i.ot.get_container()[0]==i.np[0],s=r.getClassname(),l=a.getClassname(),u=t.getHints(),c=[],d=l?l:"Root",f=u&&"undefined"!=typeof u[d]?u[d]:null
this.updateNodesFromServer([n])}},getTreeConfig:function o(){var t=this
return{core:{initially_open:["record-0"],animation:0,html_titles:!0},html_data:{},ui:{select_limit:1,initially_select:[this.find(".current").attr("id")]},crrm:{move:{check_move:function n(r){var i=e(r.o),o=e(r.np),a=r.ot.get_container()[0]==r.np[0],s=i.getClassname(),l=o.getClassname(),u=t.getHints(),c=[],d=l?l:"Root",f=u&&"undefined"!=typeof u[d]?u[d]:null
f&&r.attr("class").match(/VirtualPage-([^\s]*)/)&&(s=RegExp.$1),f&&(c="undefined"!=typeof f.disallowedChildren?f.disallowedChildren:[])
var p=!(0===r.data("id")||r.hasClass("status-archived")||o&&"inside"!=i.p||a.hasClass("nochildren")||c.length&&e.inArray(s,c)!=-1)
f&&i.attr("class").match(/VirtualPage-([^\s]*)/)&&(s=RegExp.$1),f&&(c="undefined"!=typeof f.disallowedChildren?f.disallowedChildren:[])
var p=!(0===i.data("id")||i.hasClass("status-archived")||a&&"inside"!=r.p||o.hasClass("nochildren")||c.length&&e.inArray(s,c)!=-1)
return p}}},dnd:{drop_target:!1,drag_target:!1},checkbox:{two_state:!0},themes:{theme:"apple",url:e("body").data("frameworkpath")+"/admin/thirdparty/jstree/themes/apple/style.css"},plugins:["html_data","ui","dnd","crrm","themes","checkbox"]
}},search:function o(e,t){e?this.data("searchparams",e):this.removeData("searchparams"),this.jstree("refresh",-1,t)},getNodeByID:function s(e){return this.find("*[data-id="+e+"]")},createNode:function l(t,n,i){
var r=this,a=void 0!==n.ParentID&&r.getNodeByID(n.ParentID),o=e(t),s={data:""}
o.hasClass("jstree-open")?s.state="open":o.hasClass("jstree-closed")&&(s.state="closed"),this.jstree("create_node",a.length?a:-1,"last",s,function(e){for(var t=e.attr("class"),n=0;n<o[0].attributes.length;n++){
var r=o[0].attributes[n]
e.attr(r.name,r.value)}e.addClass(t).html(o.html()),i(e)})},updateNode:function u(t,n,i){var r=this,a=e(n),o=!!i.NextID&&this.getNodeByID(i.NextID),s=!!i.PrevID&&this.getNodeByID(i.PrevID),l=!!i.ParentID&&this.getNodeByID(i.ParentID)
}},search:function a(e,t){e?this.data("searchparams",e):this.removeData("searchparams"),this.jstree("refresh",-1,t)},getNodeByID:function s(e){return this.find("*[data-id="+e+"]")},createNode:function l(t,n,r){
var i=this,o=void 0!==n.ParentID&&i.getNodeByID(n.ParentID),a=e(t),s={data:""}
a.hasClass("jstree-open")?s.state="open":a.hasClass("jstree-closed")&&(s.state="closed"),this.jstree("create_node",o.length?o:-1,"last",s,function(e){for(var t=e.attr("class"),n=0;n<a[0].attributes.length;n++){
var i=a[0].attributes[n]
e.attr(i.name,i.value)}e.addClass(t).html(a.html()),r(e)})},updateNode:function u(t,n,r){var i=this,o=e(n),a=!!r.NextID&&this.getNodeByID(r.NextID),s=!!r.PrevID&&this.getNodeByID(r.PrevID),l=!!r.ParentID&&this.getNodeByID(r.ParentID)
e.each(["id","style","class","data-pagetype"],function(e,n){t.attr(n,a.attr(n))})
e.each(["id","style","class","data-pagetype"],function(e,n){t.attr(n,o.attr(n))})
var u=t.children("ul").detach()
t.html(a.html()).append(u),o&&o.length?this.jstree("move_node",t,o,"before"):s&&s.length?this.jstree("move_node",t,s,"after"):this.jstree("move_node",t,l.length?l:-1)},updateFromEditForm:function c(){var t,n=e(".cms-edit-form :input[name=ID]").val()
t.html(o.html()).append(u),a&&a.length?this.jstree("move_node",t,a,"before"):s&&s.length?this.jstree("move_node",t,s,"after"):this.jstree("move_node",t,l.length?l:-1)},updateFromEditForm:function c(){var t,n=e(".cms-edit-form :input[name=ID]").val()
n?(t=this.getNodeByID(n),t.length?(this.jstree("deselect_all"),this.jstree("select_node",t)):this.updateNodesFromServer([n])):this.jstree("deselect_all")},updateNodesFromServer:function d(t){if(!this.getIsUpdatingTree()&&this.getIsLoaded()){
var n=this,i,r=!1
var n=this,r,i=!1
this.setIsUpdatingTree(!0),n.jstree("save_selected")
var a=function o(e){n.getNodeByID(e.data("id")).not(e).remove(),n.jstree("deselect_all"),n.jstree("select_node",e)}
n.jstree("open_node",this.getNodeByID(0)),n.jstree("save_opened"),n.jstree("save_selected"),e.ajax({url:e.path.addSearchParams(this.data("urlUpdatetreenodes"),"ids="+t.join(",")),dataType:"json",success:function s(t,i){
e.each(t,function(e,t){var i=n.getNodeByID(e)
return t?void(i.length?(n.updateNode(i,t.html,t),setTimeout(function(){a(i)},500)):(r=!0,t.ParentID&&!n.find("li[data-id="+t.ParentID+"]").length?n.jstree("load_node",-1,function(){newNode=n.find("li[data-id="+e+"]"),
a(newNode)}):n.createNode(t.html,t,function(e){a(e)}))):void n.jstree("delete_node",i)}),r||(n.jstree("deselect_all"),n.jstree("reselect"),n.jstree("reopen"))},complete:function l(){n.setIsUpdatingTree(!1)
var o=function a(e){n.getNodeByID(e.data("id")).not(e).remove(),n.jstree("deselect_all"),n.jstree("select_node",e)}
n.jstree("open_node",this.getNodeByID(0)),n.jstree("save_opened"),n.jstree("save_selected"),e.ajax({url:e.path.addSearchParams(this.data("urlUpdatetreenodes"),"ids="+t.join(",")),dataType:"json",success:function s(t,r){
e.each(t,function(e,t){var r=n.getNodeByID(e)
return t?void(r.length?(n.updateNode(r,t.html,t),setTimeout(function(){o(r)},500)):(i=!0,t.ParentID&&!n.find("li[data-id="+t.ParentID+"]").length?n.jstree("load_node",-1,function(){newNode=n.find("li[data-id="+e+"]"),
o(newNode)}):n.createNode(t.html,t,function(e){o(e)}))):void n.jstree("delete_node",r)}),i||(n.jstree("deselect_all"),n.jstree("reselect"),n.jstree("reopen"))},complete:function l(){n.setIsUpdatingTree(!1)
}})}}}),e(".cms-tree.multiple").entwine({onmatch:function f(){this._super(),this.jstree("show_checkboxes")},onunmatch:function p(){this._super(),this.jstree("uncheck_all"),this.jstree("hide_checkboxes")
},getSelectedIDs:function h(){return e(this).jstree("get_checked").not(".disabled").map(function(){return e(this).data("id")}).get()}}),e(".cms-tree li").entwine({setEnabled:function m(e){this.toggleClass("disabled",!e)
},getClassname:function g(){var e=this.attr("class").match(/class-([^\s]*)/i)
return e?e[1]:""},getID:function v(){return this.data("id")}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".cms-content").entwine({onadd:function t(){var e=this
return e?e[1]:""},getID:function y(){return this.data("id")}})})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".cms-content").entwine({onadd:function t(){var e=this
this.find(".cms-tabset").redrawTabs(),this._super()},redraw:function n(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.add(this.find(".cms-tabset")).redrawTabs(),this.find(".cms-content-header").redraw(),
this.find(".cms-content-actions").redraw()}}),e(".cms-content .cms-tree").entwine({onadd:function i(){var t=this
this._super(),this.bind("select_node.jstree",function(n,i){var r=i.rslt.obj,a=t.find(":input[name=ID]").val(),o=i.args[2],s=e(".cms-container")
if(!o)return!1
if(e(r).hasClass("disabled"))return!1
if(e(r).data("id")!=a){var l=e(r).find("a:first").attr("href")
l&&"#"!=l?(l=l.split("?")[0],t.jstree("deselect_all"),t.jstree("uncheck_all"),e.path.isExternal(e(r).find("a:first"))&&(l=l=e.path.makeUrlAbsolute(l,e("base").attr("href"))),document.location.search&&(l=e.path.addSearchParams(l,document.location.search.replace(/^\?/,""))),
s.loadPanel(l)):t.removeForm()}})}}),e(".cms-content .cms-content-fields").entwine({redraw:function r(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))}}),e(".cms-content .cms-content-header, .cms-content .cms-content-actions").entwine({
redraw:function a(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.height("auto"),this.height(this.innerHeight()-this.css("padding-top")-this.css("padding-bottom"))}})})},function(e,t,n){
this.find(".cms-content-actions").redraw()}}),e(".cms-content .cms-tree").entwine({onadd:function r(){var t=this
this._super(),this.bind("select_node.jstree",function(n,r){var i=r.rslt.obj,o=t.find(":input[name=ID]").val(),a=r.args[2],s=e(".cms-container")
if(!a)return!1
if(e(i).hasClass("disabled"))return!1
if(e(i).data("id")!=o){var l=e(i).find("a:first").attr("href")
l&&"#"!=l?(l=l.split("?")[0],t.jstree("deselect_all"),t.jstree("uncheck_all"),e.path.isExternal(e(i).find("a:first"))&&(l=l=e.path.makeUrlAbsolute(l,e("base").attr("href"))),document.location.search&&(l=e.path.addSearchParams(l,document.location.search.replace(/^\?/,""))),
s.loadPanel(l)):t.removeForm()}})}}),e(".cms-content .cms-content-fields").entwine({redraw:function i(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))}}),e(".cms-content .cms-content-header, .cms-content .cms-content-actions").entwine({
redraw:function o(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.height("auto"),this.height(this.innerHeight()-this.css("padding-top")-this.css("padding-bottom"))}})})},function(e,t,n){
(function(e){"use strict"
function t(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=t(i),a=n(114),o=t(a)
window.onbeforeunload=function(e){var t=(0,r["default"])(".cms-edit-form")
if(t.trigger("beforesubmitform"),t.is(".changed")&&!t.is(".discardchanges"))return o["default"]._t("LeftAndMain.CONFIRMUNSAVEDSHORT")},r["default"].entwine("ss",function(e){e(".cms-edit-form").entwine({
function t(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),i=t(r),o=n(114),a=t(o)
window.onbeforeunload=function(e){var t=(0,i["default"])(".cms-edit-form")
if(t.trigger("beforesubmitform"),t.is(".changed")&&!t.is(".discardchanges"))return a["default"]._t("LeftAndMain.CONFIRMUNSAVEDSHORT")},i["default"].entwine("ss",function(e){e(".cms-edit-form").entwine({
PlaceholderHtml:"",ChangeTrackerOptions:{ignoreFieldSelector:".no-change-track, .ss-upload :input, .cms-navigator :input"},ValidationErrorShown:!1,onadd:function t(){var e=this
this.attr("autocomplete","off"),this._setupChangeTracker()
for(var t in{action:!0,method:!0,enctype:!0,name:!0}){var n=this.find(":input[name=_form_"+t+"]")
@ -1308,47 +1304,47 @@ e(".cms-container").clearCurrentTabState()
var n=t.closest(".ss-tabset")
n.length||(n=t.closest(".cms-tabset")),n.length?n.tabs("option","active",t.index(".tab")):this.getValidationErrorShown()||(this.setValidationErrorShown(!0),s(ss.i18n._t("ModelAdmin.VALIDATIONERROR","Validation Error")))
}}},onremove:function i(){this.changetracker("destroy"),this._super()},onmatch:function r(){this._super()},onunmatch:function a(){this._super()},redraw:function l(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),
}}},onremove:function r(){this.changetracker("destroy"),this._super()},onmatch:function i(){this._super()},onunmatch:function o(){this._super()},redraw:function l(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),
this.add(this.find(".cms-tabset")).redrawTabs(),this.find(".cms-content-header").redraw()},_setupChangeTracker:function u(){this.changetracker(this.getChangeTrackerOptions())},confirmUnsavedChanges:function c(){
if(this.trigger("beforesubmitform"),!this.is(".changed")||this.is(".discardchanges"))return!0
if(this.find(".btn-toolbar :submit.btn--loading.loading").length>0)return!0
var e=confirm(o["default"]._t("LeftAndMain.CONFIRMUNSAVED"))
var e=confirm(a["default"]._t("LeftAndMain.CONFIRMUNSAVED"))
return e&&this.addClass("discardchanges"),e},onsubmit:function d(e,t){if("_blank"!=this.prop("target"))return t&&this.closest(".cms-container").submitForm(this,t),!1},validate:function f(){var e=!0
return this.trigger("validate",{isValid:e}),e},"from .htmleditor":{oneditorinit:function p(t){var n=this,i=e(t.target).closest(".field.htmleditor"),r=i.find("textarea.htmleditor").getEditor().getInstance()
return this.trigger("validate",{isValid:e}),e},"from .htmleditor":{oneditorinit:function p(t){var n=this,r=e(t.target).closest(".field.htmleditor"),i=r.find("textarea.htmleditor").getEditor().getInstance()
r.onClick.add(function(e){n.saveFieldFocus(i.attr("id"))})}},"from .cms-edit-form :input:not(:submit)":{onclick:function h(t){this.saveFieldFocus(e(t.target).attr("id"))},onfocus:function m(t){this.saveFieldFocus(e(t.target).attr("id"))
i.onClick.add(function(e){n.saveFieldFocus(r.attr("id"))})}},"from .cms-edit-form :input:not(:submit)":{onclick:function h(t){this.saveFieldFocus(e(t.target).attr("id"))},onfocus:function m(t){this.saveFieldFocus(e(t.target).attr("id"))
}},"from .cms-edit-form .treedropdown *":{onfocusin:function g(t){var n=e(t.target).closest(".field.treedropdown")
this.saveFieldFocus(n.attr("id"))}},"from .cms-edit-form .dropdown .chosen-container a":{onfocusin:function v(t){var n=e(t.target).closest(".field.dropdown")
this.saveFieldFocus(n.attr("id"))}},"from .cms-container":{ontabstaterestored:function y(e){this.restoreFieldFocus()}},saveFieldFocus:function b(t){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){
var n=e(this).attr("id"),i=[]
if(i.push({id:n,selected:t}),i)try{window.sessionStorage.setItem(n,JSON.stringify(i))}catch(r){if(r.code===DOMException.QUOTA_EXCEEDED_ERR&&0===window.sessionStorage.length)return
throw r}}},restoreFieldFocus:function _(){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var t=this,n="undefined"!=typeof window.sessionStorage&&window.sessionStorage,i=n?window.sessionStorage.getItem(this.attr("id")):null,r=!!i&&JSON.parse(i),a,o=0!==this.find(".ss-tabset").length,s,l,u,c
this.saveFieldFocus(n.attr("id"))}},"from .cms-edit-form .dropdown .chosen-container a":{onfocusin:function y(t){var n=e(t.target).closest(".field.dropdown")
this.saveFieldFocus(n.attr("id"))}},"from .cms-container":{ontabstaterestored:function b(e){this.restoreFieldFocus()}},saveFieldFocus:function v(t){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){
var n=e(this).attr("id"),r=[]
if(r.push({id:n,selected:t}),r)try{window.sessionStorage.setItem(n,JSON.stringify(r))}catch(i){if(i.code===DOMException.QUOTA_EXCEEDED_ERR&&0===window.sessionStorage.length)return
throw i}}},restoreFieldFocus:function _(){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var t=this,n="undefined"!=typeof window.sessionStorage&&window.sessionStorage,r=n?window.sessionStorage.getItem(this.attr("id")):null,i=!!r&&JSON.parse(r),o,a=0!==this.find(".ss-tabset").length,s,l,u,c
if(n&&r.length>0){if(e.each(r,function(n,i){t.is("#"+i.id)&&(a=e("#"+i.selected))}),e(a).length<1)return void this.focusFirstInput()
if(s=e(a).closest(".ss-tabset").find(".ui-tabs-nav .ui-tabs-active .ui-tabs-anchor").attr("id"),l="tab-"+e(a).closest(".ss-tabset .ui-tabs-panel").attr("id"),o&&l!==s)return
u=e(a).closest(".togglecomposite"),u.length>0&&u.accordion("activate",u.find(".ui-accordion-header")),c=e(a).position().top,e(a).is(":visible")||(a="#"+e(a).closest(".field").attr("id"),c=e(a).position().top),
e(a).focus(),c>e(window).height()/2&&t.find(".cms-content-fields").scrollTop(c)}else this.focusFirstInput()}},focusFirstInput:function w(){this.find(':input:not(:submit)[data-skip-autofocus!="true"]').filter(":visible:first").focus()
if(n&&i.length>0){if(e.each(i,function(n,r){t.is("#"+r.id)&&(o=e("#"+r.selected))}),e(o).length<1)return void this.focusFirstInput()
if(s=e(o).closest(".ss-tabset").find(".ui-tabs-nav .ui-tabs-active .ui-tabs-anchor").attr("id"),l="tab-"+e(o).closest(".ss-tabset .ui-tabs-panel").attr("id"),a&&l!==s)return
u=e(o).closest(".togglecomposite"),u.length>0&&u.accordion("activate",u.find(".ui-accordion-header")),c=e(o).position().top,e(o).is(":visible")||(o="#"+e(o).closest(".field").attr("id"),c=e(o).position().top),
e(o).focus(),c>e(window).height()/2&&t.find(".cms-content-fields").scrollTop(c)}else this.focusFirstInput()}},focusFirstInput:function w(){this.find(':input:not(:submit)[data-skip-autofocus!="true"]').filter(":visible:first").focus()
}}),e(".cms-edit-form .btn-toolbar input.action[type=submit], .cms-edit-form .btn-toolbar button.action").entwine({onclick:function C(e){return this.is(":disabled")?(e.preventDefault(),!1):this._super(e)===!1||e.defaultPrevented||e.isDefaultPrevented()?void 0:(this.parents("form").trigger("submit",[this]),
e.preventDefault(),!1)}}),e(".cms-edit-form .btn-toolbar input.action[type=submit].ss-ui-action-cancel, .cms-edit-form .btn-toolbar button.action.ss-ui-action-cancel").entwine({onclick:function T(e){window.history.length>1?window.history.back():this.parents("form").trigger("submit",[this]),
e.preventDefault()}}),e(".cms-edit-form .ss-tabset").entwine({onmatch:function E(){if(!this.hasClass("ss-ui-action-tabset")){var e=this.find("> ul:first")
1==e.children("li").length&&e.hide().parent().addClass("ss-tabset-tabshidden")}this._super()},onunmatch:function P(){this._super()}})})
e.preventDefault()}}),e(".cms-edit-form .ss-tabset").entwine({onmatch:function P(){if(!this.hasClass("ss-ui-action-tabset")){var e=this.find("> ul:first")
1==e.children("li").length&&e.hide().parent().addClass("ss-tabset-tabshidden")}this._super()},onunmatch:function E(){this._super()}})})
var s=function l(t){e.noticeAdd({text:t,type:"error",stayTime:5e3,inEffect:{left:"0",opacity:"show"}})}}).call(t,n(1))},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".cms-panel.cms-menu").entwine({togglePanel:function t(n,i,r){e(".cms-menu-list").children("li").each(function(){n?e(this).children("ul").each(function(){e(this).removeClass("collapsed-flyout"),
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".cms-panel.cms-menu").entwine({togglePanel:function t(n,r,i){e(".cms-menu-list").children("li").each(function(){n?e(this).children("ul").each(function(){e(this).removeClass("collapsed-flyout"),
e(this).data("collapse")&&(e(this).removeData("collapse"),e(this).addClass("collapse"))}):e(this).children("ul").each(function(){e(this).addClass("collapsed-flyout"),e(this).hasClass("collapse"),e(this).removeClass("collapse"),
e(this).data("collapse",!0)})}),this.toggleFlyoutState(n),this._super(n,i,r)},toggleFlyoutState:function n(t){if(t)e(".collapsed").find("li").show(),e(".cms-menu-list").find(".child-flyout-indicator").hide()
e(this).data("collapse",!0)})}),this.toggleFlyoutState(n),this._super(n,r,i)},toggleFlyoutState:function n(t){if(t)e(".collapsed").find("li").show(),e(".cms-menu-list").find(".child-flyout-indicator").hide()
else{e(".collapsed-flyout").find("li").each(function(){e(this).hide()})
var n=e(".cms-menu-list ul.collapsed-flyout").parent()
0===n.children(".child-flyout-indicator").length&&n.append('<span class="child-flyout-indicator"></span>').fadeIn(),n.children(".child-flyout-indicator").fadeIn()}},siteTreePresent:function i(){return e("#cms-content-tools-CMSMain").length>0
0===n.children(".child-flyout-indicator").length&&n.append('<span class="child-flyout-indicator"></span>').fadeIn(),n.children(".child-flyout-indicator").fadeIn()}},siteTreePresent:function r(){return e("#cms-content-tools-CMSMain").length>0
},getPersistedStickyState:function r(){var t,n
return void 0!==e.cookie&&(n=e.cookie("cms-menu-sticky"),void 0!==n&&null!==n&&(t="true"===n)),t},setPersistedStickyState:function a(t){void 0!==e.cookie&&e.cookie("cms-menu-sticky",t,{path:"/",expires:31
})},getEvaluatedCollapsedState:function o(){var t,n=this.getPersistedCollapsedState(),i=e(".cms-menu").getPersistedStickyState(),r=this.siteTreePresent()
return t=void 0===n?r:n!==r&&i?n:r},onadd:function s(){var t=this
},getPersistedStickyState:function i(){var t,n
return void 0!==e.cookie&&(n=e.cookie("cms-menu-sticky"),void 0!==n&&null!==n&&(t="true"===n)),t},setPersistedStickyState:function o(t){void 0!==e.cookie&&e.cookie("cms-menu-sticky",t,{path:"/",expires:31
})},getEvaluatedCollapsedState:function a(){var t,n=this.getPersistedCollapsedState(),r=e(".cms-menu").getPersistedStickyState(),i=this.siteTreePresent()
return t=void 0===n?i:n!==i&&r?n:i},onadd:function s(){var t=this
setTimeout(function(){t.togglePanel(!t.getEvaluatedCollapsedState(),!1,!1)},0),e(window).on("ajaxComplete",function(e){setTimeout(function(){t.togglePanel(!t.getEvaluatedCollapsedState(),!1,!1)},0)}),this._super()
}}),e(".cms-menu-list").entwine({onmatch:function l(){var e=this
@ -1362,57 +1358,57 @@ this.toggleClass("collapsed",e(t.target).hasClass("collapsed")),e(".cms-containe
}},updateItems:function g(){var t=this.find("#Menu-CMSMain")
t[t.is(".current")?"show":"hide"]()
var n=e(".cms-content input[name=ID]").val()
n&&this.find("li").each(function(){e.isFunction(e(this).setRecordID)&&e(this).setRecordID(n)})}}),e(".cms-menu-list li").entwine({toggleFlyout:function v(t){var n=e(this)
if(n.children("ul").first().hasClass("collapsed-flyout"))if(t){if(!n.children("ul").first().children("li").first().hasClass("clone")){var i=n.clone()
i.addClass("clone").css({}),i.children("ul").first().remove(),i.find("span").not(".text").remove(),i.find("a").first().unbind("click"),n.children("ul").prepend(i)}e(".collapsed-flyout").show(),n.addClass("opened"),
n.children("ul").find("li").fadeIn("fast")}else i&&i.remove(),e(".collapsed-flyout").hide(),n.removeClass("opened"),n.find("toggle-children").removeClass("opened"),n.children("ul").find("li").hide()}}),
e(".cms-menu-list li").hoverIntent(function(){e(this).toggleFlyout(!0)},function(){e(this).toggleFlyout(!1)}),e(".cms-menu-list .toggle").entwine({onclick:function y(t){t.preventDefault(),e(this).toogleFlyout(!0)
n&&this.find("li").each(function(){e.isFunction(e(this).setRecordID)&&e(this).setRecordID(n)})}}),e(".cms-menu-list li").entwine({toggleFlyout:function y(t){var n=e(this)
if(n.children("ul").first().hasClass("collapsed-flyout"))if(t){if(!n.children("ul").first().children("li").first().hasClass("clone")){var r=n.clone()
r.addClass("clone").css({}),r.children("ul").first().remove(),r.find("span").not(".text").remove(),r.find("a").first().unbind("click"),n.children("ul").prepend(r)}e(".collapsed-flyout").show(),n.addClass("opened"),
n.children("ul").find("li").fadeIn("fast")}else r&&r.remove(),e(".collapsed-flyout").hide(),n.removeClass("opened"),n.find("toggle-children").removeClass("opened"),n.children("ul").find("li").hide()}}),
e(".cms-menu-list li").hoverIntent(function(){e(this).toggleFlyout(!0)},function(){e(this).toggleFlyout(!1)}),e(".cms-menu-list .toggle").entwine({onclick:function b(t){t.preventDefault(),e(this).toogleFlyout(!0)
}}),e(".cms-menu-list li").entwine({onmatch:function b(){this.find("ul").length&&this.find("a:first").append('<span class="toggle-children"><span class="toggle-children-icon"></span></span>'),this._super()
}}),e(".cms-menu-list li").entwine({onmatch:function v(){this.find("ul").length&&this.find("a:first").append('<span class="toggle-children"><span class="toggle-children-icon"></span></span>'),this._super()
},onunmatch:function _(){this._super()},toggle:function w(){this[this.hasClass("opened")?"close":"open"]()},open:function C(){var e=this.getMenuItem()
e&&e.open(),this.find("li.clone")&&this.find("li.clone").remove(),this.addClass("opened").find("ul").show(),this.find(".toggle-children").addClass("opened")},close:function T(){this.removeClass("opened").find("ul").hide(),
this.find(".toggle-children").removeClass("opened")},select:function E(){var e=this.getMenuItem()
this.find(".toggle-children").removeClass("opened")},select:function P(){var e=this.getMenuItem()
if(this.addClass("current").open(),this.siblings().removeClass("current").close(),this.siblings().find("li").removeClass("current"),e){var t=e.siblings()
e.addClass("current"),t.removeClass("current").close(),t.find("li").removeClass("current").close()}this.getMenu().updateItems(),this.trigger("select")}}),e(".cms-menu-list *").entwine({getMenu:function P(){
return this.parents(".cms-menu-list:first")}}),e(".cms-menu-list li *").entwine({getMenuItem:function O(){return this.parents("li:first")}}),e(".cms-menu-list li a").entwine({onclick:function S(t){var n=e.path.isExternal(this.attr("href"))
e.addClass("current"),t.removeClass("current").close(),t.find("li").removeClass("current").close()}this.getMenu().updateItems(),this.trigger("select")}}),e(".cms-menu-list *").entwine({getMenu:function E(){
return this.parents(".cms-menu-list:first")}}),e(".cms-menu-list li *").entwine({getMenuItem:function O(){return this.parents("li:first")}}),e(".cms-menu-list li a").entwine({onclick:function k(t){var n=e.path.isExternal(this.attr("href"))
if(!(t.which>1||n)&&"_blank"!=this.attr("target")){t.preventDefault()
var i=this.getMenuItem(),r=this.attr("href")
n||(r=e("base").attr("href")+r)
var a=i.find("li")
a.length?a.first().find("a").click():document.location.href=r,i.select()}}}),e(".cms-menu-list li .toggle-children").entwine({onclick:function k(e){var t=this.closest("li")
var r=this.getMenuItem(),i=this.attr("href")
n||(i=e("base").attr("href")+i)
var o=r.find("li")
o.length?o.first().find("a").click():document.location.href=i,r.select()}}}),e(".cms-menu-list li .toggle-children").entwine({onclick:function S(e){var t=this.closest("li")
return t.toggle(),!1}}),e(".cms .profile-link").entwine({onclick:function j(){return e(".cms-container").loadPanel(this.attr("href")),e(".cms-menu-list li").removeClass("current").close(),!1}}),e(".cms-menu .sticky-toggle").entwine({
onadd:function x(){var t=!!e(".cms-menu").getPersistedStickyState()
this.toggleCSS(t),this.toggleIndicator(t),this._super()},toggleCSS:function R(e){this[e?"addClass":"removeClass"]("active")},toggleIndicator:function I(e){this.next(".sticky-status-indicator").text(e?"fixed":"auto")
},onclick:function A(){var e=this.closest(".cms-menu"),t=e.getPersistedCollapsedState(),n=e.getPersistedStickyState(),i=void 0===n?!this.hasClass("active"):!n
void 0===t?e.setPersistedCollapsedState(e.hasClass("collapsed")):void 0!==t&&i===!1&&e.clearPersistedCollapsedState(),e.setPersistedStickyState(i),this.toggleCSS(i),this.toggleIndicator(i),this._super()
},onclick:function A(){var e=this.closest(".cms-menu"),t=e.getPersistedCollapsedState(),n=e.getPersistedStickyState(),r=void 0===n?!this.hasClass("active"):!n
void 0===t?e.setPersistedCollapsedState(e.hasClass("collapsed")):void 0!==t&&r===!1&&e.clearPersistedCollapsedState(),e.setPersistedStickyState(r),this.toggleCSS(r),this.toggleIndicator(r),this._super()
}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r),o=n(114),s=i(o)
a["default"].entwine("ss.preview",function(e){e(".cms-preview").entwine({AllowedStates:["StageLink","LiveLink","ArchiveLink"],CurrentStateName:null,CurrentSizeName:"auto",IsPreviewEnabled:!1,DefaultMode:"split",
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i),a=n(114),s=r(a)
o["default"].entwine("ss.preview",function(e){e(".cms-preview").entwine({AllowedStates:["StageLink","LiveLink","ArchiveLink"],CurrentStateName:null,CurrentSizeName:"auto",IsPreviewEnabled:!1,DefaultMode:"split",
Sizes:{auto:{width:"100%",height:"100%"},mobile:{width:"335px",height:"568px"},mobileLandscape:{width:"583px",height:"320px"},tablet:{width:"783px",height:"1024px"},tabletLandscape:{width:"1039px",height:"768px"
},desktop:{width:"1024px",height:"800px"}},changeState:function t(n,i){var r=this,a=this._getNavigatorStates()
return i!==!1&&e.each(a,function(e,t){r.saveState("state",n)}),this.setCurrentStateName(n),this._loadCurrentState(),this.redraw(),this},changeMode:function n(t,i){var r=e(".cms-container").entwine(".ss")
},desktop:{width:"1024px",height:"800px"}},changeState:function t(n,r){var i=this,o=this._getNavigatorStates()
return r!==!1&&e.each(o,function(e,t){i.saveState("state",n)}),this.setCurrentStateName(n),this._loadCurrentState(),this.redraw(),this},changeMode:function n(t,r){var i=e(".cms-container").entwine(".ss")
if("split"==t)r.splitViewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState()
else if("content"==t)r.contentViewMode(),this.setIsPreviewEnabled(!1)
if("split"==t)i.splitViewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState()
else if("content"==t)i.contentViewMode(),this.setIsPreviewEnabled(!1)
else{if("preview"!=t)throw"Invalid mode: "+t
r.previewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState()}return i!==!1&&this.saveState("mode",t),this.redraw(),this},changeSize:function i(e){var t=this.getSizes()
return this.setCurrentSizeName(e),this.removeClass("auto desktop tablet mobile").addClass(e),this.saveState("size",e),this.redraw(),this},redraw:function r(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))
i.previewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState()}return r!==!1&&this.saveState("mode",t),this.redraw(),this},changeSize:function r(e){var t=this.getSizes()
return this.setCurrentSizeName(e),this.removeClass("auto desktop tablet mobile").addClass(e),this.saveState("size",e),this.redraw(),this},redraw:function i(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))
var t=this.getCurrentStateName()
t&&this.find(".cms-preview-states").changeVisibleState(t)
var n=e(".cms-container").entwine(".ss").getLayoutOptions()
n&&e(".preview-mode-selector").changeVisibleMode(n.mode)
var i=this.getCurrentSizeName()
return i&&this.find(".preview-size-selector").changeVisibleSize(this.getCurrentSizeName()),this},saveState:function a(e,t){this._supportsLocalStorage()&&window.localStorage.setItem("cms-preview-state-"+e,t)
var r=this.getCurrentSizeName()
return r&&this.find(".preview-size-selector").changeVisibleSize(this.getCurrentSizeName()),this},saveState:function o(e,t){this._supportsLocalStorage()&&window.localStorage.setItem("cms-preview-state-"+e,t)
},loadState:function o(e){if(this._supportsLocalStorage())return window.localStorage.getItem("cms-preview-state-"+e)},disablePreview:function l(){return this.setPendingURL(null),this._loadUrl("about:blank"),
},loadState:function a(e){if(this._supportsLocalStorage())return window.localStorage.getItem("cms-preview-state-"+e)},disablePreview:function l(){return this.setPendingURL(null),this._loadUrl("about:blank"),
this._block(),this.changeMode("content",!1),this.setIsPreviewEnabled(!1),this},enablePreview:function u(){return this.getIsPreviewEnabled()||(this.setIsPreviewEnabled(!0),e.browser.msie&&e.browser.version.slice(0,3)<=7?this.changeMode("content"):this.changeMode(this.getDefaultMode(),!1)),
this},getOrAppendFontFixStyleElement:function c(){var t=e("#FontFixStyleElement")
return t.length||(t=e('<style type="text/css" id="FontFixStyleElement" disabled="disabled">:before,:after{content:none !important}</style>').appendTo("head")),t},onadd:function d(){var t=this,n=this.find("iframe")
@ -1421,37 +1417,37 @@ return t.length||(t=e('<style type="text/css" id="FontFixStyleElement" disabled=
n.addClass("center"),n.bind("load",function(){t._adjustIframeForPreview(),t._loadCurrentPage(),e(this).removeClass("loading")}),e.browser.msie&&8===parseInt(e.browser.version,10)&&n.bind("readystatechange",function(e){
"interactive"==n[0].readyState&&(t.getOrAppendFontFixStyleElement().removeAttr("disabled"),setTimeout(function(){t.getOrAppendFontFixStyleElement().attr("disabled","disabled")},0))}),this._unblock(),this.disablePreview(),
this._super()},_supportsLocalStorage:function f(){var e=new Date,t,n
try{return(t=window.localStorage).setItem(e,e),n=t.getItem(e)==e,t.removeItem(e),n&&t}catch(i){console.warn("localStorge is not available due to current browser / system settings.")}},onforcecontent:function p(){
try{return(t=window.localStorage).setItem(e,e),n=t.getItem(e)==e,t.removeItem(e),n&&t}catch(r){console.warn("localStorge is not available due to current browser / system settings.")}},onforcecontent:function p(){
this.changeMode("content",!1)},onenable:function h(){var t=e(".preview-mode-selector")
t.removeClass("split-disabled"),t.find(".disabled-tooltip").hide()},ondisable:function m(){var t=e(".preview-mode-selector")
t.addClass("split-disabled"),t.find(".disabled-tooltip").show()},_block:function g(){return this.find(".preview-note").show(),this.find(".cms-preview-overlay").show(),this},_unblock:function v(){return this.find(".preview-note").hide(),
this.find(".cms-preview-overlay").hide(),this},_initialiseFromContent:function y(){var t,n
t.addClass("split-disabled"),t.find(".disabled-tooltip").show()},_block:function g(){return this.find(".preview-note").show(),this.find(".cms-preview-overlay").show(),this},_unblock:function y(){return this.find(".preview-note").hide(),
this.find(".cms-preview-overlay").hide(),this},_initialiseFromContent:function b(){var t,n
return e(".cms-previewable").length?(t=this.loadState("mode"),n=this.loadState("size"),this._moveNavigator(),t&&"content"==t||(this.enablePreview(),this._loadCurrentState()),this.redraw(),t&&this.changeMode(t),
n&&this.changeSize(n)):this.disablePreview(),this},"from .cms-container":{onafterstatechange:function b(e,t){t.xhr.getResponseHeader("X-ControllerURL")||this._initialiseFromContent()}},PendingURL:null,
n&&this.changeSize(n)):this.disablePreview(),this},"from .cms-container":{onafterstatechange:function v(e,t){t.xhr.getResponseHeader("X-ControllerURL")||this._initialiseFromContent()}},PendingURL:null,
oncolumnvisibilitychanged:function _(){var e=this.getPendingURL()
e&&!this.is(".column-hidden")&&(this.setPendingURL(null),this._loadUrl(e),this._unblock())},"from .cms-container .cms-edit-form":{onaftersubmitform:function w(){this._initialiseFromContent()}},_loadUrl:function C(e){
return this.find("iframe").addClass("loading").attr("src",e),this},_getNavigatorStates:function T(){var t=e.map(this.getAllowedStates(),function(t){var n=e(".cms-preview-states .state-name[data-name="+t+"]")
return n.length?{name:t,url:n.attr("href"),active:n.hasClass("active")}:null})
return t},_loadCurrentState:function E(){if(!this.getIsPreviewEnabled())return this
var t=this._getNavigatorStates(),n=this.getCurrentStateName(),i=null
t&&(i=e.grep(t,function(e,t){return n===e.name||!n&&e.active}))
var r=null
return i[0]?r=i[0].url:t.length?(this.setCurrentStateName(t[0].name),r=t[0].url):this.setCurrentStateName(null),r&&(r+=(r.indexOf("?")===-1?"?":"&")+"CMSPreview=1"),this.is(".column-hidden")?(this.setPendingURL(r),
this._loadUrl("about:blank"),this._block()):(this.setPendingURL(null),r?(this._loadUrl(r),this._unblock()):this._block()),this},_moveNavigator:function P(){var t=e(".cms-preview .cms-preview-controls"),n=e(".cms-edit-form .cms-navigator")
return t},_loadCurrentState:function P(){if(!this.getIsPreviewEnabled())return this
var t=this._getNavigatorStates(),n=this.getCurrentStateName(),r=null
t&&(r=e.grep(t,function(e,t){return n===e.name||!n&&e.active}))
var i=null
return r[0]?i=r[0].url:t.length?(this.setCurrentStateName(t[0].name),i=t[0].url):this.setCurrentStateName(null),i&&(i+=(i.indexOf("?")===-1?"?":"&")+"CMSPreview=1"),this.is(".column-hidden")?(this.setPendingURL(i),
this._loadUrl("about:blank"),this._block()):(this.setPendingURL(null),i?(this._loadUrl(i),this._unblock()):this._block()),this},_moveNavigator:function E(){var t=e(".cms-preview .cms-preview-controls"),n=e(".cms-edit-form .cms-navigator")
n.length&&t.length?t.html(e(".cms-edit-form .cms-navigator").detach()):this._block()},_loadCurrentPage:function O(){if(this.getIsPreviewEnabled()){var t,n=e(".cms-container")
try{t=this.find("iframe")[0].contentDocument}catch(i){console.warn("Unable to access iframe, possible https mis-match")}if(t){var r=e(t).find("meta[name=x-page-id]").attr("content"),a=e(t).find("meta[name=x-cms-edit-link]").attr("content"),o=e(".cms-content")
try{t=this.find("iframe")[0].contentDocument}catch(r){console.warn("Unable to access iframe, possible https mis-match")}if(t){var i=e(t).find("meta[name=x-page-id]").attr("content"),o=e(t).find("meta[name=x-cms-edit-link]").attr("content"),a=e(".cms-content")
r&&o.find(":input[name=ID]").val()!=r&&e(".cms-container").entwine(".ss").loadPanel(a)}}},_adjustIframeForPreview:function S(){var e=this.find("iframe")[0],t
if(e){try{t=e.contentDocument}catch(n){console.warn("Unable to access iframe, possible https mis-match")}if(t){for(var i=t.getElementsByTagName("A"),r=0;r<i.length;r++){var a=i[r].getAttribute("href")
a&&a.match(/^http:\/\//)&&i[r].setAttribute("target","_blank")}var o=t.getElementById("SilverStripeNavigator")
o&&(o.style.display="none")
i&&a.find(":input[name=ID]").val()!=i&&e(".cms-container").entwine(".ss").loadPanel(o)}}},_adjustIframeForPreview:function k(){var e=this.find("iframe")[0],t
if(e){try{t=e.contentDocument}catch(n){console.warn("Unable to access iframe, possible https mis-match")}if(t){for(var r=t.getElementsByTagName("A"),i=0;i<r.length;i++){var o=r[i].getAttribute("href")
o&&o.match(/^http:\/\//)&&r[i].setAttribute("target","_blank")}var a=t.getElementById("SilverStripeNavigator")
a&&(a.style.display="none")
var s=t.getElementById("SilverStripeNavigatorMessage")
s&&(s.style.display="none"),this.trigger("afterIframeAdjustedForPreview",[t])}}}}),e(".cms-edit-form").entwine({onadd:function k(){this._super(),e(".cms-preview")._initialiseFromContent()}}),e(".cms-preview-states").entwine({
s&&(s.style.display="none"),this.trigger("afterIframeAdjustedForPreview",[t])}}}}),e(".cms-edit-form").entwine({onadd:function S(){this._super(),e(".cms-preview")._initialiseFromContent()}}),e(".cms-preview-states").entwine({
changeVisibleState:function j(e){this.find('[data-name="'+e+'"]').addClass("active").siblings().removeClass("active")}}),e(".cms-preview-states .state-name").entwine({onclick:function x(t){if(1==t.which){
var n=e(this).attr("data-name")
this.addClass("active").siblings().removeClass("active"),e(".cms-preview").changeState(n),t.preventDefault()}}}),e(".preview-mode-selector").entwine({changeVisibleMode:function R(e){this.find("select").val(e).trigger("chosen:updated")._addIcon()
@ -1459,344 +1455,233 @@ this.addClass("active").siblings().removeClass("active"),e(".cms-preview").chang
}}),e(".preview-mode-selector select").entwine({onchange:function I(t){this._super(t),t.preventDefault()
var n=e(this).val()
e(".cms-preview").changeMode(n)}}),e(".cms-container--content-mode").entwine({onmatch:function A(){e(".cms-preview .result-selected").hasClass("font-icon-columns")&&statusMessage(s["default"]._t("LeftAndMain.DISABLESPLITVIEW","Screen too small to show site preview in split mode"),"error"),
this._super()}}),e(".preview-size-selector").entwine({changeVisibleSize:function F(e){this.find("select").val(e).trigger("chosen:updated")._addIcon()}}),e(".preview-size-selector select").entwine({onchange:function D(t){
this._super()}}),e(".preview-size-selector").entwine({changeVisibleSize:function D(e){this.find("select").val(e).trigger("chosen:updated")._addIcon()}}),e(".preview-size-selector select").entwine({onchange:function F(t){
t.preventDefault()
var n=e(this).val()
e(".cms-preview").changeSize(n)}}),e(".preview-selector select.preview-dropdown").entwine({"onchosen:ready":function M(){this._super(),this._addIcon()},_addIcon:function N(){var e=this.find(":selected"),t=e.attr("data-icon"),n=this.parent().find(".chosen-container a.chosen-single"),i=n.attr("data-icon")
e(".cms-preview").changeSize(n)}}),e(".preview-selector select.preview-dropdown").entwine({"onchosen:ready":function M(){this._super(),this._addIcon()},_addIcon:function N(){var e=this.find(":selected"),t=e.attr("data-icon"),n=this.parent().find(".chosen-container a.chosen-single"),r=n.attr("data-icon")
return"undefined"!=typeof i&&n.removeClass(i),n.addClass(t),n.attr("data-icon",t),this}}),e(".preview-mode-selector .chosen-drop li:last-child").entwine({onmatch:function U(){e(".preview-mode-selector").hasClass("split-disabled")?this.parent().append('<div class="disabled-tooltip"></div>'):this.parent().append('<div class="disabled-tooltip" style="display: none;"></div>')
return"undefined"!=typeof r&&n.removeClass(r),n.addClass(t),n.attr("data-icon",t),this}}),e(".preview-mode-selector .chosen-drop li:last-child").entwine({onmatch:function L(){e(".preview-mode-selector").hasClass("split-disabled")?this.parent().append('<div class="disabled-tooltip"></div>'):this.parent().append('<div class="disabled-tooltip" style="display: none;"></div>')
}}),e(".preview-device-outer").entwine({onclick:function L(){this.parent(".preview__device").toggleClass("rotate")}})})},function(e,t,n){(function(e){"use strict"
function t(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=t(i),a=n(114),o=t(a)
r["default"].entwine("ss.tree",function(t){t("#Form_BatchActionsForm").entwine({Actions:[],getTree:function n(){return t(".cms-tree")},fromTree:{oncheck_node:function i(e,t){this.serializeFromTree()},onuncheck_node:function r(e,t){
this.serializeFromTree()}},onmatch:function a(){var e=this
}}),e(".preview-device-outer").entwine({onclick:function U(){this.parent(".preview__device").toggleClass("rotate")}})})},function(e,t,n){(function(e){"use strict"
function t(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),i=t(r),o=n(114),a=t(o)
i["default"].entwine("ss.tree",function(t){t("#Form_BatchActionsForm").entwine({Actions:[],getTree:function n(){return t(".cms-tree")},fromTree:{oncheck_node:function r(e,t){this.serializeFromTree()},onuncheck_node:function i(e,t){
this.serializeFromTree()}},onmatch:function o(){var e=this
e.getTree().bind("load_node.jstree",function(t,n){e.refreshSelected()})},onunmatch:function s(){var e=this
e.getTree().unbind("load_node.jstree")},registerDefault:function l(){this.register("publish",function(e){var t=confirm(o["default"].inject(o["default"]._t("CMSMAIN.BATCH_PUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to publish?"),{
e.getTree().unbind("load_node.jstree")},registerDefault:function l(){this.register("publish",function(e){var t=confirm(a["default"].inject(a["default"]._t("CMSMAIN.BATCH_PUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to publish?"),{
num:e.length}))
return!!t&&e}),this.register("unpublish",function(e){var t=confirm(o["default"].inject(o["default"]._t("CMSMAIN.BATCH_UNPUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to unpublish"),{
return!!t&&e}),this.register("unpublish",function(e){var t=confirm(a["default"].inject(a["default"]._t("CMSMAIN.BATCH_UNPUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to unpublish"),{
num:e.length}))
return!!t&&e}),this.register("delete",function(e){var t=confirm(o["default"].inject(o["default"]._t("CMSMAIN.BATCH_DELETE_PROMPT","You have {num} page(s) selected.\n\nAre you sure you want to delete these pages?\n\nThese pages and all of their children pages will be deleted and sent to the archive."),{
return!!t&&e}),this.register("delete",function(e){var t=confirm(a["default"].inject(a["default"]._t("CMSMAIN.BATCH_DELETE_PROMPT","You have {num} page(s) selected.\n\nAre you sure you want to delete these pages?\n\nThese pages and all of their children pages will be deleted and sent to the archive."),{
num:e.length}))
return!!t&&e}),this.register("restore",function(e){var t=confirm(o["default"].inject(o["default"]._t("CMSMAIN.BATCH_RESTORE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to restore to stage?\n\nChildren of archived pages will be restored to the root level, unless those pages are also being restored."),{
return!!t&&e}),this.register("restore",function(e){var t=confirm(a["default"].inject(a["default"]._t("CMSMAIN.BATCH_RESTORE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to restore to stage?\n\nChildren of archived pages will be restored to the root level, unless those pages are also being restored."),{
num:e.length}))
return!!t&&e})},onadd:function u(){this.registerDefault(),this._super()},register:function c(e,t){this.trigger("register",{type:e,callback:t})
var n=this.getActions()
n[e]=t,this.setActions(n)},unregister:function d(e){this.trigger("unregister",{type:e})
var t=this.getActions()
t[e]&&delete t[e],this.setActions(t)},refreshSelected:function f(n){var i=this,r=this.getTree(),a=this.getIDs(),o=[],s=t(".cms-content-batchactions-button"),l=this.find(":input[name=Action]").val()
null==n&&(n=r)
for(var u in a)t(t(r).getNodeByID(u)).addClass("selected").attr("selected","selected")
t[e]&&delete t[e],this.setActions(t)},refreshSelected:function f(n){var r=this,i=this.getTree(),o=this.getIDs(),a=[],s=t(".cms-content-batchactions-button"),l=this.find(":input[name=Action]").val()
null==n&&(n=i)
for(var u in o)t(t(i).getNodeByID(u)).addClass("selected").attr("selected","selected")
if(!l||l==-1||!s.hasClass("active"))return void t(n).find("li").each(function(){t(this).setEnabled(!0)})
t(n).find("li").each(function(){o.push(t(this).data("id")),t(this).addClass("treeloading").setEnabled(!1)})
t(n).find("li").each(function(){a.push(t(this).data("id")),t(this).addClass("treeloading").setEnabled(!1)})
var c=t.path.parseUrl(l),d=c.hrefNoSearch+"/applicablepages/"
d=t.path.addSearchParams(d,c.search),d=t.path.addSearchParams(d,{csvIDs:o.join(",")}),e.getJSON(d,function(r){e(n).find("li").each(function(){t(this).removeClass("treeloading")
d=t.path.addSearchParams(d,c.search),d=t.path.addSearchParams(d,{csvIDs:a.join(",")}),e.getJSON(d,function(i){e(n).find("li").each(function(){t(this).removeClass("treeloading")
var e=t(this).data("id")
0==e||t.inArray(e,r)>=0?t(this).setEnabled(!0):(t(this).removeClass("selected").setEnabled(!1),t(this).prop("selected",!1))}),i.serializeFromTree()})},serializeFromTree:function p(){var e=this.getTree(),t=e.getSelectedIDs()
0==e||t.inArray(e,i)>=0?t(this).setEnabled(!0):(t(this).removeClass("selected").setEnabled(!1),t(this).prop("selected",!1))}),r.serializeFromTree()})},serializeFromTree:function p(){var e=this.getTree(),t=e.getSelectedIDs()
return this.setIDs(t),!0},setIDs:function h(e){this.find(":input[name=csvIDs]").val(e?e.join(","):null)},getIDs:function m(){var e=this.find(":input[name=csvIDs]").val()
return e?e.split(","):[]},onsubmit:function g(n){var i=this,r=this.getIDs(),a=this.getTree(),s=this.getActions()
if(!r||!r.length)return alert(o["default"]._t("CMSMAIN.SELECTONEPAGE","Please select at least one page")),n.preventDefault(),!1
return e?e.split(","):[]},onsubmit:function g(n){var r=this,i=this.getIDs(),o=this.getTree(),s=this.getActions()
if(!i||!i.length)return alert(a["default"]._t("CMSMAIN.SELECTONEPAGE","Please select at least one page")),n.preventDefault(),!1
var l=this.find(":input[name=Action]").val()
if(!l)return n.preventDefault(),!1
var u=l.split("/").filter(function(e){return!!e}).pop()
if(s[u]&&(r=s[u].apply(this,[r])),!r||!r.length)return n.preventDefault(),!1
this.setIDs(r),a.find("li").removeClass("failed")
if(s[u]&&(i=s[u].apply(this,[i])),!i||!i.length)return n.preventDefault(),!1
this.setIDs(i),o.find("li").removeClass("failed")
var c=this.find(":submit:first")
return c.addClass("loading"),e.ajax({url:l,type:"POST",data:this.serializeArray(),complete:function d(e,t){c.removeClass("loading"),a.jstree("refresh",-1),i.setIDs([]),i.find(":input[name=Action]").val("").change()
return c.addClass("loading"),e.ajax({url:l,type:"POST",data:this.serializeArray(),complete:function d(e,t){c.removeClass("loading"),o.jstree("refresh",-1),r.setIDs([]),r.find(":input[name=Action]").val("").change()
var n=e.getResponseHeader("X-Status")
n&&statusMessage(decodeURIComponent(n),"success"==t?"good":"bad")},success:function f(e,n){var i,r
if(e.modified){var o=[]
for(i in e.modified)r=a.getNodeByID(i),a.jstree("set_text",r,e.modified[i].TreeTitle),o.push(r)
t(o).effect("highlight")}if(e.deleted)for(i in e.deleted)r=a.getNodeByID(i),r.length&&a.jstree("delete_node",r)
if(e.error)for(i in e.error)r=a.getNodeByID(i),t(r).addClass("failed")},dataType:"json"}),n.preventDefault(),!1}}),t(".cms-content-batchactions-button").entwine({onmatch:function v(){this._super(),this.updateTree()
n&&statusMessage(decodeURIComponent(n),"success"==t?"good":"bad")},success:function f(e,n){var r,i
if(e.modified){var a=[]
for(r in e.modified)i=o.getNodeByID(r),o.jstree("set_text",i,e.modified[r].TreeTitle),a.push(i)
t(a).effect("highlight")}if(e.deleted)for(r in e.deleted)i=o.getNodeByID(r),i.length&&o.jstree("delete_node",i)
if(e.error)for(r in e.error)i=o.getNodeByID(r),t(i).addClass("failed")},dataType:"json"}),n.preventDefault(),!1}}),t(".cms-content-batchactions-button").entwine({onmatch:function y(){this._super(),this.updateTree()
},onunmatch:function y(){this._super()},onclick:function b(e){this.updateTree()},updateTree:function _(){var e=t(".cms-tree"),n=t("#Form_BatchActionsForm")
},onunmatch:function b(){this._super()},onclick:function v(e){this.updateTree()},updateTree:function _(){var e=t(".cms-tree"),n=t("#Form_BatchActionsForm")
this._super(),this.data("active")?(e.addClass("multiple"),e.removeClass("draggable"),n.serializeFromTree()):(e.removeClass("multiple"),e.addClass("draggable")),t("#Form_BatchActionsForm").refreshSelected()
}}),t("#Form_BatchActionsForm select[name=Action]").entwine({onchange:function w(e){var n=t(e.target.form),i=n.find(":submit"),r=t(e.target).val()
}}),t("#Form_BatchActionsForm select[name=Action]").entwine({onchange:function w(e){var n=t(e.target.form),r=n.find(":submit"),i=t(e.target).val()
t("#Form_BatchActionsForm").refreshSelected(),this.trigger("chosen:updated"),this._super(e)}})})}).call(t,n(1))},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".cms .field.cms-description-tooltip").entwine({onmatch:function t(){this._super()
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".cms .field.cms-description-tooltip").entwine({onmatch:function t(){this._super()
var e=this.find(".description"),t,n
e.length&&(this.attr("title",e.text()).tooltip({content:e.html()}),e.remove())}}),e(".cms .field.cms-description-tooltip :input").entwine({onfocusin:function n(e){this.closest(".field").tooltip("open")
},onfocusout:function i(e){this.closest(".field").tooltip("close")}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".cms-description-toggle").entwine({onadd:function t(){var e=!1,t=this.prop("id").substr(0,this.prop("id").indexOf("_Holder")),n=this.find(".cms-description-trigger"),i=this.find(".description")
},onfocusout:function r(e){this.closest(".field").tooltip("close")}})})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".cms-description-toggle").entwine({onadd:function t(){var e=!1,t=this.prop("id").substr(0,this.prop("id").indexOf("_Holder")),n=this.find(".cms-description-trigger"),r=this.find(".description")
this.hasClass("description-toggle-enabled")||(0===n.length&&(n=this.find(".middleColumn").first().after('<label class="right" for="'+t+'"><a class="cms-description-trigger" href="javascript:void(0)"><span class="btn-icon-information"></span></a></label>').next()),
this.addClass("description-toggle-enabled"),n.on("click",function(){i[e?"hide":"show"](),e=!e}),i.hide())}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".TreeDropdownField").entwine({"from .cms-container form":{onaftersubmitform:function t(e){this.find(".tree-holder").empty(),this._super()}}})})},function(e,t,n){
this.addClass("description-toggle-enabled"),n.on("click",function(){r[e?"hide":"show"](),e=!e}),r.hide())}})})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".TreeDropdownField").entwine({"from .cms-container form":{onaftersubmitform:function t(e){this.find(".tree-holder").empty(),this._super()}}})})},function(e,t,n){
"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r),o=n(5),s=i(o),l=n(182),u=i(l),c=n(106),d=n(183),f=i(d)
a["default"].entwine("ss",function(e){e(".cms-content-actions .add-to-campaign-action,#add-to-campaign__action").entwine({onclick:function t(){var t=e("#add-to-campaign__dialog-wrapper")
return t.length||(t=e('<div id="add-to-campaign__dialog-wrapper" />'),e("body").append(t)),t.open(),!1}}),e("#add-to-campaign__dialog-wrapper").entwine({onunmatch:function n(){this._clearModal()},open:function i(){
this._renderModal(!0)},close:function r(){this._renderModal(!1)},_renderModal:function a(t){var n=this,i=function h(){return n.close()},r=function m(){return n._handleSubmitModal.apply(n,arguments)},a=e("form.cms-edit-form :input[name=ID]").val(),o=window.ss.store,l="SilverStripe\\CMS\\Controllers\\CMSPageEditController",d=o.getState().config.sections[l],p=d.form.AddToCampaignForm.schemaUrl+"/"+a
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i),a=n(5),s=r(a),l=n(182),u=r(l),c=n(106),d=n(183),f=r(d)
o["default"].entwine("ss",function(e){e(".cms-content-actions .add-to-campaign-action,#add-to-campaign__action").entwine({onclick:function t(){var t=e("#add-to-campaign__dialog-wrapper")
return t.length||(t=e('<div id="add-to-campaign__dialog-wrapper" />'),e("body").append(t)),t.open(),!1}}),e("#add-to-campaign__dialog-wrapper").entwine({onunmatch:function n(){this._clearModal()},open:function r(){
this._renderModal(!0)},close:function i(){this._renderModal(!1)},_renderModal:function o(t){var n=this,r=function h(){return n.close()},i=function m(){return n._handleSubmitModal.apply(n,arguments)},o=e("form.cms-edit-form :input[name=ID]").val(),a=window.ss.store,l="SilverStripe\\CMS\\Controllers\\CMSPageEditController",d=a.getState().config.sections[l],p=d.form.AddToCampaignForm.schemaUrl+"/"+o
u["default"].render(s["default"].createElement(c.Provider,{store:o},s["default"].createElement(f["default"],{show:t,handleSubmit:r,handleHide:i,schemaUrl:p,bodyClassName:"modal__dialog",responseClassBad:"modal__response modal__response--error",
responseClassGood:"modal__response modal__response--good"})),this[0])},_clearModal:function o(){u["default"].unmountComponentAtNode(this[0])},_handleSubmitModal:function l(e,t,n){return n()}})})},,function(e,t){
u["default"].render(s["default"].createElement(c.Provider,{store:a},s["default"].createElement(f["default"],{show:t,handleSubmit:i,handleHide:r,schemaUrl:p,bodyClassName:"modal__dialog",responseClassBad:"modal__response modal__response--error",
responseClassGood:"modal__response modal__response--good"})),this[0])},_clearModal:function a(){u["default"].unmountComponentAtNode(this[0])},_handleSubmitModal:function l(e,t,n){return n()}})})},,function(e,t){
e.exports=FormBuilderModal},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
n(169),n(185)
var o=function s(e){var t=(0,a["default"])((0,a["default"])(this).contents()).find(".message")
if(t&&t.html()){var n=(0,a["default"])(window.parent.document).find("#Form_EditForm_Members").get(0)
var a=function s(e){var t=(0,o["default"])((0,o["default"])(this).contents()).find(".message")
if(t&&t.html()){var n=(0,o["default"])(window.parent.document).find("#Form_EditForm_Members").get(0)
n&&n.refresh()
var i=(0,a["default"])(window.parent.document).find(".cms-tree").get(0)
i&&i.reload()}};(0,a["default"])("#MemberImportFormIframe, #GroupImportFormIframe").entwine({onadd:function l(){this._super(),(0,a["default"])(this).bind("load",o)}}),a["default"].entwine("ss",function(e){
e(".permissioncheckboxset .checkbox[value=ADMIN]").entwine({onmatch:function t(){this.toggleCheckboxes(),this._super()},onunmatch:function n(){this._super()},onclick:function i(e){this.toggleCheckboxes()
var r=(0,o["default"])(window.parent.document).find(".cms-tree").get(0)
r&&r.reload()}};(0,o["default"])("#MemberImportFormIframe, #GroupImportFormIframe").entwine({onadd:function l(){this._super(),(0,o["default"])(this).bind("load",a)}}),o["default"].entwine("ss",function(e){
e(".permissioncheckboxset .checkbox[value=ADMIN]").entwine({onmatch:function t(){this.toggleCheckboxes(),this._super()},onunmatch:function n(){this._super()},onclick:function r(e){this.toggleCheckboxes()
},toggleCheckboxes:function r(){var t=this,n=this.parents(".field:eq(0)").find(".checkbox").not(this)
},toggleCheckboxes:function i(){var t=this,n=this.parents(".field:eq(0)").find(".checkbox").not(this)
this.is(":checked")?n.each(function(){e(this).data("SecurityAdmin.oldChecked",e(this).is(":checked")),e(this).data("SecurityAdmin.oldDisabled",e(this).is(":disabled")),e(this).prop("disabled",!0),e(this).prop("checked",!0)
}):n.each(function(){e(this).prop("checked",e(this).data("SecurityAdmin.oldChecked")),e(this).prop("disabled",e(this).data("SecurityAdmin.oldDisabled"))})}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".permissioncheckboxset .valADMIN input").entwine({onmatch:function t(){this._super()},onunmatch:function n(){this._super()},onclick:function i(e){this.toggleCheckboxes()
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".permissioncheckboxset .valADMIN input").entwine({onmatch:function t(){this._super()},onunmatch:function n(){this._super()},onclick:function r(e){this.toggleCheckboxes()
},toggleCheckboxes:function r(){var t=e(this).parents(".field:eq(0)").find(".checkbox").not(this)
},toggleCheckboxes:function i(){var t=e(this).parents(".field:eq(0)").find(".checkbox").not(this)
e(this).is(":checked")?t.each(function(){e(this).data("SecurityAdmin.oldChecked",e(this).attr("checked")),e(this).data("SecurityAdmin.oldDisabled",e(this).attr("disabled")),e(this).attr("disabled","disabled"),
e(this).attr("checked","checked")}):t.each(function(){var t=e(this).data("SecurityAdmin.oldChecked"),n=e(this).data("SecurityAdmin.oldDisabled")
null!==t&&e(this).attr("checked",t),null!==n&&e(this).attr("disabled",n)})}}),e(".permissioncheckboxset .valCMS_ACCESS_LeftAndMain input").entwine({getCheckboxesExceptThisOne:function a(){return e(this).parents(".field:eq(0)").find("li").filter(function(t){
null!==t&&e(this).attr("checked",t),null!==n&&e(this).attr("disabled",n)})}}),e(".permissioncheckboxset .valCMS_ACCESS_LeftAndMain input").entwine({getCheckboxesExceptThisOne:function o(){return e(this).parents(".field:eq(0)").find("li").filter(function(t){
var n=e(this).attr("class")
return!!n&&n.match(/CMS_ACCESS_/)}).find(".checkbox").not(this)},onmatch:function o(){this.toggleCheckboxes(),this._super()},onunmatch:function s(){this._super()},onclick:function l(e){this.toggleCheckboxes()
return!!n&&n.match(/CMS_ACCESS_/)}).find(".checkbox").not(this)},onmatch:function a(){this.toggleCheckboxes(),this._super()},onunmatch:function s(){this._super()},onclick:function l(e){this.toggleCheckboxes()
},toggleCheckboxes:function u(){var t=this.getCheckboxesExceptThisOne()
e(this).is(":checked")?t.each(function(){e(this).data("PermissionCheckboxSetField.oldChecked",e(this).is(":checked")),e(this).data("PermissionCheckboxSetField.oldDisabled",e(this).is(":disabled")),e(this).prop("disabled","disabled"),
e(this).prop("checked","checked")}):t.each(function(){e(this).prop("checked",e(this).data("PermissionCheckboxSetField.oldChecked")),e(this).prop("disabled",e(this).data("PermissionCheckboxSetField.oldDisabled"))
})}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
n(169),a["default"].entwine("ss",function(e){e(".cms-content-tools #Form_SearchForm").entwine({onsubmit:function t(e){this.trigger("beforeSubmit")}}),e(".importSpec").entwine({onmatch:function n(){this.find("div.details").hide(),
this.find("a.detailsLink").click(function(){return e("#"+e(this).attr("href").replace(/.*#/,"")).slideToggle(),!1}),this._super()},onunmatch:function i(){this._super()}})})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
n(169),o["default"].entwine("ss",function(e){e(".cms-content-tools #Form_SearchForm").entwine({onsubmit:function t(e){this.trigger("beforeSubmit")}}),e(".importSpec").entwine({onmatch:function n(){this.find("div.details").hide(),
this.find("a.detailsLink").click(function(){return e("#"+e(this).attr("href").replace(/.*#/,"")).slideToggle(),!1}),this._super()},onunmatch:function r(){this._super()}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r);(0,a["default"])(".ss-assetuploadfield").entwine({onmatch:function o(){this._super(),this.find(".ss-uploadfield-editandorganize").hide()
},onunmatch:function s(){this._super()},onfileuploadadd:function l(e){this.find(".ss-uploadfield-editandorganize").show()},onfileuploadstart:function u(e){this.find(".ss-uploadfield-editandorganize").show()
}}),(0,a["default"])(".ss-uploadfield-view-allowed-extensions .toggle").entwine({onclick:function c(e){var t=this.closest(".ss-uploadfield-view-allowed-extensions"),n=this.closest(".ui-tabs-panel").height()+20
t.toggleClass("active"),t.find(".toggle-content").css("minHeight",n)}})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r);(0,a["default"])(document).on("click",".confirmedpassword .showOnClick a",function(){var e=(0,a["default"])(".showOnClickContainer",(0,
a["default"])(this).parent())
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i);(0,o["default"])(document).on("click",".confirmedpassword .showOnClick a",function(){var e=(0,o["default"])(".showOnClickContainer",(0,
o["default"])(this).parent())
return e.toggle("fast",function(){e.find('input[type="hidden"]').val(e.is(":visible")?1:0)}),!1})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r),o=n(114),s=i(o)
window.tmpl=n(190),n(191),n(192),a["default"].widget("blueimpUIX.fileupload",a["default"].blueimpUI.fileupload,{_initTemplates:function l(){this.options.templateContainer=document.createElement(this._files.prop("nodeName")),
this.options.uploadTemplate=window.tmpl(this.options.uploadTemplateName),this.options.downloadTemplate=window.tmpl(this.options.downloadTemplateName)},_enableFileInputButton:function u(){a["default"].blueimpUI.fileupload.prototype._enableFileInputButton.call(this),
this.element.find(".ss-uploadfield-addfile").show()},_disableFileInputButton:function c(){a["default"].blueimpUI.fileupload.prototype._disableFileInputButton.call(this),this.element.find(".ss-uploadfield-addfile").hide()
},_onAdd:function d(e,t){var n=a["default"].blueimpUI.fileupload.prototype._onAdd.call(this,e,t),i=this._files.find(".ss-uploadfield-item").slice(t.files.length*-1).first(),r="+="+(i.position().top-parseInt(i.css("marginTop"),10)||0-parseInt(i.css("borderTopWidth"),10)||0)
i.offsetParent().animate({scrollTop:r},1e3)
for(var o=0,l=0;l<t.files.length;l++)"number"==typeof t.files[l].size&&(o+=t.files[l].size)
return(0,a["default"])(".fileOverview .uploadStatus .details .total").text(t.files.length),"number"==typeof o&&o>0&&(o=this._formatFileSize(o),(0,a["default"])(".fileOverview .uploadStatus .details .fileSize").text(o)),
1==t.files.length&&null!==t.files[0].error?((0,a["default"])(".fileOverview .uploadStatus .state").text(s["default"]._t("AssetUploadField.UploadField.UPLOADFAIL","Sorry your upload failed")),(0,a["default"])(".fileOverview .uploadStatus").addClass("bad").removeClass("good").removeClass("notice")):((0,
a["default"])(".fileOverview .uploadStatus .state").text(s["default"]._t("AssetUploadField.UPLOADINPROGRESS","Please wait… upload in progress")),(0,a["default"])(".ss-uploadfield-item-edit-all").hide(),
(0,a["default"])(".fileOverview .uploadStatus").addClass("notice").removeClass("good").removeClass("bad")),n},_onDone:function f(e,t,n,i){this.options.changeDetection&&this.element.closest("form").trigger("dirty"),
a["default"].blueimpUI.fileupload.prototype._onDone.call(this,e,t,n,i)},_onSend:function p(e,t){var n=this,i=this.options
return i.overwriteWarning&&i.replaceFile?void a["default"].get(i.urlFileExists,{filename:t.files[0].name},function(r,o,s){return r.exists?(t.context.find(".ss-uploadfield-item-status").text(i.errorMessages.overwriteWarning).addClass("ui-state-warning-text"),
t.context.find(".ss-uploadfield-item-progress").hide(),t.context.find(".ss-uploadfield-item-overwrite").show(),t.context.find(".ss-uploadfield-item-overwrite-warning").on("click",function(e){return t.context.find(".ss-uploadfield-item-progress").show(),
t.context.find(".ss-uploadfield-item-overwrite").hide(),t.context.find(".ss-uploadfield-item-status").removeClass("ui-state-warning-text"),a["default"].blueimpUI.fileupload.prototype._onSend.call(n,e,t),
e.preventDefault(),!1}),void 0):a["default"].blueimpUI.fileupload.prototype._onSend.call(n,e,t)}):a["default"].blueimpUI.fileupload.prototype._onSend.call(n,e,t)},_onAlways:function h(e,t,n,i){a["default"].blueimpUI.fileupload.prototype._onAlways.call(this,e,t,n,i),
"string"==typeof n?((0,a["default"])(".fileOverview .uploadStatus .state").text(s["default"]._t("AssetUploadField.UploadField.UPLOADFAIL","Sorry your upload failed")),(0,a["default"])(".fileOverview .uploadStatus").addClass("bad").removeClass("good").removeClass("notice")):200===n.status&&((0,
a["default"])(".fileOverview .uploadStatus .state").text(s["default"]._t("AssetUploadField.FILEUPLOADCOMPLETED","File upload completed!")),(0,a["default"])(".ss-uploadfield-item-edit-all").show(),(0,a["default"])(".fileOverview .uploadStatus").addClass("good").removeClass("notice").removeClass("bad"))
},_create:function m(){a["default"].blueimpUI.fileupload.prototype._create.call(this),this._adjustMaxNumberOfFiles(0)},attach:function g(e){this.options.changeDetection&&this.element.closest("form").trigger("dirty")
var t=this,n=e.files,i=e.replaceFileID,r=!0,o=null
i&&(o=(0,a["default"])(".ss-uploadfield-item[data-fileid='"+i+"']"),0===o.length?o=null:t._adjustMaxNumberOfFiles(1)),a["default"].each(n,function(e,n){t._adjustMaxNumberOfFiles(-1),r=t._validate([n])&&r
}),e.isAdjusted=!0,e.files.valid=e.isValidated=r,e.context=this._renderDownload(n),o?o.replaceWith(e.context):e.context.appendTo(this._files),e.context.data("data",e),this._reflow=this._transition&&e.context[0].offsetWidth,
e.context.addClass("in")}}),a["default"].entwine("ss",function(e){e("div.ss-upload").entwine({Config:null,onmatch:function t(){if(!this.is(".readonly,.disabled")){var t=this.find(".ss-uploadfield-fromcomputer-fileinput"),n=e(".ss-uploadfield-dropzone"),i=t.data("config")
n.on("dragover",function(e){e.preventDefault()}),n.on("dragenter",function(e){n.addClass("hover active")}),n.on("dragleave",function(e){e.target===n[0]&&n.removeClass("hover active")}),n.on("drop",function(e){
if(n.removeClass("hover active"),e.target!==n[0])return!1}),this.setConfig(i),this.fileupload(e.extend(!0,{formData:function r(t){var n=e(t).find(":input[name=ID]").val(),i=[{name:"SecurityID",value:e(t).find(":input[name=SecurityID]").val()
}]
return n&&i.push({name:"ID",value:n}),i},errorMessages:{1:s["default"]._t("UploadField.PHP_MAXFILESIZE"),2:s["default"]._t("UploadField.HTML_MAXFILESIZE"),3:s["default"]._t("UploadField.ONLYPARTIALUPLOADED"),
4:s["default"]._t("UploadField.NOFILEUPLOADED"),5:s["default"]._t("UploadField.NOTMPFOLDER"),6:s["default"]._t("UploadField.WRITEFAILED"),7:s["default"]._t("UploadField.STOPEDBYEXTENSION"),maxFileSize:s["default"]._t("UploadField.TOOLARGESHORT"),
minFileSize:s["default"]._t("UploadField.TOOSMALL"),acceptFileTypes:s["default"]._t("UploadField.INVALIDEXTENSIONSHORT"),maxNumberOfFiles:s["default"]._t("UploadField.MAXNUMBEROFFILESSHORT"),uploadedBytes:s["default"]._t("UploadField.UPLOADEDBYTES"),
emptyResult:s["default"]._t("UploadField.EMPTYRESULT")},send:function a(t,n){n.context&&n.dataType&&"iframe"===n.dataType.substr(0,6)&&(n.total=1,n.loaded=1,e(this).data("fileupload").options.progress(t,n))
},progress:function o(e,t){if(t.context){var n=parseInt(t.loaded/t.total*100,10)+"%"
t.context.find(".ss-uploadfield-item-status").html(1==t.total?s["default"]._t("UploadField.LOADING"):n),t.context.find(".ss-uploadfield-item-progressbarvalue").css("width",n)}}},i,{fileInput:t,dropZone:n,
form:t.closest("form"),previewAsCanvas:!1,acceptFileTypes:new RegExp(i.acceptFileTypes,"i")})),this.data("fileupload")._isXHRUpload({multipart:!0})&&e(".ss-uploadfield-item-uploador").hide().show(),this._super()
}},onunmatch:function n(){e(".ss-uploadfield-dropzone").off("dragover dragenter dragleave drop"),this._super()},openSelectDialog:function i(t){var n=this,i=this.getConfig(),r="ss-uploadfield-dialog-"+this.attr("id"),a=e("#"+r)
a.length||(a=e('<div class="ss-uploadfield-dialog" id="'+r+'" />'))
var o=i.urlSelectDialog,s=null
t&&t.attr("data-fileid")>0&&(s=t.attr("data-fileid")),a.ssdialog({iframeUrl:o,height:550}),a.find("iframe").bind("load",function(t){var i=e(this).contents(),r=i.find(".grid-field")
i.find("table.grid-field").css("margin-top",0),i.find("input[name=action_doAttach]").unbind("click.openSelectDialog").bind("click.openSelectDialog",function(){var t=e.map(r.find(".ss-gridfield-item.ui-selected"),function(t){
return e(t).data("id")})
return t&&t.length&&n.attachFiles(t,s),a.ssdialog("close"),!1})}),a.ssdialog("open")},attachFiles:function r(t,n){var i=this,r=this.getConfig(),a=e('<div class="loader" />'),o=n?this.find(".ss-uploadfield-item[data-fileid='"+n+"']"):this.find(".ss-uploadfield-addfile")
o.children().hide(),o.append(a),e.ajax({type:"POST",url:r.urlAttach,data:{ids:t},complete:function s(e,t){o.children().show(),a.remove()},success:function l(t,r,a){t&&!e.isEmptyObject(t)&&i.fileupload("attach",{
files:t,options:i.fileupload("option"),replaceFileID:n})}})}}),e("div.ss-upload *").entwine({getUploadField:function a(){return this.parents("div.ss-upload:first")}}),e("div.ss-upload .ss-uploadfield-files .ss-uploadfield-item").entwine({
onadd:function o(){this._super(),this.closest(".ss-upload").find(".ss-uploadfield-addfile").addClass("borderTop")},onremove:function l(){e(".ss-uploadfield-files:not(:has(.ss-uploadfield-item))").closest(".ss-upload").find(".ss-uploadfield-addfile").removeClass("borderTop"),
this._super()}}),e("div.ss-upload .ss-uploadfield-startall").entwine({onclick:function u(e){return this.closest(".ss-upload").find(".ss-uploadfield-item-start button").click(),e.preventDefault(),!1}}),
e("div.ss-upload .ss-uploadfield-item-cancelfailed").entwine({onclick:function c(e){return this.closest(".ss-uploadfield-item").remove(),e.preventDefault(),!1}}),e("div.ss-upload .ss-uploadfield-item-remove:not(.ui-state-disabled), .ss-uploadfield-item-delete:not(.ui-state-disabled)").entwine({
onclick:function d(e){var t=this.closest("div.ss-upload"),n=t.getConfig("changeDetection"),i=t.data("fileupload"),r=this.closest(".ss-uploadfield-item"),a=""
return this.is(".ss-uploadfield-item-delete")?confirm(s["default"]._t("UploadField.ConfirmDelete"))&&(n.changeDetection&&this.closest("form").trigger("dirty"),i&&i._trigger("destroy",e,{context:r,url:this.data("href"),
type:"get",dataType:i.options.dataType})):(n.changeDetection&&this.closest("form").trigger("dirty"),i&&i._trigger("destroy",e,{context:r})),e.preventDefault(),!1}}),e("div.ss-upload .ss-uploadfield-item-edit-all").entwine({
onclick:function f(t){return e(this).hasClass("opened")?(e(".ss-uploadfield-item .ss-uploadfield-item-edit .toggle-details-icon.opened").each(function(t){e(this).closest(".ss-uploadfield-item-edit").click()
}),e(this).removeClass("opened").find(".toggle-details-icon").removeClass("opened")):(e(".ss-uploadfield-item .ss-uploadfield-item-edit .toggle-details-icon").each(function(t){e(this).hasClass("opened")||e(this).closest(".ss-uploadfield-item-edit").click()
}),e(this).addClass("opened").find(".toggle-details-icon").addClass("opened")),t.preventDefault(),!1}}),e("div.ss-upload:not(.disabled):not(.readonly) .ss-uploadfield-item-edit").entwine({onclick:function p(e){
var t=this,n=t.closest(".ss-uploadfield-item").find(".ss-uploadfield-item-editform"),i=n.prev(".ss-uploadfield-item-info"),r=n.find("iframe")
if(r.parent().hasClass("loading"))return e.preventDefault(),!1
if("about:blank"==r.attr("src")){var a=this.siblings()
r.attr("src",r.data("src")),r.parent().addClass("loading"),a.addClass("ui-state-disabled"),a.attr("disabled","disabled"),r.on("load",function(){r.parent().removeClass("loading"),r.data("src")&&(t._prepareIframe(r,n,i),
r.data("src",""))})}else t._prepareIframe(r,n,i)
return e.preventDefault(),!1},_prepareIframe:function h(e,t,n){var i
e.contents().ready(function(){var n=e.get(0).contentWindow.jQuery
n(n.find(":input")).bind("change",function(e){t.removeClass("edited"),t.addClass("edited")})}),t.hasClass("loading")||(i=this.hasClass("ss-uploadfield-item-edit")?this.siblings():this.find("ss-uploadfield-item-edit").siblings(),
t.parent(".ss-uploadfield-item").removeClass("ui-state-warning"),t.toggleEditForm(),n.find(".toggle-details-icon").hasClass("opened")?(i.addClass("ui-state-disabled"),i.attr("disabled","disabled")):(i.removeClass("ui-state-disabled"),
i.removeAttr("disabled")))}}),e("div.ss-upload .ss-uploadfield-item-editform").entwine({fitHeight:function m(){var t=this.find("iframe"),n=t.contents().find("body"),i=n.find("form").outerHeight(!0),r=i+(t.outerHeight(!0)-t.height()),a=r+(this.outerHeight(!0)-this.height())
e.browser.msie||"8.0"==e.browser.version.slice(0,3)||n.find("body").css({height:i}),t.height(r),this.animate({height:a},500)},toggleEditForm:function g(){var t=this.prev(".ss-uploadfield-item-info"),n=t.find(".ss-uploadfield-item-status"),i=this.find("iframe").contents(),r=i.find("#Form_EditForm_error"),a=""
0===this.height()?(a=s["default"]._t("UploadField.Editing","Editing ..."),this.fitHeight(),this.addClass("opened"),t.find(".toggle-details-icon").addClass("opened"),n.removeClass("ui-state-success-text").removeClass("ui-state-warning-text"),
i.find("#Form_EditForm_action_doEdit").click(function(){t.find("label .name").text(i.find("#Name input").val())}),e("div.ss-upload .ss-uploadfield-files .ss-uploadfield-item-actions .toggle-details-icon:not(.opened)").index()<0&&e("div.ss-upload .ss-uploadfield-item-edit-all").addClass("opened").find(".toggle-details-icon").addClass("opened")):(this.animate({
height:0},500),this.removeClass("opened"),t.find(".toggle-details-icon").removeClass("opened"),e("div.ss-upload .ss-uploadfield-item-edit-all").removeClass("opened").find(".toggle-details-icon").removeClass("opened"),
this.hasClass("edited")?r.hasClass("good")?(a=s["default"]._t("UploadField.CHANGESSAVED","Changes Saved"),this.removeClass("edited").parent(".ss-uploadfield-item").removeClass("ui-state-warning"),n.addClass("ui-state-success-text")):(a=s["default"]._t("UploadField.UNSAVEDCHANGES","Unsaved Changes"),
this.parent(".ss-uploadfield-item").addClass("ui-state-warning"),n.addClass("ui-state-warning-text")):(a=s["default"]._t("UploadField.NOCHANGES","No Changes"),n.addClass("ui-state-success-text")),r.removeClass("good").hide()),
n.attr("title",a).text(a)}}),e("div.ss-upload .ss-uploadfield-fromfiles").entwine({onclick:function v(e){return this.getUploadField().openSelectDialog(this.closest(".ss-uploadfield-item")),e.preventDefault(),
!1}})})},function(e,t,n){var i
!function(r){"use strict"
var a=function(e,t){var n=/[^\-\w]/.test(e)?new Function(a.arg,("var _s=''"+a.helper+";_s+='"+e.replace(a.regexp,a.func)+"';return _s;").split("_s+='';").join("")):a.cache[e]=a.cache[e]||a(a.load(e))
return n.tmpl=n.tmpl||a,t?n(t):n}
a.cache={},a.load=function(e){return document.getElementById(e).innerHTML},a.regexp=/(\s+)|('|\\)(?![^%]*%\})|(?:\{%(=|#)(.+?)%\})|(\{%)|(%\})/g,a.func=function(e,t,n,i,r,a,o,s,l){return t?s&&s+e.length!==l.length?" ":"":n?"\\"+e:i?"="===i?"'+_e("+r+")+'":"'+("+r+"||'')+'":a?"';":o?"_s+='":void 0
},a.encReg=/[<>&"\x00]/g,a.encMap={"<":"&lt;",">":"&gt;","&":"&amp;",'"':"&quot;","\0":""},a.encode=function(e){return String(e||"").replace(a.encReg,function(e){return a.encMap[e]})},a.arg="o",a.helper=",_t=arguments.callee.tmpl,_e=_t.encode,print=function(s,e){_s+=e&&(s||'')||_e(s);},include=function(s,d){_s+=_t(s,d);}",
i=function(){return a}.call(t,n,t,e),!(void 0!==i&&(e.exports=i))}(this)},function(e,t){"use strict"
window.tmpl.cache["ss-uploadfield-uploadtemplate"]=window.tmpl('{% for (var i=0, files=o.files, l=files.length, file=files[0]; i<l; file=files[++i]) { %}<li class="ss-uploadfield-item template-upload{% if (file.error) { %} ui-state-error{% } %}"><div class="ss-uploadfield-item-preview preview"><span></span></div><div class="ss-uploadfield-item-info"><label class="ss-uploadfield-item-name"><span class="name" title="{% if (file.name) { %}{%=file.name%}{% } else { %}'+ss.i18n._t("UploadField.NOFILENAME","Untitled")+'{% } %}">{% if (file.name) { %}{%=file.name%}{% } else { %}'+ss.i18n._t("UploadField.NOFILENAME","Untitled")+'{% } %}</span> {% if (!file.error) { %}<div class="ss-uploadfield-item-status">0%</div>{% } else { %}<div class="ss-uploadfield-item-status ui-state-error-text" title="{%=o.options.errorMessages[file.error] || file.error%}">{%=o.options.errorMessages[file.error] || file.error%}</div>{% } %}<div class="clear"><!-- --></div></label><div class="ss-uploadfield-item-actions">{% if (!file.error) { %}<div class="ss-uploadfield-item-progress"><div class="ss-uploadfield-item-progressbar"><div class="ss-uploadfield-item-progressbarvalue"></div></div></div>{% if (!o.options.autoUpload) { %}<div class="ss-uploadfield-item-start start"><button type="button" class="icon icon-16" data-icon="navigation">'+ss.i18n._t("UploadField.START","Start")+'</button></div>{% } %}{% } %}<div class="ss-uploadfield-item-cancel cancel"><button type="button" class="icon icon-16" data-icon="minus-circle" title="'+ss.i18n._t("UploadField.CANCELREMOVE","Cancel/Remove")+'">'+ss.i18n._t("UploadField.CANCELREMOVE","Cancel/Remove")+'</button></div><div class="ss-uploadfield-item-overwrite hide "><button type="button" data-icon="drive-upload" class="ss-uploadfield-item-overwrite-warning" title="'+ss.i18n._t("UploadField.OVERWRITE","Overwrite")+'">'+ss.i18n._t("UploadField.OVERWRITE","Overwrite")+"</button></div></div></div></li>{% } %}")
},function(e,t){"use strict"
tmpl.cache["ss-uploadfield-downloadtemplate"]=tmpl('{% for (var i=0, files=o.files, l=files.length, file=files[0]; i<l; file=files[++i]) { %}<li class="ss-uploadfield-item template-download{% if (file.error) { %} ui-state-error{% } %}" data-fileid="{%=file.id%}">{% if (file.thumbnail_url) { %}<div class="ss-uploadfield-item-preview preview"><span><img src="{%=file.thumbnail_url%}" alt="" /></span></div>{% } %}<div class="ss-uploadfield-item-info">{% if (!file.error && file.id) { %}<input type="hidden" name="{%=file.fieldname%}[Files][]" value="{%=file.id%}" />{% } %}{% if (!file.error && file.filename) { %}<input type="hidden" value="{%=file.filename%}" name="{%=file.fieldname%}[Filename]" /><input type="hidden" value="{%=file.hash%}" name="{%=file.fieldname%}[Hash]" /><input type="hidden" value="{%=file.variant%}" name="{%=file.fieldname%}[Variant]" />{% } %}<label class="ss-uploadfield-item-name"><span class="name" title="{%=file.name%}">{%=file.name%}</span> <span class="size">{%=o.formatFileSize(file.size)%}</span>{% if (!file.error) { %}<div class="ss-uploadfield-item-status ui-state-success-text" title="'+ss.i18n._t("UploadField.Uploaded","Uploaded")+'">'+ss.i18n._t("UploadField.Uploaded","Uploaded")+'</div>{% } else { %}<div class="ss-uploadfield-item-status ui-state-error-text" title="{%=o.options.errorMessages[file.error] || file.error%}">{%=o.options.errorMessages[file.error] || file.error%}</div>{% } %}<div class="clear"><!-- --></div></label>{% if (file.error) { %}<div class="ss-uploadfield-item-actions"><div class="ss-uploadfield-item-cancel ss-uploadfield-item-cancelfailed delete"><button type="button" class="icon icon-16" data-icon="delete" title="'+ss.i18n._t("UploadField.CANCELREMOVE","Cancel/Remove")+'">'+ss.i18n._t("UploadField.CANCELREMOVE","Cancel/Remove")+'</button></div></div>{% } else { %}<div class="ss-uploadfield-item-actions">{% print(file.buttons, true); %}</div>{% } %}</div>{% if (!file.error) { %}<div class="ss-uploadfield-item-editform"><iframe frameborder="0" data-src="{%=file.edit_url%}" src="about:blank"></iframe></div>{% } %}</li>{% } %}')
},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r);(0,a["default"])(document).ready(function(){(0,a["default"])("ul.SelectionGroup input.selector, ul.selection-group input.selector").live("click",function(){
var e=(0,a["default"])(this).closest("li")
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i);(0,o["default"])(document).ready(function(){(0,o["default"])("ul.SelectionGroup input.selector, ul.selection-group input.selector").live("click",function(){
var e=(0,o["default"])(this).closest("li")
e.addClass("selected")
var t=e.prevAll("li.selected")
t.length&&t.removeClass("selected")
var n=e.nextAll("li.selected")
n.length&&n.removeClass("selected"),(0,a["default"])(this).focus()})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
n(168),a["default"].fn.extend({ssDatepicker:function o(e){return(0,a["default"])(this).each(function(){if(!((0,a["default"])(this).prop("disabled")||(0,a["default"])(this).prop("readonly")||(0,a["default"])(this).hasClass("hasDatepicker"))){
(0,a["default"])(this).siblings("button").addClass("ui-icon ui-icon-calendar")
var t=a["default"].extend({},e||{},(0,a["default"])(this).data(),(0,a["default"])(this).data("jqueryuiconfig"))
t.showcalendar&&(t.locale&&a["default"].datepicker.regional[t.locale]&&(t=a["default"].extend({},a["default"].datepicker.regional[t.locale],t)),(0,a["default"])(this).datepicker(t))}})}}),(0,a["default"])(document).on("click",".field.date input.text,input.text.date",function(){
(0,a["default"])(this).ssDatepicker(),(0,a["default"])(this).data("datepicker")&&(0,a["default"])(this).datepicker("show")})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
n(168),a["default"].entwine("ss",function(e){e(".ss-toggle").entwine({onadd:function t(){this._super(),this.accordion({heightStyle:"content",collapsible:!0,active:!this.hasClass("ss-toggle-start-closed")&&0
})},onremove:function n(){this.data("accordion")&&this.accordion("destroy"),this._super()},getTabSet:function i(){return this.closest(".ss-tabset")},fromTabSet:{ontabsshow:function r(){this.accordion("resize")
n.length&&n.removeClass("selected"),(0,o["default"])(this).focus()})})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
n(168),o["default"].fn.extend({ssDatepicker:function a(e){return(0,o["default"])(this).each(function(){if(!((0,o["default"])(this).prop("disabled")||(0,o["default"])(this).prop("readonly")||(0,o["default"])(this).hasClass("hasDatepicker"))){
(0,o["default"])(this).siblings("button").addClass("ui-icon ui-icon-calendar")
var t=o["default"].extend({},e||{},(0,o["default"])(this).data(),(0,o["default"])(this).data("jqueryuiconfig"))
t.showcalendar&&(t.locale&&o["default"].datepicker.regional[t.locale]&&(t=o["default"].extend({},o["default"].datepicker.regional[t.locale],t)),(0,o["default"])(this).datepicker(t))}})}}),(0,o["default"])(document).on("click",".field.date input.text,input.text.date",function(){
(0,o["default"])(this).ssDatepicker(),(0,o["default"])(this).data("datepicker")&&(0,o["default"])(this).datepicker("show")})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
n(168),o["default"].entwine("ss",function(e){e(".ss-toggle").entwine({onadd:function t(){this._super(),this.accordion({heightStyle:"content",collapsible:!0,active:!this.hasClass("ss-toggle-start-closed")&&0
})},onremove:function n(){this.data("accordion")&&this.accordion("destroy"),this._super()},getTabSet:function r(){return this.closest(".ss-tabset")},fromTabSet:{ontabsshow:function i(){this.accordion("resize")
}}})})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
a["default"].entwine("ss",function(e){e(".memberdatetimeoptionset").entwine({onmatch:function t(){this.find(".toggle-content").hide(),this._super()}}),e(".memberdatetimeoptionset .toggle").entwine({onclick:function n(t){
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
o["default"].entwine("ss",function(e){e(".memberdatetimeoptionset").entwine({onmatch:function t(){this.find(".toggle-content").hide(),this._super()}}),e(".memberdatetimeoptionset .toggle").entwine({onclick:function n(t){
t.preventDefault()
var n=e(this).closest(".form__field-description").parent().find(".toggle-content")
n.is(":visible")?n.hide():n.show()}})})},function(e,t,n){(function(e){"use strict"
function t(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=t(i),a=n(114),o=t(a)
n(198),n(199),r["default"].entwine("ss",function(t){var n,i
t(window).bind("resize.treedropdownfield",function(){var e=function o(){t(".TreeDropdownField").closePanel()}
if(t.browser.msie&&parseInt(t.browser.version,10)<9){var r=t(window).width(),a=t(window).height()
r==n&&a==i||(n=r,i=a,e())}else e()})
var r={openlink:o["default"]._t("TreeDropdownField.OpenLink"),fieldTitle:"("+o["default"]._t("TreeDropdownField.FieldTitle")+")",searchFieldTitle:"("+o["default"]._t("TreeDropdownField.SearchFieldTitle")+")"
},a=function s(e){t(e.target).parents(".TreeDropdownField").length||t(".TreeDropdownField").closePanel()}
function t(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),i=t(r),o=n(114),a=t(o)
n(193),n(194),i["default"].entwine("ss",function(t){var n,r
t(window).bind("resize.treedropdownfield",function(){var e=function a(){t(".TreeDropdownField").closePanel()}
if(t.browser.msie&&parseInt(t.browser.version,10)<9){var i=t(window).width(),o=t(window).height()
i==n&&o==r||(n=i,r=o,e())}else e()})
var i={openlink:a["default"]._t("TreeDropdownField.OpenLink"),fieldTitle:"("+a["default"]._t("TreeDropdownField.FieldTitle")+")",searchFieldTitle:"("+a["default"]._t("TreeDropdownField.SearchFieldTitle")+")"
},o=function s(e){t(e.target).parents(".TreeDropdownField").length||t(".TreeDropdownField").closePanel()}
t(".TreeDropdownField").entwine({CurrentXhr:null,onadd:function l(){this.append('<span class="treedropdownfield-title"></span><div class="treedropdownfield-toggle-panel-link"><a href="#" class="ui-icon ui-icon-triangle-1-s"></a></div><div class="treedropdownfield-panel"><div class="tree-holder"></div></div>')
var e=r.openLink
var e=i.openLink
e&&this.find("treedropdownfield-toggle-panel-link a").attr("title",e),this.data("title")&&this.setTitle(this.data("title")),this.getPanel().hide(),this._super()},getPanel:function u(){return this.find(".treedropdownfield-panel")
},openPanel:function c(){t(".TreeDropdownField").closePanel(),t("body").bind("click",a)
},openPanel:function c(){t(".TreeDropdownField").closePanel(),t("body").bind("click",o)
var e=this.getPanel(),n=this.find(".tree-holder")
e.css("width",this.width()),e.show()
var i=this.find(".treedropdownfield-toggle-panel-link")
i.addClass("treedropdownfield-open-tree"),this.addClass("treedropdownfield-open-tree"),i.find("a").removeClass("ui-icon-triangle-1-s").addClass("ui-icon-triangle-1-n"),n.is(":empty")&&!e.hasClass("loading")?this.loadTree(null,this._riseUp):this._riseUp(),
this.trigger("panelshow")},_riseUp:function d(){var e=this,n=this.getPanel(),i=this.find(".treedropdownfield-toggle-panel-link"),r=i.innerHeight(),a,o,s
i.length>0&&(s=t(window).height()+t(document).scrollTop()-i.innerHeight(),o=i.offset().top,a=n.innerHeight(),o+a>s&&o-a>0?(e.addClass("treedropdownfield-with-rise"),r=-n.outerHeight()):e.removeClass("treedropdownfield-with-rise")),
n.css({top:r+"px"})},closePanel:function f(){e("body").unbind("click",a)
var r=this.find(".treedropdownfield-toggle-panel-link")
r.addClass("treedropdownfield-open-tree"),this.addClass("treedropdownfield-open-tree"),r.find("a").removeClass("ui-icon-triangle-1-s").addClass("ui-icon-triangle-1-n"),n.is(":empty")&&!e.hasClass("loading")?this.loadTree(null,this._riseUp):this._riseUp(),
this.trigger("panelshow")},_riseUp:function d(){var e=this,n=this.getPanel(),r=this.find(".treedropdownfield-toggle-panel-link"),i=r.innerHeight(),o,a,s
r.length>0&&(s=t(window).height()+t(document).scrollTop()-r.innerHeight(),a=r.offset().top,o=n.innerHeight(),a+o>s&&a-o>0?(e.addClass("treedropdownfield-with-rise"),i=-n.outerHeight()):e.removeClass("treedropdownfield-with-rise")),
n.css({top:i+"px"})},closePanel:function f(){e("body").unbind("click",o)
var t=this.find(".treedropdownfield-toggle-panel-link")
t.removeClass("treedropdownfield-open-tree"),this.removeClass("treedropdownfield-open-tree treedropdownfield-with-rise"),t.find("a").removeClass("ui-icon-triangle-1-n").addClass("ui-icon-triangle-1-s"),
this.getPanel().hide(),this.trigger("panelhide")},togglePanel:function p(){this[this.getPanel().is(":visible")?"closePanel":"openPanel"]()},setTitle:function h(e){e=e||this.data("title")||r.fieldTitle,
this.find(".treedropdownfield-title").html(e),this.data("title",e)},getTitle:function m(){return this.find(".treedropdownfield-title").text()},updateTitle:function g(){var e=this,t=e.find(".tree-holder"),n=this.getValue(),i=function r(){
this.getPanel().hide(),this.trigger("panelhide")},togglePanel:function p(){this[this.getPanel().is(":visible")?"closePanel":"openPanel"]()},setTitle:function h(e){e=e||this.data("title")||i.fieldTitle,
this.find(".treedropdownfield-title").html(e),this.data("title",e)},getTitle:function m(){return this.find(".treedropdownfield-title").text()},updateTitle:function g(){var e=this,t=e.find(".tree-holder"),n=this.getValue(),r=function i(){
var n=e.getValue()
if(n){var i=t.find('*[data-id="'+n+'"]'),r=i.children("a").find("span.jstree_pageicon")?i.children("a").find("span.item").html():null
r||(r=i.length>0?t.jstree("get_text",i[0]):null),r&&(e.setTitle(r),e.data("title",r)),i&&t.jstree("select_node",i)}else e.setTitle(e.data("empty-title")),e.removeData("title")}
t.is(":empty")&&n?this.loadTree({forceValue:n},i):i()},setValue:function v(e){this.data("metadata",t.extend(this.data("metadata"),{id:e})),this.find(":input:hidden").val(e).trigger("valueupdated").trigger("change")
if(n){var r=t.find('*[data-id="'+n+'"]'),i=r.children("a").find("span.jstree_pageicon")?r.children("a").find("span.item").html():null
i||(i=r.length>0?t.jstree("get_text",r[0]):null),i&&(e.setTitle(i),e.data("title",i)),r&&t.jstree("select_node",r)}else e.setTitle(e.data("empty-title")),e.removeData("title")}
t.is(":empty")&&n?this.loadTree({forceValue:n},r):r()},setValue:function y(e){this.data("metadata",t.extend(this.data("metadata"),{id:e})),this.find(":input:hidden").val(e).trigger("valueupdated").trigger("change")
},getValue:function y(){return this.find(":input:hidden").val()},loadTree:function b(e,n){var i=this,r=this.getPanel(),a=t(r).find(".tree-holder"),e=e?t.extend({},this.getRequestParams(),e):this.getRequestParams(),o
},getValue:function b(){return this.find(":input:hidden").val()},loadTree:function v(e,n){var r=this,i=this.getPanel(),o=t(i).find(".tree-holder"),e=e?t.extend({},this.getRequestParams(),e):this.getRequestParams(),a
this.getCurrentXhr()&&this.getCurrentXhr().abort(),r.addClass("loading"),o=t.ajax({url:this.data("urlTree"),data:e,complete:function s(e,t){r.removeClass("loading")},success:function l(e,r,o){a.html(e)
this.getCurrentXhr()&&this.getCurrentXhr().abort(),i.addClass("loading"),a=t.ajax({url:this.data("urlTree"),data:e,complete:function s(e,t){i.removeClass("loading")},success:function l(e,i,a){o.html(e)
var s=!0
a.jstree("destroy").bind("loaded.jstree",function(e,t){var r=i.getValue(),o=a.find('*[data-id="'+r+'"]'),l=t.inst.get_selected()
r&&o!=l&&t.inst.select_node(o),s=!1,n&&n.apply(i)}).jstree(i.getTreeConfig()).bind("select_node.jstree",function(e,n){var r=n.rslt.obj,a=t(r).data("id")
s||i.getValue()!=a?(i.data("metadata",t.extend({id:a},t(r).getMetaData())),i.setTitle(n.inst.get_text(r)),i.setValue(a)):(i.data("metadata",null),i.setTitle(null),i.setValue(null),n.inst.deselect_node(r)),
s||i.closePanel(),s=!1}),i.setCurrentXhr(null)}}),this.setCurrentXhr(o)},getTreeConfig:function _(){var e=this
return{core:{html_titles:!0,animation:0},html_data:{data:this.getPanel().find(".tree-holder").html(),ajax:{url:function n(i){var n=t.path.parseUrl(e.data("urlTree")).hrefNoSearch
return n+"/"+(t(i).data("id")?t(i).data("id"):0)},data:function i(n){var i=t.query.load(e.data("urlTree")).keys,r=e.getRequestParams()
return r=t.extend({},i,r,{ajax:1})}}},ui:{select_limit:1,initially_select:[this.getPanel().find(".current").attr("id")]},themes:{theme:"apple"},types:{types:{"default":{check_node:function r(e){return!e.hasClass("disabled")
o.jstree("destroy").bind("loaded.jstree",function(e,t){var i=r.getValue(),a=o.find('*[data-id="'+i+'"]'),l=t.inst.get_selected()
i&&a!=l&&t.inst.select_node(a),s=!1,n&&n.apply(r)}).jstree(r.getTreeConfig()).bind("select_node.jstree",function(e,n){var i=n.rslt.obj,o=t(i).data("id")
s||r.getValue()!=o?(r.data("metadata",t.extend({id:o},t(i).getMetaData())),r.setTitle(n.inst.get_text(i)),r.setValue(o)):(r.data("metadata",null),r.setTitle(null),r.setValue(null),n.inst.deselect_node(i)),
s||r.closePanel(),s=!1}),r.setCurrentXhr(null)}}),this.setCurrentXhr(a)},getTreeConfig:function _(){var e=this
return{core:{html_titles:!0,animation:0},html_data:{data:this.getPanel().find(".tree-holder").html(),ajax:{url:function n(r){var n=t.path.parseUrl(e.data("urlTree")).hrefNoSearch
return n+"/"+(t(r).data("id")?t(r).data("id"):0)},data:function r(n){var r=t.query.load(e.data("urlTree")).keys,i=e.getRequestParams()
return i=t.extend({},r,i,{ajax:1})}}},ui:{select_limit:1,initially_select:[this.getPanel().find(".current").attr("id")]},themes:{theme:"apple"},types:{types:{"default":{check_node:function i(e){return!e.hasClass("disabled")
},uncheck_node:function a(e){return!e.hasClass("disabled")},select_node:function o(e){return!e.hasClass("disabled")},deselect_node:function s(e){return!e.hasClass("disabled")}}}},plugins:["html_data","ui","themes","types"]
},uncheck_node:function o(e){return!e.hasClass("disabled")},select_node:function a(e){return!e.hasClass("disabled")},deselect_node:function s(e){return!e.hasClass("disabled")}}}},plugins:["html_data","ui","themes","types"]
}},getRequestParams:function w(){return{}}}),t(".TreeDropdownField .tree-holder li").entwine({getMetaData:function C(){var e=this.attr("class").match(/class-([^\s]*)/i),t=e?e[1]:""
return{ClassName:t}}}),t(".TreeDropdownField *").entwine({getField:function T(){return this.parents(".TreeDropdownField:first")}}),t(".TreeDropdownField").entwine({onclick:function E(e){return this.togglePanel(),
!1}}),t(".TreeDropdownField .treedropdownfield-panel").entwine({onclick:function P(e){return!1}}),t(".TreeDropdownField.searchable").entwine({onadd:function O(){this._super()
var e=o["default"]._t("TreeDropdownField.ENTERTOSEARCH")
this.find(".treedropdownfield-panel").prepend(t('<input type="text" class="search treedropdownfield-search" data-skip-autofocus="true" placeholder="'+e+'" value="" />'))},search:function S(e,t){this.openPanel(),
this.loadTree({search:e},t)},cancelSearch:function k(){this.closePanel(),this.loadTree()}}),t(".TreeDropdownField.searchable input.search").entwine({onkeydown:function j(e){var t=this.getField()
return{ClassName:t}}}),t(".TreeDropdownField *").entwine({getField:function T(){return this.parents(".TreeDropdownField:first")}}),t(".TreeDropdownField").entwine({onclick:function P(e){return this.togglePanel(),
!1}}),t(".TreeDropdownField .treedropdownfield-panel").entwine({onclick:function E(e){return!1}}),t(".TreeDropdownField.searchable").entwine({onadd:function O(){this._super()
var e=a["default"]._t("TreeDropdownField.ENTERTOSEARCH")
this.find(".treedropdownfield-panel").prepend(t('<input type="text" class="search treedropdownfield-search" data-skip-autofocus="true" placeholder="'+e+'" value="" />'))},search:function k(e,t){this.openPanel(),
this.loadTree({search:e},t)},cancelSearch:function S(){this.closePanel(),this.loadTree()}}),t(".TreeDropdownField.searchable input.search").entwine({onkeydown:function j(e){var t=this.getField()
return 13==e.keyCode?(t.search(this.val()),!1):void(27==e.keyCode&&t.cancelSearch())}}),t(".TreeDropdownField.multiple").entwine({getTreeConfig:function x(){var e=this._super()
return e.checkbox={override_ui:!0,two_state:!0},e.plugins.push("checkbox"),e.ui.select_limit=-1,e},loadTree:function R(e,n){var i=this,r=this.getPanel(),a=t(r).find(".tree-holder"),e=e?t.extend({},this.getRequestParams(),e):this.getRequestParams(),o
return e.checkbox={override_ui:!0,two_state:!0},e.plugins.push("checkbox"),e.ui.select_limit=-1,e},loadTree:function R(e,n){var r=this,i=this.getPanel(),o=t(i).find(".tree-holder"),e=e?t.extend({},this.getRequestParams(),e):this.getRequestParams(),a
this.getCurrentXhr()&&this.getCurrentXhr().abort(),r.addClass("loading"),o=t.ajax({url:this.data("urlTree"),data:e,complete:function s(e,t){r.removeClass("loading")},success:function l(e,r,o){a.html(e)
this.getCurrentXhr()&&this.getCurrentXhr().abort(),i.addClass("loading"),a=t.ajax({url:this.data("urlTree"),data:e,complete:function s(e,t){i.removeClass("loading")},success:function l(e,i,a){o.html(e)
var s=!0
i.setCurrentXhr(null),a.jstree("destroy").bind("loaded.jstree",function(e,r){t.each(i.getValue(),function(e,t){r.inst.check_node(a.find("*[data-id="+t+"]"))}),s=!1,n&&n.apply(i)}).jstree(i.getTreeConfig()).bind("uncheck_node.jstree check_node.jstree",function(e,n){
var r=n.inst.get_checked(null,!0)
i.setValue(t.map(r,function(e,n){return t(e).data("id")})),i.setTitle(t.map(r,function(e,t){return n.inst.get_text(e)})),i.data("metadata",t.map(r,function(e,n){return{id:t(e).data("id"),metadata:t(e).getMetaData()
}}))})}}),this.setCurrentXhr(o)},getValue:function I(){var e=this._super()
return e.split(/ *, */)},setValue:function A(e){this._super(t.isArray(e)?e.join(","):e)},setTitle:function F(e){this._super(t.isArray(e)?e.join(", "):e)},updateTitle:function D(){}}),t(".TreeDropdownField input[type=hidden]").entwine({
r.setCurrentXhr(null),o.jstree("destroy").bind("loaded.jstree",function(e,i){t.each(r.getValue(),function(e,t){i.inst.check_node(o.find("*[data-id="+t+"]"))}),s=!1,n&&n.apply(r)}).jstree(r.getTreeConfig()).bind("uncheck_node.jstree check_node.jstree",function(e,n){
var i=n.inst.get_checked(null,!0)
r.setValue(t.map(i,function(e,n){return t(e).data("id")})),r.setTitle(t.map(i,function(e,t){return n.inst.get_text(e)})),r.data("metadata",t.map(i,function(e,n){return{id:t(e).data("id"),metadata:t(e).getMetaData()
}}))})}}),this.setCurrentXhr(a)},getValue:function I(){var e=this._super()
return e.split(/ *, */)},setValue:function A(e){this._super(t.isArray(e)?e.join(","):e)},setTitle:function D(e){this._super(t.isArray(e)?e.join(", "):e)},updateTitle:function F(){}}),t(".TreeDropdownField input[type=hidden]").entwine({
onadd:function M(){this._super(),this.bind("change.TreeDropdownField",function(){t(this).getField().updateTitle()})},onremove:function N(){this._super(),this.unbind(".TreeDropdownField")}})})}).call(t,n(1))
},,,function(module,exports,__webpack_require__){"use strict"
function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},_jQuery=__webpack_require__(1),_jQuery2=_interopRequireDefault(_jQuery),_i18n=__webpack_require__(114),_i18n2=_interopRequireDefault(_i18n),_react=__webpack_require__(5),_react2=_interopRequireDefault(_react),_reactDom=__webpack_require__(182),_reactDom2=_interopRequireDefault(_reactDom),_reactApollo=__webpack_require__(201),ss="undefined"!=typeof window.ss?window.ss:{}
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_jQuery=__webpack_require__(1),_jQuery2=_interopRequireDefault(_jQuery),_i18n=__webpack_require__(114),_i18n2=_interopRequireDefault(_i18n),_react=__webpack_require__(5),_react2=_interopRequireDefault(_react),_reactDom=__webpack_require__(182),_reactDom2=_interopRequireDefault(_reactDom),_reactApollo=__webpack_require__(196),ss="undefined"!=typeof window.ss?window.ss:{}
ss.editorWrappers={},ss.editorWrappers.tinyMCE=function(){var editorID
return{init:function e(t){editorID=t,this.create()},destroy:function t(){tinymce.EditorManager.execCommand("mceRemoveEditor",!1,editorID)},getInstance:function n(){return tinymce.EditorManager.get(editorID)
},onopen:function i(){},onclose:function r(){},getConfig:function a(){var e="#"+editorID,t=(0,_jQuery2["default"])(e).data("config"),n=this
return t.selector=e,t.setup=function(e){e.on("change",function(){n.save()})},t},save:function o(){var e=this.getInstance()
},onopen:function r(){},onclose:function i(){},getConfig:function o(){var e="#"+editorID,t=(0,_jQuery2["default"])(e).data("config"),n=this
return t.selector=e,t.setup=function(e){e.on("change",function(){n.save()})},t},save:function a(){var e=this.getInstance()
e.save(),(0,_jQuery2["default"])(e.getElement()).trigger("change")},create:function s(){var e=this.getConfig()
"undefined"!=typeof e.baseURL&&(tinymce.EditorManager.baseURL=e.baseURL),tinymce.init(e)},repaint:function l(){},isDirty:function u(){return this.getInstance().isDirty()},getContent:function c(){return this.getInstance().getContent()
},getDOM:function d(){return this.getInstance().getElement()},getContainer:function f(){return this.getInstance().getContainer()},getSelectedNode:function p(){return this.getInstance().selection.getNode()
},selectNode:function h(e){this.getInstance().selection.select(e)},setContent:function m(e,t){this.getInstance().setContent(e,t)},insertContent:function g(e,t){this.getInstance().insertContent(e,t)},replaceContent:function v(e,t){
this.getInstance().execCommand("mceReplaceContent",!1,e,t)},insertLink:function y(e,t){this.getInstance().execCommand("mceInsertLink",!1,e,t)},removeLink:function b(){this.getInstance().execCommand("unlink",!1)
},selectNode:function h(e){this.getInstance().selection.select(e)},setContent:function m(e,t){this.getInstance().setContent(e,t)},insertContent:function g(e,t){this.getInstance().insertContent(e,t)},replaceContent:function y(e,t){
this.getInstance().execCommand("mceReplaceContent",!1,e,t)},insertLink:function b(e,t){this.getInstance().execCommand("mceInsertLink",!1,e,t)},removeLink:function v(){this.getInstance().execCommand("unlink",!1)
},cleanLink:function cleanLink(href,node){var settings=this.getConfig,cb=settings.urlconverter_callback,cu=tinyMCE.settings.convert_urls
return cb&&(href=eval(cb+"(href, node, true);")),cu&&href.match(new RegExp("^"+tinyMCE.settings.document_base_url+"(.*)$"))&&(href=RegExp.$1),href.match(/^javascript:\s*mctmp/)&&(href=""),href},createBookmark:function _(){
@ -1804,31 +1689,31 @@ return this.getInstance().selection.getBookmark()},moveToBookmark:function w(e){
},addUndo:function T(){this.getInstance().undoManager.add()}}},ss.editorWrappers["default"]=ss.editorWrappers.tinyMCE,_jQuery2["default"].entwine("ss",function(e){e("textarea.htmleditor").entwine({Editor:null,
onadd:function t(){var e=this.data("editor")||"default",t=ss.editorWrappers[e]()
this.setEditor(t),t.init(this.attr("id")),this._super()},onremove:function n(){this.getEditor().destroy(),this._super()},"from .cms-edit-form":{onbeforesubmitform:function i(){this.getEditor().save(),this._super()
this.setEditor(t),t.init(this.attr("id")),this._super()},onremove:function n(){this.getEditor().destroy(),this._super()},"from .cms-edit-form":{onbeforesubmitform:function r(){this.getEditor().save(),this._super()
}},openLinkDialog:function r(){this.openDialog("link")},openMediaDialog:function a(){this.openDialog("media")},openDialog:function o(t){if("media"===t&&window.InsertMediaModal){var n=e("#insert-media-react__dialog-wrapper")
}},openLinkDialog:function i(){this.openDialog("link")},openMediaDialog:function o(){this.openDialog("media")},openDialog:function a(t){if("media"===t&&window.InsertMediaModal){var n=e("#insert-media-react__dialog-wrapper")
return n.length||(n=e('<div id="insert-media-react__dialog-wrapper" />'),e("body").append(n)),n.setElement(this),void n.open()}var i=function s(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()
return n.length||(n=e('<div id="insert-media-react__dialog-wrapper" />'),e("body").append(n)),n.setElement(this),void n.open()}var r=function s(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()
},r=this,a=e("#cms-editor-dialogs").data("url"+i(t)+"form"),o=e(".htmleditorfield-"+t+"dialog")
if(!a){if("media"===t)throw new Error("Install silverstripe/asset-admin to use media dialog")
throw new Error("Dialog named "+t+" is not available.")}o.length?(o.getForm().setElement(this),o.html(""),o.addClass("loading"),o.open()):(o=e('<div class="htmleditorfield-dialog htmleditorfield-'+t+'dialog loading">'),
e("body").append(o)),e.ajax({url:a,complete:function l(){o.removeClass("loading")},success:function u(e){o.html(e),o.getForm().setElement(r),o.trigger("ssdialogopen")}})}}),e(".htmleditorfield-dialog").entwine({
},i=this,o=e("#cms-editor-dialogs").data("url"+r(t)+"form"),a=e(".htmleditorfield-"+t+"dialog")
if(!o){if("media"===t)throw new Error("Install silverstripe/asset-admin to use media dialog")
throw new Error("Dialog named "+t+" is not available.")}a.length?(a.getForm().setElement(this),a.html(""),a.addClass("loading"),a.open()):(a=e('<div class="htmleditorfield-dialog htmleditorfield-'+t+'dialog loading">'),
e("body").append(a)),e.ajax({url:o,complete:function l(){a.removeClass("loading")},success:function u(e){a.html(e),a.getForm().setElement(i),a.trigger("ssdialogopen")}})}}),e(".htmleditorfield-dialog").entwine({
onadd:function s(){this.is(".ui-dialog-content")||this.ssdialog({autoOpen:!0,buttons:{insert:{text:_i18n2["default"]._t("HtmlEditorField.INSERT","Insert"),"data-icon":"accept","class":"btn action btn-primary media-insert",
click:function t(){e(this).find("form").submit()}}}}),this._super()},getForm:function l(){return this.find("form")},open:function u(){this.ssdialog("open")},close:function c(){this.ssdialog("close")},toggle:function d(e){
this.is(":visible")?this.close():this.open()},onscroll:function f(){this.animate({scrollTop:this.find("form").height()},500)}}),e("form.htmleditorfield-form").entwine({Selection:null,Bookmark:null,Element:null,
setSelection:function p(t){return this._super(e(t))},onadd:function h(){var e=this.find(":header:first")
this.getDialog().attr("title",e.text()),this._super()},onremove:function m(){this.setSelection(null),this.setBookmark(null),this.setElement(null),this._super()},getDialog:function g(){return this.closest(".htmleditorfield-dialog")
},fromDialog:{onssdialogopen:function v(){var e=this.getEditor()
},fromDialog:{onssdialogopen:function y(){var e=this.getEditor()
this.setSelection(e.getSelectedNode()),this.setBookmark(e.createBookmark()),e.blur(),this.find(':input:not(:submit)[data-skip-autofocus!="true"]').filter(":visible:enabled").eq(0).focus(),this.redraw(),
this.updateFromEditor()},onssdialogclose:function y(){var e=this.getEditor()
e.moveToBookmark(this.getBookmark()),this.setSelection(null),this.setBookmark(null),this.resetFields()}},getEditor:function b(){return this.getElement().getEditor()},modifySelection:function _(e){var t=this.getEditor()
this.updateFromEditor()},onssdialogclose:function b(){var e=this.getEditor()
e.moveToBookmark(this.getBookmark()),this.setSelection(null),this.setBookmark(null),this.resetFields()}},getEditor:function v(){return this.getElement().getEditor()},modifySelection:function _(e){var t=this.getEditor()
t.moveToBookmark(this.getBookmark()),e.call(this,t),this.setSelection(t.getSelectedNode()),this.setBookmark(t.createBookmark()),t.blur()},updateFromEditor:function w(){},redraw:function C(){},resetFields:function T(){
this.find(".tree-holder").empty()}}),e("form.htmleditorfield-linkform").entwine({onsubmit:function E(e){return this.insertLink(),this.getDialog().close(),!1},resetFields:function P(){this._super(),this[0].reset()
this.find(".tree-holder").empty()}}),e("form.htmleditorfield-linkform").entwine({onsubmit:function P(e){return this.insertLink(),this.getDialog().close(),!1},resetFields:function E(){this._super(),this[0].reset()
},redraw:function O(){this._super()
var e=this.find(":input[name=LinkType]:checked").val()
@ -1837,18 +1722,18 @@ this.find('.field[id$="'+e+'_Holder"]').attr("style","display: -webkit-flex; dis
"email"==e?this.find('.field[id$="Subject_Holder"]').attr("style","display: -webkit-flex; display: flex"):this.find('.field[id$="TargetBlank_Holder"]').attr("style","display: -webkit-flex; display: flex"),
"anchor"==e&&this.find('.field[id$="AnchorSelector_Holder"]').attr("style","display: -webkit-flex; display: flex"),this.find('.field[id$="Description_Holder"]').attr("style","display: -webkit-flex; display: flex")
},getLinkAttributes:function S(){var e,t=null,n=this.find(":input[name=Subject]").val(),i=this.find(":input[name=Anchor]").val()
},getLinkAttributes:function k(){var e,t=null,n=this.find(":input[name=Subject]").val(),r=this.find(":input[name=Anchor]").val()
switch(this.find(":input[name=TargetBlank]").is(":checked")&&(t="_blank"),this.find(":input[name=LinkType]:checked").val()){case"internal":e="[sitetree_link,id="+this.find(":input[name=internal]").val()+"]",
i&&(e+="#"+i)
r&&(e+="#"+r)
break
case"anchor":e="#"+i
case"anchor":e="#"+r
break
case"file":var r=this.find(":input[name=file]").val()
e=r?"[file_link,id="+r+"]":""
case"file":var i=this.find(":input[name=file]").val()
e=i?"[file_link,id="+i+"]":""
break
case"email":e="mailto:"+this.find(":input[name=email]").val(),n&&(e+="?subject="+encodeURIComponent(n)),t=null
break
default:e=this.find(":input[name=external]").val(),e.indexOf("://")==-1&&(e="http://"+e)}return{href:e,target:t,title:this.find(":input[name=Description]").val()}},insertLink:function k(){this.modifySelection(function(e){
default:e=this.find(":input[name=external]").val(),e.indexOf("://")==-1&&(e="http://"+e)}return{href:e,target:t,title:this.find(":input[name=Description]").val()}},insertLink:function S(){this.modifySelection(function(e){
e.insertLink(this.getLinkAttributes())})},removeLink:function j(){this.modifySelection(function(e){e.removeLink()}),this.resetFileField(),this.close()},resetFileField:function x(){var e=this.find('.ss-uploadfield[id$="file_Holder"]'),t=e.data("fileupload"),n=e.find(".ss-uploadfield-item[data-fileid]")
@ -1858,186 +1743,93 @@ n.length&&(t._trigger("destroy",null,{context:n}),e.find(".ss-uploadfield-addfil
this.find(":input[name=Anchor]").parent().append(n),this.updateAnchorSelector(),n.change(function(n){t.find(':input[name="Anchor"]').val(e(this).val())})}},getAnchors:function I(){var t=this.find(":input[name=LinkType]:checked").val(),n=e.Deferred()
switch(t){case"anchor":var i=[],r=this.getEditor()
if(r){var a=r.getContent().match(/\s+(name|id)\s*=\s*(["'])([^\2\s>]*?)\2|\s+(name|id)\s*=\s*([^"']+)[\s +>]/gim)
if(a&&a.length)for(var o=0;o<a.length;o++){var s=a[o].indexOf("id=")==-1?7:5
i.push(a[o].substr(s).replace(/"$/,""))}}n.resolve(i)
switch(t){case"anchor":var r=[],i=this.getEditor()
if(i){var o=i.getContent().match(/\s+(name|id)\s*=\s*(["'])([^\2\s>]*?)\2|\s+(name|id)\s*=\s*([^"']+)[\s +>]/gim)
if(o&&o.length)for(var a=0;a<o.length;a++){var s=o[a].indexOf("id=")==-1?7:5
r.push(o[a].substr(s).replace(/"$/,""))}}n.resolve(r)
break
case"internal":var l=this.find(":input[name=internal]").val()
l?e.ajax({url:e.path.addSearchParams(this.attr("action").replace("LinkForm","getanchors"),{PageID:parseInt(l)}),success:function u(t,i,r){n.resolve(e.parseJSON(t))},error:function c(e,t){n.reject(e.responseText)
l?e.ajax({url:e.path.addSearchParams(this.attr("action").replace("LinkForm","getanchors"),{PageID:parseInt(l)}),success:function u(t,r,i){n.resolve(e.parseJSON(t))},error:function c(e,t){n.reject(e.responseText)
}}):n.resolve([])
break
default:n.reject(_i18n2["default"]._t("HtmlEditorField.ANCHORSNOTSUPPORTED","Anchors are not supported for this link type."))}return n.promise()},updateAnchorSelector:function A(){var t=this,n=this.find(":input[name=AnchorSelector]"),i=this.getAnchors()
default:n.reject(_i18n2["default"]._t("HtmlEditorField.ANCHORSNOTSUPPORTED","Anchors are not supported for this link type."))}return n.promise()},updateAnchorSelector:function A(){var t=this,n=this.find(":input[name=AnchorSelector]"),r=this.getAnchors()
n.empty(),n.append(e('<option value="" selected="1">'+_i18n2["default"]._t("HtmlEditorField.LOOKINGFORANCHORS","Looking for anchors...")+"</option>")),i.done(function(t){if(n.empty(),n.append(e('<option value="" selected="1">'+_i18n2["default"]._t("HtmlEditorField.SelectAnchor")+"</option>")),
t)for(var i=0;i<t.length;i++)n.append(e('<option value="'+t[i]+'">'+t[i]+"</option>"))}).fail(function(t){n.empty(),n.append(e('<option value="" selected="1">'+t+"</option>"))}),e.browser.msie&&n.hide().show()
n.empty(),n.append(e('<option value="" selected="1">'+_i18n2["default"]._t("HtmlEditorField.LOOKINGFORANCHORS","Looking for anchors...")+"</option>")),r.done(function(t){if(n.empty(),n.append(e('<option value="" selected="1">'+_i18n2["default"]._t("HtmlEditorField.SelectAnchor")+"</option>")),
t)for(var r=0;r<t.length;r++)n.append(e('<option value="'+t[r]+'">'+t[r]+"</option>"))}).fail(function(t){n.empty(),n.append(e('<option value="" selected="1">'+t+"</option>"))}),e.browser.msie&&n.hide().show()
},updateFromEditor:function F(){var e=/<\S[^><]*>/g,t,n=this.getCurrentLink()
if(n)for(t in n){var i=this.find(":input[name="+t+"]"),r=n[t]
"string"==typeof r&&(r=r.replace(e,"")),i.is(":checkbox")?i.prop("checked",r).change():i.is(":radio")?i.val([r]).change():"file"==t?(i=this.find(':input[name="'+t+'[Uploads][]"]'),i=i.parents(".ss-uploadfield"),
function a(e,t){e.getConfig()?e.attachFiles([t]):setTimeout(function(){a(e,t)},50)}(i,r)):i.val(r).change()}},getCurrentLink:function D(){var e=this.getSelection(),t="",n="",i="",r="insert",a="",o=null
},updateFromEditor:function D(){var e=/<\S[^><]*>/g,t,n=this.getCurrentLink()
if(n)for(t in n){var r=this.find(":input[name="+t+"]"),i=n[t]
"string"==typeof i&&(i=i.replace(e,"")),r.is(":checkbox")?r.prop("checked",i).change():r.is(":radio")?r.val([i]).change():r.val(i).change()}},getCurrentLink:function F(){var e=this.getSelection(),t="",n="",r="",i="insert",o="",a=null
return e.length&&(o=e.is("a")?e:e=e.parents("a:first")),o&&o.length&&this.modifySelection(function(e){e.selectNode(o[0])}),o.attr("href")||(o=null),o&&(t=o.attr("href"),n=o.attr("target"),i=o.attr("title"),
a=o.attr("class"),t=this.getEditor().cleanLink(t,o),r="update"),t.match(/^mailto:(.*)$/)?{LinkType:"email",email:RegExp.$1,Description:i}:t.match(/^(assets\/.*)$/)||t.match(/^\[file_link\s*(?:\s*|%20|,)?id=([0-9]+)\]?(#.*)?$/)?{
LinkType:"file",file:RegExp.$1,Description:i,TargetBlank:!!n}:t.match(/^#(.*)$/)?{LinkType:"anchor",Anchor:RegExp.$1,Description:i,TargetBlank:!!n}:t.match(/^\[sitetree_link(?:\s*|%20|,)?id=([0-9]+)\]?(#.*)?$/i)?{
LinkType:"internal",internal:RegExp.$1,Anchor:RegExp.$2?RegExp.$2.substr(1):"",Description:i,TargetBlank:!!n}:t?{LinkType:"external",external:t,Description:i,TargetBlank:!!n}:null}}),e("form.htmleditorfield-linkform input[name=LinkType]").entwine({
return e.length&&(a=e.is("a")?e:e=e.parents("a:first")),a&&a.length&&this.modifySelection(function(e){e.selectNode(a[0])}),a.attr("href")||(a=null),a&&(t=a.attr("href"),n=a.attr("target"),r=a.attr("title"),
o=a.attr("class"),t=this.getEditor().cleanLink(t,a),i="update"),t.match(/^mailto:(.*)$/)?{LinkType:"email",email:RegExp.$1,Description:r}:t.match(/^(assets\/.*)$/)||t.match(/^\[file_link\s*(?:\s*|%20|,)?id=([0-9]+)\]?(#.*)?$/)?{
LinkType:"file",file:RegExp.$1,Description:r,TargetBlank:!!n}:t.match(/^#(.*)$/)?{LinkType:"anchor",Anchor:RegExp.$1,Description:r,TargetBlank:!!n}:t.match(/^\[sitetree_link(?:\s*|%20|,)?id=([0-9]+)\]?(#.*)?$/i)?{
LinkType:"internal",internal:RegExp.$1,Anchor:RegExp.$2?RegExp.$2.substr(1):"",Description:r,TargetBlank:!!n}:t?{LinkType:"external",external:t,Description:r,TargetBlank:!!n}:null}}),e("form.htmleditorfield-linkform input[name=LinkType]").entwine({
onclick:function M(e){this.parents("form:first").redraw(),this._super()},onchange:function N(){this.parents("form:first").redraw()
var e=this.parent().find(":checked").val()
"anchor"!==e&&"internal"!==e||this.parents("form.htmleditorfield-linkform").updateAnchorSelector(),this._super()}}),e("form.htmleditorfield-linkform input[name=internal]").entwine({onvalueupdated:function U(){
this.parents("form.htmleditorfield-linkform").updateAnchorSelector(),this._super()}}),e("form.htmleditorfield-linkform :submit[name=action_remove]").entwine({onclick:function L(e){return this.parents("form:first").removeLink(),
this._super(),!1}}),e("form.htmleditorfield-mediaform").entwine({toggleCloseButton:function B(){var e=Boolean(this.find(".ss-htmleditorfield-file").length)
this.find(".overview .action-delete")[e?"hide":"show"]()},onsubmit:function H(){return this.modifySelection(function(t){this.find(".ss-htmleditorfield-file").each(function(){e(this).insertHTML(t)})}),this.getDialog().close(),
!1},updateFromEditor:function $(){var e=this,t=this.getSelection()
if(t.is("img")){var n=t.data("id")||t.data("url")||t.attr("src")
this.showFileView(n).done(function(n){n.updateFromNode(t),e.toggleCloseButton(),e.redraw()})}this.redraw()},redraw:function q(t){this._super()
var n=this.getSelection(),i=Boolean(this.find(".ss-htmleditorfield-file").length),r=n.is("img"),a=this.hasClass("insertingURL"),o=this.find(".header-edit")
o[i?"show":"hide"](),this.closest(".ui-dialog").find(".ui-dialog-buttonpane .media-insert").toggleClass("ui-state-disabled",!i).prop("disabled",!i),this.find(".htmleditorfield-default-panel")[r||a?"hide":"show"](),
this.find(".htmleditorfield-web-panel")[r||!a?"hide":"show"]()
var s=this.find(".htmleditorfield-mediaform-heading.insert")
r?s.hide():a?(s.show().text(_i18n2["default"]._t("HtmlEditorField.INSERTURL")).prepend('<button class="back-button font-icon-left-open no-text" title="'+_i18n2["default"]._t("HtmlEditorField.BACK")+'"></button>'),
this.find(".htmleditorfield-web-panel input.remoteurl").focus()):s.show().text(_i18n2["default"]._t("HtmlEditorField.INSERTFROM")).find(".back-button").remove(),this.find(".htmleditorfield-mediaform-heading.update")[r?"show":"hide"](),
this.find(".ss-uploadfield-item-actions")[r?"hide":"show"](),this.find(".ss-uploadfield-item-name")[r?"hide":"show"](),this.find(".ss-uploadfield-item-preview")[r?"hide":"show"](),this.find(".btn-toolbar .media-update")[r?"show":"hide"](),
this.find(".ss-uploadfield-item-editform").toggleEditForm(r),this.find(".htmleditorfield-from-cms .field.treedropdown").css("left",e(".htmleditorfield-mediaform-heading:visible").outerWidth()),this.closest(".ui-dialog").addClass("ss-uploadfield-dropzone"),
this.closest(".ui-dialog").find(".ui-dialog-buttonpane .media-insert .ui-button-text").text([r?_i18n2["default"]._t("HtmlEditorField.UPDATE","Update"):_i18n2["default"]._t("HtmlEditorField.INSERT","Insert")])
"anchor"!==e&&"internal"!==e||this.parents("form.htmleditorfield-linkform").updateAnchorSelector(),this._super()}}),e("form.htmleditorfield-linkform input[name=internal]").entwine({onvalueupdated:function L(){
this.parents("form.htmleditorfield-linkform").updateAnchorSelector(),this._super()}}),e("form.htmleditorfield-linkform :submit[name=action_remove]").entwine({onclick:function U(e){return this.parents("form:first").removeLink(),
this._super(),!1}}),e(".insert-media-react__dialog-wrapper .nav-link").entwine({onclick:function B(e){return e.preventDefault()}}),e("#insert-media-react__dialog-wrapper").entwine({Element:null,Data:{},
onunmatch:function H(){this._clearModal()},_clearModal:function $(){_reactDom2["default"].unmountComponentAtNode(this[0])},open:function q(){this._renderModal(!0)},close:function V(){this._renderModal(!1)
},resetFields:function V(){this.find(".ss-htmleditorfield-file").remove(),this.find(".ss-gridfield-items .ui-selected").removeClass("ui-selected"),this.find("li.ss-uploadfield-item").remove(),this.redraw(),
this._super()},getFileView:function G(e){return this.find(".ss-htmleditorfield-file[data-id="+e+"]")},showFileView:function z(t){var n=this,i=Number(t)==t?{ID:t}:{FileURL:t},r=e('<div class="ss-htmleditorfield-file loading" />')
this.find(".content-edit").prepend(r)
var a=e.Deferred()
return e.ajax({url:e.path.addSearchParams(this.attr("action").replace(/MediaForm/,"viewfile"),i),success:function o(t,i,s){var l=e(t).filter(".ss-htmleditorfield-file")
r.replaceWith(l),n.redraw(),a.resolve(l)},error:function s(){r.remove(),a.reject()}}),a.promise()}}),e("form.htmleditorfield-mediaform div.ss-upload .upload-url").entwine({onclick:function W(e){e.preventDefault()
var t=this.closest("form")
t.addClass("insertingURL"),t.redraw()}}),e("form.htmleditorfield-mediaform .htmleditorfield-mediaform-heading .back-button").entwine({onclick:function X(){var e=this.closest("form")
e.removeClass("insertingURL"),e.redraw()}}),e("form.htmleditorfield-mediaform .ss-gridfield-items").entwine({onselectableselected:function Q(t,n){var i=this.closest("form"),r=e(n.selected)
return!r.hasClass("ss-gridfield-item")||r.hasClass("ss-gridfield-no-items")?(r.removeClass("ui-selected"),!1):(i.closest("form").showFileView(r.data("id")),i.redraw(),void i.parent().trigger("scroll"))
},onselectableunselected:function K(t,n){var i=this.closest("form"),r=e(n.unselected)
r.is(".ss-gridfield-item")&&(i.getFileView(r.data("id")).remove(),i.redraw())}}),e("form.htmleditorfield-form.htmleditorfield-mediaform div.ss-assetuploadfield").entwine({onfileuploadstop:function J(t){
var n=this.closest("form"),i=[]
n.find("div.content-edit").find("div.ss-htmleditorfield-file").each(function(){i.push(e(this).data("id"))})
var r=e(".ss-uploadfield-files",this).children(".ss-uploadfield-item")
r.each(function(){var t=e(this).data("fileid")
t&&e.inArray(t,i)==-1&&(e(this).remove(),n.showFileView(t))}),n.parent().trigger("scroll"),n.redraw()}}),e("form.htmleditorfield-form.htmleditorfield-mediaform input.remoteurl").entwine({onadd:function Y(){
this._super(),this.validate()},onkeyup:function Z(){this.validate()},onchange:function ee(){this.validate()},getAddButton:function te(){return this.closest(".CompositeField").find("button.add-url")},validate:function ne(){
var t=this.val(),n=t,i=!!t
return t=e.trim(t),t=t.replace(/^https?:\/\//i,""),n!==t&&this.val(t),this.getAddButton().prop("disabled",!i),i}}),e("form.htmleditorfield-form.htmleditorfield-mediaform .add-url").entwine({getURLField:function ie(){
return this.closest(".CompositeField").find("input.remoteurl")},onclick:function re(e){var t=this.getURLField(),n=this.closest(".CompositeField"),i=this.closest("form")
return t.validate()&&(n.addClass("loading"),i.showFileView("http://"+t.val()).done(function(){n.removeClass("loading"),i.parent().trigger("scroll")}),i.redraw()),!1}}),e("form.htmleditorfield-mediaform .ss-htmleditorfield-file").entwine({
getAttributes:function ae(){},getExtraData:function oe(){},getHTML:function se(){return e("<div>").append(e("<a/>").attr({href:this.data("url")}).text(this.find(".name").text())).html()},insertHTML:function le(e){
e.replaceContent(this.getHTML())},updateFromNode:function ue(e){},updateDimensions:function ce(e,t,n){var i=this.find(":input[name=Width]"),r=this.find(":input[name=Height]"),a=i.val(),o=r.val(),s
a&&o&&(e?(s=r.getOrigVal()/i.getOrigVal(),"Width"==e?(t&&a>t&&(a=t),o=Math.floor(a*s)):"Height"==e&&(n&&o>n&&(o=n),a=Math.ceil(o/s))):(t&&a>t&&(a=t),n&&o>n&&(o=n)),i.val(a),r.val(o))}}),e("form.htmleditorfield-mediaform .ss-htmleditorfield-file.image").entwine({
getAttributes:function de(){var e=this.find(":input[name=Width]").val(),t=this.find(":input[name=Height]").val()
return{src:this.find(":input[name=URL]").val(),alt:this.find(":input[name=AltText]").val(),width:e?parseInt(e,10):null,height:t?parseInt(t,10):null,title:this.find(":input[name=Title]").val(),"class":this.find(":input[name=CSSClass]").val(),
"data-id":this.find(":input[name=FileID]").val()}},getExtraData:function fe(){return{CaptionText:this.find(":input[name=CaptionText]").val()}},getHTML:function pe(){},insertHTML:function he(t){var n=this.closest("form"),i=n.getSelection()
t||(t=n.getEditor())
var r=this.getAttributes(),a=this.getExtraData(),o=i&&i.is("img")?i:null
o&&o.parent().is(".captionImage")&&(o=o.parent())
var s=i&&i.is("img")?i:e("<img />")
s.attr(r)
var l=s.parent(".captionImage"),u=l.find(".caption")
a.CaptionText?(l.length||(l=e("<div></div>")),l.attr("class","captionImage "+r["class"]).css("width",r.width),u.length||(u=e('<p class="caption"></p>').appendTo(l)),u.attr("class","caption "+r["class"]).text(a.CaptionText)):l=u=null
var c=l?l:s
o&&o.not(c).length&&o.replaceWith(c),l&&l.prepend(s),o||(t.repaint(),t.insertContent(e("<div />").append(c).html(),{skip_undo:1})),t.addUndo(),t.repaint()},updateFromNode:function me(e){this.find(":input[name=AltText]").val(e.attr("alt")),
this.find(":input[name=Title]").val(e.attr("title")),this.find(":input[name=CSSClass]").val(e.attr("class")),this.find(":input[name=Width]").val(e.width()),this.find(":input[name=Height]").val(e.height()),
this.find(":input[name=CaptionText]").val(e.siblings(".caption:first").text()),this.find(":input[name=FileID]").val(e.data("id"))}}),e("form.htmleditorfield-mediaform .ss-htmleditorfield-file.flash").entwine({
getAttributes:function ge(){var e=this.find(":input[name=Width]").val(),t=this.find(":input[name=Height]").val()
return{src:this.find(":input[name=URL]").val(),width:e?parseInt(e,10):null,height:t?parseInt(t,10):null,"data-fileid":this.find(":input[name=FileID]").val()}},getHTML:function ve(){var t=this.getAttributes(),n=tinyMCE.activeEditor.plugins.media.dataToImg({
type:"flash",width:t.width,height:t.height,params:{src:t.src},video:{sources:[]}})
return e("<div />").append(n).html()},updateFromNode:function ye(e){}}),e("form.htmleditorfield-mediaform .ss-htmleditorfield-file.embed").entwine({getAttributes:function be(){var e=this.find(":input[name=Width]").val(),t=this.find(":input[name=Height]").val()
return{src:this.find(".thumbnail-preview").attr("src"),width:e?parseInt(e,10):null,height:t?parseInt(t,10):null,"class":this.find(":input[name=CSSClass]").val(),alt:this.find(":input[name=AltText]").val(),
title:this.find(":input[name=Title]").val(),"data-fileid":this.find(":input[name=FileID]").val()}},getExtraData:function _e(){var e=this.find(":input[name=Width]").val(),t=this.find(":input[name=Height]").val()
return{CaptionText:this.find(":input[name=CaptionText]").val(),Url:this.find(":input[name=URL]").val(),thumbnail:this.find(".thumbnail-preview").attr("src"),width:e?parseInt(e,10):null,height:t?parseInt(t,10):null,
cssclass:this.find(":input[name=CSSClass]").val()}},getHTML:function we(){var t,n=this.getAttributes(),i=this.getExtraData(),r=e("<img />").attr(n).addClass("ss-htmleditorfield-file embed")
return e.each(i,function(e,t){r.attr("data-"+e,t)}),t=i.CaptionText?e('<div style="width: '+n.width+'px;" class="captionImage '+n["class"]+'"><p class="caption">'+i.CaptionText+"</p></div>").prepend(r):r,
e("<div />").append(t).html()},updateFromNode:function Ce(e){this.find(":input[name=AltText]").val(e.attr("alt")),this.find(":input[name=Title]").val(e.attr("title")),this.find(":input[name=Width]").val(e.width()),
this.find(":input[name=Height]").val(e.height()),this.find(":input[name=Title]").val(e.attr("title")),this.find(":input[name=CSSClass]").val(e.data("cssclass")),this.find(":input[name=FileID]").val(e.data("fileid"))
}}),e("form.htmleditorfield-mediaform .ss-htmleditorfield-file .dimensions :input").entwine({OrigVal:null,onmatch:function Te(){this._super(),this.setOrigVal(parseInt(this.val(),10))},onunmatch:function Ee(){
this._super()},onfocusout:function Pe(e){this.closest(".ss-htmleditorfield-file").updateDimensions(this.attr("name"))}}),e("form.htmleditorfield-mediaform .ss-uploadfield-item .ss-uploadfield-item-cancel").entwine({
onclick:function Oe(e){var t=this.closest("form"),n=this.closest("ss-uploadfield-item")
t.find(".ss-gridfield-item[data-id="+n.data("id")+"]").removeClass("ui-selected"),this.closest(".ss-uploadfield-item").remove(),t.redraw(),e.preventDefault()}}),e("div.ss-assetuploadfield .ss-uploadfield-item-edit, div.ss-assetuploadfield .ss-uploadfield-item-name").entwine({
getEditForm:function Se(){return this.closest(".ss-uploadfield-item").find(".ss-uploadfield-item-editform")},fromEditForm:{onchange:function ke(t){var n=e(t.target)
n.removeClass("edited"),n.addClass("edited")}},onclick:function je(e){var t=this.getEditForm()
return this.closest(".ss-uploadfield-item").hasClass("ss-htmleditorfield-file")?(t.parent("ss-uploadfield-item").removeClass("ui-state-warning"),t.toggleEditForm(),e.preventDefault(),!1):void this._super(e)
}}),e("div.ss-assetuploadfield .ss-uploadfield-item-editform").entwine({toggleEditForm:function xe(e){var t=this.prev(".ss-uploadfield-item-info"),n=t.find(".ss-uploadfield-item-status"),i=""
e===!0||e!==!1&&0===this.height()?(i=_i18n2["default"]._t("UploadField.Editing","Editing ..."),this.height("auto"),t.find(".toggle-details-icon").addClass("opened"),n.removeClass("ui-state-success-text").removeClass("ui-state-warning-text")):(this.height(0),
t.find(".toggle-details-icon").removeClass("opened"),this.hasClass("edited")?(i=_i18n2["default"]._t("UploadField.CHANGESSAVED","Changes Made"),this.removeClass("edited"),n.addClass("ui-state-success-text")):(i=_i18n2["default"]._t("UploadField.NOCHANGES","No Changes"),
n.addClass("ui-state-success-text"))),n.attr("title",i).text(i)}}),e('form.htmleditorfield-mediaform .field[id$="ParentID_Holder"] .TreeDropdownField').entwine({onadd:function Re(){this._super()
var e=this
this.bind("change",function(){var t=e.closest("form").find(".grid-field")
t.setState("ParentID",e.getValue()),t.reload()})}}),e(".insert-media-react__dialog-wrapper .nav-link").entwine({onclick:function Ie(e){return e.preventDefault()}}),e("#insert-media-react__dialog-wrapper").entwine({
Element:null,Data:{},onunmatch:function Ae(){this._clearModal()},_clearModal:function Fe(){_reactDom2["default"].unmountComponentAtNode(this[0])},open:function De(){this._renderModal(!0)},close:function Me(){
this._renderModal(!1)},_renderModal:function Ne(e){var t=this,n=function l(){return t.close()},i=function u(){return t._handleInsert.apply(t,arguments)},r=window.ss.store,a=window.ss.apolloClient,o=this.getOriginalAttributes(),s=window.InsertMediaModal["default"]
},_renderModal:function G(e){var t=this,n=function l(){return t.close()},r=function u(){return t._handleInsert.apply(t,arguments)},i=window.ss.store,o=window.ss.apolloClient,a=this.getOriginalAttributes(),s=window.InsertMediaModal["default"]
if(!s)throw new Error("Invalid Insert media modal component found")
delete o.url,_reactDom2["default"].render(_react2["default"].createElement(_reactApollo.ApolloProvider,{store:r,client:a},_react2["default"].createElement(s,{title:!1,show:e,onInsert:i,onHide:n,bodyClassName:"modal__dialog",
className:"insert-media-react__dialog-wrapper",fileAttributes:o})),this[0])},_handleInsert:function Ue(e,t){var n=!1
delete a.url,_reactDom2["default"].render(_react2["default"].createElement(_reactApollo.ApolloProvider,{store:i,client:o},_react2["default"].createElement(s,{title:!1,show:e,onInsert:r,onHide:n,bodyClassName:"modal__dialog",
className:"insert-media-react__dialog-wrapper",fileAttributes:a})),this[0])},_handleInsert:function z(e,t){var n=!1
this.setData(_extends({},e,t))
try{switch(t.category){case"image":n=this.insertImage()
break
default:n=this.insertFile()}}catch(i){this.statusMessage(i,"bad")}return n&&this.close(),Promise.resolve()},getOriginalAttributes:function Le(){var t=this.getElement()
default:n=this.insertFile()}}catch(r){this.statusMessage(r,"bad")}return n&&this.close(),Promise.resolve()},getOriginalAttributes:function X(){var t=this.getElement()
if(!t)return{}
var n=t.getEditor().getSelectedNode()
if(!n)return{}
var i=e(n),r=i.parent(".captionImage").find(".caption"),a={url:i.attr("src"),AltText:i.attr("alt"),InsertWidth:i.attr("width"),InsertHeight:i.attr("height"),TitleTooltip:i.attr("title"),Alignment:i.attr("class"),
Caption:r.text(),ID:i.attr("data-id")}
return["InsertWidth","InsertHeight","ID"].forEach(function(e){a[e]="string"==typeof a[e]?parseInt(a[e],10):null}),a},getAttributes:function Be(){var e=this.getData()
return{src:e.url,alt:e.AltText,width:e.InsertWidth,height:e.InsertHeight,title:e.TitleTooltip,"class":e.Alignment,"data-id":e.ID}},getExtraData:function He(){var e=this.getData()
return{CaptionText:e&&e.Caption}},insertFile:function $e(){return this.statusMessage(_i18n2["default"]._t("HTMLEditorField_Toolbar.ERROR_OEMBED_REMOTE","Embed is only compatible with remote files"),"bad"),
!1},insertImage:function qe(){var t=this.getElement()
var r=e(n),i=r.parent(".captionImage").find(".caption"),o={url:r.attr("src"),AltText:r.attr("alt"),InsertWidth:r.attr("width"),InsertHeight:r.attr("height"),TitleTooltip:r.attr("title"),Alignment:r.attr("class"),
Caption:i.text(),ID:r.attr("data-id")}
return["InsertWidth","InsertHeight","ID"].forEach(function(e){o[e]="string"==typeof o[e]?parseInt(o[e],10):null}),o},getAttributes:function W(){var e=this.getData()
return{src:e.url,alt:e.AltText,width:e.InsertWidth,height:e.InsertHeight,title:e.TitleTooltip,"class":e.Alignment,"data-id":e.ID}},getExtraData:function Q(){var e=this.getData()
return{CaptionText:e&&e.Caption}},insertFile:function K(){return this.statusMessage(_i18n2["default"]._t("HTMLEditorField_Toolbar.ERROR_OEMBED_REMOTE","Embed is only compatible with remote files"),"bad"),
!1},insertImage:function J(){var t=this.getElement()
if(!t)return!1
var n=t.getEditor()
if(!n)return!1
var i=e(n.getSelectedNode()),r=this.getAttributes(),a=this.getExtraData(),o=i&&i.is("img")?i:null
o&&o.parent().is(".captionImage")&&(o=o.parent())
var s=i&&i.is("img")?i:e("<img />")
s.attr(r)
var r=e(n.getSelectedNode()),i=this.getAttributes(),o=this.getExtraData(),a=r&&r.is("img")?r:null
a&&a.parent().is(".captionImage")&&(a=a.parent())
var s=r&&r.is("img")?r:e("<img />")
s.attr(i)
var l=s.parent(".captionImage"),u=l.find(".caption")
a.CaptionText?(l.length||(l=e("<div></div>")),l.attr("class","captionImage "+r["class"]).css("width",r.width),u.length||(u=e('<p class="caption"></p>').appendTo(l)),u.attr("class","caption "+r["class"]).text(a.CaptionText)):l=u=null
o.CaptionText?(l.length||(l=e("<div></div>")),l.attr("class","captionImage "+i["class"]).css("width",i.width),u.length||(u=e('<p class="caption"></p>').appendTo(l)),u.attr("class","caption "+i["class"]).text(o.CaptionText)):l=u=null
var c=l||s
return o&&o.not(c).length&&o.replaceWith(c),l&&l.prepend(s),o||(n.repaint(),n.insertContent(e("<div />").append(c).html(),{skip_undo:1})),n.addUndo(),n.repaint(),!0},statusMessage:function Ve(t,n){var i=e("<div/>").text(t).html()
return a&&a.not(c).length&&a.replaceWith(c),l&&l.prepend(s),a||(n.repaint(),n.insertContent(e("<div />").append(c).html(),{skip_undo:1})),n.addUndo(),n.repaint(),!0},statusMessage:function Y(t,n){var r=e("<div/>").text(t).html()
e.noticeAdd({text:i,type:n,stayTime:5e3,inEffect:{left:"0",opacity:"show"}})}})})},function(e,t){e.exports=ReactApollo},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r)
n(168),n(203),n(198),a["default"].entwine("ss",function(e){e(".ss-tabset").entwine({IgnoreTabState:!1,onadd:function t(){var e=window.location.hash
this.redrawTabs(),""!==e&&this.openTabFromURL(e),this._super()},onremove:function n(){this.data("tabs")&&this.tabs("destroy"),this._super()},redrawTabs:function i(){this.rewriteHashlinks(),this.tabs()},
openTabFromURL:function r(t){var n
e.each(this.find(".ui-tabs-anchor"),function(){if(this.href.indexOf(t)!==-1&&1===e(t).length)return n=e(this),!1}),void 0!==n&&e(document).ready("ajaxComplete",function(){n.click()})},rewriteHashlinks:function a(){
e.noticeAdd({text:r,type:n,stayTime:5e3,inEffect:{left:"0",opacity:"show"}})}})})},function(e,t){e.exports=ReactApollo},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i)
n(168),n(198),n(193),o["default"].entwine("ss",function(e){e(".ss-tabset").entwine({IgnoreTabState:!1,onadd:function t(){var e=window.location.hash
this.redrawTabs(),""!==e&&this.openTabFromURL(e),this._super()},onremove:function n(){this.data("tabs")&&this.tabs("destroy"),this._super()},redrawTabs:function r(){this.rewriteHashlinks(),this.tabs()},
openTabFromURL:function i(t){var n
e.each(this.find(".ui-tabs-anchor"),function(){if(this.href.indexOf(t)!==-1&&1===e(t).length)return n=e(this),!1}),void 0!==n&&e(document).ready("ajaxComplete",function(){n.click()})},rewriteHashlinks:function o(){
e(this).find("ul a").each(function(){if(e(this).attr("href")){var t=e(this).attr("href").match(/#.*/)
t&&e(this).attr("href",document.location.href.replace(/#.*/,"")+t[0])}})}}),e(".ui-tabs-active .ui-tabs-anchor").entwine({onmatch:function o(){this.addClass("nav-link active")},onunmatch:function s(){this.removeClass("active")
t&&e(this).attr("href",document.location.href.replace(/#.*/,"")+t[0])}})}}),e(".ui-tabs-active .ui-tabs-anchor").entwine({onmatch:function a(){this.addClass("nav-link active")},onunmatch:function s(){this.removeClass("active")
}})})},,function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(1),a=i(r),o=n(114),s=i(o)
n(168),n(198),a["default"].entwine("ss",function(e){e(".grid-field").entwine({reload:function t(n,i){var r=this,a=this.closest("form"),o=this.find(":input:focus").attr("name"),l=a.find(":input").serializeArray()
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),o=r(i),a=n(114),s=r(a)
n(168),n(193),o["default"].entwine("ss",function(e){e(".grid-field").entwine({reload:function t(n,r){var i=this,o=this.closest("form"),a=this.find(":input:focus").attr("name"),l=o.find(":input").serializeArray()
n||(n={}),n.data||(n.data=[]),n.data=n.data.concat(l),window.location.search&&(n.data=window.location.search.replace(/^\?/,"")+"&"+e.param(n.data)),a.addClass("loading"),e.ajax(e.extend({},{headers:{"X-Pjax":"CurrentField"
},type:"POST",url:this.data("url"),dataType:"html",success:function u(t){if(r.empty().append(e(t).children()),o&&r.find(':input[name="'+o+'"]').focus(),r.find(".filter-header").length){var s
"show"==n.data[0].filter?(s='<span class="non-sortable"></span>',r.addClass("show-filter").find(".filter-header").show()):(s='<button type="button" title="Open search and filter" name="showFilter" class="btn btn-secondary font-icon-search btn--no-text btn--icon-large grid-field__filter-open"></button>',
r.removeClass("show-filter").find(".filter-header").hide()),r.find(".sortable-header th:last").html(s)}a.removeClass("loading"),i&&i.apply(this,arguments),r.trigger("reload",r)},error:function c(e){alert(s["default"]._t("GRIDFIELD.ERRORINTRANSACTION")),
a.removeClass("loading")}},n))},showDetailView:function n(e){window.location.href=e},getItems:function i(){return this.find(".ss-gridfield-item")},setState:function r(e,t){var n=this.getState()
n[e]=t,this.find(':input[name="'+this.data("name")+'[GridState]"]').val(JSON.stringify(n))},getState:function a(){return JSON.parse(this.find(':input[name="'+this.data("name")+'[GridState]"]').val())}}),
e(".grid-field *").entwine({getGridField:function o(){return this.closest(".grid-field")}}),e(".grid-field :button[name=showFilter]").entwine({onclick:function l(e){this.closest(".grid-field__table").find(".filter-header").show().find(":input:first").focus(),
n||(n={}),n.data||(n.data=[]),n.data=n.data.concat(l),window.location.search&&(n.data=window.location.search.replace(/^\?/,"")+"&"+e.param(n.data)),o.addClass("loading"),e.ajax(e.extend({},{headers:{"X-Pjax":"CurrentField"
},type:"POST",url:this.data("url"),dataType:"html",success:function u(t){if(i.empty().append(e(t).children()),a&&i.find(':input[name="'+a+'"]').focus(),i.find(".filter-header").length){var s
"show"==n.data[0].filter?(s='<span class="non-sortable"></span>',i.addClass("show-filter").find(".filter-header").show()):(s='<button type="button" title="Open search and filter" name="showFilter" class="btn btn-secondary font-icon-search btn--no-text btn--icon-large grid-field__filter-open"></button>',
i.removeClass("show-filter").find(".filter-header").hide()),i.find(".sortable-header th:last").html(s)}o.removeClass("loading"),r&&r.apply(this,arguments),i.trigger("reload",i)},error:function c(e){alert(s["default"]._t("GRIDFIELD.ERRORINTRANSACTION")),
o.removeClass("loading")}},n))},showDetailView:function n(e){window.location.href=e},getItems:function r(){return this.find(".ss-gridfield-item")},setState:function i(e,t){var n=this.getState()
n[e]=t,this.find(':input[name="'+this.data("name")+'[GridState]"]').val(JSON.stringify(n))},getState:function o(){return JSON.parse(this.find(':input[name="'+this.data("name")+'[GridState]"]').val())}}),
e(".grid-field *").entwine({getGridField:function a(){return this.closest(".grid-field")}}),e(".grid-field :button[name=showFilter]").entwine({onclick:function l(e){this.closest(".grid-field__table").find(".filter-header").show().find(":input:first").focus(),
this.closest(".grid-field").addClass("show-filter"),this.parent().html('<span class="non-sortable"></span>'),e.preventDefault()}}),e(".grid-field .ss-gridfield-item").entwine({onclick:function u(t){if(e(t.target).closest(".action").length)return this._super(t),
!1
var n=this.find(".edit-link")
@ -2046,194 +1838,194 @@ n.length&&this.getGridField().showDetailView(n.prop("href"))},onmouseover:functi
}}),e(".grid-field .action.action_import:button").entwine({onclick:function f(e){e.preventDefault(),this.openmodal()},onmatch:function p(){this._super(),"open"===this.data("state")&&this.openmodal()},onunmatch:function h(){
this._super()},openmodal:function m(){var t=e(this.data("target")),n=e(this.data("modal"))
t.length<1?(t=n,t.appendTo(document.body)):t.innerHTML=n.innerHTML
var i=e(".modal-backdrop")
i.length<1&&(i=e('<div class="modal-backdrop fade"></div>'),i.appendTo(document.body)),t.find("[data-dismiss]").on("click",function(){i.removeClass("in"),t.removeClass("in"),setTimeout(function(){i.remove()
var r=e(".modal-backdrop")
r.length<1&&(r=e('<div class="modal-backdrop fade"></div>'),r.appendTo(document.body)),t.find("[data-dismiss]").on("click",function(){r.removeClass("in"),t.removeClass("in"),setTimeout(function(){r.remove()
},.2)}),setTimeout(function(){i.addClass("in"),t.addClass("in")},0)}}),e(".grid-field .action:button").entwine({onclick:function g(e){var t="show"
},.2)}),setTimeout(function(){r.addClass("in"),t.addClass("in")},0)}}),e(".grid-field .action:button").entwine({onclick:function g(e){var t="show"
return this.is(":disabled")?void e.preventDefault():(!this.hasClass("ss-gridfield-button-close")&&this.closest(".grid-field").hasClass("show-filter")||(t="hidden"),this.getGridField().reload({data:[{name:this.attr("name"),
value:this.val(),filter:t}]}),void e.preventDefault())},actionurl:function v(){var t=this.closest(":button"),n=this.getGridField(),i=this.closest("form"),r=i.find(":input.gridstate").serialize(),a=i.find('input[name="SecurityID"]').val()
value:this.val(),filter:t}]}),void e.preventDefault())},actionurl:function y(){var t=this.closest(":button"),n=this.getGridField(),r=this.closest("form"),i=r.find(":input.gridstate").serialize(),o=r.find('input[name="SecurityID"]').val()
r+="&"+encodeURIComponent(t.attr("name"))+"="+encodeURIComponent(t.val()),a&&(r+="&SecurityID="+encodeURIComponent(a)),window.location.search&&(r=window.location.search.replace(/^\?/,"")+"&"+r)
var o=n.data("url").indexOf("?")==-1?"?":"&"
return e.path.makeUrlAbsolute(n.data("url")+o+r,e("base").attr("href"))}}),e(".grid-field .add-existing-autocompleter").entwine({onbuttoncreate:function y(){var e=this
this.toggleDisabled(),this.find('input[type="text"]').on("keyup",function(){e.toggleDisabled()})},onunmatch:function b(){this.find('input[type="text"]').off("keyup")},toggleDisabled:function _(){var e=this.find(".ss-ui-button"),t=this.find('input[type="text"]'),n=""!==t.val(),i=e.is(":disabled")
i+="&"+encodeURIComponent(t.attr("name"))+"="+encodeURIComponent(t.val()),o&&(i+="&SecurityID="+encodeURIComponent(o)),window.location.search&&(i=window.location.search.replace(/^\?/,"")+"&"+i)
var a=n.data("url").indexOf("?")==-1?"?":"&"
return e.path.makeUrlAbsolute(n.data("url")+a+i,e("base").attr("href"))}}),e(".grid-field .add-existing-autocompleter").entwine({onbuttoncreate:function b(){var e=this
this.toggleDisabled(),this.find('input[type="text"]').on("keyup",function(){e.toggleDisabled()})},onunmatch:function v(){this.find('input[type="text"]').off("keyup")},toggleDisabled:function _(){var e=this.find(".ss-ui-button"),t=this.find('input[type="text"]'),n=""!==t.val(),r=e.is(":disabled")
;(n&&i||!n&&!i)&&e.attr("disabled",!i)}}),e(".grid-field .grid-field__col-compact .action.gridfield-button-delete, .cms-edit-form .btn-toolbar button.action.action-delete").entwine({onclick:function w(e){
;(n&&r||!n&&!r)&&e.attr("disabled",!r)}}),e(".grid-field .grid-field__col-compact .action.gridfield-button-delete, .cms-edit-form .btn-toolbar button.action.action-delete").entwine({onclick:function w(e){
return confirm(s["default"]._t("TABLEFIELD.DELETECONFIRMMESSAGE"))?void this._super(e):(e.preventDefault(),!1)}}),e(".grid-field .action.gridfield-button-print").entwine({UUID:null,onmatch:function C(){
this._super(),this.setUUID((new Date).getTime())},onunmatch:function T(){this._super()},onclick:function E(e){var t=this.actionurl()
return window.open(t),e.preventDefault(),!1}}),e(".ss-gridfield-print-iframe").entwine({onmatch:function P(){this._super(),this.hide().bind("load",function(){this.focus()
this._super(),this.setUUID((new Date).getTime())},onunmatch:function T(){this._super()},onclick:function P(e){var t=this.actionurl()
return window.open(t),e.preventDefault(),!1}}),e(".ss-gridfield-print-iframe").entwine({onmatch:function E(){this._super(),this.hide().bind("load",function(){this.focus()
var e=this.contentWindow||this
e.print()})},onunmatch:function O(){this._super()}}),e(".grid-field .action.no-ajax").entwine({onclick:function S(e){return window.location.href=this.actionurl(),e.preventDefault(),!1}}),e(".grid-field .action-detail").entwine({
onclick:function k(){return this.getGridField().showDetailView(e(this).prop("href")),!1}}),e(".grid-field[data-selectable]").entwine({getSelectedItems:function j(){return this.find(".ss-gridfield-item.ui-selected")
e.print()})},onunmatch:function O(){this._super()}}),e(".grid-field .action.no-ajax").entwine({onclick:function k(e){return window.location.href=this.actionurl(),e.preventDefault(),!1}}),e(".grid-field .action-detail").entwine({
onclick:function S(){return this.getGridField().showDetailView(e(this).prop("href")),!1}}),e(".grid-field[data-selectable]").entwine({getSelectedItems:function j(){return this.find(".ss-gridfield-item.ui-selected")
},getSelectedIDs:function x(){return e.map(this.getSelectedItems(),function(t){return e(t).data("id")})}}),e(".grid-field[data-selectable] .ss-gridfield-items").entwine({onadd:function R(){this._super(),
this.selectable()},onremove:function I(){this._super(),this.data("selectable")&&this.selectable("destroy")}}),e(".grid-field .filter-header :input").entwine({onmatch:function A(){var e=this.closest(".extra").find(".ss-gridfield-button-filter"),t=this.closest(".extra").find(".ss-gridfield-button-reset")
this.val()&&(e.addClass("filtered"),t.addClass("filtered")),this._super()},onunmatch:function F(){this._super()},onkeydown:function D(e){if(!this.closest(".ss-gridfield-button-reset").length){var t=this.closest(".extra").find(".ss-gridfield-button-filter"),n=this.closest(".extra").find(".ss-gridfield-button-reset")
this.val()&&(e.addClass("filtered"),t.addClass("filtered")),this._super()},onunmatch:function D(){this._super()},onkeydown:function F(e){if(!this.closest(".ss-gridfield-button-reset").length){var t=this.closest(".extra").find(".ss-gridfield-button-filter"),n=this.closest(".extra").find(".ss-gridfield-button-reset")
if("13"==e.keyCode){var i=this.closest(".filter-header").find(".ss-gridfield-button-filter"),r="show"
return!this.hasClass("ss-gridfield-button-close")&&this.closest(".grid-field").hasClass("show-filter")||(r="hidden"),this.getGridField().reload({data:[{name:i.attr("name"),value:i.val(),filter:r}]}),!1
if("13"==e.keyCode){var r=this.closest(".filter-header").find(".ss-gridfield-button-filter"),i="show"
return!this.hasClass("ss-gridfield-button-close")&&this.closest(".grid-field").hasClass("show-filter")||(i="hidden"),this.getGridField().reload({data:[{name:r.attr("name"),value:r.val(),filter:i}]}),!1
}t.addClass("hover-alike"),n.addClass("hover-alike")}}}),e(".grid-field .relation-search").entwine({onfocusin:function M(t){this.autocomplete({source:function n(t,i){var r=e(this.element),a=e(this.element).closest("form")
}t.addClass("hover-alike"),n.addClass("hover-alike")}}}),e(".grid-field .relation-search").entwine({onfocusin:function M(t){this.autocomplete({source:function n(t,r){var i=e(this.element),o=e(this.element).closest("form")
e.ajax({headers:{"X-Pjax":"Partial"},dataType:"json",type:"GET",url:e(r).data("searchUrl"),data:encodeURIComponent(r.attr("name"))+"="+encodeURIComponent(r.val()),success:i,error:function o(e){alert(s["default"]._t("GRIDFIELD.ERRORINTRANSACTION","An error occured while fetching data from the server\n Please try again later."))
e.ajax({headers:{"X-Pjax":"Partial"},dataType:"json",type:"GET",url:e(i).data("searchUrl"),data:encodeURIComponent(i.attr("name"))+"="+encodeURIComponent(i.val()),success:r,error:function a(e){alert(s["default"]._t("GRIDFIELD.ERRORINTRANSACTION","An error occured while fetching data from the server\n Please try again later."))
}})},select:function i(t,n){var i=e('<input type="hidden" name="relationID" class="action_gridfield_relationfind" />')
i.val(n.item.id),e(this).closest(".grid-field").find(".action_gridfield_relationfind").replaceWith(i)
var r=e(this).closest(".grid-field").find(".action_gridfield_relationadd")
r.removeAttr("disabled")}})}}),e(".grid-field .pagination-page-number input").entwine({onkeydown:function N(t){if(13==t.keyCode){var n=parseInt(e(this).val(),10),i=e(this).getGridField()
return i.setState("GridFieldPaginator",{currentPage:n}),i.reload(),!1}}})})},function(e,t,n){"use strict"
function i(e){if(e&&e.__esModule)return e
}})},select:function r(t,n){var r=e('<input type="hidden" name="relationID" class="action_gridfield_relationfind" />')
r.val(n.item.id),e(this).closest(".grid-field").find(".action_gridfield_relationfind").replaceWith(r)
var i=e(this).closest(".grid-field").find(".action_gridfield_relationadd")
i.removeAttr("disabled")}})}}),e(".grid-field .pagination-page-number input").entwine({onkeydown:function N(t){if(13==t.keyCode){var n=parseInt(e(this).val(),10),r=e(this).getGridField()
return r.setState("GridFieldPaginator",{currentPage:n}),r.reload(),!1}}})})},function(e,t,n){"use strict"
function r(e){if(e&&e.__esModule)return e
var t={}
if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])
return t["default"]=e,t}function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=m["default"].get("absoluteBaseUrl"),t=(0,I.createNetworkInterface)({uri:e+"graphql/",opts:{credentials:"same-origin"
return t["default"]=e,t}function i(e){return e&&e.__esModule?e:{"default":e}}function o(){var e=m["default"].get("absoluteBaseUrl"),t=(0,I.createNetworkInterface)({uri:e+"graphql/",opts:{credentials:"same-origin"
}}),n=new A["default"]({shouldBatch:!0,addTypename:!0,dataIdFromObject:function O(e){return e.id>=0&&e.__typename?e.__typename+":"+e.id:null},networkInterface:t})
t.use([{applyMiddleware:function k(e,t){var n=(0,F.printRequest)(e.request)
e.options.headers=o({},e.options.headers,{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}),e.options.body=M["default"].stringify(o({},n,{variables:JSON.stringify(n.variables)})),t()}}]),
v["default"].add("config",w["default"]),v["default"].add("form",f.reducer),v["default"].add("schemas",T["default"]),v["default"].add("records",P["default"]),v["default"].add("campaign",S["default"]),v["default"].add("breadcrumbs",j["default"]),
v["default"].add("routing",p.routerReducer),v["default"].add("apollo",n.reducer()),R["default"].start()
var i={},r=(0,u.combineReducers)(v["default"].getAll()),a=[d["default"],n.middleware()],s=m["default"].get("environment"),c=m["default"].get("debugging"),h=u.applyMiddleware.apply(void 0,a),g=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__,y=window.__REDUX_DEVTOOLS_EXTENSION__||window.devToolsExtension
t.use([{applyMiddleware:function S(e,t){var n=(0,D.printRequest)(e.request)
e.options.headers=a({},e.options.headers,{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}),e.options.body=M["default"].stringify(a({},n,{variables:JSON.stringify(n.variables)})),t()}}]),
y["default"].add("config",w["default"]),y["default"].add("form",f.reducer),y["default"].add("schemas",T["default"]),y["default"].add("records",E["default"]),y["default"].add("campaign",k["default"]),y["default"].add("breadcrumbs",j["default"]),
y["default"].add("routing",p.routerReducer),y["default"].add("apollo",n.reducer()),R["default"].start()
var r={},i=(0,u.combineReducers)(y["default"].getAll()),o=[d["default"],n.middleware()],s=m["default"].get("environment"),c=m["default"].get("debugging"),h=u.applyMiddleware.apply(void 0,o),g=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__,b=window.__REDUX_DEVTOOLS_EXTENSION__||window.devToolsExtension
"dev"===s&&c&&("function"==typeof g?h=g(u.applyMiddleware.apply(void 0,a)):"function"==typeof y&&(h=(0,u.compose)(u.applyMiddleware.apply(void 0,a),y())))
var _=h(u.createStore),C=_(r,i)
C.dispatch(b.setConfig(m["default"].getAll())),window.ss=window.ss||{},window.ss.store=C,window.ss=window.ss||{},window.ss.apolloClient=n
var E=new l["default"](C,n)
E.start(window.location.pathname),window.jQuery&&window.jQuery("body").addClass("js-react-boot")}var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},s=n(206),l=r(s),u=n(107),c=n(228),d=r(c),f=n(109),p=n(227),h=n(149),m=r(h),g=n(229),v=r(g),y=n(230),b=i(y),_=n(232),w=r(_),C=n(233),T=r(C),E=n(234),P=r(E),O=n(235),S=r(O),k=n(237),j=r(k),x=n(238),R=r(x),I=n(254),A=r(I),F=n(255),D=n(13),M=r(D),N=n(385),U=r(N),L=n(10),B=r(L)
"dev"===s&&c&&("function"==typeof g?h=g(u.applyMiddleware.apply(void 0,o)):"function"==typeof b&&(h=(0,u.compose)(u.applyMiddleware.apply(void 0,o),b())))
var _=h(u.createStore),C=_(i,r)
C.dispatch(v.setConfig(m["default"].getAll())),window.ss=window.ss||{},window.ss.store=C,window.ss=window.ss||{},window.ss.apolloClient=n
var P=new l["default"](C,n)
P.start(window.location.pathname),window.jQuery&&window.jQuery("body").addClass("js-react-boot")}var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=n(201),l=i(s),u=n(107),c=n(223),d=i(c),f=n(109),p=n(222),h=n(149),m=i(h),g=n(224),y=i(g),b=n(225),v=r(b),_=n(227),w=i(_),C=n(228),T=i(C),P=n(229),E=i(P),O=n(230),k=i(O),S=n(232),j=i(S),x=n(233),R=i(x),I=n(249),A=i(I),D=n(250),F=n(13),M=i(F),N=n(380),L=i(N),U=n(10),B=i(U)
B["default"].polyfill(),window.onload=a},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n(1),s=i(o),l=n(5),u=i(l),c=n(182),d=i(c),f=n(142),p=n(207),h=i(p),m=n(149),g=i(m),v=n(224),y=i(v),b=n(225),_=i(b),w=n(226),C=i(w),T=n(227),E=n(201),P=function(){
function e(t,n){r(this,e),this.store=t,this.client=n
var i=g["default"].get("absoluteBaseUrl")
y["default"].setAbsoluteBase(i)}return a(e,[{key:"start",value:function t(e){this.matchesLegacyRoute(e)?this.initLegacyRouter():this.initReactRouter()}},{key:"matchesLegacyRoute",value:function n(e){var t=g["default"].get("sections"),n=y["default"].resolveURLToBase(e).replace(/\/$/,"")
B["default"].polyfill(),window.onload=o},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(1),s=r(a),l=n(5),u=r(l),c=n(182),d=r(c),f=n(142),p=n(202),h=r(p),m=n(149),g=r(m),y=n(219),b=r(y),v=n(220),_=r(v),w=n(221),C=r(w),T=n(222),P=n(196),E=function(){
function e(t,n){i(this,e),this.store=t,this.client=n
var r=g["default"].get("absoluteBaseUrl")
b["default"].setAbsoluteBase(r)}return o(e,[{key:"start",value:function t(e){this.matchesLegacyRoute(e)?this.initLegacyRouter():this.initReactRouter()}},{key:"matchesLegacyRoute",value:function n(e){var t=g["default"].get("sections"),n=b["default"].resolveURLToBase(e).replace(/\/$/,"")
return!!Object.keys(t).find(function(e){var i=t[e],r=y["default"].resolveURLToBase(i.url).replace(/\/$/,"")
return!i.reactRouter&&n.match(r)})}},{key:"initReactRouter",value:function i(){_["default"].updateRootRoute({component:C["default"]})
return!!Object.keys(t).find(function(e){var r=t[e],i=b["default"].resolveURLToBase(r.url).replace(/\/$/,"")
return!r.reactRouter&&n.match(i)})}},{key:"initReactRouter",value:function r(){_["default"].updateRootRoute({component:C["default"]})
var e=(0,T.syncHistoryWithStore)((0,f.useRouterHistory)(h["default"])({basename:g["default"].get("baseUrl")}),this.store)
d["default"].render(u["default"].createElement(E.ApolloProvider,{store:this.store,client:this.client},u["default"].createElement(f.Router,{history:e,routes:_["default"].getRootRoute()})),document.getElementsByClassName("cms-content")[0])
d["default"].render(u["default"].createElement(P.ApolloProvider,{store:this.store,client:this.client},u["default"].createElement(f.Router,{history:e,routes:_["default"].getRootRoute()})),document.getElementsByClassName("cms-content")[0])
}},{key:"initLegacyRouter",value:function o(){var e=g["default"].get("sections"),t=this.store;(0,y["default"])("*",function(e,n){e.store=t,n()})
}},{key:"initLegacyRouter",value:function a(){var e=g["default"].get("sections"),t=this.store;(0,b["default"])("*",function(e,n){e.store=t,n()})
var n=null
Object.keys(e).forEach(function(t){var i=y["default"].resolveURLToBase(e[t].url)
i=i.replace(/\/$/,""),i+="(/*?)?",(0,y["default"])(i,function(e,t){if("complete"!==document.readyState||e.init)return void t()
Object.keys(e).forEach(function(t){var r=b["default"].resolveURLToBase(e[t].url)
r=r.replace(/\/$/,""),r+="(/*?)?",(0,b["default"])(r,function(e,t){if("complete"!==document.readyState||e.init)return void t()
n||(n=window.location.pathname)
var i=e.data&&e.data.__forceReload;(e.path!==n||i)&&(n=e.path.replace(/#.*$/,""),(0,s["default"])(".cms-container").entwine("ss").handleStateChange(null,e.state))})}),y["default"].start()}}]),e}()
t["default"]=P},,,,,,,,,,,,,,,,,,function(e,t){e.exports=Router},function(e,t){e.exports=ReactRouteRegister},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
var r=e.data&&e.data.__forceReload;(e.path!==n||r)&&(n=e.path.replace(/#.*$/,""),(0,s["default"])(".cms-container").entwine("ss").handleStateChange(null,e.state))})}),b["default"].start()}}]),e}()
t["default"]=E},,,,,,,,,,,,,,,,,,function(e,t){e.exports=Router},function(e,t){e.exports=ReactRouteRegister},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){var e=u["default"].Children.only(this.props.children)
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){var e=u["default"].Children.only(this.props.children)
return e}}]),t}(d["default"])
t["default"]=f},function(e,t){e.exports=ReactRouterRedux},function(e,t){e.exports=ReduxThunk},function(e,t){e.exports=ReducerRegister},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e){return{type:o["default"].SET_CONFIG,payload:{config:e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.setConfig=r
var a=n(231),o=i(a)},function(e,t){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e){return{type:a["default"].SET_CONFIG,payload:{config:e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.setConfig=i
var o=n(226),a=r(o)},function(e,t){"use strict"
Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={SET_CONFIG:"SET_CONFIG"}},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments[1]
switch(t.type){case u["default"].SET_CONFIG:return(0,s["default"])(a({},e,t.payload.config))
default:return e}}Object.defineProperty(t,"__esModule",{value:!0})
var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},o=n(108),s=i(o),l=n(231),u=i(l)
t["default"]=r},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(){var e=arguments.length<=0||void 0===arguments[0]?d:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1]
switch(t.type){case c["default"].SET_SCHEMA:return(0,l["default"])(o({},e,r({},t.payload.id,o({},e[t.payload.id],t.payload))))
case c["default"].SET_SCHEMA_STATE_OVERRIDES:return(0,l["default"])(o({},e,r({},t.payload.id,o({},e[t.payload.id],{stateOverride:t.payload.stateOverride}))))
case c["default"].SET_SCHEMA_LOADING:return(0,l["default"])(o({},e,r({},t.payload.id,o({},e[t.payload.id],{metadata:o({},e[t.payload.id]&&e[t.payload.id].metadata,{loading:t.payload.loading})}))))
function r(e){return e&&e.__esModule?e:{"default":e}}function i(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments[1]
switch(t.type){case u["default"].SET_CONFIG:return(0,s["default"])(o({},e,t.payload.config))
default:return e}}Object.defineProperty(t,"__esModule",{value:!0})
var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}
t["default"]=a
var s=n(108),l=i(s),u=n(33),c=i(u),d=(0,l["default"])({})},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(){var e=arguments.length<=0||void 0===arguments[0]?d:arguments[0],t=arguments[1],n=null,i=null,a=null
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=n(108),s=r(a),l=n(226),u=r(l)
t["default"]=i},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(){var e=arguments.length<=0||void 0===arguments[0]?d:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1]
switch(t.type){case c["default"].CREATE_RECORD:return(0,l["default"])(o({},e,{}))
case c["default"].UPDATE_RECORD:return(0,l["default"])(o({},e,{}))
case c["default"].DELETE_RECORD:return(0,l["default"])(o({},e,{}))
switch(t.type){case c["default"].SET_SCHEMA:return(0,l["default"])(a({},e,i({},t.payload.id,a({},e[t.payload.id],t.payload))))
case c["default"].SET_SCHEMA_STATE_OVERRIDES:return(0,l["default"])(a({},e,i({},t.payload.id,a({},e[t.payload.id],{stateOverride:t.payload.stateOverride}))))
case c["default"].SET_SCHEMA_LOADING:return(0,l["default"])(a({},e,i({},t.payload.id,a({},e[t.payload.id],{metadata:a({},e[t.payload.id]&&e[t.payload.id].metadata,{loading:t.payload.loading})}))))
default:return e}}Object.defineProperty(t,"__esModule",{value:!0})
var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}
t["default"]=o
var s=n(108),l=r(s),u=n(33),c=r(u),d=(0,l["default"])({})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(){var e=arguments.length<=0||void 0===arguments[0]?d:arguments[0],t=arguments[1],n=null,r=null,o=null
switch(t.type){case c["default"].CREATE_RECORD:return(0,l["default"])(a({},e,{}))
case c["default"].UPDATE_RECORD:return(0,l["default"])(a({},e,{}))
case c["default"].DELETE_RECORD:return(0,l["default"])(a({},e,{}))
case c["default"].FETCH_RECORDS_REQUEST:return e
case c["default"].FETCH_RECORDS_FAILURE:return e
case c["default"].FETCH_RECORDS_SUCCESS:if(i=t.payload.recordType,!i)throw new Error("Undefined record type")
return n=t.payload.data._embedded[i]||{},n=n.reduce(function(e,t){return o({},e,r({},t.ID,t))},{}),(0,l["default"])(o({},e,r({},i,n)))
case c["default"].FETCH_RECORDS_SUCCESS:if(r=t.payload.recordType,!r)throw new Error("Undefined record type")
return n=t.payload.data._embedded[r]||{},n=n.reduce(function(e,t){return a({},e,i({},t.ID,t))},{}),(0,l["default"])(a({},e,i({},r,n)))
case c["default"].FETCH_RECORD_REQUEST:return e
case c["default"].FETCH_RECORD_FAILURE:return e
case c["default"].FETCH_RECORD_SUCCESS:if(i=t.payload.recordType,a=t.payload.data,!i)throw new Error("Undefined record type")
return(0,l["default"])(o({},e,r({},i,o({},e[i],r({},a.ID,a)))))
case c["default"].FETCH_RECORD_SUCCESS:if(r=t.payload.recordType,o=t.payload.data,!r)throw new Error("Undefined record type")
return(0,l["default"])(a({},e,i({},r,a({},e[r],i({},o.ID,o)))))
case c["default"].DELETE_RECORD_REQUEST:return e
case c["default"].DELETE_RECORD_FAILURE:return e
case c["default"].DELETE_RECORD_SUCCESS:return i=t.payload.recordType,n=e[i],n=Object.keys(n).reduce(function(e,i){return parseInt(i,10)!==parseInt(t.payload.id,10)?o({},e,r({},i,n[i])):e},{}),(0,l["default"])(o({},e,r({},i,n)))
case c["default"].DELETE_RECORD_SUCCESS:return r=t.payload.recordType,n=e[r],n=Object.keys(n).reduce(function(e,r){return parseInt(r,10)!==parseInt(t.payload.id,10)?a({},e,i({},r,n[r])):e},{}),(0,l["default"])(a({},e,i({},r,n)))
default:return e}}Object.defineProperty(t,"__esModule",{value:!0})
var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=n(108),l=r(s),u=n(125),c=r(u),d={}
t["default"]=o},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(){var e=arguments.length<=0||void 0===arguments[0]?c:arguments[0],t=arguments[1]
switch(t.type){case u["default"].SET_CAMPAIGN_SELECTED_CHANGESETITEM:return(0,s["default"])(o({},e,{changeSetItemId:t.payload.changeSetItemId}))
case u["default"].SET_CAMPAIGN_ACTIVE_CHANGESET:return(0,s["default"])(o({},e,{campaignId:t.payload.campaignId,view:t.payload.view,changeSetItemId:null}))
case u["default"].PUBLISH_CAMPAIGN_REQUEST:return(0,s["default"])(o({},e,{isPublishing:!0}))
case u["default"].PUBLISH_CAMPAIGN_SUCCESS:case u["default"].PUBLISH_CAMPAIGN_FAILURE:return(0,s["default"])(o({},e,{isPublishing:!1}))
default:return e}}Object.defineProperty(t,"__esModule",{value:!0})
var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},s=n(108),l=i(s),u=n(125),c=i(u),d={}
t["default"]=a},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(){var e=arguments.length<=0||void 0===arguments[0]?c:arguments[0],t=arguments[1]
switch(t.type){case u["default"].SET_CAMPAIGN_SELECTED_CHANGESETITEM:return(0,s["default"])(a({},e,{changeSetItemId:t.payload.changeSetItemId}))
case u["default"].SET_CAMPAIGN_ACTIVE_CHANGESET:return(0,s["default"])(a({},e,{campaignId:t.payload.campaignId,view:t.payload.view,changeSetItemId:null}))
case u["default"].PUBLISH_CAMPAIGN_REQUEST:return(0,s["default"])(a({},e,{isPublishing:!0}))
case u["default"].PUBLISH_CAMPAIGN_SUCCESS:case u["default"].PUBLISH_CAMPAIGN_FAILURE:return(0,s["default"])(a({},e,{isPublishing:!1}))
default:return e}}Object.defineProperty(t,"__esModule",{value:!0})
var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},o=n(108),s=i(o),l=n(236),u=i(l),c=(0,s["default"])({campaignId:null,changeSetItemId:null,isPublishing:!1,view:null})
t["default"]=r},function(e,t){"use strict"
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=n(108),s=r(a),l=n(231),u=r(l),c=(0,s["default"])({campaignId:null,changeSetItemId:null,isPublishing:!1,view:null})
t["default"]=i},function(e,t){"use strict"
Object.defineProperty(t,"__esModule",{value:!0}),t["default"]={SET_CAMPAIGN_ACTIVE_CHANGESET:"SET_CAMPAIGN_ACTIVE_CHANGESET",SET_CAMPAIGN_SELECTED_CHANGESETITEM:"SET_CAMPAIGN_SELECTED_CHANGESETITEM",PUBLISH_CAMPAIGN_REQUEST:"PUBLISH_CAMPAIGN_REQUEST",
PUBLISH_CAMPAIGN_SUCCESS:"PUBLISH_CAMPAIGN_SUCCESS",PUBLISH_CAMPAIGN_FAILURE:"PUBLISH_CAMPAIGN_FAILURE"}},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(){var e=arguments.length<=0||void 0===arguments[0]?c:arguments[0],t=arguments[1]
switch(t.type){case u["default"].SET_BREADCRUMBS:return(0,s["default"])(a([],t.payload.breadcrumbs))
function r(e){return e&&e.__esModule?e:{"default":e}}function i(){var e=arguments.length<=0||void 0===arguments[0]?c:arguments[0],t=arguments[1]
switch(t.type){case u["default"].SET_BREADCRUMBS:return(0,s["default"])(o([],t.payload.breadcrumbs))
default:return e}}Object.defineProperty(t,"__esModule",{value:!0})
var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},o=n(108),s=i(o),l=n(145),u=i(l),c=(0,s["default"])([])
t["default"]=r},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n(103),s=i(o),l=n(134),u=i(l),c=n(132),d=i(c),f=n(239),p=i(f),h=n(241),m=i(h),g=n(242),v=i(g),y=n(243),b=i(y),_=n(244),w=i(_),C=n(245),T=i(C),E=n(246),P=i(E),O=n(137),S=i(O),k=n(247),j=i(k),x=n(248),R=i(x),I=n(249),A=i(I),F=n(250),D=i(F),M=n(251),N=i(M),U=n(252),L=i(U),B=n(253),H=i(B),$=function(){
function e(){r(this,e)}return a(e,[{key:"start",value:function t(){s["default"].register("TextField",u["default"]),s["default"].register("HiddenField",d["default"]),s["default"].register("CheckboxField",p["default"]),
s["default"].register("CheckboxSetField",m["default"]),s["default"].register("OptionsetField",v["default"]),s["default"].register("GridField",b["default"]),s["default"].register("FieldGroup",H["default"]),
s["default"].register("SingleSelectField",w["default"]),s["default"].register("PopoverField",T["default"]),s["default"].register("HeaderField",P["default"]),s["default"].register("LiteralField",S["default"]),
s["default"].register("HtmlReadonlyField",j["default"]),s["default"].register("LookupField",R["default"]),s["default"].register("CompositeField",A["default"]),s["default"].register("Tabs",D["default"]),
s["default"].register("TabItem",N["default"]),s["default"].register("FormAction",L["default"])}}]),e}()
var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=n(108),s=r(a),l=n(145),u=r(l),c=(0,s["default"])([])
t["default"]=i},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0})
var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(103),s=r(a),l=n(134),u=r(l),c=n(132),d=r(c),f=n(234),p=r(f),h=n(236),m=r(h),g=n(237),y=r(g),b=n(238),v=r(b),_=n(239),w=r(_),C=n(240),T=r(C),P=n(241),E=r(P),O=n(137),k=r(O),S=n(242),j=r(S),x=n(243),R=r(x),I=n(244),A=r(I),D=n(245),F=r(D),M=n(246),N=r(M),L=n(247),U=r(L),B=n(248),H=r(B),$=function(){
function e(){i(this,e)}return o(e,[{key:"start",value:function t(){s["default"].register("TextField",u["default"]),s["default"].register("HiddenField",d["default"]),s["default"].register("CheckboxField",p["default"]),
s["default"].register("CheckboxSetField",m["default"]),s["default"].register("OptionsetField",y["default"]),s["default"].register("GridField",v["default"]),s["default"].register("FieldGroup",H["default"]),
s["default"].register("SingleSelectField",w["default"]),s["default"].register("PopoverField",T["default"]),s["default"].register("HeaderField",E["default"]),s["default"].register("LiteralField",k["default"]),
s["default"].register("HtmlReadonlyField",j["default"]),s["default"].register("LookupField",R["default"]),s["default"].register("CompositeField",A["default"]),s["default"].register("Tabs",F["default"]),
s["default"].register("TabItem",N["default"]),s["default"].register("FormAction",U["default"])}}]),e}()
t["default"]=new $},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(240),f=i(d),p=n(135),h=i(p),m=n(20),g=i(m),v=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),l(t,[{key:"render",value:function n(){var e=(0,h["default"])(f["default"])
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(235),f=r(d),p=n(135),h=r(p),m=n(20),g=r(m),y=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),l(t,[{key:"render",value:function n(){var e=(0,h["default"])(f["default"])
return c["default"].createElement(e,s({},this.props,{type:"checkbox",hideLabels:!0}))}}]),t}(g["default"])
t["default"]=v},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
t["default"]=y},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(22),p=i(f),h=n(21),m=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleChange=n.handleChange.bind(n),n}return o(t,e),s(t,[{key:"handleChange",value:function n(e){"function"==typeof this.props.onChange?this.props.onChange(e,{id:this.props.id,value:e.target.checked?1:0
}):"function"==typeof this.props.onClick&&this.props.onClick(e,{id:this.props.id,value:e.target.checked?1:0})}},{key:"getInputProps",value:function i(){return{id:this.props.id,name:this.props.name,disabled:this.props.disabled,
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(22),p=r(f),h=n(21),m=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleChange=n.handleChange.bind(n),n}return a(t,e),s(t,[{key:"handleChange",value:function n(e){"function"==typeof this.props.onChange?this.props.onChange(e,{id:this.props.id,value:e.target.checked?1:0
}):"function"==typeof this.props.onClick&&this.props.onClick(e,{id:this.props.id,value:e.target.checked?1:0})}},{key:"getInputProps",value:function r(){return{id:this.props.id,name:this.props.name,disabled:this.props.disabled,
readOnly:this.props.readOnly,className:this.props.className+" "+this.props.extraClass,onChange:this.handleChange,checked:!!this.props.value,value:1}}},{key:"render",value:function l(){var e=null!==this.props.leftTitle?this.props.leftTitle:this.props.title,t=null
@ -2245,45 +2037,45 @@ default:throw new Error("Invalid OptionField type: "+this.props.type)}return(0,p
m.propTypes={type:u["default"].PropTypes.oneOf(["checkbox","radio"]),leftTitle:u["default"].PropTypes.any,title:u["default"].PropTypes.any,extraClass:u["default"].PropTypes.string,id:u["default"].PropTypes.string,
name:u["default"].PropTypes.string.isRequired,onChange:u["default"].PropTypes.func,value:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.number,u["default"].PropTypes.bool]),
readOnly:u["default"].PropTypes.bool,disabled:u["default"].PropTypes.bool},m.defaultProps={extraClass:"",className:"",type:"radio",leftTitle:null},t["default"]=m},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.CheckboxSetField=void 0
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(240),p=i(f),h=n(135),m=i(h),g=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getItemKey=n.getItemKey.bind(n),n.getOptionProps=n.getOptionProps.bind(n),n.handleChange=n.handleChange.bind(n),n.getValues=n.getValues.bind(n),n}return o(t,e),s(t,[{key:"getItemKey",value:function n(e,t){
return this.props.id+"-"+(e.value||"empty"+t)}},{key:"getValues",value:function i(){var e=this.props.value
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(235),p=r(f),h=n(135),m=r(h),g=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getItemKey=n.getItemKey.bind(n),n.getOptionProps=n.getOptionProps.bind(n),n.handleChange=n.handleChange.bind(n),n.getValues=n.getValues.bind(n),n}return a(t,e),s(t,[{key:"getItemKey",value:function n(e,t){
return this.props.id+"-"+(e.value||"empty"+t)}},{key:"getValues",value:function r(){var e=this.props.value
return Array.isArray(e)||!e&&"string"!=typeof e&&"number"!=typeof e||(e=[e]),e?e.map(function(e){return""+e}):[]}},{key:"handleChange",value:function l(e,t){var n=this
"function"==typeof this.props.onChange&&!function(){var e=n.getValues(),i=n.props.source.filter(function(i,r){return n.getItemKey(i,r)===t.id?1===t.value:e.indexOf(""+i.value)>-1}).map(function(e){return""+e.value
"function"==typeof this.props.onChange&&!function(){var e=n.getValues(),r=n.props.source.filter(function(r,i){return n.getItemKey(r,i)===t.id?1===t.value:e.indexOf(""+r.value)>-1}).map(function(e){return""+e.value
})
n.props.onChange(i)}()}},{key:"getOptionProps",value:function c(e,t){var n=this.getValues(),i=this.getItemKey(e,t)
return{key:i,id:i,name:this.props.name,className:this.props.itemClass,disabled:e.disabled||this.props.disabled,readOnly:this.props.readOnly,onChange:this.handleChange,value:n.indexOf(""+e.value)>-1,title:e.title,
n.props.onChange(r)}()}},{key:"getOptionProps",value:function c(e,t){var n=this.getValues(),r=this.getItemKey(e,t)
return{key:r,id:r,name:this.props.name,className:this.props.itemClass,disabled:e.disabled||this.props.disabled,readOnly:this.props.readOnly,onChange:this.handleChange,value:n.indexOf(""+e.value)>-1,title:e.title,
type:"checkbox"}}},{key:"render",value:function d(){var e=this
return this.props.source?u["default"].createElement("div",null,this.props.source.map(function(t,n){return u["default"].createElement(p["default"],e.getOptionProps(t,n))})):null}}]),t}(d["default"])
g.propTypes={className:u["default"].PropTypes.string,extraClass:u["default"].PropTypes.string,itemClass:u["default"].PropTypes.string,id:u["default"].PropTypes.string,name:u["default"].PropTypes.string.isRequired,
source:u["default"].PropTypes.arrayOf(u["default"].PropTypes.shape({value:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.number]),title:u["default"].PropTypes.any,
disabled:u["default"].PropTypes.bool})),onChange:u["default"].PropTypes.func,value:u["default"].PropTypes.any,readOnly:u["default"].PropTypes.bool,disabled:u["default"].PropTypes.bool},g.defaultProps={
extraClass:"",className:"",value:[]},t.CheckboxSetField=g,t["default"]=(0,m["default"])(g)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.OptionsetField=void 0
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(240),p=i(f),h=n(135),m=i(h),g=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getItemKey=n.getItemKey.bind(n),n.getOptionProps=n.getOptionProps.bind(n),n.handleChange=n.handleChange.bind(n),n}return o(t,e),s(t,[{key:"getItemKey",value:function n(e,t){return this.props.id+"-"+(e.value||"empty"+t)
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(235),p=r(f),h=n(135),m=r(h),g=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getItemKey=n.getItemKey.bind(n),n.getOptionProps=n.getOptionProps.bind(n),n.handleChange=n.handleChange.bind(n),n}return a(t,e),s(t,[{key:"getItemKey",value:function n(e,t){return this.props.id+"-"+(e.value||"empty"+t)
}},{key:"handleChange",value:function i(e,t){var n=this
if("function"==typeof this.props.onChange&&1===t.value){var i=this.props.source.find(function(e,i){return n.getItemKey(e,i)===t.id})
this.props.onChange(i.value)}}},{key:"getOptionProps",value:function l(e,t){var n=this.getItemKey(e,t)
}},{key:"handleChange",value:function r(e,t){var n=this
if("function"==typeof this.props.onChange&&1===t.value){var r=this.props.source.find(function(e,r){return n.getItemKey(e,r)===t.id})
this.props.onChange(r.value)}}},{key:"getOptionProps",value:function l(e,t){var n=this.getItemKey(e,t)
return{key:n,id:n,name:this.props.name,className:this.props.itemClass,disabled:e.disabled||this.props.disabled,readOnly:this.props.readOnly,onChange:this.handleChange,value:""+this.props.value==""+e.value,
title:e.title,type:"radio"}}},{key:"render",value:function c(){var e=this
return this.props.source?u["default"].createElement("div",null,this.props.source.map(function(t,n){return u["default"].createElement(p["default"],e.getOptionProps(t,n))})):null}}]),t}(d["default"])
@ -2291,131 +2083,131 @@ g.propTypes={extraClass:u["default"].PropTypes.string,itemClass:u["default"].Pro
value:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.number]),title:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.number]),
disabled:u["default"].PropTypes.bool})),onChange:u["default"].PropTypes.func,value:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.number]),readOnly:u["default"].PropTypes.bool,
disabled:u["default"].PropTypes.bool},g.defaultProps={extraClass:"",className:""},t.OptionsetField=g,t["default"]=(0,m["default"])(g)},function(e,t){e.exports=GridField},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.SingleSelectField=void 0
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(20),f=i(d),p=n(135),h=i(p),m=n(114),g=i(m),v=n(21),y=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleChange=n.handleChange.bind(n),n}return o(t,e),l(t,[{key:"render",value:function n(){var e=null
return e=this.props.readOnly?this.getReadonlyField():this.getSelectField()}},{key:"getReadonlyField",value:function i(){var e=this,t=this.props.source&&this.props.source.find(function(t){return t.value===e.props.value
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(20),f=r(d),p=n(135),h=r(p),m=n(114),g=r(m),y=n(21),b=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleChange=n.handleChange.bind(n),n}return a(t,e),l(t,[{key:"render",value:function n(){var e=null
return e=this.props.readOnly?this.getReadonlyField():this.getSelectField()}},{key:"getReadonlyField",value:function r(){var e=this,t=this.props.source&&this.props.source.find(function(t){return t.value===e.props.value
})
return t="string"==typeof t?t:this.props.value,c["default"].createElement(v.FormControl.Static,this.getInputProps(),t)}},{key:"getSelectField",value:function u(){var e=this,t=this.props.source?this.props.source.slice():[]
return t="string"==typeof t?t:this.props.value,c["default"].createElement(y.FormControl.Static,this.getInputProps(),t)}},{key:"getSelectField",value:function u(){var e=this,t=this.props.source?this.props.source.slice():[]
return this.props.data.hasEmptyDefault&&!t.find(function(e){return!e.value})&&t.unshift({value:"",title:this.props.data.emptyString,disabled:!1}),c["default"].createElement(v.FormControl,this.getInputProps(),t.map(function(t,n){
var i=e.props.name+"-"+(t.value||"empty"+n)
return c["default"].createElement("option",{key:i,value:t.value,disabled:t.disabled},t.title)}))}},{key:"getInputProps",value:function d(){var e={bsClass:this.props.bsClass,className:this.props.className+" "+this.props.extraClass+" no-chosen",
return this.props.data.hasEmptyDefault&&!t.find(function(e){return!e.value})&&t.unshift({value:"",title:this.props.data.emptyString,disabled:!1}),c["default"].createElement(y.FormControl,this.getInputProps(),t.map(function(t,n){
var r=e.props.name+"-"+(t.value||"empty"+n)
return c["default"].createElement("option",{key:r,value:t.value,disabled:t.disabled},t.title)}))}},{key:"getInputProps",value:function d(){var e={bsClass:this.props.bsClass,className:this.props.className+" "+this.props.extraClass+" no-chosen",
id:this.props.id,name:this.props.name,disabled:this.props.disabled}
return this.props.readOnly||s(e,{onChange:this.handleChange,value:this.props.value,componentClass:"select"}),e}},{key:"handleChange",value:function f(e){"function"==typeof this.props.onChange&&this.props.onChange(e,{
id:this.props.id,value:e.target.value})}}]),t}(f["default"])
y.propTypes={id:c["default"].PropTypes.string,name:c["default"].PropTypes.string.isRequired,onChange:c["default"].PropTypes.func,value:c["default"].PropTypes.oneOfType([c["default"].PropTypes.string,c["default"].PropTypes.number]),
b.propTypes={id:c["default"].PropTypes.string,name:c["default"].PropTypes.string.isRequired,onChange:c["default"].PropTypes.func,value:c["default"].PropTypes.oneOfType([c["default"].PropTypes.string,c["default"].PropTypes.number]),
readOnly:c["default"].PropTypes.bool,disabled:c["default"].PropTypes.bool,source:c["default"].PropTypes.arrayOf(c["default"].PropTypes.shape({value:c["default"].PropTypes.oneOfType([c["default"].PropTypes.string,c["default"].PropTypes.number]),
title:c["default"].PropTypes.oneOfType([c["default"].PropTypes.string,c["default"].PropTypes.number]),disabled:c["default"].PropTypes.bool})),data:c["default"].PropTypes.oneOfType([c["default"].PropTypes.array,c["default"].PropTypes.shape({
hasEmptyDefault:c["default"].PropTypes.bool,emptyString:c["default"].PropTypes.oneOfType([c["default"].PropTypes.string,c["default"].PropTypes.number])})])},y.defaultProps={source:[],extraClass:"",className:"",
data:{emptyString:g["default"]._t("Boolean.ANY","Any")}},t.SingleSelectField=y,t["default"]=(0,h["default"])(y)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
hasEmptyDefault:c["default"].PropTypes.bool,emptyString:c["default"].PropTypes.oneOfType([c["default"].PropTypes.string,c["default"].PropTypes.number])})])},b.defaultProps={source:[],extraClass:"",className:"",
data:{emptyString:g["default"]._t("Boolean.ANY","Any")}},t.SingleSelectField=b,t["default"]=(0,h["default"])(b)},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(21),d=n(20),f=i(d),p=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleShow=n.handleShow.bind(n),n.handleHide=n.handleHide.bind(n),n.state={showing:!1},n}return o(t,e),s(t,[{key:"handleShow",value:function n(){this.setState({showing:!0})}},{key:"handleHide",
value:function i(){this.setState({showing:!1})}},{key:"render",value:function l(){var e=this.getPlacement(),t=u["default"].createElement(c.Popover,{id:this.props.id+"_Popover",className:"fade in popover-"+e,
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(21),d=n(20),f=r(d),p=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleShow=n.handleShow.bind(n),n.handleHide=n.handleHide.bind(n),n.state={showing:!1},n}return a(t,e),s(t,[{key:"handleShow",value:function n(){this.setState({showing:!0})}},{key:"handleHide",
value:function r(){this.setState({showing:!1})}},{key:"render",value:function l(){var e=this.getPlacement(),t=u["default"].createElement(c.Popover,{id:this.props.id+"_Popover",className:"fade in popover-"+e,
title:this.props.data.popoverTitle},this.props.children),n=["btn","btn-secondary"]
this.state.showing&&n.push("btn--no-focus"),this.props.title||n.push("font-icon-dot-3 btn--no-text btn--icon-xl")
var i={id:this.props.id,type:"button",className:n.join(" ")}
return this.props.data.buttonTooltip&&(i.title=this.props.data.buttonTooltip),u["default"].createElement(c.OverlayTrigger,{rootClose:!0,trigger:"click",placement:e,overlay:t,onEnter:this.handleShow,onExited:this.handleHide
},u["default"].createElement("button",i,this.props.title))}},{key:"getPlacement",value:function d(){var e=this.props.data.placement
var r={id:this.props.id,type:"button",className:n.join(" ")}
return this.props.data.buttonTooltip&&(r.title=this.props.data.buttonTooltip),u["default"].createElement(c.OverlayTrigger,{rootClose:!0,trigger:"click",placement:e,overlay:t,onEnter:this.handleShow,onExited:this.handleHide
},u["default"].createElement("button",r,this.props.title))}},{key:"getPlacement",value:function d(){var e=this.props.data.placement
return e||"bottom"}}]),t}(f["default"])
p.propTypes={id:u["default"].PropTypes.string,title:u["default"].PropTypes.any,data:u["default"].PropTypes.oneOfType([u["default"].PropTypes.array,u["default"].PropTypes.shape({popoverTitle:u["default"].PropTypes.string,
buttonTooltip:u["default"].PropTypes.string,placement:u["default"].PropTypes.oneOf(["top","right","bottom","left"])})])},t["default"]=p},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){var e="h"+(this.props.data.headingLevel||3)
return u["default"].createElement("div",{className:"field"},u["default"].createElement(e,this.getInputProps(),this.props.data.title))}},{key:"getInputProps",value:function i(){return{className:this.props.className+" "+this.props.extraClass,
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){var e="h"+(this.props.data.headingLevel||3)
return u["default"].createElement("div",{className:"field"},u["default"].createElement(e,this.getInputProps(),this.props.data.title))}},{key:"getInputProps",value:function r(){return{className:this.props.className+" "+this.props.extraClass,
id:this.props.id}}}]),t}(d["default"])
f.propTypes={extraClass:u["default"].PropTypes.string,id:u["default"].PropTypes.string,data:u["default"].PropTypes.oneOfType([u["default"].PropTypes.array,u["default"].PropTypes.shape({headingLevel:u["default"].PropTypes.number,
title:u["default"].PropTypes.string})]).isRequired},f.defaultProps={className:"",extraClass:""},t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.HtmlReadonlyField=void 0
var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=n(5),c=i(u),d=n(20),f=i(d),p=n(135),h=i(p),m=n(21),g=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getContent=n.getContent.bind(n),n}return o(t,e),l(t,[{key:"getContent",value:function n(){return{__html:this.props.value}}},{key:"getInputProps",value:function i(){return{bsClass:this.props.bsClass,
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=n(5),c=r(u),d=n(20),f=r(d),p=n(135),h=r(p),m=n(21),g=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getContent=n.getContent.bind(n),n}return a(t,e),l(t,[{key:"getContent",value:function n(){return{__html:this.props.value}}},{key:"getInputProps",value:function r(){return{bsClass:this.props.bsClass,
componentClass:this.props.componentClass,className:this.props.className+" "+this.props.extraClass,id:this.props.id,name:this.props.name}}},{key:"render",value:function u(){return c["default"].createElement(m.FormControl.Static,s({},this.getInputProps(),{
dangerouslySetInnerHTML:this.getContent()}))}}]),t}(f["default"])
g.propTypes={id:c["default"].PropTypes.string,name:c["default"].PropTypes.string.isRequired,extraClass:c["default"].PropTypes.string,value:c["default"].PropTypes.string},g.defaultProps={extraClass:"",className:""
},t.HtmlReadonlyField=g,t["default"]=(0,h["default"])(g)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.LookupField=void 0
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(21),p=n(135),h=i(p),m=n(114),g=i(m),v=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getValueCSV=n.getValueCSV.bind(n),n}return o(t,e),s(t,[{key:"getValueCSV",value:function n(){var e=this,t=this.props.value
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(21),p=n(135),h=r(p),m=n(114),g=r(m),y=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.getValueCSV=n.getValueCSV.bind(n),n}return a(t,e),s(t,[{key:"getValueCSV",value:function n(){var e=this,t=this.props.value
if(!Array.isArray(t)&&(t||"string"==typeof t||"number"==typeof t)){var n=this.props.source.find(function(e){return e.value===t})
return n?n.title:""}return t&&t.length?t.map(function(t){var n=e.props.source.find(function(e){return e.value===t})
return n&&n.title}).filter(function(e){return(""+e).length}).join(", "):""}},{key:"getFieldProps",value:function i(){return{id:this.props.id,name:this.props.name,className:this.props.className+" "+this.props.extraClass
return n&&n.title}).filter(function(e){return(""+e).length}).join(", "):""}},{key:"getFieldProps",value:function r(){return{id:this.props.id,name:this.props.name,className:this.props.className+" "+this.props.extraClass
}}},{key:"render",value:function l(){if(!this.props.source)return null
var e="('"+g["default"]._t("FormField.NONE","None")+"')"
return u["default"].createElement(f.FormControl.Static,this.getFieldProps(),this.getValueCSV()||e)}}]),t}(d["default"])
v.propTypes={extraClass:u["default"].PropTypes.string,id:u["default"].PropTypes.string,name:u["default"].PropTypes.string.isRequired,source:u["default"].PropTypes.arrayOf(u["default"].PropTypes.shape({
y.propTypes={extraClass:u["default"].PropTypes.string,id:u["default"].PropTypes.string,name:u["default"].PropTypes.string.isRequired,source:u["default"].PropTypes.arrayOf(u["default"].PropTypes.shape({
value:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.number]),title:u["default"].PropTypes.any,disabled:u["default"].PropTypes.bool})),value:u["default"].PropTypes.any
},v.defaultProps={extraClass:"",className:"",value:[]},t.LookupField=v,t["default"]=(0,h["default"])(v)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
},y.defaultProps={extraClass:"",className:"",value:[]},t.LookupField=y,t["default"]=(0,h["default"])(y)},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(22),p=i(f),h=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"getLegend",value:function n(){return"fieldset"===this.props.data.tag&&this.props.data.legend?(0,
p["default"])("legend",this.props.data.legend):null}},{key:"getClassName",value:function i(){return this.props.className+" "+this.props.extraClass}},{key:"render",value:function l(){var e=this.getLegend(),t=this.props.data.tag||"div",n=this.getClassName()
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(22),p=r(f),h=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"getLegend",value:function n(){return"fieldset"===this.props.data.tag&&this.props.data.legend?(0,
p["default"])("legend",this.props.data.legend):null}},{key:"getClassName",value:function r(){return this.props.className+" "+this.props.extraClass}},{key:"render",value:function l(){var e=this.getLegend(),t=this.props.data.tag||"div",n=this.getClassName()
return u["default"].createElement(t,{className:n},e,this.props.children)}}]),t}(d["default"])
h.propTypes={data:u["default"].PropTypes.oneOfType([u["default"].PropTypes.array,u["default"].PropTypes.shape({tag:u["default"].PropTypes.string,legend:u["default"].PropTypes.string})]),extraClass:u["default"].PropTypes.string
},h.defaultProps={className:"",extraClass:""},t["default"]=h},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(21),p=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"getContainerProps",value:function n(){var e=this.props,t=e.activeKey,n=e.onSelect,i=e.className,r=e.extraClass,a=e.id,o=i+" "+r
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(21),p=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"getContainerProps",value:function n(){var e=this.props,t=e.activeKey,n=e.onSelect,r=e.className,i=e.extraClass,o=e.id,a=r+" "+i
return{activeKey:t,className:o,defaultActiveKey:this.getDefaultActiveKey(),onSelect:n,id:a}}},{key:"getDefaultActiveKey",value:function i(){var e=this,t=null
return{activeKey:t,className:a,defaultActiveKey:this.getDefaultActiveKey(),onSelect:n,id:o}}},{key:"getDefaultActiveKey",value:function r(){var e=this,t=null
if("string"==typeof this.props.defaultActiveKey){var n=u["default"].Children.toArray(this.props.children).find(function(t){return t.props.name===e.props.defaultActiveKey})
n&&(t=n.props.name)}return"string"!=typeof t&&u["default"].Children.forEach(this.props.children,function(e){"string"!=typeof t&&(t=e.props.name)}),t}},{key:"renderTab",value:function l(e){return null===e.props.title?null:u["default"].createElement(f.NavItem,{
eventKey:e.props.name,disabled:e.props.disabled,className:e.props.tabClassName},e.props.title)}},{key:"renderNav",value:function c(){var e=u["default"].Children.map(this.props.children,this.renderTab)
@ -2425,52 +2217,52 @@ return u["default"].createElement(f.Tab.Container,e,u["default"].createElement("
}}]),t}(d["default"])
p.propTypes={id:u["default"].PropTypes.string.isRequired,defaultActiveKey:u["default"].PropTypes.string,extraClass:u["default"].PropTypes.string},p.defaultProps={bsStyle:"tabs",className:"",extraClass:""
},t["default"]=p},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(21),p=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"getTabProps",value:function n(){var e=this.props,t=e.name,n=e.className,i=e.extraClass,r=e.disabled,a=e.bsClass,o=e.onEnter,s=e.onEntering,l=e.onEntered,u=e.onExit,c=e.onExiting,d=e.onExited,f=e.animation,p=e.unmountOnExit
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(21),p=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"getTabProps",value:function n(){var e=this.props,t=e.name,n=e.className,r=e.extraClass,i=e.disabled,o=e.bsClass,a=e.onEnter,s=e.onEntering,l=e.onEntered,u=e.onExit,c=e.onExiting,d=e.onExited,f=e.animation,p=e.unmountOnExit
return{eventKey:t,className:n+" "+i,disabled:r,bsClass:a,onEnter:o,onEntering:s,onEntered:l,onExit:u,onExiting:c,onExited:d,animation:f,unmountOnExit:p}}},{key:"render",value:function i(){var e=this.getTabProps()
return{eventKey:t,className:n+" "+r,disabled:i,bsClass:o,onEnter:a,onEntering:s,onEntered:l,onExit:u,onExiting:c,onExited:d,animation:f,unmountOnExit:p}}},{key:"render",value:function r(){var e=this.getTabProps()
return u["default"].createElement(f.Tab.Pane,e,this.props.children)}}]),t}(d["default"])
p.propTypes={name:u["default"].PropTypes.string.isRequired,extraClass:u["default"].PropTypes.string,tabClassName:u["default"].PropTypes.string},p.defaultProps={className:"",extraClass:""},t["default"]=p
},function(e,t){e.exports=FormAction},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0}),t.FieldGroup=void 0
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=function h(e,t,n){null===e&&(e=Function.prototype)
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=function h(e,t,n){null===e&&(e=Function.prototype)
var i=Object.getOwnPropertyDescriptor(e,t)
if(void 0===i){var r=Object.getPrototypeOf(e)
return null===r?void 0:h(r,t,n)}if("value"in i)return i.value
var a=i.get
if(void 0!==a)return a.call(n)},u=n(249),c=i(u),d=n(135),f=i(d),p=function(e){function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"getClassName",
var r=Object.getOwnPropertyDescriptor(e,t)
if(void 0===r){var i=Object.getPrototypeOf(e)
return null===i?void 0:h(i,t,n)}if("value"in r)return r.value
var o=r.get
if(void 0!==o)return o.call(n)},u=n(244),c=r(u),d=n(135),f=r(d),p=function(e){function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"getClassName",
value:function n(){return"field-group-component "+l(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"getClassName",this).call(this)}}]),t}(c["default"])
t.FieldGroup=p,t["default"]=(0,f["default"])(p)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(142),a=n(149),o=i(a),s=n(225),l=i(s),u=n(386),c=i(u)
document.addEventListener("DOMContentLoaded",function(){var e=o["default"].getSection("SilverStripe\\Admin\\CampaignAdmin")
l["default"].add({path:e.url,component:(0,r.withRouter)(c["default"]),childRoutes:[{path:":type/:id/:view",component:c["default"]},{path:"set/:id/:view",component:c["default"]}]})})},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}var i=n(142),o=n(149),a=r(o),s=n(220),l=r(s),u=n(381),c=r(u)
document.addEventListener("DOMContentLoaded",function(){var e=a["default"].getSection("SilverStripe\\Admin\\CampaignAdmin")
l["default"].add({path:e.url,component:(0,i.withRouter)(c["default"]),childRoutes:[{path:":type/:id/:view",component:c["default"]},{path:"set/:id/:view",component:c["default"]}]})})},function(e,t,n){"use strict"
function i(e){if(e&&e.__esModule)return e
function r(e){if(e&&e.__esModule)return e
var t={}
if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])
return t["default"]=e,t}function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return t["default"]=e,t}function i(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
@ -2478,19 +2270,19 @@ e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,wri
campaignId:e.campaign.campaignId,view:e.campaign.view,breadcrumbs:e.breadcrumbs,sectionConfig:e.config.sections["SilverStripe\\Admin\\CampaignAdmin"],securityId:e.config.SecurityID}}function u(e){return{
breadcrumbsActions:(0,m.bindActionCreators)(_,e)}}Object.defineProperty(t,"__esModule",{value:!0})
var c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},d=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),f=n(5),p=r(f),h=n(106),m=n(107),g=n(142),v=n(102),y=r(v),b=n(387),_=i(b),w=n(388),C=r(w),T=n(20),E=r(T),P=n(252),O=r(P),S=n(114),k=r(S),j=n(389),x=r(j),R=n(115),I=r(R),A=n(390),F=r(A),D=function(e){
function t(e){a(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.publishApi=y["default"].createEndpointFetcher({url:n.props.sectionConfig.publishEndpoint.url,method:n.props.sectionConfig.publishEndpoint.method,defaultData:{SecurityID:n.props.securityId},payloadSchema:{
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),f=n(5),p=i(f),h=n(106),m=n(107),g=n(142),y=n(102),b=i(y),v=n(382),_=r(v),w=n(383),C=i(w),T=n(20),P=i(T),E=n(247),O=i(E),k=n(114),S=i(k),j=n(384),x=i(j),R=n(115),I=i(R),A=n(385),D=i(A),F=function(e){
function t(e){o(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.publishApi=b["default"].createEndpointFetcher({url:n.props.sectionConfig.publishEndpoint.url,method:n.props.sectionConfig.publishEndpoint.method,defaultData:{SecurityID:n.props.securityId},payloadSchema:{
id:{urlReplacement:":id",remove:!0}}}),n.handleBackButtonClick=n.handleBackButtonClick.bind(n),n}return s(t,e),d(t,[{key:"componentWillMount",value:function n(){0===this.props.breadcrumbs.length&&this.setBreadcrumbs(this.props.params.view,this.props.params.id)
}},{key:"componentWillReceiveProps",value:function i(e){var t=this.props.params.id!==e.params.id||this.props.params.view!==e.params.view
t&&this.setBreadcrumbs(e.params.view,e.params.id)}},{key:"setBreadcrumbs",value:function r(e,t){var n=[{text:k["default"]._t("Campaigns.CAMPAIGN","Campaigns"),href:this.props.sectionConfig.url}]
}},{key:"componentWillReceiveProps",value:function r(e){var t=this.props.params.id!==e.params.id||this.props.params.view!==e.params.view
t&&this.setBreadcrumbs(e.params.view,e.params.id)}},{key:"setBreadcrumbs",value:function i(e,t){var n=[{text:S["default"]._t("Campaigns.CAMPAIGN","Campaigns"),href:this.props.sectionConfig.url}]
switch(e){case"show":break
case"edit":n.push({text:k["default"]._t("Campaigns.EDIT_CAMPAIGN","Editing Campaign"),href:this.getActionRoute(t,e)})
case"edit":n.push({text:S["default"]._t("Campaigns.EDIT_CAMPAIGN","Editing Campaign"),href:this.getActionRoute(t,e)})
break
case"create":n.push({text:k["default"]._t("Campaigns.ADD_CAMPAIGN","Add Campaign"),href:this.getActionRoute(t,e)})}this.props.breadcrumbsActions.setBreadcrumbs(n)}},{key:"handleBackButtonClick",value:function l(e){
case"create":n.push({text:S["default"]._t("Campaigns.ADD_CAMPAIGN","Add Campaign"),href:this.getActionRoute(t,e)})}this.props.breadcrumbsActions.setBreadcrumbs(n)}},{key:"handleBackButtonClick",value:function l(e){
if(this.props.breadcrumbs.length>1){var t=this.props.breadcrumbs[this.props.breadcrumbs.length-2]
t&&t.href&&(e.preventDefault(),this.props.router.push(t.href))}}},{key:"render",value:function u(){var e=null
switch(this.props.params.view){case"show":e=this.renderItemListView()
@ -2499,14 +2291,14 @@ case"edit":e=this.renderDetailEditView()
break
case"create":e=this.renderCreateView()
break
default:e=this.renderIndexView()}return e}},{key:"renderIndexView",value:function f(){var e=this.props.sectionConfig.form.EditForm.schemaUrl,t={title:k["default"]._t("Campaigns.ADDCAMPAIGN"),icon:"plus",
default:e=this.renderIndexView()}return e}},{key:"renderIndexView",value:function f(){var e=this.props.sectionConfig.form.EditForm.schemaUrl,t={title:S["default"]._t("Campaigns.ADDCAMPAIGN"),icon:"plus",
handleClick:this.addCampaign.bind(this)},n={createFn:this.campaignListCreateFn.bind(this),schemaUrl:e}
return p["default"].createElement("div",{className:"fill-height","aria-expanded":"true"},p["default"].createElement(x["default"],null,p["default"].createElement(C["default"],{multiline:!0})),p["default"].createElement("div",{
className:"panel panel--padded panel--scrollable flexbox-area-grow"},p["default"].createElement("div",{className:"toolbar toolbar--content"},p["default"].createElement("div",{className:"btn-toolbar"},p["default"].createElement(O["default"],t))),p["default"].createElement(I["default"],n)))
}},{key:"renderItemListView",value:function h(){var e={sectionConfig:this.props.sectionConfig,campaignId:this.props.params.id,itemListViewEndpoint:this.props.sectionConfig.itemListViewEndpoint,publishApi:this.publishApi,
handleBackButtonClick:this.handleBackButtonClick.bind(this)}
return p["default"].createElement(F["default"],e)}},{key:"renderDetailEditView",value:function m(){var e=this.props.sectionConfig.form.DetailEditForm.schemaUrl,t=e
return p["default"].createElement(D["default"],e)}},{key:"renderDetailEditView",value:function m(){var e=this.props.sectionConfig.form.DetailEditForm.schemaUrl,t=e
this.props.params.id>0&&(t=e+"/"+this.props.params.id)
var n={createFn:this.campaignEditCreateFn.bind(this),schemaUrl:t}
return p["default"].createElement("div",{className:"fill-height"},p["default"].createElement(x["default"],{showBackButton:!0,handleBackButtonClick:this.handleBackButtonClick},p["default"].createElement(C["default"],{
@ -2516,66 +2308,66 @@ this.props.params.id>0&&(t=e+"/"+this.props.params.id)
var n={createFn:this.campaignAddCreateFn.bind(this),schemaUrl:t}
return p["default"].createElement("div",{className:"fill-height"},p["default"].createElement(x["default"],{showBackButton:!0,handleBackButtonClick:this.handleBackButtonClick},p["default"].createElement(C["default"],{
multiline:!0})),p["default"].createElement("div",{className:"panel panel--padded panel--scrollable flexbox-area-grow form--inline"},p["default"].createElement(I["default"],n)))}},{key:"campaignEditCreateFn",
value:function v(e,t){var n=this,i=this.props.sectionConfig.url
if("action_cancel"===t.name){var r=c({},t,{handleClick:function a(e){e.preventDefault(),n.props.router.push(i)}})
return p["default"].createElement(e,c({key:t.id},r))}return p["default"].createElement(e,c({key:t.id},t))}},{key:"campaignAddCreateFn",value:function b(e,t){var n=this,i=this.props.sectionConfig.url
if("action_cancel"===t.name){var r=c({},t,{handleClick:function a(e){e.preventDefault(),n.props.router.push(i)}})
return p["default"].createElement(e,c({key:t.name},r))}return p["default"].createElement(e,c({key:t.name},t))}},{key:"campaignListCreateFn",value:function _(e,t){var n=this,i=this.props.sectionConfig.url,r="set"
value:function y(e,t){var n=this,r=this.props.sectionConfig.url
if("action_cancel"===t.name){var i=c({},t,{handleClick:function o(e){e.preventDefault(),n.props.router.push(r)}})
return p["default"].createElement(e,c({key:t.id},i))}return p["default"].createElement(e,c({key:t.id},t))}},{key:"campaignAddCreateFn",value:function v(e,t){var n=this,r=this.props.sectionConfig.url
if("action_cancel"===t.name){var i=c({},t,{handleClick:function o(e){e.preventDefault(),n.props.router.push(r)}})
return p["default"].createElement(e,c({key:t.name},i))}return p["default"].createElement(e,c({key:t.name},t))}},{key:"campaignListCreateFn",value:function _(e,t){var n=this,r=this.props.sectionConfig.url,i="set"
if("GridField"===t.schemaComponent){var a=c({},t,{data:c({},t.data,{handleDrillDown:function o(e,t){n.props.router.push(i+"/"+r+"/"+t.ID+"/show")},handleEditRecord:function s(e,t){n.props.router.push(i+"/"+r+"/"+t+"/edit")
if("GridField"===t.schemaComponent){var o=c({},t,{data:c({},t.data,{handleDrillDown:function a(e,t){n.props.router.push(r+"/"+i+"/"+t.ID+"/show")},handleEditRecord:function s(e,t){n.props.router.push(r+"/"+i+"/"+t+"/edit")
}})})
return p["default"].createElement(e,c({key:a.name},a))}return p["default"].createElement(e,c({key:t.name},t))}},{key:"addCampaign",value:function w(){var e=this.getActionRoute(0,"create")
this.props.router.push(e)}},{key:"getActionRoute",value:function T(e,t){return this.props.sectionConfig.url+"/set/"+e+"/"+t}}]),t}(E["default"])
D.propTypes={breadcrumbsActions:p["default"].PropTypes.object.isRequired,campaignId:p["default"].PropTypes.string,sectionConfig:p["default"].PropTypes.object.isRequired,securityId:p["default"].PropTypes.string.isRequired,
view:p["default"].PropTypes.string},t["default"]=(0,g.withRouter)((0,h.connect)(l,u)(D))},function(e,t){e.exports=BreadcrumbsActions},function(e,t){e.exports=Breadcrumb},function(e,t){e.exports=Toolbar
return p["default"].createElement(e,c({key:o.name},o))}return p["default"].createElement(e,c({key:t.name},t))}},{key:"addCampaign",value:function w(){var e=this.getActionRoute(0,"create")
this.props.router.push(e)}},{key:"getActionRoute",value:function T(e,t){return this.props.sectionConfig.url+"/set/"+e+"/"+t}}]),t}(P["default"])
F.propTypes={breadcrumbsActions:p["default"].PropTypes.object.isRequired,campaignId:p["default"].PropTypes.string,sectionConfig:p["default"].PropTypes.object.isRequired,securityId:p["default"].PropTypes.string.isRequired,
view:p["default"].PropTypes.string},t["default"]=(0,g.withRouter)((0,h.connect)(l,u)(F))},function(e,t){e.exports=BreadcrumbsActions},function(e,t){e.exports=Breadcrumb},function(e,t){e.exports=Toolbar
},function(e,t,n){"use strict"
function i(e){if(e&&e.__esModule)return e
function r(e){if(e&&e.__esModule)return e
var t={}
if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])
return t["default"]=e,t}function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return t["default"]=e,t}function i(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=null,i=t.sectionConfig.treeClass
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=null,r=t.sectionConfig.treeClass
return e.records&&e.records[i]&&t.campaignId&&(n=e.records[i][parseInt(t.campaignId,10)]),{config:e.config,record:n||{},campaign:e.campaign,treeClass:i}}function u(e){return{breadcrumbsActions:(0,m.bindActionCreators)(y,e),
return e.records&&e.records[r]&&t.campaignId&&(n=e.records[r][parseInt(t.campaignId,10)]),{config:e.config,record:n||{},campaign:e.campaign,treeClass:r}}function u(e){return{breadcrumbsActions:(0,m.bindActionCreators)(b,e),
recordActions:(0,m.bindActionCreators)(_,e),campaignActions:(0,m.bindActionCreators)(C,e)}}Object.defineProperty(t,"__esModule",{value:!0})
var c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]
for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},d=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),f=function V(e,t,n){null===e&&(e=Function.prototype)
for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),f=function V(e,t,n){null===e&&(e=Function.prototype)
var i=Object.getOwnPropertyDescriptor(e,t)
if(void 0===i){var r=Object.getPrototypeOf(e)
return null===r?void 0:V(r,t,n)}if("value"in i)return i.value
var a=i.get
if(void 0!==a)return a.call(n)},p=n(5),h=r(p),m=n(107),g=n(106),v=n(387),y=i(v),b=n(124),_=i(b),w=n(391),C=i(w),T=n(20),E=r(T),P=n(392),O=r(P),S=n(393),k=r(S),j=n(395),x=r(j),R=n(389),I=r(R),A=n(252),F=r(A),D=n(396),M=r(D),N=n(388),U=r(N),L=n(397),B=r(L),H=n(114),$=r(H),q=function(e){
function t(e){a(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
var r=Object.getOwnPropertyDescriptor(e,t)
if(void 0===r){var i=Object.getPrototypeOf(e)
return null===i?void 0:V(i,t,n)}if("value"in r)return r.value
var o=r.get
if(void 0!==o)return o.call(n)},p=n(5),h=i(p),m=n(107),g=n(106),y=n(382),b=r(y),v=n(124),_=r(v),w=n(386),C=r(w),T=n(20),P=i(T),E=n(387),O=i(E),k=n(388),S=i(k),j=n(390),x=i(j),R=n(384),I=i(R),A=n(247),D=i(A),F=n(391),M=i(F),N=n(383),L=i(N),U=n(392),B=i(U),H=n(114),$=i(H),q=function(e){
function t(e){o(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handlePublish=n.handlePublish.bind(n),n.handleItemSelected=n.handleItemSelected.bind(n),n.setBreadcrumbs=n.setBreadcrumbs.bind(n),n.handleCloseItem=n.handleCloseItem.bind(n),n}return s(t,e),d(t,[{
key:"componentDidMount",value:function n(){var e=this.props.itemListViewEndpoint.url.replace(/:id/,this.props.campaignId)
f(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentDidMount",this).call(this),this.setBreadcrumbs(),Object.keys(this.props.record).length||this.props.recordActions.fetchRecord(this.props.treeClass,"get",e).then(this.setBreadcrumbs)
}},{key:"setBreadcrumbs",value:function i(){if(this.props.record){var e=[{text:$["default"]._t("Campaigns.CAMPAIGN","Campaigns"),href:this.props.sectionConfig.url}]
e.push({text:this.props.record.Name,href:this.props.sectionConfig.url+"/set/"+this.props.campaignId+"/show"}),this.props.breadcrumbsActions.setBreadcrumbs(e)}}},{key:"render",value:function r(){var e=this,t=this.props.campaign.changeSetItemId,n=null,i=t?"":"campaign-admin__campaign--hide-preview",r=this.props.campaignId,a=this.props.record,o=this.groupItemsForSet(),s=[]
}},{key:"setBreadcrumbs",value:function r(){if(this.props.record){var e=[{text:$["default"]._t("Campaigns.CAMPAIGN","Campaigns"),href:this.props.sectionConfig.url}]
e.push({text:this.props.record.Name,href:this.props.sectionConfig.url+"/set/"+this.props.campaignId+"/show"}),this.props.breadcrumbsActions.setBreadcrumbs(e)}}},{key:"render",value:function i(){var e=this,t=this.props.campaign.changeSetItemId,n=null,r=t?"":"campaign-admin__campaign--hide-preview",i=this.props.campaignId,o=this.props.record,a=this.groupItemsForSet(),s=[]
Object.keys(o).forEach(function(i){var l=o[i],u=l.items.length,c=[],d=u+" "+(1===u?l.singular:l.plural),f="Set_"+r+"_Group_"+i
l.items.forEach(function(i){t||(t=i.ID)
var r=t===i.ID
r&&i._links&&(n=i._links)
var o=[]
"none"!==i.ChangeType&&"published"!==a.State||o.push("list-group-item--inactive"),r&&o.push("active"),c.push(h["default"].createElement(x["default"],{key:i.ID,className:o.join(" "),handleClick:e.handleItemSelected,
handleClickArg:i.ID},h["default"].createElement(M["default"],{item:i,campaign:e.props.record})))}),s.push(h["default"].createElement(k["default"],{key:f,groupid:f,title:d},c))})
Object.keys(a).forEach(function(r){var l=a[r],u=l.items.length,c=[],d=u+" "+(1===u?l.singular:l.plural),f="Set_"+i+"_Group_"+r
l.items.forEach(function(r){t||(t=r.ID)
var i=t===r.ID
i&&r._links&&(n=r._links)
var a=[]
"none"!==r.ChangeType&&"published"!==o.State||a.push("list-group-item--inactive"),i&&a.push("active"),c.push(h["default"].createElement(x["default"],{key:r.ID,className:a.join(" "),handleClick:e.handleItemSelected,
handleClickArg:r.ID},h["default"].createElement(M["default"],{item:r,campaign:e.props.record})))}),s.push(h["default"].createElement(S["default"],{key:f,groupid:f,title:d},c))})
var l=[this.props.config.absoluteBaseUrl,this.props.config.sections["SilverStripe\\CMS\\Controllers\\CMSPagesController"].url].join(""),u=s.length?h["default"].createElement(O["default"],null,s):h["default"].createElement("div",{
className:"alert alert-warning",role:"alert"},h["default"].createElement("strong",null,"This campaign is empty.")," You can add items to a campaign by selecting ",h["default"].createElement("em",null,"Add to campaign")," from within the ",h["default"].createElement("em",null,"More Options "),"popup on ",h["default"].createElement("a",{
href:l},"pages")," and files."),c=["panel","panel--padded","panel--scrollable","flexbox-area-grow"]
return h["default"].createElement("div",{className:"fill-width campaign-admin__campaign "+i},h["default"].createElement("div",{className:"fill-height campaign-admin__campaign-items","aria-expanded":"true"
},h["default"].createElement(I["default"],{showBackButton:!0,handleBackButtonClick:this.props.handleBackButtonClick},h["default"].createElement(U["default"],{multiline:!0})),h["default"].createElement("div",{
return h["default"].createElement("div",{className:"fill-width campaign-admin__campaign "+r},h["default"].createElement("div",{className:"fill-height campaign-admin__campaign-items","aria-expanded":"true"
},h["default"].createElement(I["default"],{showBackButton:!0,handleBackButtonClick:this.props.handleBackButtonClick},h["default"].createElement(L["default"],{multiline:!0})),h["default"].createElement("div",{
className:c.join(" ")},u),h["default"].createElement("div",{className:"toolbar toolbar--south"},this.renderButtonToolbar())),h["default"].createElement(B["default"],{itemLinks:n,itemId:t,onBack:this.handleCloseItem
}))}},{key:"handleItemSelected",value:function l(e,t){this.props.campaignActions.selectChangeSetItem(t)}},{key:"handleCloseItem",value:function u(){this.props.campaignActions.selectChangeSetItem(null)}
},{key:"renderButtonToolbar",value:function p(){var e=this.getItems()
@ -2583,107 +2375,107 @@ if(!e||!e.length)return h["default"].createElement("div",{className:"btn-toolbar
var t={}
return"open"===this.props.record.State?t=c(t,{title:$["default"]._t("Campaigns.PUBLISHCAMPAIGN"),buttonStyle:"primary",loading:this.props.campaign.isPublishing,handleClick:this.handlePublish,icon:"rocket"
}):"published"===this.props.record.State&&(t=c(t,{title:$["default"]._t("Campaigns.REVERTCAMPAIGN"),buttonStyle:"secondary-outline",icon:"back-in-time",disabled:!0})),h["default"].createElement("div",{
className:"btn-toolbar"},h["default"].createElement(F["default"],t))}},{key:"getItems",value:function m(){return this.props.record&&this.props.record._embedded?this.props.record._embedded.items:null}},{
className:"btn-toolbar"},h["default"].createElement(D["default"],t))}},{key:"getItems",value:function m(){return this.props.record&&this.props.record._embedded?this.props.record._embedded.items:null}},{
key:"groupItemsForSet",value:function g(){var e={},t=this.getItems()
return t?(t.forEach(function(t){var n=t.BaseClass
e[n]||(e[n]={singular:t.Singular,plural:t.Plural,items:[]}),e[n].items.push(t)}),e):e}},{key:"handlePublish",value:function v(e){e.preventDefault(),this.props.campaignActions.publishCampaign(this.props.publishApi,this.props.treeClass,this.props.campaignId)
e[n]||(e[n]={singular:t.Singular,plural:t.Plural,items:[]}),e[n].items.push(t)}),e):e}},{key:"handlePublish",value:function y(e){e.preventDefault(),this.props.campaignActions.publishCampaign(this.props.publishApi,this.props.treeClass,this.props.campaignId)
}}]),t}(E["default"])
}}]),t}(P["default"])
q.propTypes={campaign:h["default"].PropTypes.shape({isPublishing:h["default"].PropTypes.bool.isRequired,changeSetItemId:h["default"].PropTypes.number}),breadcrumbsActions:h["default"].PropTypes.object.isRequired,
campaignActions:h["default"].PropTypes.object.isRequired,publishApi:h["default"].PropTypes.func.isRequired,record:h["default"].PropTypes.object.isRequired,recordActions:h["default"].PropTypes.object.isRequired,
sectionConfig:h["default"].PropTypes.object.isRequired,handleBackButtonClick:h["default"].PropTypes.func},t["default"]=(0,g.connect)(l,u)(q)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e){return{type:l["default"].SET_CAMPAIGN_SELECTED_CHANGESETITEM,payload:{changeSetItemId:e}}}function a(e,t){return function(n){n({type:l["default"].SET_CAMPAIGN_ACTIVE_CHANGESET,
payload:{campaignId:e,view:t}})}}function o(e,t,n){return function(i){i({type:l["default"].PUBLISH_CAMPAIGN_REQUEST,payload:{campaignId:n}}),e({id:n}).then(function(e){i({type:l["default"].PUBLISH_CAMPAIGN_SUCCESS,
payload:{campaignId:n}}),i({type:c["default"].FETCH_RECORD_SUCCESS,payload:{recordType:t,data:e}})})["catch"](function(e){i({type:l["default"].PUBLISH_CAMPAIGN_FAILURE,payload:{error:e}})})}}Object.defineProperty(t,"__esModule",{
value:!0}),t.selectChangeSetItem=r,t.showCampaignView=a,t.publishCampaign=o
var s=n(236),l=i(s),u=n(125),c=i(u)},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e){return{type:l["default"].SET_CAMPAIGN_SELECTED_CHANGESETITEM,payload:{changeSetItemId:e}}}function o(e,t){return function(n){n({type:l["default"].SET_CAMPAIGN_ACTIVE_CHANGESET,
payload:{campaignId:e,view:t}})}}function a(e,t,n){return function(r){r({type:l["default"].PUBLISH_CAMPAIGN_REQUEST,payload:{campaignId:n}}),e({id:n}).then(function(e){r({type:l["default"].PUBLISH_CAMPAIGN_SUCCESS,
payload:{campaignId:n}}),r({type:c["default"].FETCH_RECORD_SUCCESS,payload:{recordType:t,data:e}})})["catch"](function(e){r({type:l["default"].PUBLISH_CAMPAIGN_FAILURE,payload:{error:e}})})}}Object.defineProperty(t,"__esModule",{
value:!0}),t.selectChangeSetItem=i,t.showCampaignView=o,t.publishCampaign=a
var s=n(231),l=r(s),u=n(125),c=r(u)},function(e,t,n){"use strict"
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("div",{className:"accordion",
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){return u["default"].createElement("div",{className:"accordion",
role:"tablist","aria-multiselectable":"true"},this.props.children)}}]),t}(d["default"])
t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c)
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c)
n(394)
var f=function(e){function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){var e=this.props.groupid+"_Header",t=this.props.groupid+"_Items",n=t.replace(/\\/g,"_"),i=e.replace(/\\/g,"_"),r="#"+n,a={
n(389)
var f=function(e){function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){var e=this.props.groupid+"_Header",t=this.props.groupid+"_Items",n=t.replace(/\\/g,"_"),r=e.replace(/\\/g,"_"),i="#"+n,o={
id:n,"aria-expanded":!0,className:"list-group list-group-flush collapse in",role:"tabpanel","aria-labelledby":e}
return u["default"].createElement("div",{className:"accordion__block"},u["default"].createElement("a",{className:"accordion__title","data-toggle":"collapse",href:r,"aria-expanded":"true","aria-controls":t,
id:i,role:"tab"},this.props.title),u["default"].createElement("div",a,this.props.children))}}]),t}(d["default"])
return u["default"].createElement("div",{className:"accordion__block"},u["default"].createElement("a",{className:"accordion__title","data-toggle":"collapse",href:i,"aria-expanded":"true","aria-controls":t,
id:r,role:"tab"},this.props.title),u["default"].createElement("div",o,this.props.children))}}]),t}(d["default"])
t["default"]=f},function(e,t){e.exports=BootstrapCollapse},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleClick=n.handleClick.bind(n),n}return o(t,e),s(t,[{key:"render",value:function n(){var e="list-group-item "+this.props.className
return u["default"].createElement("a",{tabIndex:"0",className:e,onClick:this.handleClick},this.props.children)}},{key:"handleClick",value:function i(e){this.props.handleClick&&this.props.handleClick(e,this.props.handleClickArg)
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleClick=n.handleClick.bind(n),n}return a(t,e),s(t,[{key:"render",value:function n(){var e="list-group-item "+this.props.className
return u["default"].createElement("a",{tabIndex:"0",className:e,onClick:this.handleClick},this.props.children)}},{key:"handleClick",value:function r(e){this.props.handleClick&&this.props.handleClick(e,this.props.handleClickArg)
}}]),t}(d["default"])
f.propTypes={handleClickArg:u["default"].PropTypes.any,handleClick:u["default"].PropTypes.func},t["default"]=f},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(20),d=i(c),f=n(114),p=i(f),h=function(e){
function t(){return r(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return o(t,e),s(t,[{key:"render",value:function n(){var e=null,t={},n=this.props.item,i=this.props.campaign
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(20),d=r(c),f=n(114),p=r(f),h=function(e){
function t(){return i(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),s(t,[{key:"render",value:function n(){var e=null,t={},n=this.props.item,r=this.props.campaign
if("open"===i.State)switch(n.ChangeType){case"created":t.className="label label-warning list-group-item__status",t.Title=p["default"]._t("CampaignItem.DRAFT","Draft")
if("open"===r.State)switch(n.ChangeType){case"created":t.className="label label-warning list-group-item__status",t.Title=p["default"]._t("CampaignItem.DRAFT","Draft")
break
case"modified":t.className="label label-warning list-group-item__status",t.Title=p["default"]._t("CampaignItem.MODIFIED","Modified")
break
case"deleted":t.className="label label-error list-group-item__status",t.Title=p["default"]._t("CampaignItem.REMOVED","Removed")
break
case"none":default:t.className="label label-success list-group-item__status",t.Title=p["default"]._t("CampaignItem.NO_CHANGES","No changes")}var r=u["default"].createElement("span",{className:"list-group-item__info campaign-admin__item-links--has-links font-icon-link"
case"none":default:t.className="label label-success list-group-item__status",t.Title=p["default"]._t("CampaignItem.NO_CHANGES","No changes")}var i=u["default"].createElement("span",{className:"list-group-item__info campaign-admin__item-links--has-links font-icon-link"
},"3 linked items")
return n.Thumbnail&&(e=u["default"].createElement("span",{className:"list-group-item__thumbnail"},u["default"].createElement("img",{alt:n.Title,src:n.Thumbnail}))),u["default"].createElement("div",{className:"fill-height"
},e,u["default"].createElement("h4",{className:"list-group-item-heading"},n.Title),u["default"].createElement("span",{className:"list-group-item__info campaign-admin__item-links--is-linked font-icon-link"
}),r,t.className&&t.Title&&u["default"].createElement("span",{className:t.className},t.Title))}}]),t}(d["default"])
}),i,t.className&&t.Title&&u["default"].createElement("span",{className:t.className},t.Title))}}]),t}(d["default"])
h.propTypes={campaign:u["default"].PropTypes.object.isRequired,item:u["default"].PropTypes.object.isRequired},t["default"]=h},function(e,t,n){"use strict"
function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t)
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{
value:!0})
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n]
i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=n(5),u=i(l),c=n(114),d=i(c),f=n(20),p=i(f),h=function(e){
function t(e){r(this,t)
var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleBackClick=n.handleBackClick.bind(n),n}return o(t,e),s(t,[{key:"handleBackClick",value:function n(e){"function"==typeof this.props.onBack&&(e.preventDefault(),this.props.onBack(e))}},{key:"render",
value:function i(){var e=null,t=null,n=""
var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=n(5),u=r(l),c=n(114),d=r(c),f=n(20),p=r(f),h=function(e){
function t(e){i(this,t)
var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))
return n.handleBackClick=n.handleBackClick.bind(n),n}return a(t,e),s(t,[{key:"handleBackClick",value:function n(e){"function"==typeof this.props.onBack&&(e.preventDefault(),this.props.onBack(e))}},{key:"render",
value:function r(){var e=null,t=null,n=""
this.props.itemLinks&&this.props.itemLinks.preview&&(this.props.itemLinks.preview.Stage?(t=this.props.itemLinks.preview.Stage.href,n=this.props.itemLinks.preview.Stage.type):this.props.itemLinks.preview.Live&&(t=this.props.itemLinks.preview.Live.href,
n=this.props.itemLinks.preview.Live.type))
var i=null,r="edit",a=[]
this.props.itemLinks&&this.props.itemLinks.edit&&(i=this.props.itemLinks.edit.href,a.push(u["default"].createElement("a",{key:r,href:i,className:"btn btn-secondary-outline font-icon-edit"},u["default"].createElement("span",{
var r=null,i="edit",o=[]
this.props.itemLinks&&this.props.itemLinks.edit&&(r=this.props.itemLinks.edit.href,o.push(u["default"].createElement("a",{key:i,href:r,className:"btn btn-secondary-outline font-icon-edit"},u["default"].createElement("span",{
className:"btn__title"},d["default"]._t("Preview.EDIT","Edit"))))),e=this.props.itemId?t?n&&0===n.indexOf("image/")?u["default"].createElement("div",{className:"preview__file-container panel--scrollable"
},u["default"].createElement("img",{alt:t,className:"preview__file--fits-space",src:t})):u["default"].createElement("iframe",{className:"flexbox-area-grow preview__iframe",src:t}):u["default"].createElement("div",{
className:"preview__overlay"},u["default"].createElement("h3",{className:"preview__overlay-text"},"There is no preview available for this item.")):u["default"].createElement("div",{className:"preview__overlay"
},u["default"].createElement("h3",{className:"preview__overlay-text"},"No preview available."))
var o="function"==typeof this.props.onBack&&u["default"].createElement("button",{className:"btn btn-secondary font-icon-left-open-big toolbar__back-button hidden-lg-up",type:"button",onClick:this.handleBackClick
var a="function"==typeof this.props.onBack&&u["default"].createElement("button",{className:"btn btn-secondary font-icon-left-open-big toolbar__back-button hidden-lg-up",type:"button",onClick:this.handleBackClick
},"Back")
return u["default"].createElement("div",{className:"flexbox-area-grow fill-height preview campaign-admin__campaign-preview"},e,u["default"].createElement("div",{className:"toolbar toolbar--south"},o,u["default"].createElement("div",{
className:"btn-toolbar"},a)))}}]),t}(p["default"])
return u["default"].createElement("div",{className:"flexbox-area-grow fill-height preview campaign-admin__campaign-preview"},e,u["default"].createElement("div",{className:"toolbar toolbar--south"},a,u["default"].createElement("div",{
className:"btn-toolbar"},o)))}}]),t}(p["default"])
h.propTypes={itemLinks:u["default"].PropTypes.object,itemId:u["default"].PropTypes.number,onBack:u["default"].PropTypes.func},t["default"]=h}])

View File

@ -1,4 +1,4 @@
webpackJsonp([5],[function(e,n,o){"use strict"
webpackJsonp([4],[function(e,n,o){"use strict"
function t(e){return e&&e.__esModule?e:{"default":e}}var l=o(1),a=t(l),c=function u(e){var n=e.cloneNode(!0),o=(0,a["default"])("<div></div>")
return o.append(n),o.html()}
a["default"].leaktools={logDuplicateElements:function d(){var e=(0,a["default"])("*"),n=!1

View File

@ -1,2 +0,0 @@
!function(r){function n(t){if(o[t])return o[t].exports;var e=o[t]={exports:{},id:t,loaded:!1};return r[t].call(e.exports,e,e.exports,n),e.loaded=!0,e.exports}var o={};return n.m=r,n.c=o,n.p="",n(0)}([function(r,n,o){!function t(){throw new Error('Cannot find module "—watch"')}(),function e(){throw new Error('Cannot find module "—profile"')}()}]);
//# sourceMappingURL=main.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,454 +0,0 @@
.ss-uploadfield-view-allowed-extensions{
margin-top:-36px;
float:right;
}
.ss-uploadfield-view-allowed-extensions .toggle-content{
opacity:0;
box-sizing:border-box;
position:absolute;
z-index:1;
padding:20px 16px;
width:280px;
right:-280px;
top:0;
bottom:0;
border-left:1px solid #c1c7cc;
background:#f6f7f8;
-webkit-transition:all .3s linear;
transition:all .3s linear;
}
.ss-uploadfield-view-allowed-extensions .toggle-content h4{
margin:0 0 6px;
padding-right:20px;
}
.ss-uploadfield-view-allowed-extensions.active .toggle-content{
right:0;
opacity:1;
}
.ss-uploadfield-view-allowed-extensions .toggle{
cursor:pointer;
font-size:16px;
float:right;
color:#66727d;
width:16px;
height:18px;
overflow:hidden;
}
.ss-uploadfield-view-allowed-extensions .toggle:active,.ss-uploadfield-view-allowed-extensions .toggle:focus,.ss-uploadfield-view-allowed-extensions .toggle:hover{
text-decoration:none;
color:#4f5861;
}
.backlink{
padding-left:12px;
}
.composite.ss-assetuploadfield .details fieldset,body.cms.ss-uploadfield-edit-iframe{
overflow:auto;
background:#e2e2e2;
}
.composite.ss-assetuploadfield .details fieldset span.readonly,body.cms.ss-uploadfield-edit-iframe span.readonly{
font-style:italic;
color:#9ba5ae;
text-shadow:0 1px 0 #fff;
}
.composite.ss-assetuploadfield .details fieldset{
padding:1.5385rem;
background-color:#f6f7f8;
}
.ss-assetuploadfield .CompositeField{
padding:1.5385rem;
margin:-1.5385rem;
}
.ss-assetuploadfield .CompositeField.dimensions.form-group{
margin:0;
padding:0;
}
.ss-assetuploadfield .CompositeField.dimensions.form-group>.dimensions{
padding-left:0;
padding-right:0;
}
.ss-assetuploadfield>fieldset:after{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
:first-child .ss-assetuploadfield>fieldset{
zoom:1;
}
.ss-assetuploadfield:after{
content:"";
visibility:hidden;
}
.ss-assetuploadfield h3{
border-bottom:1px solid hsla(192,5%,80%,.8);
box-shadow:0 1px 0 hsla(0,0%,100%,.8);
margin:0 0 8px;
padding:0 0 7px;
clear:both;
position:relative;
}
.ss-assetuploadfield .fileOverview{
clear:both;
margin-top:10px;
position:relative;
}
.ss-assetuploadfield .fileOverview .uploadStatus:after{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
:first-child .ss-assetuploadfield .fileOverview .uploadStatus{
zoom:1;
}
.ss-assetuploadfield .fileOverview .uploadStatus .state{
float:left;
font-size:16px;
font-weight:700;
line-height:1.1em;
}
.ss-assetuploadfield .fileOverview .uploadStatus .details{
opacity:.9;
float:right;
}
.ss-assetuploadfield .ss-uploadfield-item-actions.edit-all .ss-uploadfield-item-edit-all{
float:right;
margin:-8px 0 0;
padding:0;
background:none;
border:0;
box-shadow:none;
color:#66727d;
}
.ss-assetuploadfield .ss-uploadfield-item-actions.edit-all .ss-uploadfield-item-edit-all:hover{
color:#7f8c97;
}
.ss-assetuploadfield .ss-uploadfield-files{
margin:0;
padding:0;
clear:both;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item{
background-clip:padding-box;
margin:0 0 5px;
padding:0;
position:relative;
margin-left:-1.5385rem;
margin-right:-1.5385rem;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item.ui-state-error{
height:32px;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info{
height:30px;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-name{
position:absolute;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item .info{
position:relative;
padding:7px;
overflow:hidden;
background-color:#ffbe66;
border:1px solid #ff9300;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-preview{
position:absolute;
height:30px;
width:40px;
overflow:hidden;
z-index:1;
top:0;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-preview img[src$="_32.png"]{
width:auto;
height:26px;
margin:2px 0 0 2px;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-info{
overflow:hidden;
background-color:#5db4df;
background-image:-webkit-gradient(linear,left top,left bottom,from(#5db4df),color-stop(8%,#5db1dd),color-stop(50%,#439bcb),color-stop(54%,#3f99cd),color-stop(96%,#207db6),to(#1e7cba));
background-image:-webkit-linear-gradient(top,#5db4df,#5db1dd 8%,#439bcb 50%,#3f99cd 54%,#207db6 96%,#1e7cba);
background-image:linear-gradient(180deg,#5db4df 0,#5db1dd 8%,#439bcb 50%,#3f99cd 54%,#207db6 96%,#1e7cba);
}
.ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info{
background-color:#c11f1d;
padding-right:130px;
background-image:-webkit-gradient(linear,left top,left bottom,from(#c11f1d),color-stop(4%,#bf1d1b),color-stop(8%,#b71b1c),color-stop(15%,#b61e1d),color-stop(27%,#b11d1d),color-stop(31%,#ab1d1c),color-stop(42%,#a51b1b),color-stop(46%,#9f1b19),color-stop(50%,#9f1b19),color-stop(54%,#991c1a),color-stop(58%,#971a18),color-stop(62%,#911b1b),color-stop(65%,#911b1b),color-stop(88%,#7e1816),color-stop(92%,#771919),to(#731817));
background-image:-webkit-linear-gradient(top,#c11f1d,#bf1d1b 4%,#b71b1c 8%,#b61e1d 15%,#b11d1d 27%,#ab1d1c 31%,#a51b1b 42%,#9f1b19 46%,#9f1b19 50%,#991c1a 54%,#971a18 58%,#911b1b 62%,#911b1b 65%,#7e1816 88%,#771919 92%,#731817);
background-image:linear-gradient(180deg,#c11f1d 0,#bf1d1b 4%,#b71b1c 8%,#b61e1d 15%,#b11d1d 27%,#ab1d1c 31%,#a51b1b 42%,#9f1b19 46%,#9f1b19 50%,#991c1a 54%,#971a18 58%,#911b1b 62%,#911b1b 65%,#7e1816 88%,#771919 92%,#731817);
width:100%;
}
.ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name{
cursor:default;
background:#bcb9b9;
background:hsla(0,3%,78%,.9);
}
.ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name .name{
text-shadow:0 1px 0 hsla(0,0%,100%,.7);
}
.ss-assetuploadfield .ss-uploadfield-files .ui-state-warning .ss-uploadfield-item-info{
background-color:#e9d104;
background-image:-webkit-gradient(linear,left top,left bottom,from(#e5d33b),color-stop(8%,#e2ce24),color-stop(50%,#d1be1c),color-stop(54%,#d1bd1c),color-stop(96%,#d09a1a),to(#cf871a));
background-image:-webkit-linear-gradient(top,#e5d33b,#e2ce24 8%,#d1be1c 50%,#d1bd1c 54%,#d09a1a 96%,#cf871a);
background-image:linear-gradient(180deg,#e5d33b 0,#e2ce24 8%,#d1be1c 50%,#d1bd1c 54%,#d09a1a 96%,#cf871a);
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-name{
position:relative;
z-index:1;
margin:3px 0 3px 50px;
width:50%;
color:#7f8c97;
background:#eeeded;
background:hsla(0,0%,100%,.8);
border-radius:3px;
line-height:24px;
height:22px;
padding:0 5px;
text-align:left;
cursor:pointer;
display:table;
table-layout:fixed;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-name .name{
text-shadow:0 1px 0 hsla(0,0%,100%,.5);
display:inline;
float:left;
max-width:50%;
font-weight:400;
padding:0 5px 0 0;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
-o-text-overflow:ellipsis;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-name .ss-uploadfield-item-status{
position:relative;
float:right;
padding:0 0 0 5px;
max-width:30%;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
-o-text-overflow:ellipsis;
text-shadow:0 1px 0 hsla(0,0%,100%,.5);
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-error-text{
text-shadow:0 1px 0 hsla(0,0%,100%,.6);
color:#c00;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-warning-text{
color:#b7a403;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-success-text{
color:#1f9433;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions{
position:absolute;
top:0;
right:0;
left:0;
z-index:0;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn{
background:none;
border:0;
box-shadow:none;
text-shadow:none;
color:#fff;
float:right;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-delete{
display:none;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-cancel,.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-overwrite-warning{
border-radius:0;
border-left:1px solid hsla(0,0%,100%,.2);
margin-top:0;
cursor:pointer;
opacity:.9;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-cancel:hover,.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-overwrite-warning:hover{
opacity:1;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-cancel .ui-icon,.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-overwrite-warning .ui-icon{
display:block;
margin:0;
position:relative;
top:8px;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-edit{
opacity:.9;
height:100%;
border-radius:0;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-edit.ui-state-hover{
background:none;
opacity:1;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-edit.ui-state-hover span.toggle-details{
opacity:1;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-edit span.toggle-details{
opacity:.9;
margin-left:3px;
display:inline-block;
width:5px;
height:100%;
cursor:pointer;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-edit span.toggle-details .toggle-details-icon{
margin-top:1px;
display:inline-block;
width:8px;
height:6px;
vertical-align:middle;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn.ss-uploadfield-item-edit span.toggle-details .toggle-details-icon.opened{
margin-top:0;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-actions .btn .ui-icon{
display:none;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-progress{
width:100%;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-progress div{
height:30px;
padding:0;
margin:0;
overflow:hidden;
width:100%;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-progress .ss-uploadfield-item-progressbar{
background-color:#92a6b3;
background-image:-webkit-gradient(linear,left top,left bottom,from(#92a6b3),color-stop(11%,#90aab8),color-stop(22%,#96b1bf),color-stop(33%,#9eb4c1),color-stop(44%,#a7bac7),to(#c1d5dc));
background-image:-webkit-linear-gradient(top,#92a6b3,#90aab8 11%,#96b1bf 22%,#9eb4c1 33%,#a7bac7 44%,#c1d5dc);
background-image:linear-gradient(180deg,#92a6b3 0,#90aab8 11%,#96b1bf 22%,#9eb4c1 33%,#a7bac7 44%,#c1d5dc);
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-progress .ss-uploadfield-item-progressbarvalue{
width:0;
background:#60b3dd url(../images/progressbar_blue.gif) repeat 0;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-editform{
height:0;
overflow:hidden;
clear:both;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading{
width:100%;
height:22px;
padding:15px 0;
background:url(data:image/gif;base64,R0lGODlhKwArAKIHAOvt7rS8wdLW2EB9ogBakqysrP///////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1NWQ2NWU5Yy1iZjAwLTRmNjktODVlNS03NDQ4ODZiM2E1MDEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjRFNkFDN0EwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjRFNkFDNzkwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MzRlNmQ4NC00OGE1LTRmNzQtYTcwYS0wNDM4N2E1ZTYzZjAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZjhiOTRiYy00YTNiLTExNzgtYWNjMy1kNzg3OTk3MTdhNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAAHACwAAAAAKwArAAADtni23P4wOiWrvTjrzbv/YCiOWCCQGVAUAXoF6+pKABwXMyTca5szKt7q9DPshAViroZMFoNCHwQgEAA+Np7ScbwFrppu7BvJCrcWs7PcjKElWlr7luGBG4KWuHfGxIE2VDdEUD0ldgtiVj13RjwYeyx9aw2FOH5zK41cjxiWURJ7UheRYxFMfylqlJygHlRWp6uaRaUsmyi2b7lIZEUGq7szPL6/C17GDoHJXKPMz9DR0tMT1AcJACH5BAUAAAcALBAABwAGAAcAAAMQeApTGiSyGAetdxwb3SZaAgAh+QQFAAAHACwIAAoADAAKAAADIXi6F8QMDPJgm7QqmbsSWEcVR9gNwlGYI2Oi1kEN8RLECQAh+QQFAAAHACwHAA8ABwAMAAADG2hCzDaNlchgtG0YGnYsDyVgjZcZUwUawVC8CQAh+QQFAAAHACwKABQADgAJAAADI3i6O8TwCEdCPKCQTUrkYABYCggKjMkNiwoCy6QWMJQVARolACH5BAUAAAcALA8ADwARAAkAAAMseLqsUSW0Bgq5d0wFBsba5n0YdQjkt1RHlV7bMV4FcB5GuASYEC+FA0HHSAAAIfkEBQAABwAsHAAPAAkADgAAAyR4CtpNQzhFapmnkjD1YJQGGaHXFCLRBGkztAcrDs5Lc9iF4QkAIfkEBQAABwAsGAAZAAwACQAAAx54urOuYpB5SFNl6tni3kLwgYc0XsooPBUHsMqwsgkAIfkEBQAABwAsEAAHAA0AHgAAAzp4aiH6EJQS4GNzWpXzPkNXfZ3zgcN4rmzrvnAsz3Rt31vRDgRbEL0VD7gCGg+qh5EwAHyMSUuhCUkAACH5BAUAAAcALAgACgAPAA4AAAMveLoHwVAZUUpkoNZ7pv6FsDigJi5lFRgMkZ7Q8AUAd8ihvcgXq3eBwW/YsOyIkgQAIfkEBQAABwAsBwAPAAgADAAAAx54cNwXjolSYqC1YSrYLsvxdc8GHdM2DOLWpJnDNgkAIfkEBQAABwAsCAAUABEACQAAAyl4unwSLSoQShGygGOEtVhWfeBWNCS5rUv6QYznWoERUa5gSxwgCBtJAgAh+QQFAAAHACwVAA8ACwAKAAADIni6IHFmGVFqGTJYu/SuCvBx03gdzSYsYRUArGIUayzZSgIAIfkEBQAABwAsHQAPAAgADAAAAyAocNxXJSwHi6D1sgpN4NAFgAEjgMzIbSgzvEfpHISQAAAh+QQFAAAHACwZABgACwALAAADIXi6sq6iSLlAmBPiGeyewPAV3SFuzYKVjygYj0Kk8QHXCQA7) no-repeat 50% 50%;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading iframe{
padding-top:0;
margin-top:37px;
border:0;
}
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-editform iframe{
width:100%;
padding:16px;
background:#e2e2e2;
}
.ss-assetuploadfield .ss-uploadfield-addfile .ss-uploadfield-item-info>span{
display:block;
padding:0;
line-height:1;
color:#9ba5ae;
margin-top:-12px;
}
.ss-uploadfield-fromcomputer .ss-insert-media .ss-assetuploadfield .ss-uploadfield-addfile{
margin:0 12px 0 0;
}
.ss-uploadfield-dropzone:after{
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
background:rgba(236,239,241,.9) url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItMzU1IDIyMi41IDMxMiAzMjQuNSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAtMzU1IDIyMi41IDMxMiAzMjQuNSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8cGF0aCBmaWxsPSIjMkM3RUIwIiBkPSJNLTE0Mi43LDM3NC40Yy0yLjgsMC01LjYsMC4yLTguMywwLjdjLTYuNy0yMi0yNy42LTM4LTUyLjMtMzhjLTMwLjEsMC01NC41LDIzLjktNTQuNSw1My4zDQoJYzAsMi42LDAuMiw1LjIsMC42LDcuN2MtMS40LTAuMi0yLjktMC4zLTQuNC0wLjNjLTIwLjUsMC0zNy4xLDE2LjItMzcuMSwzNi4zYzAsMjAsMTYuNiwzNi4zLDM3LjEsMzYuM2g1MS4xdi0zOC42bC0yMS41LTAuMw0KCWwzNS45LTUxLjNsMzUuOSw1MS4zbC0yMS41LDAuM3YzOC42aDM5LjFjMjcuMSwwLDQ5LjEtMjEuNSw0OS4xLTQ4Qy05My42LDM5NS45LTExNS42LDM3NC40LTE0Mi43LDM3NC40eiIvPg0KPHBhdGggZmlsbD0iIzJDN0VCMCIgZD0iTS0yNzcuMSw1MzcuNHYtMjIuOWg3LjljMS44LDAsMy4xLDAuMSw0LjEsMC4zYzEuMywwLjMsMi40LDAuOCwzLjQsMS42YzEuMiwxLDIuMSwyLjMsMi43LDMuOQ0KCWMwLjYsMS42LDAuOSwzLjQsMC45LDUuNGMwLDEuNy0wLjIsMy4zLTAuNiw0LjZzLTAuOSwyLjUtMS42LDMuM2MtMC42LDAuOS0xLjMsMS42LTIuMSwyLjFjLTAuOCwwLjUtMS43LDAuOS0yLjcsMS4xDQoJYy0xLjEsMC4zLTIuMywwLjQtMy43LDAuNGgtOC4zVjUzNy40eiBNLTI3NCw1MzQuN2g0LjljMS41LDAsMi43LTAuMSwzLjYtMC40czEuNS0wLjcsMi4xLTEuMmMwLjctMC43LDEuMy0xLjcsMS43LTIuOQ0KCWMwLjQtMS4yLDAuNi0yLjcsMC42LTQuNGMwLTIuNC0wLjQtNC4yLTEuMi01LjVjLTAuOC0xLjMtMS43LTIuMS0yLjktMi42Yy0wLjgtMC4zLTIuMS0wLjUtMy45LTAuNWgtNC44djE3LjVILTI3NHogTS0yNTUuNCw1MzcuNA0KCXYtMTYuNmgyLjV2Mi41YzAuNi0xLjIsMS4yLTIsMS44LTIuM3MxLjEtMC42LDEuOC0wLjZjMC45LDAsMS45LDAuMywyLjksMC45bC0xLDIuNmMtMC43LTAuNC0xLjQtMC42LTIuMS0wLjYNCgljLTAuNiwwLTEuMiwwLjItMS43LDAuNmMtMC41LDAuNC0wLjgsMC45LTEsMS41Yy0wLjMsMS0wLjUsMi4xLTAuNSwzLjN2OC43TC0yNTUuNCw1MzcuNEwtMjU1LjQsNTM3LjR6IE0tMjM0LjQsNTM1LjQNCgljLTEsMC45LTIsMS41LTMsMS45cy0yLDAuNS0zLjEsMC41Yy0xLjgsMC0zLjItMC40LTQuMi0xLjNjLTEtMC45LTEuNS0yLTEuNS0zLjRjMC0wLjgsMC4yLTEuNiwwLjYtMi4yYzAuNC0wLjcsMC45LTEuMiwxLjUtMS42DQoJYzAuNi0wLjQsMS4zLTAuNywyLTAuOWMwLjYtMC4xLDEuNC0wLjMsMi41LTAuNGMyLjMtMC4zLDMuOS0wLjYsNS0xYzAtMC40LDAtMC42LDAtMC43YzAtMS4xLTAuMy0yLTAuOC0yLjRjLTAuNy0wLjYtMS44LTEtMy4yLTENCgljLTEuMywwLTIuMywwLjItMi45LDAuN2MtMC42LDAuNS0xLjEsMS4zLTEuNCwyLjVsLTIuOC0wLjRjMC4yLTEuMiwwLjctMi4xLDEuMi0yLjljMC42LTAuNywxLjQtMS4zLDIuNS0xLjdzMi4zLTAuNiwzLjgtMC42DQoJYzEuNCwwLDIuNiwwLjIsMy41LDAuNXMxLjUsMC44LDIsMS4zYzAuNCwwLjUsMC43LDEuMSwwLjksMS45YzAuMSwwLjUsMC4xLDEuMywwLjEsMi42djMuOGMwLDIuNiwwLjEsNC4zLDAuMiw1DQoJYzAuMSwwLjcsMC40LDEuNCwwLjcsMmgtMi45Qy0yMzQuMSw1MzYuOS0yMzQuMyw1MzYuMi0yMzQuNCw1MzUuNHogTS0yMzQuNiw1MjkuMWMtMSwwLjQtMi42LDAuOC00LjYsMS4xYy0xLjIsMC4yLTIsMC40LTIuNSwwLjYNCgljLTAuNSwwLjItMC44LDAuNS0xLjEsMC45cy0wLjQsMC44LTAuNCwxLjNjMCwwLjgsMC4zLDEuNCwwLjksMS45YzAuNiwwLjUsMS40LDAuOCwyLjUsMC44czItMC4yLDIuOS0wLjdjMC44LTAuNSwxLjUtMS4xLDEuOS0xLjkNCgljMC4zLTAuNiwwLjUtMS42LDAuNS0yLjhMLTIzNC42LDUyOS4xTC0yMzQuNiw1MjkuMXogTS0yMjguNCw1MzguOGwyLjcsMC40YzAuMSwwLjgsMC40LDEuNSwxLDEuOGMwLjcsMC41LDEuNywwLjgsMi45LDAuOA0KCWMxLjMsMCwyLjMtMC4zLDMtMC44czEuMi0xLjIsMS40LTIuMmMwLjEtMC42LDAuMi0xLjgsMC4yLTMuNmMtMS4yLDEuNC0yLjgsMi4yLTQuNiwyLjJjLTIuMywwLTQtMC44LTUuMy0yLjUNCgljLTEuMi0xLjYtMS45LTMuNi0xLjktNS45YzAtMS42LDAuMy0zLDAuOS00LjRjMC42LTEuMywxLjQtMi40LDIuNS0zLjFjMS4xLTAuNywyLjQtMS4xLDMuOC0xLjFjMiwwLDMuNiwwLjgsNC44LDIuNHYtMmgyLjZ2MTQuMw0KCWMwLDIuNi0wLjMsNC40LTAuOCw1LjVzLTEuNCwxLjktMi41LDIuNnMtMi41LDAuOS00LjIsMC45Yy0yLDAtMy42LTAuNC00LjgtMS4zUy0yMjguNCw1NDAuNi0yMjguNCw1MzguOHogTS0yMjYsNTI4LjgNCgljMCwyLjIsMC40LDMuOCwxLjMsNC44YzAuOSwxLDEuOSwxLjUsMy4yLDEuNXMyLjQtMC41LDMuMi0xLjVjMC45LTEsMS4zLTIuNiwxLjMtNC43YzAtMi0wLjUtMy42LTEuNC00LjZzLTItMS41LTMuMy0xLjUNCgljLTEuMiwwLTIuMywwLjUtMy4yLDEuNVMtMjI2LDUyNi44LTIyNiw1MjguOHogTS0xODksNTM0LjdjLTAuOSwxLTEuOSwxLjgtMywyLjNzLTIuMywwLjgtMy41LDAuOGMtMi4zLDAtNC4yLTAuOC01LjYtMi40DQoJYy0xLjEtMS4zLTEuNy0yLjctMS43LTQuM2MwLTEuNCwwLjUtMi43LDEuNC0zLjhzMi4zLTIuMSw0LjEtM2MtMS0xLjItMS43LTIuMi0yLjEtMi45Yy0wLjMtMC43LTAuNS0xLjUtMC41LTIuMQ0KCWMwLTEuNCwwLjUtMi42LDEuNi0zLjZzMi40LTEuNSw0LjEtMS41YzEuNiwwLDIuOCwwLjUsMy44LDEuNGMxLDEsMS41LDIuMSwxLjUsMy41YzAsMi4yLTEuNCw0LTQuMyw1LjZsNC4xLDUuMg0KCWMwLjUtMC45LDAuOC0yLDEuMS0zLjJsMi45LDAuNmMtMC41LDItMS4yLDMuNi0yLDQuOWMxLjEsMS40LDIuMiwyLjYsMy42LDMuNWwtMS45LDIuMkMtMTg2LjYsNTM3LjItMTg3LjgsNTM2LjItMTg5LDUzNC43eg0KCSBNLTE5MC43LDUzMi41bC01LjItNi40Yy0xLjUsMC45LTIuNSwxLjctMy4xLDIuNWMtMC41LDAuOC0wLjgsMS41LTAuOCwyLjNjMCwwLjksMC40LDEuOSwxLjEsMi45YzAuNywxLDEuOCwxLjUsMy4xLDEuNQ0KCWMwLjgsMCwxLjctMC4zLDIuNi0wLjhDLTE5Miw1MzQtMTkxLjMsNTMzLjMtMTkwLjcsNTMyLjV6IE0tMTk0LjcsNTIyLjhjMS4yLTAuNywyLTEuMywyLjQtMS45YzAuNC0wLjUsMC41LTEuMSwwLjUtMS44DQoJYzAtMC44LTAuMi0xLjQtMC43LTEuOXMtMS4xLTAuNy0xLjktMC43Yy0wLjgsMC0xLjQsMC4yLTEuOSwwLjdzLTAuOCwxLjEtMC44LDEuOGMwLDAuNCwwLjEsMC43LDAuMywxLjFjMC4yLDAuNCwwLjUsMC44LDAuOCwxLjINCglMLTE5NC43LDUyMi44eiBNLTE2Miw1MzcuNHYtMi4xYy0xLjEsMS42LTIuNiwyLjUtNC42LDIuNWMtMS4zLDAtMi41LTAuNC0zLjYtMS4xcy0yLTEuNy0yLjYtMy4xYy0wLjYtMS4zLTAuOS0yLjgtMC45LTQuNQ0KCXMwLjMtMy4yLDAuOC00LjVjMC42LTEuMywxLjQtMi40LDIuNS0zLjFjMS4xLTAuNywyLjMtMS4xLDMuNy0xLjFjMSwwLDEuOSwwLjIsMi43LDAuNnMxLjQsMSwxLjksMS42di04LjJoMi44djIyLjlMLTE2Miw1MzcuNA0KCUwtMTYyLDUzNy40eiBNLTE3MC45LDUyOS4yYzAsMi4xLDAuNCwzLjcsMS4zLDQuOGMwLjksMS4xLDIsMS42LDMuMiwxLjZzMi4zLTAuNSwzLjEtMS41YzAuOS0xLDEuMy0yLjUsMS4zLTQuNg0KCWMwLTIuMy0wLjQtMy45LTEuMy01cy0yLTEuNi0zLjItMS42cy0yLjMsMC41LTMuMSwxLjVDLTE3MC40LDUyNS4zLTE3MC45LDUyNy0xNzAuOSw1MjkuMnogTS0xNTUuNCw1MzcuNHYtMTYuNmgyLjV2Mi41DQoJYzAuNi0xLjIsMS4yLTIsMS44LTIuM3MxLjEtMC42LDEuOC0wLjZjMC45LDAsMS45LDAuMywyLjksMC45bC0xLDIuNmMtMC43LTAuNC0xLjQtMC42LTIuMS0wLjZjLTAuNiwwLTEuMiwwLjItMS43LDAuNg0KCWMtMC41LDAuNC0wLjgsMC45LTEsMS41Yy0wLjMsMS0wLjUsMi4xLTAuNSwzLjN2OC43TC0xNTUuNCw1MzcuNEwtMTU1LjQsNTM3LjR6IE0tMTQ2LjIsNTI5LjFjMC0zLjEsMC45LTUuMywyLjYtNi44DQoJYzEuNC0xLjIsMy4yLTEuOCw1LjItMS44YzIuMywwLDQuMSwwLjcsNS42LDIuMmMxLjQsMS41LDIuMiwzLjYsMi4yLDYuMmMwLDIuMS0wLjMsMy44LTEsNWMtMC42LDEuMi0xLjYsMi4yLTIuOCwyLjlzLTIuNiwxLTQsMQ0KCWMtMi4zLDAtNC4yLTAuNy01LjYtMi4yQy0xNDUuNSw1MzQuMS0xNDYuMiw1MzEuOS0xNDYuMiw1MjkuMXogTS0xNDMuMyw1MjkuMWMwLDIuMSwwLjUsMy43LDEuNCw0LjhzMi4xLDEuNiwzLjUsMS42DQoJczIuNi0wLjUsMy41LTEuNnMxLjQtMi43LDEuNC00LjljMC0yLjEtMC41LTMuNi0xLjQtNC43Yy0wLjktMS4xLTIuMS0xLjYtMy41LTEuNnMtMi42LDAuNS0zLjUsMS42DQoJQy0xNDIuOSw1MjUuNC0xNDMuMyw1MjctMTQzLjMsNTI5LjF6IE0tMTI3LjgsNTQzLjh2LTIzaDIuNnYyLjJjMC42LTAuOCwxLjMtMS41LDItMS45YzAuOC0wLjQsMS43LTAuNiwyLjgtMC42DQoJYzEuNCwwLDIuNywwLjQsMy44LDEuMWMxLjEsMC43LDEuOSwxLjgsMi41LDMuMXMwLjgsMi44LDAuOCw0LjRjMCwxLjctMC4zLDMuMi0wLjksNC42cy0xLjUsMi40LTIuNywzLjFjLTEuMiwwLjctMi40LDEuMS0zLjcsMS4xDQoJYy0wLjksMC0xLjgtMC4yLTIuNS0wLjZjLTAuNy0wLjQtMS40LTAuOS0xLjgtMS41djguMUwtMTI3LjgsNTQzLjhMLTEyNy44LDU0My44eiBNLTEyNS4zLDUyOS4yYzAsMi4xLDAuNCwzLjcsMS4zLDQuNw0KCXMxLjksMS41LDMuMSwxLjVzMi4zLTAuNSwzLjItMS42YzAuOS0xLjEsMS4zLTIuNywxLjMtNC45YzAtMi4xLTAuNC0zLjctMS4zLTQuOHMtMS45LTEuNi0zLjEtMS42cy0yLjMsMC42LTMuMiwxLjcNCglDLTEyNC44LDUyNS41LTEyNS4zLDUyNy4xLTEyNS4zLDUyOS4yeiIvPg0KPHBhdGggZmlsbD0iIzJDN0VCMCIgZD0iTS0xNzIuNSwyNDEuNWwtMi44LTE2LjFsLTU2LjUsOS45bDguMyw0Ny4ybDUuNi0wLjl2NC4xaDU3LjR2LTQ0LjFoLTEyVjI0MS41eiBNLTIxNy45LDI3Ni44bC0xLjgsMC4zDQoJbC02LjctMzguMWw0Ny40LTguNGwxLjksMTAuOGgtNDAuN3YzNS40SC0yMTcuOXogTS0xNjUuMiwyODAuOWgtNDguMXYtMzQuOGg0OC4xVjI4MC45eiBNLTIxMC4xLDI0OS4yVjI3NWw5LjgtNi41bDYsMy44bDE0LjctMTYuMQ0KCWwxLjksMC44bDkuNSwxMXYtMTguN0wtMjEwLjEsMjQ5LjJMLTIxMC4xLDI0OS4yeiBNLTIwMC44LDI2MC40Yy0yLjIsMC00LjEtMS45LTQuMS00LjFjMC0yLjIsMS45LTQuMSw0LjEtNC4xDQoJYzIuMiwwLDQuMSwxLjksNC4xLDQuMUMtMTk2LjcsMjU4LjUtMTk4LjYsMjYwLjQtMjAwLjgsMjYwLjR6Ii8+DQo8cGF0aCBmaWxsPSIjMkM3RUIwIiBkPSJNLTMzMS41LDI3Ny44djM1LjRjLTItMC45LTQuNi0xLjEtNy4xLTAuNmMtNS40LDEuMi05LjEsNS42LTguMyw5LjhjMC43LDMuNCw0LjMsNS45LDguNyw1LjkNCgljMC45LDAsMS44LTAuMSwyLjctMC4zYzQuNy0xLDguMi00LjUsOC40LTguM3YtMzMuMWwyNi4xLTMuOXYyNS44Yy0yLTAuOS00LjYtMS4xLTcuMS0wLjZjLTUuNCwxLjItOS4xLDUuNi04LjMsOS44DQoJYzAuNywzLjQsNC4zLDUuOSw4LjcsNS45bDAsMGMwLjksMCwxLjgtMC4xLDIuNy0wLjNjNC43LTEsOC4yLTQuNSw4LjQtOC4zdi00Mi4xTC0zMzEuNSwyNzcuOHoiLz4NCjxwYXRoIGZpbGw9IiMyQzdFQjAiIGQ9Ik0tNTIuNywzMTkuM3YtNi43aDYuN3YtNy41aC02Ljd2LTYuN2g2Ljd2LTYuN2gtNi43di03LjVoNi43di02LjdoLTY1LjF2Ni43aDYuN3Y3LjVoLTYuN3Y2LjdoNi43djYuN2gtNi43DQoJdjcuNWg2Ljd2Ni43aC02Ljd2Ni43SC00NnYtNi43SC01Mi43eiBNLTgyLjgsMzA5LjF2LTEzLjlsMTIuMSw3TC04Mi44LDMwOS4xeiIvPg0KPC9zdmc+DQo=) 50% no-repeat;
background-size:312px 325px;
z-index:100;
}
.ss-uploadfield-dropzone.active.hover:after{
content:'';
}
@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){
.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading{
background-image:url(data:image/gif;base64,R0lGODlhVgBWAPf/AP///5qkqnigubi4uO3y9fD09tTU1MrKyi1xnCZtmhlnl7q6ulWDnxFilWWTsSlvm1WJqk+AnsbGxpa0x+bm5h1pmEqDpsPDw6Woq83Nzc3a46nC0fLy8snW3uTk5K6urmuNomGJoXSet7S0tFGHqR9qmG2ZtNHe5hVklq6vsAlelJWhqdjj6enp6X2WpYOnvoWZpnOSpdvb28zU2ARck566y+nv87nN2UR6nI2uwqzE0ubt8Ymbp7/Gy6mrrEF9o8vZ4nuiuvz9/pu3yQ5hlevw85KyxaCmqmqXs6usrPr7/Ep9namqq0eBpVyGoAZdk5q2yAxglE2FpzBxmTp2m4qswSJql22Vraq0uwJbkqysrABakjN1noadrHGatO3v8ZGfqPX29k2Coh1olufs78/R0j94nLKysvf39/z8/Le3t9DQ0LGxsePj48jIyN/o7fr6+v7+/7y8vPHx8fb4+r29veDg4P7+/vv7+/n5+fj4+ER/pAFaktLS0tnZ2cXFxcDAwP39/fb29t/f397e3vX19erq6q2trV+QriFrmZCwxPT09OLi4u3t7QFbkrOzs6urq+Hh4QNck/Dw8GCRr3+lvApflGOSr+fu8r7Q26W/z+zs7M7Ozr+/v93d3dPT0/L2+LCwsNjY2Ovr68TExNfX17m6uzV2n4mrwLPI1ViMrLe4ua/G1Pj6+8jX4ePq7zBznefn5+Dh4bbL18jJyVOIqfPz84+wxNvl7Dh4oD17ocTFxdjZ2bS2tqytrsjY4eHp7tTf5vf5+u/v79HR0cnJyba2tqG8zfz9/cLT3fb5+g9ilVKGp5e1x9vl66e+zPL192aSrgdek3aft2GQrV6Prjd0mvv8/KK6ydPU1DNymoKitdXg56a/z9/g4X+juJ6yvp2oriRrmNvc3fz8/eHl536crvb29+Xl5XicsoWfsN3e3/r7++zx9I2dp8jLzoeovGWPqc3X3+Xr74+ouJSzxq26wpKxxUt/oGOQrdXZ3PX4+cDK0N3m7La2twAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODA4M0Y1OEQ5Qzk3MEQ4RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3OTA5OUY3RTkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3OTA5OUY3RDkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDg4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAD/ACwAAAAAVgBWAEAI/wD/CQRAsKDBgwgTKlzIsKFDggL/PZxIsaLFixgbGlKjpeMHOBlDijRYCFDHkyhTaiE0sqXDNSpjdnQDkmKkBTJPslmTx+XCnFrQPWxzZiXBSECTpjyTxidBOI+UKh2AMc2InGqcTtSDBk/VA5CkdlSDRqtZgpOk1ll0ti3DRQtauJ1Lt67du3jz6jU4Rw7QT3sz4nEj1uOaQIEvykh6oWzFQBwLq8xw9gBQOY4Ltois0g8AWykfUWCYISebtncsS9ZyRi7FPH+kSkhcEQ1nqRcE0c5oIOaARruDax0onG7E4nYlIl/OvPnCFgvYOh/ZaEBMA9MrLqojdVL2hYIuSP8m+/0gmquFDzS9CAeNnsASpP55T7EFm9VaDtxpezvliPUWWYdfaD05dZ9MlC0UC3on2QKAKDKp4VpBaPiV0wFOpVHUgCrZQRAhrDHyEDpAnVUah1qogVht4gElA115rHFgTgtEUlEehIm1RnkHBbLGB5K54RWPBYEoFiCFEKlQH0AtMIeSD8EBZEcDGALllVhmSRtxWlLEZZdghinmmGSWGWYanADphpkHpfFjSm2weccnU6q0I5ml1CnTi2HKEIpUC4DpyYxKAaIlUZLJkeSVguBUmDFWYpkGd2KpEYtFm6xRx4ZafKCGG3YMWdcch0h1RpwULdJJYWwMMpcepQL8dYaHFQ1DqGSk7GdWfDkVg5EfKJ7kqlYp5ITdQ2j0UdAcwaJEjFZAicgQHDlqIQdBwMoEyR8ezDGKAZzKJK1LFsbERmYGpaFaSh62EdMBNZl3K0rX+sRIUmcYMMocbfwRlkyiEFSuBPEqdG9OWjHZbEdPErQGugz1JlMKZg2ysGcXVRvTbGbdQQqHbABXkR3hxnQIfW0NMm9OnXBQEaJKHeKdXXjYIcEAdZ5RxxqbWBRLf0DVASCUG0m2gG5XFlKuqahiaZJYbHgCpqNJhcInmIsB9UEpZcIU0wcG6Fqmuyh90MfQbBL2ASdos+n223DHLXdBys0N0XFyRxQQACH5BAUAAP8ALA4ADgA7ADsAQAjpAP8JHEiwoMGCGxKdOMiwocOHA3mU2EKxYkVXEDNq3Mix479eHkOKHEmSI5OSKFOqXMmy5cZMiSxWNOHSY5IjIBI8oajgTc2fK1MARUlrKEpeRpMqBZqqQsUnBJY2VCdNpkUHUhu6GGN1S46sEH1h6EEOrNmGSM9qPKk2Y9G2D4XCfQhyrt27ePPqXWlrVSy8oFQ52mIhL51LWWQOmRvIC42uWyjNjREF8pYXc48sgZzoLgYQDfhY5BInLwYYDLT96Le3tevXeHfB/udrNlvXskzBNiUL9m3XtWHLnk28uPHjyJMrX868ZEAAIfkEBQAA/wAsEQATABgAFQBACKAA/wkcSLCgEiQFE05osKWhw4cQtyRg8c9HjDERiShKyLHjv0oqIHLEYiaiyS0oNHkkmG2lS45xRDxp+FIgqignHRYkkyinSQWsBvoAwTBnAygvmbgwo4CGlDg1o/779WCL1IEnEDyUyuLUSZdvdPncSrCAhbEQHVVT9i8MPrQPaxUgeCQCH7QWinQEYy3nj1dJQWB0mOvNVYEBXMRgJzUgACH5BAUAAP8ALA4AHQAPABkAQAibAP8J/NdvoMGBe7YoXMjQYDOGEBU2eFHu4L8ZAQJAsvhL0kKLAyMynGDxlsgtjnAEGEjnwRaQA195bAiSxsktJgwmuGkJl0EHN7fwWXJkoJIfDBuYgbHR4BsFMA1S+hi1CU2QlUSCrHBTAZ2BfG7WMBjlpiqDJIImeCOQDpGgW7SB+Wejwc0GMXwMhCBSGwyLyK6Ie4ADxMqBAQEAIfkEBQAA/wAsEwAnABgAEgBACIoA/wkcSLBgQWAO4hgUuKWhw4cQt2ggWECRhQo0HEZBcOnGwo8LC5CIuKUeQZIot1jKBLKlDQsOE4BEMgtIjT18UgowmJJkEIFQiPSECGtiy6P/oDTYUgVpQU0oIHJzykoByp8Lhz68l1VrwxJdvVZo9Y9aFq8Po+goiAlRlKGJjDj9J4TMGwJIAwIAIfkEBQAA/wAsKgAeABcAEgBACKkA/wkcSJAggTc7hBQcWGKLw4cQIzq0dkSRwCpbGjRbyLEjqygSQ9KI4CPYPwEhtyjQURDYlSMdBUJJlHLLSF8EWzWsKTHBCoFGeIa0wuPkv2ARURyLyZTgDUQIQDqkkSidvo4nYAndgsJFwWSWtj7UBlNgELEQfQrUgPbhEydMBKJMyWdPDSCzkDQgEsLHPyP/JoQkQYBjmIHTBCZ42MRG04VxLgF7XDAgACH5BAUAAP8ALDwAHwANABgAQAiMAP9Fewbtn8GDCP9tWciQoZeDJhpKpHFQ4g8lCHFZktgwwT8YDzgujNLOIEMiORIiFHmrokiGzQxOeLkwjhSaW/YcxAAjRIQlDECs+GJySxREmFS6ZEgCo0qOEJ5ybFCyqMhlwt4kwEnCIASaUQzWwPmPjgKaFbAgwPnCoLslZxk+SUBPZRIMGJggDAgAIfkEBQAA/wAsMAAyABkAEgBACJ0A/wkcSPDfm1xbCip8h2OLw4cQI26xUEDhQHcMxGiwyNGiDQsSQzqkJBCSCxQit5xi0bElpj0hCTpkNhBaLT4pJSp4M/CImZwPdfHsCONBRAQnWiodqIjIQ47Silgc0gCoQ0kbCWpCadXhAzoD5VXo+jCRM4IBqJBtMMEiBgaOckZBpTRAQ4kqKi0dmMSFNmlbnoiIs9dimUCFCQYEACH5BAUAAP8ALB8ADgAZADsAQAjxAP8JHDgw1ipbBBMS5KNthZaHECFOUkixosWLGDNq3MixI8EcW0KK9EjgicgKqSw2GhARogGOWcQ5cXeEiT80HnPq3MnzorBpKHI6EElU5AMgCg2pgfgBTkYg5lq2/KQxywMYUrUQ2omo58ZmXsOKHUu2bMc3CkZ6dFVU7UYTbbckytTxRKINHdNw+qDFjcc0a/hGbKMx0CfBUtdkjMLAR9aHMjQ2AOFY6gKONLTBSBIREACPfCyJMxOPjNnTqFOrXs26tevXsC124MkiQUidcbgUzZmorccXcd1iRBScBhIlGocUzXKJjkcLWxypAkUxIAAh+QQFAAD/ACwRABMAGQAYAEAIugD/CRxIsOCdgggFtjmjpaHDhxC1yCkk8MkSDBHP2EnIkaOMUBETcgEBKaJJNbE6DuQTJYhKgmj6AHj5D0CpDw1pDvTExuRDhDYW+PRpzBDBLDgwDj3TRmcDBmB8aCk2U6dVhAW24ZjS4OocOVcLLqrz82ohQD5pCrow9ORAPG7aRvywJtDAGHIhHkhTUJqTvFrcwOloBcbQP3qchlDa8AKasAItaXPSBQ/kywK9BQCB7XI3BU+y8BEYEAAh+QQFAAD/ACwOAB0ADgAZAEAIlwD/CfwnaKBBgbu0KFy40KAshhAVhoN38F+NigLnHGqIkUnEhYwODvrIJESDgWnqKMT4T89Ghhh9fVRoYKCpmVrYoBnYB6cWECcF3umEIckRGBFQ8DmIZgTLgWtWPpUAEyOvjxV74RyRRqDHmegGpsCZYSAtn3LO/UtzxicPcf/gPJoZgEqWgRkgHgExpmIgcE5wWHliMCAAIfkEBQAA/wAsEgAoABsAEQBACIsA/wkcSLBgwTZntIwzSFCLw4cQI2oZwLAgAD1o8FTcWBBNwRZqJDr084/bnQMiUz4804Kjy3+xRkT8wlGlSDsMbYpUE8hgnjVsdC6I9LLoPzhuHsoxSjANSonrOJ4xMGpOmz+QVIqqqRPinIpdI5IUSCqsSDaNDA4KarYTB5d47EgY8GFlnTWbOAYEACH5BAUAAP8ALCkAHgAWAB4AQAi9AP8JHEiwIBw0YeIUFDhAi8OHECH6ABGFICEtZxgt3Mixo0eBLdhEHImBAY1/tv6JGulQTYuC8z7K3Hjt20yPkRawZGKyYCA1LEf6cKGAkMBIQUcmgWGFoK2IjyjcnEq1qkBQVgtuWlPnjMMkMajk47ioU1It7qYsHCbyrBZIMRoQ9OP2ISQXKAbOqfvwCL4sA+kGhfTHw5xRZZwA/mfnXxuWB+DMlPNQguSpANagycq5s+fPC+WVqPoGwdSAACH5BAUAAP8ALDoAHgAPABYAQAiPAPUA+EewoMGDWhIqXPgoz0F0CyP6IBgx4YE7B/+hkVNxIa2DUaYwAEGSwZQoFBWyWeMwY8qOGQx2jHgmjcEMM7WkKCisC4aOGLpo+aDGjR08LmUuZDMo6UxSGJXObFowZ0JiBA2csapFVkE0bHKaMsgoJxOD2XJOLCguBJifCTGACaHK5ZMoDaI8+SfpX0AAIfkEBQAA/wAsMQAuABgAFQBACKkA/wkcSLCgQYFMCOZxo6Whw4cQ1xB8AAZiQ0CFDmo0iOaCRYi8iFgL8PGjGzwb/yVIyXJjmhFaDmrpdTDPn5IQJQjcZw8STotq0BAsweOnlguCWD7BUVFLnUUtowo0sNEXSwAMHQ50uGujnTNGD+kx2AasUS2HJhGkoOaswzppBHYQs8JtwwVJCU4JkMTomTYaVYTo+5GNp5ZZlpB0GEqGVIIJQvAD8DggADs=);
background-size:43px 43px;
}
}

View File

@ -1,321 +0,0 @@
.ss-insert-media.form-group:after,.ss-uploadfield.form-group:after{
visibility:hidden;
}
.ss-uploadfield .clear{
clear:both;
}
.ss-uploadfield .description{
margin-left:0;
}
.ss-uploadfield .middleColumn{
min-width:510px;
max-width:696px;
width:100%;
margin-left:0;
clear:both;
padding:0;
background:#fff;
border:1px solid #b3b3b3;
border-radius:4px;
background-image:-webkit-gradient(linear,left top,left bottom,from(#efefef),color-stop(10%,#fff),color-stop(90%,#fff),color-stop(90%,#efefef));
background-image:-webkit-linear-gradient(#efefef,#fff 10%,#fff 90%,#efefef);
background-image:linear-gradient(#efefef,#fff 10%,#fff 90%,#efefef);
}
.ss-uploadfield .ss-uploadfield-item{
margin:0;
padding:15px;
overflow:auto;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview{
height:60px;
line-height:60px;
width:80px;
text-align:center;
font-weight:700;
float:left;
overflow:hidden;
background:#f0f2f4;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview span{
height:60px;
width:80px;
display:table-cell;
vertical-align:middle;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview.ss-uploadfield-dropzone{
box-shadow:inset 0 0 4px 0 gray;
border:2px dashed gray;
background:#d2d5d8;
margin-right:15px;
position:relative;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview.ss-uploadfield-dropzone:after{
background:none;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview img{
display:block;
margin:0 auto;
background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJElEQVQYV2O8dOnSfwYkoKenx4jMZ6SDAmT7QGx0K1EcRBsFAJfOHd3Le79RAAAAAElFTkSuQmCC) repeat;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview img[src$="_32.png"]{
background:transparent;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info{
margin-left:95px;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name{
cursor:default;
display:block;
line-height:13px;
height:26px;
margin:0;
text-align:left;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .name{
max-width:240px;
font-weight:700;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
-o-text-overflow:ellipsis;
display:inline;
float:left;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .size{
color:#a9b2b9;
padding:0 0 0 5px;
display:inline;
float:left;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status{
float:right;
padding:0 0 0 5px;
text-align:right;
max-width:75%;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-error-text{
color:red;
font-weight:700;
width:150px;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-warning-text{
color:#b7a403;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-success-text{
color:#1f9433;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-preview{
width:auto;
height:auto;
margin-right:15px;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info{
margin-left:0;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name{
float:left;
width:70%;
height:auto;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name .name{
float:left;
width:100%;
margin-bottom:5px;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status{
float:left;
width:100%;
padding:0;
text-align:left;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-actions{
float:right;
width:5%;
min-height:0;
margin:0;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-actions .ss-uploadfield-item-cancel{
position:relative;
top:auto;
}
.ss-uploadfield .ss-uploadfield-files{
margin:0;
padding:0;
overflow:auto;
position:relative;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item.ui-state-error{
border:0;
border-bottom:1px solid #b3b3b3;
background:none;
color:#66727d;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item.ui-state-error:last-child,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item:last-child{
border-bottom:0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-actions{
min-height:28px;
overflow:hidden;
margin:6px 0 -6px;
position:relative;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progress{
position:absolute;
left:0;
right:42px;
width:auto;
margin:11px 0 0;
height:15px;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progress div{
border-radius:25px;
height:13px;
padding:0;
margin:0;
overflow:hidden;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progressbar{
border:1px solid gray;
background-color:#92a6b3;
background-image:-webkit-gradient(linear,left top,left bottom,from(#92a6b3),color-stop(11%,#90aab8),color-stop(22%,#96b1bf),color-stop(33%,#9eb4c1),color-stop(44%,#a7bac7),to(#c1d5dc));
background-image:-webkit-linear-gradient(top,#92a6b3,#90aab8 11%,#96b1bf 22%,#9eb4c1 33%,#a7bac7 44%,#c1d5dc);
background-image:linear-gradient(180deg,#92a6b3 0,#90aab8 11%,#96b1bf 22%,#9eb4c1 33%,#a7bac7 44%,#c1d5dc);
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progressbarvalue{
border:0;
width:0;
background:#60b3dd url(../images/progressbar_blue.gif) repeat-x 0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start{
position:absolute;
top:10px;
right:0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel button,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start button{
display:block;
overflow:hidden;
text-indent:-9999px;
padding:0;
margin:0;
border:0;
width:16px;
height:16px;
cursor:pointer;
box-shadow:none;
position:relative;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel button span,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start button span{
position:absolute;
left:0;
top:0;
margin:0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel button span.ui-button-text,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start button span.ui-button-text{
display:none;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start{
right:20px;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform{
height:0;
overflow:hidden;
clear:both;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading{
width:100%;
height:22px;
margin:15px 0 0;
background:url(data:image/gif;base64,R0lGODlhKwArAKIHAOvt7rS8wdLW2EB9ogBakqysrP///////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1NWQ2NWU5Yy1iZjAwLTRmNjktODVlNS03NDQ4ODZiM2E1MDEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjRFNkFDN0EwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjRFNkFDNzkwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MzRlNmQ4NC00OGE1LTRmNzQtYTcwYS0wNDM4N2E1ZTYzZjAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZjhiOTRiYy00YTNiLTExNzgtYWNjMy1kNzg3OTk3MTdhNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAAHACwAAAAAKwArAAADtni23P4wOiWrvTjrzbv/YCiOWCCQGVAUAXoF6+pKABwXMyTca5szKt7q9DPshAViroZMFoNCHwQgEAA+Np7ScbwFrppu7BvJCrcWs7PcjKElWlr7luGBG4KWuHfGxIE2VDdEUD0ldgtiVj13RjwYeyx9aw2FOH5zK41cjxiWURJ7UheRYxFMfylqlJygHlRWp6uaRaUsmyi2b7lIZEUGq7szPL6/C17GDoHJXKPMz9DR0tMT1AcJACH5BAUAAAcALBAABwAGAAcAAAMQeApTGiSyGAetdxwb3SZaAgAh+QQFAAAHACwIAAoADAAKAAADIXi6F8QMDPJgm7QqmbsSWEcVR9gNwlGYI2Oi1kEN8RLECQAh+QQFAAAHACwHAA8ABwAMAAADG2hCzDaNlchgtG0YGnYsDyVgjZcZUwUawVC8CQAh+QQFAAAHACwKABQADgAJAAADI3i6O8TwCEdCPKCQTUrkYABYCggKjMkNiwoCy6QWMJQVARolACH5BAUAAAcALA8ADwARAAkAAAMseLqsUSW0Bgq5d0wFBsba5n0YdQjkt1RHlV7bMV4FcB5GuASYEC+FA0HHSAAAIfkEBQAABwAsHAAPAAkADgAAAyR4CtpNQzhFapmnkjD1YJQGGaHXFCLRBGkztAcrDs5Lc9iF4QkAIfkEBQAABwAsGAAZAAwACQAAAx54urOuYpB5SFNl6tni3kLwgYc0XsooPBUHsMqwsgkAIfkEBQAABwAsEAAHAA0AHgAAAzp4aiH6EJQS4GNzWpXzPkNXfZ3zgcN4rmzrvnAsz3Rt31vRDgRbEL0VD7gCGg+qh5EwAHyMSUuhCUkAACH5BAUAAAcALAgACgAPAA4AAAMveLoHwVAZUUpkoNZ7pv6FsDigJi5lFRgMkZ7Q8AUAd8ihvcgXq3eBwW/YsOyIkgQAIfkEBQAABwAsBwAPAAgADAAAAx54cNwXjolSYqC1YSrYLsvxdc8GHdM2DOLWpJnDNgkAIfkEBQAABwAsCAAUABEACQAAAyl4unwSLSoQShGygGOEtVhWfeBWNCS5rUv6QYznWoERUa5gSxwgCBtJAgAh+QQFAAAHACwVAA8ACwAKAAADIni6IHFmGVFqGTJYu/SuCvBx03gdzSYsYRUArGIUayzZSgIAIfkEBQAABwAsHQAPAAgADAAAAyAocNxXJSwHi6D1sgpN4NAFgAEjgMzIbSgzvEfpHISQAAAh+QQFAAAHACwZABgACwALAAADIXi6sq6iSLlAmBPiGeyewPAV3SFuzYKVjygYj0Kk8QHXCQA7) no-repeat 50% 0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading iframe{
padding-top:0;
margin-top:22px;
border:none;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform iframe{
margin-top:8px;
padding-top:8px;
border-top:1px solid #d2d5d8;
width:100%;
}
.ss-uploadfield .ss-uploadfield-addfile.borderTop{
border-top:1px solid #b3b3b3;
}
.ss-upload .clear{
clear:both;
}
.ss-upload .ss-uploadfield-fromcomputer input{
position:absolute;
top:0;
margin:0;
filter:alpha(opacity=0);
-webkit-transform:translate(-200%);
transform:translate(-200%);
direction:ltr;
cursor:pointer;
left:0;
width:100%;
height:100%;
}
.ss-upload .loader{
height:94px;
background:transparent url(data:image/gif;base64,R0lGODlhKwArAKIHAOvt7rS8wdLW2EB9ogBakqysrP///////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1NWQ2NWU5Yy1iZjAwLTRmNjktODVlNS03NDQ4ODZiM2E1MDEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjRFNkFDN0EwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjRFNkFDNzkwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MzRlNmQ4NC00OGE1LTRmNzQtYTcwYS0wNDM4N2E1ZTYzZjAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZjhiOTRiYy00YTNiLTExNzgtYWNjMy1kNzg3OTk3MTdhNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAAHACwAAAAAKwArAAADtni23P4wOiWrvTjrzbv/YCiOWCCQGVAUAXoF6+pKABwXMyTca5szKt7q9DPshAViroZMFoNCHwQgEAA+Np7ScbwFrppu7BvJCrcWs7PcjKElWlr7luGBG4KWuHfGxIE2VDdEUD0ldgtiVj13RjwYeyx9aw2FOH5zK41cjxiWURJ7UheRYxFMfylqlJygHlRWp6uaRaUsmyi2b7lIZEUGq7szPL6/C17GDoHJXKPMz9DR0tMT1AcJACH5BAUAAAcALBAABwAGAAcAAAMQeApTGiSyGAetdxwb3SZaAgAh+QQFAAAHACwIAAoADAAKAAADIXi6F8QMDPJgm7QqmbsSWEcVR9gNwlGYI2Oi1kEN8RLECQAh+QQFAAAHACwHAA8ABwAMAAADG2hCzDaNlchgtG0YGnYsDyVgjZcZUwUawVC8CQAh+QQFAAAHACwKABQADgAJAAADI3i6O8TwCEdCPKCQTUrkYABYCggKjMkNiwoCy6QWMJQVARolACH5BAUAAAcALA8ADwARAAkAAAMseLqsUSW0Bgq5d0wFBsba5n0YdQjkt1RHlV7bMV4FcB5GuASYEC+FA0HHSAAAIfkEBQAABwAsHAAPAAkADgAAAyR4CtpNQzhFapmnkjD1YJQGGaHXFCLRBGkztAcrDs5Lc9iF4QkAIfkEBQAABwAsGAAZAAwACQAAAx54urOuYpB5SFNl6tni3kLwgYc0XsooPBUHsMqwsgkAIfkEBQAABwAsEAAHAA0AHgAAAzp4aiH6EJQS4GNzWpXzPkNXfZ3zgcN4rmzrvnAsz3Rt31vRDgRbEL0VD7gCGg+qh5EwAHyMSUuhCUkAACH5BAUAAAcALAgACgAPAA4AAAMveLoHwVAZUUpkoNZ7pv6FsDigJi5lFRgMkZ7Q8AUAd8ihvcgXq3eBwW/YsOyIkgQAIfkEBQAABwAsBwAPAAgADAAAAx54cNwXjolSYqC1YSrYLsvxdc8GHdM2DOLWpJnDNgkAIfkEBQAABwAsCAAUABEACQAAAyl4unwSLSoQShGygGOEtVhWfeBWNCS5rUv6QYznWoERUa5gSxwgCBtJAgAh+QQFAAAHACwVAA8ACwAKAAADIni6IHFmGVFqGTJYu/SuCvBx03gdzSYsYRUArGIUayzZSgIAIfkEBQAABwAsHQAPAAgADAAAAyAocNxXJSwHi6D1sgpN4NAFgAEjgMzIbSgzvEfpHISQAAAh+QQFAAAHACwZABgACwALAAADIXi6sq6iSLlAmBPiGeyewPAV3SFuzYKVjygYj0Kk8QHXCQA7) no-repeat 50% 50%;
}
@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading{
background-image:url(data:image/gif;base64,R0lGODlhVgBWAPf/AP///5qkqnigubi4uO3y9fD09tTU1MrKyi1xnCZtmhlnl7q6ulWDnxFilWWTsSlvm1WJqk+AnsbGxpa0x+bm5h1pmEqDpsPDw6Woq83Nzc3a46nC0fLy8snW3uTk5K6urmuNomGJoXSet7S0tFGHqR9qmG2ZtNHe5hVklq6vsAlelJWhqdjj6enp6X2WpYOnvoWZpnOSpdvb28zU2ARck566y+nv87nN2UR6nI2uwqzE0ubt8Ymbp7/Gy6mrrEF9o8vZ4nuiuvz9/pu3yQ5hlevw85KyxaCmqmqXs6usrPr7/Ep9namqq0eBpVyGoAZdk5q2yAxglE2FpzBxmTp2m4qswSJql22Vraq0uwJbkqysrABakjN1noadrHGatO3v8ZGfqPX29k2Coh1olufs78/R0j94nLKysvf39/z8/Le3t9DQ0LGxsePj48jIyN/o7fr6+v7+/7y8vPHx8fb4+r29veDg4P7+/vv7+/n5+fj4+ER/pAFaktLS0tnZ2cXFxcDAwP39/fb29t/f397e3vX19erq6q2trV+QriFrmZCwxPT09OLi4u3t7QFbkrOzs6urq+Hh4QNck/Dw8GCRr3+lvApflGOSr+fu8r7Q26W/z+zs7M7Ozr+/v93d3dPT0/L2+LCwsNjY2Ovr68TExNfX17m6uzV2n4mrwLPI1ViMrLe4ua/G1Pj6+8jX4ePq7zBznefn5+Dh4bbL18jJyVOIqfPz84+wxNvl7Dh4oD17ocTFxdjZ2bS2tqytrsjY4eHp7tTf5vf5+u/v79HR0cnJyba2tqG8zfz9/cLT3fb5+g9ilVKGp5e1x9vl66e+zPL192aSrgdek3aft2GQrV6Prjd0mvv8/KK6ydPU1DNymoKitdXg56a/z9/g4X+juJ6yvp2oriRrmNvc3fz8/eHl536crvb29+Xl5XicsoWfsN3e3/r7++zx9I2dp8jLzoeovGWPqc3X3+Xr74+ouJSzxq26wpKxxUt/oGOQrdXZ3PX4+cDK0N3m7La2twAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODA4M0Y1OEQ5Qzk3MEQ4RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3OTA5OUY3RTkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3OTA5OUY3RDkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDg4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAD/ACwAAAAAVgBWAEAI/wD/CQRAsKDBgwgTKlzIsKFDggL/PZxIsaLFixgbGlKjpeMHOBlDijRYCFDHkyhTaiE0sqXDNSpjdnQDkmKkBTJPslmTx+XCnFrQPWxzZiXBSECTpjyTxidBOI+UKh2AMc2InGqcTtSDBk/VA5CkdlSDRqtZgpOk1ll0ti3DRQtauJ1Lt67du3jz6jU4Rw7QT3sz4nEj1uOaQIEvykh6oWzFQBwLq8xw9gBQOY4Ltois0g8AWykfUWCYISebtncsS9ZyRi7FPH+kSkhcEQ1nqRcE0c5oIOaARruDax0onG7E4nYlIl/OvPnCFgvYOh/ZaEBMA9MrLqojdVL2hYIuSP8m+/0gmquFDzS9CAeNnsASpP55T7EFm9VaDtxpezvliPUWWYdfaD05dZ9MlC0UC3on2QKAKDKp4VpBaPiV0wFOpVHUgCrZQRAhrDHyEDpAnVUah1qogVht4gElA115rHFgTgtEUlEehIm1RnkHBbLGB5K54RWPBYEoFiCFEKlQH0AtMIeSD8EBZEcDGALllVhmSRtxWlLEZZdghinmmGSWGWYanADphpkHpfFjSm2weccnU6q0I5ml1CnTi2HKEIpUC4DpyYxKAaIlUZLJkeSVguBUmDFWYpkGd2KpEYtFm6xRx4ZafKCGG3YMWdcch0h1RpwULdJJYWwMMpcepQL8dYaHFQ1DqGSk7GdWfDkVg5EfKJ7kqlYp5ITdQ2j0UdAcwaJEjFZAicgQHDlqIQdBwMoEyR8ezDGKAZzKJK1LFsbERmYGpaFaSh62EdMBNZl3K0rX+sRIUmcYMMocbfwRlkyiEFSuBPEqdG9OWjHZbEdPErQGugz1JlMKZg2ysGcXVRvTbGbdQQqHbABXkR3hxnQIfW0NMm9OnXBQEaJKHeKdXXjYIcEAdZ5RxxqbWBRLf0DVASCUG0m2gG5XFlKuqahiaZJYbHgCpqNJhcInmIsB9UEpZcIU0wcG6Fqmuyh90MfQbBL2ASdos+n223DHLXdBys0N0XFyRxQQACH5BAUAAP8ALA4ADgA7ADsAQAjpAP8JHEiwoMGCGxKdOMiwocOHA3mU2EKxYkVXEDNq3Mix479eHkOKHEmSI5OSKFOqXMmy5cZMiSxWNOHSY5IjIBI8oajgTc2fK1MARUlrKEpeRpMqBZqqQsUnBJY2VCdNpkUHUhu6GGN1S46sEH1h6EEOrNmGSM9qPKk2Y9G2D4XCfQhyrt27ePPqXWlrVSy8oFQ52mIhL51LWWQOmRvIC42uWyjNjREF8pYXc48sgZzoLgYQDfhY5BInLwYYDLT96Le3tevXeHfB/udrNlvXskzBNiUL9m3XtWHLnk28uPHjyJMrX868ZEAAIfkEBQAA/wAsEQATABgAFQBACKAA/wkcSLCgEiQFE05osKWhw4cQtyRg8c9HjDERiShKyLHjv0oqIHLEYiaiyS0oNHkkmG2lS45xRDxp+FIgqignHRYkkyinSQWsBvoAwTBnAygvmbgwo4CGlDg1o/779WCL1IEnEDyUyuLUSZdvdPncSrCAhbEQHVVT9i8MPrQPaxUgeCQCH7QWinQEYy3nj1dJQWB0mOvNVYEBXMRgJzUgACH5BAUAAP8ALA4AHQAPABkAQAibAP8J/NdvoMGBe7YoXMjQYDOGEBU2eFHu4L8ZAQJAsvhL0kKLAyMynGDxlsgtjnAEGEjnwRaQA195bAiSxsktJgwmuGkJl0EHN7fwWXJkoJIfDBuYgbHR4BsFMA1S+hi1CU2QlUSCrHBTAZ2BfG7WMBjlpiqDJIImeCOQDpGgW7SB+Wejwc0GMXwMhCBSGwyLyK6Ie4ADxMqBAQEAIfkEBQAA/wAsEwAnABgAEgBACIoA/wkcSLBgQWAO4hgUuKWhw4cQt2ggWECRhQo0HEZBcOnGwo8LC5CIuKUeQZIot1jKBLKlDQsOE4BEMgtIjT18UgowmJJkEIFQiPSECGtiy6P/oDTYUgVpQU0oIHJzykoByp8Lhz68l1VrwxJdvVZo9Y9aFq8Po+goiAlRlKGJjDj9J4TMGwJIAwIAIfkEBQAA/wAsKgAeABcAEgBACKkA/wkcSJAggTc7hBQcWGKLw4cQIzq0dkSRwCpbGjRbyLEjqygSQ9KI4CPYPwEhtyjQURDYlSMdBUJJlHLLSF8EWzWsKTHBCoFGeIa0wuPkv2ARURyLyZTgDUQIQDqkkSidvo4nYAndgsJFwWSWtj7UBlNgELEQfQrUgPbhEydMBKJMyWdPDSCzkDQgEsLHPyP/JoQkQYBjmIHTBCZ42MRG04VxLgF7XDAgACH5BAUAAP8ALDwAHwANABgAQAiMAP9Fewbtn8GDCP9tWciQoZeDJhpKpHFQ4g8lCHFZktgwwT8YDzgujNLOIEMiORIiFHmrokiGzQxOeLkwjhSaW/YcxAAjRIQlDECs+GJySxREmFS6ZEgCo0qOEJ5ybFCyqMhlwt4kwEnCIASaUQzWwPmPjgKaFbAgwPnCoLslZxk+SUBPZRIMGJggDAgAIfkEBQAA/wAsMAAyABkAEgBACJ0A/wkcSPDfm1xbCip8h2OLw4cQI26xUEDhQHcMxGiwyNGiDQsSQzqkJBCSCxQit5xi0bElpj0hCTpkNhBaLT4pJSp4M/CImZwPdfHsCONBRAQnWiodqIjIQ47Silgc0gCoQ0kbCWpCadXhAzoD5VXo+jCRM4IBqJBtMMEiBgaOckZBpTRAQ4kqKi0dmMSFNmlbnoiIs9dimUCFCQYEACH5BAUAAP8ALB8ADgAZADsAQAjxAP8JHDgw1ipbBBMS5KNthZaHECFOUkixosWLGDNq3MixI8EcW0KK9EjgicgKqSw2GhARogGOWcQ5cXeEiT80HnPq3MnzorBpKHI6EElU5AMgCg2pgfgBTkYg5lq2/KQxywMYUrUQ2omo58ZmXsOKHUu2bMc3CkZ6dFVU7UYTbbckytTxRKINHdNw+qDFjcc0a/hGbKMx0CfBUtdkjMLAR9aHMjQ2AOFY6gKONLTBSBIREACPfCyJMxOPjNnTqFOrXs26tevXsC124MkiQUidcbgUzZmorccXcd1iRBScBhIlGocUzXKJjkcLWxypAkUxIAAh+QQFAAD/ACwRABMAGQAYAEAIugD/CRxIsOCdgggFtjmjpaHDhxC1yCkk8MkSDBHP2EnIkaOMUBETcgEBKaJJNbE6DuQTJYhKgmj6AHj5D0CpDw1pDvTExuRDhDYW+PRpzBDBLDgwDj3TRmcDBmB8aCk2U6dVhAW24ZjS4OocOVcLLqrz82ohQD5pCrow9ORAPG7aRvywJtDAGHIhHkhTUJqTvFrcwOloBcbQP3qchlDa8AKasAItaXPSBQ/kywK9BQCB7XI3BU+y8BEYEAAh+QQFAAD/ACwOAB0ADgAZAEAIlwD/CfwnaKBBgbu0KFy40KAshhAVhoN38F+NigLnHGqIkUnEhYwODvrIJESDgWnqKMT4T89Ghhh9fVRoYKCpmVrYoBnYB6cWECcF3umEIckRGBFQ8DmIZgTLgWtWPpUAEyOvjxV74RyRRqDHmegGpsCZYSAtn3LO/UtzxicPcf/gPJoZgEqWgRkgHgExpmIgcE5wWHliMCAAIfkEBQAA/wAsEgAoABsAEQBACIsA/wkcSLBgwTZntIwzSFCLw4cQI2oZwLAgAD1o8FTcWBBNwRZqJDr084/bnQMiUz4804Kjy3+xRkT8wlGlSDsMbYpUE8hgnjVsdC6I9LLoPzhuHsoxSjANSonrOJ4xMGpOmz+QVIqqqRPinIpdI5IUSCqsSDaNDA4KarYTB5d47EgY8GFlnTWbOAYEACH5BAUAAP8ALCkAHgAWAB4AQAi9AP8JHEiwIBw0YeIUFDhAi8OHECH6ABGFICEtZxgt3Mixo0eBLdhEHImBAY1/tv6JGulQTYuC8z7K3Hjt20yPkRawZGKyYCA1LEf6cKGAkMBIQUcmgWGFoK2IjyjcnEq1qkBQVgtuWlPnjMMkMajk47ioU1It7qYsHCbyrBZIMRoQ9OP2ISQXKAbOqfvwCL4sA+kGhfTHw5xRZZwA/mfnXxuWB+DMlPNQguSpANagycq5s+fPC+WVqPoGwdSAACH5BAUAAP8ALDoAHgAPABYAQAiPAPUA+EewoMGDWhIqXPgoz0F0CyP6IBgx4YE7B/+hkVNxIa2DUaYwAEGSwZQoFBWyWeMwY8qOGQx2jHgmjcEMM7WkKCisC4aOGLpo+aDGjR08LmUuZDMo6UxSGJXObFowZ0JiBA2csapFVkE0bHKaMsgoJxOD2XJOLCguBJifCTGACaHK5ZMoDaI8+SfpX0AAIfkEBQAA/wAsMQAuABgAFQBACKkA/wkcSLCgQYFMCOZxo6Whw4cQ1xB8AAZiQ0CFDmo0iOaCRYi8iFgL8PGjGzwb/yVIyXJjmhFaDmrpdTDPn5IQJQjcZw8STotq0BAsweOnlguCWD7BUVFLnUUtowo0sNEXSwAMHQ50uGujnTNGD+kx2AasUS2HJhGkoOaswzppBHYQs8JtwwVJCU4JkMTomTYaVYTo+5GNp5ZZlpB0GEqGVIIJQvAD8DggADs=);
background-size:43px 43px;
}
.ss-upload .loader{
background-image:url(data:image/gif;base64,R0lGODlhVgBWAPf/AP///5qkqnigubi4uO3y9fD09tTU1MrKyi1xnCZtmhlnl7q6ulWDnxFilWWTsSlvm1WJqk+AnsbGxpa0x+bm5h1pmEqDpsPDw6Woq83Nzc3a46nC0fLy8snW3uTk5K6urmuNomGJoXSet7S0tFGHqR9qmG2ZtNHe5hVklq6vsAlelJWhqdjj6enp6X2WpYOnvoWZpnOSpdvb28zU2ARck566y+nv87nN2UR6nI2uwqzE0ubt8Ymbp7/Gy6mrrEF9o8vZ4nuiuvz9/pu3yQ5hlevw85KyxaCmqmqXs6usrPr7/Ep9namqq0eBpVyGoAZdk5q2yAxglE2FpzBxmTp2m4qswSJql22Vraq0uwJbkqysrABakjN1noadrHGatO3v8ZGfqPX29k2Coh1olufs78/R0j94nLKysvf39/z8/Le3t9DQ0LGxsePj48jIyN/o7fr6+v7+/7y8vPHx8fb4+r29veDg4P7+/vv7+/n5+fj4+ER/pAFaktLS0tnZ2cXFxcDAwP39/fb29t/f397e3vX19erq6q2trV+QriFrmZCwxPT09OLi4u3t7QFbkrOzs6urq+Hh4QNck/Dw8GCRr3+lvApflGOSr+fu8r7Q26W/z+zs7M7Ozr+/v93d3dPT0/L2+LCwsNjY2Ovr68TExNfX17m6uzV2n4mrwLPI1ViMrLe4ua/G1Pj6+8jX4ePq7zBznefn5+Dh4bbL18jJyVOIqfPz84+wxNvl7Dh4oD17ocTFxdjZ2bS2tqytrsjY4eHp7tTf5vf5+u/v79HR0cnJyba2tqG8zfz9/cLT3fb5+g9ilVKGp5e1x9vl66e+zPL192aSrgdek3aft2GQrV6Prjd0mvv8/KK6ydPU1DNymoKitdXg56a/z9/g4X+juJ6yvp2oriRrmNvc3fz8/eHl536crvb29+Xl5XicsoWfsN3e3/r7++zx9I2dp8jLzoeovGWPqc3X3+Xr74+ouJSzxq26wpKxxUt/oGOQrdXZ3PX4+cDK0N3m7La2twAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODA4M0Y1OEQ5Qzk3MEQ4RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3OTA5OUY3RTkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3OTA5OUY3RDkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDg4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAD/ACwAAAAAVgBWAEAI/wD/CQRAsKDBgwgTKlzIsKFDggL/PZxIsaLFixgbGlKjpeMHOBlDijRYCFDHkyhTaiE0sqXDNSpjdnQDkmKkBTJPslmTx+XCnFrQPWxzZiXBSECTpjyTxidBOI+UKh2AMc2InGqcTtSDBk/VA5CkdlSDRqtZgpOk1ll0ti3DRQtauJ1Lt67du3jz6jU4Rw7QT3sz4nEj1uOaQIEvykh6oWzFQBwLq8xw9gBQOY4Ltois0g8AWykfUWCYISebtncsS9ZyRi7FPH+kSkhcEQ1nqRcE0c5oIOaARruDax0onG7E4nYlIl/OvPnCFgvYOh/ZaEBMA9MrLqojdVL2hYIuSP8m+/0gmquFDzS9CAeNnsASpP55T7EFm9VaDtxpezvliPUWWYdfaD05dZ9MlC0UC3on2QKAKDKp4VpBaPiV0wFOpVHUgCrZQRAhrDHyEDpAnVUah1qogVht4gElA115rHFgTgtEUlEehIm1RnkHBbLGB5K54RWPBYEoFiCFEKlQH0AtMIeSD8EBZEcDGALllVhmSRtxWlLEZZdghinmmGSWGWYanADphpkHpfFjSm2weccnU6q0I5ml1CnTi2HKEIpUC4DpyYxKAaIlUZLJkeSVguBUmDFWYpkGd2KpEYtFm6xRx4ZafKCGG3YMWdcch0h1RpwULdJJYWwMMpcepQL8dYaHFQ1DqGSk7GdWfDkVg5EfKJ7kqlYp5ITdQ2j0UdAcwaJEjFZAicgQHDlqIQdBwMoEyR8ezDGKAZzKJK1LFsbERmYGpaFaSh62EdMBNZl3K0rX+sRIUmcYMMocbfwRlkyiEFSuBPEqdG9OWjHZbEdPErQGugz1JlMKZg2ysGcXVRvTbGbdQQqHbABXkR3hxnQIfW0NMm9OnXBQEaJKHeKdXXjYIcEAdZ5RxxqbWBRLf0DVASCUG0m2gG5XFlKuqahiaZJYbHgCpqNJhcInmIsB9UEpZcIU0wcG6Fqmuyh90MfQbBL2ASdos+n223DHLXdBys0N0XFyRxQQACH5BAUAAP8ALA4ADgA7ADsAQAjpAP8JHEiwoMGCGxKdOMiwocOHA3mU2EKxYkVXEDNq3Mix479eHkOKHEmSI5OSKFOqXMmy5cZMiSxWNOHSY5IjIBI8oajgTc2fK1MARUlrKEpeRpMqBZqqQsUnBJY2VCdNpkUHUhu6GGN1S46sEH1h6EEOrNmGSM9qPKk2Y9G2D4XCfQhyrt27ePPqXWlrVSy8oFQ52mIhL51LWWQOmRvIC42uWyjNjREF8pYXc48sgZzoLgYQDfhY5BInLwYYDLT96Le3tevXeHfB/udrNlvXskzBNiUL9m3XtWHLnk28uPHjyJMrX868ZEAAIfkEBQAA/wAsEQATABgAFQBACKAA/wkcSLCgEiQFE05osKWhw4cQtyRg8c9HjDERiShKyLHjv0oqIHLEYiaiyS0oNHkkmG2lS45xRDxp+FIgqignHRYkkyinSQWsBvoAwTBnAygvmbgwo4CGlDg1o/779WCL1IEnEDyUyuLUSZdvdPncSrCAhbEQHVVT9i8MPrQPaxUgeCQCH7QWinQEYy3nj1dJQWB0mOvNVYEBXMRgJzUgACH5BAUAAP8ALA4AHQAPABkAQAibAP8J/NdvoMGBe7YoXMjQYDOGEBU2eFHu4L8ZAQJAsvhL0kKLAyMynGDxlsgtjnAEGEjnwRaQA195bAiSxsktJgwmuGkJl0EHN7fwWXJkoJIfDBuYgbHR4BsFMA1S+hi1CU2QlUSCrHBTAZ2BfG7WMBjlpiqDJIImeCOQDpGgW7SB+Wejwc0GMXwMhCBSGwyLyK6Ie4ADxMqBAQEAIfkEBQAA/wAsEwAnABgAEgBACIoA/wkcSLBgQWAO4hgUuKWhw4cQt2ggWECRhQo0HEZBcOnGwo8LC5CIuKUeQZIot1jKBLKlDQsOE4BEMgtIjT18UgowmJJkEIFQiPSECGtiy6P/oDTYUgVpQU0oIHJzykoByp8Lhz68l1VrwxJdvVZo9Y9aFq8Po+goiAlRlKGJjDj9J4TMGwJIAwIAIfkEBQAA/wAsKgAeABcAEgBACKkA/wkcSJAggTc7hBQcWGKLw4cQIzq0dkSRwCpbGjRbyLEjqygSQ9KI4CPYPwEhtyjQURDYlSMdBUJJlHLLSF8EWzWsKTHBCoFGeIa0wuPkv2ARURyLyZTgDUQIQDqkkSidvo4nYAndgsJFwWSWtj7UBlNgELEQfQrUgPbhEydMBKJMyWdPDSCzkDQgEsLHPyP/JoQkQYBjmIHTBCZ42MRG04VxLgF7XDAgACH5BAUAAP8ALDwAHwANABgAQAiMAP9Fewbtn8GDCP9tWciQoZeDJhpKpHFQ4g8lCHFZktgwwT8YDzgujNLOIEMiORIiFHmrokiGzQxOeLkwjhSaW/YcxAAjRIQlDECs+GJySxREmFS6ZEgCo0qOEJ5ybFCyqMhlwt4kwEnCIASaUQzWwPmPjgKaFbAgwPnCoLslZxk+SUBPZRIMGJggDAgAIfkEBQAA/wAsMAAyABkAEgBACJ0A/wkcSPDfm1xbCip8h2OLw4cQI26xUEDhQHcMxGiwyNGiDQsSQzqkJBCSCxQit5xi0bElpj0hCTpkNhBaLT4pJSp4M/CImZwPdfHsCONBRAQnWiodqIjIQ47Silgc0gCoQ0kbCWpCadXhAzoD5VXo+jCRM4IBqJBtMMEiBgaOckZBpTRAQ4kqKi0dmMSFNmlbnoiIs9dimUCFCQYEACH5BAUAAP8ALB8ADgAZADsAQAjxAP8JHDgw1ipbBBMS5KNthZaHECFOUkixosWLGDNq3MixI8EcW0KK9EjgicgKqSw2GhARogGOWcQ5cXeEiT80HnPq3MnzorBpKHI6EElU5AMgCg2pgfgBTkYg5lq2/KQxywMYUrUQ2omo58ZmXsOKHUu2bMc3CkZ6dFVU7UYTbbckytTxRKINHdNw+qDFjcc0a/hGbKMx0CfBUtdkjMLAR9aHMjQ2AOFY6gKONLTBSBIREACPfCyJMxOPjNnTqFOrXs26tevXsC124MkiQUidcbgUzZmorccXcd1iRBScBhIlGocUzXKJjkcLWxypAkUxIAAh+QQFAAD/ACwRABMAGQAYAEAIugD/CRxIsOCdgggFtjmjpaHDhxC1yCkk8MkSDBHP2EnIkaOMUBETcgEBKaJJNbE6DuQTJYhKgmj6AHj5D0CpDw1pDvTExuRDhDYW+PRpzBDBLDgwDj3TRmcDBmB8aCk2U6dVhAW24ZjS4OocOVcLLqrz82ohQD5pCrow9ORAPG7aRvywJtDAGHIhHkhTUJqTvFrcwOloBcbQP3qchlDa8AKasAItaXPSBQ/kywK9BQCB7XI3BU+y8BEYEAAh+QQFAAD/ACwOAB0ADgAZAEAIlwD/CfwnaKBBgbu0KFy40KAshhAVhoN38F+NigLnHGqIkUnEhYwODvrIJESDgWnqKMT4T89Ghhh9fVRoYKCpmVrYoBnYB6cWECcF3umEIckRGBFQ8DmIZgTLgWtWPpUAEyOvjxV74RyRRqDHmegGpsCZYSAtn3LO/UtzxicPcf/gPJoZgEqWgRkgHgExpmIgcE5wWHliMCAAIfkEBQAA/wAsEgAoABsAEQBACIsA/wkcSLBgwTZntIwzSFCLw4cQI2oZwLAgAD1o8FTcWBBNwRZqJDr084/bnQMiUz4804Kjy3+xRkT8wlGlSDsMbYpUE8hgnjVsdC6I9LLoPzhuHsoxSjANSonrOJ4xMGpOmz+QVIqqqRPinIpdI5IUSCqsSDaNDA4KarYTB5d47EgY8GFlnTWbOAYEACH5BAUAAP8ALCkAHgAWAB4AQAi9AP8JHEiwIBw0YeIUFDhAi8OHECH6ABGFICEtZxgt3Mixo0eBLdhEHImBAY1/tv6JGulQTYuC8z7K3Hjt20yPkRawZGKyYCA1LEf6cKGAkMBIQUcmgWGFoK2IjyjcnEq1qkBQVgtuWlPnjMMkMajk47ioU1It7qYsHCbyrBZIMRoQ9OP2ISQXKAbOqfvwCL4sA+kGhfTHw5xRZZwA/mfnXxuWB+DMlPNQguSpANagycq5s+fPC+WVqPoGwdSAACH5BAUAAP8ALDoAHgAPABYAQAiPAPUA+EewoMGDWhIqXPgoz0F0CyP6IBgx4YE7B/+hkVNxIa2DUaYwAEGSwZQoFBWyWeMwY8qOGQx2jHgmjcEMM7WkKCisC4aOGLpo+aDGjR08LmUuZDMo6UxSGJXObFowZ0JiBA2csapFVkE0bHKaMsgoJxOD2XJOLCguBJifCTGACaHK5ZMoDaI8+SfpX0AAIfkEBQAA/wAsMQAuABgAFQBACKkA/wkcSLCgQYFMCOZxo6Whw4cQ1xB8AAZiQ0CFDmo0iOaCRYi8iFgL8PGjGzwb/yVIyXJjmhFaDmrpdTDPn5IQJQjcZw8STotq0BAsweOnlguCWD7BUVFLnUUtowo0sNEXSwAMHQ50uGujnTNGD+kx2AasUS2HJhGkoOaswzppBHYQs8JtwwVJCU4JkMTomTYaVYTo+5GNp5ZZlpB0GEqGVIIJQvAD8DggADs=);
background-size:43px 43px;
}
}

View File

@ -14561,328 +14561,6 @@ div.TreeDropdownField a.jstree-loading .jstree-pageicon{
background:#fff url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAANTU1JSUlGBgYEBAQERERG5ubqKiotzc3KSkpCQkJCgoKDAwMDY2Nj4+Pmpqarq6uhwcHHJycuzs7O7u7sLCwoqKilBQUF5eXr6+vtDQ0Do6OhYWFoyMjKqqqlxcXHx8fOLi4oaGhg4ODmhoaJycnGZmZra2tkZGRgoKCrCwsJaWlhgYGAYGBujo6PT09Hh4eISEhPb29oKCgqioqPr6+vz8/MDAwMrKyvj4+NbW1q6urvDw8NLS0uTk5N7e3s7OzsbGxry8vODg4NjY2PLy8tra2np6erS0tLKyskxMTFJSUlpaWmJiYkJCQjw8PMTExHZ2djIyMurq6ioqKo6OjlhYWCwsLB4eHqCgoE5OThISEoiIiGRkZDQ0NMjIyMzMzObm5ri4uH5+fpKSkp6enlZWVpCQkEpKSkhISCIiIqamphAQEAwMDKysrAQEBJqamiYmJhQUFDg4OHR0dC4uLggICHBwcCAgIFRUVGxsbICAgAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAHjYAAgoOEhYUbIykthoUIHCQqLoI2OjeFCgsdJSsvgjcwPTaDAgYSHoY2FBSWAAMLE4wAPT89ggQMEbEzQD+CBQ0UsQA7RYIGDhWxN0E+ggcPFrEUQjuCCAYXsT5DRIIJEBgfhjsrFkaDERkgJhswMwk4CDzdhBohJwcxNB4sPAmMIlCwkOGhRo5gwhIGAgAh+QQJCgAAACwAAAAAEAAQAAAHjIAAgoOEhYU7A1dYDFtdG4YAPBhVC1ktXCRfJoVKT1NIERRUSl4qXIRHBFCbhTKFCgYjkII3g0hLUbMAOjaCBEw9ukZGgidNxLMUFYIXTkGzOmLLAEkQCLNUQMEAPxdSGoYvAkS9gjkyNEkJOjovRWAb04NBJlYsWh9KQ2FUkFQ5SWqsEJIAhq6DAAIBACH5BAkKAAAALAAAAAAQABAAAAeJgACCg4SFhQkKE2kGXiwChgBDB0sGDw4NDGpshTheZ2hRFRVDUmsMCIMiZE48hmgtUBuCYxBmkAAQbV2CLBM+t0puaoIySDC3VC4tgh40M7eFNRdH0IRgZUO3NjqDFB9mv4U6Pc+DRzUfQVQ3NzAULxU2hUBDKENCQTtAL9yGRgkbcvggEq9atUAAIfkECQoAAAAsAAAAABAAEAAAB4+AAIKDhIWFPygeEE4hbEeGADkXBycZZ1tqTkqFQSNIbBtGPUJdD088g1QmMjiGZl9MO4I5ViiQAEgMA4JKLAm3EWtXgmxmOrcUElWCb2zHkFQdcoIWPGK3Sm1LgkcoPrdOKiOCRmA4IpBwDUGDL2A5IjCCN/QAcYUURQIJIlQ9MzZu6aAgRgwFGAFvKRwUCAAh+QQJCgAAACwAAAAAEAAQAAAHjIAAgoOEhYUUYW9lHiYRP4YACStxZRc0SBMyFoVEPAoWQDMzAgolEBqDRjg8O4ZKIBNAgkBjG5AAZVtsgj44VLdCanWCYUI3txUPS7xBx5AVDgazAjC3Q3ZeghUJv5B1cgOCNmI/1YUeWSkCgzNUFDODKydzCwqFNkYwOoIubnQIt244MzDC1q2DggIBACH5BAkKAAAALAAAAAAQABAAAAeJgACCg4SFhTBAOSgrEUEUhgBUQThjSh8IcQo+hRUbYEdUNjoiGlZWQYM2QD4vhkI0ZWKCPQmtkG9SEYJURDOQAD4HaLuyv0ZeB4IVj8ZNJ4IwRje/QkxkgjYz05BdamyDN9uFJg9OR4YEK1RUYzFTT0qGdnduXC1Zchg8kEEjaQsMzpTZ8avgoEAAIfkECQoAAAAsAAAAABAAEAAAB4iAAIKDhIWFNz0/Oz47IjCGADpURAkCQUI4USKFNhUvFTMANxU7KElAhDA9OoZHH0oVgjczrJBRZkGyNpCCRCw8vIUzHmXBhDM0HoIGLsCQAjEmgjIqXrxaBxGCGw5cF4Y8TnybglprLXhjFBUWVnpeOIUIT3lydg4PantDz2UZDwYOIEhgzFggACH5BAkKAAAALAAAAAAQABAAAAeLgACCg4SFhjc6RhUVRjaGgzYzRhRiREQ9hSaGOhRFOxSDQQ0uj1RBPjOCIypOjwAJFkSCSyQrrhRDOYILXFSuNkpjggwtvo86H7YAZ1korkRaEYJlC3WuESxBggJLWHGGFhcIxgBvUHQyUT1GQWwhFxuFKyBPakxNXgceYY9HCDEZTlxA8cOVwUGBAAA7AAAAAAAAAAAA) 50% no-repeat;
}
.ss-insert-media.form-group:after,.ss-uploadfield.form-group:after{
visibility:hidden;
}
.ss-uploadfield .clear{
clear:both;
}
.ss-uploadfield .description{
margin-left:0;
}
.ss-uploadfield .middleColumn{
min-width:510px;
max-width:696px;
width:100%;
margin-left:0;
clear:both;
padding:0;
background:#fff;
border:1px solid #b3b3b3;
border-radius:4px;
background-image:-webkit-gradient(linear,left top,left bottom,from(#efefef),color-stop(10%,#fff),color-stop(90%,#fff),color-stop(90%,#efefef));
background-image:-webkit-linear-gradient(#efefef,#fff 10%,#fff 90%,#efefef);
background-image:linear-gradient(#efefef,#fff 10%,#fff 90%,#efefef);
}
.ss-uploadfield .ss-uploadfield-item{
margin:0;
padding:15px;
overflow:auto;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview{
height:60px;
line-height:60px;
width:80px;
text-align:center;
font-weight:700;
float:left;
overflow:hidden;
background:#f0f2f4;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview span{
height:60px;
width:80px;
display:table-cell;
vertical-align:middle;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview.ss-uploadfield-dropzone{
box-shadow:inset 0 0 4px 0 gray;
border:2px dashed gray;
background:#d2d5d8;
margin-right:15px;
position:relative;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview.ss-uploadfield-dropzone:after{
background:none;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview img{
display:block;
margin:0 auto;
background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJElEQVQYV2O8dOnSfwYkoKenx4jMZ6SDAmT7QGx0K1EcRBsFAJfOHd3Le79RAAAAAElFTkSuQmCC) repeat;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-preview img[src$="_32.png"]{
background:transparent;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info{
margin-left:95px;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name{
cursor:default;
display:block;
line-height:13px;
height:26px;
margin:0;
text-align:left;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .name{
max-width:240px;
font-weight:700;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
-o-text-overflow:ellipsis;
display:inline;
float:left;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .size{
color:#a9b2b9;
padding:0 0 0 5px;
display:inline;
float:left;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status{
float:right;
padding:0 0 0 5px;
text-align:right;
max-width:75%;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-error-text{
color:red;
font-weight:700;
width:150px;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-warning-text{
color:#b7a403;
}
.ss-uploadfield .ss-uploadfield-item .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status.ui-state-success-text{
color:#1f9433;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-preview{
width:auto;
height:auto;
margin-right:15px;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info{
margin-left:0;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name{
float:left;
width:70%;
height:auto;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name .name{
float:left;
width:100%;
margin-bottom:5px;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-name .ss-uploadfield-item-status{
float:left;
width:100%;
padding:0;
text-align:left;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-actions{
float:right;
width:5%;
min-height:0;
margin:0;
}
.ss-uploadfield .ss-uploadfield-item.ui-state-error .ss-uploadfield-item-info .ss-uploadfield-item-actions .ss-uploadfield-item-cancel{
position:relative;
top:auto;
}
.ss-uploadfield .ss-uploadfield-files{
margin:0;
padding:0;
overflow:auto;
position:relative;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item.ui-state-error{
border:0;
border-bottom:1px solid #b3b3b3;
background:none;
color:#66727d;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item.ui-state-error:last-child,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item:last-child{
border-bottom:0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-actions{
min-height:28px;
overflow:hidden;
margin:6px 0 -6px;
position:relative;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progress{
position:absolute;
left:0;
right:42px;
width:auto;
margin:11px 0 0;
height:15px;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progress div{
border-radius:25px;
height:13px;
padding:0;
margin:0;
overflow:hidden;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progressbar{
border:1px solid gray;
background-color:#92a6b3;
background-image:-webkit-gradient(linear,left top,left bottom,from(#92a6b3),color-stop(11%,#90aab8),color-stop(22%,#96b1bf),color-stop(33%,#9eb4c1),color-stop(44%,#a7bac7),to(#c1d5dc));
background-image:-webkit-linear-gradient(top,#92a6b3,#90aab8 11%,#96b1bf 22%,#9eb4c1 33%,#a7bac7 44%,#c1d5dc);
background-image:linear-gradient(180deg,#92a6b3 0,#90aab8 11%,#96b1bf 22%,#9eb4c1 33%,#a7bac7 44%,#c1d5dc);
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-progressbarvalue{
border:0;
width:0;
background:#60b3dd url(../images/progressbar_blue.gif) repeat-x 0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start{
position:absolute;
top:10px;
right:0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel button,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start button{
display:block;
overflow:hidden;
text-indent:-9999px;
padding:0;
margin:0;
border:0;
width:16px;
height:16px;
cursor:pointer;
box-shadow:none;
position:relative;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel button span,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start button span{
position:absolute;
left:0;
top:0;
margin:0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-cancel button span.ui-button-text,.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start button span.ui-button-text{
display:none;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-start{
right:20px;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform{
height:0;
overflow:hidden;
clear:both;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading{
width:100%;
height:22px;
margin:15px 0 0;
background:url(data:image/gif;base64,R0lGODlhKwArAKIHAOvt7rS8wdLW2EB9ogBakqysrP///////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1NWQ2NWU5Yy1iZjAwLTRmNjktODVlNS03NDQ4ODZiM2E1MDEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjRFNkFDN0EwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjRFNkFDNzkwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MzRlNmQ4NC00OGE1LTRmNzQtYTcwYS0wNDM4N2E1ZTYzZjAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZjhiOTRiYy00YTNiLTExNzgtYWNjMy1kNzg3OTk3MTdhNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAAHACwAAAAAKwArAAADtni23P4wOiWrvTjrzbv/YCiOWCCQGVAUAXoF6+pKABwXMyTca5szKt7q9DPshAViroZMFoNCHwQgEAA+Np7ScbwFrppu7BvJCrcWs7PcjKElWlr7luGBG4KWuHfGxIE2VDdEUD0ldgtiVj13RjwYeyx9aw2FOH5zK41cjxiWURJ7UheRYxFMfylqlJygHlRWp6uaRaUsmyi2b7lIZEUGq7szPL6/C17GDoHJXKPMz9DR0tMT1AcJACH5BAUAAAcALBAABwAGAAcAAAMQeApTGiSyGAetdxwb3SZaAgAh+QQFAAAHACwIAAoADAAKAAADIXi6F8QMDPJgm7QqmbsSWEcVR9gNwlGYI2Oi1kEN8RLECQAh+QQFAAAHACwHAA8ABwAMAAADG2hCzDaNlchgtG0YGnYsDyVgjZcZUwUawVC8CQAh+QQFAAAHACwKABQADgAJAAADI3i6O8TwCEdCPKCQTUrkYABYCggKjMkNiwoCy6QWMJQVARolACH5BAUAAAcALA8ADwARAAkAAAMseLqsUSW0Bgq5d0wFBsba5n0YdQjkt1RHlV7bMV4FcB5GuASYEC+FA0HHSAAAIfkEBQAABwAsHAAPAAkADgAAAyR4CtpNQzhFapmnkjD1YJQGGaHXFCLRBGkztAcrDs5Lc9iF4QkAIfkEBQAABwAsGAAZAAwACQAAAx54urOuYpB5SFNl6tni3kLwgYc0XsooPBUHsMqwsgkAIfkEBQAABwAsEAAHAA0AHgAAAzp4aiH6EJQS4GNzWpXzPkNXfZ3zgcN4rmzrvnAsz3Rt31vRDgRbEL0VD7gCGg+qh5EwAHyMSUuhCUkAACH5BAUAAAcALAgACgAPAA4AAAMveLoHwVAZUUpkoNZ7pv6FsDigJi5lFRgMkZ7Q8AUAd8ihvcgXq3eBwW/YsOyIkgQAIfkEBQAABwAsBwAPAAgADAAAAx54cNwXjolSYqC1YSrYLsvxdc8GHdM2DOLWpJnDNgkAIfkEBQAABwAsCAAUABEACQAAAyl4unwSLSoQShGygGOEtVhWfeBWNCS5rUv6QYznWoERUa5gSxwgCBtJAgAh+QQFAAAHACwVAA8ACwAKAAADIni6IHFmGVFqGTJYu/SuCvBx03gdzSYsYRUArGIUayzZSgIAIfkEBQAABwAsHQAPAAgADAAAAyAocNxXJSwHi6D1sgpN4NAFgAEjgMzIbSgzvEfpHISQAAAh+QQFAAAHACwZABgACwALAAADIXi6sq6iSLlAmBPiGeyewPAV3SFuzYKVjygYj0Kk8QHXCQA7) no-repeat 50% 0;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading iframe{
padding-top:0;
margin-top:22px;
border:none;
}
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform iframe{
margin-top:8px;
padding-top:8px;
border-top:1px solid #d2d5d8;
width:100%;
}
.ss-uploadfield .ss-uploadfield-addfile.borderTop{
border-top:1px solid #b3b3b3;
}
.ss-upload .clear{
clear:both;
}
.ss-upload .ss-uploadfield-fromcomputer input{
position:absolute;
top:0;
margin:0;
filter:alpha(opacity=0);
-webkit-transform:translate(-200%);
transform:translate(-200%);
direction:ltr;
cursor:pointer;
left:0;
width:100%;
height:100%;
}
.ss-upload .loader{
height:94px;
background:transparent url(data:image/gif;base64,R0lGODlhKwArAKIHAOvt7rS8wdLW2EB9ogBakqysrP///////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1NWQ2NWU5Yy1iZjAwLTRmNjktODVlNS03NDQ4ODZiM2E1MDEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjRFNkFDN0EwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjRFNkFDNzkwNjZDMTFFNTg1QTBBNzNENzVBQ0M0ODQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MzRlNmQ4NC00OGE1LTRmNzQtYTcwYS0wNDM4N2E1ZTYzZjAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZjhiOTRiYy00YTNiLTExNzgtYWNjMy1kNzg3OTk3MTdhNzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAAHACwAAAAAKwArAAADtni23P4wOiWrvTjrzbv/YCiOWCCQGVAUAXoF6+pKABwXMyTca5szKt7q9DPshAViroZMFoNCHwQgEAA+Np7ScbwFrppu7BvJCrcWs7PcjKElWlr7luGBG4KWuHfGxIE2VDdEUD0ldgtiVj13RjwYeyx9aw2FOH5zK41cjxiWURJ7UheRYxFMfylqlJygHlRWp6uaRaUsmyi2b7lIZEUGq7szPL6/C17GDoHJXKPMz9DR0tMT1AcJACH5BAUAAAcALBAABwAGAAcAAAMQeApTGiSyGAetdxwb3SZaAgAh+QQFAAAHACwIAAoADAAKAAADIXi6F8QMDPJgm7QqmbsSWEcVR9gNwlGYI2Oi1kEN8RLECQAh+QQFAAAHACwHAA8ABwAMAAADG2hCzDaNlchgtG0YGnYsDyVgjZcZUwUawVC8CQAh+QQFAAAHACwKABQADgAJAAADI3i6O8TwCEdCPKCQTUrkYABYCggKjMkNiwoCy6QWMJQVARolACH5BAUAAAcALA8ADwARAAkAAAMseLqsUSW0Bgq5d0wFBsba5n0YdQjkt1RHlV7bMV4FcB5GuASYEC+FA0HHSAAAIfkEBQAABwAsHAAPAAkADgAAAyR4CtpNQzhFapmnkjD1YJQGGaHXFCLRBGkztAcrDs5Lc9iF4QkAIfkEBQAABwAsGAAZAAwACQAAAx54urOuYpB5SFNl6tni3kLwgYc0XsooPBUHsMqwsgkAIfkEBQAABwAsEAAHAA0AHgAAAzp4aiH6EJQS4GNzWpXzPkNXfZ3zgcN4rmzrvnAsz3Rt31vRDgRbEL0VD7gCGg+qh5EwAHyMSUuhCUkAACH5BAUAAAcALAgACgAPAA4AAAMveLoHwVAZUUpkoNZ7pv6FsDigJi5lFRgMkZ7Q8AUAd8ihvcgXq3eBwW/YsOyIkgQAIfkEBQAABwAsBwAPAAgADAAAAx54cNwXjolSYqC1YSrYLsvxdc8GHdM2DOLWpJnDNgkAIfkEBQAABwAsCAAUABEACQAAAyl4unwSLSoQShGygGOEtVhWfeBWNCS5rUv6QYznWoERUa5gSxwgCBtJAgAh+QQFAAAHACwVAA8ACwAKAAADIni6IHFmGVFqGTJYu/SuCvBx03gdzSYsYRUArGIUayzZSgIAIfkEBQAABwAsHQAPAAgADAAAAyAocNxXJSwHi6D1sgpN4NAFgAEjgMzIbSgzvEfpHISQAAAh+QQFAAAHACwZABgACwALAAADIXi6sq6iSLlAmBPiGeyewPAV3SFuzYKVjygYj0Kk8QHXCQA7) no-repeat 50% 50%;
}
@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){
.ss-uploadfield .ss-uploadfield-files .ss-uploadfield-item-editform.loading{
background-image:url(data:image/gif;base64,R0lGODlhVgBWAPf/AP///5qkqnigubi4uO3y9fD09tTU1MrKyi1xnCZtmhlnl7q6ulWDnxFilWWTsSlvm1WJqk+AnsbGxpa0x+bm5h1pmEqDpsPDw6Woq83Nzc3a46nC0fLy8snW3uTk5K6urmuNomGJoXSet7S0tFGHqR9qmG2ZtNHe5hVklq6vsAlelJWhqdjj6enp6X2WpYOnvoWZpnOSpdvb28zU2ARck566y+nv87nN2UR6nI2uwqzE0ubt8Ymbp7/Gy6mrrEF9o8vZ4nuiuvz9/pu3yQ5hlevw85KyxaCmqmqXs6usrPr7/Ep9namqq0eBpVyGoAZdk5q2yAxglE2FpzBxmTp2m4qswSJql22Vraq0uwJbkqysrABakjN1noadrHGatO3v8ZGfqPX29k2Coh1olufs78/R0j94nLKysvf39/z8/Le3t9DQ0LGxsePj48jIyN/o7fr6+v7+/7y8vPHx8fb4+r29veDg4P7+/vv7+/n5+fj4+ER/pAFaktLS0tnZ2cXFxcDAwP39/fb29t/f397e3vX19erq6q2trV+QriFrmZCwxPT09OLi4u3t7QFbkrOzs6urq+Hh4QNck/Dw8GCRr3+lvApflGOSr+fu8r7Q26W/z+zs7M7Ozr+/v93d3dPT0/L2+LCwsNjY2Ovr68TExNfX17m6uzV2n4mrwLPI1ViMrLe4ua/G1Pj6+8jX4ePq7zBznefn5+Dh4bbL18jJyVOIqfPz84+wxNvl7Dh4oD17ocTFxdjZ2bS2tqytrsjY4eHp7tTf5vf5+u/v79HR0cnJyba2tqG8zfz9/cLT3fb5+g9ilVKGp5e1x9vl66e+zPL192aSrgdek3aft2GQrV6Prjd0mvv8/KK6ydPU1DNymoKitdXg56a/z9/g4X+juJ6yvp2oriRrmNvc3fz8/eHl536crvb29+Xl5XicsoWfsN3e3/r7++zx9I2dp8jLzoeovGWPqc3X3+Xr74+ouJSzxq26wpKxxUt/oGOQrdXZ3PX4+cDK0N3m7La2twAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODA4M0Y1OEQ5Qzk3MEQ4RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3OTA5OUY3RTkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3OTA5OUY3RDkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDg4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAD/ACwAAAAAVgBWAEAI/wD/CQRAsKDBgwgTKlzIsKFDggL/PZxIsaLFixgbGlKjpeMHOBlDijRYCFDHkyhTaiE0sqXDNSpjdnQDkmKkBTJPslmTx+XCnFrQPWxzZiXBSECTpjyTxidBOI+UKh2AMc2InGqcTtSDBk/VA5CkdlSDRqtZgpOk1ll0ti3DRQtauJ1Lt67du3jz6jU4Rw7QT3sz4nEj1uOaQIEvykh6oWzFQBwLq8xw9gBQOY4Ltois0g8AWykfUWCYISebtncsS9ZyRi7FPH+kSkhcEQ1nqRcE0c5oIOaARruDax0onG7E4nYlIl/OvPnCFgvYOh/ZaEBMA9MrLqojdVL2hYIuSP8m+/0gmquFDzS9CAeNnsASpP55T7EFm9VaDtxpezvliPUWWYdfaD05dZ9MlC0UC3on2QKAKDKp4VpBaPiV0wFOpVHUgCrZQRAhrDHyEDpAnVUah1qogVht4gElA115rHFgTgtEUlEehIm1RnkHBbLGB5K54RWPBYEoFiCFEKlQH0AtMIeSD8EBZEcDGALllVhmSRtxWlLEZZdghinmmGSWGWYanADphpkHpfFjSm2weccnU6q0I5ml1CnTi2HKEIpUC4DpyYxKAaIlUZLJkeSVguBUmDFWYpkGd2KpEYtFm6xRx4ZafKCGG3YMWdcch0h1RpwULdJJYWwMMpcepQL8dYaHFQ1DqGSk7GdWfDkVg5EfKJ7kqlYp5ITdQ2j0UdAcwaJEjFZAicgQHDlqIQdBwMoEyR8ezDGKAZzKJK1LFsbERmYGpaFaSh62EdMBNZl3K0rX+sRIUmcYMMocbfwRlkyiEFSuBPEqdG9OWjHZbEdPErQGugz1JlMKZg2ysGcXVRvTbGbdQQqHbABXkR3hxnQIfW0NMm9OnXBQEaJKHeKdXXjYIcEAdZ5RxxqbWBRLf0DVASCUG0m2gG5XFlKuqahiaZJYbHgCpqNJhcInmIsB9UEpZcIU0wcG6Fqmuyh90MfQbBL2ASdos+n223DHLXdBys0N0XFyRxQQACH5BAUAAP8ALA4ADgA7ADsAQAjpAP8JHEiwoMGCGxKdOMiwocOHA3mU2EKxYkVXEDNq3Mix479eHkOKHEmSI5OSKFOqXMmy5cZMiSxWNOHSY5IjIBI8oajgTc2fK1MARUlrKEpeRpMqBZqqQsUnBJY2VCdNpkUHUhu6GGN1S46sEH1h6EEOrNmGSM9qPKk2Y9G2D4XCfQhyrt27ePPqXWlrVSy8oFQ52mIhL51LWWQOmRvIC42uWyjNjREF8pYXc48sgZzoLgYQDfhY5BInLwYYDLT96Le3tevXeHfB/udrNlvXskzBNiUL9m3XtWHLnk28uPHjyJMrX868ZEAAIfkEBQAA/wAsEQATABgAFQBACKAA/wkcSLCgEiQFE05osKWhw4cQtyRg8c9HjDERiShKyLHjv0oqIHLEYiaiyS0oNHkkmG2lS45xRDxp+FIgqignHRYkkyinSQWsBvoAwTBnAygvmbgwo4CGlDg1o/779WCL1IEnEDyUyuLUSZdvdPncSrCAhbEQHVVT9i8MPrQPaxUgeCQCH7QWinQEYy3nj1dJQWB0mOvNVYEBXMRgJzUgACH5BAUAAP8ALA4AHQAPABkAQAibAP8J/NdvoMGBe7YoXMjQYDOGEBU2eFHu4L8ZAQJAsvhL0kKLAyMynGDxlsgtjnAEGEjnwRaQA195bAiSxsktJgwmuGkJl0EHN7fwWXJkoJIfDBuYgbHR4BsFMA1S+hi1CU2QlUSCrHBTAZ2BfG7WMBjlpiqDJIImeCOQDpGgW7SB+Wejwc0GMXwMhCBSGwyLyK6Ie4ADxMqBAQEAIfkEBQAA/wAsEwAnABgAEgBACIoA/wkcSLBgQWAO4hgUuKWhw4cQt2ggWECRhQo0HEZBcOnGwo8LC5CIuKUeQZIot1jKBLKlDQsOE4BEMgtIjT18UgowmJJkEIFQiPSECGtiy6P/oDTYUgVpQU0oIHJzykoByp8Lhz68l1VrwxJdvVZo9Y9aFq8Po+goiAlRlKGJjDj9J4TMGwJIAwIAIfkEBQAA/wAsKgAeABcAEgBACKkA/wkcSJAggTc7hBQcWGKLw4cQIzq0dkSRwCpbGjRbyLEjqygSQ9KI4CPYPwEhtyjQURDYlSMdBUJJlHLLSF8EWzWsKTHBCoFGeIa0wuPkv2ARURyLyZTgDUQIQDqkkSidvo4nYAndgsJFwWSWtj7UBlNgELEQfQrUgPbhEydMBKJMyWdPDSCzkDQgEsLHPyP/JoQkQYBjmIHTBCZ42MRG04VxLgF7XDAgACH5BAUAAP8ALDwAHwANABgAQAiMAP9Fewbtn8GDCP9tWciQoZeDJhpKpHFQ4g8lCHFZktgwwT8YDzgujNLOIEMiORIiFHmrokiGzQxOeLkwjhSaW/YcxAAjRIQlDECs+GJySxREmFS6ZEgCo0qOEJ5ybFCyqMhlwt4kwEnCIASaUQzWwPmPjgKaFbAgwPnCoLslZxk+SUBPZRIMGJggDAgAIfkEBQAA/wAsMAAyABkAEgBACJ0A/wkcSPDfm1xbCip8h2OLw4cQI26xUEDhQHcMxGiwyNGiDQsSQzqkJBCSCxQit5xi0bElpj0hCTpkNhBaLT4pJSp4M/CImZwPdfHsCONBRAQnWiodqIjIQ47Silgc0gCoQ0kbCWpCadXhAzoD5VXo+jCRM4IBqJBtMMEiBgaOckZBpTRAQ4kqKi0dmMSFNmlbnoiIs9dimUCFCQYEACH5BAUAAP8ALB8ADgAZADsAQAjxAP8JHDgw1ipbBBMS5KNthZaHECFOUkixosWLGDNq3MixI8EcW0KK9EjgicgKqSw2GhARogGOWcQ5cXeEiT80HnPq3MnzorBpKHI6EElU5AMgCg2pgfgBTkYg5lq2/KQxywMYUrUQ2omo58ZmXsOKHUu2bMc3CkZ6dFVU7UYTbbckytTxRKINHdNw+qDFjcc0a/hGbKMx0CfBUtdkjMLAR9aHMjQ2AOFY6gKONLTBSBIREACPfCyJMxOPjNnTqFOrXs26tevXsC124MkiQUidcbgUzZmorccXcd1iRBScBhIlGocUzXKJjkcLWxypAkUxIAAh+QQFAAD/ACwRABMAGQAYAEAIugD/CRxIsOCdgggFtjmjpaHDhxC1yCkk8MkSDBHP2EnIkaOMUBETcgEBKaJJNbE6DuQTJYhKgmj6AHj5D0CpDw1pDvTExuRDhDYW+PRpzBDBLDgwDj3TRmcDBmB8aCk2U6dVhAW24ZjS4OocOVcLLqrz82ohQD5pCrow9ORAPG7aRvywJtDAGHIhHkhTUJqTvFrcwOloBcbQP3qchlDa8AKasAItaXPSBQ/kywK9BQCB7XI3BU+y8BEYEAAh+QQFAAD/ACwOAB0ADgAZAEAIlwD/CfwnaKBBgbu0KFy40KAshhAVhoN38F+NigLnHGqIkUnEhYwODvrIJESDgWnqKMT4T89Ghhh9fVRoYKCpmVrYoBnYB6cWECcF3umEIckRGBFQ8DmIZgTLgWtWPpUAEyOvjxV74RyRRqDHmegGpsCZYSAtn3LO/UtzxicPcf/gPJoZgEqWgRkgHgExpmIgcE5wWHliMCAAIfkEBQAA/wAsEgAoABsAEQBACIsA/wkcSLBgwTZntIwzSFCLw4cQI2oZwLAgAD1o8FTcWBBNwRZqJDr084/bnQMiUz4804Kjy3+xRkT8wlGlSDsMbYpUE8hgnjVsdC6I9LLoPzhuHsoxSjANSonrOJ4xMGpOmz+QVIqqqRPinIpdI5IUSCqsSDaNDA4KarYTB5d47EgY8GFlnTWbOAYEACH5BAUAAP8ALCkAHgAWAB4AQAi9AP8JHEiwIBw0YeIUFDhAi8OHECH6ABGFICEtZxgt3Mixo0eBLdhEHImBAY1/tv6JGulQTYuC8z7K3Hjt20yPkRawZGKyYCA1LEf6cKGAkMBIQUcmgWGFoK2IjyjcnEq1qkBQVgtuWlPnjMMkMajk47ioU1It7qYsHCbyrBZIMRoQ9OP2ISQXKAbOqfvwCL4sA+kGhfTHw5xRZZwA/mfnXxuWB+DMlPNQguSpANagycq5s+fPC+WVqPoGwdSAACH5BAUAAP8ALDoAHgAPABYAQAiPAPUA+EewoMGDWhIqXPgoz0F0CyP6IBgx4YE7B/+hkVNxIa2DUaYwAEGSwZQoFBWyWeMwY8qOGQx2jHgmjcEMM7WkKCisC4aOGLpo+aDGjR08LmUuZDMo6UxSGJXObFowZ0JiBA2csapFVkE0bHKaMsgoJxOD2XJOLCguBJifCTGACaHK5ZMoDaI8+SfpX0AAIfkEBQAA/wAsMQAuABgAFQBACKkA/wkcSLCgQYFMCOZxo6Whw4cQ1xB8AAZiQ0CFDmo0iOaCRYi8iFgL8PGjGzwb/yVIyXJjmhFaDmrpdTDPn5IQJQjcZw8STotq0BAsweOnlguCWD7BUVFLnUUtowo0sNEXSwAMHQ50uGujnTNGD+kx2AasUS2HJhGkoOaswzppBHYQs8JtwwVJCU4JkMTomTYaVYTo+5GNp5ZZlpB0GEqGVIIJQvAD8DggADs=);
background-size:43px 43px;
}
.ss-upload .loader{
background-image:url(data:image/gif;base64,R0lGODlhVgBWAPf/AP///5qkqnigubi4uO3y9fD09tTU1MrKyi1xnCZtmhlnl7q6ulWDnxFilWWTsSlvm1WJqk+AnsbGxpa0x+bm5h1pmEqDpsPDw6Woq83Nzc3a46nC0fLy8snW3uTk5K6urmuNomGJoXSet7S0tFGHqR9qmG2ZtNHe5hVklq6vsAlelJWhqdjj6enp6X2WpYOnvoWZpnOSpdvb28zU2ARck566y+nv87nN2UR6nI2uwqzE0ubt8Ymbp7/Gy6mrrEF9o8vZ4nuiuvz9/pu3yQ5hlevw85KyxaCmqmqXs6usrPr7/Ep9namqq0eBpVyGoAZdk5q2yAxglE2FpzBxmTp2m4qswSJql22Vraq0uwJbkqysrABakjN1noadrHGatO3v8ZGfqPX29k2Coh1olufs78/R0j94nLKysvf39/z8/Le3t9DQ0LGxsePj48jIyN/o7fr6+v7+/7y8vPHx8fb4+r29veDg4P7+/vv7+/n5+fj4+ER/pAFaktLS0tnZ2cXFxcDAwP39/fb29t/f397e3vX19erq6q2trV+QriFrmZCwxPT09OLi4u3t7QFbkrOzs6urq+Hh4QNck/Dw8GCRr3+lvApflGOSr+fu8r7Q26W/z+zs7M7Ozr+/v93d3dPT0/L2+LCwsNjY2Ovr68TExNfX17m6uzV2n4mrwLPI1ViMrLe4ua/G1Pj6+8jX4ePq7zBznefn5+Dh4bbL18jJyVOIqfPz84+wxNvl7Dh4oD17ocTFxdjZ2bS2tqytrsjY4eHp7tTf5vf5+u/v79HR0cnJyba2tqG8zfz9/cLT3fb5+g9ilVKGp5e1x9vl66e+zPL192aSrgdek3aft2GQrV6Prjd0mvv8/KK6ydPU1DNymoKitdXg56a/z9/g4X+juJ6yvp2oriRrmNvc3fz8/eHl536crvb29+Xl5XicsoWfsN3e3/r7++zx9I2dp8jLzoeovGWPqc3X3+Xr74+ouJSzxq26wpKxxUt/oGOQrdXZ3PX4+cDK0N3m7La2twAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODA4M0Y1OEQ5Qzk3MEQ4RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3OTA5OUY3RTkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3OTA5OUY3RDkzRjIxMUU0QjVEM0JDM0U0RkMyRUM5NyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDg4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgwODNGNThEOUM5NzBEOEUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQFAAD/ACwAAAAAVgBWAEAI/wD/CQRAsKDBgwgTKlzIsKFDggL/PZxIsaLFixgbGlKjpeMHOBlDijRYCFDHkyhTaiE0sqXDNSpjdnQDkmKkBTJPslmTx+XCnFrQPWxzZiXBSECTpjyTxidBOI+UKh2AMc2InGqcTtSDBk/VA5CkdlSDRqtZgpOk1ll0ti3DRQtauJ1Lt67du3jz6jU4Rw7QT3sz4nEj1uOaQIEvykh6oWzFQBwLq8xw9gBQOY4Ltois0g8AWykfUWCYISebtncsS9ZyRi7FPH+kSkhcEQ1nqRcE0c5oIOaARruDax0onG7E4nYlIl/OvPnCFgvYOh/ZaEBMA9MrLqojdVL2hYIuSP8m+/0gmquFDzS9CAeNnsASpP55T7EFm9VaDtxpezvliPUWWYdfaD05dZ9MlC0UC3on2QKAKDKp4VpBaPiV0wFOpVHUgCrZQRAhrDHyEDpAnVUah1qogVht4gElA115rHFgTgtEUlEehIm1RnkHBbLGB5K54RWPBYEoFiCFEKlQH0AtMIeSD8EBZEcDGALllVhmSRtxWlLEZZdghinmmGSWGWYanADphpkHpfFjSm2weccnU6q0I5ml1CnTi2HKEIpUC4DpyYxKAaIlUZLJkeSVguBUmDFWYpkGd2KpEYtFm6xRx4ZafKCGG3YMWdcch0h1RpwULdJJYWwMMpcepQL8dYaHFQ1DqGSk7GdWfDkVg5EfKJ7kqlYp5ITdQ2j0UdAcwaJEjFZAicgQHDlqIQdBwMoEyR8ezDGKAZzKJK1LFsbERmYGpaFaSh62EdMBNZl3K0rX+sRIUmcYMMocbfwRlkyiEFSuBPEqdG9OWjHZbEdPErQGugz1JlMKZg2ysGcXVRvTbGbdQQqHbABXkR3hxnQIfW0NMm9OnXBQEaJKHeKdXXjYIcEAdZ5RxxqbWBRLf0DVASCUG0m2gG5XFlKuqahiaZJYbHgCpqNJhcInmIsB9UEpZcIU0wcG6Fqmuyh90MfQbBL2ASdos+n223DHLXdBys0N0XFyRxQQACH5BAUAAP8ALA4ADgA7ADsAQAjpAP8JHEiwoMGCGxKdOMiwocOHA3mU2EKxYkVXEDNq3Mix479eHkOKHEmSI5OSKFOqXMmy5cZMiSxWNOHSY5IjIBI8oajgTc2fK1MARUlrKEpeRpMqBZqqQsUnBJY2VCdNpkUHUhu6GGN1S46sEH1h6EEOrNmGSM9qPKk2Y9G2D4XCfQhyrt27ePPqXWlrVSy8oFQ52mIhL51LWWQOmRvIC42uWyjNjREF8pYXc48sgZzoLgYQDfhY5BInLwYYDLT96Le3tevXeHfB/udrNlvXskzBNiUL9m3XtWHLnk28uPHjyJMrX868ZEAAIfkEBQAA/wAsEQATABgAFQBACKAA/wkcSLCgEiQFE05osKWhw4cQtyRg8c9HjDERiShKyLHjv0oqIHLEYiaiyS0oNHkkmG2lS45xRDxp+FIgqignHRYkkyinSQWsBvoAwTBnAygvmbgwo4CGlDg1o/779WCL1IEnEDyUyuLUSZdvdPncSrCAhbEQHVVT9i8MPrQPaxUgeCQCH7QWinQEYy3nj1dJQWB0mOvNVYEBXMRgJzUgACH5BAUAAP8ALA4AHQAPABkAQAibAP8J/NdvoMGBe7YoXMjQYDOGEBU2eFHu4L8ZAQJAsvhL0kKLAyMynGDxlsgtjnAEGEjnwRaQA195bAiSxsktJgwmuGkJl0EHN7fwWXJkoJIfDBuYgbHR4BsFMA1S+hi1CU2QlUSCrHBTAZ2BfG7WMBjlpiqDJIImeCOQDpGgW7SB+Wejwc0GMXwMhCBSGwyLyK6Ie4ADxMqBAQEAIfkEBQAA/wAsEwAnABgAEgBACIoA/wkcSLBgQWAO4hgUuKWhw4cQt2ggWECRhQo0HEZBcOnGwo8LC5CIuKUeQZIot1jKBLKlDQsOE4BEMgtIjT18UgowmJJkEIFQiPSECGtiy6P/oDTYUgVpQU0oIHJzykoByp8Lhz68l1VrwxJdvVZo9Y9aFq8Po+goiAlRlKGJjDj9J4TMGwJIAwIAIfkEBQAA/wAsKgAeABcAEgBACKkA/wkcSJAggTc7hBQcWGKLw4cQIzq0dkSRwCpbGjRbyLEjqygSQ9KI4CPYPwEhtyjQURDYlSMdBUJJlHLLSF8EWzWsKTHBCoFGeIa0wuPkv2ARURyLyZTgDUQIQDqkkSidvo4nYAndgsJFwWSWtj7UBlNgELEQfQrUgPbhEydMBKJMyWdPDSCzkDQgEsLHPyP/JoQkQYBjmIHTBCZ42MRG04VxLgF7XDAgACH5BAUAAP8ALDwAHwANABgAQAiMAP9Fewbtn8GDCP9tWciQoZeDJhpKpHFQ4g8lCHFZktgwwT8YDzgujNLOIEMiORIiFHmrokiGzQxOeLkwjhSaW/YcxAAjRIQlDECs+GJySxREmFS6ZEgCo0qOEJ5ybFCyqMhlwt4kwEnCIASaUQzWwPmPjgKaFbAgwPnCoLslZxk+SUBPZRIMGJggDAgAIfkEBQAA/wAsMAAyABkAEgBACJ0A/wkcSPDfm1xbCip8h2OLw4cQI26xUEDhQHcMxGiwyNGiDQsSQzqkJBCSCxQit5xi0bElpj0hCTpkNhBaLT4pJSp4M/CImZwPdfHsCONBRAQnWiodqIjIQ47Silgc0gCoQ0kbCWpCadXhAzoD5VXo+jCRM4IBqJBtMMEiBgaOckZBpTRAQ4kqKi0dmMSFNmlbnoiIs9dimUCFCQYEACH5BAUAAP8ALB8ADgAZADsAQAjxAP8JHDgw1ipbBBMS5KNthZaHECFOUkixosWLGDNq3MixI8EcW0KK9EjgicgKqSw2GhARogGOWcQ5cXeEiT80HnPq3MnzorBpKHI6EElU5AMgCg2pgfgBTkYg5lq2/KQxywMYUrUQ2omo58ZmXsOKHUu2bMc3CkZ6dFVU7UYTbbckytTxRKINHdNw+qDFjcc0a/hGbKMx0CfBUtdkjMLAR9aHMjQ2AOFY6gKONLTBSBIREACPfCyJMxOPjNnTqFOrXs26tevXsC124MkiQUidcbgUzZmorccXcd1iRBScBhIlGocUzXKJjkcLWxypAkUxIAAh+QQFAAD/ACwRABMAGQAYAEAIugD/CRxIsOCdgggFtjmjpaHDhxC1yCkk8MkSDBHP2EnIkaOMUBETcgEBKaJJNbE6DuQTJYhKgmj6AHj5D0CpDw1pDvTExuRDhDYW+PRpzBDBLDgwDj3TRmcDBmB8aCk2U6dVhAW24ZjS4OocOVcLLqrz82ohQD5pCrow9ORAPG7aRvywJtDAGHIhHkhTUJqTvFrcwOloBcbQP3qchlDa8AKasAItaXPSBQ/kywK9BQCB7XI3BU+y8BEYEAAh+QQFAAD/ACwOAB0ADgAZAEAIlwD/CfwnaKBBgbu0KFy40KAshhAVhoN38F+NigLnHGqIkUnEhYwODvrIJESDgWnqKMT4T89Ghhh9fVRoYKCpmVrYoBnYB6cWECcF3umEIckRGBFQ8DmIZgTLgWtWPpUAEyOvjxV74RyRRqDHmegGpsCZYSAtn3LO/UtzxicPcf/gPJoZgEqWgRkgHgExpmIgcE5wWHliMCAAIfkEBQAA/wAsEgAoABsAEQBACIsA/wkcSLBgwTZntIwzSFCLw4cQI2oZwLAgAD1o8FTcWBBNwRZqJDr084/bnQMiUz4804Kjy3+xRkT8wlGlSDsMbYpUE8hgnjVsdC6I9LLoPzhuHsoxSjANSonrOJ4xMGpOmz+QVIqqqRPinIpdI5IUSCqsSDaNDA4KarYTB5d47EgY8GFlnTWbOAYEACH5BAUAAP8ALCkAHgAWAB4AQAi9AP8JHEiwIBw0YeIUFDhAi8OHECH6ABGFICEtZxgt3Mixo0eBLdhEHImBAY1/tv6JGulQTYuC8z7K3Hjt20yPkRawZGKyYCA1LEf6cKGAkMBIQUcmgWGFoK2IjyjcnEq1qkBQVgtuWlPnjMMkMajk47ioU1It7qYsHCbyrBZIMRoQ9OP2ISQXKAbOqfvwCL4sA+kGhfTHw5xRZZwA/mfnXxuWB+DMlPNQguSpANagycq5s+fPC+WVqPoGwdSAACH5BAUAAP8ALDoAHgAPABYAQAiPAPUA+EewoMGDWhIqXPgoz0F0CyP6IBgx4YE7B/+hkVNxIa2DUaYwAEGSwZQoFBWyWeMwY8qOGQx2jHgmjcEMM7WkKCisC4aOGLpo+aDGjR08LmUuZDMo6UxSGJXObFowZ0JiBA2csapFVkE0bHKaMsgoJxOD2XJOLCguBJifCTGACaHK5ZMoDaI8+SfpX0AAIfkEBQAA/wAsMQAuABgAFQBACKkA/wkcSLCgQYFMCOZxo6Whw4cQ1xB8AAZiQ0CFDmo0iOaCRYi8iFgL8PGjGzwb/yVIyXJjmhFaDmrpdTDPn5IQJQjcZw8STotq0BAsweOnlguCWD7BUVFLnUUtowo0sNEXSwAMHQ50uGujnTNGD+kx2AasUS2HJhGkoOaswzppBHYQs8JtwwVJCU4JkMTomTYaVYTo+5GNp5ZZlpB0GEqGVIIJQvAD8DggADs=);
background-size:43px 43px;
}
}
.accordion__block{
margin-top:.6154rem;
}

View File

@ -56,9 +56,7 @@ require('../legacy/ModelAdmin.js');
// Legacy form fields
// Fields used by core legacy UIs, or available to users
// To do: determine better way of using webpack to pull in optional javascript
require('../legacy/AssetUploadField.js');
require('../legacy/ConfirmedPasswordField.js');
require('../legacy/UploadField.js');
require('../legacy/SelectionGroup.js');
require('../legacy/DateField.js');
require('../legacy/ToggleCompositeField.js');

View File

@ -51,10 +51,4 @@ require('../../../thirdparty/jstree/jquery.jstree.js');
require('../../../thirdparty/jquery-hoverIntent/jquery.hoverIntent.js');
require('../../../thirdparty/jquery-changetracker/lib/jquery.changetracker.js');
// TODO Move UploadField.js deps into the file once figuring out why uploads fail then
require('imports?define=>false&this=>window!blueimp-load-image/load-image.js');
require('blueimp-file-upload/jquery.iframe-transport.js');
require('blueimp-file-upload/cors/jquery.xdr-transport.js');
require('blueimp-file-upload/jquery.fileupload.js');
require('blueimp-file-upload/jquery.fileupload-ui.js');
require('chosen-js');

View File

@ -1,29 +0,0 @@
import $ from 'jQuery';
$('.ss-assetuploadfield').entwine({
onmatch: function() {
this._super();
// Hide the "second step" part until we're actually uploading
this.find('.ss-uploadfield-editandorganize').hide();
},
onunmatch: function() {
this._super();
},
onfileuploadadd: function(e) {
this.find('.ss-uploadfield-editandorganize').show();
},
onfileuploadstart: function(e) {
this.find('.ss-uploadfield-editandorganize').show();
}
});
$('.ss-uploadfield-view-allowed-extensions .toggle').entwine({
onclick: function(e) {
var allowedExt = this.closest('.ss-uploadfield-view-allowed-extensions'),
minHeightVal = this.closest('.ui-tabs-panel').height() + 20;
allowedExt.toggleClass('active');
allowedExt.find('.toggle-content').css('minHeight', minHeightVal);
}
});

View File

@ -806,20 +806,6 @@ $.entwine('ss', function($) {
el.prop('checked', selected).change();
} else if(el.is(':radio')) {
el.val([selected]).change();
} else if(fieldName == 'file') {
// UploadField inputs have a slightly different naming convention
el = this.find(':input[name="' + fieldName + '[Uploads][]"]');
// We need the UploadField "field", not just the input
el = el.parents('.ss-uploadfield');
// We have to wait for the UploadField to initialise
(function attach(el, selected) {
if( ! el.getConfig()) {
setTimeout(function(){ attach(el, selected); }, 50);
} else {
el.attachFiles([selected]);
}
})(el, selected);
} else {
el.val(selected).change();
}
@ -947,654 +933,6 @@ $.entwine('ss', function($) {
}
});
/**
* Responsible for inserting media files, although only images are supported so far.
* Allows to select one or more files, and load form fields for each file via ajax.
* This allows us to tailor the form fields to the file type (e.g. different ones for images and flash),
* as well as add new form fields via framework extensions.
* The inputs on each of those files are used for constructing the HTML to insert into
* the rich text editor. Also allows editing the properties of existing files if any are selected in the editor.
* Note: Not each file has a representation on the webserver filesystem, supports insertion and editing
* of remove files as well.
*/
$('form.htmleditorfield-mediaform').entwine({
toggleCloseButton: function(){
var updateExisting = Boolean(this.find('.ss-htmleditorfield-file').length);
this.find('.overview .action-delete')[updateExisting ? 'hide' : 'show']();
},
onsubmit: function() {
this.modifySelection(function(ed){
this.find('.ss-htmleditorfield-file').each(function() {
$(this).insertHTML(ed);
});
});
this.getDialog().close();
return false;
},
updateFromEditor: function() {
var self = this, node = this.getSelection();
// TODO Depends on managed mime type
if(node.is('img')) {
var idOrUrl = node.data('id') || node.data('url') || node.attr('src');
this.showFileView(idOrUrl).done(function(filefield) {
filefield.updateFromNode(node);
self.toggleCloseButton();
self.redraw();
});
}
this.redraw();
},
redraw: function(updateExisting) {
this._super();
var node = this.getSelection(),
hasItems = Boolean(this.find('.ss-htmleditorfield-file').length),
editingSelected = node.is('img'),
insertingURL = this.hasClass('insertingURL'),
header = this.find('.header-edit');
// Only show second step if files are selected
header[(hasItems) ? 'show' : 'hide']();
// Disable "insert" button if no files are selected
this.closest('.ui-dialog')
.find('.ui-dialog-buttonpane .media-insert')
.toggleClass('ui-state-disabled', !hasItems)
.prop('disabled', !hasItems);
// Hide file selection and step labels when editing an existing file
this.find('.htmleditorfield-default-panel')[editingSelected || insertingURL ? 'hide' : 'show']();
this.find('.htmleditorfield-web-panel')[editingSelected || !insertingURL ? 'hide' : 'show']();
var mediaFormHeading = this.find('.htmleditorfield-mediaform-heading.insert');
if (editingSelected) {
//When editing details of a file
mediaFormHeading.hide();
} else if (insertingURL) {
//When inserting an image from a URL
mediaFormHeading
.show()
.text(i18n._t("HtmlEditorField.INSERTURL"))
.prepend('<button class="back-button font-icon-left-open no-text" title="' + i18n._t("HtmlEditorField.BACK") + '"></button>');
this.find('.htmleditorfield-web-panel input.remoteurl').focus();
} else {
//Default view when modal is opened
mediaFormHeading
.show()
.text(i18n._t("HtmlEditorField.INSERTFROM"))
.find('.back-button').remove();
}
// TODO Way too much knowledge on UploadField internals, use viewfile URL directly instead
this.find('.htmleditorfield-mediaform-heading.update')[editingSelected ? 'show' : 'hide']();
this.find('.ss-uploadfield-item-actions')[editingSelected ? 'hide' : 'show']();
this.find('.ss-uploadfield-item-name')[editingSelected ? 'hide' : 'show']();
this.find('.ss-uploadfield-item-preview')[editingSelected ? 'hide' : 'show']();
this.find('.btn-toolbar .media-update')[editingSelected ? 'show' : 'hide']();
this.find('.ss-uploadfield-item-editform').toggleEditForm(editingSelected);
this.find('.htmleditorfield-from-cms .field.treedropdown').css('left', $('.htmleditorfield-mediaform-heading:visible').outerWidth());
this.closest('.ui-dialog').addClass('ss-uploadfield-dropzone');
this.closest('.ui-dialog')
.find('.ui-dialog-buttonpane .media-insert .ui-button-text')
.text([editingSelected ? i18n._t(
'HtmlEditorField.UPDATE',
'Update'
) : i18n._t(
'HtmlEditorField.INSERT',
'Insert'
)]);
},
resetFields: function() {
this.find('.ss-htmleditorfield-file').remove(); // Remove any existing views
this.find('.ss-gridfield-items .ui-selected').removeClass('ui-selected'); // Unselect all items
this.find('li.ss-uploadfield-item').remove(); // Remove all selected items
this.redraw();
this._super();
},
getFileView: function(idOrUrl) {
return this.find('.ss-htmleditorfield-file[data-id=' + idOrUrl + ']');
},
showFileView: function(idOrUrl) {
var self = this, params = (Number(idOrUrl) == idOrUrl) ? {ID: idOrUrl} : {FileURL: idOrUrl};
var item = $('<div class="ss-htmleditorfield-file loading" />');
this.find('.content-edit').prepend(item);
var dfr = $.Deferred();
$.ajax({
url: $.path.addSearchParams(this.attr('action').replace(/MediaForm/, 'viewfile'), params),
success: function(html, status, xhr) {
var newItem = $(html).filter('.ss-htmleditorfield-file');
item.replaceWith(newItem);
self.redraw();
dfr.resolve(newItem);
},
error: function() {
item.remove();
dfr.reject();
}
});
return dfr.promise();
}
});
//When 'Insert from URL' button is clicked
$('form.htmleditorfield-mediaform div.ss-upload .upload-url').entwine({
onclick: function (event) {
event.preventDefault();
var form = this.closest('form');
form.addClass('insertingURL');
form.redraw();
}
});
//When back button is clicked while inserting URL
$('form.htmleditorfield-mediaform .htmleditorfield-mediaform-heading .back-button').entwine({
onclick: function() {
var form = this.closest('form');
form.removeClass('insertingURL');
form.redraw();
}
});
$('form.htmleditorfield-mediaform .ss-gridfield-items').entwine({
onselectableselected: function(e, ui) {
var
form = this.closest('form'),
item = $(ui.selected);
// Suppress selection of non-items or empty gridfield placeholder
if(!item.hasClass('ss-gridfield-item') || item.hasClass('ss-gridfield-no-items')) {
item.removeClass('ui-selected')
return false;
}
form.closest('form').showFileView(item.data('id'));
form.redraw();
form.parent().trigger('scroll');
},
onselectableunselected: function(e, ui) {
var form = this.closest('form'), item = $(ui.unselected);
if(!item.is('.ss-gridfield-item')) return;
form.getFileView(item.data('id')).remove();
form.redraw();
}
});
/**
* Show the second step after uploading an image
*/
$('form.htmleditorfield-form.htmleditorfield-mediaform div.ss-assetuploadfield').entwine({
//the UploadField div.ss-uploadfield-editandorganize is hidden in CSS,
// because we use the detail view for each individual file instead
onfileuploadstop: function(e) {
var form = this.closest('form');
//update the editFields to show those Files that are newly uploaded
var editFieldIDs = [];
form.find('div.content-edit').find('div.ss-htmleditorfield-file').each(function(){
//get the uploaded file ID when this event triggers, signaling the upload has compeleted successfully
editFieldIDs.push($(this).data('id'));
});
// we only want this .ss-uploadfield-files - else we get all ss-uploadfield-files wich include the ones not related to #tinymce insertmedia
var uploadedFiles = $('.ss-uploadfield-files', this).children('.ss-uploadfield-item');
uploadedFiles.each(function(){
var uploadedID = $(this).data('fileid');
if (uploadedID && $.inArray(uploadedID, editFieldIDs) == -1) {
//trigger the detail view for filling out details about the file we are about to insert into TinyMCE
$(this).remove(); // Remove successfully added item from the queue
form.showFileView(uploadedID);
}
});
form.parent().trigger('scroll');
form.redraw();
}
});
$('form.htmleditorfield-form.htmleditorfield-mediaform input.remoteurl').entwine({
onadd: function() {
this._super();
this.validate();
},
onkeyup: function() {
this.validate();
},
onchange: function() {
this.validate();
},
getAddButton: function() {
return this.closest('.CompositeField').find('button.add-url');
},
validate: function() {
let val = this.val(),
orig = val,
hasVal = !!val;
val = $.trim(val);
val = val.replace(/^https?:\/\//i, '');
if (orig !== val) {
this.val(val);
}
this.getAddButton().prop('disabled', !hasVal);
return hasVal;
}
});
/**
* Show the second step after adding a URL
*/
$('form.htmleditorfield-form.htmleditorfield-mediaform .add-url').entwine({
getURLField: function() {
return this.closest('.CompositeField').find('input.remoteurl');
},
onclick: function(e) {
var urlField = this.getURLField(), container = this.closest('.CompositeField'), form = this.closest('form');
if (urlField.validate()) {
container.addClass('loading');
form.showFileView('http://' + urlField.val()).done(function() {
container.removeClass('loading');
form.parent().trigger('scroll');
});
form.redraw();
}
return false;
}
});
/**
* Represents a single selected file, together with a set of form fields to edit its properties.
* Overload this based on the media type to determine how the HTML should be created.
*/
$('form.htmleditorfield-mediaform .ss-htmleditorfield-file').entwine({
/**
* @return {Object} Map of HTML attributes which can be set on the created DOM node.
*/
getAttributes: function() {
},
/**
* @return {Object} Map of additional properties which can be evaluated
* by the specific media type.
*/
getExtraData: function() {
},
/**
* @return {String} HTML suitable for insertion into the rich text editor
*/
getHTML: function() {
// Assumes UploadField markup structure
return $('<div>').append(
$('<a/>').attr({href: this.data('url')}).text(this.find('.name').text())
).html();
},
/**
* Insert updated HTML content into the rich text editor
*/
insertHTML: function(ed) {
// Insert content
ed.replaceContent(this.getHTML());
},
/**
* Updates the form values from an existing node in the editor.
*
* @param {DOMElement}
*/
updateFromNode: function(node) {
},
/**
* Transforms values set on the dimensions form fields based on two constraints:
* An aspect ration, and max width/height values. Writes back to the field properties as required.
*
* @param {String} The dimension to constrain the other value by, if any ("Width" or "Height")
* @param {Int} Optional max width
* @param {Int} Optional max height
*/
updateDimensions: function(constrainBy, maxW, maxH) {
var widthEl = this.find(':input[name=Width]'),
heightEl = this.find(':input[name=Height]'),
w = widthEl.val(),
h = heightEl.val(),
aspect;
// Proportionate updating of heights, using the original values
if(w && h) {
if(constrainBy) {
aspect = heightEl.getOrigVal() / widthEl.getOrigVal();
// Uses floor() and ceil() to avoid both fields constantly lowering each other's values in rounding situations
if(constrainBy == 'Width') {
if(maxW && w > maxW) w = maxW;
h = Math.floor(w * aspect);
} else if(constrainBy == 'Height') {
if(maxH && h > maxH) h = maxH;
w = Math.ceil(h / aspect);
}
} else {
if(maxW && w > maxW) w = maxW;
if(maxH && h > maxH) h = maxH;
}
widthEl.val(w);
heightEl.val(h);
}
}
});
$('form.htmleditorfield-mediaform .ss-htmleditorfield-file.image').entwine({
getAttributes: function() {
var width = this.find(':input[name=Width]').val(),
height = this.find(':input[name=Height]').val();
return {
'src' : this.find(':input[name=URL]').val(),
'alt' : this.find(':input[name=AltText]').val(),
'width' : width ? parseInt(width, 10) : null,
'height' : height ? parseInt(height, 10) : null,
'title' : this.find(':input[name=Title]').val(),
'class' : this.find(':input[name=CSSClass]').val(),
'data-id' : this.find(':input[name=FileID]').val()
};
},
getExtraData: function() {
return {
'CaptionText': this.find(':input[name=CaptionText]').val()
};
},
getHTML: function() {
/* NOP */
},
/**
* Logic similar to TinyMCE 'advimage' plugin, insertAndClose() method.
*/
insertHTML: function(ed) {
var form = this.closest('form');
var node = form.getSelection();
if (!ed) ed = form.getEditor();
// Get the attributes & extra data
var attrs = this.getAttributes(), extraData = this.getExtraData();
// Find the element we are replacing - either the img, it's wrapper parent, or nothing (if creating)
var replacee = (node && node.is('img')) ? node : null;
if (replacee && replacee.parent().is('.captionImage')) replacee = replacee.parent();
// Find the img node - either the existing img or a new one, and update it
var img = (node && node.is('img')) ? node : $('<img />');
img.attr(attrs);
// Any existing figure or caption node
var container = img.parent('.captionImage'), caption = container.find('.caption');
// If we've got caption text, we need a wrapping div.captionImage and sibling p.caption
if (extraData.CaptionText) {
if (!container.length) {
container = $('<div></div>');
}
container.attr('class', 'captionImage '+attrs['class']).css('width', attrs.width);
if (!caption.length) {
caption = $('<p class="caption"></p>').appendTo(container);
}
caption.attr('class', 'caption '+attrs['class']).text(extraData.CaptionText);
}
// Otherwise forget they exist
else {
container = caption = null;
}
// The element we are replacing the replacee with
var replacer = container ? container : img;
// If we're replacing something, and it's not with itself, do so
if (replacee && replacee.not(replacer).length) {
replacee.replaceWith(replacer);
}
// If we have a wrapper element, make sure the img is the first child - img might be the
// replacee, and the wrapper the replacer, and we can't do this till after the replace has happened
if (container) {
container.prepend(img);
}
// If we don't have a replacee, then we need to insert the whole HTML
if (!replacee) {
// Otherwise insert the whole HTML content
ed.repaint();
ed.insertContent($('<div />').append(replacer).html(), {skip_undo : 1});
}
ed.addUndo();
ed.repaint();
},
updateFromNode: function(node) {
this.find(':input[name=AltText]').val(node.attr('alt'));
this.find(':input[name=Title]').val(node.attr('title'));
this.find(':input[name=CSSClass]').val(node.attr('class'));
this.find(':input[name=Width]').val(node.width());
this.find(':input[name=Height]').val(node.height());
this.find(':input[name=CaptionText]').val(node.siblings('.caption:first').text());
this.find(':input[name=FileID]').val(node.data('id'));
}
});
/**
* Insert a flash object tag into the content.
* Requires the 'media' plugin for serialization of tags into <img> placeholders.
*/
$('form.htmleditorfield-mediaform .ss-htmleditorfield-file.flash').entwine({
getAttributes: function() {
var width = this.find(':input[name=Width]').val(),
height = this.find(':input[name=Height]').val();
return {
'src' : this.find(':input[name=URL]').val(),
'width' : width ? parseInt(width, 10) : null,
'height' : height ? parseInt(height, 10) : null,
'data-fileid' : this.find(':input[name=FileID]').val()
};
},
getHTML: function() {
var attrs = this.getAttributes();
// Emulate serialization from 'media' plugin
var el = tinyMCE.activeEditor.plugins.media.dataToImg({
'type': 'flash',
'width': attrs.width,
'height': attrs.height,
'params': {'src': attrs.src},
'video': {'sources': []}
});
return $('<div />').append(el).html(); // Little hack to get outerHTML string
},
updateFromNode: function(node) {
// TODO Not implemented
}
});
/**
* Insert an Embed object tag into the content.
* Requires the 'media' plugin for serialization of tags into <img> placeholders.
*/
$('form.htmleditorfield-mediaform .ss-htmleditorfield-file.embed').entwine({
getAttributes: function() {
var width = this.find(':input[name=Width]').val(),
height = this.find(':input[name=Height]').val();
return {
'src' : this.find('.thumbnail-preview').attr('src'),
'width' : width ? parseInt(width, 10) : null,
'height' : height ? parseInt(height, 10) : null,
'class' : this.find(':input[name=CSSClass]').val(),
'alt' : this.find(':input[name=AltText]').val(),
'title' : this.find(':input[name=Title]').val(),
'data-fileid' : this.find(':input[name=FileID]').val()
};
},
getExtraData: function() {
var width = this.find(':input[name=Width]').val(),
height = this.find(':input[name=Height]').val();
return {
'CaptionText': this.find(':input[name=CaptionText]').val(),
'Url': this.find(':input[name=URL]').val(),
'thumbnail': this.find('.thumbnail-preview').attr('src'),
'width' : width ? parseInt(width, 10) : null,
'height' : height ? parseInt(height, 10) : null,
'cssclass': this.find(':input[name=CSSClass]').val()
};
},
getHTML: function() {
var el,
attrs = this.getAttributes(),
extraData = this.getExtraData(),
// imgEl = $('<img id="_ss_tmp_img" />');
imgEl = $('<img />').attr(attrs).addClass('ss-htmleditorfield-file embed');
$.each(extraData, function (key, value) {
imgEl.attr('data-' + key, value);
});
if(extraData.CaptionText) {
el = $('<div style="width: ' + attrs['width'] + 'px;" class="captionImage ' + attrs['class'] + '"><p class="caption">' + extraData.CaptionText + '</p></div>').prepend(imgEl);
} else {
el = imgEl;
}
return $('<div />').append(el).html(); // Little hack to get outerHTML string
},
updateFromNode: function(node) {
this.find(':input[name=AltText]').val(node.attr('alt'));
this.find(':input[name=Title]').val(node.attr('title'));
this.find(':input[name=Width]').val(node.width());
this.find(':input[name=Height]').val(node.height());
this.find(':input[name=Title]').val(node.attr('title'));
this.find(':input[name=CSSClass]').val(node.data('cssclass'));
this.find(':input[name=FileID]').val(node.data('fileid'));
}
});
$('form.htmleditorfield-mediaform .ss-htmleditorfield-file .dimensions :input').entwine({
OrigVal: null,
onmatch: function () {
this._super();
this.setOrigVal(parseInt(this.val(), 10));
},
onunmatch: function() {
this._super();
},
onfocusout: function(e) {
this.closest('.ss-htmleditorfield-file').updateDimensions(this.attr('name'));
}
});
/**
* Deselect item and remove the 'edit' view
*/
$('form.htmleditorfield-mediaform .ss-uploadfield-item .ss-uploadfield-item-cancel').entwine({
onclick: function(e) {
var form = this.closest('form'), file = this.closest('ss-uploadfield-item');
form.find('.ss-gridfield-item[data-id=' + file.data('id') + ']').removeClass('ui-selected');
this.closest('.ss-uploadfield-item').remove();
form.redraw();
e.preventDefault();
}
});
$('div.ss-assetuploadfield .ss-uploadfield-item-edit, div.ss-assetuploadfield .ss-uploadfield-item-name').entwine({
getEditForm: function() {
return this.closest('.ss-uploadfield-item').find('.ss-uploadfield-item-editform');
},
fromEditForm: {
onchange: function(e){
var form = $(e.target);
form.removeClass('edited'); //so edited class is only there once
form.addClass('edited');
}
},
onclick: function(e) {
var editForm = this.getEditForm();
// Make sure we're in an HtmlEditorField here, or fall-back to _super(). HtmlEditorField with
// AssetUploadField doesn't use iframes, so needs its own toggleEditForm() logic
if (this.closest('.ss-uploadfield-item').hasClass('ss-htmleditorfield-file')) {
editForm.parent('ss-uploadfield-item').removeClass('ui-state-warning');
editForm.toggleEditForm();
e.preventDefault(); // Avoid a form submit
return false; // Avoid duplication from button
}
this._super(e);
}
});
$('div.ss-assetuploadfield .ss-uploadfield-item-editform').entwine({
toggleEditForm: function(bool) {
var itemInfo = this.prev('.ss-uploadfield-item-info'), status = itemInfo.find('.ss-uploadfield-item-status');
var text="";
if(bool === true || (bool !== false && this.height() === 0)) {
text = i18n._t('UploadField.Editing', "Editing ...");
this.height('auto');
itemInfo.find('.toggle-details-icon').addClass('opened');
status.removeClass('ui-state-success-text').removeClass('ui-state-warning-text');
} else {
this.height(0);
itemInfo.find('.toggle-details-icon').removeClass('opened');
if(!this.hasClass('edited')){
text = i18n._t('UploadField.NOCHANGES', 'No Changes');
status.addClass('ui-state-success-text');
}else{
text = i18n._t('UploadField.CHANGESSAVED', 'Changes Made');
this.removeClass('edited');
status.addClass('ui-state-success-text');
}
}
status.attr('title',text).text(text);
}
});
$('form.htmleditorfield-mediaform .field[id$="ParentID_Holder"] .TreeDropdownField').entwine({
onadd: function() {
this._super();
// TODO Custom event doesn't fire in IE if registered through object literal
var self = this;
this.bind('change', function() {
var fileList = self.closest('form').find('.grid-field');
fileList.setState('ParentID', self.getValue());
fileList.reload();
});
}
});
// this is required because the React version of e.preventDefault() doesn't work
// this is to stop React Tabs from navigating the page
$('.insert-media-react__dialog-wrapper .nav-link').entwine({

View File

@ -1,577 +0,0 @@
import $ from 'jQuery';
import i18n from 'i18n';
// TODO Move deps from lib.js into the file once figuring out why uploads fail then
window.tmpl = require('blueimp-tmpl/tmpl.js');
require('./UploadField_uploadtemplate.js');
require('./UploadField_downloadtemplate.js');
// TODO Enable once https://github.com/webpack/extract-text-webpack-plugin/issues/179 is resolved. Included in bundle.scss for now.
// require('../styles/legacy/UploadField.scss');
$.widget('blueimpUIX.fileupload', $.blueimpUI.fileupload, {
_initTemplates: function() {
this.options.templateContainer = document.createElement(
this._files.prop('nodeName')
);
this.options.uploadTemplate = window.tmpl(this.options.uploadTemplateName);
this.options.downloadTemplate = window.tmpl(this.options.downloadTemplateName);
},
_enableFileInputButton: function() {
$.blueimpUI.fileupload.prototype._enableFileInputButton.call(this);
this.element.find('.ss-uploadfield-addfile').show();
},
_disableFileInputButton: function() {
$.blueimpUI.fileupload.prototype._disableFileInputButton.call(this);
this.element.find('.ss-uploadfield-addfile').hide();
},
_onAdd: function(e, data) {
// use _onAdd instead of add since we only want it called once for a file set, not for each file
var result = $.blueimpUI.fileupload.prototype._onAdd.call(this, e, data);
var firstNewFile = this._files.find('.ss-uploadfield-item').slice(data.files.length*-1).first();
var top = '+=' + (firstNewFile.position().top - parseInt(firstNewFile.css('marginTop'), 10) || 0 - parseInt(firstNewFile.css('borderTopWidth'), 10) || 0);
firstNewFile.offsetParent().animate({scrollTop: top}, 1000);
/* Compute total size of files */
var fSize = 0;
for(var i = 0; i < data.files.length; i++){
if(typeof data.files[i].size === 'number'){
fSize = fSize + data.files[i].size;
}
}
$('.fileOverview .uploadStatus .details .total').text(data.files.length);
if(typeof fSize === 'number' && fSize > 0){
fSize = this._formatFileSize(fSize);
$('.fileOverview .uploadStatus .details .fileSize').text(fSize);
}
//Fixes case where someone uploads a single erroring file
if(data.files.length == 1 && data.files[0].error !== null){
$('.fileOverview .uploadStatus .state').text(i18n._t('AssetUploadField.UploadField.UPLOADFAIL', 'Sorry your upload failed'));
$('.fileOverview .uploadStatus').addClass("bad").removeClass("good").removeClass("notice");
}else{
$('.fileOverview .uploadStatus .state').text(i18n._t('AssetUploadField.UPLOADINPROGRESS', 'Please wait… upload in progress'));//.show();
$('.ss-uploadfield-item-edit-all').hide();
$('.fileOverview .uploadStatus').addClass("notice").removeClass("good").removeClass("bad");
}
return result;
},
_onDone: function (result, textStatus, jqXHR, options) {
// Mark form as dirty on completion of successful upload
if(this.options.changeDetection) {
this.element.closest('form').trigger('dirty');
}
$.blueimpUI.fileupload.prototype._onDone.call(this, result, textStatus, jqXHR, options);
},
_onSend: function (e, data) {
//check the array of existing files to see if we are trying to upload a file that already exists
var that = this;
var config = this.options;
if (config.overwriteWarning && config.replaceFile) {
$.get(
config['urlFileExists'],
{'filename': data.files[0].name},
function(response, status, xhr) {
if(response.exists) {
//display the dialogs with the question to overwrite or not
data.context.find('.ss-uploadfield-item-status')
.text(config.errorMessages.overwriteWarning)
.addClass('ui-state-warning-text');
data.context.find('.ss-uploadfield-item-progress').hide();
data.context.find('.ss-uploadfield-item-overwrite').show();
data.context.find('.ss-uploadfield-item-overwrite-warning').on('click', function(e){
data.context.find('.ss-uploadfield-item-progress').show();
data.context.find('.ss-uploadfield-item-overwrite').hide();
data.context.find('.ss-uploadfield-item-status')
.removeClass('ui-state-warning-text');
//upload only if the "overwrite" button is clicked
$.blueimpUI.fileupload.prototype._onSend.call(that, e, data);
e.preventDefault(); // Avoid a form submit
return false;
});
} else { //regular file upload
return $.blueimpUI.fileupload.prototype._onSend.call(that, e, data);
}
}
);
} else {
return $.blueimpUI.fileupload.prototype._onSend.call(that, e, data);
}
},
_onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {
$.blueimpUI.fileupload.prototype._onAlways.call(this, jqXHRorResult, textStatus, jqXHRorError, options);
if(typeof(jqXHRorError) === 'string') {
$('.fileOverview .uploadStatus .state').text(i18n._t('AssetUploadField.UploadField.UPLOADFAIL', 'Sorry your upload failed'));
$('.fileOverview .uploadStatus').addClass("bad").removeClass("good").removeClass("notice");
} else if (jqXHRorError.status === 200) {
$('.fileOverview .uploadStatus .state').text(i18n._t('AssetUploadField.FILEUPLOADCOMPLETED', 'File upload completed!'));//.hide();
$('.ss-uploadfield-item-edit-all').show();
$('.fileOverview .uploadStatus').addClass("good").removeClass("notice").removeClass("bad");
}
},
_create: function() {
$.blueimpUI.fileupload.prototype._create.call(this);
// Ensures that the visibility of the fileupload dialog is set correctly at initialisation
this._adjustMaxNumberOfFiles(0);
},
attach: function(data) {
if(this.options.changeDetection) {
this.element.closest('form').trigger('dirty');
}
// Handles attachment of already uploaded files, similar to add
var self = this,
files = data.files,
replaceFileID = data.replaceFileID,
valid = true;
// If replacing an element (and it exists), adjust max number of files at this point
var replacedElement = null;
if(replaceFileID) {
replacedElement = $(".ss-uploadfield-item[data-fileid='"+replaceFileID+"']");
if(replacedElement.length === 0) {
replacedElement = null;
} else {
self._adjustMaxNumberOfFiles(1);
}
}
// Validate each file
$.each(files, function (index, file) {
self._adjustMaxNumberOfFiles(-1);
valid = self._validate([file]) && valid;
});
data.isAdjusted = true;
data.files.valid = data.isValidated = valid;
// Generate new file HTMl, and either append or replace (if replacing
// an already uploaded file).
data.context = this._renderDownload(files);
if(replacedElement) {
replacedElement.replaceWith(data.context);
} else {
data.context.appendTo(this._files);
}
data.context.data('data', data);
// Force reflow:
this._reflow = this._transition && data.context[0].offsetWidth;
data.context.addClass('in');
}
});
$.entwine('ss', function($) {
$('div.ss-upload').entwine({
Config: null,
onmatch: function() {
if (this.is('.readonly,.disabled')) {
return;
}
var $fileInput = this.find('.ss-uploadfield-fromcomputer-fileinput'),
$dropZone = $('.ss-uploadfield-dropzone'),
config = $fileInput.data('config');
// Drag & drop is opt-in so we have to prevent the default behaviour
// (which is 'do nothing') when the drop zone is dragged over.
$dropZone.on('dragover', function (e) {
e.preventDefault();
});
$dropZone.on('dragenter', function (e) {
$dropZone.addClass('hover active');
});
$dropZone.on('dragleave', function (e) {
if (e.target === $dropZone[0]) {
$dropZone.removeClass('hover active');
}
});
$dropZone.on('drop', function (e) {
$dropZone.removeClass('hover active');
if (e.target !== $dropZone[0]) {
return false;
}
})
this.setConfig(config);
this.fileupload($.extend(true, {
formData: function(form) {
var idVal = $(form).find(':input[name=ID]').val();
var data = [{name: 'SecurityID', value: $(form).find(':input[name=SecurityID]').val()}];
if(idVal) data.push({name: 'ID', value: idVal});
return data;
},
errorMessages: {
// errorMessages for all error codes suggested from the plugin author, some will be overwritten by the config coming from php
1: i18n._t('UploadField.PHP_MAXFILESIZE'),
2: i18n._t('UploadField.HTML_MAXFILESIZE'),
3: i18n._t('UploadField.ONLYPARTIALUPLOADED'),
4: i18n._t('UploadField.NOFILEUPLOADED'),
5: i18n._t('UploadField.NOTMPFOLDER'),
6: i18n._t('UploadField.WRITEFAILED'),
7: i18n._t('UploadField.STOPEDBYEXTENSION'),
maxFileSize: i18n._t('UploadField.TOOLARGESHORT'),
minFileSize: i18n._t('UploadField.TOOSMALL'),
acceptFileTypes: i18n._t('UploadField.INVALIDEXTENSIONSHORT'),
maxNumberOfFiles: i18n._t('UploadField.MAXNUMBEROFFILESSHORT'),
uploadedBytes: i18n._t('UploadField.UPLOADEDBYTES'),
emptyResult: i18n._t('UploadField.EMPTYRESULT')
},
send: function(e, data) {
if (data.context && data.dataType && data.dataType.substr(0, 6) === 'iframe') {
// Iframe Transport does not support progress events.
// In lack of an indeterminate progress bar, we set
// the progress to 100%, showing the full animated bar:
data.total = 1;
data.loaded = 1;
$(this).data('fileupload').options.progress(e, data);
}
},
progress: function(e, data) {
if (data.context) {
var value = parseInt(data.loaded / data.total * 100, 10) + '%';
data.context.find('.ss-uploadfield-item-status').html((data.total == 1)?i18n._t('UploadField.LOADING'):value);
data.context.find('.ss-uploadfield-item-progressbarvalue').css('width', value);
}
}
},
config,
{
fileInput: $fileInput,
dropZone: $dropZone,
form: $fileInput.closest('form'),
previewAsCanvas: false,
acceptFileTypes: new RegExp(config.acceptFileTypes, 'i')
}
));
if (this.data('fileupload')._isXHRUpload({multipart: true})) {
$('.ss-uploadfield-item-uploador').hide().show();
}
this._super();
},
onunmatch: function() {
$('.ss-uploadfield-dropzone').off('dragover dragenter dragleave drop');
this._super();
},
openSelectDialog: function(uploadedFile) {
// Create dialog and load iframe
var self = this, config = this.getConfig(), dialogId = 'ss-uploadfield-dialog-' + this.attr('id'), dialog = $('#' + dialogId);
if(!dialog.length) dialog = $('<div class="ss-uploadfield-dialog" id="' + dialogId + '" />');
// If user selected 'Choose another file', we need the ID of the file to replace
var iframeUrl = config['urlSelectDialog'];
var uploadedFileId = null;
if (uploadedFile && uploadedFile.attr('data-fileid') > 0){
uploadedFileId = uploadedFile.attr('data-fileid');
}
// Show dialog
dialog.ssdialog({iframeUrl: iframeUrl, height: 550});
// TODO Allow single-select
dialog.find('iframe').bind('load', function(e) {
var contents = $(this).contents(), gridField = contents.find('.grid-field');
// TODO Fix jQuery custom event bubbling across iframes on same domain
// gridField.find('.ss-gridfield-items')).bind('selectablestop', function() {
// });
// Remove top margin (easier than including new selectors)
contents.find('table.grid-field').css('margin-top', 0);
// Can't use live() in iframes...
contents.find('input[name=action_doAttach]').unbind('click.openSelectDialog').bind('click.openSelectDialog', function() {
// TODO Fix entwine method calls across iframe/document boundaries
var ids = $.map(gridField.find('.ss-gridfield-item.ui-selected'), function(el) {return $(el).data('id');});
if(ids && ids.length) self.attachFiles(ids, uploadedFileId);
dialog.ssdialog('close');
return false;
});
});
dialog.ssdialog('open');
},
attachFiles: function(ids, uploadedFileId) {
var self = this,
config = this.getConfig(),
indicator = $('<div class="loader" />'),
target = (uploadedFileId) ? this.find(".ss-uploadfield-item[data-fileid='"+uploadedFileId+"']") : this.find('.ss-uploadfield-addfile');
target.children().hide();
target.append(indicator);
$.ajax({
type: "POST",
url: config['urlAttach'],
data: {'ids': ids},
complete: function(xhr, status) {
target.children().show();
indicator.remove();
},
success: function(data, status, xhr) {
if (!data || $.isEmptyObject(data)) return;
self.fileupload('attach', {
files: data,
options: self.fileupload('option'),
replaceFileID: uploadedFileId
});
}
});
}
});
$('div.ss-upload *').entwine({
getUploadField: function() {
return this.parents('div.ss-upload:first');
}
});
$('div.ss-upload .ss-uploadfield-files .ss-uploadfield-item').entwine({
onadd: function() {
this._super();
this.closest('.ss-upload').find('.ss-uploadfield-addfile').addClass('borderTop');
},
onremove: function() {
$('.ss-uploadfield-files:not(:has(.ss-uploadfield-item))').closest('.ss-upload').find('.ss-uploadfield-addfile').removeClass('borderTop');
this._super();
}
});
$('div.ss-upload .ss-uploadfield-startall').entwine({
onclick: function(e) {
this.closest('.ss-upload').find('.ss-uploadfield-item-start button').click();
e.preventDefault(); // Avoid a form submit
return false;
}
});
$('div.ss-upload .ss-uploadfield-item-cancelfailed').entwine({
onclick: function(e) {
this.closest('.ss-uploadfield-item').remove();
e.preventDefault(); // Avoid a form submit
return false;
}
});
$('div.ss-upload .ss-uploadfield-item-remove:not(.ui-state-disabled), .ss-uploadfield-item-delete:not(.ui-state-disabled)').entwine({
onclick: function(e) {
var field = this.closest('div.ss-upload'),
config = field.getConfig('changeDetection'),
fileupload = field.data('fileupload'),
item = this.closest('.ss-uploadfield-item'), msg = '';
if(this.is('.ss-uploadfield-item-delete')) {
if(confirm(i18n._t('UploadField.ConfirmDelete'))) {
if(config.changeDetection) {
this.closest('form').trigger('dirty');
}
if (fileupload) {
fileupload._trigger('destroy', e, {
context: item,
url: this.data('href'),
type: 'get',
dataType: fileupload.options.dataType
});
}
}
} else {
// Removed files will be applied to object on save
if(config.changeDetection) {
this.closest('form').trigger('dirty');
}
if (fileupload) {
fileupload._trigger('destroy', e, {context: item});
}
}
e.preventDefault(); // Avoid a form submit
return false;
}
});
$('div.ss-upload .ss-uploadfield-item-edit-all').entwine({
onclick: function(e) {
if($(this).hasClass('opened')){
$('.ss-uploadfield-item .ss-uploadfield-item-edit .toggle-details-icon.opened').each(function(i){
$(this).closest('.ss-uploadfield-item-edit').click();
});
$(this).removeClass('opened').find('.toggle-details-icon').removeClass('opened');
}else{
$('.ss-uploadfield-item .ss-uploadfield-item-edit .toggle-details-icon').each(function(i){
if(!$(this).hasClass('opened')){
$(this).closest('.ss-uploadfield-item-edit').click();
}
});
$(this).addClass('opened').find('.toggle-details-icon').addClass('opened');
}
e.preventDefault(); // Avoid a form submit
return false;
}
});
$( 'div.ss-upload:not(.disabled):not(.readonly) .ss-uploadfield-item-edit').entwine({
onclick: function(e) {
var self = this,
editform = self.closest('.ss-uploadfield-item').find('.ss-uploadfield-item-editform'),
itemInfo = editform.prev('.ss-uploadfield-item-info'),
iframe = editform.find('iframe');
// Ignore clicks while the iframe is loading
if (iframe.parent().hasClass('loading')) {
e.preventDefault();
return false;
}
if (iframe.attr('src') == 'about:blank') {
var disabled = this.siblings();
// Lazy-load the iframe on editform toggle
iframe.attr('src', iframe.data('src'));
// Add loading class, disable buttons while loading is in progress
// (_prepareIframe() handles re-enabling them when appropriate)
iframe.parent().addClass('loading');
disabled.addClass('ui-state-disabled');
disabled.attr('disabled', 'disabled');
iframe.on('load', function() {
iframe.parent().removeClass('loading');
// This ensures we only call _prepareIframe() on load once - otherwise it'll
// be superfluously called after clicking 'save' in the editform
if (iframe.data('src')) {
self._prepareIframe(iframe, editform, itemInfo);
iframe.data('src', '');
}
});
} else {
self._prepareIframe(iframe, editform, itemInfo);
}
e.preventDefault(); // Avoid a form submit
return false;
},
_prepareIframe: function(iframe, editform, itemInfo) {
var disabled;
// Mark the row as changed if any of its form fields are edited
iframe.contents().ready(function() {
// Need to use the iframe's own jQuery, as custom event triggers
// (e.g. from TreeDropdownField) can't be captured by the parent jQuery object.
var iframe_jQuery = iframe.get(0).contentWindow.jQuery;
iframe_jQuery(iframe_jQuery.find(':input')).bind('change', function(e){
editform.removeClass('edited');
editform.addClass('edited');
});
});
if (editform.hasClass('loading')) {
// TODO Display loading indication, and register an event to toggle edit form
} else {
if(this.hasClass('ss-uploadfield-item-edit')){
disabled=this.siblings();
}else{
disabled=this.find('ss-uploadfield-item-edit').siblings();
}
editform.parent('.ss-uploadfield-item').removeClass('ui-state-warning');
editform.toggleEditForm();
if (itemInfo.find('.toggle-details-icon').hasClass('opened')) {
disabled.addClass('ui-state-disabled');
disabled.attr('disabled', 'disabled');
} else {
disabled.removeClass('ui-state-disabled');
disabled.removeAttr('disabled');
}
}
}
});
$('div.ss-upload .ss-uploadfield-item-editform').entwine({
fitHeight: function() {
var iframe = this.find('iframe'),
contents = iframe.contents().find('body'),
bodyH = contents.find('form').outerHeight(true), // We set the height to match the form's outer height
iframeH = bodyH + (iframe.outerHeight(true) - iframe.height()), // content's height + padding on iframe elem
containerH = iframeH + (this.outerHeight(true) - this.height()); // iframe height + padding on container elem
/* Set height of body except in IE8. Setting this in IE8 breaks the dropdown */
if( ! $.browser.msie && $.browser.version.slice(0,3) != "8.0"){
contents.find('body').css({'height': bodyH});
}
iframe.height(iframeH);
this.animate({height: containerH}, 500);
},
toggleEditForm: function() {
var itemInfo = this.prev('.ss-uploadfield-item-info'), status = itemInfo.find('.ss-uploadfield-item-status');
var iframe = this.find('iframe').contents(),
saved = iframe.find('#Form_EditForm_error');
var text = "";
if(this.height() === 0) {
text = i18n._t('UploadField.Editing', "Editing ...");
this.fitHeight();
this.addClass('opened');
itemInfo.find('.toggle-details-icon').addClass('opened');
status.removeClass('ui-state-success-text').removeClass('ui-state-warning-text');
iframe.find('#Form_EditForm_action_doEdit').click(function(){
itemInfo.find('label .name').text(iframe.find('#Name input').val());
});
if($('div.ss-upload .ss-uploadfield-files .ss-uploadfield-item-actions .toggle-details-icon:not(.opened)').index() < 0){
$('div.ss-upload .ss-uploadfield-item-edit-all').addClass('opened').find('.toggle-details-icon').addClass('opened');
}
} else {
this.animate({height: 0}, 500);
this.removeClass('opened');
itemInfo.find('.toggle-details-icon').removeClass('opened');
$('div.ss-upload .ss-uploadfield-item-edit-all').removeClass('opened').find('.toggle-details-icon').removeClass('opened');
if(!this.hasClass('edited')){
text = i18n._t('UploadField.NOCHANGES', 'No Changes');
status.addClass('ui-state-success-text');
}else{
if(saved.hasClass('good')){
text = i18n._t('UploadField.CHANGESSAVED', 'Changes Saved');
this.removeClass('edited').parent('.ss-uploadfield-item').removeClass('ui-state-warning');
status.addClass('ui-state-success-text');
}else{
text = i18n._t('UploadField.UNSAVEDCHANGES', 'Unsaved Changes');
this.parent('.ss-uploadfield-item').addClass('ui-state-warning');
status.addClass('ui-state-warning-text');
}
}
saved.removeClass('good').hide();
}
status.attr('title',text).text(text);
}
});
$('div.ss-upload .ss-uploadfield-fromfiles').entwine({
onclick: function(e) {
this.getUploadField().openSelectDialog(this.closest('.ss-uploadfield-item'));
e.preventDefault(); // Avoid a form submit
return false;
}
});
});

View File

@ -1,41 +0,0 @@
tmpl.cache['ss-uploadfield-downloadtemplate'] = tmpl(
'{% for (var i=0, files=o.files, l=files.length, file=files[0]; i<l; file=files[++i]) { %}' +
'<li class="ss-uploadfield-item template-download{% if (file.error) { %} ui-state-error{% } %}" data-fileid="{%=file.id%}">' +
'{% if (file.thumbnail_url) { %}' +
'<div class="ss-uploadfield-item-preview preview"><span>' +
'<img src="{%=file.thumbnail_url%}" alt="" />' +
'</span></div>' +
'{% } %}' +
'<div class="ss-uploadfield-item-info">' +
'{% if (!file.error && file.id) { %}' +
'<input type="hidden" name="{%=file.fieldname%}[Files][]" value="{%=file.id%}" />' +
'{% } %}' +
'{% if (!file.error && file.filename) { %}' +
'<input type="hidden" value="{%=file.filename%}" name="{%=file.fieldname%}[Filename]" />' +
'<input type="hidden" value="{%=file.hash%}" name="{%=file.fieldname%}[Hash]" />' +
'<input type="hidden" value="{%=file.variant%}" name="{%=file.fieldname%}[Variant]" />' +
'{% } %}' +
'<label class="ss-uploadfield-item-name">' +
'<span class="name" title="{%=file.name%}">{%=file.name%}</span> ' +
'<span class="size">{%=o.formatFileSize(file.size)%}</span>' +
'{% if (!file.error) { %}' +
'<div class="ss-uploadfield-item-status ui-state-success-text" title="'+ss.i18n._t('UploadField.Uploaded', 'Uploaded')+'">'+ss.i18n._t('UploadField.Uploaded', 'Uploaded')+'</div>' +
'{% } else { %}' +
'<div class="ss-uploadfield-item-status ui-state-error-text" title="{%=o.options.errorMessages[file.error] || file.error%}">{%=o.options.errorMessages[file.error] || file.error%}</div>' +
'{% } %}' +
'<div class="clear"><!-- --></div>' +
'</label>' +
'{% if (file.error) { %}' +
'<div class="ss-uploadfield-item-actions">' +
'<div class="ss-uploadfield-item-cancel ss-uploadfield-item-cancelfailed delete"><button type="button" class="icon icon-16" data-icon="delete" title="' + ss.i18n._t('UploadField.CANCELREMOVE', 'Cancel/Remove') + '">' + ss.i18n._t('UploadField.CANCELREMOVE', 'Cancel/Remove') + '</button></div>' +
'</div>' +
'{% } else { %}' +
'<div class="ss-uploadfield-item-actions">{% print(file.buttons, true); %}</div>' +
'{% } %}' +
'</div>' +
'{% if (!file.error) { %}' +
'<div class="ss-uploadfield-item-editform"><iframe frameborder="0" data-src="{%=file.edit_url%}" src="about:blank"></iframe></div>' +
'{% } %}' +
'</li>' +
'{% } %}'
);

View File

@ -1,21 +0,0 @@
import $ from 'jQuery';
$.entwine('ss', function($) {
// Install the directory selection handler
$('form.uploadfield-form .TreeDropdownField').entwine({
onmatch: function() {
this._super();
var self = this;
this.bind('change', function() {
// Display the contents of the folder in the listing field.
var fileList = self.closest('form').find('.grid-field');
fileList.setState('ParentID', self.getValue());
fileList.reload();
});
},
onunmatch: function() {
this._super();
}
});
});

View File

@ -1,33 +0,0 @@
window.tmpl.cache['ss-uploadfield-uploadtemplate'] = window.tmpl(
'{% for (var i=0, files=o.files, l=files.length, file=files[0]; i<l; file=files[++i]) { %}' +
'<li class="ss-uploadfield-item template-upload{% if (file.error) { %} ui-state-error{% } %}">' +
'<div class="ss-uploadfield-item-preview preview"><span></span></div>' +
'<div class="ss-uploadfield-item-info">' +
'<label class="ss-uploadfield-item-name">' +
'<span class="name" title="{% if (file.name) { %}{%=file.name%}{% } else { %}' + ss.i18n._t('UploadField.NOFILENAME', 'Untitled') + '{% } %}">' +
'{% if (file.name) { %}{%=file.name%}{% } else { %}' + ss.i18n._t('UploadField.NOFILENAME', 'Untitled') + '{% } %}</span> ' +
'{% if (!file.error) { %}' +
'<div class="ss-uploadfield-item-status">0%</div>' +
'{% } else { %}' +
'<div class="ss-uploadfield-item-status ui-state-error-text" title="{%=o.options.errorMessages[file.error] || file.error%}">{%=o.options.errorMessages[file.error] || file.error%}</div>' +
'{% } %}' +
'<div class="clear"><!-- --></div>' +
'</label>' +
'<div class="ss-uploadfield-item-actions">' +
'{% if (!file.error) { %}' +
'<div class="ss-uploadfield-item-progress"><div class="ss-uploadfield-item-progressbar"><div class="ss-uploadfield-item-progressbarvalue"></div></div></div>' +
'{% if (!o.options.autoUpload) { %}' +
'<div class="ss-uploadfield-item-start start"><button type="button" class="icon icon-16" data-icon="navigation">' + ss.i18n._t('UploadField.START', 'Start') + '</button></div>' +
'{% } %}' +
'{% } %}' +
'<div class="ss-uploadfield-item-cancel cancel">' +
'<button type="button" class="icon icon-16" data-icon="minus-circle" title="' + ss.i18n._t('UploadField.CANCELREMOVE', 'Cancel/Remove') + '">' + ss.i18n._t('UploadField.CANCELREMOVE', 'Cancel/Remove') + '</button>' +
'</div>' +
'<div class="ss-uploadfield-item-overwrite hide ">' +
'<button type="button" data-icon="drive-upload" class="ss-uploadfield-item-overwrite-warning" title="' + ss.i18n._t('UploadField.OVERWRITE', 'Overwrite') + '">' + ss.i18n._t('UploadField.OVERWRITE', 'Overwrite') + '</button>' +
'</div>' +
'</div>' +
'</div>' +
'</li>' +
'{% } %}'
);

View File

@ -38,7 +38,6 @@
@import "legacy/GridField";
@import "legacy/SelectionGroup";
@import "legacy/TreeDropdownField";
@import "legacy/UploadField";
// Components
@import "../components/Accordion/Accordion";

View File

@ -301,7 +301,7 @@
}
}
// Thumbnails e.g. in File admin, UploadField and HtmlEditorField file selection
// Thumbnails e.g. in HtmlEditorField file selection
td.col-StripThumbnail {
padding: 0 4px;
width: 32px;

View File

@ -53,8 +53,6 @@ doesn't necessarily have any visible styling.
## Files
* [api:FileField]: Simple file upload dialog.
* [api:UploadField]: Upload to a `[api:File]` record, including upload progress, preview and relationship management.
* [api:AssetField]: Upload to a `[api:DBFile]` database field. Very similar to UploadField
## Relations

View File

@ -1,495 +0,0 @@
# UploadField
## Introduction
The UploadField will let you upload one or multiple files of all types, including images.
But that's not all it does - it will also link the uploaded file(s) to an existing relation
and let you edit the linked files as well. That makes it flexible enough to sometimes even
replace the GridField, like for instance in creating and managing a simple gallery.
The field automatically creates a `File` record for each uploaded file.
In order to associate uploaded files directly to a `DataObject` via the
`[api:DBFile]` database field, please use [AssetField](AssetField).
## Usage
The field can be used in three ways: To upload a single file into a `has_one` relationship,
or allow multiple files into a `has_many` or `many_many` relationship, or to act as a stand
alone uploader into a folder with no underlying relation.
## Validation
Although images are uploaded and stored on the filesystem immediately after selection,
the value (or values) of this field will not be written to any related record until the
record is saved and successfully validated. However, any invalid records will still
persist across form submissions until explicitly removed or replaced by the user.
Care should be taken as invalid files may remain within the filesystem until explicitly removed.
### Single fileupload
The following example adds an UploadField to a page for single fileupload, based on a has_one relation:
```php
class GalleryPage extends Page {
private static $has_one = array(
'SingleImage' => 'Image'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab(
'Root.Upload',
$uploadField = new UploadField(
$name = 'SingleImage',
$title = 'Upload a single image'
)
);
// Restrict validator to include only supported image formats
$uploadField->setAllowedFileCategories('image/supported');
return $fields;
}
}
```
The UploadField will auto-detect the relation based on its `name` property, and save
it into the GalleryPage's `SingleImageID` field. Setting the `setAllowedMaxFileNumber`
to 1 will make sure that only one image can ever be uploaded and linked to the relation.
### Multiple fileupload
Enable multiple fileuploads by using a many_many (or has_many) relation. Again,
the `UploadField` will detect the relation based on its $name property value:
:::php
class GalleryPage extends Page {
private static $many_many = array(
'GalleryImages' => 'Image'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab(
'Root.Upload',
$uploadField = new UploadField(
$name = 'GalleryImages',
$title = 'Upload one or more images (max 10 in total)'
)
);
$uploadField->setAllowedFileCategories('image/supported');
$uploadField->setAllowedMaxFileNumber(10);
return $fields;
}
}
:::php
class GalleryImageExtension extends DataExtension {
private static $belongs_many_many = array(
'Galleries' => 'GalleryPage'
);
}
:::yaml
Image:
extensions:
- GalleryImageExtension
<div class="notice" markdown='1'>
In order to link both ends of the relationship together it's usually advisable to extend
File with the necessary $has_one, $belongs_to, $has_many or $belongs_many_many.
In particular, a DataObject with $has_many File will not work without this specified explicitly.
</div>
## Configuration
### Overview
UploadField can either be configured on an instance level with the various getProperty
and setProperty functions, or globally by overriding the YAML defaults.
See the [Configuration Reference](uploadfield#configuration-reference) section for possible values.
Example: mysite/_config/uploadfield.yml
:::yaml
after: framework#uploadfield
---
UploadField:
defaultConfig:
canUpload: false
### Set a custom folder
This example will save all uploads in the `customfolder` in the configured assets store root (normally under 'assets')
If the folder doesn't exist, it will be created.
:::php
$fields->addFieldToTab(
'Root.Upload',
$uploadField = new UploadField(
$name = 'GalleryImages',
$title = 'Please upload one or more images'
)
);
$uploadField->setFolderName('customfolder');
### Limit the allowed filetypes
`AllowedExtensions` defaults to the `File.allowed_extensions` configuration setting,
but can be overwritten for each UploadField:
:::php
$uploadField->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif'));
Entire groups of file extensions can be specified in order to quickly limit types to known file categories.
This can be done by using file category names, which are defined via the `File.app_categories` config. This
list could be extended with any custom categories.
The built in categories are:
| File category | Example extensions |
|-----------------|--------------------|
| archive | zip, gz, rar |
| audio | mp3, wav, ogg |
| document | doc, txt, pdf |
| flash | fla, swf |
| image | jpg, tiff, ps |
| image/supported | jpg, gif, png |
| video | mkv, avi, mp4 |
Note that although all image types are included in the 'image' category, only images that are in the
'images/supported' list are compatible with the SilverStripe image manipulations API. Other types
can be uploaded, but cannot be resized.
:::php
$uploadField->setAllowedFileCategories('image/supported');
This will limit files to the the compatible image formats: jpg, jpeg, gif, and png.
`AllowedExtensions` can also be set globally via the
[YAML configuration](/developer_guides/configuration/configuration/#configuration-yaml-syntax-and-rules),
for example you may add the following into your mysite/_config/config.yml:
:::yaml
File:
allowed_extensions:
- 7zip
- xzip
### Limit the maximum file size
`AllowedMaxFileSize` is by default set to the lower value of the 2 php.ini configurations:
`upload_max_filesize` and `post_max_size`. The value is set as bytes.
NOTE: this only sets the configuration for your UploadField, this does NOT change your
server upload settings, so if your server is set to only allow 1 MB and you set the
UploadField to 2 MB, uploads will not work.
:::php
$sizeMB = 2; // 2 MB
$size = $sizeMB * 1024 * 1024; // 2 MB in bytes
$this->getValidator()->setAllowedMaxFileSize($size);
You can also specify a default global maximum file size setting in your config for different file types.
This is overridden when specifying the max allowed file size on the UploadField instance.
:::yaml
Upload_Validator:
default_max_file_size:
'[image]': '1m'
'[document]': '5m'
'jpeg': 2000
### Preview dimensions
Set the dimensions of the image preview. By default the max width is set to 80 and the max height is set to 60.
:::php
$uploadField->setPreviewMaxWidth(100);
$uploadField->setPreviewMaxHeight(100);
### Disable attachment of existing files
This can force the user to upload a new file, rather than link to the already existing file library
:::php
$uploadField->setCanAttachExisting(false);
### Disable uploading of new files
Alternatively, you can force the user to only specify already existing files in the file library
:::php
$uploadField->setCanUpload(false);
### Automatic or manual upload
By default, the UploadField will try to automatically upload all selected files. Setting the `autoUpload`
property to false, will present you with a list of selected files that you can then upload manually one by one:
:::php
$uploadField->setAutoUpload(false);
### Change Detection
The CMS interface will automatically notify the form containing
an UploadField instance of changes, such as a new upload,
or the removal of an existing upload (through a `dirty` event).
The UI can then choose an appropriate response (e.g. highlighting the "save" button).
If the UploadField doesn't save into a relation, there's technically no saveable change
(the upload has already happened), which is why this feature can be disabled on demand.
:::php
$uploadField->setConfig('changeDetection', false);
### Build a simple gallery
A gallery most times needs more then simple images. You might want to add a description, or
maybe some settings to define a transition effect for each slide.
First create a [DataExtension](/developer_guides/extending/extensions) like this:
:::php
class GalleryImage extends DataExtension {
private static $db = array(
'Description' => 'Text'
);
private static $belongs_many_many = array(
'GalleryPage' => 'GalleryPage'
);
}
Now register the DataExtension for the Image class in your mysite/_config/config.yml:
:::yaml
Image:
extensions:
- GalleryImage
<div class="notice" markdown='1'>
Note: Although you can subclass the Image class instead of using a DataExtension, this is not advisable.
For instance: when using a subclass, the 'From files' button will only return files that were uploaded
for that subclass, it won't recognize any other images!
</div>
### Edit uploaded images
By default the UploadField will let you edit the following fields: *Title, Filename, Owner and Folder*.
The fileEditFields` configuration setting allows you you alter these settings. One way to go about this
is create a `getCustomFields` function in your GalleryImage object like this:
:::php
class GalleryImage extends DataExtension {
public function getCustomFields() {
$fields = new FieldList();
$fields->push(new TextField('Title', 'Title'));
$fields->push(new TextareaField('Description', 'Description'));
return $fields;
}
}
Then, in your GalleryPage, tell the UploadField to use this function:
:::php
$uploadField->setFileEditFields('getCustomFields');
In a similar fashion you can use 'setFileEditActions' to set the actions for the editform, or
'fileEditValidator' to determine the validator (e.g. RequiredFields).
### Configuration Reference
* `setAllowedMaxFileNumber`: (int) php validation of allowedMaxFileNumber only works when a db
relation is available, set to null to allow unlimited if record has a has_one and
allowedMaxFileNumber is null, it will be set to 1.
* `setAllowedFileExtensions`: (array) List of file extensions allowed.
* `setAllowedFileCategories`: (array|string) List of types of files allowed. May be any number of
categories as defined in `File.app_categories` config.
* `setAutoUpload`: (boolean) Should the field automatically trigger an upload once a file is selected?
* `setCanAttachExisting`: (boolean|string) Can the user attach existing files from the library. String
values are interpreted as permission codes.
* `setCanPreviewFolder`: (boolean|string) Can the user preview the folder files will be saved into?
String values are interpreted as permission codes.
* `setCanUpload`: (boolean|string) Can the user upload new files, or just select from existing files.
String values are interpreted as permission codes.
* `setDownloadTemplateName`: (string) javascript template used to display already uploaded files.
* `setFileEditFields`: (FieldList|string) FieldList $fields or string $name (of a method on File to
provide a fields) for the EditForm (Example: 'getCMSFields').
* `setFileEditActions`: (FieldList|string) FieldList $actions or string $name (of a method on File to
provide a actions) for the EditForm (Example: 'getCMSActions').
* `setFileEditValidator`: (string) Validator (eg RequiredFields) or string $name (of a method on File
to provide a Validator) for the EditForm (Example: 'getCMSValidator').
* `setOverwriteWarning`: (boolean) Show a warning when overwriting a file.
* `setPreviewMaxWidth`: (int).
* `setPreviewMaxHeight`: (int).
* `setTemplateFileButtons`: (string) Template name to use for the file buttons.
* `setTemplateFileEdit`: (string) Template name to use for the file edit form.
* `setUploadTemplateName`: (string) javascript template used to display uploading files.
* `setCanPreviewFolder`: (boolean|string) Is the upload folder visible to uploading users? String values
are interpreted as permission codes.
Certain default values for the above can be configured using the YAML config system.
:::yaml
UploadField:
defaultConfig:
autoUpload: true
allowedMaxFileNumber:
canUpload: true
canAttachExisting: 'CMS_ACCESS_AssetAdmin'
canPreviewFolder: true
previewMaxWidth: 80
previewMaxHeight: 60
uploadTemplateName: 'ss-uploadfield-uploadtemplate'
downloadTemplateName: 'ss-uploadfield-downloadtemplate'
overwriteWarning: true # Warning before overwriting existing file (only relevant when Upload: replaceFile is true)
The above settings can also be set on a per-instance basis by using `setConfig` with the appropriate key.
The `Upload_Validator` class has configuration options for setting the `default_max_file_size`.
:::yaml
Upload_Validator:
default_max_file_size:
'[image]': '1m'
'[doc]': '5m'
'jpeg': 2000
You can specify the file extension or the app category (as specified in the `File` class) in square brackets. It supports setting the file size in bytes or using the syntax supported by `File::ini2bytes()`.
You can also configure the underlying [api:Upload] class, by using the YAML config system.
:::yaml
Upload:
# Globally disables automatic renaming of files and displays a warning before overwriting an existing file
replaceFile: true
uploads_folder: 'Uploads'
## Using the UploadField in a frontend form
The UploadField can be used in a frontend form, given that sufficient attention is given to the permissions
granted to non-authorised users.
Make sure that, for any dataobjects being exposed to the frontend, appropriate `canEdit`, `canDelete` and `canCreate`
are set appropriately, either via extensions on that dataobject or directly in subclasses.
For instance, to generate an upload form suitable for saving images into a user-defined gallery the below
code could be used:
*In GalleryPage.php:*
:::php
class GalleryPage extends Page {}
class GalleryPageController extends PageController {
private static $allowed_actions = array('Form');
public function Form() {
$fields = new FieldList(
new TextField('Title', 'Title', null, 255),
$field = new UploadField('Images', 'Upload Images')
);
$field->setAllowedFileCategories('image/supported'); // Allow images only
$field->setCanAttachExisting(false); // Block access to SilverStripe assets library
$field->setCanPreviewFolder(false); // Don't show target filesystem folder on upload field
$field->relationAutoSetting = false; // Prevents the form thinking the GalleryPage is the underlying object
$actions = new FieldList(new FormAction('submit', 'Save Images'));
return new Form($this, 'Form', $fields, $actions, null);
}
public function submit($data, Form $form) {
$gallery = new Gallery();
$form->saveInto($gallery);
$gallery->write();
return $this;
}
}
*Gallery.php:*
:::php
class Gallery extends DataObject {
private static $db = array(
'Title' => 'Varchar(255)'
);
private static $many_many = array(
'Images' => 'Image'
);
}
*ImageExtension.php:*
:::php
class ImageExtension extends DataExtension {
private static $belongs_many_many = array(
'Gallery' => 'Gallery'
);
public function canEdit($member) {
// WARNING! This affects permissions on ALL images. Setting this incorrectly can restrict
// access to authorised users or unintentionally give access to unauthorised users if set incorrectly.
return Permission::check('CMS_ACCESS_AssetAdmin');
}
}
*mysite/_config/config.yml*
:::yaml
Image:
extensions:
- ImageExtension

View File

@ -1,223 +0,0 @@
# AssetField
## Introduction
This form field can be used to upload files into SilverStripe's asset store.
It associates a file directly to a `DataObject` through the `[api:DBFile]` database field.
Saving the file association directly in a `DataObject` (as opposed to a relation)
can simplify data management and publication.
In order to create `[api:File]` records to contain uploaded files,
please use the [AssetField](AssetField) instead.
## Usage
The field expects to save into a `DataObject` record with a `DBFile`
property matching the name of the field itself.
```php
class Team extends DataObject {
private static $db = array(
'BannerImage' => 'DBFile'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab(
'Root.Upload',
$assetField = new AssetField(
$name = 'BannerImage',
$title = 'Upload a banner'
)
);
// Restrict validator to include only supported image formats
$assetField->setAllowedFileCategories('image/supported');
return $fields;
}
}
```
## Validation
Although images are uploaded and stored on the filesystem immediately after selection,
the value (or values) of this field will not be written to any related record until the
record is saved and successfully validated. However, any invalid records will still
persist across form submissions until explicitly removed or replaced by the user.
Care should be taken as invalid files may remain within the filesystem until explicitly removed.
## Configuration
### Overview
AssetField can either be configured on an instance level with the various getProperty
and setProperty functions, or globally by overriding the YAML defaults.
See the [Configuration Reference](uploadfield#configuration-reference) section for possible values.
Example: mysite/_config/uploadfield.yml
:::yaml
after: framework#uploadfield
---
AssetField:
defaultConfig:
canUpload: false
### Set a custom folder
This example will save all uploads in the `customfolder` in the configured assets store root (normally under 'assets')
If the folder doesn't exist, it will be created.
:::php
$fields->addFieldToTab(
'Root.Upload',
$assetField = new AssetField(
$name = 'GalleryImage',
$title = 'Please upload an image'
)
);
$assetField->setFolderName('customfolder');
### Limit the allowed filetypes
`AllowedExtensions` defaults to the `File.allowed_extensions` configuration setting,
but can be overwritten for each AssetField:
:::php
$assetField->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif'));
Entire groups of file extensions can be specified in order to quickly limit types to known file categories.
This can be done by using file category names, which are defined via the `File.app_categories` config. This
list could be extended with any custom categories.
The built in categories are:
| File category | Example extensions |
|-----------------|--------------------|
| archive | zip, gz, rar |
| audio | mp3, wav, ogg |
| document | doc, txt, pdf |
| flash | fla, swf |
| image | jpg, tiff, ps |
| image/supported | jpg, gif, png |
| video | mkv, avi, mp4 |
Note that although all image types are included in the 'image' category, only images that are in the
'images/supported' list are compatible with the SilverStripe image manipulations API. Other types
can be uploaded, but cannot be resized.
:::php
$assetField->setAllowedFileCategories('image/supported');
This will limit files to the the compatible image formats: jpg, jpeg, gif, and png.
`AllowedExtensions` can also be set globally via the
[YAML configuration](/developer_guides/configuration/configuration/#configuration-yaml-syntax-and-rules),
for example you may add the following into your mysite/_config/config.yml:
:::yaml
File:
allowed_extensions:
- 7zip
- xzip
### Limit the maximum file size
`AllowedMaxFileSize` is by default set to the lower value of the 2 php.ini configurations:
`upload_max_filesize` and `post_max_size`. The value is set as bytes.
NOTE: this only sets the configuration for your AssetField, this does NOT change your
server upload settings, so if your server is set to only allow 1 MB and you set the
AssetField to 2 MB, uploads will not work.
:::php
$sizeMB = 2; // 2 MB
$size = $sizeMB * 1024 * 1024; // 2 MB in bytes
$this->getValidator()->setAllowedMaxFileSize($size);
You can also specify a default global maximum file size setting in your config for different file types.
This is overridden when specifying the max allowed file size on the AssetField instance.
:::yaml
Upload_Validator:
default_max_file_size:
'[image]': '1m'
'[document]': '5m'
'jpeg': 2000
### Preview dimensions
Set the dimensions of the image preview. By default the max width is set to 80 and the max height is set to 60.
:::php
$assetField->setPreviewMaxWidth(100);
$assetField->setPreviewMaxHeight(100);
### Disable uploading of new files
Alternatively, you can force the user to only specify already existing files in the file library
:::php
$assetField->setCanUpload(false);
### Automatic or manual upload
By default, the AssetField will try to automatically upload all selected files. Setting the `autoUpload`
property to false, will present you with a list of selected files that you can then upload manually one by one:
:::php
$assetField->setAutoUpload(false);
### Change Detection
The CMS interface will automatically notify the form containing
an AssetField instance of changes, such as a new upload,
or the removal of an existing upload (through a `dirty` event).
The UI can then choose an appropriate response (e.g. highlighting the "save" button).
If the AssetField doesn't save into a relation, there's technically no saveable change
(the upload has already happened), which is why this feature can be disabled on demand.
:::php
$assetField->setConfig('changeDetection', false);
## Configuration Reference
* `setAllowedFileExtensions`: (array) List of file extensions allowed.
* `setAllowedFileCategories`: (array|string) List of types of files allowed. May be any number of
categories as defined in `File.app_categories` config.
* `setAutoUpload`: (boolean) Should the field automatically trigger an upload once a file is selected?
* `setCanPreviewFolder`: (boolean|string) Can the user preview the folder files will be saved into?
String values are interpreted as permission codes.
* `setCanUpload`: (boolean|string) Can the user upload new files, or just select from existing files.
String values are interpreted as permission codes.
* `setDownloadTemplateName`: (string) javascript template used to display already uploaded files.
* `setPreviewMaxWidth`: (int).
* `setPreviewMaxHeight`: (int).
* `setTemplateFileButtons`: (string) Template name to use for the file buttons.
* `setUploadTemplateName`: (string) javascript template used to display uploading files.
* `setCanPreviewFolder`: (boolean|string) Is the upload folder visible to uploading users? String values
are interpreted as permission codes.

View File

@ -153,10 +153,8 @@ You may also notice the 'Sync files' button (highlighted below). This button all
## Upload
Files can be managed through forms in three ways:
Files can be managed through forms in one way:
* [api:FileField]: provides a simple HTML input with a type of "file".
* [UploadField](/developer_guides/forms/field_types/uploadfield): more feature-rich field (
including AJAX-based uploads, previews, relationship management and file data management).
* [AssetField](/developer_guides/forms/field_types/assetfield): Similar to UploadField,
but operates on a `[api:DBFile]` database field instead of a `[api:File]` record.
_NOTE_: Modules are also available to handle Files.

View File

@ -11,9 +11,6 @@ In either case, the same image resizing and manipulation functionality is availa
### Managing images through form fields
Images can be uploaded like any other file, through [api:FileField].
More advanced usage is possible through [api:UploadField],
which provides thumbnails, a detail view of the image properties,
and management of relationships to other DataObject instances.
Allows upload of images through limiting file extensions with `setAllowedExtensions()`.
### Inserting images into the WYSIWYG editor
@ -153,7 +150,6 @@ You can also create your own functions by decorating the `Image` class.
### Form Upload
For usage on a website form, see [api:FileField].
If you want to upload images within the CMS, see [api:UploadField].
### Image Quality

View File

@ -23,7 +23,7 @@ add a `.cms-description-tooltip` class.
Tooltips are only supported
for native, focusable input elements, which excludes
more complex fields like `GridField`, `UploadField`
more complex fields like `GridField`
or `DropdownField` with the chosen.js behaviour applied.
Sometimes a field requires a longer description to provied the user with context.

22
npm-shrinkwrap.json generated
View File

@ -2904,28 +2904,6 @@
}
}
},
"blueimp-file-upload": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/blueimp-file-upload/-/blueimp-file-upload-6.0.3.tgz",
"dependencies": {
"jquery": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz"
},
"jquery.ui.widget": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/jquery.ui.widget/-/jquery.ui.widget-1.10.3.tgz"
}
}
},
"blueimp-load-image": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-1.1.3.tgz"
},
"blueimp-tmpl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-1.0.2.tgz"
},
"bootstrap": {
"version": "4.0.0-alpha.2",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.2.tgz"

View File

@ -35,9 +35,6 @@
"dependencies": {
"apollo-client": "^0.5.5",
"babel-polyfill": "^6.7.4",
"blueimp-file-upload": "6.0.3",
"blueimp-load-image": "1.1.3",
"blueimp-tmpl": "1.0.2",
"bootstrap": "4.0.0-alpha.2",
"chosen-js": "^1.5.1",
"deep-equal": "^1.0.1",

View File

@ -7,7 +7,7 @@ use SilverStripe\Assets\Thumbnail;
use SilverStripe\Assets\ImageManipulation;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Control\Director;
use SilverStripe\Forms\AssetField;
use SilverStripe\Forms\FileField;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\FieldType\DBComposite;
@ -100,7 +100,7 @@ class DBFile extends DBComposite implements AssetContainer, Thumbnail
public function scaffoldFormField($title = null, $params = null)
{
return AssetField::create($this->getName(), $title);
return FileField::create($this->getName(), $title);
}
/**

View File

@ -1,819 +0,0 @@
<?php
namespace SilverStripe\Forms;
use SilverStripe\Assets\Storage\AssetContainer;
use SilverStripe\Assets\Storage\AssetStore;
use SilverStripe\Assets\Storage\DBFile;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\Security\Permission;
use SilverStripe\Assets\File;
use SilverStripe\Core\Convert;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\HTTPResponse;
use Exception;
/**
* Field for uploading into a DBFile instance.
*
* This formfield has fewer options than UploadField:
* - Assets can only be uploaded, not attached from library
* - Duplicate files will only be renamed, not allowed to overwrite existing references.
* - Only one file may be attached.
* - Files can't be edited once uploaded.
* - Attached files can only be removed, not deleted.
*/
class AssetField extends FormField
{
use UploadReceiver;
/**
* @var array
*/
private static $allowed_actions = array(
'upload'
);
/**
* @var array
*/
private static $url_handlers = array(
'$Action!' => '$Action',
);
private static $casting = array(
'Value' => 'DBFile',
'UploadFieldThumbnailURL' => 'Varchar'
);
/**
* Template to use for the file button widget
*
* @var string
*/
protected $templateFileButtons = null;
/**
* Parent data record. Will be infered from parent form or controller if blank. The destination
* DBFile should be a property of the name $name on this object.
*
* @var DataObject
*/
protected $record;
/**
* Config for this field used in the front-end javascript
* (will be merged into the config of the javascript file upload plugin).
*
* @var array
*/
protected $ufConfig = array();
/**
* Front end config defaults
*
* @config
* @var array
*/
private static $defaultConfig = array(
/**
* Automatically upload the file once selected
*
* @var boolean
*/
'autoUpload' => true,
/**
* Can the user upload new files.
* String values are interpreted as permission codes.
*
* @var boolean|string
*/
'canUpload' => true,
/**
* Shows the target folder for new uploads in the field UI.
* Disable to keep the internal filesystem structure hidden from users.
*
* @var boolean|string
*/
'canPreviewFolder' => true,
/**
* Indicate a change event to the containing form if an upload
* or file edit/delete was performed.
*
* @var boolean
*/
'changeDetection' => true,
/**
* Maximum width of the preview thumbnail
*
* @var integer
*/
'previewMaxWidth' => 80,
/**
* Maximum height of the preview thumbnail
*
* @var integer
*/
'previewMaxHeight' => 60,
/**
* javascript template used to display uploading files
*
* @see javascript/UploadField_uploadtemplate.js
* @var string
*/
'uploadTemplateName' => 'ss-uploadfield-uploadtemplate',
/**
* javascript template used to display already uploaded files
*
* @see javascript/UploadField_downloadtemplate.js
* @var string
*/
'downloadTemplateName' => 'ss-uploadfield-downloadtemplate'
);
/**
* Folder to display in "Select files" list.
* Defaults to listing all files regardless of folder.
* The folder path should be relative to the webroot.
* See {@link FileField->folderName} to set the upload target instead.
*
* @var string
* @example admin/folder/subfolder
*/
protected $displayFolderName;
/**
* Construct a new UploadField instance
*
* @param string $name The internal field name, passed to forms.
* @param string $title The field label.
*/
public function __construct($name, $title = null)
{
$this->addExtraClass('ss-upload'); // class, used by js
$this->addExtraClass('ss-uploadfield'); // class, used by css for uploadfield only
$this->ufConfig = array_merge($this->ufConfig, self::config()->defaultConfig);
$this->constructUploadReceiver();
parent::__construct($name, $title);
// AssetField always uses rename replacement method
$this->getUpload()->setReplaceFile(false);
// filter out '' since this would be a regex problem on JS end
$this->getValidator()->setAllowedExtensions(
array_filter(File::config()->allowed_extensions)
);
// get the lower max size
$maxUpload = File::ini2bytes(ini_get('upload_max_filesize'));
$maxPost = File::ini2bytes(ini_get('post_max_size'));
$this->getValidator()->setAllowedMaxFileSize(min($maxUpload, $maxPost));
}
/**
* Set name of template used for Buttons on each file (replace, edit, remove, delete) (without path or extension)
*
* @param string
* @return $this
*/
public function setTemplateFileButtons($template)
{
$this->templateFileButtons = $template;
return $this;
}
/**
* @return string
*/
public function getTemplateFileButtons()
{
return $this->_templates($this->templateFileButtons, '_FileButtons');
}
/**
* Determine if the target folder for new uploads in is visible the field UI.
*
* @return boolean
*/
public function canPreviewFolder()
{
if (!$this->isActive()) {
return false;
}
$can = $this->getConfig('canPreviewFolder');
if (is_bool($can)) {
return $can;
}
return Permission::check($can);
}
/**
* Determine if the target folder for new uploads in is visible the field UI.
* Disable to keep the internal filesystem structure hidden from users.
*
* @param boolean|string $canPreviewFolder Either a boolean flag, or a
* required permission code
* @return $this Self reference
*/
public function setCanPreviewFolder($canPreviewFolder)
{
return $this->setConfig('canPreviewFolder', $canPreviewFolder);
}
/**
* @param string
* @return $this
*/
public function setDisplayFolderName($name)
{
$this->displayFolderName = $name;
return $this;
}
/**
* @return string
*/
public function getDisplayFolderName()
{
return $this->displayFolderName;
}
/**
* Force a record to be used as "Parent" for uploaded Files (eg a Page with a has_one to File)
*
* @param DataObject $record
* @return $this
*/
public function setRecord($record)
{
$this->record = $record;
return $this;
}
/**
* Get the record to use as "Parent" for uploaded Files (eg a Page with a has_one to File) If none is set, it will
* use Form->getRecord().
*
* @return DataObject
*/
public function getRecord()
{
if (!$this->record
&& $this->form
&& ($record = $this->form->getRecord())
&& $record instanceof DataObject
) {
$this->record = $record;
}
return $this->record;
}
public function setValue($value, $record = null)
{
// Extract value from underlying record
if (empty($value) && $this->getName() && $record instanceof DataObject) {
$name = $this->getName();
$value = $record->$name;
}
// Convert asset container to tuple value
if ($value instanceof AssetContainer) {
if ($value->exists()) {
$value = array(
'Filename' => $value->getFilename(),
'Hash' => $value->getHash(),
'Variant' => $value->getVariant()
);
} else {
$value = null;
}
}
// If javascript is disabled, direct file upload (non-html5 style) can
// trigger a single or multiple file submission. Note that this may be
// included in addition to re-submitted File IDs as above, so these
// should be added to the list instead of operated on independently.
if ($uploadedFile = $this->extractUploadedFileData($value)) {
$value = $this->saveTemporaryFile($uploadedFile, $error);
if (!$value) {
throw new ValidationException($error);
}
}
// Set value using parent
return parent::setValue($value, $record);
}
public function Value()
{
// Re-override FileField Value to use data value
return $this->dataValue();
}
public function saveInto(DataObjectInterface $record)
{
// Check required relation details are available
$name = $this->getName();
if (!$name) {
return $this;
}
$value = $this->Value();
foreach (array('Filename', 'Hash', 'Variant') as $part) {
$partValue = isset($value[$part])
? $value[$part]
: null;
$record->setField("{$name}{$part}", $partValue);
}
return $this;
}
/**
* Assign a front-end config variable for the upload field
*
* @see https://github.com/blueimp/jQuery-File-Upload/wiki/Options for the list of front end options available
*
* @param string $key
* @param mixed $val
* @return $this self reference
*/
public function setConfig($key, $val)
{
$this->ufConfig[$key] = $val;
return $this;
}
/**
* Gets a front-end config variable for the upload field
*
* @see https://github.com/blueimp/jQuery-File-Upload/wiki/Options for the list of front end options available
*
* @param string $key
* @return mixed
*/
public function getConfig($key)
{
if (isset($this->ufConfig[$key])) {
return $this->ufConfig[$key];
}
}
/**
* Determine if the field should automatically upload the file.
*
* @return boolean
*/
public function getAutoUpload()
{
return $this->getConfig('autoUpload');
}
/**
* Determine if the field should automatically upload the file
*
* @param boolean $autoUpload
* @return $this Self reference
*/
public function setAutoUpload($autoUpload)
{
return $this->setConfig('autoUpload', $autoUpload);
}
/**
* Determine if the user has permission to upload.
*
* @return boolean
*/
public function canUpload()
{
if (!$this->isActive()) {
return false;
}
$can = $this->getConfig('canUpload');
if (is_bool($can)) {
return $can;
}
return Permission::check($can);
}
/**
* Specify whether the user can upload files.
* String values will be treated as required permission codes
*
* @param bool|string $canUpload Either a boolean flag, or a required
* permission code
* @return $this Self reference
*/
public function setCanUpload($canUpload)
{
return $this->setConfig('canUpload', $canUpload);
}
/**
* Returns true if the field is neither readonly nor disabled
*
* @return bool
*/
public function isActive()
{
return !$this->isDisabled() && !$this->isReadonly();
}
/**
* Gets thumbnail width. Defaults to 80
*
* @return int
*/
public function getPreviewMaxWidth()
{
return $this->getConfig('previewMaxWidth');
}
/**
* Set thumbnail width.
*
* @param int $previewMaxWidth
* @return $this Self reference
*/
public function setPreviewMaxWidth($previewMaxWidth)
{
return $this->setConfig('previewMaxWidth', $previewMaxWidth);
}
/**
* Gets thumbnail height. Defaults to 60
*
* @return int
*/
public function getPreviewMaxHeight()
{
return $this->getConfig('previewMaxHeight');
}
/**
* Set thumbnail height.
*
* @param int $previewMaxHeight
* @return $this Self reference
*/
public function setPreviewMaxHeight($previewMaxHeight)
{
return $this->setConfig('previewMaxHeight', $previewMaxHeight);
}
/**
* javascript template used to display uploading files
* Defaults to 'ss-uploadfield-uploadtemplate'
*
* @see javascript/UploadField_uploadtemplate.js
* @return string
*/
public function getUploadTemplateName()
{
return $this->getConfig('uploadTemplateName');
}
/**
* Set javascript template used to display uploading files
*
* @param string $uploadTemplateName
* @return $this Self reference
*/
public function setUploadTemplateName($uploadTemplateName)
{
return $this->setConfig('uploadTemplateName', $uploadTemplateName);
}
/**
* javascript template used to display already uploaded files
* Defaults to 'ss-downloadfield-downloadtemplate'
*
* @see javascript/DownloadField_downloadtemplate.js
* @return string
*/
public function getDownloadTemplateName()
{
return $this->getConfig('downloadTemplateName');
}
/**
* Set javascript template used to display already uploaded files
*
* @param string $downloadTemplateName
* @return $this Self reference
*/
public function setDownloadTemplateName($downloadTemplateName)
{
return $this->setConfig('downloadTemplateName', $downloadTemplateName);
}
public function extraClass()
{
if ($this->isDisabled()) {
$this->addExtraClass('disabled');
}
if ($this->isReadonly()) {
$this->addExtraClass('readonly');
}
return parent::extraClass();
}
public function Field($properties = array())
{
// Calculated config as per jquery.fileupload-ui.js
$config = array(
'allowedMaxFileNumber' => 1, // Only one file allowed for AssetField
'url' => $this->Link('upload'),
'urlSelectDialog' => $this->Link('select'),
'urlAttach' => $this->Link('attach'),
'urlFileExists' => $this->link('fileexists'),
'acceptFileTypes' => '.+$',
// Fileupload treats maxNumberOfFiles as the max number of _additional_ items allowed
'maxNumberOfFiles' => $this->Value() ? 0 : 1,
'replaceFile' => false, // Should always be false for AssetField
);
// Validation: File extensions
if ($allowedExtensions = $this->getAllowedExtensions()) {
$config['acceptFileTypes'] = '(\.|\/)(' . implode('|', $allowedExtensions) . ')$';
$config['errorMessages']['acceptFileTypes'] = _t(
'File.INVALIDEXTENSIONSHORT',
'Extension is not allowed'
);
}
// Validation: File size
if ($allowedMaxFileSize = $this->getValidator()->getAllowedMaxFileSize()) {
$config['maxFileSize'] = $allowedMaxFileSize;
$config['errorMessages']['maxFileSize'] = _t(
'File.TOOLARGESHORT',
'Filesize exceeds {size}',
array('size' => File::format_size($config['maxFileSize']))
);
}
$mergedConfig = array_merge($config, $this->ufConfig);
return $this->customise(array(
'ConfigString' => Convert::raw2json($mergedConfig),
'UploadFieldFileButtons' => $this->renderWith($this->getTemplateFileButtons())
))->renderWith($this->getTemplates());
}
/**
* Validation method for this field, called when the entire form is validated
*
* @param Validator $validator
* @return boolean
*/
public function validate($validator)
{
$name = $this->getName();
$value = $this->Value();
// If there is no file then quit
if (!$value) {
return true;
}
// Revalidate each file against nested validator
$this->getUpload()->clearErrors();
// Generate $_FILES style file attribute array for upload validator
$store = $this->getAssetStore();
$mime = $store->getMimeType($value['Filename'], $value['Hash'], $value['Variant']);
$metadata = $store->getMetadata($value['Filename'], $value['Hash'], $value['Variant']);
$tmpFile = array(
'name' => $value['Filename'],
'type' => $mime,
'size' => isset($metadata['size']) ? $metadata['size'] : 0,
'tmp_name' => null, // Should bypass is_uploaded_file check
'error' => UPLOAD_ERR_OK,
);
$this->getUpload()->validate($tmpFile);
// Check all errors
if ($errors = $this->getUpload()->getErrors()) {
foreach ($errors as $error) {
$validator->validationError($name, $error, "validation");
}
return false;
}
return true;
}
/**
* Given an array of post variables, extract all temporary file data into an array
*
* @param array $postVars Array of posted form data
* @return array data for uploaded file
*/
protected function extractUploadedFileData($postVars)
{
// Note: Format of posted file parameters in php is a feature of using
// <input name='{$Name}[Upload]' /> for multiple file uploads
// Skip empty file
if (empty($postVars['tmp_name'])) {
return null;
}
// Return single level array for posted file
/** @skipUpgrade */
if (empty($postVars['tmp_name']['Upload'])) {
return $postVars;
}
// Extract posted feedback value
$tmpFile = array();
foreach (array('name', 'type', 'tmp_name', 'error', 'size') as $field) {
/** @skipUpgrade */
$tmpFile[$field] = $postVars[$field]['Upload'];
}
return $tmpFile;
}
/**
* Loads the temporary file data into the asset store, and return the tuple details
* for the result.
*
* @param array $tmpFile Temporary file data
* @param string $error Error message
* @return array Result of saved file, or null if error
*/
protected function saveTemporaryFile($tmpFile, &$error = null)
{
$error = null;
if (empty($tmpFile)) {
$error = _t('UploadField.FIELDNOTSET', 'File information not found');
return null;
}
if ($tmpFile['error']) {
$error = $tmpFile['error'];
return null;
}
// Get the uploaded file into a new file object.
try {
$result = $this
->getUpload()
->load($tmpFile, $this->getFolderName());
} catch (Exception $e) {
// we shouldn't get an error here, but just in case
$error = $e->getMessage();
return null;
}
// Check if upload field has an error
if ($this->getUpload()->isError()) {
$error = implode(' ' . PHP_EOL, $this->getUpload()->getErrors());
return null;
}
// return tuple array of Filename, Hash and Variant
return $result;
}
/**
* Safely encodes the File object with all standard fields required
* by the front end
*
* @param string $filename
* @param string $hash
* @param string $variant
* @return array Encoded list of file attributes
*/
protected function encodeAssetAttributes($filename, $hash, $variant)
{
// Force regeneration of file thumbnail for this tuple (without saving into db)
$object = DBFile::create();
$object->setValue(array('Filename' => $filename, 'Hash' => $hash, 'Variant' => $variant));
return array(
'filename' => $filename,
'hash' => $hash,
'variant' => $variant,
'name' => $object->getBasename(),
'url' => $object->getURL(),
'thumbnail_url' => $object->ThumbnailURL(
$this->getPreviewMaxWidth(),
$this->getPreviewMaxHeight()
),
'size' => $object->getAbsoluteSize(),
'type' => File::get_file_type($object->getFilename()),
'buttons' => (string)$this->renderWith($this->getTemplateFileButtons()),
'fieldname' => $this->getName()
);
}
/**
* Action to handle upload of a single file
*
* @param HTTPRequest $request
* @return HTTPResponse
*/
public function upload(HTTPRequest $request)
{
if ($this->isDisabled() || $this->isReadonly() || !$this->canUpload()) {
return $this->httpError(403);
}
// Protect against CSRF on destructive action
$token = $this
->getForm()
->getSecurityToken();
if (!$token->checkRequest($request)) {
return $this->httpError(400);
}
// Get form details
$name = $this->getName();
$postVars = $request->postVar($name);
// Extract uploaded files from Form data
$uploadedFile = $this->extractUploadedFileData($postVars);
if (!$uploadedFile) {
return $this->httpError(400);
}
// Save the temporary files into a File objects
// and save data/error on a per file basis
$result = $this->saveTemporaryFile($uploadedFile, $error);
if (empty($result)) {
$return = array('error' => $error);
} else {
$return = $this->encodeAssetAttributes($result['Filename'], $result['Hash'], $result['Variant']);
}
$this
->getUpload()
->clearErrors();
// Format response with json
$response = new HTTPResponse(Convert::raw2json(array($return)));
$response->addHeader('Content-Type', 'text/plain');
return $response;
}
public function performReadonlyTransformation()
{
$clone = clone $this;
$clone->addExtraClass('readonly');
$clone->setReadonly(true);
return $clone;
}
/**
* Gets the foreign class that needs to be created, or 'File' as default if there
* is no relationship, or it cannot be determined.
*
* @param string $default Default value to return if no value could be calculated
* @return string Foreign class name.
*/
public function getRelationAutosetClass($default = 'SilverStripe\\Assets\\File')
{
// Don't autodetermine relation if no relationship between parent record
if (!$this->relationAutoSetting) {
return $default;
}
// Check record and name
$name = $this->getName();
$record = $this->getRecord();
if (empty($name) || empty($record)) {
return $default;
} else {
$class = $record->getRelationClass($name);
return empty($class) ? $default : $class;
}
}
/**
* @return AssetStore
*/
protected function getAssetStore()
{
return Injector::inst()->get('AssetStore');
}
public function getAttributes()
{
return array_merge(
parent::getAttributes(),
['type' => 'file']
);
}
}

View File

@ -15,9 +15,6 @@ use SilverStripe\Core\Object;
* Please set a validator on the form-object to get feedback
* about imposed filesize/extension restrictions.
*
* See {@link UploadField} For a more full-featured field
* (incl. ajax-friendly uploads, previews and relationship management).
*
* <b>Usage</p>
*
* If you want to implement a FileField into a form element, you need to pass it an array of source data.

View File

@ -3,8 +3,6 @@
namespace SilverStripe\Forms\HTMLEditor;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Folder;
use SilverStripe\Assets\Upload;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Control\Controller;
use SilverStripe\Control\Director;
@ -16,24 +14,14 @@ use SilverStripe\Forms\CompositeField;
use SilverStripe\Forms\EmailField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
use SilverStripe\Forms\GridField\GridFieldDetailForm;
use SilverStripe\Forms\GridField\GridFieldFilterHeader;
use SilverStripe\Forms\GridField\GridFieldPaginator;
use SilverStripe\Forms\GridField\GridFieldSortableHeader;
use SilverStripe\Forms\HiddenField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\OptionsetField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\TreeDropdownField;
use SilverStripe\Forms\UploadField;
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\View\Requirements;
use SilverStripe\View\SSViewer;
/**
@ -130,7 +118,7 @@ class HTMLEditorField_Toolbar extends RequestHandler
new LiteralField(
'Heading',
sprintf(
'<h3 class="htmleditorfield-mediaform-heading insert">%s</h3>',
'<h3 class="htmleditorfield-linkform-heading insert">%s</h3>',
_t('HTMLEditorField.LINK', 'Insert Link')
)
)
@ -186,7 +174,7 @@ class HTMLEditorField_Toolbar extends RequestHandler
$form->unsetValidator();
$form->loadDataFrom($this);
$form->addExtraClass('htmleditorfield-form htmleditorfield-linkform cms-mediaform-content');
$form->addExtraClass('htmleditorfield-form htmleditorfield-linkform cms-linkform-content');
$this->extend('updateLinkForm', $form);
@ -230,7 +218,7 @@ class HTMLEditorField_Toolbar extends RequestHandler
protected function viewfile_getLocalFileByID($id)
{
/** @var File $file */
$file = DataObject::get_by_id('SilverStripe\\Assets\\File', $id);
$file = DataObject::get_by_id(File::class, $id);
if ($file && $file->canView()) {
return array($file, $file->getURL());
}

View File

@ -1,1114 +0,0 @@
<?php
namespace SilverStripe\Forms;
use SilverStripe\Assets\Storage\AssetContainer;
use SilverStripe\Assets\File;
use SilverStripe\Assets\FileNameFilter;
use SilverStripe\Assets\Folder;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\Core\Convert;
use SilverStripe\Core\Object;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\ValidationException;
use SilverStripe\Security\Permission;
use SilverStripe\View\ArrayData;
use SilverStripe\View\ViewableData;
use SilverStripe\View\ViewableData_Customised;
use InvalidArgumentException;
use Exception;
/**
* Field for uploading single or multiple files of all types, including images.
*
* <b>Features (some might not be available to old browsers):</b>
*
* - File Drag&Drop support
* - Progressbar
* - Image thumbnail/file icons even before upload finished
* - Saving into relations on form submit
* - Edit file
* - allowedExtensions is by default File::$allowed_extensions<li>maxFileSize the value of min(upload_max_filesize,
* post_max_size) from php.ini
*
* <>Usage</b>
*
* @example <code>
* $UploadField = new UploadField('AttachedImages', 'Please upload some images <span>(max. 5 files)</span>');
* $UploadField->setAllowedFileCategories('image');
* $UploadField->setAllowedMaxFileNumber(5);
* </code>
*
* Caution: The form field does not include any JavaScript or CSS when used outside of the CMS context,
* since the required frontend dependencies are included through CMS bundling.
*/
class UploadField extends FormField
{
use FileUploadReceiver;
/**
* @var array
*/
private static $allowed_actions = array(
'upload',
'attach',
'handleItem',
'handleSelect',
'fileexists'
);
/**
* @var array
*/
private static $url_handlers = array(
'item/$ID' => 'handleItem',
'select' => 'handleSelect',
'$Action!' => '$Action',
);
/**
* Template to use for the file button widget
*
* @var string
*/
protected $templateFileButtons = null;
/**
* Template to use for the edit form
*
* @var string
*/
protected $templateFileEdit = null;
/**
* Config for this field used in the front-end javascript
* (will be merged into the config of the javascript file upload plugin).
*
* @var array
*/
protected $ufConfig = array();
/**
* Front end config defaults
*
* @config
* @var array
*/
private static $defaultConfig = array(
/**
* Automatically upload the file once selected
*
* @var boolean
*/
'autoUpload' => true,
/**
* Restriction on number of files that may be set for this field. Set to null to allow
* unlimited. If record has a has_one and allowedMaxFileNumber is null, it will be set to 1.
* The resulting value will be set to maxNumberOfFiles
*
* @var integer
*/
'allowedMaxFileNumber' => null,
/**
* Can the user upload new files, or just select from existing files.
* String values are interpreted as permission codes.
*
* @var boolean|string
*/
'canUpload' => true,
/**
* Can the user attach files from the assets archive on the site?
* String values are interpreted as permission codes.
*
* @var boolean|string
*/
'canAttachExisting' => "CMS_ACCESS_AssetAdmin",
/**
* Shows the target folder for new uploads in the field UI.
* Disable to keep the internal filesystem structure hidden from users.
*
* @var boolean|string
*/
'canPreviewFolder' => true,
/**
* Indicate a change event to the containing form if an upload
* or file edit/delete was performed.
*
* @var boolean
*/
'changeDetection' => true,
/**
* Maximum width of the preview thumbnail
*
* @var integer
*/
'previewMaxWidth' => 80,
/**
* Maximum height of the preview thumbnail
*
* @var integer
*/
'previewMaxHeight' => 60,
/**
* javascript template used to display uploading files
*
* @see javascript/UploadField_uploadtemplate.js
* @var string
*/
'uploadTemplateName' => 'ss-uploadfield-uploadtemplate',
/**
* javascript template used to display already uploaded files
*
* @see javascript/UploadField_downloadtemplate.js
* @var string
*/
'downloadTemplateName' => 'ss-uploadfield-downloadtemplate',
/**
* Show a warning when overwriting a file.
* This requires Upload->replaceFile config to be set to true, otherwise
* files will be renamed instead of overwritten
*
* @see Upload
* @var boolean
*/
'overwriteWarning' => true
);
/**
* @var String Folder to display in "Select files" list.
* Defaults to listing all files regardless of folder.
* The folder path should be relative to the webroot.
* See {@link FileField->folderName} to set the upload target instead.
* @example admin/folder/subfolder
*/
protected $displayFolderName;
/**
* FieldList $fields or string $name (of a method on File to provide a fields) for the EditForm
* @example 'getCMSFields'
*
* @var FieldList|string
*/
protected $fileEditFields = null;
/**
* FieldList $actions or string $name (of a method on File to provide a actions) for the EditForm
* @example 'getCMSActions'
*
* @var FieldList|string
*/
protected $fileEditActions = null;
/**
* Validator (eg RequiredFields) or string $name (of a method on File to provide a Validator) for the EditForm
* @example 'getCMSValidator'
*
* @var RequiredFields|string
*/
protected $fileEditValidator = null;
/**
* Construct a new UploadField instance
*
* @param string $name The internal field name, passed to forms.
* @param string $title The field label.
* @param SS_List $items If no items are defined, the field will try to auto-detect an existing relation on
* @link $record}, with the same name as the field name.
*/
public function __construct($name, $title = null, SS_List $items = null)
{
// TODO thats the first thing that came to my head, feel free to change it
$this->addExtraClass('ss-upload'); // class, used by js
$this->addExtraClass('ss-uploadfield'); // class, used by css for uploadfield only
$this->ufConfig = self::config()->defaultConfig;
$this->constructFileUploadReceiver();
parent::__construct($name, $title);
if ($items) {
$this->setItems($items);
}
}
/**
* Set name of template used for Buttons on each file (replace, edit, remove, delete) (without path or extension)
*
* @param string $template
* @return $this
*/
public function setTemplateFileButtons($template)
{
$this->templateFileButtons = $template;
return $this;
}
/**
* @return string
*/
public function getTemplateFileButtons()
{
return $this->_templates($this->templateFileButtons, '_FileButtons');
}
/**
* Set name of template used for the edit (inline & popup) of a file file (without path or extension)
*
* @param string $template
* @return $this
*/
public function setTemplateFileEdit($template)
{
$this->templateFileEdit = $template;
return $this;
}
/**
* @return string
*/
public function getTemplateFileEdit()
{
return $this->_templates($this->templateFileEdit, '_FileEdit');
}
/**
* Determine if the target folder for new uploads in is visible the field UI.
*
* @return boolean
*/
public function canPreviewFolder()
{
if (!$this->isActive()) {
return false;
}
$can = $this->getConfig('canPreviewFolder');
return (is_bool($can)) ? $can : Permission::check($can);
}
/**
* Determine if the target folder for new uploads in is visible the field UI.
* Disable to keep the internal filesystem structure hidden from users.
*
* @param boolean|string $canPreviewFolder Either a boolean flag, or a
* required permission code
* @return UploadField Self reference
*/
public function setCanPreviewFolder($canPreviewFolder)
{
return $this->setConfig('canPreviewFolder', $canPreviewFolder);
}
/**
* Determine if the field should show a warning when overwriting a file.
* This requires Upload->replaceFile config to be set to true, otherwise
* files will be renamed instead of overwritten (although the warning will
* still be displayed)
*
* @return boolean
*/
public function getOverwriteWarning()
{
return $this->getConfig('overwriteWarning');
}
/**
* Determine if the field should show a warning when overwriting a file.
* This requires Upload->replaceFile config to be set to true, otherwise
* files will be renamed instead of overwritten (although the warning will
* still be displayed)
*
* @param boolean $overwriteWarning
* @return UploadField Self reference
*/
public function setOverwriteWarning($overwriteWarning)
{
return $this->setConfig('overwriteWarning', $overwriteWarning);
}
/**
* @param string $name
* @return $this
*/
public function setDisplayFolderName($name)
{
$this->displayFolderName = $name;
return $this;
}
/**
* @return String
*/
public function getDisplayFolderName()
{
return $this->displayFolderName;
}
/**
* Retrieves a customised list of all File records to ensure they are
* properly viewable when rendered in the field template.
*
* @return SS_List[ViewableData_Customised]
*/
public function getCustomisedItems()
{
$customised = new ArrayList();
foreach ($this->getItems() as $file) {
$customised->push($this->customiseFile($file));
}
return $customised;
}
/**
* Customises a file with additional details suitable for rendering in the
* UploadField.ss template
*
* @param ViewableData|AssetContainer $file
* @return ViewableData_Customised
*/
protected function customiseFile(AssetContainer $file)
{
$file = $file->customise(array(
'UploadFieldThumbnailURL' => $this->getThumbnailURLForFile($file),
'UploadFieldDeleteLink' => $this->getItemHandler($file->ID)->DeleteLink(),
'UploadFieldEditLink' => $this->getItemHandler($file->ID)->EditLink(),
'UploadField' => $this
));
// we do this in a second customise to have the access to the previous customisations
return $file->customise(array(
'UploadFieldFileButtons' => $file->renderWith($this->getTemplateFileButtons())
));
}
/**
* Assign a front-end config variable for the upload field
*
* @see https://github.com/blueimp/jQuery-File-Upload/wiki/Options for the list of front end options available
*
* @param string $key
* @param mixed $val
* @return UploadField self reference
*/
public function setConfig($key, $val)
{
$this->ufConfig[$key] = $val;
return $this;
}
/**
* Gets a front-end config variable for the upload field
*
* @see https://github.com/blueimp/jQuery-File-Upload/wiki/Options for the list of front end options available
*
* @param string $key
* @return mixed
*/
public function getConfig($key)
{
if (!isset($this->ufConfig[$key])) {
return null;
}
return $this->ufConfig[$key];
}
/**
* Determine if the field should automatically upload the file.
*
* @return boolean
*/
public function getAutoUpload()
{
return $this->getConfig('autoUpload');
}
/**
* Determine if the field should automatically upload the file
*
* @param boolean $autoUpload
* @return UploadField Self reference
*/
public function setAutoUpload($autoUpload)
{
return $this->setConfig('autoUpload', $autoUpload);
}
/**
* Determine maximum number of files allowed to be attached
* Defaults to 1 for has_one and null (unlimited) for
* many_many and has_many relations.
*
* @return integer|null Maximum limit, or null for no limit
*/
public function getAllowedMaxFileNumber()
{
$allowedMaxFileNumber = $this->getConfig('allowedMaxFileNumber');
// if there is a has_one relation with that name on the record and
// allowedMaxFileNumber has not been set, it's wanted to be 1
if (empty($allowedMaxFileNumber)) {
$record = $this->getRecord();
$name = $this->getName();
if ($record && DataObject::getSchema()->hasOneComponent(get_class($record), $name)) {
return 1; // Default for has_one
} else {
return null; // Default for has_many and many_many
}
} else {
return $allowedMaxFileNumber;
}
}
/**
* Determine maximum number of files allowed to be attached.
*
* @param integer|null $allowedMaxFileNumber Maximum limit. 0 or null will be treated as unlimited
* @return UploadField Self reference
*/
public function setAllowedMaxFileNumber($allowedMaxFileNumber)
{
return $this->setConfig('allowedMaxFileNumber', $allowedMaxFileNumber);
}
/**
* Determine if the user has permission to upload.
*
* @return boolean
*/
public function canUpload()
{
if (!$this->isActive()) {
return false;
}
$can = $this->getConfig('canUpload');
return (is_bool($can)) ? $can : Permission::check($can);
}
/**
* Specify whether the user can upload files.
* String values will be treated as required permission codes
*
* @param boolean|string $canUpload Either a boolean flag, or a required
* permission code
* @return UploadField Self reference
*/
public function setCanUpload($canUpload)
{
return $this->setConfig('canUpload', $canUpload);
}
/**
* Determine if the user has permission to attach existing files
* By default returns true if the user has the CMS_ACCESS_AssetAdmin permission
*
* @return boolean
*/
public function canAttachExisting()
{
if (!$this->isActive()) {
return false;
}
$can = $this->getConfig('canAttachExisting');
return (is_bool($can)) ? $can : Permission::check($can);
}
/**
* Returns true if the field is neither readonly nor disabled
*
* @return boolean
*/
public function isActive()
{
return !$this->isDisabled() && !$this->isReadonly();
}
/**
* Specify whether the user can attach existing files
* String values will be treated as required permission codes
*
* @param boolean|string $canAttachExisting Either a boolean flag, or a
* required permission code
* @return UploadField Self reference
*/
public function setCanAttachExisting($canAttachExisting)
{
return $this->setConfig('canAttachExisting', $canAttachExisting);
}
/**
* Gets thumbnail width. Defaults to 80
*
* @return integer
*/
public function getPreviewMaxWidth()
{
return $this->getConfig('previewMaxWidth');
}
/**
* @see UploadField::getPreviewMaxWidth()
*
* @param integer $previewMaxWidth
* @return UploadField Self reference
*/
public function setPreviewMaxWidth($previewMaxWidth)
{
return $this->setConfig('previewMaxWidth', $previewMaxWidth);
}
/**
* Gets thumbnail height. Defaults to 60
*
* @return integer
*/
public function getPreviewMaxHeight()
{
return $this->getConfig('previewMaxHeight');
}
/**
* @see UploadField::getPreviewMaxHeight()
*
* @param integer $previewMaxHeight
* @return UploadField Self reference
*/
public function setPreviewMaxHeight($previewMaxHeight)
{
return $this->setConfig('previewMaxHeight', $previewMaxHeight);
}
/**
* javascript template used to display uploading files
* Defaults to 'ss-uploadfield-uploadtemplate'
*
* @see javascript/UploadField_uploadtemplate.js
* @return string
*/
public function getUploadTemplateName()
{
return $this->getConfig('uploadTemplateName');
}
/**
* @see UploadField::getUploadTemplateName()
*
* @param string $uploadTemplateName
* @return UploadField Self reference
*/
public function setUploadTemplateName($uploadTemplateName)
{
return $this->setConfig('uploadTemplateName', $uploadTemplateName);
}
/**
* javascript template used to display already uploaded files
* Defaults to 'ss-downloadfield-downloadtemplate'
*
* @see javascript/DownloadField_downloadtemplate.js
* @return string
*/
public function getDownloadTemplateName()
{
return $this->getConfig('downloadTemplateName');
}
/**
* @see Uploadfield::getDownloadTemplateName()
*
* @param string $downloadTemplateName
* @return Uploadfield Self reference
*/
public function setDownloadTemplateName($downloadTemplateName)
{
return $this->setConfig('downloadTemplateName', $downloadTemplateName);
}
/**
* FieldList $fields for the EditForm
* @example 'getCMSFields'
*
* @param DataObject $file File context to generate fields for
* @return FieldList List of form fields
*/
public function getFileEditFields(DataObject $file)
{
// Empty actions, generate default
if (empty($this->fileEditFields)) {
$fields = $file->getCMSFields();
// Only display main tab, to avoid overly complex interface
if ($fields->hasTabSet() && ($mainTab = $fields->findOrMakeTab('Root.Main'))) {
$fields = $mainTab->Fields();
}
return $fields;
}
// Fields instance
if ($this->fileEditFields instanceof FieldList) {
return $this->fileEditFields;
}
// Method to call on the given file
if ($file->hasMethod($this->fileEditFields)) {
return $file->{$this->fileEditFields}();
}
throw new InvalidArgumentException("Invalid value for UploadField::fileEditFields");
}
/**
* FieldList $fields or string $name (of a method on File to provide a fields) for the EditForm
* @example 'getCMSFields'
*
* @param FieldList|string
* @return Uploadfield Self reference
*/
public function setFileEditFields($fileEditFields)
{
$this->fileEditFields = $fileEditFields;
return $this;
}
/**
* FieldList $actions or string $name (of a method on File to provide a actions) for the EditForm
* @example 'getCMSActions'
*
* @param DataObject $file File context to generate form actions for
* @return FieldList Field list containing FormAction
*/
public function getFileEditActions(DataObject $file)
{
// Empty actions, generate default
if (empty($this->fileEditActions)) {
$actions = new FieldList($saveAction = new FormAction('doEdit', _t('UploadField.DOEDIT', 'Save')));
$saveAction->addExtraClass('ss-ui-action-constructive icon-accept');
return $actions;
}
// Actions instance
if ($this->fileEditActions instanceof FieldList) {
return $this->fileEditActions;
}
// Method to call on the given file
if ($file->hasMethod($this->fileEditActions)) {
return $file->{$this->fileEditActions}();
}
throw new InvalidArgumentException("Invalid value for UploadField::fileEditActions");
}
/**
* FieldList $actions or string $name (of a method on File to provide a actions) for the EditForm
* @example 'getCMSActions'
*
* @param FieldList|string
* @return Uploadfield Self reference
*/
public function setFileEditActions($fileEditActions)
{
$this->fileEditActions = $fileEditActions;
return $this;
}
/**
* Determines the validator to use for the edit form
* @example 'getCMSValidator'
*
* @param DataObject $file File context to generate validator from
* @return Validator Validator object
*/
public function getFileEditValidator(DataObject $file)
{
// Empty validator
if (empty($this->fileEditValidator)) {
return null;
}
// Validator instance
if ($this->fileEditValidator instanceof Validator) {
return $this->fileEditValidator;
}
// Method to call on the given file
if ($file->hasMethod($this->fileEditValidator)) {
return $file->{$this->fileEditValidator}();
}
throw new InvalidArgumentException("Invalid value for UploadField::fileEditValidator");
}
/**
* Validator (eg RequiredFields) or string $name (of a method on File to provide a Validator) for the EditForm
* @example 'getCMSValidator'
*
* @param Validator|string
* @return Uploadfield Self reference
*/
public function setFileEditValidator($fileEditValidator)
{
$this->fileEditValidator = $fileEditValidator;
return $this;
}
/**
*
* @param File|AssetContainer $file
* @return string URL to thumbnail
*/
protected function getThumbnailURLForFile(AssetContainer $file)
{
if (!$file->exists()) {
return null;
}
// Attempt to generate image at given size
$width = $this->getPreviewMaxWidth();
$height = $this->getPreviewMaxHeight();
if ($file->hasMethod('ThumbnailURL')) {
return $file->ThumbnailURL($width, $height);
}
if ($file->hasMethod('Thumbnail')) {
return $file->Thumbnail($width, $height)->getURL();
}
if ($file->hasMethod('Fit')) {
return $file->Fit($width, $height)->getURL();
}
// Check if unsized icon is available
if ($file->hasMethod('getIcon')) {
return $file->getIcon();
}
return null;
}
public function getAttributes()
{
return array_merge(
parent::getAttributes(),
array(
'type' => 'file',
'data-selectdialog-url' => $this->Link('select')
)
);
}
public function extraClass()
{
if ($this->isDisabled()) {
$this->addExtraClass('disabled');
}
if ($this->isReadonly()) {
$this->addExtraClass('readonly');
}
return parent::extraClass();
}
public function Field($properties = array())
{
// Calculated config as per jquery.fileupload-ui.js
$allowedMaxFileNumber = $this->getAllowedMaxFileNumber();
$config = array(
'url' => $this->Link('upload'),
'urlSelectDialog' => $this->Link('select'),
'urlAttach' => $this->Link('attach'),
'urlFileExists' => $this->Link('fileexists'),
'acceptFileTypes' => '.+$',
// Fileupload treats maxNumberOfFiles as the max number of _additional_ items allowed
'maxNumberOfFiles' => $allowedMaxFileNumber ? ($allowedMaxFileNumber - count($this->getItemIDs())) : null,
'replaceFile' => $this->getUpload()->getReplaceFile(),
);
// Validation: File extensions
if ($allowedExtensions = $this->getAllowedExtensions()) {
$config['acceptFileTypes'] = '(\.|\/)(' . implode('|', $allowedExtensions) . ')$';
$config['errorMessages']['acceptFileTypes'] = _t(
'File.INVALIDEXTENSIONSHORT',
'Extension is not allowed'
);
}
// Validation: File size
if ($allowedMaxFileSize = $this->getValidator()->getAllowedMaxFileSize()) {
$config['maxFileSize'] = $allowedMaxFileSize;
$config['errorMessages']['maxFileSize'] = _t(
'File.TOOLARGESHORT',
'File size exceeds {size}',
array('size' => File::format_size($config['maxFileSize']))
);
}
// Validation: Number of files
if ($allowedMaxFileNumber) {
if ($allowedMaxFileNumber > 1) {
$config['errorMessages']['maxNumberOfFiles'] = _t(
'UploadField.MAXNUMBEROFFILESSHORT',
'Can only upload {count} files',
array('count' => $allowedMaxFileNumber)
);
} else {
$config['errorMessages']['maxNumberOfFiles'] = _t(
'UploadField.MAXNUMBEROFFILESONE',
'Can only upload one file'
);
}
}
// add overwrite warning error message to the config object sent to Javascript
if ($this->getOverwriteWarning()) {
$config['errorMessages']['overwriteWarning'] =
_t('UploadField.OVERWRITEWARNING', 'File with the same name already exists');
}
$mergedConfig = array_merge($config, $this->ufConfig);
return parent::Field(array(
'configString' => Convert::raw2json($mergedConfig),
'config' => new ArrayData($mergedConfig),
'multiple' => $allowedMaxFileNumber !== 1
));
}
/**
* Validation method for this field, called when the entire form is validated
*
* @param Validator $validator
* @return boolean
*/
public function validate($validator)
{
$name = $this->getName();
$files = $this->getItems();
// If there are no files then quit
if ($files->count() == 0) {
return true;
}
// Check max number of files
$maxFiles = $this->getAllowedMaxFileNumber();
if ($maxFiles && ($files->count() > $maxFiles)) {
$validator->validationError(
$name,
_t(
'UploadField.MAXNUMBEROFFILES',
'Max number of {count} file(s) exceeded.',
array('count' => $maxFiles)
),
"validation"
);
return false;
}
// Revalidate each file against nested validator
$this->upload->clearErrors();
foreach ($files as $file) {
// Generate $_FILES style file attribute array for upload validator
$tmpFile = array(
'name' => $file->Name,
'type' => null, // Not used for type validation
'size' => $file->AbsoluteSize,
'tmp_name' => null, // Should bypass is_uploaded_file check
'error' => UPLOAD_ERR_OK,
);
$this->upload->validate($tmpFile);
}
// Check all errors
if ($errors = $this->upload->getErrors()) {
foreach ($errors as $error) {
$validator->validationError($name, $error, "validation");
}
return false;
}
return true;
}
/**
* @param HTTPRequest $request
* @return UploadField_ItemHandler
*/
public function handleItem(HTTPRequest $request)
{
return $this->getItemHandler($request->param('ID'));
}
/**
* @param int $itemID
* @return UploadField_ItemHandler
*/
public function getItemHandler($itemID)
{
return UploadField_ItemHandler::create($this, $itemID);
}
/**
* @param HTTPRequest $request
* @return UploadField_SelectHandler
*/
public function handleSelect(HTTPRequest $request)
{
if (!$this->canAttachExisting()) {
return $this->httpError(403);
}
return UploadField_SelectHandler::create($this, $this->getFolderName());
}
/**
* Safely encodes the File object with all standard fields required
* by the front end
*
* @param File|AssetContainer $file Object which contains a file
* @return array Array encoded list of file attributes
*/
protected function encodeFileAttributes(AssetContainer $file)
{
// Collect all output data.
$customised = $this->customiseFile($file);
return array(
'id' => $file->ID,
'name' => basename($file->getFilename()),
'url' => $file->getURL(),
'thumbnail_url' => $customised->UploadFieldThumbnailURL,
'edit_url' => $customised->UploadFieldEditLink,
'size' => $file->getAbsoluteSize(),
'type' => File::get_file_type($file->getFilename()),
'buttons' => (string)$customised->UploadFieldFileButtons,
'fieldname' => $this->getName()
);
}
/**
* Action to handle upload of a single file
*
* @param HTTPRequest $request
* @return HTTPResponse
* @return HTTPResponse
*/
public function upload(HTTPRequest $request)
{
if ($this->isDisabled() || $this->isReadonly() || !$this->canUpload()) {
return $this->httpError(403);
}
// Protect against CSRF on destructive action
$token = $this->getForm()->getSecurityToken();
if (!$token->checkRequest($request)) {
return $this->httpError(400);
}
// Get form details
$name = $this->getName();
$postVars = $request->postVar($name);
// Extract uploaded files from Form data
$uploadedFiles = $this->extractUploadedFileData($postVars);
$return = array();
// Save the temporary files into a File objects
// and save data/error on a per file basis
foreach ($uploadedFiles as $tempFile) {
$file = $this->saveTemporaryFile($tempFile, $error);
if (empty($file)) {
array_push($return, array('error' => $error));
} else {
array_push($return, $this->encodeFileAttributes($file));
}
$this->upload->clearErrors();
}
// Format response with json
$response = new HTTPResponse(Convert::raw2json($return));
$response->addHeader('Content-Type', 'text/plain');
return $response;
}
/**
* Retrieves details for files that this field wishes to attache to the
* client-side form
*
* @param HTTPRequest $request
* @return HTTPResponse
*/
public function attach(HTTPRequest $request)
{
if (!$request->isPOST()) {
return $this->httpError(403);
}
if (!$this->canAttachExisting()) {
return $this->httpError(403);
}
// Retrieve file attributes required by front end
$return = array();
$files = File::get()->byIDs($request->postVar('ids'));
foreach ($files as $file) {
$return[] = $this->encodeFileAttributes($file);
}
$response = new HTTPResponse(Convert::raw2json($return));
$response->addHeader('Content-Type', 'application/json');
return $response;
}
/**
* Check if file exists, both checking filtered filename and exact filename
*
* @param string $originalFile Filename
* @return bool
*/
protected function checkFileExists($originalFile)
{
// Check both original and safely filtered filename
$nameFilter = FileNameFilter::create();
$filteredFile = $nameFilter->filter($originalFile);
// Resolve expected folder name
$folderName = $this->getFolderName();
$folder = Folder::find_or_make($folderName);
$parentPath = $folder ? $folder->getFilename() : '';
// check if either file exists
return File::find($parentPath.$originalFile) || File::find($parentPath.$filteredFile);
}
/**
* Determines if a specified file exists
*
* @param HTTPRequest $request
* @return HTTPResponse
*/
public function fileexists(HTTPRequest $request)
{
// Assert that requested filename doesn't attempt to escape the directory
$originalFile = $request->requestVar('filename');
if ($originalFile !== basename($originalFile)) {
$return = array(
'error' => _t('File.NOVALIDUPLOAD', 'File is not a valid upload')
);
} else {
$return = array(
'exists' => $this->checkFileExists($originalFile)
);
}
// Encode and present response
$response = new HTTPResponse(Convert::raw2json($return));
$response->addHeader('Content-Type', 'application/json');
if (!empty($return['error'])) {
$response->setStatusCode(400);
}
return $response;
}
public function performReadonlyTransformation()
{
$clone = clone $this;
$clone->addExtraClass('readonly');
$clone->setReadonly(true);
return $clone;
}
}

View File

@ -1,222 +0,0 @@
<?php
namespace SilverStripe\Forms;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Folder;
use SilverStripe\Control\Controller;
use SilverStripe\Control\RequestHandler;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBHTMLText;
use SilverStripe\View\Requirements;
/**
* RequestHandler for actions (edit, remove, delete) on a single item (File) of the UploadField
*
* @author Zauberfisch
*/
class UploadField_ItemHandler extends RequestHandler
{
/**
* @var UploadFIeld
*/
protected $parent;
/**
* @var int FileID
*/
protected $itemID;
private static $url_handlers = array(
'$Action!' => '$Action',
'' => 'index',
);
private static $allowed_actions = array(
'delete',
'edit',
'EditForm',
);
/**
* @param UploadFIeld $parent
* @param int $itemID
*/
public function __construct($parent, $itemID)
{
$this->parent = $parent;
$this->itemID = $itemID;
parent::__construct();
}
/**
* @return File
*/
public function getItem()
{
return DataObject::get_by_id('SilverStripe\\Assets\\File', $this->itemID);
}
/**
* @param string $action
* @return string
*/
public function Link($action = null)
{
return Controller::join_links($this->parent->Link(), '/item/', $this->itemID, $action);
}
/**
* @return string
*/
public function DeleteLink()
{
$token = $this->parent->getForm()->getSecurityToken();
return $token->addToUrl($this->Link('delete'));
}
/**
* @return string
*/
public function EditLink()
{
return $this->Link('edit');
}
/**
* Action to handle deleting of a single file
*
* @param HTTPRequest $request
* @return HTTPResponse
*/
public function delete(HTTPRequest $request)
{
// Check form field state
if ($this->parent->isDisabled() || $this->parent->isReadonly()) {
return $this->httpError(403);
}
// Protect against CSRF on destructive action
$token = $this->parent->getForm()->getSecurityToken();
if (!$token->checkRequest($request)) {
return $this->httpError(400);
}
// Check item permissions
$item = $this->getItem();
if (!$item) {
return $this->httpError(404);
}
if ($item instanceof Folder) {
return $this->httpError(403);
}
if (!$item->canDelete()) {
return $this->httpError(403);
}
$item->delete();
return null;
}
/**
* Action to handle editing of a single file
*
* @param HTTPRequest $request
* @return DBHTMLText
*/
public function edit(HTTPRequest $request)
{
// Check form field state
if ($this->parent->isDisabled() || $this->parent->isReadonly()) {
return $this->httpError(403);
}
// Check item permissions
$item = $this->getItem();
if (!$item) {
return $this->httpError(404);
}
if ($item instanceof Folder) {
return $this->httpError(403);
}
if (!$item->canEdit()) {
return $this->httpError(403);
}
Requirements::css(ltrim(FRAMEWORK_ADMIN_DIR . '/client/dist/styles/UploadField.css', '/'));
return $this->customise(array(
'Form' => $this->EditForm()
))->renderWith($this->parent->getTemplateFileEdit());
}
/**
* @return Form
*/
public function EditForm()
{
$file = $this->getItem();
if (!$file) {
return $this->httpError(404);
}
if ($file instanceof Folder) {
return $this->httpError(403);
}
if (!$file->canEdit()) {
return $this->httpError(403);
}
// Get form components
$fields = $this->parent->getFileEditFields($file);
$actions = $this->parent->getFileEditActions($file);
$validator = $this->parent->getFileEditValidator($file);
$form = new Form(
$this,
__FUNCTION__,
$fields,
$actions,
$validator
);
$form->loadDataFrom($file);
$form->addExtraClass('small');
return $form;
}
/**
* @param array $data
* @param Form $form
* @param HTTPRequest $request
* @return DBHTMLText
*/
public function doEdit(array $data, Form $form, HTTPRequest $request)
{
// Check form field state
if ($this->parent->isDisabled() || $this->parent->isReadonly()) {
return $this->httpError(403);
}
// Check item permissions
$item = $this->getItem();
if (!$item) {
return $this->httpError(404);
}
if ($item instanceof Folder) {
return $this->httpError(403);
}
if (!$item->canEdit()) {
return $this->httpError(403);
}
$form->saveInto($item);
$item->write();
$form->sessionMessage(_t('UploadField.Saved', 'Saved'), 'good');
return $this->edit($request);
}
}

View File

@ -1,167 +0,0 @@
<?php
namespace SilverStripe\Forms;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Folder;
use SilverStripe\Control\Controller;
use SilverStripe\Control\RequestHandler;
use SilverStripe\Core\Config\Config;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\Forms\GridField\GridFieldFilterHeader;
use SilverStripe\Forms\GridField\GridFieldPaginator;
use SilverStripe\Forms\GridField\GridFieldSortableHeader;
use SilverStripe\ORM\DataList;
use SilverStripe\View\Requirements;
/**
* File selection popup for attaching existing files.
*/
class UploadField_SelectHandler extends RequestHandler
{
/**
* @var UploadField
*/
protected $parent;
/**
* @var string
*/
protected $folderName;
/**
* Set pagination quantity for file list field
*
* @config
* @var int
*/
private static $page_size = 11;
private static $url_handlers = array(
'$Action!' => '$Action',
'' => 'index',
);
private static $allowed_actions = array(
'Form'
);
public function __construct($parent, $folderName = null)
{
$this->parent = $parent;
$this->folderName = $folderName;
parent::__construct();
}
public function index()
{
// Requires a separate JS file, because we can't reach into the iframe with entwine.
Requirements::javascript(ltrim(FRAMEWORK_ADMIN_DIR . '/client/dist/js/UploadField_select.js', '/'));
return $this->renderWith('SilverStripe\\Admin\\CMSDialog');
}
/**
* @param string $action
* @return string
*/
public function Link($action = null)
{
return Controller::join_links($this->parent->Link(), '/select/', $action);
}
/**
* Build the file selection form.
*
* @skipUpgrade
* @return Form
*/
public function Form()
{
// Find out the requested folder ID.
$folderID = $this->parent->getRequest()->requestVar('ParentID');
if ($folderID === null && $this->parent->getDisplayFolderName()) {
$folder = Folder::find_or_make($this->parent->getDisplayFolderName());
$folderID = $folder ? $folder->ID : 0;
}
// Construct the form
$action = new FormAction('doAttach', _t('UploadField.AttachFile', 'Attach file(s)'));
$action->addExtraClass('ss-ui-action-constructive icon-accept');
$form = new Form(
$this,
'Form',
new FieldList($this->getListField($folderID)),
new FieldList($action)
);
// Add a class so we can reach the form from the frontend.
$form->addExtraClass('uploadfield-form');
return $form;
}
/**
* @param int $folderID The ID of the folder to display.
* @return FormField
*/
protected function getListField($folderID)
{
// Generate the folder selection field.
/** @skipUpgrade */
$folderField = new TreeDropdownField(
'ParentID',
_t('HTMLEditorField.FOLDER', 'Folder'),
'SilverStripe\\Assets\\Folder'
);
$folderField->setValue($folderID);
// Generate the file list field.
$config = GridFieldConfig::create();
$config->addComponent(new GridFieldSortableHeader());
$config->addComponent(new GridFieldFilterHeader());
$config->addComponent($colsComponent = new GridFieldDataColumns());
$colsComponent->setDisplayFields(array(
'StripThumbnail' => '',
'Title' => File::singleton()->fieldLabel('Title'),
'Created' => File::singleton()->fieldLabel('Created'),
'Size' => File::singleton()->fieldLabel('Size')
));
$colsComponent->setFieldCasting(array(
'Created' => 'DBDatetime->Nice'
));
// Set configurable pagination for file list field
$pageSize = $this->config()->get('page_size');
$config->addComponent(new GridFieldPaginator($pageSize));
// If relation is to be autoset, we need to make sure we only list compatible objects.
$baseClass = $this->parent->getRelationAutosetClass();
// Create the data source for the list of files within the current directory.
$files = DataList::create($baseClass)->exclude('ClassName', 'SilverStripe\\Assets\\Folder');
if ($folderID) {
$files = $files->filter('ParentID', $folderID);
}
$fileField = new GridField('Files', false, $files, $config);
$fileField->setAttribute('data-selectable', true);
if ($this->parent->getAllowedMaxFileNumber() !== 1) {
$fileField->setAttribute('data-multiselect', true);
}
$selectComposite = new CompositeField(
$folderField,
$fileField
);
return $selectComposite;
}
public function doAttach($data, $form)
{
// Popup-window attach does not require server side action, as it is implemented via JS
}
}

View File

@ -1,48 +0,0 @@
<ul class="ss-uploadfield-files files">
<% if $Value %>
<li class="ss-uploadfield-item template-download" data-filename="$Value.Filename">
<div class="ss-uploadfield-item-preview preview"><span>
<img alt="$Name.ATT" src="$Value.ThumbnailURL($PreviewMaxWidth,$PreviewMaxHeight).ATT" />
</span></div>
<div class="ss-uploadfield-item-info">
<input type='hidden' value='$Value.Filename.ATT' name='{$Name}[Filename]' />
<input type='hidden' value='$Value.Hash.ATT' name='{$Name}[Hash]' />
<input type='hidden' value='$Value.Variant.ATT' name='{$Name}[Variant]' />
<label class="ss-uploadfield-item-name">
<span class="name">$Value.Basename.XML</span>
<span class="size">$Value.Size.XML</span>
<div class="clear"><!-- --></div>
</label>
<div class="ss-uploadfield-item-actions">
<% if $isActive %>
$UploadFieldFileButtons.RAW
<% end_if %>
</div>
</div>
</li>
<% end_if %>
</ul>
<% if $canUpload %>
<div class="ss-uploadfield-item ss-uploadfield-addfile<% if $CustomisedItems %> borderTop<% end_if %>">
<div class="ss-uploadfield-item-preview ss-uploadfield-dropzone ui-corner-all">
<%t UploadField.DROPFILE 'drop a file' %>
</div>
<div class="ss-uploadfield-item-info">
<label class="ss-uploadfield-item-name">
<b><%t UploadField.ATTACHFILE 'Attach a file' %></b>
<% if $canPreviewFolder %>
<small>(<%t UploadField.UPLOADSINTO 'saves into /{path}' path=$FolderName %>)</small>
<% end_if %>
</label>
<label class="ss-uploadfield-fromcomputer ss-ui-button ui-corner-all" title="<%t UploadField.FROMCOMPUTERINFO 'Upload from your computer' %>" data-icon="drive-upload">
<%t UploadField.FROMCOMPUTER 'From your computer' %>
<input id="$ID" name="{$Name}[Upload]" class="$extraClass ss-uploadfield-fromcomputer-fileinput" data-config="{$ConfigString.ATT}" type="file" />
</label>
<% if not $autoUpload %>
<button class="ss-uploadfield-startall ss-ui-button ui-corner-all" data-icon="navigation"><%t UploadField.STARTALL 'Start all' %></button>
<% end_if %>
<div class="clear"><!-- --></div>
</div>
<div class="clear"><!-- --></div>
</div>
<% end_if %>

View File

@ -1,2 +0,0 @@
<button class="ss-uploadfield-item-remove ss-ui-button ui-corner-all" title="<%t AssetUploadField.REMOVEINFO 'Remove this file from this field' %>" data-icon="plug-disconnect-prohibition">
<%t UploadField.REMOVE 'Remove' %></button>

View File

@ -1,43 +0,0 @@
<div class="ss-uploadfield-item ss-uploadfield-addfile field">
<div class="ss-uploadfield-item-info">
<label class="ss-uploadfield-fromcomputer font-icon-upload ss-ui-button ss-ui-action-constructive" title="<%t AssetUploadField.FROMCOMPUTERINFO 'Upload from your computer' %>">
<%t AssetUploadField.TOUPLOAD 'Upload files' %>
<input id="$id" name="$getName" class="$extraClass ss-uploadfield-fromcomputer-fileinput" data-config="$configString" type="file"<% if $multiple %> multiple="multiple"<% end_if %> title="<%t AssetUploadField.FROMCOMPUTER 'Choose files from your computer' %>" />
</label>
</div>
<span class="ss-uploadfield-view-allowed-extensions">
<span class="description">
<a class="font-icon-info-circled toggle"><%t AssetAdmin.SHOWALLOWEDEXTS 'Show allowed extensions' %></a>
<div class="toggle-content">
<a class="font-icon-cancel toggle"><%t AssetAdmin.HIDEALLOWEDEXTS 'Hide allowed extensions' %></a>
<h4><%t AssetAdmin.ALLOWEDEXTS 'Allowed file upload extensions' %></h4>
<p>$Extensions</p>
</div>
</span>
</span>
</div>
<div class="ss-uploadfield-editandorganize">
<div class="ss-uploadfield-item-actions edit-all">
<button type="button" class="ss-uploadfield-item-edit-all ss-ui-button ui-corner-all" title="<%t AssetUploadField.EDITINFO 'Edit files' %>" style="display:none;">
<%t AssetUploadField.EDITALL 'Edit all' %>
<span class="toggle-details-icon"></span>
</button>
</div>
<ul class="ss-uploadfield-files files"></ul>
<div class="fileOverview">
<div class="uploadStatus message notice">
<div class="state"><%t AssetUploadField.UPLOADINPROGRESS 'Please wait upload in progress' %></div>
<div class="details"><%t AssetUploadField.TOTAL 'Total' %>:
<span class="total"></span> <%t AssetUploadField.FILES 'Files' %>
<span class="fileSize"></span>
</div>
</div>
</div>
</div>

View File

@ -1,14 +0,0 @@
<div class="ss-uploadfield-item ss-uploadfield-addfile field ss-uploadfield">
<div class="ss-uploadfield-item-info">
<label class="btn btn-secondary font-icon-upload btn--icon-xl ss-uploadfield-fromcomputer" title="<%t AssetUploadField.FROMCOMPUTERINFO 'Upload from your computer' %>">
<%t AssetUploadField.TOUPLOAD 'Upload files' %>
<input id="$id" name="$getName" class="$extraClass ss-uploadfield-fromcomputer-fileinput" data-config="$configString" type="file"<% if $multiple %> multiple="multiple"<% end_if %> title="<%t AssetUploadField.FROMCOMPUTER 'Choose files from your computer' %>" />
</label>
<button class="btn btn-secondary font-icon-link btn--icon-large upload-url"><%t AssetUploadField.INSERTURL 'Insert from URL' %></button>
</div>
</div>
<div class="ss-uploadfield-editandorganize">
<ul class="ss-uploadfield-files files"></ul>
</div>

View File

@ -1,71 +0,0 @@
<ul class="ss-uploadfield-files files">
<% if $CustomisedItems %>
<% loop $CustomisedItems %>
<li class="ss-uploadfield-item template-download" data-fileid="$ID">
<div class="ss-uploadfield-item-preview preview"><span>
<img alt="$hasRelation" src="$UploadFieldThumbnailURL" />
</span></div>
<div class="ss-uploadfield-item-info">
<input type='hidden' value='$ID' name='{$Top.Name}[Files][]' />
<label class="ss-uploadfield-item-name">
<span class="name">$Name.XML</span>
<span class="size">$Size</span>
<div class="clear"><!-- --></div>
</label>
<div class="ss-uploadfield-item-actions">
<% if $Top.isActive %>
$UploadFieldFileButtons
<% end_if %>
</div>
</div>
<div class="ss-uploadfield-item-editform includeParent">
<iframe frameborder="0" data-src="$UploadFieldEditLink" src="about:blank"></iframe>
</div>
</li>
<% end_loop %>
<% end_if %>
</ul>
<% if $canUpload || $canAttachExisting %>
<div class="ss-uploadfield-item ss-uploadfield-addfile<% if $CustomisedItems %> borderTop<% end_if %>">
<% if canUpload %>
<div class="ss-uploadfield-item-preview ss-uploadfield-dropzone ui-corner-all">
<% if $multiple %>
<%t UploadField.DROPFILES 'drop files' %>
<% else %>
<%t UploadField.DROPFILE 'drop a file' %>
<% end_if %>
</div>
<% end_if %>
<div class="ss-uploadfield-item-info">
<label class="ss-uploadfield-item-name">
<% if $multiple %>
<b><%t UploadField.ATTACHFILES 'Attach files' %></b>
<% else %>
<b><%t UploadField.ATTACHFILE 'Attach a file' %></b>
<% end_if %>
<% if $canPreviewFolder %>
<small>(<%t UploadField.UPLOADSINTO 'saves into /{path}' path=$FolderName %>)</small>
<% end_if %>
</label>
<% if $canUpload %>
<label class="ss-uploadfield-fromcomputer ss-ui-button ui-corner-all" title="<%t UploadField.FROMCOMPUTERINFO 'Upload from your computer' %>" data-icon="drive-upload">
<%t UploadField.FROMCOMPUTER 'From your computer' %>
<input id="$id" name="{$Name}[Uploads][]" class="$extraClass ss-uploadfield-fromcomputer-fileinput" data-config="$configString.ATT" type="file"<% if $multiple %> multiple="multiple"<% end_if %> />
</label>
<% else %>
<input id="$id" name="{$Name}[Uploads][]" class="$extraClass ss-uploadfield-fromcomputer-fileinput" data-config="$configString.ATT" type="hidden" />
<% end_if %>
<% if $canAttachExisting %>
<button type="button" class="ss-uploadfield-fromfiles ss-ui-button ui-corner-all" title="<%t UploadField.FROMCOMPUTERINFO 'Select from files' %>" data-icon="network-cloud"><%t UploadField.FROMFILES 'From files' %></button>
<% end_if %>
<% if $canUpload %>
<% if not $autoUpload %>
<button type="button" class="ss-uploadfield-startall ss-ui-button ui-corner-all" data-icon="navigation"><%t UploadField.STARTALL 'Start all' %></button>
<% end_if %>
<% end_if %>
<div class="clear"><!-- --></div>
</div>
<div class="clear"><!-- --></div>
</div>
<% end_if %>

View File

@ -1,17 +0,0 @@
<% if $canEdit %>
<button type="button" class="ss-uploadfield-item-edit ss-ui-button ui-corner-all" title="<%t UploadField.EDITINFO 'Edit this file' %>" data-icon="pencil">
<%t UploadField.EDIT 'Edit' %>
<span class="toggle-details">
<span class="toggle-details-icon"></span>
</span>
</button>
<% end_if %>
<button type="button" class="ss-uploadfield-item-remove ss-ui-button ui-corner-all" title="<%t UploadField.REMOVEINFO 'Remove this file from here, but do not delete it from the file store' %>" data-icon="plug-disconnect-prohibition">
<%t UploadField.REMOVE 'Remove' %></button>
<% if $canDelete %>
<button type="button" data-href="$UploadFieldDeleteLink" class="ss-uploadfield-item-delete ss-ui-button ui-corner-all" title="<%t UploadField.DELETEINFO 'Permanently delete this file from the file store' %>" data-icon="minus-circle"><%t UploadField.DELETE 'Delete from files' %></button>
<% end_if %>
<% if $UploadField.canAttachExisting %>
<button type="button" class="ss-uploadfield-item-choose-another ss-uploadfield-fromfiles ss-ui-button ui-corner-all" title="<%t UploadField.CHOOSEANOTHERINFO 'Replace this file with another one from the file store' %>" data-icon="network-cloud">
<%t UploadField.CHOOSEANOTHERFILE 'Choose another file' %></button>
<% end_if %>

View File

@ -1,11 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<% base_tag %>
<title></title>
</head>
<body class="cms ss-uploadfield-edit-iframe">
$Form
</body>
</html>

View File

@ -1,400 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests;
use SilverStripe\Assets\Folder;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\Assets\Filesystem;
use SilverStripe\Assets\File;
use SilverStripe\Dev\CSSContentParser;
use SilverStripe\Dev\FunctionalTest;
use SilverStripe\Control\Session;
use SilverStripe\Control\Controller;
use SilverStripe\Forms\AssetField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\Tests\AssetFieldTest\TestForm;
use SilverStripe\Forms\Tests\AssetFieldTest\TestController;
use SilverStripe\Forms\Tests\AssetFieldTest\TestObject;
use SilverStripe\Assets\Tests\Storage\AssetStoreTest\TestAssetStore;
class AssetFieldTest extends FunctionalTest
{
protected static $fixture_file = 'AssetFieldTest.yml';
protected $extraDataObjects = array(
TestObject::class
);
protected $extraControllers = [
TestController::class
];
public function setUp()
{
parent::setUp();
$this->logInWithPermission('ADMIN');
Versioned::set_stage(Versioned::DRAFT);
// Set backend root to /AssetFieldTest
TestAssetStore::activate('AssetFieldTest');
$create = function ($path) {
Filesystem::makeFolder(dirname($path));
$fh = fopen($path, "w+");
fwrite($fh, str_repeat('x', 1000000));
fclose($fh);
};
// Write all DBFile references
foreach (TestObject::get() as $object) {
$path = TestAssetStore::getLocalPath($object->File);
$create($path);
}
// Create a test files for each of the fixture references
$files = File::get()->exclude('ClassName', Folder::class);
foreach ($files as $file) {
$path = TestAssetStore::getLocalPath($file);
$create($path);
}
}
public function tearDown()
{
TestAssetStore::reset();
parent::tearDown();
}
/**
* Test that files can be uploaded against an object with no relation
*/
public function testUploadNoRelation()
{
$this->logInWithPermission('ADMIN');
$tmpFileName = 'testUploadBasic.txt';
$response = $this->mockFileUpload('NoRelationField', $tmpFileName);
$responseJSON = json_decode($response->getBody(), true);
$this->assertFalse($response->isError());
$this->assertEquals('MyDocuments/testUploadBasic.txt', $responseJSON[0]['filename']);
$this->assertEquals('315ae4c3d44412baa0c81515b6fb35829a337a5a', $responseJSON[0]['hash']);
$this->assertEmpty($responseJSON[0]['variant']);
$this->assertFileExists(
BASE_PATH . '/assets/AssetFieldTest/.protected/MyDocuments/315ae4c3d4/testUploadBasic.txt'
);
}
/**
* Test that an object can be uploaded against a DBFile field
*
* @skipUpgrade
*/
public function testUploadDBFile()
{
$this->logInWithPermission('ADMIN');
// Unset existing has_one relation before re-uploading
$record = $this->objFromFixture(TestObject::class, 'object1');
$record->FileFilename = null;
$record->FileHash = null;
$record->write();
// Firstly, ensure the file can be uploaded
$tmpFileName = 'testUploadHasOneRelation.txt';
$response = $this->mockFileUpload('File', $tmpFileName);
$responseJSON = json_decode($response->getBody(), true);
$this->assertFalse($response->isError());
$this->assertFileExists(
BASE_PATH . '/assets/AssetFieldTest/.protected/MyFiles/315ae4c3d4/testUploadHasOneRelation.txt'
);
// Secondly, ensure that simply uploading an object does not save the file against the relation
$record = TestObject::get()->byID($record->ID);
$this->assertFalse($record->File->exists());
// Thirdly, test submitting the form with the encoded data
$response = $this->mockUploadFileSave(
'File',
$responseJSON[0]['filename'],
$responseJSON[0]['hash'],
$responseJSON[0]['variant']
);
$this->assertEmpty($response['errors']);
$record = TestObject::get()->byID($record->ID);
$this->assertTrue($record->File->exists());
$this->assertEquals('315ae4c3d44412baa0c81515b6fb35829a337a5a', $record->File->Hash);
$this->assertEquals('MyFiles/testUploadHasOneRelation.txt', $record->File->Filename);
$this->assertEmpty($record->File->Variant);
}
/**
* Partially covered by {@link UploadTest->testUploadAcceptsAllowedExtension()},
* but this test additionally verifies that those constraints are actually enforced
* in this controller method.
*
* @skipUpgrade
*/
public function testAllowedExtensions()
{
$this->logInWithPermission('ADMIN');
// Test invalid file
// Relies on Upload_Validator failing to allow this extension
$response = $this->mockFileUpload('File', 'invalid.php');
$response = json_decode($response->getBody(), true);
$this->assertTrue(array_key_exists('error', $response[0]));
$this->assertContains('Extension is not allowed', $response[0]['error']);
// Test valid file
$response = $this->mockFileUpload('File', 'valid.txt');
$response = json_decode($response->getBody(), true);
$this->assertFalse(array_key_exists('error', $response[0]));
// Test that allowed files cannot be uploaded to restricted field
$response = $this->mockFileUpload('Image', 'valid.txt');
$response = json_decode($response->getBody(), true);
$this->assertTrue(array_key_exists('error', $response[0]));
$this->assertContains('Extension is not allowed', $response[0]['error']);
}
/**
* Test that files can be removed from an existing field
*/
public function testRemoveFromHasOne()
{
$record = $this->objFromFixture(TestObject::class, 'object1');
// Check record exists
$this->assertTrue($record->File->exists());
$filePath = TestAssetStore::getLocalPath($record->File);
$this->assertFileExists($filePath);
// Remove from record
$response = $this->mockUploadFileSave(File::class, null, null, null);
$this->assertEmpty($response['errors']);
// Check file is removed
$record = TestObject::get()->byID($record->ID);
$this->assertFalse($record->File->exists());
// Check file object itself exists
$this->assertFileNotExists($filePath, 'File is deleted once detached');
}
/**
* Test control output html
*/
public function testView()
{
$this->logInWithPermission('ADMIN');
$record = $this->objFromFixture(TestObject::class, 'object1');
// Requesting form is not an error
$response = $this->get('AssetFieldTest_Controller');
$this->assertFalse($response->isError());
// File exists in this response
$parser = new CSSContentParser($response->getBody());
$tuple = array();
$result = $parser->getBySelector(
"#TestForm_Form_File_Holder .ss-uploadfield-files .ss-uploadfield-item input[type='hidden']"
);
foreach ($result as $part) {
$name = (string)$part['name'];
$value = (string)$part['value'];
switch ($name) {
case 'File[Filename]':
$tuple['Filename'] = $value;
break;
case 'File[Hash]':
$tuple['Hash'] = $value;
break;
case 'File[Variant]':
$tuple['Variant'] = $value;
break;
}
}
// Assert this value is correct
$expected = array(
'Filename' => 'MyFiles/subfolder1/file-subfolder.txt',
'Hash' => '55b443b60176235ef09801153cca4e6da7494a0c',
'Variant' => '',
);
$this->assertEquals($expected, $record->File->getValue());
$this->assertEquals($expected, $tuple);
}
public function testGetRecord()
{
$record = $this->objFromFixture(TestObject::class, 'object1');
$form = $this->getMockForm();
$field = AssetField::create('MyField');
$field->setForm($form);
$this->assertNull($field->getRecord(), 'Returns no record by default');
$field = AssetField::create('MyField');
$field->setForm($form);
$form->loadDataFrom($record);
$this->assertEquals($record, $field->getRecord(), 'Returns record from form if available');
$field = AssetField::create('MyField');
$field->setForm($form);
$field->setRecord($record);
$this->assertEquals($record, $field->getRecord(), 'Returns record when set explicitly');
}
/**
* Test that getValue() / Value() methods work
*
* @skipUpgrade
*/
public function testValue()
{
$record = $this->objFromFixture(TestObject::class, 'object1');
// File field
$field = AssetField::create('File');
$this->assertEmpty($field->Value());
$field->setValue(null, $record);
$this->assertEquals(
array(
'Filename' => 'MyFiles/subfolder1/file-subfolder.txt',
'Hash' => '55b443b60176235ef09801153cca4e6da7494a0c',
'Variant' => null,
),
$field->Value()
);
// Empty field
$field = AssetField::create('Image');
$this->assertEmpty($field->Value());
$field->setValue(null, $record);
$this->assertEmpty($field->Value());
// Set via file (copies only tuple not the actual file reference)
$file = $this->objFromFixture(File::class, 'file1');
$field->setValue($file);
$this->assertEquals(
array(
'Filename' => 'MyAssets/file1.txt',
'Hash' => '55b443b60176235ef09801153cca4e6da7494a0c',
'Variant' => null,
),
$field->Value()
);
}
public function testCanUploadWithPermissionCode()
{
Session::clear("loggedInAs");
$field = AssetField::create('MyField');
$field->setCanUpload(true);
$this->assertTrue($field->canUpload());
$field->setCanUpload(false);
$this->assertFalse($field->canUpload());
$field->setCanUpload('ADMIN');
$this->assertFalse($field->canUpload());
$this->logInWithPermission('ADMIN');
$field->setCanUpload(false);
$this->assertFalse($field->canUpload());
$field->setCanUpload('ADMIN');
$this->assertTrue($field->canUpload());
}
protected function getMockForm()
{
/**
* @skipUpgrade
*/
return new Form(new Controller(), 'Form', new FieldList(), new FieldList());
}
/**
* @param string $tmpFileName
* @return array Emulating an entry in the $_FILES superglobal
*/
protected function getUploadFile($tmpFileName = 'AssetFieldTest-testUpload.txt')
{
$tmpFilePath = TEMP_FOLDER . '/' . $tmpFileName;
$tmpFileContent = '';
for ($i=0; $i<10000;
$i++) {
$tmpFileContent .= '0';
}
file_put_contents($tmpFilePath, $tmpFileContent);
// emulates the $_FILES array
// Notice that unlike UploadFieldTest::getUploadFile the key is 'Upload' not 'Uploads'
// and the value is a literal not an array
return array(
'name' => array('Upload' => $tmpFileName),
'type' => array('Upload' => 'text/plaintext'),
'size' => array('Upload' => filesize($tmpFilePath)),
'tmp_name' => array('Upload' => $tmpFilePath),
'error' => array('Upload' => UPLOAD_ERR_OK),
);
}
/**
* Simulates a form post to the test controller with the specified file tuple (Filename, Hash, Variant)
*
* @param string $fileField Name of field to assign ids to
* @param string $filename
* @param string $hash
* @param string $variant
* @return array Array with key 'errors'
*/
protected function mockUploadFileSave($fileField, $filename, $hash, $variant = null)
{
// collate file ids
$data = array(
'action_submit' => 1,
$fileField => array(
'Filename' => $filename,
'Hash' => $hash,
'Variant' => $variant
)
);
$form = new TestForm();
$form->loadDataFrom($data, true);
if ($form->validationResult()->isValid()) {
$record = $form->getRecord();
$form->saveInto($record);
$record->write();
return array('errors' => null);
} else {
return array('errors' => $form->getValidator()->getErrors());
}
}
/**
* Simulates a file upload
*
* @param string $fileField Name of the field to mock upload for
* @param array $tmpFileName Name of temporary file to upload
* @return HTTPResponse form response
*/
protected function mockFileUpload($fileField, $tmpFileName)
{
$upload = $this->getUploadFile($tmpFileName);
$_FILES = array($fileField => $upload);
return $this->post(
"AssetFieldTest_Controller/Form/field/{$fileField}/upload",
array($fileField => $upload)
);
}
}

View File

@ -1,17 +0,0 @@
SilverStripe\Assets\Folder:
folder1:
Name: MyAssets
SilverStripe\Assets\File:
file1:
Title: File1
FileFilename: MyAssets/file1.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: file1.txt
Parent: =>SilverStripe\Assets\Folder.folder1
SilverStripe\Forms\Tests\AssetFieldTest\TestObject:
object1:
Title: 'Object1'
FileFilename: MyFiles/subfolder1/file-subfolder.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c

View File

@ -1,26 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\AssetFieldTest;
use SilverStripe\Control\Controller;
use SilverStripe\Dev\TestOnly;
class TestController extends Controller implements TestOnly
{
public function Link($action = null)
{
/**
* @skipUpgrade
*/
return Controller::join_links('AssetFieldTest_Controller', $action, '/');
}
protected $template = 'BlankPage';
private static $allowed_actions = array('Form');
public function Form()
{
return new TestForm($this, 'Form');
}
}

View File

@ -1,62 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\AssetFieldTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\Forms\AssetField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\RequiredFields;
class TestForm extends Form implements TestOnly
{
public function getRecord()
{
if (empty($this->record)) {
$this->record = TestObject::get()
->filter('Title', 'Object1')
->first();
}
return $this->record;
}
/**
* @skipUpgrade
* @param null $controller
* @param string $name
*/
public function __construct($controller = null, $name = 'Form')
{
if (empty($controller)) {
$controller = new TestController();
}
$fields = new FieldList(
AssetField::create('File')
->setFolderName('MyFiles'),
AssetField::create('Image')
->setAllowedFileCategories('image/supported')
->setFolderName('MyImages'),
AssetField::create('NoRelationField')
->setFolderName('MyDocuments')
);
$actions = new FieldList(
new FormAction('submit')
);
$validator = new RequiredFields();
parent::__construct($controller, $name, $fields, $actions, $validator);
$this->loadDataFrom($this->getRecord());
}
public function submit($data, Form $form)
{
$record = $this->getRecord();
$form->saveInto($record);
$record->write();
return json_encode($record->toMap());
}
}

View File

@ -1,17 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\AssetFieldTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\ORM\DataObject;
class TestObject extends DataObject implements TestOnly
{
private static $table_name = 'AssetFieldTest_TestObject';
private static $db = array(
"Title" => "Text",
"File" => "DBFile",
"Image" => "DBFile('image/supported')"
);
}

View File

@ -1,1122 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests;
use SilverStripe\Assets\FileNameFilter;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\Forms\Tests\UploadFieldTest\TestController;
use SilverStripe\Forms\Tests\UploadFieldTest\ExtendedFile;
use SilverStripe\Forms\Tests\UploadFieldTest\FileExtension;
use SilverStripe\Forms\Tests\UploadFieldTest\TestRecord;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
use SilverStripe\Assets\Folder;
use SilverStripe\Assets\Filesystem;
use SilverStripe\Assets\File;
use SilverStripe\Assets\Upload;
use SilverStripe\Core\Config\Config;
use SilverStripe\Core\Convert;
use SilverStripe\Dev\CSSContentParser;
use SilverStripe\Dev\FunctionalTest;
use SilverStripe\Control\Session;
use SilverStripe\Control\Controller;
use SilverStripe\Forms\UploadField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
use SilverStripe\Assets\Tests\Storage\AssetStoreTest\TestAssetStore;
class UploadFieldTest extends FunctionalTest
{
protected static $fixture_file = 'UploadFieldTest.yml';
protected $extraDataObjects = [
TestRecord::class,
ExtendedFile::class,
];
protected $extraControllers = [
TestController::class,
];
protected $requiredExtensions = [
File::class => [
FileExtension::class
]
];
protected $oldReadingMode = null;
public function setUp()
{
parent::setUp();
$this->logInWithPermission('ADMIN');
// Save versioned state
$this->oldReadingMode = Versioned::get_reading_mode();
Versioned::set_stage(Versioned::DRAFT);
// Set backend root to /UploadFieldTest
TestAssetStore::activate('UploadFieldTest');
// Set the File Name Filter replacements so files have the expected names
Config::inst()->update(
FileNameFilter::class,
'default_replacements',
array(
'/\s/' => '-', // remove whitespace
'/_/' => '-', // underscores to dashes
'/[^A-Za-z0-9+.\-]+/' => '', // remove non-ASCII chars, only allow alphanumeric plus dash and dot
'/[\-]{2,}/' => '-', // remove duplicate dashes
'/^[\.\-_]+/' => '', // Remove all leading dots, dashes or underscores
)
);
// Create a test folders for each of the fixture references
foreach (Folder::get() as $folder) {
$path = TestAssetStore::getLocalPath($folder);
Filesystem::makeFolder($path);
}
// Create a test files for each of the fixture references
$files = File::get()->exclude('ClassName', Folder::class);
foreach ($files as $file) {
$path = TestAssetStore::getLocalPath($file);
Filesystem::makeFolder(dirname($path));
$fh = fopen($path, "w+");
fwrite($fh, str_repeat('x', 1000000));
fclose($fh);
}
}
public function tearDown()
{
TestAssetStore::reset();
if ($this->oldReadingMode) {
Versioned::set_reading_mode($this->oldReadingMode);
}
parent::tearDown();
}
/**
* Test that files can be uploaded against an object with no relation
*/
public function testUploadNoRelation()
{
$tmpFileName = 'testUploadBasic.txt';
$response = $this->mockFileUpload('NoRelationField', $tmpFileName);
$this->assertFalse($response->isError());
$uploadedFile = DataObject::get_one(
File::class,
array(
'"File"."Name"' => $tmpFileName
)
);
$this->assertFileExists(TestAssetStore::getLocalPath($uploadedFile));
$this->assertTrue(is_object($uploadedFile), 'The file object is created');
}
/**
* Test that an object can be uploaded against an object with a has_one relation
*/
public function testUploadHasOneRelation()
{
// Unset existing has_one relation before re-uploading
/**
* @var TestRecord $record
*/
$record = $this->objFromFixture(TestRecord::class, 'record1');
$record->HasOneFileID = null;
$record->write();
// Firstly, ensure the file can be uploaded
$tmpFileName = 'testUploadHasOneRelation.txt';
$response = $this->mockFileUpload('HasOneFile', $tmpFileName);
$this->assertFalse($response->isError());
$uploadedFile = DataObject::get_one(
File::class,
array(
'"File"."Name"' => $tmpFileName
)
);
$this->assertTrue(is_object($uploadedFile), 'The file object is created');
$this->assertFileExists(TestAssetStore::getLocalPath($uploadedFile));
// Secondly, ensure that simply uploading an object does not save the file against the relation
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertFalse($record->HasOneFile()->exists());
// Thirdly, test submitting the form with the encoded data
$response = $this->mockUploadFileIDs('HasOneFile', array($uploadedFile->ID));
$this->assertEmpty($response['errors']);
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertTrue($record->HasOneFile()->exists());
$this->assertEquals($record->HasOneFile()->Name, $tmpFileName);
}
/**
* Tests that has_one relations work with subclasses of File
*/
public function testUploadHasOneRelationWithExtendedFile()
{
// Unset existing has_one relation before re-uploading
/**
* @var TestRecord $record
*/
$record = $this->objFromFixture(TestRecord::class, 'record1');
$record->HasOneExtendedFileID = null;
$record->write();
// Test that the file can be safely uploaded
$tmpFileName = 'testUploadHasOneRelationWithExtendedFile.txt';
$response = $this->mockFileUpload('HasOneExtendedFile', $tmpFileName);
$this->assertFalse($response->isError());
$uploadedFile = DataObject::get_one(
ExtendedFile::class,
array(
'"File"."Name"' => $tmpFileName
)
);
$this->assertTrue(is_object($uploadedFile), 'The file object is created');
$this->assertFileExists(TestAssetStore::getLocalPath($uploadedFile));
// Test that the record isn't written to automatically
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertFalse($record->HasOneExtendedFile()->exists());
// Test that saving the form writes the record
$response = $this->mockUploadFileIDs('HasOneExtendedFile', array($uploadedFile->ID));
$this->assertEmpty($response['errors']);
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertTrue($record->HasOneExtendedFile()->exists());
$this->assertEquals($record->HasOneExtendedFile()->Name, $tmpFileName);
}
/**
* Test that has_many relations work with files
*/
public function testUploadHasManyRelation()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
// Test that uploaded files can be posted to a has_many relation
$tmpFileName = 'testUploadHasManyRelation.txt';
$response = $this->mockFileUpload('HasManyFiles', $tmpFileName);
$this->assertFalse($response->isError());
$uploadedFile = DataObject::get_one(
File::class,
array(
'"File"."Name"' => $tmpFileName
)
);
$this->assertTrue(is_object($uploadedFile), 'The file object is created');
$this->assertFileExists(TestAssetStore::getLocalPath($uploadedFile));
// Test that the record isn't written to automatically
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertEquals(2, $record->HasManyFiles()->Count()); // Existing two files should be retained
// Test that saving the form writes the record
$ids = array_merge($record->HasManyFiles()->getIDList(), array($uploadedFile->ID));
$response = $this->mockUploadFileIDs('HasManyFiles', $ids);
$this->assertEmpty($response['errors']);
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertEquals(3, $record->HasManyFiles()->Count()); // New record should appear here now
}
/**
* Test that many_many relationships work with files
*/
public function testUploadManyManyRelation()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$relationCount = $record->ManyManyFiles()->Count();
// Test that uploaded files can be posted to a many_many relation
$tmpFileName = 'testUploadManyManyRelation.txt';
$response = $this->mockFileUpload('ManyManyFiles', $tmpFileName);
$this->assertFalse($response->isError());
$uploadedFile = DataObject::get_one(
File::class,
array(
'"File"."Name"' => $tmpFileName
)
);
$this->assertTrue(is_object($uploadedFile), 'The file object is created');
$this->assertFileExists(TestAssetStore::getLocalPath($uploadedFile));
// Test that the record isn't written to automatically
$record = DataObject::get_by_id($record->class, $record->ID, false);
// Existing file count should be retained
$this->assertEquals($relationCount, $record->ManyManyFiles()->Count());
// Test that saving the form writes the record
$ids = array_merge($record->ManyManyFiles()->getIDList(), array($uploadedFile->ID));
$response = $this->mockUploadFileIDs('ManyManyFiles', $ids);
$this->assertEmpty($response['errors']);
$record = DataObject::get_by_id($record->class, $record->ID, false);
$record->flushCache();
// New record should appear here now
$this->assertEquals($relationCount + 1, $record->ManyManyFiles()->Count());
}
/**
* Partially covered by {@link UploadTest->testUploadAcceptsAllowedExtension()},
* but this test additionally verifies that those constraints are actually enforced
* in this controller method.
*/
public function testAllowedExtensions()
{
// Test invalid file
// Relies on Upload_Validator failing to allow this extension
$invalidFile = 'invalid.php';
$_FILES = array('AllowedExtensionsField' => $this->getUploadFile($invalidFile));
$response = $this->post(
'UploadFieldTest_Controller/Form/field/AllowedExtensionsField/upload',
array('AllowedExtensionsField' => $this->getUploadFile($invalidFile))
);
$response = json_decode($response->getBody(), true);
$this->assertTrue(array_key_exists('error', $response[0]));
$this->assertContains('Extension is not allowed', $response[0]['error']);
// Test valid file
$validFile = 'valid.txt';
$_FILES = array('AllowedExtensionsField' => $this->getUploadFile($validFile));
$response = $this->post(
'UploadFieldTest_Controller/Form/field/AllowedExtensionsField/upload',
array('AllowedExtensionsField' => $this->getUploadFile($validFile))
);
$response = json_decode($response->getBody(), true);
$this->assertFalse(array_key_exists('error', $response[0]));
// Test that setAllowedExtensions rejects extensions explicitly denied by File.allowed_extensions
// Relies on File::validate failing to allow this extension
$invalidFile = 'invalid.php';
$_FILES = array('AllowedExtensionsField' => $this->getUploadFile($invalidFile));
$response = $this->post(
'UploadFieldTest_Controller/Form/field/InvalidAllowedExtensionsField/upload',
array('InvalidAllowedExtensionsField' => $this->getUploadFile($invalidFile))
);
$response = json_decode($response->getBody(), true);
$this->assertTrue(array_key_exists('error', $response[0]));
$this->assertContains('Extension is not allowed', $response[0]['error']);
}
/**
* Test that has_one relations do not support multiple files
*/
public function testAllowedMaxFileNumberWithHasOne()
{
// Get references for each file to upload
$file1 = $this->objFromFixture(File::class, 'file1');
$file2 = $this->objFromFixture(File::class, 'file2');
$fileIDs = array($file1->ID, $file2->ID);
// Test each of the three cases - has one with no max filel limit, has one with a limit of
// one, has one with a limit of more than one (makes no sense, but should test it anyway).
// Each of them should public function in the same way - attaching the first file should work, the
// second should cause an error.
foreach (array('HasOneFile', 'HasOneFileMaxOne', 'HasOneFileMaxTwo') as $recordName) {
// Unset existing has_one relation before re-uploading
$record = $this->objFromFixture(TestRecord::class, 'record1');
$record->{"{$recordName}ID"} = null;
$record->write();
// Post form with two files for this field, should result in an error
$response = $this->mockUploadFileIDs($recordName, $fileIDs);
$isError = !empty($response['errors']);
// Strictly, a has_one should not allow two files, but this is overridden
// by the setAllowedMaxFileNumber(2) call
$maxFiles = ($recordName === 'HasOneFileMaxTwo') ? 2 : 1;
// Assert that the form fails if the maximum number of files is exceeded
$this->assertTrue((count($fileIDs) > $maxFiles) == $isError);
}
}
/**
* Test that max number of items on has_many is validated
*/
public function testAllowedMaxFileNumberWithHasMany()
{
// The 'HasManyFilesMaxTwo' field has a maximum of two files able to be attached to it.
// We want to add files to it until we attempt to add the third. We expect that the first
// two should work and the third will fail.
$record = $this->objFromFixture(TestRecord::class, 'record1');
$record->HasManyFilesMaxTwo()->removeAll();
$this->assertCount(0, $record->HasManyFilesMaxTwo());
// Get references for each file to upload
$file1 = $this->objFromFixture(File::class, 'file1');
$file2 = $this->objFromFixture(File::class, 'file2');
$file3 = $this->objFromFixture(File::class, 'file3');
$this->assertTrue($file1->exists());
$this->assertTrue($file2->exists());
$this->assertTrue($file3->exists());
// Write the first element, should be okay.
$response = $this->mockUploadFileIDs('HasManyFilesMaxTwo', array($file1->ID));
$this->assertEmpty($response['errors']);
$this->assertCount(1, $record->HasManyFilesMaxTwo());
$this->assertContains($file1->ID, $record->HasManyFilesMaxTwo()->getIDList());
$record->HasManyFilesMaxTwo()->removeAll();
$this->assertCount(0, $record->HasManyFilesMaxTwo());
$this->assertTrue($file1->exists());
$this->assertTrue($file2->exists());
$this->assertTrue($file3->exists());
// Write the second element, should be okay.
$response = $this->mockUploadFileIDs('HasManyFilesMaxTwo', array($file1->ID, $file2->ID));
$this->assertEmpty($response['errors']);
$this->assertCount(2, $record->HasManyFilesMaxTwo());
$this->assertContains($file1->ID, $record->HasManyFilesMaxTwo()->getIDList());
$this->assertContains($file2->ID, $record->HasManyFilesMaxTwo()->getIDList());
$record->HasManyFilesMaxTwo()->removeAll();
$this->assertCount(0, $record->HasManyFilesMaxTwo());
$this->assertTrue($file1->exists());
$this->assertTrue($file2->exists());
$this->assertTrue($file3->exists());
// Write the third element, should result in error.
$response = $this->mockUploadFileIDs('HasManyFilesMaxTwo', array($file1->ID, $file2->ID, $file3->ID));
$this->assertNotEmpty($response['errors']);
$this->assertCount(0, $record->HasManyFilesMaxTwo());
}
/**
* Test that files can be removed from has_one relations
*/
public function testRemoveFromHasOne()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$file1 = $this->objFromFixture(File::class, 'file1');
// Check record exists
$this->assertTrue($record->HasOneFile()->exists());
// Remove from record
$response = $this->mockUploadFileIDs('HasOneFile', array());
$this->assertEmpty($response['errors']);
// Check file is removed
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertFalse($record->HasOneFile()->exists());
// Check file object itself exists
$this->assertFileExists(
TestAssetStore::getLocalPath($file1),
'File is only detached, not deleted from filesystem'
);
}
/**
* Test that items can be removed from has_many
*/
public function testRemoveFromHasMany()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$file3 = $this->objFromFixture(File::class, 'file3');
// Check record has two files attached
$this->assertEquals(array('File2', 'File3'), $record->HasManyFiles()->column('Title'));
// Remove file 2
$response = $this->mockUploadFileIDs('HasManyFiles', array($file3->ID));
$this->assertEmpty($response['errors']);
// check only file 3 is left
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertEquals(array('File3'), $record->HasManyFiles()->column('Title'));
// Check file 2 object itself exists
$this->assertFileExists(
TestAssetStore::getLocalPath($file3),
'File is only detached, not deleted from filesystem'
);
}
/**
* Test that items can be removed from many_many
*/
public function testRemoveFromManyMany()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$file4 = $this->objFromFixture(File::class, 'file4');
$file5 = $this->objFromFixture(File::class, 'file5');
// Check that both files are currently set
$this->assertContains('File4', $record->ManyManyFiles()->column('Title'));
$this->assertContains('File5', $record->ManyManyFiles()->column('Title'));
// Remove file 4
$response = $this->mockUploadFileIDs('ManyManyFiles', array($file5->ID));
$this->assertEmpty($response['errors']);
// check only file 5 is left
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertNotContains('File4', $record->ManyManyFiles()->column('Title'));
$this->assertContains('File5', $record->ManyManyFiles()->column('Title'));
// check file 4 object exists
$this->assertFileExists(
TestAssetStore::getLocalPath($file4),
'File is only detached, not deleted from filesystem'
);
}
/**
* Test that files can be deleted from has_one
*/
public function testDeleteFromHasOne()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$file1 = $this->objFromFixture(File::class, 'file1');
// Check that file initially exists
$this->assertTrue($record->HasOneFile()->exists());
$this->assertFileExists(TestAssetStore::getLocalPath($file1));
// Delete file and update record
$response = $this->mockFileDelete('HasOneFile', $file1->ID);
$this->assertFalse($response->isError());
$response = $this->mockUploadFileIDs('HasOneFile', array());
$this->assertEmpty($response['errors']);
// Check that file is not set against record
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertFalse($record->HasOneFile()->exists());
}
/**
* Test that files can be deleted from has_many
*/
public function testDeleteFromHasMany()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$file2 = $this->objFromFixture(File::class, 'file2');
$file3 = $this->objFromFixture(File::class, 'file3');
// Check that files initially exists
$this->assertEquals(array('File2', 'File3'), $record->HasManyFiles()->column('Title'));
$this->assertFileExists(TestAssetStore::getLocalPath($file2));
$this->assertFileExists(TestAssetStore::getLocalPath($file3));
// Delete dataobject file and update record without file 2
$response = $this->mockFileDelete('HasManyFiles', $file2->ID);
$this->assertFalse($response->isError());
$response = $this->mockUploadFileIDs('HasManyFiles', array($file3->ID));
$this->assertEmpty($response['errors']);
// Test that file is removed from record
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertEquals(array('File3'), $record->HasManyFiles()->column('Title'));
}
/**
* Test that files can be deleted from many_many and the filesystem
*/
public function testDeleteFromManyMany()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$file4 = $this->objFromFixture(File::class, 'file4');
$file5 = $this->objFromFixture(File::class, 'file5');
$fileNoDelete = $this->objFromFixture(File::class, 'file-nodelete');
// Test that files initially exist
$setFiles = $record->ManyManyFiles()->column('Title');
$this->assertContains('File4', $setFiles);
$this->assertContains('File5', $setFiles);
$this->assertContains('nodelete.txt', $setFiles);
$this->assertFileExists(TestAssetStore::getLocalPath($file4));
$this->assertFileExists(TestAssetStore::getLocalPath($file5));
$this->assertFileExists(TestAssetStore::getLocalPath($fileNoDelete));
// Delete physical file and update record without file 4
$response = $this->mockFileDelete('ManyManyFiles', $file4->ID);
$this->assertFalse($response->isError());
// Check file is removed from record
$record = DataObject::get_by_id($record->class, $record->ID, false);
$this->assertNotContains('File4', $record->ManyManyFiles()->column('Title'));
$this->assertContains('File5', $record->ManyManyFiles()->column('Title'));
// Test record-based permissions
$response = $this->mockFileDelete('ManyManyFiles', $fileNoDelete->ID);
$this->assertEquals(403, $response->getStatusCode());
// Test that folders can't be deleted
$folder = $this->objFromFixture(Folder::class, 'folder1-subfolder1');
$response = $this->mockFileDelete('ManyManyFiles', $folder->ID);
$this->assertEquals(403, $response->getStatusCode());
}
/**
* Test control output html
*/
public function testView()
{
$file4 = $this->objFromFixture(File::class, 'file4');
$file5 = $this->objFromFixture(File::class, 'file5');
$fileNoView = $this->objFromFixture(File::class, 'file-noview');
$fileNoEdit = $this->objFromFixture(File::class, 'file-noedit');
$fileNoDelete = $this->objFromFixture(File::class, 'file-nodelete');
$response = $this->get('UploadFieldTest_Controller');
$this->assertFalse($response->isError());
$parser = new CSSContentParser($response->getBody());
$items = $parser->getBySelector(
'#UploadFieldTestForm_Form_HasManyNoViewFiles_Holder .ss-uploadfield-files .ss-uploadfield-item'
);
$ids = array();
foreach ($items as $item) {
$ids[] = (int)$item['data-fileid'];
}
$this->assertContains($file4->ID, $ids, 'Views related file');
$this->assertContains($file5->ID, $ids, 'Views related file');
$this->assertNotContains($fileNoView->ID, $ids, "Doesn't view files without view permissions");
$this->assertContains($fileNoEdit->ID, $ids, "Views files without edit permissions");
$this->assertContains($fileNoDelete->ID, $ids, "Views files without delete permissions");
}
public function testEdit()
{
//for some reason the date_format is being set to null
Config::inst()->update('i18n', 'date_format', 'yyyy-MM-dd');
$memberID = $this->loginWithPermission('ADMIN');
$record = $this->objFromFixture(TestRecord::class, 'record1');
$file4 = $this->objFromFixture(File::class, 'file4');
$fileNoEdit = $this->objFromFixture(File::class, 'file-noedit');
$folder = $this->objFromFixture(Folder::class, 'folder1-subfolder1');
$response = $this->mockFileEditForm('ManyManyFiles', $file4->ID);
$this->assertFalse($response->isError());
$response = $this->mockFileEdit('ManyManyFiles', $file4->ID, array('Title' => 'File 4 modified'));
$this->assertFalse($response->isError());
$file4 = DataObject::get_by_id($file4->class, $file4->ID, false);
$this->assertEquals('File 4 modified', $file4->Title);
// Test record-based permissions
$response = $this->mockFileEditForm('ManyManyFiles', $fileNoEdit->ID);
$this->assertEquals(403, $response->getStatusCode());
$response = $this->mockFileEdit('ManyManyFiles', $fileNoEdit->ID, array());
$this->assertEquals(403, $response->getStatusCode());
// Test folder permissions
$response = $this->mockFileEditForm('ManyManyFiles', $folder->ID);
$this->assertEquals(403, $response->getStatusCode());
$response = $this->mockFileEdit('ManyManyFiles', $folder->ID, array());
$this->assertEquals(403, $response->getStatusCode());
}
public function testGetRecord()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$form = $this->getMockForm();
$field = UploadField::create('MyField');
$field->setForm($form);
$this->assertNull($field->getRecord(), 'Returns no record by default');
$field = UploadField::create('MyField');
$field->setForm($form);
$form->loadDataFrom($record);
$this->assertEquals($record, $field->getRecord(), 'Returns record from form if available');
$field = UploadField::create('MyField');
$field->setForm($form);
$field->setRecord($record);
$this->assertEquals($record, $field->getRecord(), 'Returns record when set explicitly');
}
public function testSetItems()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
$items = new ArrayList(
array(
$this->objFromFixture(File::class, 'file1'),
$this->objFromFixture(File::class, 'file2')
)
);
// Field with no record attached
$field = UploadField::create('DummyField');
$field->setItems($items);
$this->assertEquals(array('File1', 'File2'), $field->getItems()->column('Title'));
// Anonymous field
$field = UploadField::create('MyField');
$field->setRecord($record);
$field->setItems($items);
$this->assertEquals(array('File1', 'File2'), $field->getItems()->column('Title'));
// Field with has_one auto-detected
$field = UploadField::create('HasOneFile');
$field->setRecord($record);
$field->setItems($items);
$this->assertEquals(
array('File1', 'File2'),
$field->getItems()->column('Title'),
'Allows overwriting of items even when relationship is detected'
);
}
public function testGetItems()
{
$record = $this->objFromFixture(TestRecord::class, 'record1');
// Anonymous field
$field = UploadField::create('MyField');
$field->setValue(null, $record);
$this->assertEquals(array(), $field->getItems()->column('Title'));
// Field with has_one auto-detected
$field = UploadField::create('HasOneFile');
$field->setValue(null, $record);
$this->assertEquals(array('File1'), $field->getItems()->column('Title'));
// Field with has_many auto-detected
$field = UploadField::create('HasManyFiles');
$field->setValue(null, $record);
$this->assertEquals(array('File2', 'File3'), $field->getItems()->column('Title'));
// Field with many_many auto-detected
$field = UploadField::create('ManyManyFiles');
$field->setValue(null, $record);
$this->assertNotContains('File1', $field->getItems()->column('Title'));
$this->assertNotContains('File2', $field->getItems()->column('Title'));
$this->assertNotContains('File3', $field->getItems()->column('Title'));
$this->assertContains('File4', $field->getItems()->column('Title'));
$this->assertContains('File5', $field->getItems()->column('Title'));
}
public function testReadonly()
{
$response = $this->get('UploadFieldTest_Controller');
$this->assertFalse($response->isError());
$parser = new CSSContentParser($response->getBody());
$this->assertFalse(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_ReadonlyField .ss-uploadfield-files .ss-uploadfield-item .ss-ui-button'
),
'Removes all buttons on items'
);
$this->assertFalse(
(bool)$parser->getBySelector('#UploadFieldTestForm_Form_ReadonlyField .ss-uploadfield-dropzone'),
'Removes dropzone'
);
$this->assertFalse(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_ReadonlyField .ss-uploadfield-addfile'
),
'Entire "add" area'
);
}
public function testDisabled()
{
$response = $this->get('UploadFieldTest_Controller');
$this->assertFalse($response->isError());
$parser = new CSSContentParser($response->getBody());
$this->assertFalse(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_DisabledField .ss-uploadfield-files .ss-uploadfield-item .ss-ui-button'
),
'Removes all buttons on items'
);
$this->assertFalse(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_DisabledField .ss-uploadfield-dropzone'
),
'Removes dropzone'
);
$this->assertFalse(
(bool)$parser->getBySelector('#UploadFieldTestForm_Form_DisabledField .ss-uploadfield-addfile'),
'Entire "add" area'
);
}
public function testCanUpload()
{
$response = $this->get('UploadFieldTest_Controller');
$this->assertFalse($response->isError());
$parser = new CSSContentParser($response->getBody());
$this->assertFalse(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_CanUploadFalseField_Holder .ss-uploadfield-dropzone'
),
'Removes dropzone'
);
$this->assertTrue(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_CanUploadFalseField_Holder .ss-uploadfield-fromfiles'
),
'Keeps "From files" button'
);
}
public function testCanUploadWithPermissionCode()
{
$field = UploadField::create('MyField');
Session::clear("loggedInAs");
$field->setCanUpload(true);
$this->assertTrue($field->canUpload());
$field->setCanUpload(false);
$this->assertFalse($field->canUpload());
$this->logInWithPermission('ADMIN');
$field->setCanUpload(false);
$this->assertFalse($field->canUpload());
$field->setCanUpload('ADMIN');
$this->assertTrue($field->canUpload());
}
public function testCanAttachExisting()
{
$response = $this->get('UploadFieldTest_Controller');
$this->assertFalse($response->isError());
$parser = new CSSContentParser($response->getBody());
$this->assertTrue(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_CanAttachExistingFalseField_Holder .ss-uploadfield-fromcomputer-fileinput'
),
'Keeps input file control'
);
$this->assertFalse(
(bool)$parser->getBySelector(
'#UploadFieldTestForm_Form_CanAttachExistingFalseField_Holder .ss-uploadfield-fromfiles'
),
'Removes "From files" button'
);
// Test requests to select files have the correct given permission
$response2 = $this->get('UploadFieldTest_Controller/Form/field/CanAttachExistingFalseField/select');
$this->assertEquals(403, $response2->getStatusCode());
$response3 = $this->get('UploadFieldTest_Controller/Form/field/HasOneFile/select');
$this->assertEquals(200, $response3->getStatusCode());
}
public function testSelect()
{
$file4 = $this->objFromFixture(File::class, 'file4');
$fileSubfolder = $this->objFromFixture(File::class, 'file-subfolder');
$response = $this->get('UploadFieldTest_Controller/Form/field/ManyManyFiles/select/');
$this->assertFalse($response->isError());
// A bit too much coupling with GridField, but a full template overload would make things too complex
$parser = new CSSContentParser($response->getBody());
$items = $parser->getBySelector('.ss-gridfield-item');
$itemIDs = array_map(create_function('$el', 'return (int)$el["data-id"];'), $items);
$this->assertContains($file4->ID, $itemIDs, 'Contains file in assigned folder');
$this->assertContains($fileSubfolder->ID, $itemIDs, 'Contains file in subfolder');
}
public function testSelectWithDisplayFolderName()
{
$file4 = $this->objFromFixture(File::class, 'file4');
$fileSubfolder = $this->objFromFixture(File::class, 'file-subfolder');
$response = $this->get('UploadFieldTest_Controller/Form/field/HasManyDisplayFolder/select/');
$this->assertFalse($response->isError());
// A bit too much coupling with GridField, but a full template overload would make things too complex
$parser = new CSSContentParser($response->getBody());
$items = $parser->getBySelector('.ss-gridfield-item');
$itemIDs = array_map(create_function('$el', 'return (int)$el["data-id"];'), $items);
$this->assertContains($file4->ID, $itemIDs, 'Contains file in assigned folder');
$this->assertNotContains($fileSubfolder->ID, $itemIDs, 'Does not contain file in subfolder');
}
/**
* Test that UploadField:overwriteWarning cannot overwrite Upload:replaceFile
*/
public function testConfigOverwriteWarningCannotRelaceFiles()
{
Upload::config()->replaceFile = false;
UploadField::config()->defaultConfig = array_merge(
UploadField::config()->defaultConfig,
array('overwriteWarning' => true)
);
$tmpFileName = 'testUploadBasic.txt';
$response = $this->mockFileUpload('NoRelationField', $tmpFileName);
$this->assertFalse($response->isError());
$responseData = Convert::json2array($response->getBody());
$uploadedFile = DataObject::get_by_id(File::class, (int) $responseData[0]['id']);
$this->assertTrue(is_object($uploadedFile), 'The file object is created');
$this->assertFileExists(TestAssetStore::getLocalPath($uploadedFile));
$tmpFileName = 'testUploadBasic.txt';
$response = $this->mockFileUpload('NoRelationField', $tmpFileName);
$this->assertFalse($response->isError());
$responseData = Convert::json2array($response->getBody());
$uploadedFile2 = DataObject::get_by_id(File::class, (int) $responseData[0]['id']);
$this->assertTrue(is_object($uploadedFile2), 'The file object is created');
$this->assertFileExists(TestAssetStore::getLocalPath($uploadedFile2));
$this->assertTrue(
$uploadedFile->Filename !== $uploadedFile2->Filename,
'Filename is not the same'
);
$this->assertTrue(
$uploadedFile->ID !== $uploadedFile2->ID,
'File database record is not the same'
);
}
/**
* Tests that UploadField::fileexist works
*/
public function testFileExists()
{
// Check that fileexist works on subfolders
$nonFile = uniqid().'.txt';
$responseEmpty = $this->mockFileExists('NoRelationField', $nonFile);
$responseEmptyData = json_decode($responseEmpty->getBody());
$this->assertFalse($responseEmpty->isError());
$this->assertFalse($responseEmptyData->exists);
// Check that filexists works on root folder
$responseRoot = $this->mockFileExists('RootFolderTest', $nonFile);
$responseRootData = json_decode($responseRoot->getBody());
$this->assertFalse($responseRoot->isError());
$this->assertFalse($responseRootData->exists);
// Check that uploaded files can be detected in the root
$tmpFileName = 'testUploadBasic.txt';
$response = $this->mockFileUpload('RootFolderTest', $tmpFileName);
$this->assertFalse($response->isError());
$this->assertFileExists(ASSETS_PATH . "/UploadFieldTest/.protected/315ae4c3d4/$tmpFileName");
$responseExists = $this->mockFileExists('RootFolderTest', $tmpFileName);
$responseExistsData = json_decode($responseExists->getBody());
$this->assertFalse($responseExists->isError());
$this->assertTrue($responseExistsData->exists);
// Check that uploaded files can be detected
$response = $this->mockFileUpload('NoRelationField', $tmpFileName);
$this->assertFalse($response->isError());
$this->assertFileExists(ASSETS_PATH . "/UploadFieldTest/.protected/UploadedFiles/315ae4c3d4/$tmpFileName");
$responseExists = $this->mockFileExists('NoRelationField', $tmpFileName);
$responseExistsData = json_decode($responseExists->getBody());
$this->assertFalse($responseExists->isError());
$this->assertTrue($responseExistsData->exists);
// Test that files with invalid characters are rewritten safely and both report exists
// Check that uploaded files can be detected in the root
$tmpFileName = '_test___Upload___Bad.txt';
$tmpFileNameExpected = 'test-Upload-Bad.txt';
$response = $this->mockFileUpload('NoRelationField', $tmpFileName);
$this->assertFalse($response->isError());
$this->assertFileExists(ASSETS_PATH . "/UploadFieldTest/.protected/UploadedFiles/315ae4c3d4/$tmpFileNameExpected");
// With original file
$responseExists = $this->mockFileExists('NoRelationField', $tmpFileName);
$responseExistsData = json_decode($responseExists->getBody());
$this->assertFalse($responseExists->isError());
$this->assertTrue($responseExistsData->exists);
// With rewritten file
$responseExists = $this->mockFileExists('NoRelationField', $tmpFileNameExpected);
$responseExistsData = json_decode($responseExists->getBody());
$this->assertFalse($responseExists->isError());
$this->assertTrue($responseExistsData->exists);
// Test that attempts to navigate outside of the directory return false
$responseExists = $this->mockFileExists('NoRelationField', "../../../../var/private/$tmpFileName");
$this->assertTrue($responseExists->isError());
$this->assertContains('File is not a valid upload', $responseExists->getBody());
}
protected function getMockForm()
{
/**
* @skipUpgrade
*/
return new Form(new Controller(), 'Form', new FieldList(), new FieldList());
}
/**
* @param string $tmpFileName
* @return array Emulating an entry in the $_FILES superglobal
*/
protected function getUploadFile($tmpFileName = 'UploadFieldTest-testUpload.txt')
{
$tmpFilePath = TEMP_FOLDER . '/' . $tmpFileName;
$tmpFileContent = '';
for ($i=0; $i<10000;
$i++) {
$tmpFileContent .= '0';
}
file_put_contents($tmpFilePath, $tmpFileContent);
// emulates the $_FILES array
return array(
'name' => array('Uploads' => array($tmpFileName)),
'type' => array('Uploads' => array('text/plaintext')),
'size' => array('Uploads' => array(filesize($tmpFilePath))),
'tmp_name' => array('Uploads' => array($tmpFilePath)),
'error' => array('Uploads' => array(UPLOAD_ERR_OK)),
);
}
/**
* Simulates a form post to the test controller with the specified file IDs
*
* @param string $fileField Name of field to assign ids to
* @param array $ids list of file IDs
* @return array Array with key 'errors'
*/
protected function mockUploadFileIDs($fileField, $ids)
{
// collate file ids
$files = array();
foreach ($ids as $id) {
$files[$id] = $id;
}
$data = array(
'action_submit' => 1
);
if ($files) {
// Normal post requests can't submit empty array values for fields
$data[$fileField] = array('Files' => $files);
}
$form = new UploadFieldTest\UploadFieldTestForm();
$form->loadDataFrom($data, true);
if ($form->validationResult()->isValid()) {
$record = $form->getRecord();
$form->saveInto($record);
$record->write();
return array('errors' => null);
} else {
return array('errors' => $form->getValidator()->getErrors());
}
}
/**
* Simulates a file upload
*
* @param string $fileField Name of the field to mock upload for
* @param array $tmpFileName Name of temporary file to upload
* @return HTTPResponse form response
*/
protected function mockFileUpload($fileField, $tmpFileName)
{
$upload = $this->getUploadFile($tmpFileName);
$_FILES = array($fileField => $upload);
return $this->post(
"UploadFieldTest_Controller/Form/field/{$fileField}/upload",
array($fileField => $upload)
);
}
protected function mockFileExists($fileField, $fileName)
{
return $this->get(
"UploadFieldTest_Controller/Form/field/{$fileField}/fileexists?filename=".urlencode($fileName)
);
}
/**
* Gets the edit form for the given file
*
* @param string $fileField Name of the field
* @param integer $fileID ID of the file to delete
* @return HTTPResponse form response
*/
protected function mockFileEditForm($fileField, $fileID)
{
return $this->get(
"UploadFieldTest_Controller/Form/field/{$fileField}/item/{$fileID}/edit"
);
}
/**
* Mocks edit submissions to a file
*
* @param string $fileField Name of the field
* @param integer $fileID ID of the file to delete
* @param array $fields Fields to update
* @return HTTPResponse form response
*/
protected function mockFileEdit($fileField, $fileID, $fields = array())
{
return $this->post(
"UploadFieldTest_Controller/Form/field/{$fileField}/item/{$fileID}/EditForm",
$fields
);
}
/**
* Simulates a physical file deletion
*
* @param string $fileField Name of the field
* @param integer $fileID ID of the file to delete
* @return HTTPResponse form response
*/
protected function mockFileDelete($fileField, $fileID)
{
return $this->post(
"UploadFieldTest_Controller/Form/field/{$fileField}/item/{$fileID}/delete",
array()
);
}
public function get($url, $session = null, $headers = null, $cookies = null)
{
// Inject stage=Stage into the URL, to force working on draft
$url = $this->addStageToUrl($url);
return parent::get($url, $session, $headers, $cookies);
}
public function post($url, $data, $headers = null, $session = null, $body = null, $cookies = null)
{
// Inject stage=Stage into the URL, to force working on draft
$url = $this->addStageToUrl($url);
return parent::post($url, $data, $headers, $session, $body, $cookies);
}
/**
* Adds ?stage=Stage to url
*
* @param string $url
* @return string
*/
protected function addStageToUrl($url)
{
if (stripos($url, 'stage=Stage') === false) {
if (stripos($url, '?') === false) {
$url .= '?stage=Stage';
} else {
$url .= '&stage=Stage';
}
}
return $url;
}
}

View File

@ -1,82 +0,0 @@
SilverStripe\Assets\Folder:
folder1:
Name: UploadFieldTest
folder1-subfolder1:
Name: subfolder1
Parent: =>SilverStripe\Assets\Folder.folder1
SilverStripe\Assets\File:
file1:
Title: File1
FileFilename: UploadFieldTest/file1.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: file1.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file2:
Title: File2
FileFilename: UploadFieldTest/file2.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: file2.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file3:
Title: File3
FileFilename: UploadFieldTest/file3.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: file3.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file4:
Title: File4
FileFilename: UploadFieldTest/file4.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: file4.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file5:
Title: File5
FileFilename: UploadFieldTest/file5.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: file5.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file-noview:
Title: noview.txt
Name: noview.txt
FileFilename: UploadFieldTest/noview.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: noview.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file-noedit:
Title: noedit.txt
Name: noedit.txt
FileFilename: UploadFieldTest/noedit.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: noedit.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file-nodelete:
Title: nodelete.txt
Name: nodelete.txt
FileFilename: UploadFieldTest/nodelete.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: nodelete.txt
Parent: =>SilverStripe\Assets\Folder.folder1
file-subfolder:
Title: file-subfolder.txt
Name: file-subfolder.txt
FileFilename: UploadFieldTest/subfolder1/file-subfolder.txt
FileHash: 55b443b60176235ef09801153cca4e6da7494a0c
Name: file-subfolder.txt
Parent: =>SilverStripe\Assets\Folder.folder1-subfolder1
SilverStripe\Forms\Tests\UploadFieldTest\TestRecord:
record1:
Title: Record 1
HasOneFileID: =>SilverStripe\Assets\File.file1
HasManyFiles: =>SilverStripe\Assets\File.file2,=>SilverStripe\Assets\File.file3
ManyManyFiles:
- =>SilverStripe\Assets\File.file4
- =>SilverStripe\Assets\File.file5
- =>SilverStripe\Assets\File.file-noedit
- =>SilverStripe\Assets\File.file-nodelete
HasManyNoViewFiles:
- =>SilverStripe\Assets\File.file4
- =>SilverStripe\Assets\File.file5
- =>SilverStripe\Assets\File.file-noedit
- =>SilverStripe\Assets\File.file-nodelete
- =>SilverStripe\Assets\File.file-noview
ReadonlyField: =>SilverStripe\Assets\File.file4

View File

@ -1,17 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\UploadFieldTest;
use SilverStripe\Assets\File;
use SilverStripe\Dev\TestOnly;
/**
* Used for testing the create-on-upload
*/
class ExtendedFile extends File implements TestOnly
{
private static $has_many = array(
'HasOneExtendedRecords' => 'UploadFieldTest_Record.HasOneExtendedFile'
);
}

View File

@ -1,47 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\UploadFieldTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\ORM\DataExtension;
class FileExtension extends DataExtension implements TestOnly
{
private static $has_one = array(
'HasManyRecord' => TestRecord::class,
'HasManyMaxTwoRecord' => TestRecord::class,
'HasManyNoViewRecord' => TestRecord::class,
'ReadonlyRecord' => TestRecord::class
);
private static $has_many = array(
'HasOneRecords' => 'SilverStripe\Forms\Tests\UploadFieldTest\TestRecord.HasOneFile',
'HasOneMaxOneRecords' => 'SilverStripe\Forms\Tests\UploadFieldTest\TestRecord.HasOneFileMaxOne',
'HasOneMaxTwoRecords' => 'SilverStripe\Forms\Tests\UploadFieldTest\TestRecord.HasOneFileMaxTwo',
);
private static $belongs_many_many = array(
'ManyManyRecords' => TestRecord::class
);
public function canDelete($member = null)
{
if ($this->owner->Name == 'nodelete.txt') {
return false;
}
}
public function canEdit($member = null)
{
if ($this->owner->Name == 'noedit.txt') {
return false;
}
}
public function canView($member = null)
{
if ($this->owner->Name == 'noview.txt') {
return false;
}
}
}

View File

@ -1,26 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\UploadFieldTest;
use SilverStripe\Control\Controller;
use SilverStripe\Dev\TestOnly;
class TestController extends Controller implements TestOnly
{
public function Link($action = null)
{
return Controller::join_links('UploadFieldTest_Controller', $action, '/');
}
protected $template = 'BlankPage';
private static $allowed_actions = array('Form', 'index', 'submit');
public function Form()
{
/**
* @skipUpgrade
*/
return new UploadFieldTestForm($this, 'Form');
}
}

View File

@ -1,34 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\UploadFieldTest;
use SilverStripe\Assets\File;
use SilverStripe\Dev\TestOnly;
use SilverStripe\ORM\DataObject;
class TestRecord extends DataObject implements TestOnly
{
private static $table_name = 'UploadFieldTest_Record';
private static $db = array(
'Title' => 'Text',
);
private static $has_one = array(
'HasOneFile' => File::class,
'HasOneFileMaxOne' => File::class,
'HasOneFileMaxTwo' => File::class,
'HasOneExtendedFile' => ExtendedFile::class
);
private static $has_many = array(
'HasManyFiles' => 'SilverStripe\\Assets\\File.HasManyRecord',
'HasManyFilesMaxTwo' => 'SilverStripe\\Assets\\File.HasManyMaxTwoRecord',
'HasManyNoViewFiles' => 'SilverStripe\\Assets\\File.HasManyNoViewRecord',
'ReadonlyField' => 'SilverStripe\\Assets\\File.ReadonlyRecord'
);
private static $many_many = array(
'ManyManyFiles' => File::class
);
}

View File

@ -1,133 +0,0 @@
<?php
namespace SilverStripe\Forms\Tests\UploadFieldTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\Forms\UploadField;
use SilverStripe\ORM\DataObject;
class UploadFieldTestForm extends Form implements TestOnly
{
public function getRecord()
{
if (empty($this->record)) {
$this->record = DataObject::get_one(TestRecord::class, '"Title" = \'Record 1\'');
}
return $this->record;
}
/**
* @skipUpgrade
*/
function __construct($controller = null, $name = 'Form')
{
if (empty($controller)) {
$controller = new TestController();
}
$fieldRootFolder = UploadField::create('RootFolderTest')
->setFolderName('/');
$fieldNoRelation = UploadField::create('NoRelationField')
->setFolderName('UploadedFiles');
$fieldHasOne = UploadField::create('HasOneFile')
->setFolderName('UploadedFiles');
$fieldHasOneExtendedFile = UploadField::create('HasOneExtendedFile')
->setFolderName('UploadedFiles');
$fieldHasOneMaxOne = UploadField::create('HasOneFileMaxOne')
->setFolderName('UploadedFiles')
->setAllowedMaxFileNumber(1);
$fieldHasOneMaxTwo = UploadField::create('HasOneFileMaxTwo')
->setFolderName('UploadedFiles')
->setAllowedMaxFileNumber(2);
$fieldHasMany = UploadField::create('HasManyFiles')
->setFolderName('UploadedFiles');
$fieldHasManyMaxTwo = UploadField::create('HasManyFilesMaxTwo')
->setFolderName('UploadedFiles')
->setAllowedMaxFileNumber(2);
$fieldManyMany = UploadField::create('ManyManyFiles')
->setFolderName('UploadedFiles');
$fieldHasManyNoView = UploadField::create('HasManyNoViewFiles')
->setFolderName('UploadedFiles');
$fieldHasManyDisplayFolder = UploadField::create('HasManyDisplayFolder')
->setFolderName('UploadedFiles')
->setDisplayFolderName('UploadFieldTest');
/**
* @skipUpgrade
*/
$fieldReadonly = UploadField::create('ReadonlyField')
->setFolderName('UploadedFiles')
->performReadonlyTransformation();
$fieldDisabled = UploadField::create('DisabledField')
->setFolderName('UploadedFiles')
->performDisabledTransformation();
$fieldSubfolder = UploadField::create('SubfolderField')
->setFolderName('UploadedFiles/subfolder1');
$fieldCanUploadFalse = UploadField::create('CanUploadFalseField')
->setCanUpload(false);
$fieldCanAttachExisting = UploadField::create('CanAttachExistingFalseField')
->setCanAttachExisting(false);
$fieldAllowedExtensions = new UploadField('AllowedExtensionsField');
$fieldAllowedExtensions->getValidator()->setAllowedExtensions(array('txt'));
$fieldInvalidAllowedExtensions = new UploadField('InvalidAllowedExtensionsField');
$fieldInvalidAllowedExtensions->getValidator()->setAllowedExtensions(array('txt', 'php'));
$fields = new FieldList(
$fieldRootFolder,
$fieldNoRelation,
$fieldHasOne,
$fieldHasOneMaxOne,
$fieldHasOneMaxTwo,
$fieldHasOneExtendedFile,
$fieldHasMany,
$fieldHasManyMaxTwo,
$fieldManyMany,
$fieldHasManyNoView,
$fieldHasManyDisplayFolder,
$fieldReadonly,
$fieldDisabled,
$fieldSubfolder,
$fieldCanUploadFalse,
$fieldCanAttachExisting,
$fieldAllowedExtensions,
$fieldInvalidAllowedExtensions
);
$actions = new FieldList(
new FormAction('submit')
);
$validator = new RequiredFields();
parent::__construct($controller, $name, $fields, $actions, $validator);
$this->loadDataFrom($this->getRecord());
}
public function submit($data, Form $form)
{
$record = $this->getRecord();
$form->saveInto($record);
$record->write();
return json_encode($record->toMap());
}
}

View File

@ -44,7 +44,6 @@ const config = [
'LeftAndMain.Ping': `${PATHS.ADMIN_JS_SRC}/legacy/LeftAndMain.Ping.js`,
leaktools: `${PATHS.ADMIN_JS_SRC}/legacy/leaktools.js`,
MemberImportForm: `${PATHS.ADMIN_JS_SRC}/legacy/MemberImportForm.js`,
UploadField_select: `${PATHS.ADMIN_JS_SRC}/legacy/UploadField_select.js`,
TinyMCE_sslink: `${PATHS.ADMIN_JS_SRC}/legacy/TinyMCE_sslink.js`,
},
resolve: {
@ -160,8 +159,6 @@ const config = [
'bundle': `${PATHS.ADMIN_CSS_SRC}/bundle.scss`,
'editor': `${PATHS.ADMIN_CSS_SRC}/editor.scss`,
'GridField_print': `${PATHS.ADMIN_CSS_SRC}/legacy/GridField_print.scss`,
'AssetUploadField': `${PATHS.ADMIN_CSS_SRC}/legacy/AssetUploadField.scss`,
'UploadField': `${PATHS.ADMIN_CSS_SRC}/legacy/UploadField.scss`,
},
output: {
path: 'admin/client/dist/styles',