Merge pull request #6667 from open-sausages/pulls/4.0/upload-be-gone
Remove UploadField, AssetField and associated files
@ -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
|
||||
|
14
.upgrade.yml
@ -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
|
||||
|
BIN
admin/client/dist/images/default_media.png
vendored
Before Width: | Height: | Size: 5.0 KiB |
56
admin/client/dist/images/drag_drop_opt.svg
vendored
@ -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 |
BIN
admin/client/dist/images/logo_small.png
vendored
Before Width: | Height: | Size: 709 B |
BIN
admin/client/dist/images/logo_small@2x.png
vendored
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.7 KiB |
BIN
admin/client/dist/images/network-save.gif
vendored
Before Width: | Height: | Size: 1.7 KiB |
BIN
admin/client/dist/images/progressbar_blue.gif
vendored
Before Width: | Height: | Size: 9.9 KiB |
BIN
admin/client/dist/images/question.png
vendored
Before Width: | Height: | Size: 343 B |
94
admin/client/dist/images/silverstripe.svg
vendored
@ -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="s" 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="c" 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="d" 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="e" 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="f" 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="k" 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="n" 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="o" 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="j" 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="p" 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="q" 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="y" 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="B" 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="E" 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="F" 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="H" 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="v" 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="A" 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="C" 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="R" 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="t" 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="w" 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="z" 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="Q" 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="T" 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="U" 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="G" 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="I" 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="X" 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="Y" 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="h" 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="a" 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="i" 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="l" 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="r" 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="u" 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="x" 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="J" 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="K" 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="m" 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="g" 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="N" 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="O" d="M458 418l-273-270-131 128-26-26 131-131 26-25 25 25 274 274z m0 0"/>
|
||||
<glyph glyph-name="upload" unicode="b" 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="S" 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="M" 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="W" 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="0" 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="1" 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="2" 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="V" 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="4" 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="P" 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="3" 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="5" 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="6" 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="7" 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="8" 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="9" 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="!" 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="Z" 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="D" 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=""" 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="#" 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="$" 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="%" 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="&" 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="'" 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=")" 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="(" 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="*" 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="+" 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="," 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="-" 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="." 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="L" 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="/" 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=":" 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=";" 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="<" 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="=" 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=">" 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="?" 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="@" 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 |
BIN
admin/client/dist/images/silverstripe_logo.png
vendored
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 3.8 KiB |
BIN
admin/client/dist/images/spinner.gif
vendored
Before Width: | Height: | Size: 2.2 KiB |
BIN
admin/client/dist/images/spinner@2x.gif
vendored
Before Width: | Height: | Size: 5.2 KiB |
BIN
admin/client/dist/images/sprites/sprite-btn-icon.png
vendored
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 5.9 KiB |
BIN
admin/client/dist/images/sticky-toggle-off.png
vendored
Before Width: | Height: | Size: 327 B |
BIN
admin/client/dist/images/sticky-toggle-on.png
vendored
Before Width: | Height: | Size: 359 B |
BIN
admin/client/dist/images/throbber.gif
vendored
Before Width: | Height: | Size: 1.8 KiB |
23
admin/client/dist/js/TinyMCE_ssmedia.js
vendored
@ -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)})}()}])
|
6
admin/client/dist/js/UploadField_select.js
vendored
@ -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()}})})}])
|
2643
admin/client/dist/js/bundle.js
vendored
@ -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,187 @@ 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 e.toLowerCase()}function n(e){return"string"!=typeof e&&(e=String(e)),e}function r(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 m.iterable&&(t[Symbol.iterator]=function(){return t}),t}function i(e){this.map={},e instanceof i?e.forEach(function(e,t){this.append(t,e)},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){
|
||||
this.append(t,e[t])},this)}function o(e){return e.bodyUsed?Promise.reject(new TypeError("Already read")):void(e.bodyUsed=!0)}function a(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
|
||||
return t.readAsArrayBuffer(e),a(t)}function l(e){var t=new FileReader
|
||||
return t.readAsText(e),a(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"))
|
||||
|
||||
},m.blob?(this.blob=function(){var e=a(this)
|
||||
},m.blob?(this.blob=function(){var e=o(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(s)},this.text=function(){var e=o(this)
|
||||
if(e)return e
|
||||
if(this._bodyBlob)return l(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 Promise.resolve(this._bodyText)}):this.text=function(){var e=o(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 g.indexOf(t)>-1?t:e}function d(e,t){t=t||{}
|
||||
var n=t.body
|
||||
if(d.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,
|
||||
this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new i(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 i(t.headers)),this.method=c(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),
|
||||
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 p(e){var t=new i,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 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 i?t.headers:new i(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)
|
||||
i.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)},i.prototype["delete"]=function(e){delete this.map[t(e)]},i.prototype.get=function(e){var n=this.map[t(e)]
|
||||
return n?n[0]:null},i.prototype.getAll=function(e){return this.map[t(e)]||[]},i.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},i.prototype.set=function(e,r){this.map[t(e)]=[n(r)]},i.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)},i.prototype.keys=function(){var e=[]
|
||||
return this.forEach(function(t,n){e.push(n)}),r(e)},i.prototype.values=function(){var e=[]
|
||||
return this.forEach(function(t){e.push(t)}),r(e)},i.prototype.entries=function(){var e=[]
|
||||
return this.forEach(function(t,n){e.push([n,t])}),r(e)},m.iterable&&(i.prototype[Symbol.iterator]=i.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),
|
||||
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 i(this.headers),
|
||||
url:this.url})},h.error=function(){var e=new h(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 y=[301,302,303,307,308]
|
||||
h.redirect=function(e,t){if(y.indexOf(t)===-1)throw new RangeError("Invalid status code")
|
||||
return new h(null,{status:t,headers:{location:e}})},e.Headers=i,e.Request=d,e.Response=h,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)
|
||||
}var o
|
||||
o=d.prototype.isPrototypeOf(e)&&!t?e:new d(e,t)
|
||||
var a=new XMLHttpRequest
|
||||
a.onload=function(){var e={status:a.status,statusText:a.statusText,headers:p(a),url:i()},t="response"in a?a.response:a.responseText
|
||||
n(new h(t,e))},a.onerror=function(){r(new TypeError("Network request failed"))},a.ontimeout=function(){r(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),
|
||||
"responseType"in a&&m.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 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)}}
|
||||
},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 +249,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 +285,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 +309,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 +338,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 +442,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 +462,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 +728,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 +780,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||" ",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||" ",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 +1021,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 +1055,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 +1146,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 +1174,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 +1213,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>»</span></a>').append('<a class="toggle-collapse" href="#" data-toggle="tooltip" title="'+i18n._t("LeftAndMain.COLLAPSEPANEL","Collapse Panel")+'"><span>«</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 +1309,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 +1363,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 +1422,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 +1460,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={"<":"<",">":">","&":"&",'"':""","\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 +1694,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 +1727,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 +1748,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 +1843,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 +2042,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 +2088,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 +2222,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 +2275,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 +2296,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 +2313,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 +2380,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}])
|
||||
|
2
admin/client/dist/js/leaktools.js
vendored
@ -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
|
||||
|
2
admin/client/dist/js/main.js
vendored
@ -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
|
3469
admin/client/dist/js/vendor.js
vendored
454
admin/client/dist/styles/AssetUploadField.css
vendored
@ -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;
|
||||
}
|
||||
}
|
321
admin/client/dist/styles/UploadField.css
vendored
@ -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;
|
||||
}
|
||||
}
|
324
admin/client/dist/styles/bundle.css
vendored
@ -7530,7 +7530,7 @@ h1{
|
||||
@font-face{
|
||||
font-family:silverstripe;
|
||||
src:url(../fonts/silverstripe.eot);
|
||||
src:url(../fonts/silverstripe.eot) format("embedded-opentype"),url(../fonts/silverstripe.woff) format("woff"),url(../fonts/silverstripe.ttf) format("truetype"),url(../images/silverstripe.svg) format("svg");
|
||||
src:url(../fonts/silverstripe.eot) format("embedded-opentype"),url(../fonts/silverstripe.woff) format("woff"),url(../fonts/silverstripe.ttf) format("truetype"),url(../fonts/silverstripe.svg) format("svg");
|
||||
font-weight:400;
|
||||
font-style:normal;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
@ -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');
|
||||
|
@ -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');
|
||||
|
@ -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);
|
||||
}
|
||||
});
|
@ -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({
|
||||
|
@ -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;
|
||||
}
|
||||
});
|
||||
});
|
@ -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>' +
|
||||
'{% } %}'
|
||||
);
|
@ -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();
|
||||
}
|
||||
});
|
||||
});
|
@ -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>' +
|
||||
'{% } %}'
|
||||
);
|
@ -38,7 +38,6 @@
|
||||
@import "legacy/GridField";
|
||||
@import "legacy/SelectionGroup";
|
||||
@import "legacy/TreeDropdownField";
|
||||
@import "legacy/UploadField";
|
||||
|
||||
// Components
|
||||
@import "../components/Accordion/Accordion";
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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.
|
@ -10,7 +10,7 @@ to track down a template or two. The template engine can help you along by displ
|
||||
source code comments indicating which template is responsible for rendering each
|
||||
block of html on your page.
|
||||
|
||||
::::yaml
|
||||
:::yaml
|
||||
---
|
||||
Only:
|
||||
environment: 'dev'
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -267,6 +267,47 @@ instead, or if used in an actual XML file use `.CDATA` (see [template casting](/
|
||||
|
||||
Where your code once used SQLQuery you should now use SQLSelect in all cases, as this has been removed (check the [3.2.0](3.2.0) upgrading notes).
|
||||
|
||||
#### Upgrade code that uses UploadField
|
||||
|
||||
This field has been superceded by a new class provided by the
|
||||
[asset-admin](https://github.com/silverstripe/silverstripe-asset-admin) module, which provides a more
|
||||
streamlined simpler mechanism for uploading File dataobjects.
|
||||
|
||||
A helper service `FileHandleField` is provided to assist with dependency injection. Where the asset-admin
|
||||
module is not installed this service will fall back to the `FileField` class instead.
|
||||
|
||||
Usages of UploadField will need to be upgraded as below:
|
||||
|
||||
3.x code
|
||||
|
||||
|
||||
:::php
|
||||
class MyClass extends DataObject {
|
||||
public function getCMSFields() {
|
||||
return new FieldList(
|
||||
new UploadField('Files')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
4.x code
|
||||
|
||||
|
||||
:::php
|
||||
use SilverStripe\ORM\DataObject;
|
||||
use SilverStripe\Forms\FieldList;
|
||||
use SilverStripe\Forms\FileHandleField;
|
||||
|
||||
class MyClass extends DataObject {
|
||||
public function getCMSFields() {
|
||||
return FieldList::create(
|
||||
Injector::inst()->create(FileHandleField::class, 'Files')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#### Upgrade code that uses i18n
|
||||
|
||||
In many cases, localisation strings which worked in 3.x will continue to work in 4.0, however certain patterns
|
||||
|
22
npm-shrinkwrap.json
generated
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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 null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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']
|
||||
);
|
||||
}
|
||||
}
|
@ -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.
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
||||
}
|
@ -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 %>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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 %>
|
@ -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 %>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<% base_tag %>
|
||||
<title></title>
|
||||
</head>
|
||||
|
||||
<body class="cms ss-uploadfield-edit-iframe">
|
||||
$Form
|
||||
</body>
|
||||
</html>
|
@ -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)
|
||||
);
|
||||
}
|
||||
}
|
@ -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
|
@ -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');
|
||||
}
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
@ -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')"
|
||||
);
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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
|
@ -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'
|
||||
);
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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');
|
||||
}
|
||||
}
|
@ -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
|
||||
);
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
@ -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: {
|
||||
@ -122,10 +121,10 @@ const config = [
|
||||
$: 'jQuery',
|
||||
}),
|
||||
new webpack.DefinePlugin({
|
||||
'process.env':{
|
||||
'process.env': {
|
||||
// Builds React in production mode, avoiding console warnings
|
||||
'NODE_ENV': JSON.stringify('production')
|
||||
}
|
||||
NODE_ENV: JSON.stringify('production'),
|
||||
},
|
||||
}),
|
||||
new webpack.optimize.UglifyJsPlugin({
|
||||
compress: {
|
||||
@ -139,14 +138,16 @@ const config = [
|
||||
max_line_len: 200,
|
||||
},
|
||||
}),
|
||||
// Most vendor libs are loaded directly into the 'vendor' bundle (through require() calls in vendor.js).
|
||||
// This ensures that any further require() calls in other bundles aren't duplicating libs.
|
||||
// Most vendor libs are loaded directly into the 'vendor' bundle (through require()
|
||||
// calls in vendor.js). This ensures that any further require() calls in other
|
||||
// bundles aren't duplicating libs.
|
||||
new webpack.optimize.CommonsChunkPlugin({
|
||||
name: 'vendor',
|
||||
minChunks: Infinity,
|
||||
}),
|
||||
// Most vendor libs are loaded directly into the 'vendor' bundle (through require() calls in vendor.js).
|
||||
// This ensures that any further require() calls in other bundles aren't duplicating libs.
|
||||
// Most vendor libs are loaded directly into the 'vendor' bundle (through require()
|
||||
// calls in vendor.js). This ensures that any further require() calls in other
|
||||
// bundles aren't duplicating libs.
|
||||
new webpack.optimize.CommonsChunkPlugin({
|
||||
name: 'vendor',
|
||||
minChunks: Infinity,
|
||||
@ -157,11 +158,9 @@ const config = [
|
||||
// TODO Split out with new 'admin' module
|
||||
name: 'css',
|
||||
entry: {
|
||||
'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`,
|
||||
bundle: `${PATHS.ADMIN_CSS_SRC}/bundle.scss`,
|
||||
editor: `${PATHS.ADMIN_CSS_SRC}/editor.scss`,
|
||||
GridField_print: `${PATHS.ADMIN_CSS_SRC}/legacy/GridField_print.scss`,
|
||||
},
|
||||
output: {
|
||||
path: 'admin/client/dist/styles',
|
||||
@ -187,11 +186,12 @@ const config = [
|
||||
},
|
||||
{
|
||||
test: /\.(png|gif|jpg|svg)$/,
|
||||
loader: `url?limit=10000&name=../images/[name].[ext]`,
|
||||
exclude: /fonts\/([\w_-]+)\.svg$/,
|
||||
loader: 'url?limit=10000&name=../images/[name].[ext]',
|
||||
},
|
||||
{
|
||||
test: /\.(woff|eot|ttf)$/,
|
||||
loader: `file?name=../fonts/[name].[ext]`,
|
||||
test: /fonts\/([\w_-]+)\.(woff|eot|ttf|svg)$/,
|
||||
loader: 'file?name=../fonts/[name].[ext]',
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -232,11 +232,12 @@ const config = [
|
||||
},
|
||||
{
|
||||
test: /\.(png|gif|jpg|svg)$/,
|
||||
loader: `url?limit=10000&name=../images/[name].[ext]`,
|
||||
exclude: /fonts\/([\w_-]+)\.svg$/,
|
||||
loader: 'url?limit=10000&name=../images/[name].[ext]',
|
||||
},
|
||||
{
|
||||
test: /\.(woff|eot|ttf)$/,
|
||||
loader: `file?name=../fonts/[name].[ext]`,
|
||||
test: /fonts\/([\w_-]+)\.(woff|eot|ttf|svg)$/,
|
||||
loader: 'file?name=../fonts/[name].[ext]',
|
||||
},
|
||||
],
|
||||
},
|
||||
|