├── .crowdin.yml
├── .editorconfig
├── .github
├── FUNDING.yml
└── workflows
│ ├── documentation.yml
│ ├── publish.yml
│ └── tests.yaml
├── .gitignore
├── Build
├── Scripts
│ └── runTests.sh
├── Sources
│ ├── js
│ │ ├── components
│ │ │ ├── button-bar.js
│ │ │ ├── colorpicker.js
│ │ │ ├── element-key.js
│ │ │ ├── field-group.js
│ │ │ ├── field-key.js
│ │ │ ├── field-row.js
│ │ │ ├── field.js
│ │ │ ├── form-field.js
│ │ │ ├── item-list.js
│ │ │ ├── key-value-list.js
│ │ │ ├── nested-draggable.js
│ │ │ ├── select-multiple-side-by-side.js
│ │ │ └── splash-screen.js
│ │ └── mask.js
│ └── scss
│ │ ├── _button.scss
│ │ ├── _callout.scss
│ │ ├── _checkbox.scss
│ │ ├── _edit.scss
│ │ ├── _elements.scss
│ │ ├── _field-form.scss
│ │ ├── _field-group.scss
│ │ ├── _field-list.scss
│ │ ├── _field.scss
│ │ ├── _fields.scss
│ │ ├── _footer.scss
│ │ ├── _form-control-icon.scss
│ │ ├── _item-table.scss
│ │ ├── _list.scss
│ │ ├── _multiple-side-by-side.scss
│ │ ├── _overrides.scss
│ │ ├── _reset-button.scss
│ │ ├── _root.scss
│ │ ├── _setup-incomplete.scss
│ │ ├── _sidebar.scss
│ │ ├── _spinner.scss
│ │ ├── _splashscreen.scss
│ │ ├── _templa.scss
│ │ ├── _utility.scss
│ │ ├── _variables.scss
│ │ └── mask.scss
├── package-lock.json
├── package.json
├── php-cs-fixer.php
├── php-cs-fixer
│ └── header-comment.php
├── phpstan
│ ├── phpstan-baseline.neon
│ ├── phpstan-constants.php
│ └── phpstan.neon
├── phpunit
│ ├── UnitTests.xml
│ └── UnitTestsBootstrap.php
├── rollup.config.js
└── testing-docker
│ └── docker-compose.yaml
├── CHANGELOG.md
├── Classes
├── CodeGenerator
│ ├── HtmlCodeGenerator.php
│ ├── SqlCodeGenerator.php
│ ├── TcaCodeGenerator.php
│ └── TyposcriptCodeGenerator.php
├── Command
│ ├── ConvertFormatCommand.php
│ └── RestructureOverrideFieldsCommand.php
├── ConfigurationLoader
│ ├── ConfigurationLoader.php
│ └── ConfigurationLoaderInterface.php
├── Controller
│ ├── AjaxController.php
│ ├── FieldsController.php
│ └── MaskController.php
├── DataProcessing
│ └── MaskProcessor.php
├── Definition
│ ├── ArrayDefinitionSorter.php
│ ├── ElementDefinition.php
│ ├── ElementDefinitionCollection.php
│ ├── ElementTcaDefinition.php
│ ├── NestedTcaFieldDefinitions.php
│ ├── PaletteDefinition.php
│ ├── PaletteDefinitionCollection.php
│ ├── SqlColumnDefinition.php
│ ├── SqlDefinition.php
│ ├── TableDefinition.php
│ ├── TableDefinitionCollection.php
│ ├── TcaDefinition.php
│ └── TcaFieldDefinition.php
├── DependencyInjection
│ └── LoaderPass.php
├── Domain
│ └── Repository
│ │ ├── BackendLayoutRepository.php
│ │ └── StorageRepository.php
├── Enumeration
│ ├── FieldType.php
│ └── Tab.php
├── Event
│ ├── MaskAfterElementDeletedEvent.php
│ ├── MaskAfterElementSavedEvent.php
│ └── MaskAllowedFieldsEvent.php
├── EventListeners
│ ├── MaskBackendPreviewEventListener.php
│ ├── NestedContentElementsUsedEventListener.php
│ └── RegisterIcons.php
├── Fluid
│ └── FluidTemplateContentObject.php
├── Form
│ └── FormDataProvider
│ │ └── TcaTypesShowitemMaskBeLayoutFields.php
├── Helper
│ └── InlineHelper.php
├── Imaging
│ ├── IconProvider
│ │ └── ContentElementIconProvider.php
│ └── PreviewIconResolver.php
├── ItemsProcFuncs
│ ├── CTypeList.php
│ └── ColPosList.php
├── Loader
│ ├── JsonLoader.php
│ ├── JsonSplitLoader.php
│ ├── LoaderInterface.php
│ └── LoaderRegistry.php
├── Migrations
│ ├── ConfigCleanerMigration.php
│ ├── DefaultTcaMigration.php
│ ├── DescriptionByElementMigration.php
│ ├── MigrationInterface.php
│ ├── MigrationManager.php
│ ├── OrphanRemoverMigration.php
│ ├── RepeatableMigrationInterface.php
│ └── RteMigration.php
├── Updates
│ ├── ConvertTemplatesToUppercase.php
│ ├── FillTranslationSourceField.php
│ ├── MigrateContentFields.php
│ └── MoveRteOptions.php
└── Utility
│ ├── AffixUtility.php
│ ├── ArrayToTypoScriptConverter.php
│ ├── DateUtility.php
│ ├── FieldTypeUtility.php
│ ├── OverrideFieldsUtility.php
│ ├── TcaConverter.php
│ └── TemplatePathUtility.php
├── Configuration
├── Backend
│ ├── AjaxRoutes.php
│ └── Modules.php
├── ContentSecurityPolicies.php
├── JavaScriptModules.php
├── Mask
│ ├── FieldGroups.php
│ ├── TYPO3v12
│ │ └── Defaults.php
│ ├── TYPO3v13
│ │ └── Defaults.php
│ ├── Tabs
│ │ ├── category.php
│ │ ├── check.php
│ │ ├── colorpicker.php
│ │ ├── content.php
│ │ ├── date.php
│ │ ├── datetime.php
│ │ ├── email.php
│ │ ├── file.php
│ │ ├── float.php
│ │ ├── folder.php
│ │ ├── group.php
│ │ ├── inline.php
│ │ ├── integer.php
│ │ ├── linebreak.php
│ │ ├── link.php
│ │ ├── media.php
│ │ ├── palette.php
│ │ ├── radio.php
│ │ ├── richtext.php
│ │ ├── select.php
│ │ ├── slug.php
│ │ ├── string.php
│ │ ├── tab.php
│ │ ├── text.php
│ │ └── timestamp.php
│ └── TcaFields.php
├── Services.php
├── Services.yaml
├── Sets
│ └── Mask
│ │ ├── config.yaml
│ │ └── setup.typoscript
├── TCA
│ └── Overrides
│ │ ├── pages.php
│ │ ├── sys_template.php
│ │ └── tt_content.php
└── TypoScript
│ └── setup.typoscript
├── Documentation
├── API
│ ├── Events.rst
│ ├── Index.rst
│ └── Loader.rst
├── BackendPreview
│ └── Index.rst
├── ChangeLog
│ ├── 6.0
│ │ ├── CheckboxUI.rst
│ │ ├── FieldSelection.rst
│ │ ├── Group.rst
│ │ ├── HTMLGeneration.rst
│ │ ├── ImageOverlay.rst
│ │ ├── Index.rst
│ │ ├── LanguageSync.rst
│ │ ├── NewDefaults.rst
│ │ ├── Palettes.rst
│ │ ├── RelationsResolved.rst
│ │ ├── SelectIcons.rst
│ │ └── Timestamp.rst
│ ├── 7.0
│ │ ├── IconAndColorPicker.rst
│ │ ├── Index.rst
│ │ ├── MultiStepWizard.rst
│ │ ├── MultiUse.rst
│ │ ├── NewAppearance.rst
│ │ └── Validation.rst
│ ├── 7.1
│ │ └── Index.rst
│ ├── 7.2
│ │ └── Index.rst
│ ├── 8.0
│ │ └── Index.rst
│ ├── 8.1
│ │ └── Index.rst
│ ├── 8.2
│ │ └── Index.rst
│ ├── 8.3
│ │ └── Index.rst
│ └── Index.rst
├── Contentelements
│ └── Index.rst
├── ExtensionSettings
│ └── Index.rst
├── Fieldtypes
│ ├── Index.rst
│ └── Type
│ │ ├── Category.rst
│ │ ├── Check.rst
│ │ ├── Colorpicker.rst
│ │ ├── Content.rst
│ │ ├── Date.rst
│ │ ├── Datetime.rst
│ │ ├── Email.rst
│ │ ├── File.rst
│ │ ├── Float.rst
│ │ ├── Folder.rst
│ │ ├── Group.rst
│ │ ├── Inline.rst
│ │ ├── Integer.rst
│ │ ├── Linebreak.rst
│ │ ├── Link.rst
│ │ ├── Media.rst
│ │ ├── Palette.rst
│ │ ├── Radio.rst
│ │ ├── Richtext.rst
│ │ ├── Select.rst
│ │ ├── Slug.rst
│ │ ├── String.rst
│ │ ├── Tab.rst
│ │ ├── Text.rst
│ │ └── Timestamp.rst
├── Glossary
│ └── Index.rst
├── Guides
│ ├── CropVariants.rst
│ ├── DataProcessors.rst
│ ├── FluidStyledContent.rst
│ ├── Index.rst
│ ├── NewContentElementWizard.rst
│ ├── OverrideTCA.rst
│ ├── RTEConfig.rst
│ ├── TypoScriptConstants.rst
│ └── UseExistingTCAFields.rst
├── Images
│ ├── AdministratorManual
│ │ ├── ExtensionConfiguration.png
│ │ └── TypoScriptTemplate.png
│ ├── ContentelementsManual
│ │ ├── Backendpreview.png
│ │ ├── ElementMetaData.png
│ │ ├── FieldForm.png
│ │ ├── Fontawesome.png
│ │ ├── MaskBuilder.png
│ │ ├── ShortTitle.png
│ │ └── Wizard.png
│ ├── FieldTypes
│ │ ├── Category.svg
│ │ ├── CategoryPreview.png
│ │ ├── Check.svg
│ │ ├── CheckPreview.png
│ │ ├── Colorpicker.svg
│ │ ├── ColorpickerPreview.png
│ │ ├── Content.svg
│ │ ├── ContentPreview.png
│ │ ├── Date.svg
│ │ ├── DatePreview.png
│ │ ├── Datetime.svg
│ │ ├── DatetimePreview.png
│ │ ├── Email.svg
│ │ ├── EmailPreview.png
│ │ ├── File.svg
│ │ ├── FilePreview.png
│ │ ├── Float.svg
│ │ ├── FloatPreview.png
│ │ ├── Folder.svg
│ │ ├── FolderPreview.png
│ │ ├── Group.svg
│ │ ├── GroupPreview.png
│ │ ├── Inline.svg
│ │ ├── InlinePreview.png
│ │ ├── Integer.svg
│ │ ├── IntegerPreview.png
│ │ ├── Linebreak.svg
│ │ ├── LinebreakPreview.png
│ │ ├── Link.svg
│ │ ├── LinkPreview.png
│ │ ├── Media.svg
│ │ ├── MediaPreview.png
│ │ ├── Palette.svg
│ │ ├── PalettePreview.png
│ │ ├── Radio.svg
│ │ ├── RadioPreview.png
│ │ ├── Richtext.svg
│ │ ├── RichtextPreview.png
│ │ ├── Select.svg
│ │ ├── SelectPreview.png
│ │ ├── Slug.svg
│ │ ├── SlugPreview.png
│ │ ├── String.svg
│ │ ├── StringPreview.png
│ │ ├── Tab.svg
│ │ ├── TabPreview.png
│ │ ├── Text.svg
│ │ ├── TextPreview.png
│ │ ├── Timestamp.svg
│ │ └── TimestampPreview.png
│ ├── Guides
│ │ └── MaskContentElement.png
│ ├── IntroductionManual
│ │ └── BackendScreenshot.png
│ ├── Mask6
│ │ ├── checkboxes.png
│ │ ├── existing-fields.png
│ │ ├── group-resolving.png
│ │ ├── image-cropping.png
│ │ ├── linebreak-builder.png
│ │ ├── linebreak-in-element.png
│ │ ├── mask-group-element.png
│ │ ├── mask-group.png
│ │ ├── palette-builder.png
│ │ ├── palette-in-element.png
│ │ ├── select-icons1.png
│ │ ├── select-icons2.png
│ │ └── timestamp.png
│ ├── Mask7.1
│ │ ├── AutoConfiguration.png
│ │ ├── ColorPicker.png
│ │ ├── DescriptionOverrides.png
│ │ └── MissingDirectories.png
│ ├── Mask7.2
│ │ ├── BodytextAsText.png
│ │ ├── CTypeSelect.png
│ │ ├── ElementSearch.png
│ │ ├── ForeignTableSelect.png
│ │ ├── ItemGroups.png
│ │ ├── ItemSorting.png
│ │ ├── ItemsModule.png
│ │ ├── LinkHandler.png
│ │ ├── Migrations.png
│ │ ├── OverlayIcon.png
│ │ └── ValuePicker.png
│ ├── Mask7
│ │ ├── AlertError.png
│ │ ├── ColorPicker.png
│ │ ├── MaskBuilder.png
│ │ ├── MultiUse.png
│ │ ├── MultiUsePopup.png
│ │ ├── Responsive.png
│ │ └── Validation.png
│ ├── PageTemplates
│ │ ├── BackendLayout.png
│ │ ├── DataDebug.png
│ │ └── PageRecord.png
│ └── SponsorsManual
│ │ ├── advancedwebmarketing.jpg
│ │ ├── checkdomain.jpg
│ │ ├── dkd.jpg
│ │ ├── eovision.jpg
│ │ ├── hotelglueck.jpg
│ │ ├── joppnet.jpg
│ │ ├── mbit.jpg
│ │ ├── mittwald.jpg
│ │ ├── pinkdata.jpg
│ │ ├── primeit.jpg
│ │ ├── profitbricks.jpg
│ │ ├── rackspeed.jpg
│ │ ├── robhost.jpg
│ │ ├── schwabe.jpg
│ │ ├── seminaris.jpg
│ │ ├── sgalinski.jpg
│ │ ├── sitedesign.jpg
│ │ ├── skidata.jpg
│ │ ├── t3premium.svg
│ │ ├── tommoko.jpg
│ │ ├── ttg.jpg
│ │ ├── webconsulting.png
│ │ └── webservices.jpg
├── Includes.txt
├── Index.rst
├── Installation
│ ├── Index.rst
│ └── _codesnippets
│ │ └── _config.yaml
├── Introduction
│ └── Index.rst
├── Pagetemplates
│ └── Index.rst
├── Sitepackage
│ └── Index.rst
├── Sponsors
│ └── Index.rst
├── ToDoList
│ └── Index.rst
├── Troubleshooting
│ └── Index.rst
├── Upgrade
│ └── Index.rst
└── guides.xml
├── LICENSE
├── Makefile
├── README.md
├── Resources
├── Private
│ ├── .htaccess
│ ├── Language
│ │ ├── locallang.xlf
│ │ └── locallang_mask.xlf
│ ├── Partials
│ │ ├── Edit.html
│ │ ├── Element.html
│ │ ├── Form.html
│ │ ├── Form
│ │ │ ├── Description.html
│ │ │ ├── Key.html
│ │ │ ├── KeySelect.html
│ │ │ ├── Label.html
│ │ │ ├── OverrideDescription.html
│ │ │ └── OverrideLabel.html
│ │ ├── List.html
│ │ └── List
│ │ │ ├── Footer.html
│ │ │ └── Header.html
│ └── Templates
│ │ ├── Ajax
│ │ └── ShowHtml.html
│ │ └── Wizard
│ │ └── Main.html
└── Public
│ ├── Fonts
│ ├── iconpicker.eot
│ ├── iconpicker.svg
│ ├── iconpicker.ttf
│ └── iconpicker.woff
│ ├── Icons
│ ├── Extension.svg
│ ├── Fieldtypes
│ │ ├── Category.svg
│ │ ├── Check.svg
│ │ ├── Colorpicker.svg
│ │ ├── Content.svg
│ │ ├── Date.svg
│ │ ├── Datetime.svg
│ │ ├── Email.svg
│ │ ├── File.svg
│ │ ├── Float.svg
│ │ ├── Folder.svg
│ │ ├── Group.svg
│ │ ├── Inline.svg
│ │ ├── Integer.svg
│ │ ├── Linebreak.svg
│ │ ├── Link.svg
│ │ ├── Media.svg
│ │ ├── Palette.svg
│ │ ├── Radio.svg
│ │ ├── Richtext.svg
│ │ ├── Select.svg
│ │ ├── Slug.svg
│ │ ├── String.svg
│ │ ├── Tab.svg
│ │ ├── Text.svg
│ │ └── Timestamp.svg
│ ├── MaskUkraine.svg
│ └── module-mask_wizard.svg
│ ├── Images
│ ├── Logo_TVconverter.png
│ ├── Logo_WEBprofil_T3camp_druck.png
│ ├── Logo_WEBprofil_T3camp_druck_Kopie_2.png
│ ├── banner.jpg
│ ├── empty.svg
│ ├── github_logo.svg
│ ├── legacy-icon.gif
│ └── verified.svg
│ ├── JavaScript
│ └── mask.js
│ └── Styles
│ ├── Backend
│ └── backend.css
│ ├── disable-dark-mode.css
│ ├── mask.css
│ └── mask.css.map
├── Tests
└── Unit
│ ├── CodeGenerator
│ ├── TcaCodeGeneratorTest.php
│ └── TypoScriptCodeGeneratorTest.php
│ ├── ConfigurationLoader
│ └── FakeConfigurationLoader.php
│ ├── Controller
│ └── FieldsControllerTest.php
│ ├── Definition
│ ├── ArrayDefinitionSorterTest.php
│ ├── ElementDefinitionCollectionTest.php
│ ├── SqlColumnDefinitionTest.php
│ ├── TableDefinitionCollectionTest.php
│ └── TcaFieldDefinitionTest.php
│ ├── Domain
│ └── Repository
│ │ └── StorageRepositoryTest.php
│ ├── Event
│ ├── MaskAfterElementDeletedEventTest.php
│ ├── MaskAfterElementSavedEventTest.php
│ └── MaskAllowedFieldsEventTest.php
│ ├── Fixtures
│ ├── Configuration
│ │ ├── ContentElements
│ │ │ ├── a.json
│ │ │ ├── b.json
│ │ │ ├── c.json
│ │ │ ├── d.json
│ │ │ └── e.json
│ │ ├── legacyRte.json
│ │ ├── mask.json
│ │ ├── missingDefaults.json
│ │ └── orphanTables.json
│ ├── Defaults.php
│ ├── FieldGroups.php
│ ├── Tabs
│ │ ├── check.php
│ │ ├── content.php
│ │ ├── date.php
│ │ ├── datetime.php
│ │ ├── file.php
│ │ ├── float.php
│ │ ├── group.php
│ │ ├── inline.php
│ │ ├── integer.php
│ │ ├── linebreak.php
│ │ ├── link.php
│ │ ├── palette.php
│ │ ├── radio.php
│ │ ├── richtext.php
│ │ ├── select.php
│ │ ├── string.php
│ │ ├── tab.php
│ │ ├── text.php
│ │ └── timestamp.php
│ ├── TcaFields.php
│ └── Templates
│ │ ├── Uc_first.html
│ │ ├── UpperExists.html
│ │ └── under_scored.html
│ ├── Helper
│ └── InlineHelperTest.php
│ ├── Loader
│ ├── JsonLoaderTest.php
│ └── JsonSplitLoaderTest.php
│ ├── Migrations
│ ├── ConfigCleanerMigrationTest.php
│ ├── DefaultTcaMigrationTest.php
│ ├── DescriptionsByElementMigrationTest.php
│ ├── OrphanTableMigrationTest.php
│ └── RteMigrationTest.php
│ ├── PackageManagerTrait.php
│ ├── StorageRepositoryCreatorTrait.php
│ └── Utility
│ ├── AffixUtilityTest.php
│ ├── DateUtilityTest.php
│ ├── OverrideFieldsUtilityTest.php
│ ├── TcaConverterTest.php
│ └── TemplatePathUtilityTest.php
├── composer.json
├── ext_conf_template.txt
├── ext_emconf.php
├── ext_localconf.php
└── ext_tables.sql
/.crowdin.yml:
--------------------------------------------------------------------------------
1 | files:
2 | - source: /Resources/Private/Language/
3 | translation: /%original_path%/%two_letters_code%.%original_file_name%
4 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: http://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | # Unix-style newlines with a newline ending every file
7 | [*]
8 | charset = utf-8
9 | end_of_line = lf
10 | indent_style = space
11 | indent_size = 4
12 | insert_final_newline = true
13 | trim_trailing_whitespace = true
14 |
15 | # TS/JS-Files
16 | [*.{ts,js}]
17 | indent_size = 2
18 |
19 | [*.neon]
20 | indent_size = 2
21 |
22 | # JSON-Files
23 | [*.json]
24 | indent_style = tab
25 |
26 | # ReST-Files
27 | [*.rst]
28 | indent_size = 3
29 | max_line_length = 80
30 |
31 | # YAML-Files
32 | [*.{yaml,yml}]
33 | indent_size = 2
34 |
35 | # package.json
36 | # .travis.yml
37 | [{package.json,.travis.yml}]
38 | indent_size = 2
39 |
40 | # XLF-Files
41 | [*.xlf]
42 | indent_style = tab
43 |
44 | # SQL-Files
45 | [*.sql]
46 | indent_style = tab
47 | indent_size = 2
48 |
49 | # .htaccess
50 | [{_.htaccess,.htaccess}]
51 | indent_style = tab
52 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [nhovratov, gernott]
2 |
--------------------------------------------------------------------------------
/.github/workflows/documentation.yml:
--------------------------------------------------------------------------------
1 | name: test documentation
2 |
3 | on: [ push, pull_request ]
4 |
5 | jobs:
6 | tests:
7 | name: documentation
8 | runs-on: ubuntu-latest
9 | steps:
10 | - name: Checkout
11 | uses: actions/checkout@v4
12 |
13 | - name: Test if the documentation will render without warnings
14 | run: |
15 | mkdir -p Documentation-GENERATED-temp \
16 | && docker run --rm --pull always -v $(pwd):/project \
17 | ghcr.io/typo3-documentation/render-guides:latest --config=Documentation --no-progress --fail-on-log
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | *.iml
3 | .Build/
4 | Build/node_modules/
5 | composer.lock
6 | var/
7 | Build/testing-docker/.env
8 | Build/phpunit/.phpunit.result.cache
9 | .phpunit.result.cache
10 | .php_cs.cache
11 | .php-cs-fixer.cache
12 | Documentation-GENERATED-temp/
13 | .env
14 | .vscode
15 | .cache/
16 | .DS_Store
17 |
--------------------------------------------------------------------------------
/Build/Sources/js/components/colorpicker.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import ColorPicker from '@typo3/backend/color-picker.js';
3 | import $ from 'jquery';
4 |
5 | export default Vue.component(
6 | 'colorpicker',
7 | {
8 | props: {
9 | global: Object,
10 | tcaKey: String,
11 | },
12 | mounted: function () {
13 | ColorPicker.initialize();
14 | $(this.$refs['colorpicker']).minicolors('settings', {
15 | changeDelay: 200,
16 | change: function () {
17 | this.global.activeField.tca[this.tcaKey] = $(this.$refs['colorpicker']).data('minicolorsLastChange')['value'];
18 | }.bind(this)
19 | });
20 | },
21 | methods: {
22 | value: function () { return this.global.activeField.tca[this.tcaKey]; },
23 | },
24 | template: `
25 |
26 |
31 |
32 |
33 | `
34 | }
35 | );
36 |
--------------------------------------------------------------------------------
/Build/Sources/js/components/element-key.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 |
3 | export default Vue.component(
4 | 'element-key',
5 | {
6 | props: {
7 | element: Object,
8 | mode: String,
9 | },
10 | mounted: function () {
11 | if (this.element.key === '') {
12 | this.$refs.elementKey.focus();
13 | }
14 | },
15 | template: `
16 |
24 | `
25 | }
26 | );
27 |
--------------------------------------------------------------------------------
/Build/Sources/js/components/field-key.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 |
3 | export default Vue.component(
4 | 'field-key',
5 | {
6 | props: {
7 | global: Object,
8 | validateKey: Function,
9 | loadField: Function,
10 | },
11 | updated: function () {
12 | if (this.global.activeField.key === this.global.maskPrefix) {
13 | this.$refs.fieldKey.focus();
14 | }
15 | },
16 | methods: {
17 | onInput: function () {
18 | if (this.validateKey(this.global.activeField)) {
19 | this.loadField();
20 | }
21 | }
22 | },
23 | template: `
24 |
33 | `
34 | }
35 | );
36 |
--------------------------------------------------------------------------------
/Build/Sources/js/components/field.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 |
3 | export default Vue.component(
4 | 'field',
5 | {
6 | props: {
7 | type: Object,
8 | addField: Function,
9 | typo3Version: Number,
10 | optionalExtensionStatus: Object,
11 | },
12 | template: `
13 |
14 |
17 |
18 | `
19 | }
20 | );
21 |
--------------------------------------------------------------------------------
/Build/Sources/js/components/splash-screen.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 |
3 | export default Vue.component(
4 | 'splashscreen',
5 | {
6 | props: {
7 | loaded: Boolean,
8 | logoPath: String,
9 | },
10 | template: `
11 |
12 |
13 |
17 |
![]()
18 |
#StandWithUkraine
19 |
20 |
21 | `
22 | }
23 | );
24 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_button.scss:
--------------------------------------------------------------------------------
1 | .btn-mask {
2 | background-color: var(--mask-webprofil);
3 | border-color: var(--mask-webprofil-10);
4 | color: #fff;
5 |
6 | &:hover {
7 | color: #fff;
8 | background-color: var(--mask-webprofil-5);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_callout.scss:
--------------------------------------------------------------------------------
1 | .mask-field-form .callout {
2 | margin-top: 0;
3 | margin-bottom: 10px;
4 | }
5 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_checkbox.scss:
--------------------------------------------------------------------------------
1 | .form-switch.checkbox-invert .form-check-input {
2 | --typo3-form-check-mask-position: right center;
3 | --typo3-form-check-color: var(--typo3-form-check-checked-color);
4 | --typo3-form-check-bg: var(--typo3-form-check-checked-bg);
5 | --typo3-form-check-border-color: var(--typo3-form-check-checked-border-color);
6 | }
7 |
8 | .form-switch.checkbox-invert .form-check-input:checked {
9 | --typo3-form-check-mask-position: left center;
10 | --typo3-form-check-color: var(--typo3-input-color);
11 | --typo3-form-check-bg: var(--typo3-input-bg);
12 | --typo3-form-check-border-color: var(--typo3-input-border-color);
13 | }
14 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_edit.scss:
--------------------------------------------------------------------------------
1 | @use "sass:math";
2 |
3 | .mask-edit {
4 | padding: 10px;
5 |
6 | @media screen and (min-width: $bp-edit-flex) {
7 | display: flex;
8 | flex-wrap: wrap;
9 | }
10 |
11 | @media screen and (min-width: $bp-laptop) {
12 | flex-wrap: nowrap;
13 | }
14 | }
15 |
16 | .col-xl-6 {
17 | @media screen and (min-width: $bp-desktop) {
18 | width: 50%;
19 | }
20 | }
21 |
22 | .col-xl-4 {
23 | @media screen and (min-width: $bp-desktop) {
24 | width: percentage(math.div(1, 3));
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_field-form.scss:
--------------------------------------------------------------------------------
1 | .mask-field-form {
2 | background: var(--mask-default-bg);
3 | margin-bottom: 0;
4 | width: 969px;
5 | max-width: 100%;
6 |
7 | &__inner {
8 | position: sticky;
9 | top: 10px;
10 | }
11 |
12 | .mask-shared-info {
13 | font-weight: bold;
14 | border-left: 3px solid #6daae0;
15 | background: #ebf3fb;
16 | padding: 4px 10px;
17 |
18 | &:before {
19 | font-family: FontAwesome;
20 | font-size: 12.5px;
21 | text-align: center;
22 | content: "\f06a";
23 | color: #6daae0;
24 | display: inline-block;
25 | margin-right: 5px;
26 | }
27 |
28 | small {
29 | display: block;
30 | font-weight: initial;
31 | margin-left: 20px;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_field-group.scss:
--------------------------------------------------------------------------------
1 | .mask-field-group {
2 | position: relative;
3 | margin-bottom: 10px;
4 |
5 | &:hover {
6 | .mask-field-group {
7 | &__label {
8 | color: var(--mask-default-color);
9 | }
10 | }
11 | }
12 |
13 | &__label {
14 | font-size: 10px;
15 | position: absolute;
16 | right: 10px;
17 | bottom: 5px;
18 | color: var(--mask-field-group-color);
19 | pointer-events: none;
20 | }
21 |
22 | &__list {
23 | background-color: var(--mask-default-bg);
24 | padding: 10px;
25 | border: 1px solid var(--mask-border-color);
26 | list-style: none;
27 | margin: 0;
28 |
29 | > div {
30 | display: flex;
31 | flex-wrap: wrap;
32 | }
33 |
34 | li {
35 | background: var(--mask-default-bg);
36 | color: var(--mask-field-group-item-color);
37 | font-family: 'Source Sans Pro', sans-serif;
38 | font-size: 1.2em;
39 | font-weight: 700;
40 | margin: 2px 3px;
41 |
42 | img {
43 | box-shadow: 1px 1px 1px 1px rgba(#000, 0.3);
44 | }
45 |
46 | &:hover {
47 | img {
48 | filter: brightness(0.85);
49 | }
50 | }
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_field-list.scss:
--------------------------------------------------------------------------------
1 | .mask-field-list {
2 | background: none;
3 | height: auto;
4 | margin: 0;
5 | border: 1px dashed var(--mask-field-list-border);
6 | padding: 10px;
7 | background-color: var(--mask-default-bg);
8 |
9 | &--empty {
10 | background: url('../Images/empty.svg') no-repeat;
11 | background-position: center 35%;
12 | background-size: 300px;
13 | background-color: var(--mask-default-bg);
14 | }
15 |
16 | > .dragtarget {
17 | display: block;
18 | min-height: 438px;
19 | padding: 0 0 40px;
20 | margin: 0;
21 | list-style: none;
22 | }
23 |
24 | .mask-field--selectable {
25 | width: 100%;
26 | border: 1px dashed var(--mask-border-color);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_fields.scss:
--------------------------------------------------------------------------------
1 | .mask-fields {
2 | background-color: var(--mask-bg-light);
3 | border: 1px solid var(--mask-border-color);
4 | padding: 8px 15px 20px;
5 | margin-bottom: 20px;
6 | width: 480px;
7 | max-width: 100%;
8 |
9 | @media screen and (min-width: $bp-edit-flex) {
10 | flex-shrink: 0;
11 | margin-right: 10px;
12 | }
13 |
14 | @media screen and (min-width: $bp-laptop) {
15 | width: 380px;
16 | }
17 |
18 | @media screen and (min-width: $bp-desktop) {
19 | width: 465px;
20 | margin-bottom: 0;
21 | }
22 |
23 | &__label {
24 | margin-bottom: 5px;
25 | font-size: 16px;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_form-control-icon.scss:
--------------------------------------------------------------------------------
1 | .form-control-icon {
2 | position: absolute;
3 | top: 50%;
4 | left: 15px;
5 | transform: translate(0, -50%);
6 | z-index: 1;
7 | pointer-events: none;
8 |
9 | + .form-control,
10 | + .form-control-clearable .form-control {
11 | padding-left: 3.25em;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_item-table.scss:
--------------------------------------------------------------------------------
1 | .item-table {
2 | th:first-child,
3 | th:last-child {
4 | width: 50px;
5 | }
6 |
7 | .js-draggable {
8 | cursor: pointer;
9 | }
10 |
11 | .sortable-chosen {
12 | td {
13 | background-color: rgba(#000, 0.1);
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_multiple-side-by-side.scss:
--------------------------------------------------------------------------------
1 | .mask-multiple-side-by-side-list {
2 | max-height: 450px;
3 | overflow-y: scroll;
4 |
5 | .list-group-item {
6 | cursor: pointer;
7 | user-select: none;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_overrides.scss:
--------------------------------------------------------------------------------
1 | .module-body {
2 | padding: 0;
3 | }
4 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_reset-button.scss:
--------------------------------------------------------------------------------
1 | .reset-button {
2 | margin: 10px 0;
3 | }
4 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_root.scss:
--------------------------------------------------------------------------------
1 | :root {
2 | color-scheme: light dark;
3 |
4 | // basic colors (previously scss variables)
5 | --mask-bg-light: light-dark(#fafafa, #050505);
6 | --mask-bg-medium: light-dark(#efefef, #101010);
7 | --mask-bg-dark: light-dark(#dedede, #212121);
8 | --mask-color: #D4372F;
9 | --mask-webprofil: #cb002d;
10 | --mask-webprofil-5: #{darken(#cb002d, 5)};
11 | --mask-webprofil-10: #{darken(#cb002d, 10)};
12 | --mask-highlight-color: light-dark(#eaf4fd, #07070a);
13 | --mask-color-inline-border: #9e97d1;
14 | --mask-color-palette-border: #4e4e4e;
15 | --mask-border-color: light-dark(#ccc, #333);
16 | --mask-default-bg: light-dark(#fff, #000);
17 | --mask-default-color: light-dark(#000, #fff);
18 |
19 | // some colors for specific elements/areas
20 | --mask-error-bg: #c83c3c;
21 | --mask-field-list-border: light-dark(#bbb, #444);
22 | --mask-sidebar-toggle-bg: light-dark(#ededed, #121212);
23 | --mask-sidebar-toggle-bg-hover: light-dark(#e1e0e0, #1e1f1f);
24 | --mask-field-group-color: light-dark(#555, #aaa);
25 | --mask-field-group-item-color: light-dark(#4c4c4c, #b3b3b3);
26 | }
27 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_setup-incomplete.scss:
--------------------------------------------------------------------------------
1 | .mask-setup-incomplete {
2 | display: flex;
3 | flex-direction: column;
4 | justify-content: center;
5 | align-items: center;
6 | height: 100%;
7 |
8 | &__content {
9 | max-width: 750px;
10 | margin: 0 auto 20px;
11 | }
12 |
13 | &__text {
14 | text-align: center;
15 | font-size: 22px;
16 | }
17 |
18 | h1 {
19 | font-size: 50px;
20 | line-height: 50px;
21 | }
22 |
23 | &__form {
24 | width: 850px;
25 | max-width: 100%;
26 | border: 1px solid var(--mask-border-color);
27 | padding: 20px;
28 |
29 | .control-label {
30 | padding-top: 7px;
31 | margin-bottom: 0;
32 | text-align: right;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_spinner.scss:
--------------------------------------------------------------------------------
1 | .half-circle-spinner, .half-circle-spinner * {
2 | box-sizing: border-box;
3 | }
4 |
5 | .half-circle-spinner {
6 | width: 60px;
7 | height: 60px;
8 | border-radius: 100%;
9 | position: relative;
10 | margin-bottom: 20px;
11 | }
12 |
13 | .half-circle-spinner .circle {
14 | content: "";
15 | position: absolute;
16 | width: 100%;
17 | height: 100%;
18 | border-radius: 100%;
19 | border: calc(60px / 10) solid transparent;
20 | }
21 |
22 | .half-circle-spinner .circle.circle-1 {
23 | border-top-color: var(--mask-color);
24 | animation: half-circle-spinner-animation 1s infinite;
25 | }
26 |
27 | .half-circle-spinner .circle.circle-2 {
28 | border-bottom-color: var(--mask-color);
29 | animation: half-circle-spinner-animation 1s infinite alternate;
30 | }
31 |
32 | @keyframes half-circle-spinner-animation {
33 | 0% {
34 | transform: rotate(0deg);
35 |
36 | }
37 | 100% {
38 | transform: rotate(360deg);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_splashscreen.scss:
--------------------------------------------------------------------------------
1 | .mask-splashscreen {
2 | position: absolute;
3 | top: 0;
4 | right: 0;
5 | bottom: 0;
6 | left: 0;
7 | z-index: 100;
8 | background-color: var(--mask-default-bg);
9 | display: flex;
10 | justify-content: center;
11 | align-items: center;
12 | flex-direction: column;
13 |
14 | &__logo {
15 | margin-bottom: 5px;
16 | }
17 |
18 | &__label {
19 | font-size: 65px;
20 | font-weight: 600;
21 | }
22 | }
23 |
24 | .fade-leave-active {
25 | transition: opacity 0.5s;
26 | }
27 |
28 | .fade-leave-to {
29 | opacity: 0;
30 | }
31 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_templa.scss:
--------------------------------------------------------------------------------
1 | .templa {
2 | text-align: left;
3 |
4 | &__wrap {
5 | display: flex;
6 | align-items: center;
7 | justify-content: center;
8 |
9 | @media screen and (min-width: $bp-desktop) {
10 | justify-content: flex-start;
11 | }
12 | }
13 |
14 | &__image {
15 | margin-right: 10px;
16 | height: auto;
17 |
18 | @media screen and (min-width: $bp-desktop) {
19 | width: 85px;
20 | }
21 | }
22 |
23 | &__text {
24 | font-size: 11px;
25 | line-height: 1.2;
26 | margin-bottom: 0;
27 |
28 | @media screen and (min-width: $bp-edit-flex) {
29 | font-size: 12px;
30 | }
31 |
32 | @media screen and (min-width: $bp-desktop) {
33 | font-size: 11px;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_utility.scss:
--------------------------------------------------------------------------------
1 | %error {
2 | content: "";
3 | vertical-align: middle;
4 | mask: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");
5 | background-color: var(--mask-error-bg);
6 | background-size: contain;
7 | display: inline-block;
8 | border-radius: 50%;
9 | width: 14px;
10 | height: 14px;
11 | position: absolute;
12 | top: -2px;
13 | left: -3px;
14 | }
15 |
16 | .disable-pointer {
17 | pointer-events: none;
18 | }
19 |
20 | .mb-0 {
21 | margin-bottom: 0;
22 | }
23 |
--------------------------------------------------------------------------------
/Build/Sources/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $bp-edit-flex: 860px;
2 | $bp-laptop: 1100px;
3 | $bp-desktop: 1650px;
4 |
--------------------------------------------------------------------------------
/Build/Sources/scss/mask.scss:
--------------------------------------------------------------------------------
1 | @import 'variables';
2 | @import 'root';
3 | @import "utility";
4 |
5 | @import "sidebar";
6 | @import "field-list";
7 | @import "field-form";
8 | @import "fields";
9 | @import "field-group";
10 | @import "footer";
11 | @import "splashscreen";
12 | @import "list";
13 | @import "edit";
14 | @import "elements";
15 | @import "templa";
16 | @import "spinner";
17 | @import "field";
18 | @import "button";
19 | @import "callout";
20 | @import "checkbox";
21 | @import "reset-button";
22 | @import "overrides";
23 | @import "setup-incomplete";
24 | @import "item-table";
25 | @import "multiple-side-by-side";
26 | @import "form-control-icon";
27 |
--------------------------------------------------------------------------------
/Build/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@mask/mask",
3 | "type": "module",
4 | "version": "1.0.0",
5 | "description": "",
6 | "main": "index.js",
7 | "exports": {
8 | "./": "./Sources/js/"
9 | },
10 | "scripts": {
11 | "test": "echo \"Error: no test specified\" && exit 1",
12 | "js": "rollup -c",
13 | "watchjs": "rollup -c -w",
14 | "sass": "sass Sources/scss/mask.scss ../Resources/Public/Styles/mask.css -w"
15 | },
16 | "author": "",
17 | "license": "ISC",
18 | "dependencies": {
19 | "sass": "^1.43.5",
20 | "vue": "^2.7.14",
21 | "vuedraggable": "^2.24.3"
22 | },
23 | "devDependencies": {
24 | "@rollup/plugin-commonjs": "^23.0.3",
25 | "@rollup/plugin-node-resolve": "^15.0.1",
26 | "@rollup/plugin-replace": "^5.0.1",
27 | "rollup": "^3.6.0",
28 | "rollup-plugin-minification": "^0.2.0"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Build/php-cs-fixer.php:
--------------------------------------------------------------------------------
1 | getFinder()->exclude(['var'])->in(__DIR__ . '/..');
5 | return $config;
6 |
--------------------------------------------------------------------------------
/Build/phpstan/phpstan-constants.php:
--------------------------------------------------------------------------------
1 |
2 |
14 |
31 |
32 |
33 | ../../Tests/Unit/
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Classes/ConfigurationLoader/ConfigurationLoaderInterface.php:
--------------------------------------------------------------------------------
1 | excludedKeys = $keys;
36 | }
37 |
38 | /**
39 | * Sort the given array by keys recursively while taking care of exceptions.
40 | *
41 | * @param array $array
42 | * @return array
43 | */
44 | public function sort(array $array): array
45 | {
46 | ksort($array);
47 | foreach ($array as $key => $item) {
48 | if (in_array($key, $this->excludedKeys, true)) {
49 | continue;
50 | }
51 | if (is_array($item)) {
52 | $array[$key] = $this->sort($item);
53 | }
54 | }
55 |
56 | return $array;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Classes/Definition/PaletteDefinition.php:
--------------------------------------------------------------------------------
1 | key = $key;
37 | $this->label = $label;
38 | $this->description = $description;
39 | $this->showitem = $showitem;
40 | }
41 |
42 | public function toArray(): array
43 | {
44 | return [
45 | 'label' => $this->label,
46 | 'description' => $this->description,
47 | 'showitem' => $this->showitem,
48 | ];
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Classes/Definition/SqlColumnDefinition.php:
--------------------------------------------------------------------------------
1 | column = $column;
36 | $this->sqlDefinition = $sqlDefinition;
37 | }
38 |
39 | public function toArray(): array
40 | {
41 | return [
42 | $this->column => $this->sqlDefinition,
43 | ];
44 | }
45 |
46 | public function setNull(): void
47 | {
48 | $this->sqlDefinition = trim(str_replace('NOT NULL', '', $this->sqlDefinition));
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Classes/Enumeration/Tab.php:
--------------------------------------------------------------------------------
1 | tableDefinitionCollection = $tableDefinitionCollection;
30 | $this->elementKey = $elementKey;
31 | }
32 |
33 | public function getTableDefinitionCollection(): TableDefinitionCollection
34 | {
35 | return $this->tableDefinitionCollection;
36 | }
37 |
38 | public function getElementKey(): string
39 | {
40 | return $this->elementKey;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Classes/Event/MaskAfterElementSavedEvent.php:
--------------------------------------------------------------------------------
1 | tableDefinitionCollection = $tableDefinitionCollection;
31 | $this->elementKey = $elementKey;
32 | $this->isNewElement = $isNewElement;
33 | }
34 |
35 | public function getTableDefinitionCollection(): TableDefinitionCollection
36 | {
37 | return $this->tableDefinitionCollection;
38 | }
39 |
40 | public function getElementKey(): string
41 | {
42 | return $this->elementKey;
43 | }
44 |
45 | public function isNewElement(): bool
46 | {
47 | return $this->isNewElement;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Classes/EventListeners/NestedContentElementsUsedEventListener.php:
--------------------------------------------------------------------------------
1 | getRecord()['colPos'] === 999) {
30 | $event->setUsed(true);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Classes/EventListeners/RegisterIcons.php:
--------------------------------------------------------------------------------
1 | iconRegistry->registerIcon(
37 | 'mask-fieldtype-' . $maskIcon->value,
38 | SvgIconProvider::class,
39 | ['source' => 'EXT:mask/Resources/Public/Icons/Fieldtypes/' . GeneralUtility::underscoredToUpperCamelCase($maskIcon->value) . '.svg']
40 | );
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Classes/Fluid/FluidTemplateContentObject.php:
--------------------------------------------------------------------------------
1 | cObj->getCurrentTable() === 'pages') {
35 | $data = $variables['data'];
36 | $inlineHelper = GeneralUtility::makeInstance(InlineHelper::class);
37 | $inlineHelper->addFilesToData($data, 'pages');
38 | $inlineHelper->addIrreToData($data, 'pages', '', 'pages');
39 | $variables['data'] = $data;
40 | } elseif (!array_key_exists('parentRecord', $variables)) {
41 | $variables['parentRecord'] = $this->cObj->parentRecord['data'] ?? [];
42 | }
43 |
44 | return $variables;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Classes/Loader/LoaderInterface.php:
--------------------------------------------------------------------------------
1 | [
5 | 'parent' => 'tools',
6 | 'position' => ['after' => 'extensionmanager'],
7 | 'access' => 'user',
8 | 'workspaces' => 'online',
9 | 'path' => '/module/mask',
10 | 'icon' => 'EXT:mask/Resources/Public/Icons/module-mask_wizard.svg', // @todo iconIdentifier
11 | 'labels' => 'LLL:EXT:mask/Resources/Private/Language/locallang_mask.xlf',
12 | 'routes' => [
13 | '_default' => [
14 | 'target' => \MASK\Mask\Controller\MaskController::class . '::mainAction',
15 | ],
16 | ],
17 | ],
18 | ];
19 |
--------------------------------------------------------------------------------
/Configuration/ContentSecurityPolicies.php:
--------------------------------------------------------------------------------
1 | [
5 | 'core',
6 | 'backend',
7 | ],
8 | 'tags' => [
9 | 'backend.module',
10 | ],
11 | 'imports' => [
12 | '@mask/mask' => 'EXT:mask/Resources/Public/JavaScript/mask.js',
13 | ],
14 | ];
15 |
--------------------------------------------------------------------------------
/Configuration/Mask/FieldGroups.php:
--------------------------------------------------------------------------------
1 | value => 'input',
10 | FieldType::INTEGER->value => 'input',
11 | FieldType::FLOAT->value => 'input',
12 | FieldType::LINK->value => 'input',
13 | FieldType::EMAIL->value => 'input',
14 |
15 | FieldType::TEXT->value => 'text',
16 | FieldType::RICHTEXT->value => 'text',
17 |
18 | FieldType::DATE->value => 'date',
19 | FieldType::DATETIME->value => 'date',
20 | FieldType::TIMESTAMP->value => 'date',
21 |
22 | FieldType::CHECK->value => 'choice',
23 | FieldType::RADIO->value => 'choice',
24 | FieldType::SELECT->value => 'choice',
25 | FieldType::CATEGORY->value => 'choice',
26 | FieldType::GROUP->value => 'choice',
27 |
28 | FieldType::COLORPICKER->value => 'special',
29 | FieldType::SLUG->value => 'special',
30 | FieldType::FOLDER->value => 'special',
31 |
32 | FieldType::FILE->value => 'repeating',
33 | FieldType::MEDIA->value => 'repeating',
34 | FieldType::INLINE->value => 'repeating',
35 | FieldType::CONTENT->value => 'repeating',
36 |
37 | FieldType::TAB->value => 'structure',
38 | FieldType::PALETTE->value => 'structure',
39 | FieldType::LINEBREAK->value => 'structure',
40 | ];
41 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/category.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | ],
10 | [
11 | 'config.relationship' => 12,
12 | ],
13 | [
14 | 'config.treeConfig.startingPoints' => 12,
15 | ],
16 | ],
17 | Tab::VALIDATION->value => [
18 | [
19 | 'config.minitems' => 6,
20 | 'config.maxitems' => 6,
21 | 'config.exclusiveKeys' => 6,
22 | ],
23 | ],
24 | Tab::APPEARANCE->value => [
25 | [
26 | 'config.treeConfig.appearance.showHeader' => 6,
27 | 'config.treeConfig.appearance.expandAll' => 6,
28 | ],
29 | [
30 | 'config.treeConfig.appearance.nonSelectableLevels' => 6,
31 | ],
32 | ],
33 | Tab::LOCALIZATION->value => [
34 | [
35 | 'config.behaviour.allowLanguageSynchronization' => 6,
36 | ],
37 | ],
38 | Tab::EXTENDED->value => [
39 | [
40 | 'config.size' => 6,
41 | ],
42 | ],
43 | ];
44 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/check.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.renderType' => 6,
9 | 'config.default' => 6,
10 | ],
11 | [
12 | 'config.items' => 12,
13 | ],
14 | ],
15 | Tab::LOCALIZATION->value => [
16 | [
17 | 'l10n_mode' => 12,
18 | ],
19 | [
20 | 'config.behaviour.allowLanguageSynchronization' => 6,
21 | ],
22 | ],
23 | Tab::EXTENDED->value => [
24 | [
25 | 'config.cols' => 6,
26 | ],
27 | ],
28 | ];
29 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/colorpicker.php:
--------------------------------------------------------------------------------
1 | value => [
8 | [
9 | 'config.default' => 6,
10 | 'config.placeholder' => 6,
11 | ],
12 | [
13 | 'config.size' => 6,
14 | ],
15 | ],
16 | Tab::VALUE_PICKER->value => [
17 | [
18 | 'config.valuePicker.mode' => 6,
19 | 'config.valuePicker.items' => 12,
20 | ],
21 | ],
22 | Tab::LOCALIZATION->value => [
23 | [
24 | 'l10n_mode' => 12,
25 | ],
26 | [
27 | 'config.behaviour.allowLanguageSynchronization' => 6,
28 | ],
29 | ],
30 | Tab::EXTENDED->value => [
31 | [
32 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
33 | 'config.mode' => 6,
34 | ],
35 | ],
36 | ];
37 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/date.php:
--------------------------------------------------------------------------------
1 | value => [
8 | [
9 | 'config.default' => 6,
10 | 'config.placeholder' => 6,
11 | ],
12 | ],
13 | Tab::VALIDATION->value => [
14 | [
15 | 'config.range.lower' => 6,
16 | 'config.range.upper' => 6,
17 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.required' : 'config.eval.required' => 6,
18 | ],
19 | ],
20 | Tab::LOCALIZATION->value => [
21 | [
22 | 'l10n_mode' => 12,
23 | ],
24 | [
25 | 'config.behaviour.allowLanguageSynchronization' => 6,
26 | ],
27 | ],
28 | Tab::EXTENDED->value => [
29 | [
30 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
31 | 'config.mode' => 6,
32 | ],
33 | ],
34 | ];
35 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/datetime.php:
--------------------------------------------------------------------------------
1 | value => [
8 | [
9 | 'config.default' => 6,
10 | 'config.placeholder' => 6,
11 | ],
12 | ],
13 | Tab::VALIDATION->value => [
14 | [
15 | 'config.range.lower' => 6,
16 | 'config.range.upper' => 6,
17 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.required' : 'config.eval.required' => 6,
18 | ],
19 | ],
20 | Tab::LOCALIZATION->value => [
21 | [
22 | 'l10n_mode' => 12,
23 | ],
24 | [
25 | 'config.behaviour.allowLanguageSynchronization' => 6,
26 | ],
27 | ],
28 | Tab::EXTENDED->value => [
29 | [
30 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
31 | 'config.mode' => 6,
32 | ],
33 | ],
34 | ];
35 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/email.php:
--------------------------------------------------------------------------------
1 | value => [
8 | [
9 | 'config.default' => 6,
10 | 'config.placeholder' => 6,
11 | ],
12 | [
13 | 'config.size' => 6,
14 | ],
15 | ],
16 | Tab::VALIDATION->value => [
17 | [
18 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.required' : 'config.eval.required' => 6,
19 | 'config.eval.unique' => 6,
20 | 'config.eval.uniqueInPid' => 6,
21 | ],
22 | ],
23 | Tab::LOCALIZATION->value => [
24 | [
25 | 'l10n_mode' => 12,
26 | ],
27 | [
28 | 'config.behaviour.allowLanguageSynchronization' => 6,
29 | ],
30 | ],
31 | Tab::EXTENDED->value => [
32 | [
33 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
34 | 'config.mode' => 6,
35 | 'config.autocomplete' => 6,
36 | ],
37 | ],
38 | ];
39 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/float.php:
--------------------------------------------------------------------------------
1 | getMajorVersion() > 11 ? 'config.required' : 'config.eval.required' => 6,
8 | ];
9 |
10 | if ((new Typo3Version())->getMajorVersion() === 11) {
11 | $validation['config.max'] = 6;
12 | }
13 |
14 | return [
15 | Tab::GENERAL->value => [
16 | [
17 | 'config.default' => 6,
18 | 'config.placeholder' => 6,
19 | ],
20 | [
21 | 'config.size' => 6,
22 | ],
23 | ],
24 | Tab::VALIDATION->value => [
25 | $validation,
26 | [
27 | 'config.range.lower' => 6,
28 | 'config.range.upper' => 6,
29 | ],
30 | ],
31 | Tab::FIELD_CONTROL->value => [
32 | [
33 | 'config.slider.step' => 6,
34 | 'config.slider.width' => 6,
35 | ],
36 | ],
37 | Tab::VALUE_PICKER->value => [
38 | [
39 | 'config.valuePicker.mode' => 6,
40 | 'config.valuePicker.items' => 12,
41 | ],
42 | ],
43 | Tab::LOCALIZATION->value => [
44 | [
45 | 'l10n_mode' => 12,
46 | ],
47 | [
48 | 'config.behaviour.allowLanguageSynchronization' => 6,
49 | ],
50 | ],
51 | Tab::EXTENDED->value => [
52 | [
53 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
54 | 'config.mode' => 6,
55 | 'config.autocomplete' => 6,
56 | ],
57 | ],
58 | ];
59 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/folder.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.elementBrowserEntryPoints._default' => 6,
9 | ],
10 | ],
11 | Tab::VALIDATION->value => [
12 | [
13 | 'config.minitems' => 6,
14 | 'config.maxitems' => 6,
15 | ],
16 | ],
17 | Tab::LOCALIZATION->value => [
18 | [
19 | 'l10n_mode' => 12,
20 | ],
21 | [
22 | 'config.behaviour.allowLanguageSynchronization' => 6,
23 | ],
24 | ],
25 | Tab::EXTENDED->value => [
26 | [
27 | 'config.size' => 6,
28 | 'config.autoSizeMax' => 6,
29 | ],
30 | [
31 | 'config.multiple' => 6,
32 | ],
33 | ],
34 | ];
35 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/group.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.allowed' => 6,
9 | 'config.elementBrowserEntryPoints._default' => 6,
10 | ],
11 | ],
12 | Tab::VALIDATION->value => [
13 | [
14 | 'config.minitems' => 6,
15 | 'config.maxitems' => 6,
16 | ],
17 | ],
18 | Tab::FIELD_CONTROL->value => [
19 | [
20 | 'config.fieldControl' => 12,
21 | 'config.fieldControl.editPopup.disabled' => 4,
22 | 'config.fieldControl.addRecord.disabled' => 4,
23 | 'config.fieldControl.listModule.disabled' => 4,
24 | 'config.fieldControl.elementBrowser.disabled' => 4,
25 | 'config.fieldControl.insertClipboard.disabled' => 4,
26 | ],
27 | [
28 | 'config.fieldWizard' => 12,
29 | 'config.fieldWizard.recordsOverview.disabled' => 4,
30 | 'config.fieldWizard.tableList.disabled' => 4,
31 | ],
32 | ],
33 | Tab::LOCALIZATION->value => [
34 | [
35 | 'l10n_mode' => 12,
36 | ],
37 | [
38 | 'config.behaviour.allowLanguageSynchronization' => 6,
39 | ],
40 | ],
41 | Tab::EXTENDED->value => [
42 | [
43 | 'config.size' => 6,
44 | 'config.autoSizeMax' => 6,
45 | ],
46 | [
47 | 'config.multiple' => 6,
48 | ],
49 | ],
50 | ];
51 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/integer.php:
--------------------------------------------------------------------------------
1 | getMajorVersion() > 11 ? 'config.required' : 'config.eval.required' => 6,
8 | ];
9 |
10 | if ((new Typo3Version())->getMajorVersion() === 11) {
11 | $validation['config.max'] = 6;
12 | }
13 |
14 | return [
15 | Tab::GENERAL->value => [
16 | [
17 | 'config.default' => 6,
18 | 'config.placeholder' => 6,
19 | ],
20 | [
21 | 'config.size' => 6,
22 | ],
23 | ],
24 | Tab::VALIDATION->value => [
25 | $validation,
26 | [
27 | 'config.range.lower' => 6,
28 | 'config.range.upper' => 6,
29 | ],
30 | ],
31 | Tab::FIELD_CONTROL->value => [
32 | [
33 | 'config.slider.step' => 6,
34 | 'config.slider.width' => 6,
35 | ],
36 | ],
37 | Tab::VALUE_PICKER->value => [
38 | [
39 | 'config.valuePicker.mode' => 6,
40 | 'config.valuePicker.items' => 12,
41 | ],
42 | ],
43 | Tab::LOCALIZATION->value => [
44 | [
45 | 'l10n_mode' => 12,
46 | ],
47 | [
48 | 'config.behaviour.allowLanguageSynchronization' => 6,
49 | ],
50 | ],
51 | Tab::EXTENDED->value => [
52 | [
53 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
54 | 'config.mode' => 6,
55 | 'config.autocomplete' => 6,
56 | ],
57 | ],
58 | ];
59 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/linebreak.php:
--------------------------------------------------------------------------------
1 | getMajorVersion() < 12) {
7 | $linkHandler = [
8 | 'config.fieldControl.linkPopup.options.blindLinkOptions' => 12,
9 | ];
10 | $validation = [
11 | 'config.eval.required' => 6,
12 | 'config.fieldControl.linkPopup.options.allowedExtensions' => 6,
13 | ];
14 | } else {
15 | $linkHandler = [
16 | 'config.allowedTypes' => 12,
17 | ];
18 | $validation = [
19 | 'config.required' => 6,
20 | 'config.appearance.allowedFileExtensions' => 6,
21 | ];
22 | }
23 |
24 | return [
25 | Tab::GENERAL->value => [
26 | [
27 | 'config.placeholder' => 6,
28 | ],
29 | [
30 | 'config.size' => 6,
31 | ],
32 | ],
33 | Tab::VALIDATION->value => [
34 | $validation,
35 | ],
36 | Tab::FIELD_CONTROL->value => [
37 | $linkHandler,
38 | ],
39 | Tab::LOCALIZATION->value => [
40 | [
41 | 'l10n_mode' => 12,
42 | ],
43 | [
44 | 'config.behaviour.allowLanguageSynchronization' => 6,
45 | ],
46 | ],
47 | Tab::EXTENDED->value => [
48 | [
49 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
50 | 'config.mode' => 6,
51 | ],
52 | ],
53 | ];
54 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/palette.php:
--------------------------------------------------------------------------------
1 | value => [
7 |
8 | ],
9 | ];
10 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/radio.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | ],
10 | [
11 | 'config.items' => 12,
12 | ],
13 | ],
14 | Tab::LOCALIZATION->value => [
15 | [
16 | 'l10n_mode' => 12,
17 | ],
18 | [
19 | 'config.behaviour.allowLanguageSynchronization' => 6,
20 | ],
21 | ],
22 | ];
23 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/richtext.php:
--------------------------------------------------------------------------------
1 | getMajorVersion() > 11 ? 'config.required' : 'config.eval.required' => 6,
8 | ];
9 |
10 | return [
11 | Tab::GENERAL->value => [
12 | [
13 | 'config.richtextConfiguration' => 6,
14 | ],
15 | [
16 | 'config.default' => 6,
17 | ],
18 | ],
19 | Tab::VALIDATION->value => [
20 | $validation,
21 | ],
22 | Tab::LOCALIZATION->value => [
23 | [
24 | 'l10n_mode' => 12,
25 | ],
26 | [
27 | 'config.behaviour.allowLanguageSynchronization' => 6,
28 | ],
29 | ],
30 | ];
31 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/slug.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.eval.slug' => 12,
9 | ],
10 | ],
11 | Tab::GENERATOR->value => [
12 | [
13 | 'config.generatorOptions.fields' => 12,
14 | 'config.generatorOptions.replacements' => 12,
15 | ],
16 | [
17 | 'config.generatorOptions.fieldSeparator' => 6,
18 | 'config.fallbackCharacter' => 6,
19 | ],
20 | [
21 | 'config.prependSlash' => 6,
22 | ],
23 | ],
24 | ];
25 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/tab.php:
--------------------------------------------------------------------------------
1 | value => [
7 |
8 | ],
9 | ];
10 |
--------------------------------------------------------------------------------
/Configuration/Mask/Tabs/timestamp.php:
--------------------------------------------------------------------------------
1 | value => [
8 | [
9 | (new Typo3Version())->getMajorVersion() === 11 ? 'config.eval' : 'config.format' => 6,
10 | ],
11 | [
12 | 'config.default' => 6,
13 | 'config.placeholder' => 6,
14 | ],
15 | ],
16 | Tab::VALIDATION->value => [
17 | [
18 | 'config.range.lower' => 6,
19 | 'config.range.upper' => 6,
20 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.required' : 'config.eval.required' => 6,
21 | ],
22 | ],
23 | Tab::LOCALIZATION->value => [
24 | [
25 | 'l10n_mode' => 12,
26 | ],
27 | [
28 | 'config.behaviour.allowLanguageSynchronization' => 6,
29 | ],
30 | ],
31 | Tab::EXTENDED->value => [
32 | [
33 | (new Typo3Version())->getMajorVersion() > 11 ? 'config.nullable' : 'config.eval.null' => 6,
34 | 'config.mode' => 6,
35 | ],
36 | ],
37 | ];
38 |
--------------------------------------------------------------------------------
/Configuration/Services.php:
--------------------------------------------------------------------------------
1 | addCompilerPass(new LoaderPass('mask.loader'));
14 | $containerBuilder->registerForAutoconfiguration(MigrationInterface::class)->addTag('mask.migration');
15 | };
16 |
--------------------------------------------------------------------------------
/Configuration/Sets/Mask/config.yaml:
--------------------------------------------------------------------------------
1 | name: mask/mask
2 | label: Mask
3 | dependencies:
4 | - typo3/fluid-styled-content
5 |
--------------------------------------------------------------------------------
/Configuration/Sets/Mask/setup.typoscript:
--------------------------------------------------------------------------------
1 | @import 'EXT:mask/Configuration/TypoScript/setup.typoscript'
2 |
--------------------------------------------------------------------------------
/Configuration/TCA/Overrides/pages.php:
--------------------------------------------------------------------------------
1 | generateFieldsTca('pages');
7 | \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('pages', $pagesColumns);
8 | $GLOBALS['TCA']['pages']['ctrl']['searchFields'] = $tcaCodeGenerator->addSearchFields('pages');
9 |
--------------------------------------------------------------------------------
/Configuration/TCA/Overrides/sys_template.php:
--------------------------------------------------------------------------------
1 | `_
15 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/6.0/NewDefaults.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | ===================================================
4 | Translation options for inline fields on by default
5 | ===================================================
6 |
7 | Some translation options for inline, file and content fields are enabled by
8 | default now as they would be turned on most of the time.
9 |
10 | * `showPossibleLocalizationRecords`
11 | * `showAllLocalizationLink`
12 | * `showRemovedLocalizationRecords`
13 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/6.0/Palettes.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | ==========================
4 | Group fields with palettes
5 | ==========================
6 |
7 | Palettes are a very old concept in TYPO3 which allow you to group fields. These
8 | fields are shown next to each other instead of each in a new line. It is
9 | possible to add a manual break with the linebreak instruction.
10 |
11 | The element builder comes now with the palette and linebreak fields. You can
12 | drag in normal fields into the palette like you would do with inline fields.
13 | The only thing you have to enter into the palette is the key and a label.
14 | Fields in the palette will appear next to each other, when you edit the element.
15 |
16 | .. figure:: ../../Images/Mask6/palette-builder.png
17 | :class: with-border
18 | :alt: Palette in the mask element builder
19 |
20 | Palette in the mask element builder
21 |
22 | .. figure:: ../../Images/Mask6/palette-in-element.png
23 | :class: with-border
24 | :alt: Rendered palette in element
25 |
26 | Rendered palette in element
27 |
28 | Linebreaks
29 | ==========
30 |
31 | Linebreaks can be used to add a manual newline. Use this if you want to keep the
32 | grouping of fields, but there is not enough horizontal space left.
33 |
34 | .. figure:: ../../Images/Mask6/linebreak-builder.png
35 | :class: with-border
36 | :alt: Linebreak in the mask element builder
37 |
38 | Linebreak in the mask element builder
39 |
40 | .. figure:: ../../Images/Mask6/linebreak-in-element.png
41 | :class: with-border
42 | :alt: Rendered linebreak in element
43 |
44 | Rendered linebreak in element
45 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/6.0/RelationsResolved.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | =====================================================
4 | Relations of group and select fields are resolved now
5 | =====================================================
6 |
7 | Previously only a comma list was provided in the data array. Developers had to
8 | write custom DataProcessors or ViewHelpers to get the result they needed. Now an
9 | additional entry with the suffix "_items" in the array is provided with the
10 | resolved database entries.
11 |
12 | .. figure:: ../../Images/Mask6/group-resolving.png
13 | :alt: Debug data
14 |
15 | Debug data
16 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/6.0/SelectIcons.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | ================
4 | Icons for select
5 | ================
6 |
7 | It is now possible to use the third and fourth option of select items to provide
8 | custom icons and descriptions.
9 |
10 | .. figure:: ../../Images/Mask6/select-icons1.png
11 | :class: with-border
12 | :alt: 2 new options for items
13 |
14 | 2 new options for items
15 |
16 | .. figure:: ../../Images/Mask6/select-icons2.png
17 | :class: with-border
18 | :alt: Rendered icons in element
19 |
20 | Rendered icons in element
21 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/6.0/Timestamp.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | =============================
4 | Timestamp field to the rescue
5 | =============================
6 |
7 | Without going in too much detail, the normal date and datetime fields, which
8 | store dates as DATE types in the database, can show wrong dates. This has to do
9 | with a lot of back and forth timezone conversion. For this reason the new field
10 | timestamp has been introduced, which stores dates as unix timestamps. In order
11 | to avoid wrong dates, use timestamp from now on. Old date and datetime fields
12 | are preserved for backwards compatibility.
13 |
14 | For more technical insight read: `Date and DateTime saves wrong date `_
15 |
16 | .. figure:: ../../Images/Mask6/timestamp.png
17 | :class: with-border
18 | :alt: Timestamp element
19 |
20 | Timestamp element
21 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/7.0/IconAndColorPicker.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | =============================
4 | Updated Icon and Color Picker
5 | =============================
6 |
7 | Updated icon picker
8 | ===================
9 |
10 | The jQuery fontIconPicker got an upgrade to `version 3 `__. This
11 | brings a new feature: Filter by category.
12 |
13 | .. figure:: ../../Images/ContentelementsManual/Fontawesome.png
14 | :alt: FontAwesome icon picker
15 | :class: with-border
16 |
17 | The new filter by category drop down
18 |
19 | New color picker
20 | ================
21 |
22 | Mask uses now the color picker of TYPO3: `jQuery Minicolors `__. This
23 | unifies the user experience. Before the native browser color picker was used, which has different features depending
24 | on your browser. You can now copy and paste a HEX value directly into the color picker.
25 |
26 | .. figure:: ../../Images/Mask7/ColorPicker.png
27 | :alt: color picker
28 | :class: with-border
29 |
30 | The new color picker
31 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/7.0/MultiStepWizard.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | ===============================
4 | Wizard for new content elements
5 | ===============================
6 |
7 | By clicking on `Create new content element` a new wizard pops out, which guides you through some mandatory fields. First
8 | you can choose a label for your element. In the next step you can either accept the auto-generated key or edit it. These
9 | steps are completely optional and you can leave them initially blank. At the latest when you want to save your element
10 | these fields have to be set. You can switch to the `Element Meta Data` tab anytime and edit your label and key.
11 |
12 | .. figure:: ../../Images/ContentelementsManual/Wizard.png
13 | :alt: Multi Step Wizard for new element
14 | :class: with-border
15 |
16 | The Multi Step Wizard guides you through mandatory fields
17 |
18 | .. note::
19 | The MultiStepWizard component of TYPO3 is used for this. In TYPO3 v10 it has some weird behaviour, which is fixed in
20 | TYPO3 v11. This is the reason why it's not allowed to go to the previous step.
21 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/7.0/MultiUse.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | ========================
4 | Improved Reusable fields
5 | ========================
6 |
7 | You can see directly, if you are using a shared field in the field list now. It is indicated by a blue info dot.
8 |
9 | .. figure:: ../../Images/Mask7/MultiUse.png
10 | :alt: Blue dot indicating shared field
11 | :class: with-border
12 |
13 | Shared fields are indicated by a blue info dot
14 |
15 | The info message that you are using a shared field appears now at the top of the form instead of the bottom. By clicking
16 | on the `Show content elements` button, a modal appears which lists all of the elements that share this field. This is
17 | especially useful if you have a lot of elements which share the same fields.
18 |
19 | .. figure:: ../../Images/Mask7/MultiUsePopup.png
20 | :alt: Multi Use Popup
21 | :class: with-border
22 |
23 | The multi use modal lists all of the elements that share the current field
24 |
25 | When you select a shared field from the `Choose field` dropdown, all settings are loaded directly into the current
26 | field. This way you can directly inspect the settings of the chosen shared field.
27 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/7.0/Validation.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | ===================
4 | Improved validation
5 | ===================
6 |
7 | The validation in the Mask Builder has improved a lot. You can immediately see, if one of your fields has an error.
8 | Fields are marked with a red dot, which indicates there is something wrong and you should fix it.
9 |
10 | .. figure:: ../../Images/Mask7/Validation.png
11 | :alt: Validation in the Mask Builder
12 | :class: with-border
13 |
14 | The Mask Builder shows you if fields have an error
15 |
16 | If you try to save with errors, an alert pops up and instructs you to fix your errors. After clicking ok, the active
17 | field changes to the first field having an error.
18 |
19 | .. figure:: ../../Images/Mask7/AlertError.png
20 | :alt: Error alert no allowing saving
21 | :class: with-border
22 |
23 | An error alert appears if trying to save with errors
24 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/8.3/Index.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | ================
4 | Mask version 8.3
5 | ================
6 |
7 | New PSR-14 MaskAfterElementSavedEvent and MaskAfterElementDeletedEvent
8 | ======================================================================
9 |
10 | The newly introduced :php:`\MASK\Mask\Event\MaskAfterElementSavedEvent`
11 | and :php:`\MASK\Mask\Event\MaskAfterElementDeletedEvent` allow to execute custom
12 | code as soon as an content element was saved or deleted.
13 | Refer to this :ref:`documentation ` on how to use it.
14 |
15 | Special Thanks
16 | ==============
17 |
18 | This version was brought to you by Sebastian Dernbach `sebastiande `__.
19 | Thank you!
20 |
--------------------------------------------------------------------------------
/Documentation/ChangeLog/Index.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _changelog:
4 |
5 | ChangeLog
6 | =========
7 |
8 | Have a look at `CHANGELOG.md `__ for a complete changelog.
9 |
10 | .. toctree::
11 | :maxdepth: 1
12 | :titlesonly:
13 |
14 | 8.3/Index
15 | 8.2/Index
16 | 8.1/Index
17 | 8.0/Index
18 | 7.2/Index
19 | 7.1/Index
20 | 7.0/Index
21 | 6.0/Index
22 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Index.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _fieldtypes:
4 |
5 | ===========
6 | Field Types
7 | ===========
8 |
9 | The Mask field types are basically a convenient combination of the :ref:`TCA column types `. If certain criteria meet, a
10 | field will be assigned to a Mask field type. The criteria are specific TCA settings, which define the type of the
11 | field. For example the TCA type `input` can have many appearances. With :php:`renderType => 'inputLink'` set, the field
12 | transforms into a link field. Mask will assign it to the field type `Link` then. This is how core fields are displayed
13 | as the appropriate field type.
14 |
15 | .. toctree::
16 | :maxdepth: 1
17 | :glob:
18 |
19 | Type/*
20 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Check.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-check:
4 |
5 | Check
6 | =====
7 |
8 | .. figure:: ../../Images/FieldTypes/Check.svg
9 | :alt: Check
10 | :class: float-left
11 | :width: 64px
12 |
13 | One or more checkboxes.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'check'
20 |
21 | .. figure:: ../../Images/FieldTypes/CheckPreview.png
22 | :alt: Check field
23 | :class: with-border
24 |
25 | Check field
26 |
27 | Available TCA options
28 | ---------------------
29 |
30 | * :ref:`config.renderType `
31 | * :ref:`l10n_mode `
32 | * :ref:`config.behaviour.allowLanguageSynchronization `
33 | * :ref:`config.items `
34 | * :ref:`config.default `
35 | * :ref:`config.cols `
36 |
37 | See a complete overview of Check TCA options in the :ref:`official documentation `.
38 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Colorpicker.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-colorpicker:
4 |
5 | Colorpicker
6 | ===========
7 |
8 | .. figure:: ../../Images/FieldTypes/Colorpicker.svg
9 | :alt: Colorpicker
10 | :class: float-left
11 | :width: 64px
12 |
13 | A colorpicker for choosing color hex-values.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'input',
20 | 'renderType' => 'colorpicker'
21 |
22 | .. figure:: ../../Images/FieldTypes/ColorpickerPreview.png
23 | :alt: Colorpicker field
24 | :class: with-border
25 |
26 | Colorpicker field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.default `
32 | * :ref:`config.placeholder `
33 | * :ref:`config.size `
34 | * :ref:`l10n_mode `
35 | * :ref:`config.behaviour.allowLanguageSynchronization `
36 | * :ref:`config.eval.null `
37 | * :ref:`config.mode `
38 |
39 | See a complete overview of Colorpicker TCA options in the :ref:`official documentation `.
40 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Date.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-date:
4 |
5 | Date
6 | ====
7 |
8 | .. figure:: ../../Images/FieldTypes/Date.svg
9 | :alt: Date
10 | :class: float-left
11 | :width: 64px
12 |
13 | An input field for a date (stored as MySQL DATE type).
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'input',
20 | 'dbType' => 'date'
21 |
22 | .. figure:: ../../Images/FieldTypes/DatePreview.png
23 | :alt: Date field
24 | :class: with-border
25 |
26 | Date field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.default `
32 | * :ref:`config.placeholder `
33 | * :ref:`config.range.lower `
34 | * :ref:`config.range.upper `
35 | * :ref:`config.eval.required `
36 | * :ref:`l10n_mode `
37 | * :ref:`config.behaviour.allowLanguageSynchronization `
38 | * :ref:`config.eval.null `
39 | * :ref:`config.mode `
40 |
41 | See a complete overview of Date TCA options in the :ref:`official documentation `.
42 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Datetime.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-datetime:
4 |
5 | Datetime
6 | ========
7 |
8 | .. figure:: ../../Images/FieldTypes/Datetime.svg
9 | :alt: Datetime
10 | :class: float-left
11 | :width: 64px
12 |
13 | An input field for date and time (stored as MySQL DATETIME type).
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'input',
20 | 'dbType' => 'datetime'
21 |
22 | .. figure:: ../../Images/FieldTypes/DatetimePreview.png
23 | :alt: Datetime field
24 | :class: with-border
25 |
26 | Datetime field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.default `
32 | * :ref:`config.placeholder `
33 | * :ref:`config.range.lower `
34 | * :ref:`config.range.upper `
35 | * :ref:`config.eval.required `
36 | * :ref:`l10n_mode `
37 | * :ref:`config.behaviour.allowLanguageSynchronization `
38 | * :ref:`config.eval.null `
39 | * :ref:`config.mode `
40 |
41 | See a complete overview of Datetime TCA options in the :ref:`official documentation `.
42 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Email.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-email:
4 |
5 | Email
6 | =====
7 |
8 | .. important::
9 |
10 | Only available for TYPO3 v12 or higher. For TYPO3 v11 or lower use type
11 | :ref:`String ` with eval set to `email`.
12 |
13 | .. figure:: ../../Images/FieldTypes/Email.svg
14 | :alt: Email
15 | :class: float-left
16 | :width: 64px
17 |
18 | An input field validated for a correct email address.
19 |
20 | .. rst-class:: clear-both
21 |
22 | .. code-block:: php
23 |
24 | 'type' => 'email'
25 |
26 | .. figure:: ../../Images/FieldTypes/EmailPreview.png
27 | :alt: Email field
28 | :class: with-border
29 |
30 | Email field
31 |
32 | Available TCA options
33 | ---------------------
34 |
35 | * :ref:`config.default `
36 | * :ref:`config.placeholder `
37 | * :ref:`config.size `
38 | * :ref:`config.eval.required `
39 | * :ref:`config.eval.unique `
40 | * :ref:`config.eval.uniqueInPid `
41 | * :ref:`l10n_mode `
42 | * :ref:`config.behaviour.allowLanguageSynchronization `
43 | * :ref:`config.eval.null `
44 | * :ref:`config.mode `
45 | * :ref:`config.autocomplete `
46 |
47 | See a complete overview of Email TCA options in the :ref:`official documentation `.
48 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Float.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-float:
4 |
5 | Float
6 | =====
7 |
8 | .. figure:: ../../Images/FieldTypes/Float.svg
9 | :alt: Float
10 | :class: float-left
11 | :width: 64px
12 |
13 | An input field for floats.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'input',
20 | 'eval' => 'double2'
21 |
22 | .. figure:: ../../Images/FieldTypes/FloatPreview.png
23 | :alt: Float field
24 | :class: with-border
25 |
26 | Float field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.default `
32 | * :ref:`config.placeholder `
33 | * :ref:`config.size `
34 | * :ref:`config.eval.required `
35 | * :ref:`config.max `
36 | * :ref:`config.range.lower `
37 | * :ref:`config.range.upper `
38 | * :ref:`config.slider.step `
39 | * :ref:`config.slider.width `
40 | * :ref:`l10n_mode `
41 | * :ref:`config.behaviour.allowLanguageSynchronization `
42 | * :ref:`config.eval.null `
43 | * :ref:`config.mode `
44 | * :ref:`config.autocomplete `
45 |
46 | See a complete overview of Float TCA options in the :ref:`official documentation `.
47 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Folder.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-folder:
4 |
5 | Folder
6 | ======
7 |
8 | .. figure:: ../../Images/FieldTypes/Folder.svg
9 | :alt: Folder
10 | :class: float-left
11 | :width: 64px
12 |
13 | Select one or more folders in a folder browse window.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'folder'
20 |
21 | .. figure:: ../../Images/FieldTypes/FolderPreview.png
22 | :alt: Folder field
23 | :class: with-border
24 |
25 | Folder field
26 |
27 | Available TCA options
28 | ---------------------
29 |
30 | * :ref:`config.elementBrowserEntryPoints `
31 | * :ref:`config.minitems `
32 | * :ref:`config.maxitems `
33 | * :ref:`l10n_mode `
34 | * :ref:`config.behaviour.allowLanguageSynchronization `
35 | * :ref:`config.size `
36 | * :ref:`config.autoSizeMax `
37 | * :ref:`config.multiple `
38 |
39 | See a complete overview of Folder TCA options in the :ref:`official documentation `.
40 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Linebreak.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-linebreak:
4 |
5 | Linebreak
6 | =========
7 |
8 | .. figure:: ../../Images/FieldTypes/Linebreak.svg
9 | :alt: Linebreak
10 | :class: float-left
11 | :width: 64px
12 |
13 | For use in conjunction with :ref:`Palettes ` only. They allow you to add a linebreak between two fields in a palette, if there
14 | is too little space to fit them all in one line.
15 |
16 | .. rst-class:: clear-both
17 |
18 | .. figure:: ../../Images/FieldTypes/LinebreakPreview.png
19 | :alt: Linebreak field
20 | :class: with-border
21 |
22 | Linebreak field
23 |
24 | Official Documentation
25 | ----------------------
26 |
27 | Read about linebreaks in the :ref:`official documentation `.
28 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Link.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-link:
4 |
5 | Link
6 | ====
7 |
8 | .. figure:: ../../Images/FieldTypes/Link.svg
9 | :alt: Link
10 | :class: float-left
11 | :width: 64px
12 |
13 | An input field for links.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'input',
20 | 'renderType' => 'inputLink'
21 |
22 | .. figure:: ../../Images/FieldTypes/LinkPreview.png
23 | :alt: Link field
24 | :class: with-border
25 |
26 | Link field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.placeholder `
32 | * :ref:`config.size `
33 | * :ref:`config.eval.required `
34 | * :ref:`config.fieldControl.linkPopup.options.allowedExtensions `
35 | * :ref:`config.fieldControl.linkPopup.options.blindLinkOptions `
36 | * :ref:`l10n_mode `
37 | * :ref:`config.behaviour.allowLanguageSynchronization `
38 | * :ref:`config.eval.null `
39 | * :ref:`config.mode `
40 |
41 | See a complete overview of inputLink TCA options in the :ref:`official documentation `.
42 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Palette.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-palette:
4 |
5 | Palette
6 | =======
7 |
8 | .. figure:: ../../Images/FieldTypes/Palette.svg
9 | :alt: Palette
10 | :class: float-left
11 | :width: 64px
12 |
13 | Palettes allow you to group multiple fields. They will by default be shown next to each other.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. figure:: ../../Images/FieldTypes/PalettePreview.png
18 | :alt: Palette field
19 | :class: with-border
20 |
21 | Palette field
22 |
23 | Official Documentation
24 | ----------------------
25 |
26 | Read about palettes in the :ref:`official documentation `.
27 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Radio.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-radio:
4 |
5 | Radiobutton
6 | ===========
7 |
8 | .. figure:: ../../Images/FieldTypes/Radio.svg
9 | :alt: Radio
10 | :class: float-left
11 | :width: 64px
12 |
13 | One or more radiobuttons.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'radio'
20 |
21 | .. figure:: ../../Images/FieldTypes/RadioPreview.png
22 | :alt: Radio field
23 | :class: with-border
24 |
25 | Radio field
26 |
27 | Available TCA options
28 | ---------------------
29 |
30 | * :ref:`config.items `
31 | * :ref:`config.default `
32 | * :ref:`l10n_mode `
33 | * :ref:`config.behaviour.allowLanguageSynchronization `
34 |
35 | See a complete overview of Radio TCA options in the :ref:`official documentation `.
36 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Richtext.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-richtext:
4 |
5 | Richtext
6 | ========
7 |
8 | .. figure:: ../../Images/FieldTypes/Richtext.svg
9 | :alt: Richtext
10 | :class: float-left
11 | :width: 64px
12 |
13 | A multiline textfield with richtext editor.
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'text',
20 | 'enableRichtext' => true
21 |
22 | .. figure:: ../../Images/FieldTypes/RichtextPreview.png
23 | :alt: Richtext field
24 | :class: with-border
25 |
26 | Richtext field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.richtextConfiguration `
32 | * :ref:`config.default `
33 | * :ref:`l10n_mode `
34 | * :ref:`config.behaviour.allowLanguageSynchronization `
35 |
36 | See a complete overview of Richtext TCA options in the :ref:`official documentation `.
37 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Slug.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-slug:
4 |
5 | Slug
6 | ====
7 |
8 | .. figure:: ../../Images/FieldTypes/Slug.svg
9 | :alt: Slug
10 | :class: float-left
11 | :width: 64px
12 |
13 | The slug field can create a unique identifier per content element, which can be
14 | used for the HTML id property or other use cases.
15 |
16 | .. rst-class:: clear-both
17 |
18 | .. code-block:: php
19 |
20 | 'type' => 'slug'
21 |
22 | .. figure:: ../../Images/FieldTypes/SlugPreview.png
23 | :alt: Slug field
24 | :class: with-border
25 |
26 | Slug field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.eval.slug `
32 | * :ref:`config.generatorOptions.fields `
33 | * :ref:`config.generatorOptions.replacements `
34 | * :ref:`config.generatorOptions.fieldSeparator `
35 | * :ref:`config.fallbackCharacter `
36 | * :ref:`config.prependSlash `
37 |
38 | See a complete overview of Slug TCA options in the :ref:`official documentation `.
39 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Tab.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-tab:
4 |
5 | Tab
6 | ===
7 |
8 | .. figure:: ../../Images/FieldTypes/Tab.svg
9 | :alt: Tab
10 | :class: float-left
11 | :width: 64px
12 |
13 | With the tab field, you can add a tab divider to better organize your fields in several tabs, and make editor's life
14 | easier.
15 |
16 | .. rst-class:: clear-both
17 |
18 | .. figure:: ../../Images/FieldTypes/TabPreview.png
19 | :alt: Tab field
20 | :class: with-border
21 |
22 | Tab field
23 |
24 | Official Documentation
25 | ----------------------
26 |
27 | Read about tabs in the :ref:`official documentation `.
28 |
--------------------------------------------------------------------------------
/Documentation/Fieldtypes/Type/Timestamp.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../../Includes.txt
2 |
3 | .. _fields-timestamp:
4 |
5 | Timestamp
6 | =========
7 |
8 | .. figure:: ../../Images/FieldTypes/Timestamp.svg
9 | :alt: Timestamp
10 | :class: float-left
11 | :width: 64px
12 |
13 | An input field for a date (stored as UNIX timestamp).
14 |
15 | .. rst-class:: clear-both
16 |
17 | .. code-block:: php
18 |
19 | 'type' => 'input',
20 | 'renderType' => 'inputDateTime'
21 |
22 | .. figure:: ../../Images/FieldTypes/TimestampPreview.png
23 | :alt: Timestamp field
24 | :class: with-border
25 |
26 | Timestamp field
27 |
28 | Available TCA options
29 | ---------------------
30 |
31 | * :ref:`config.eval `
32 | * :ref:`config.default `
33 | * :ref:`config.placeholder `
34 | * :ref:`config.range.lower `
35 | * :ref:`config.range.upper `
36 | * :ref:`config.eval.required `
37 | * :ref:`l10n_mode `
38 | * :ref:`config.behaviour.allowLanguageSynchronization `
39 | * :ref:`config.eval.null `
40 | * :ref:`config.mode `
41 |
42 | See a complete overview of Timestamp TCA options in the :ref:`official documentation `.
43 |
--------------------------------------------------------------------------------
/Documentation/Glossary/Index.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _glossary:
4 |
5 | ========
6 | Glossary
7 | ========
8 |
9 | Here you can find explanations for common terms when working with Mask.
10 |
11 | .. _fluid-styled-content:
12 |
13 | Fluid Styled Content
14 | ====================
15 |
16 | :doc:`Fluid Styled Content` is a core extension of TYPO3 which provides all the regular content elements
17 | you can find in your installation like Header, Text and Text & Images. Mask does not depend on it directly, but it is
18 | good practice to include it nevertheless. Most of the time you will want to have some generic content elements for your
19 | site. Even if you don't need them, this extension includes the TypoScript snippet `lib.parseFunc_RTE` too, which is
20 | essential for TYPO3 richtext parsing. Also you can use the standard layout of Fluid Styled Content by
21 | :ref:`specifying the paths in TypoScript `.
22 |
--------------------------------------------------------------------------------
/Documentation/Guides/Index.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _guides:
4 |
5 | ===============
6 | Tips and tricks
7 | ===============
8 |
9 | Here you can find general guides on how to work with Mask. There are many tips and tricks how to enhance the default
10 | functionality.
11 |
12 | .. toctree::
13 | :maxdepth: 1
14 | :titlesonly:
15 |
16 | OverrideTCA
17 | FluidStyledContent
18 | DataProcessors
19 | CropVariants
20 | RTEConfig
21 | UseExistingTCAFields
22 | NewContentElementWizard
23 | TypoScriptConstants
24 |
--------------------------------------------------------------------------------
/Documentation/Guides/RTEConfig.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _rteconfig-guide:
4 |
5 | ==========
6 | RTE Config
7 | ==========
8 |
9 | You can exactly define which :ref:`RTE config ` a mask element should offer for its
10 | richtext fields.
11 |
12 | For this, you have to follow these 3 steps:
13 |
14 | Create the config
15 | =================
16 |
17 | In your :ref:`sitepackage `, add the config files you need, e.g.
18 | `sitepackage/Configuration/RTE/Custom.yaml` and `sitepackage/Configuration/RTE/Simple.yaml`.
19 | To get the right keys, the `CKeditor configurator `__
20 | is helpful.
21 |
22 | Load the config
23 | ===============
24 |
25 | In `sitepackage/ext_localconf.php` wire the new config files as RTE presets:
26 |
27 | ::
28 |
29 | $GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['custom'] = 'EXT:sitepackage/Configuration/RTE/Custom.yaml';
30 | $GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['simple'] = 'EXT:sitepackage/Configuration/RTE/Simple.yaml';
31 |
32 |
33 | Target the config
34 | =================
35 |
36 | In TsConfig (e.g. `sitepackage/Configuration/TsConfig/Page/RTE.tsconfig`), assign the config to the desired field, using
37 | the element's cType as well as the configs key:
38 |
39 | .. code-block:: ts
40 |
41 | RTE.default.preset = custom
42 | RTE.config.tt_content.tx_mask_content.types.mask_teaser.preset = simple
43 |
44 | .. versionadded:: 7.0.0
45 |
46 | Since Mask v7 you can assign the RTE presets directly in the Mask builder.
47 |
--------------------------------------------------------------------------------
/Documentation/Guides/TypoScriptConstants.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _typoscriptconstants-guide:
4 |
5 | ==============================
6 | Accessing TypoScript constants
7 | ==============================
8 |
9 | To access a TypoScript constant in content elements,
10 | first make it available to all mask elements via TypoScript:
11 |
12 | .. code-block:: typoscript
13 |
14 | lib.maskContentElement {
15 | settings {
16 | pageTitle = {$mysitepackage.page.title}
17 | }
18 | }
19 |
20 | In your mask content element fluid template it can be accessed via
21 | :html:`{settings.pageTitle}`.
22 |
--------------------------------------------------------------------------------
/Documentation/Images/AdministratorManual/ExtensionConfiguration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/AdministratorManual/ExtensionConfiguration.png
--------------------------------------------------------------------------------
/Documentation/Images/AdministratorManual/TypoScriptTemplate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/AdministratorManual/TypoScriptTemplate.png
--------------------------------------------------------------------------------
/Documentation/Images/ContentelementsManual/Backendpreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/ContentelementsManual/Backendpreview.png
--------------------------------------------------------------------------------
/Documentation/Images/ContentelementsManual/ElementMetaData.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/ContentelementsManual/ElementMetaData.png
--------------------------------------------------------------------------------
/Documentation/Images/ContentelementsManual/FieldForm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/ContentelementsManual/FieldForm.png
--------------------------------------------------------------------------------
/Documentation/Images/ContentelementsManual/Fontawesome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/ContentelementsManual/Fontawesome.png
--------------------------------------------------------------------------------
/Documentation/Images/ContentelementsManual/MaskBuilder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/ContentelementsManual/MaskBuilder.png
--------------------------------------------------------------------------------
/Documentation/Images/ContentelementsManual/ShortTitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/ContentelementsManual/ShortTitle.png
--------------------------------------------------------------------------------
/Documentation/Images/ContentelementsManual/Wizard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/ContentelementsManual/Wizard.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Category.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/CategoryPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/CategoryPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Check.svg:
--------------------------------------------------------------------------------
1 |
24 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/CheckPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/CheckPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/ColorpickerPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/ColorpickerPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Content.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/ContentPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/ContentPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/DatePreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/DatePreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/DatetimePreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/DatetimePreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Email.svg:
--------------------------------------------------------------------------------
1 |
2 |
21 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/EmailPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/EmailPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/File.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
20 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/FilePreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/FilePreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/FloatPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/FloatPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Folder.svg:
--------------------------------------------------------------------------------
1 |
2 |
19 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/FolderPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/FolderPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Group.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/GroupPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/GroupPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/InlinePreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/InlinePreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/IntegerPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/IntegerPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Linebreak.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/LinebreakPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/LinebreakPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/LinkPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/LinkPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Media.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/MediaPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/MediaPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Palette.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/PalettePreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/PalettePreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/RadioPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/RadioPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/RichtextPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/RichtextPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Select.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
27 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/SelectPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/SelectPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/SlugPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/SlugPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/StringPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/StringPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/TabPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/TabPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/Text.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/TextPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/TextPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/FieldTypes/TimestampPreview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/FieldTypes/TimestampPreview.png
--------------------------------------------------------------------------------
/Documentation/Images/Guides/MaskContentElement.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Guides/MaskContentElement.png
--------------------------------------------------------------------------------
/Documentation/Images/IntroductionManual/BackendScreenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/IntroductionManual/BackendScreenshot.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/checkboxes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/checkboxes.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/existing-fields.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/existing-fields.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/group-resolving.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/group-resolving.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/image-cropping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/image-cropping.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/linebreak-builder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/linebreak-builder.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/linebreak-in-element.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/linebreak-in-element.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/mask-group-element.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/mask-group-element.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/mask-group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/mask-group.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/palette-builder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/palette-builder.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/palette-in-element.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/palette-in-element.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/select-icons1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/select-icons1.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/select-icons2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/select-icons2.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask6/timestamp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask6/timestamp.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.1/AutoConfiguration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.1/AutoConfiguration.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.1/ColorPicker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.1/ColorPicker.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.1/DescriptionOverrides.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.1/DescriptionOverrides.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.1/MissingDirectories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.1/MissingDirectories.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/BodytextAsText.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/BodytextAsText.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/CTypeSelect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/CTypeSelect.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/ElementSearch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/ElementSearch.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/ForeignTableSelect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/ForeignTableSelect.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/ItemGroups.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/ItemGroups.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/ItemSorting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/ItemSorting.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/ItemsModule.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/ItemsModule.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/LinkHandler.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/LinkHandler.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/Migrations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/Migrations.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/OverlayIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/OverlayIcon.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7.2/ValuePicker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7.2/ValuePicker.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7/AlertError.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7/AlertError.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7/ColorPicker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7/ColorPicker.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7/MaskBuilder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7/MaskBuilder.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7/MultiUse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7/MultiUse.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7/MultiUsePopup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7/MultiUsePopup.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7/Responsive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7/Responsive.png
--------------------------------------------------------------------------------
/Documentation/Images/Mask7/Validation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/Mask7/Validation.png
--------------------------------------------------------------------------------
/Documentation/Images/PageTemplates/BackendLayout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/PageTemplates/BackendLayout.png
--------------------------------------------------------------------------------
/Documentation/Images/PageTemplates/DataDebug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/PageTemplates/DataDebug.png
--------------------------------------------------------------------------------
/Documentation/Images/PageTemplates/PageRecord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/PageTemplates/PageRecord.png
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/advancedwebmarketing.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/advancedwebmarketing.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/checkdomain.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/checkdomain.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/dkd.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/dkd.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/eovision.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/eovision.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/hotelglueck.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/hotelglueck.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/joppnet.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/joppnet.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/mbit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/mbit.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/mittwald.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/mittwald.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/pinkdata.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/pinkdata.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/primeit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/primeit.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/profitbricks.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/profitbricks.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/rackspeed.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/rackspeed.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/robhost.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/robhost.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/schwabe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/schwabe.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/seminaris.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/seminaris.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/sgalinski.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/sgalinski.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/sitedesign.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/sitedesign.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/skidata.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/skidata.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/tommoko.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/tommoko.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/ttg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/ttg.jpg
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/webconsulting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/webconsulting.png
--------------------------------------------------------------------------------
/Documentation/Images/SponsorsManual/webservices.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Documentation/Images/SponsorsManual/webservices.jpg
--------------------------------------------------------------------------------
/Documentation/Includes.txt:
--------------------------------------------------------------------------------
1 | .. You can put central messages to display on all pages here
2 |
--------------------------------------------------------------------------------
/Documentation/Installation/_codesnippets/_config.yaml:
--------------------------------------------------------------------------------
1 | name: myvendor/my-site-package
2 | label: My site package set
3 | dependencies:
4 | - mask/mask
5 |
--------------------------------------------------------------------------------
/Documentation/Sitepackage/Index.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _sitepackage:
4 |
5 | ============
6 | Sitepackages
7 | ============
8 |
9 | Mask can only help you with creating custom content elements and render them in
10 | own fluid templates. To get started with creating your TYPO3 website in general
11 | you need what's called a sitepackage. This is a special extension specialized
12 | in defining html layouts, css, JavaScript, typoscript, ... so basically it's a
13 | Theme-Extension.
14 |
15 | There are many resources out there to get started. These are a few of those:
16 |
17 | - https://www.sitepackagebuilder.com/
18 | - https://extensions.typo3.org/extension/bootstrap_package/
19 | - https://docs.typo3.org/m/typo3/tutorial-sitepackage/main/en-us/
20 |
--------------------------------------------------------------------------------
/Documentation/ToDoList/Index.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../Includes.txt
2 |
3 | .. _todo:
4 |
5 | To-Do list
6 | ==========
7 |
8 | If you are interested in the current TODO-List, look into the issues on Github
9 | and the community's wishlist. In the Project page of Github you can find
10 | everything, what we are currently working on.
11 |
12 | * `Github Projects `__
13 | * `Github Issues `__
14 | * `Community wishlist `__
15 |
--------------------------------------------------------------------------------
/Documentation/guides.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: help
2 | help: ## Displays this list of targets with descriptions
3 | @echo "The following commands are available:\n"
4 | @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[32m%-30s\033[0m %s\n", $$1, $$2}'
5 |
6 | .PHONY: docs
7 | docs: ## Generate projects docs (from "Documentation" directory)
8 | mkdir -p Documentation-GENERATED-temp
9 |
10 | docker run --rm --pull always -v "$(shell pwd)":/project -t ghcr.io/typo3-documentation/render-guides:latest --config=Documentation
11 |
12 | .PHONY: test-docs
13 | test-docs: ## Test the documentation rendering
14 | mkdir -p Documentation-GENERATED-temp
15 |
16 | docker run --rm --pull always -v "$(shell pwd)":/project -t ghcr.io/typo3-documentation/render-guides:latest --config=Documentation --no-progress --fail-on-log
17 |
--------------------------------------------------------------------------------
/Resources/Private/.htaccess:
--------------------------------------------------------------------------------
1 | deny from all
--------------------------------------------------------------------------------
/Resources/Private/Partials/Form/Description.html:
--------------------------------------------------------------------------------
1 |
4 |
16 |
--------------------------------------------------------------------------------
/Resources/Private/Partials/Form/Key.html:
--------------------------------------------------------------------------------
1 |
4 |
10 |
--------------------------------------------------------------------------------
/Resources/Private/Partials/Form/Label.html:
--------------------------------------------------------------------------------
1 |
4 |
15 |
--------------------------------------------------------------------------------
/Resources/Private/Partials/Form/OverrideDescription.html:
--------------------------------------------------------------------------------
1 |
4 |
14 |
--------------------------------------------------------------------------------
/Resources/Private/Partials/Form/OverrideLabel.html:
--------------------------------------------------------------------------------
1 |
4 |
14 |
--------------------------------------------------------------------------------
/Resources/Private/Partials/List/Header.html:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/Resources/Private/Templates/Ajax/ShowHtml.html:
--------------------------------------------------------------------------------
1 |
2 | : EXT:mask_project/Resources/Private/Mask/Frontend/Templates
.
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {f:if(condition: html, then: html, else: '{f:translate(key: \'LLL:EXT:mask/Resources/Private/Language/locallang.xlf:tx_mask.no_fields\')}')}
12 |
--------------------------------------------------------------------------------
/Resources/Private/Templates/Wizard/Main.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/Resources/Public/Fonts/iconpicker.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Fonts/iconpicker.eot
--------------------------------------------------------------------------------
/Resources/Public/Fonts/iconpicker.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Fonts/iconpicker.ttf
--------------------------------------------------------------------------------
/Resources/Public/Fonts/iconpicker.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Fonts/iconpicker.woff
--------------------------------------------------------------------------------
/Resources/Public/Icons/Extension.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
20 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Category.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Check.svg:
--------------------------------------------------------------------------------
1 |
24 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Content.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Email.svg:
--------------------------------------------------------------------------------
1 |
2 |
21 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/File.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
20 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Folder.svg:
--------------------------------------------------------------------------------
1 |
2 |
19 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Group.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Linebreak.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Media.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Palette.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Select.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
27 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/Fieldtypes/Text.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
--------------------------------------------------------------------------------
/Resources/Public/Icons/module-mask_wizard.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
20 |
--------------------------------------------------------------------------------
/Resources/Public/Images/Logo_TVconverter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Images/Logo_TVconverter.png
--------------------------------------------------------------------------------
/Resources/Public/Images/Logo_WEBprofil_T3camp_druck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Images/Logo_WEBprofil_T3camp_druck.png
--------------------------------------------------------------------------------
/Resources/Public/Images/Logo_WEBprofil_T3camp_druck_Kopie_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Images/Logo_WEBprofil_T3camp_druck_Kopie_2.png
--------------------------------------------------------------------------------
/Resources/Public/Images/banner.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Images/banner.jpg
--------------------------------------------------------------------------------
/Resources/Public/Images/legacy-icon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Resources/Public/Images/legacy-icon.gif
--------------------------------------------------------------------------------
/Resources/Public/Images/verified.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Resources/Public/Styles/Backend/backend.css:
--------------------------------------------------------------------------------
1 | /**
2 | This css file is included in the whole typo3 backend.
3 | It can be used to style the mask content elements in the backend.
4 | */
5 |
6 | .icon-unify {
7 | font-family: 'Source Sans Pro', Verdana, Arial, Helvetica, sans-serif;
8 | font-weight: bold;
9 | border-radius: 0;
10 | text-transform: uppercase;
11 | }
12 |
13 | .icon-size-large .icon-unify {
14 | line-height: 47px;
15 | font-size: 35px;
16 | }
17 |
18 | .icon-size-default .icon-unify {
19 | line-height: 32px;
20 | font-size: 28px;
21 | }
22 |
23 | .content_preview {
24 | display: block;
25 | padding: 10px 0 4px 0;
26 | border-top: 1px solid #CACACA;
27 | margin-top: 6px;
28 | }
29 |
--------------------------------------------------------------------------------
/Resources/Public/Styles/disable-dark-mode.css:
--------------------------------------------------------------------------------
1 | :root {
2 | color-scheme: light;
3 | }
4 |
--------------------------------------------------------------------------------
/Tests/Unit/Definition/SqlColumnDefinitionTest.php:
--------------------------------------------------------------------------------
1 | setNull();
32 | self::assertSame('varchar(255) DEFAULT \'\'', $sqlColumnDefinition->sqlDefinition);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Tests/Unit/Event/MaskAfterElementDeletedEventTest.php:
--------------------------------------------------------------------------------
1 | getElementKey());
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Tests/Unit/Event/MaskAfterElementSavedEventTest.php:
--------------------------------------------------------------------------------
1 | getElementKey());
36 | self::assertTrue($event->isNewElement());
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Configuration/ContentElements/c.json:
--------------------------------------------------------------------------------
1 | {
2 | "tt_content": {
3 | "elements": {
4 | "c": {
5 | "key": "c",
6 | "label": "C",
7 | "description": "",
8 | "shortLabel": "",
9 | "color": "#000000",
10 | "icon": "",
11 | "columns": [
12 | "header",
13 | "tx_mask_file"
14 | ],
15 | "columnsOverride": [],
16 | "labels": [
17 | "Header",
18 | "File"
19 | ],
20 | "descriptions": [
21 | "",
22 | "only images are allowed"
23 | ],
24 | "sorting": 2
25 | }
26 | },
27 | "sql": {
28 | "tx_mask_file": {
29 | "tt_content": {
30 | "tx_mask_file": "int(11) unsigned DEFAULT '0' NOT NULL"
31 | }
32 | }
33 | },
34 | "tca": {
35 | "tx_mask_file": {
36 | "config": {
37 | "appearance": {
38 | "fileUploadAllowed": 1
39 | }
40 | },
41 | "type": "file",
42 | "key": "file",
43 | "fullKey": "tx_mask_file",
44 | "imageoverlayPalette": 1
45 | },
46 | "header": {
47 | "coreField": 1,
48 | "type": "string",
49 | "key": "header",
50 | "fullKey": "header"
51 | }
52 | },
53 | "palettes": []
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Configuration/legacyRte.json:
--------------------------------------------------------------------------------
1 | {
2 | "tt_content": {
3 | "elements": {
4 | "element1": {
5 | "label": "Element 1",
6 | "key": "element1",
7 | "labels": {
8 | "0": "RTE Field"
9 | },
10 | "columns": {
11 | "0": "tx_mask_rte"
12 | },
13 | "options": {
14 | "0": "rte",
15 | "1": "rte"
16 | }
17 | }
18 | },
19 | "tca": {
20 | "tx_mask_rte": {
21 | "config": {
22 | "type": "text"
23 | },
24 | "key": "rte"
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Configuration/missingDefaults.json:
--------------------------------------------------------------------------------
1 | {
2 | "tt_content": {
3 | "elements": {
4 | "element1": {
5 | "key": "element1",
6 | "label": "Element 1",
7 | "labels": {
8 | "0": "Integer Field",
9 | "1": "File Field",
10 | "2": "RTE Field"
11 | },
12 | "columns": {
13 | "0": "tx_mask_integer",
14 | "1": "tx_mask_file",
15 | "2": "tx_mask_rte"
16 | }
17 | }
18 | },
19 | "tca": {
20 | "tx_mask_integer": {
21 | "config": {
22 | "type": "input",
23 | "eval": "int,required"
24 | },
25 | "key": "integer"
26 | },
27 | "tx_mask_file": {
28 | "config": {
29 | "minitems": "",
30 | "maxitems": ""
31 | },
32 | "key": "file",
33 | "options": "file"
34 | },
35 | "tx_mask_rte": {
36 | "key": "rte",
37 | "config": {
38 | "type": "text"
39 | },
40 | "type": "richtext",
41 | "exclude": "1"
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/FieldGroups.php:
--------------------------------------------------------------------------------
1 | value => 'input',
7 | FieldType::INTEGER->value => 'input',
8 | FieldType::FLOAT->value => 'input',
9 | FieldType::LINK->value => 'input',
10 |
11 | FieldType::TEXT->value => 'text',
12 | FieldType::RICHTEXT->value => 'text',
13 |
14 | FieldType::DATE->value => 'date',
15 | FieldType::DATETIME->value => 'date',
16 | FieldType::TIMESTAMP->value => 'date',
17 |
18 | FieldType::CHECK->value => 'choice',
19 | FieldType::RADIO->value => 'choice',
20 | FieldType::SELECT->value => 'choice',
21 | FieldType::GROUP->value => 'choice',
22 |
23 | FieldType::FILE->value => 'repeating',
24 | FieldType::INLINE->value => 'repeating',
25 | FieldType::CONTENT->value => 'repeating',
26 |
27 | FieldType::TAB->value => 'structure',
28 | FieldType::PALETTE->value => 'structure',
29 | FieldType::LINEBREAK->value => 'structure',
30 | ];
31 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/check.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.renderType' => 6,
9 | ],
10 | ],
11 | Tab::LOCALIZATION->value => [
12 | [
13 | 'l10n_mode' => 12,
14 | ],
15 | [
16 | 'config.behaviour.allowLanguageSynchronization' => 6,
17 | ],
18 | ],
19 | Tab::EXTENDED->value => [
20 | [
21 | 'config.items' => 12,
22 | ],
23 | [
24 | 'config.default' => 6,
25 | ],
26 | [
27 | 'config.cols' => 6,
28 | ],
29 | ],
30 | ];
31 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/content.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'cTypes' => 12,
9 | ],
10 | ],
11 | Tab::VALIDATION->value => [
12 | [
13 | 'config.minitems' => 6,
14 | 'config.maxitems' => 6,
15 | ],
16 | ],
17 | Tab::APPEARANCE->value => [
18 | [
19 | 'config.appearance.newRecordLinkTitle' => 6,
20 | 'config.appearance.levelLinksPosition' => 6,
21 | ],
22 | [
23 | 'config.appearance.expandSingle' => 6,
24 | ],
25 | ],
26 | Tab::LOCALIZATION->value => [
27 | [
28 | 'l10n_mode' => 12,
29 | ],
30 | [
31 | 'config.behaviour.allowLanguageSynchronization' => 6,
32 | ],
33 | [
34 | 'config.appearance.showSynchronizationLink' => 6,
35 | 'config.appearance.showPossibleLocalizationRecords' => 6,
36 | 'config.appearance.showAllLocalizationLink' => 6,
37 | 'config.appearance.showRemovedLocalizationRecords' => 6,
38 | ],
39 | ],
40 | ];
41 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/date.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | 'config.placeholder' => 6,
10 | ],
11 | ],
12 | Tab::VALIDATION->value => [
13 | [
14 | 'config.range.lower' => 6,
15 | 'config.range.upper' => 6,
16 | 'config.eval.required' => 6,
17 | ],
18 | ],
19 | Tab::LOCALIZATION->value => [
20 | [
21 | 'l10n_mode' => 12,
22 | ],
23 | [
24 | 'config.behaviour.allowLanguageSynchronization' => 6,
25 | ],
26 | ],
27 | Tab::EXTENDED->value => [
28 | [
29 | 'config.eval.null' => 6,
30 | 'config.mode' => 6,
31 | ],
32 | ],
33 | ];
34 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/datetime.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | 'config.placeholder' => 6,
10 | ],
11 | ],
12 | Tab::VALIDATION->value => [
13 | [
14 | 'config.range.lower' => 6,
15 | 'config.range.upper' => 6,
16 | 'config.eval.required' => 6,
17 | ],
18 | ],
19 | Tab::LOCALIZATION->value => [
20 | [
21 | 'l10n_mode' => 12,
22 | ],
23 | [
24 | 'config.behaviour.allowLanguageSynchronization' => 6,
25 | ],
26 | ],
27 | Tab::EXTENDED->value => [
28 | [
29 | 'config.eval.null' => 6,
30 | 'config.mode' => 6,
31 | ],
32 | ],
33 | ];
34 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/file.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'imageoverlayPalette' => 6,
9 | ],
10 | ],
11 | Tab::VALIDATION->value => [
12 | [
13 | 'config.minitems' => 6,
14 | 'config.maxitems' => 6,
15 | ],
16 | ],
17 | Tab::APPEARANCE->value => [
18 | [
19 | 'allowedFileExtensions' => 6,
20 | ],
21 | [
22 | 'config.appearance.collapseAll' => 6,
23 | 'config.appearance.expandSingle' => 6,
24 | 'config.appearance.useSortable' => 6,
25 | 'config.appearance.fileUploadAllowed' => 6,
26 | ],
27 | ],
28 | Tab::LOCALIZATION->value => [
29 | [
30 | 'l10n_mode' => 12,
31 | ],
32 | [
33 | 'config.behaviour.allowLanguageSynchronization' => 6,
34 | ],
35 | [
36 | 'config.appearance.showSynchronizationLink' => 6,
37 | 'config.appearance.showPossibleLocalizationRecords' => 6,
38 | 'config.appearance.showAllLocalizationLink' => 6,
39 | 'config.appearance.showRemovedLocalizationRecords' => 6,
40 | ],
41 | ],
42 | ];
43 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/float.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | 'config.placeholder' => 6,
10 | ],
11 | [
12 | 'config.size' => 6,
13 | ],
14 | ],
15 | Tab::VALIDATION->value => [
16 | [
17 | 'config.eval.required' => 6,
18 | 'config.max' => 6,
19 | 'config.range.lower' => 6,
20 | 'config.range.upper' => 6,
21 | ],
22 | ],
23 | Tab::FIELD_CONTROL->value => [
24 | [
25 | 'config.slider.step' => 6,
26 | 'config.slider.width' => 6,
27 | ],
28 | ],
29 | Tab::LOCALIZATION->value => [
30 | [
31 | 'l10n_mode' => 12,
32 | ],
33 | [
34 | 'config.behaviour.allowLanguageSynchronization' => 6,
35 | ],
36 | ],
37 | Tab::EXTENDED->value => [
38 | [
39 | 'config.eval.null' => 6,
40 | 'config.mode' => 6,
41 | 'config.autocomplete' => 6,
42 | ],
43 | ],
44 | ];
45 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/group.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.internal_type' => 6,
9 | 'config.allowed' => 6,
10 | ],
11 | ],
12 | Tab::VALIDATION->value => [
13 | [
14 | 'config.minitems' => 6,
15 | 'config.maxitems' => 6,
16 | ],
17 | ],
18 | Tab::FIELD_CONTROL->value => [
19 | [
20 | 'config.fieldControl' => 12,
21 | 'config.fieldControl.editPopup.disabled' => 4,
22 | 'config.fieldControl.addRecord.disabled' => 4,
23 | 'config.fieldControl.listModule.disabled' => 4,
24 | 'config.fieldControl.elementBrowser.disabled' => 4,
25 | 'config.fieldControl.insertClipboard.disabled' => 4,
26 | ],
27 | [
28 | 'config.fieldWizard' => 12,
29 | 'config.fieldWizard.recordsOverview.disabled' => 4,
30 | 'config.fieldWizard.tableList.disabled' => 4,
31 | ],
32 | ],
33 | Tab::LOCALIZATION->value => [
34 | [
35 | 'l10n_mode' => 12,
36 | ],
37 | [
38 | 'config.behaviour.allowLanguageSynchronization' => 6,
39 | ],
40 | ],
41 | Tab::EXTENDED->value => [
42 | [
43 | 'config.size' => 6,
44 | 'config.autoSizeMax' => 6,
45 | ],
46 | [
47 | 'config.multiple' => 6,
48 | ],
49 | ],
50 | ];
51 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/inline.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'ctrl.label' => 6,
9 | 'ctrl.iconfile' => 6,
10 | ],
11 | ],
12 | Tab::VALIDATION->value => [
13 | [
14 | 'config.minitems' => 6,
15 | 'config.maxitems' => 6,
16 | ],
17 | ],
18 | Tab::APPEARANCE->value => [
19 | [
20 | 'config.appearance.newRecordLinkTitle' => 6,
21 | 'config.appearance.levelLinksPosition' => 6,
22 | ],
23 | [
24 | 'config.appearance.collapseAll' => 6,
25 | 'config.appearance.expandSingle' => 6,
26 | 'config.appearance.useSortable' => 6,
27 | ],
28 | ],
29 | Tab::LOCALIZATION->value => [
30 | [
31 | 'l10n_mode' => 12,
32 | ],
33 | [
34 | 'config.behaviour.allowLanguageSynchronization' => 6,
35 | ],
36 | [
37 | 'config.appearance.showSynchronizationLink' => 6,
38 | 'config.appearance.showPossibleLocalizationRecords' => 6,
39 | 'config.appearance.showAllLocalizationLink' => 6,
40 | 'config.appearance.showRemovedLocalizationRecords' => 6,
41 | ],
42 | ],
43 | ];
44 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/integer.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | 'config.placeholder' => 6,
10 | ],
11 | [
12 | 'config.size' => 6,
13 | ],
14 | ],
15 | Tab::VALIDATION->value => [
16 | [
17 | 'config.eval.required' => 6,
18 | 'config.max' => 6,
19 | ],
20 | [
21 | 'config.range.lower' => 6,
22 | 'config.range.upper' => 6,
23 | ],
24 | ],
25 | Tab::FIELD_CONTROL->value => [
26 | [
27 | 'config.slider.step' => 6,
28 | 'config.slider.width' => 6,
29 | ],
30 | ],
31 | Tab::LOCALIZATION->value => [
32 | [
33 | 'l10n_mode' => 12,
34 | ],
35 | [
36 | 'config.behaviour.allowLanguageSynchronization' => 6,
37 | ],
38 | ],
39 | Tab::EXTENDED->value => [
40 | [
41 | 'config.eval.null' => 6,
42 | 'config.mode' => 6,
43 | 'config.autocomplete' => 6,
44 | ],
45 | ],
46 | ];
47 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/linebreak.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.placeholder' => 6,
9 | ],
10 | [
11 | 'config.size' => 6,
12 | ],
13 | ],
14 | Tab::VALIDATION->value => [
15 | [
16 | 'config.eval.required' => 6,
17 | 'config.fieldControl.linkPopup.options.allowedExtensions' => 6,
18 | ],
19 | ],
20 | Tab::FIELD_CONTROL->value => [
21 | [
22 | 'config.fieldControl.linkPopup.options.blindLinkOptions' => 12,
23 | 'config.fieldControl.linkPopup.options.blindLinkOptions.file' => 4,
24 | 'config.fieldControl.linkPopup.options.blindLinkOptions.mail' => 4,
25 | 'config.fieldControl.linkPopup.options.blindLinkOptions.page' => 4,
26 | 'config.fieldControl.linkPopup.options.blindLinkOptions.folder' => 4,
27 | 'config.fieldControl.linkPopup.options.blindLinkOptions.url' => 4,
28 | 'config.fieldControl.linkPopup.options.blindLinkOptions.telephone' => 4,
29 | ],
30 | ],
31 | Tab::LOCALIZATION->value => [
32 | [
33 | 'l10n_mode' => 12,
34 | ],
35 | [
36 | 'config.behaviour.allowLanguageSynchronization' => 6,
37 | ],
38 | ],
39 | Tab::EXTENDED->value => [
40 | [
41 | 'config.eval.null' => 6,
42 | 'config.mode' => 6,
43 | ],
44 | ],
45 | ];
46 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/palette.php:
--------------------------------------------------------------------------------
1 | value => [
7 |
8 | ],
9 | ];
10 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/radio.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.items' => 12,
9 | ],
10 | [
11 | 'config.default' => 6,
12 | ],
13 | ],
14 | Tab::LOCALIZATION->value => [
15 | [
16 | 'l10n_mode' => 12,
17 | ],
18 | [
19 | 'config.behaviour.allowLanguageSynchronization' => 6,
20 | ],
21 | ],
22 | ];
23 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/richtext.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.richtextConfiguration' => 6,
9 | ],
10 | [
11 | 'config.default' => 6,
12 | ],
13 | ],
14 | Tab::LOCALIZATION->value => [
15 | [
16 | 'l10n_mode' => 12,
17 | ],
18 | [
19 | 'config.behaviour.allowLanguageSynchronization' => 6,
20 | ],
21 | ],
22 | ];
23 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/select.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.renderType' => 6,
9 | ],
10 | [
11 | 'config.items' => 12,
12 | ],
13 | ],
14 | Tab::VALIDATION->value => [
15 | [
16 | 'config.minitems' => 6,
17 | 'config.maxitems' => 6,
18 | ],
19 | ],
20 | Tab::DATABASE->value => [
21 | [
22 | 'config.foreign_table' => 6,
23 | ],
24 | [
25 | 'config.foreign_table_where' => 12,
26 | ],
27 | ],
28 | Tab::FILES->value => [
29 | [
30 | 'config.fileFolder' => 6,
31 | 'config.fileFolder_extList' => 6,
32 | 'config.fileFolder_recursions' => 6,
33 | ],
34 | ],
35 | Tab::LOCALIZATION->value => [
36 | [
37 | 'l10n_mode' => 12,
38 | ],
39 | [
40 | 'config.behaviour.allowLanguageSynchronization' => 6,
41 | ],
42 | ],
43 | Tab::EXTENDED->value => [
44 | [
45 | 'config.size' => 6,
46 | 'config.autoSizeMax' => 6,
47 | ],
48 | ],
49 | ];
50 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/string.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | 'config.placeholder' => 6,
10 | ],
11 | [
12 | 'config.size' => 6,
13 | ],
14 | ],
15 | Tab::VALIDATION->value => [
16 | [
17 | 'config.max' => 6,
18 | 'config.is_in' => 6,
19 | ],
20 | [
21 | 'config.eval.required' => 6,
22 | 'config.eval.trim' => 6,
23 | 'config.eval.alpha' => 6,
24 | 'config.eval.num' => 6,
25 | 'config.eval.alphanum' => 6,
26 | 'config.eval.alphanum_x' => 6,
27 | 'config.eval.domainname' => 6,
28 | 'config.eval.email' => 6,
29 | 'config.eval.lower' => 6,
30 | 'config.eval.upper' => 6,
31 | 'config.eval.unique' => 6,
32 | 'config.eval.uniqueInPid' => 6,
33 | 'config.eval.nospace' => 6,
34 | ],
35 | ],
36 | Tab::LOCALIZATION->value => [
37 | [
38 | 'l10n_mode' => 12,
39 | ],
40 | [
41 | 'config.behaviour.allowLanguageSynchronization' => 6,
42 | ],
43 | ],
44 | Tab::EXTENDED->value => [
45 | [
46 | 'config.eval.null' => 6,
47 | 'config.mode' => 6,
48 | 'config.eval.md5' => 6,
49 | 'config.eval.password' => 6,
50 | 'config.autocomplete' => 6,
51 | ],
52 | ],
53 | ];
54 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/tab.php:
--------------------------------------------------------------------------------
1 | value => [
7 |
8 | ],
9 | ];
10 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/text.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.default' => 6,
9 | 'config.placeholder' => 6,
10 | ],
11 | [
12 | 'config.cols' => 6,
13 | 'config.rows' => 6,
14 | ],
15 | ],
16 | Tab::VALIDATION->value => [
17 | [
18 | 'config.max' => 6,
19 | ],
20 | [
21 | 'config.eval.required' => 6,
22 | 'config.eval.trim' => 6,
23 | ],
24 | ],
25 | Tab::LOCALIZATION->value => [
26 | [
27 | 'l10n_mode' => 12,
28 | ],
29 | [
30 | 'config.behaviour.allowLanguageSynchronization' => 6,
31 | ],
32 | ],
33 | Tab::WIZARDS->value => [
34 | [
35 | 'config.format' => 6,
36 | ],
37 | ],
38 | Tab::EXTENDED->value => [
39 | [
40 | 'config.eval.null' => 6,
41 | 'config.mode' => 6,
42 | 'config.fixedFont' => 6,
43 | 'config.enableTabulator' => 6,
44 | 'config.wrap' => 6,
45 | ],
46 | ],
47 | ];
48 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Tabs/timestamp.php:
--------------------------------------------------------------------------------
1 | value => [
7 | [
8 | 'config.eval' => 6,
9 | ],
10 | [
11 | 'config.default' => 6,
12 | 'config.placeholder' => 6,
13 | ],
14 | ],
15 | Tab::VALIDATION->value => [
16 | [
17 | 'config.range.lower' => 6,
18 | 'config.range.upper' => 6,
19 | 'config.eval.required' => 6,
20 | ],
21 | ],
22 | Tab::LOCALIZATION->value => [
23 | [
24 | 'l10n_mode' => 12,
25 | ],
26 | [
27 | 'config.behaviour.allowLanguageSynchronization' => 6,
28 | ],
29 | ],
30 | Tab::EXTENDED->value => [
31 | [
32 | 'config.eval.null' => 6,
33 | 'config.mode' => 6,
34 | ],
35 | ],
36 | ];
37 |
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Templates/Uc_first.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Tests/Unit/Fixtures/Templates/Uc_first.html
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Templates/UpperExists.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Tests/Unit/Fixtures/Templates/UpperExists.html
--------------------------------------------------------------------------------
/Tests/Unit/Fixtures/Templates/under_scored.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gernott/mask/e78cdc05e180963ed0a637dd867b83c1d6bdb4d8/Tests/Unit/Fixtures/Templates/under_scored.html
--------------------------------------------------------------------------------
/Tests/Unit/PackageManagerTrait.php:
--------------------------------------------------------------------------------
1 | createMock(Package::class);
30 | $packageMock->method('getPackagePath')->willReturn(realpath(__DIR__ . '/../../') . '/');
31 | $packageManagerMock = $this->createMock(PackageManager::class);
32 | $packageManagerMock->method('isPackageActive')->willReturn(true)->with('mask');
33 | $packageManagerMock->method('getPackage')->willReturn($packageMock)->with('mask');
34 | // @todo Replace workaround for resolvePackagePath.
35 | $packageManagerMock->method('resolvePackagePath')->willReturnCallback(function ($path) {
36 | return Environment::getProjectPath() . str_replace('EXT:mask', '', $path);
37 | });
38 |
39 | ExtensionManagementUtility::setPackageManager($packageManagerMock);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/ext_emconf.php:
--------------------------------------------------------------------------------
1 | 'Mask',
5 | 'description' => 'Create your own content elements and page templates. Easy to use, even without programming skills because of the comfortable drag and drop system. Stored in structured database tables. Style your frontend with Fluid tags. Ideal, if you want to switch from Templavoila.',
6 | 'category' => 'plugin',
7 | 'author' => 'WEBprofil - Gernot Ploiner e.U.',
8 | 'author_email' => 'office@webprofil.at',
9 | 'author_company' => 'WEBprofil - Gernot Ploiner e.U.',
10 | 'state' => 'stable',
11 | 'clearCacheOnLoad' => 1,
12 | 'version' => '9.0.8',
13 | 'constraints' => [
14 | 'depends' => [
15 | 'typo3' => '12.4.0-13.4.99',
16 | 'fluid' => '12.4.0-13.4.99',
17 | 'fluid_styled_content' => '12.4.0-13.4.99',
18 | ],
19 | 'conflicts' => [],
20 | 'suggests' => [
21 | 'gridelements' => '',
22 | 'container' => '',
23 | ],
24 | ],
25 | ];
26 |
--------------------------------------------------------------------------------
/ext_tables.sql:
--------------------------------------------------------------------------------
1 | -- Add index for CType to speed up number of used elements lookup --
2 | CREATE TABLE tt_content (
3 | KEY CType (CType),
4 | );
5 |
--------------------------------------------------------------------------------