From 9f07429dd7e367c5999d10cca57969a08a728f05 Mon Sep 17 00:00:00 2001 From: Christian Kuhn Date: Tue, 19 Feb 2019 15:29:31 +0100 Subject: [PATCH] [TASK] Drop VH lists and refer to auto generated reference --- Documentation/Fluid/ViewHelper/Alias.rst | 70 --- Documentation/Fluid/ViewHelper/Base.rst | 29 - .../Fluid/ViewHelper/Be/Buttons/Csh.rst | 121 ---- .../Fluid/ViewHelper/Be/Buttons/Index.rst | 13 - .../Fluid/ViewHelper/Be/Buttons/Shortcut.rst | 47 -- .../Fluid/ViewHelper/Be/Container.rst | 223 -------- Documentation/Fluid/ViewHelper/Be/Index.rst | 20 - Documentation/Fluid/ViewHelper/Be/InfoBox.rst | 87 --- .../Fluid/ViewHelper/Be/Menus/ActionMenu.rst | 44 -- .../ViewHelper/Be/Menus/ActionMenuItem.rst | 69 --- .../Be/Menus/ActionMenuItemGroup.rst | 42 -- .../Fluid/ViewHelper/Be/Menus/Index.rst | 13 - .../Fluid/ViewHelper/Be/PageInfo.rst | 20 - .../Fluid/ViewHelper/Be/PagePath.rst | 22 - .../Fluid/ViewHelper/Be/PageRenderer.rst | 139 ----- .../Be/Security/IfAuthenticated.rst | 48 -- .../ViewHelper/Be/Security/IfHasRole.rst | 54 -- .../Fluid/ViewHelper/Be/Security/Index.rst | 13 - .../Fluid/ViewHelper/Be/TableList.rst | 187 ------- .../Fluid/ViewHelper/Be/Widget/Index.rst | 12 - .../Fluid/ViewHelper/Be/Widget/Paginate.rst | 84 --- Documentation/Fluid/ViewHelper/CObject.rst | 138 ----- Documentation/Fluid/ViewHelper/Case.rst | 50 -- Documentation/Fluid/ViewHelper/Comment.rst | 39 -- Documentation/Fluid/ViewHelper/Count.rst | 81 --- Documentation/Fluid/ViewHelper/Cycle.rst | 76 --- Documentation/Fluid/ViewHelper/Debug.rst | 140 ----- .../Fluid/ViewHelper/Debug/Index.rst | 107 ---- .../Fluid/ViewHelper/Debug/Render.rst | 97 ---- .../Fluid/ViewHelper/DefaultCase.rst | 24 - Documentation/Fluid/ViewHelper/Else.rst | 11 - Documentation/Fluid/ViewHelper/Escape.rst | 7 - .../Fluid/ViewHelper/FlashMessages.rst | 84 --- Documentation/Fluid/ViewHelper/For.rst | 242 -------- .../Fluid/ViewHelper/For.rst.001.png | Bin 20601 -> 0 bytes .../Fluid/ViewHelper/For.rst.002.png | Bin 20767 -> 0 bytes Documentation/Fluid/ViewHelper/Form.rst | 401 -------------- .../Fluid/ViewHelper/Form/AbstractForm.rst | 9 - .../ViewHelper/Form/AbstractFormField.rst | 54 -- .../Fluid/ViewHelper/Form/Button.rst | 42 -- .../Fluid/ViewHelper/Form/Checkbox.rst | 205 ------- .../Fluid/ViewHelper/Form/Hidden.rst | 29 - Documentation/Fluid/ViewHelper/Form/Index.rst | 29 - .../Fluid/ViewHelper/Form/Password.rst | 28 - Documentation/Fluid/ViewHelper/Form/Radio.rst | 56 -- .../Fluid/ViewHelper/Form/Select.rst | 208 ------- .../Fluid/ViewHelper/Form/Select/Index.rst | 17 - .../Fluid/ViewHelper/Form/Select/Optgroup.rst | 66 --- .../Fluid/ViewHelper/Form/Select/Option.rst | 65 --- .../Fluid/ViewHelper/Form/Submit.rst | 35 -- .../Fluid/ViewHelper/Form/Textarea.rst | 114 ---- .../Fluid/ViewHelper/Form/Textfield.rst | 174 ------ .../Fluid/ViewHelper/Form/Upload.rst | 71 --- .../ViewHelper/Form/ValidationResults.rst | 75 --- .../ViewHelper/Format/AbstractEncoding.rst | 7 - .../Fluid/ViewHelper/Format/Bytes.rst | 118 ---- .../Fluid/ViewHelper/Format/Case.rst | 84 --- .../Fluid/ViewHelper/Format/Crop.rst | 126 ----- .../Fluid/ViewHelper/Format/Currency.rst | 125 ----- .../Fluid/ViewHelper/Format/Date.rst | 169 ------ .../Fluid/ViewHelper/Format/Html.rst | 44 -- .../Fluid/ViewHelper/Format/Htmlentities.rst | 77 --- .../ViewHelper/Format/HtmlentitiesDecode.rst | 61 -- .../Fluid/ViewHelper/Format/Index.rst | 26 - .../Fluid/ViewHelper/Format/Json.rst | 67 --- .../Fluid/ViewHelper/Format/Nl2br.rst | 40 -- .../Fluid/ViewHelper/Format/Number.rst | 79 --- .../Fluid/ViewHelper/Format/Padding.rst | 94 ---- .../Fluid/ViewHelper/Format/StripTags.rst | 59 -- .../Fluid/ViewHelper/Format/Urlencode.rst | 46 -- Documentation/Fluid/ViewHelper/GroupedFor.rst | 85 --- Documentation/Fluid/ViewHelper/If.rst | 131 ----- Documentation/Fluid/ViewHelper/Image.rst | 520 ------------------ Documentation/Fluid/ViewHelper/Index.rst | 44 +- Documentation/Fluid/ViewHelper/Layout.rst | 26 - .../Fluid/ViewHelper/Link/Action.rst | 355 ------------ Documentation/Fluid/ViewHelper/Link/Email.rst | 125 ----- .../Fluid/ViewHelper/Link/External.rst | 139 ----- Documentation/Fluid/ViewHelper/Link/Index.rst | 15 - Documentation/Fluid/ViewHelper/Link/Page.rst | 274 --------- .../Fluid/ViewHelper/Link/Typolink.rst | 231 -------- Documentation/Fluid/ViewHelper/Or.rst | 86 --- Documentation/Fluid/ViewHelper/Render.rst | 120 ---- .../Fluid/ViewHelper/RenderChildren.rst | 7 - .../Fluid/ViewHelper/RenderFlashMessages.rst | 8 - Documentation/Fluid/ViewHelper/Section.rst | 47 -- .../ViewHelper/Security/IfAuthenticated.rst | 21 - .../Fluid/ViewHelper/Security/IfHasRole.rst | 59 -- .../Fluid/ViewHelper/Security/Index.rst | 14 - Documentation/Fluid/ViewHelper/Spaceless.rst | 35 -- Documentation/Fluid/ViewHelper/Switch.rst | 57 -- Documentation/Fluid/ViewHelper/Then.rst | 11 - Documentation/Fluid/ViewHelper/Translate.rst | 124 ----- Documentation/Fluid/ViewHelper/Uri/Action.rst | 265 --------- Documentation/Fluid/ViewHelper/Uri/Email.rst | 48 -- .../Fluid/ViewHelper/Uri/External.rst | 80 --- Documentation/Fluid/ViewHelper/Uri/Image.rst | 226 -------- Documentation/Fluid/ViewHelper/Uri/Index.rst | 12 - Documentation/Fluid/ViewHelper/Uri/Page.rst | 173 ------ .../Fluid/ViewHelper/Uri/Resource.rst | 57 -- .../Fluid/ViewHelper/Uri/Typolink.rst | 119 ---- Documentation/Fluid/ViewHelper/Variable.rst | 89 --- .../Fluid/ViewHelper/Widget/Autocomplete.rst | 4 - .../Fluid/ViewHelper/Widget/Index.rst | 16 - .../Fluid/ViewHelper/Widget/Link.rst | 9 - .../Fluid/ViewHelper/Widget/Paginate.rst | 82 --- Documentation/Fluid/ViewHelper/Widget/Uri.rst | 4 - Documentation/Settings.cfg | 1 + 108 files changed, 4 insertions(+), 9068 deletions(-) delete mode 100644 Documentation/Fluid/ViewHelper/Alias.rst delete mode 100644 Documentation/Fluid/ViewHelper/Base.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Buttons/Csh.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Buttons/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Buttons/Shortcut.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Container.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/InfoBox.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Menus/ActionMenu.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItem.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItemGroup.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Menus/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/PageInfo.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/PagePath.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/PageRenderer.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Security/IfAuthenticated.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Security/IfHasRole.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Security/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/TableList.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Widget/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Be/Widget/Paginate.rst delete mode 100644 Documentation/Fluid/ViewHelper/CObject.rst delete mode 100644 Documentation/Fluid/ViewHelper/Case.rst delete mode 100644 Documentation/Fluid/ViewHelper/Comment.rst delete mode 100644 Documentation/Fluid/ViewHelper/Count.rst delete mode 100644 Documentation/Fluid/ViewHelper/Cycle.rst delete mode 100644 Documentation/Fluid/ViewHelper/Debug.rst delete mode 100644 Documentation/Fluid/ViewHelper/Debug/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Debug/Render.rst delete mode 100644 Documentation/Fluid/ViewHelper/DefaultCase.rst delete mode 100644 Documentation/Fluid/ViewHelper/Else.rst delete mode 100644 Documentation/Fluid/ViewHelper/Escape.rst delete mode 100644 Documentation/Fluid/ViewHelper/FlashMessages.rst delete mode 100644 Documentation/Fluid/ViewHelper/For.rst delete mode 100644 Documentation/Fluid/ViewHelper/For.rst.001.png delete mode 100644 Documentation/Fluid/ViewHelper/For.rst.002.png delete mode 100644 Documentation/Fluid/ViewHelper/Form.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/AbstractForm.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/AbstractFormField.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Button.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Checkbox.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Hidden.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Password.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Radio.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Select.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Select/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Select/Optgroup.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Select/Option.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Submit.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Textarea.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Textfield.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/Upload.rst delete mode 100644 Documentation/Fluid/ViewHelper/Form/ValidationResults.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/AbstractEncoding.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Bytes.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Case.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Crop.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Currency.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Date.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Html.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Htmlentities.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/HtmlentitiesDecode.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Json.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Nl2br.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Number.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Padding.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/StripTags.rst delete mode 100644 Documentation/Fluid/ViewHelper/Format/Urlencode.rst delete mode 100644 Documentation/Fluid/ViewHelper/GroupedFor.rst delete mode 100644 Documentation/Fluid/ViewHelper/If.rst delete mode 100644 Documentation/Fluid/ViewHelper/Image.rst delete mode 100644 Documentation/Fluid/ViewHelper/Layout.rst delete mode 100644 Documentation/Fluid/ViewHelper/Link/Action.rst delete mode 100644 Documentation/Fluid/ViewHelper/Link/Email.rst delete mode 100644 Documentation/Fluid/ViewHelper/Link/External.rst delete mode 100644 Documentation/Fluid/ViewHelper/Link/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Link/Page.rst delete mode 100644 Documentation/Fluid/ViewHelper/Link/Typolink.rst delete mode 100644 Documentation/Fluid/ViewHelper/Or.rst delete mode 100644 Documentation/Fluid/ViewHelper/Render.rst delete mode 100644 Documentation/Fluid/ViewHelper/RenderChildren.rst delete mode 100644 Documentation/Fluid/ViewHelper/RenderFlashMessages.rst delete mode 100644 Documentation/Fluid/ViewHelper/Section.rst delete mode 100644 Documentation/Fluid/ViewHelper/Security/IfAuthenticated.rst delete mode 100644 Documentation/Fluid/ViewHelper/Security/IfHasRole.rst delete mode 100644 Documentation/Fluid/ViewHelper/Security/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Spaceless.rst delete mode 100644 Documentation/Fluid/ViewHelper/Switch.rst delete mode 100644 Documentation/Fluid/ViewHelper/Then.rst delete mode 100644 Documentation/Fluid/ViewHelper/Translate.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/Action.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/Email.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/External.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/Image.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/Page.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/Resource.rst delete mode 100644 Documentation/Fluid/ViewHelper/Uri/Typolink.rst delete mode 100644 Documentation/Fluid/ViewHelper/Variable.rst delete mode 100644 Documentation/Fluid/ViewHelper/Widget/Autocomplete.rst delete mode 100644 Documentation/Fluid/ViewHelper/Widget/Index.rst delete mode 100644 Documentation/Fluid/ViewHelper/Widget/Link.rst delete mode 100644 Documentation/Fluid/ViewHelper/Widget/Paginate.rst delete mode 100644 Documentation/Fluid/ViewHelper/Widget/Uri.rst diff --git a/Documentation/Fluid/ViewHelper/Alias.rst b/Documentation/Fluid/ViewHelper/Alias.rst deleted file mode 100644 index 59c2457..0000000 --- a/Documentation/Fluid/ViewHelper/Alias.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. include:: ../../Includes.txt - -.. _vh-f-alias: - -f:alias -======= - -This ViewHelper creates variables that you can use when developing Fluid views. You create variables which contain either -static values or dynamic values from objects or other ViewHelpers. - -Details -------- - -map -~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - The key is the name by which the variable is known, where the value reflects the content. - -:aspect:`Default value` - -:aspect:`Mandatory` - Yes - -Examples for static values --------------------------- - -:: - - -

Hello, my name is {firstName} {lastName}

-
- -**Output** - -:: - -

Hello, my name is Stefan Froemken

- -Example for results from another ViewHelper --------------------------------------------- - -:: - - -

There are {amount} records in database

-
- -**Output** - -:: - -

There are 23 records in database

- -Example for values from an object ---------------------------------- - -:: - - -

Hello, my name is {firstName} {lastName}

-
- -**Output** - -:: - -

Hello, my name is Stefan Froemken

diff --git a/Documentation/Fluid/ViewHelper/Base.rst b/Documentation/Fluid/ViewHelper/Base.rst deleted file mode 100644 index 222b9db..0000000 --- a/Documentation/Fluid/ViewHelper/Base.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. include:: ../../Includes.txt - -f:base -====== - -This ViewHelper embeds the `base-Tag `_ into your HTML template. - -Properties ----------- - -This ViewHelper doesn't accept any properties. - -Example --------- - -:: - - - -**Output** - -:: - - - -.. tip:: - - Using this ViewHelper only makes sense when you're building a website template - including the - using - Fluid. If there's no in the template, this HTML tag will be added to the and that's not where it belongs. diff --git a/Documentation/Fluid/ViewHelper/Be/Buttons/Csh.rst b/Documentation/Fluid/ViewHelper/Be/Buttons/Csh.rst deleted file mode 100644 index 03cef89..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Buttons/Csh.rst +++ /dev/null @@ -1,121 +0,0 @@ -.. include:: ../../../../Includes.txt - -================ -f:be.buttons.csh -================ - -This View helper returns a CSH (context sensitive help) button with an icon. -It enables you to include hints into backend forms. - -TYPO3 uses this functionality all over the backend, and it is noticeable by the small “question mark” image when hovering -over the element, whilst clicking on the element displays the help text in a small tooltip. - -Properties -========== - -.. rst-class:: dl-parameters - -table - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Table name ('_MOD_'+module name). If not set, the current module name will - be used. - - -field - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - Field name (CSH locallang main key). - - -wrap - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - Markup to wrap around the CSH, split by `|` . - - -Special case ------------- - -There's a special case in which the “table” property doesn't need to be -defined. This is the case when there are form fields in the module, but when -there is no 1:1 column in the database. For example, in the Scheduler, which -stores its information in a serialized format in a single field, or in the case -of a search field, whose value isn't sent to the database. Such fields can be -assigned a csh icon through the addition of an entry in -:file:`ext_tables.php`:: - - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr( - '_MOD_FullModuleName', - 'Path to a language file' - ); - - -Note the reference to the fully-formed module name. This is comprised of the -category (e.g. “web”), the upper-camel-cased extension name and the upper- -camel-cased module name. In the example of an extension named “sfextbase” and a -module named “extbase”, the complete name would be:: - - web_SfextbaseExtbase - - -Here's an example of how the configuration might appear:: - - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr( - '_MOD_web_SfextbaseExtbase', - 'EXT:ext_key/Resources/Private/Language/locallang_extbase.xlf' - ); - - -The entry for the email address in the XLF file would be as follows: - -.. code-block:: xml - - - Email - - - Enter your email address - - - - I am a really long description, which gives plenty of detail about - this field relating to an email address, as well as what you need to - note and that you need to add a valid email address in this field. - - - - -Examples -======== - -Example: database fields ------------------------- - -In the majority of TYPO3 tables, the language file key is usually the same as -the column name: - -.. code-block:: html - - - - -Example: Icons for form fields without a 1:1 database structure ---------------------------------------------------------------- - -This example relates to the special case mentioned above, in which the table -name may not be indicated: - -.. code-block:: html - - - diff --git a/Documentation/Fluid/ViewHelper/Be/Buttons/Index.rst b/Documentation/Fluid/ViewHelper/Be/Buttons/Index.rst deleted file mode 100644 index a967415..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Buttons/Index.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. include:: ../../../../Includes.txt - -=================== -ViewHelper: Buttons -=================== - -**Contents** - -.. toctree:: - :titlesonly: - - Csh - Shortcut diff --git a/Documentation/Fluid/ViewHelper/Be/Buttons/Shortcut.rst b/Documentation/Fluid/ViewHelper/Be/Buttons/Shortcut.rst deleted file mode 100644 index b7e328a..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Buttons/Shortcut.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. include:: ../../../../Includes.txt - -===================== -f:be.buttons.shortcut -===================== - -This ViewHelper provides the bookmark function used in the backend. Currently -this ViewHelper is not used by the core. - -Properties -========== - -.. rst-class:: dl-parameters - -getVars - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` empty array - :sep:`|` - - List of GET variables to store. By default the current id, module and all - module arguments will be stored. - - -setVars - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` empty array - :sep:`|` - - List of SET[] variables to store. See DocumentTemplate::makeShortcutIcon(). - Normally won't be used by Extbase modules. - - -Example -======= - -Default:: - - - - -Explicitly set parameters to be stored in the shortcut:: - - diff --git a/Documentation/Fluid/ViewHelper/Be/Container.rst b/Documentation/Fluid/ViewHelper/Be/Container.rst deleted file mode 100644 index 4229f67..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Container.rst +++ /dev/null @@ -1,223 +0,0 @@ -.. include:: ../../../Includes.txt - -============== -f:be.container -============== - -The first question you should ask yourself is whether you want to build -something using the existing TYPO3 interface, or build something completely -bespoke. If you're making a bespoke interface, then you don't need this -ViewHelper at all. In this event, bind your own JavaScript and CSS assets -yourself. - -However, if you want to build something using the standard TYPO3 interface, -thereby providing a close integration and compatibility with other modules, -then use this ViewHelper. In essence, you only need to use two rows of code and -around ten properties. - -Properties -========== - -.. rst-class:: dl-parameters - -pageTitle - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - Backend modules are loaded in an HTML frame, so it's not essential to define - an HTML page title. If you want to, then this is the property to use. - - -enableJumpToUrl - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` true - :sep:`|` - - Activate this parameter if you want to use the ActionMenu ViewHelper. This - loads the necessary JavaScript assets. - - This property has been marked as deprecated in TYPO3 6.2 and was removed in - TYPO3 7.0. - - -enableClickMenu - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` true - :sep:`|` - - When active, this property loads the JavaScript for context menu - functionality. - - -loadPrototype - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` true - :sep:`|` - - When active, the Prototype JS framework will be loaded. - -loadScriptaculous - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - When active, the Scriptaculous extension to Prototype JS will be loaded. - -scriptaculousModule - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - Using this option, you can load additional JavaScript modules for - Scriptaculous. - - -loadExtJs - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - When active, the ExtJS framework will be loaded. - - -loadExtJsTheme - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` true - :sep:`|` - - When active, templates for the graphical elements of the ExtJs framework - will be loaded. - - -extJsAdapter - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - You can use this property to define a different adaptor instead of the - standard, Extbase. - - -enableExtJsDebug - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - This property should only be activated during a development process - involving ExtJS. - - -addCssFile - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Bind a specific CSS asset file to the view. - - This property has been marked as deprecated in TYPO3 6.2 and was removed in - TYPO3 7.0. Please use the `includeCssFiles` instead. - - -addJsFile - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Bind a specific JavaScript asset file to the view. - - This property has been marked as deprecated in TYPO3 6.2 and was removed in - TYPO3 7.0. Please use the `includeJsFiles` instead. - - -loadJQuery - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - When active, jQuery will be loaded. - - -includeCssFiles - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Using addCssFile will only allow you to bind in a single CSS asset file. - Using includeCssFiles allows you to bind multiple files. - - -includeJsFiles - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Using addJsFile will only allow you to bind in a single JavaScript asset - file. Using includeJsFiles allows you to bind multiple files. - - -addJsInlineLabels - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Each value must correspond to a key from the locallang.xml/xlf file. The - matching translation will then be available in the backend. - - -Examples -======== - -Simple ------- - -"your module content" wrapped with proper head & body tags. -Default backend CSS styles and JavaScript will be included. - -:: - - your module content - -All options ------------ - -"your module content" wrapped with proper head & body tags. Custom CSS file -:file:`EXT:your_extension/Resources/Public/Css/styles.css` and JavaScript files -:file:`EXT:your_extension/Resources/Public/JavaScript/Library1.js` and -:file:`EXT:your_extension/Resources/Public/JavaScript/Library2.js` will be -loaded, plus ExtJS and jQuery and some inline labels for usage in JS code. - -:: - - - your module content - diff --git a/Documentation/Fluid/ViewHelper/Be/Index.rst b/Documentation/Fluid/ViewHelper/Be/Index.rst deleted file mode 100644 index 5e3aaa7..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Index.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../../Includes.txt - -ViewHelpers for the TYPO3 backend -================================= - -**Contents** - -.. toctree:: - :titlesonly: - - Buttons/Index - Menus/Index - Security/Index - Widget/Index - Container - InfoBox - PageInfo - PagePath - PageRenderer - TableList diff --git a/Documentation/Fluid/ViewHelper/Be/InfoBox.rst b/Documentation/Fluid/ViewHelper/Be/InfoBox.rst deleted file mode 100644 index dca03a9..0000000 --- a/Documentation/Fluid/ViewHelper/Be/InfoBox.rst +++ /dev/null @@ -1,87 +0,0 @@ -.. include:: ../../../Includes.txt - -============ -f:be.infobox -============ - -View helper for rendering a styled content infobox markup. - -Properties -========== - -.. rst-class:: dl-parameters - -message - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - The message of the info box, if NULL tag content is used. - - -title - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - The title of the info box. - - -state - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` integer - :sep:`|` :aspect:`Default:` InfoboxViewHelper::STATE_NOTICE - :sep:`|` - - The Infobox provides different context sensitive states that can be used to - provide an additional visual feedback to the to the user to underline the - meaning of the information. The possible states are:: - - InfoboxViewHelper::STATE_NOTICE - InfoboxViewHelper::STATE_INFO - InfoboxViewHelper::STATE_OK - InfoboxViewHelper::STATE_WARNING - InfoboxViewHelper::STATE_ERROR - - -iconName - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - The icon name from font awesome, NULL sets default icon. - - -disableIcon - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - If set to TRUE, the icon is not rendered. - - -Examples -======== - -Simple ------- - -:: - - your box content - -All options ------------ - -:: - - diff --git a/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenu.rst b/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenu.rst deleted file mode 100644 index 647d18a..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenu.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. include:: ../../../../Includes.txt - -===================== -f:be.menus.actionMenu -===================== - -This ViewHelper creates a select box. With the addition of the -`f:be.menus.actionMenuItem` and `f:be.menus.actionMenuItemGroup` ViewHelper, -you can fill this select box with options, which will lead to an appropriate -view when they are selected. - -Properties -========== - -.. rst-class:: dl-parameters - -defaultController - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Provide the name of the Controller to be used in the event that the - Controller name isn't provided in the individual ActionMenuItem ViewHelper. - As the Controller parameter is required for the ActionMenuItem ViewHelper - anyway, you're better off not setting this property in this ViewHelper. - - -Example -======= - -The following menu contains a Select element with two menu entries. Further -details of the ActionMenuItem ViewHelper are in its own documentation. - -:: - - - - - diff --git a/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItem.rst b/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItem.rst deleted file mode 100644 index 9757f96..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItem.rst +++ /dev/null @@ -1,69 +0,0 @@ -.. include:: ../../../../Includes.txt - -========================= -f:be.menus.actionMenuItem -========================= - -You can use this ViewHelper to create a menu entry for your backend module. For -this to work, the call to this ViewHelper must be placed within a -`f:be.menus.actionMenu` ViewHelper. - -Properties -========== - -.. rst-class:: dl-parameters - -label - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - The name to display in the menu - - -controller - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - The Controller in which the appropriate Action lies. - - -action - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Which Action should be called when this menu entry is selected. - - -arguments - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` empty array - :sep:`|` - - Parameters to be passed to the Action. - - -Example -======= - -The following menu contains a Select element with two menu entries. Selecting -an entry calls the indicated Action within the indicated Controller. As you can -see, you can either define the menu entry label directly, or (better) through -the use of the `f:translate` ViewHelper. - -:: - - - - - diff --git a/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItemGroup.rst b/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItemGroup.rst deleted file mode 100644 index eed1222..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Menus/ActionMenuItemGroup.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. include:: ../../../../Includes.txt - -============================== -f:be.menus.actionMenuItemGroup -============================== - -With this ViewHelper it is possible to group some `actionMenuItem` of an -`actionMenu`. - -Properties -========== - -.. rst-class:: dl-parameters - -label - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - The name of the group to display in the menu - - -Example -======= - -:: - - - - - - - - - - - - - - - diff --git a/Documentation/Fluid/ViewHelper/Be/Menus/Index.rst b/Documentation/Fluid/ViewHelper/Be/Menus/Index.rst deleted file mode 100644 index 24ab7d1..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Menus/Index.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. include:: ../../../../Includes.txt - -ViewHelper: Menus -================= - -**Contents** - -.. toctree:: - :titlesonly: - - ActionMenu - ActionMenuItem - ActionMenuItemGroup diff --git a/Documentation/Fluid/ViewHelper/Be/PageInfo.rst b/Documentation/Fluid/ViewHelper/Be/PageInfo.rst deleted file mode 100644 index d988c0c..0000000 --- a/Documentation/Fluid/ViewHelper/Be/PageInfo.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../../Includes.txt - -f:be.pageInfo -============= - -This ViewHelper provides the icon and the 'pid' of the current page, as known from TYPO3 backend modules. - -Properties ----------- - -This ViewHelper doesn't accept any properties. - -Example -------- - -Page info icon with context menu. - -:: - - diff --git a/Documentation/Fluid/ViewHelper/Be/PagePath.rst b/Documentation/Fluid/ViewHelper/Be/PagePath.rst deleted file mode 100644 index 6033b7b..0000000 --- a/Documentation/Fluid/ViewHelper/Be/PagePath.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. include:: ../../../Includes.txt - -f:be.pagePath -============= - -This ViewHelper displays the path to the currently selected page. This information is most useful in large sites, when -a page is most likely to be found via a search request. In this case, it's often difficult for the site user to orient -themselves and recognize where the current page sits in the page structure. - -Properties ----------- - -This ViewHelper doesn't accept any properties. - -Example -------- - -Current page path, prefixed with "Path:" and wrapped in a span with the class "typo3-docheader-pagePath". - -:: - - diff --git a/Documentation/Fluid/ViewHelper/Be/PageRenderer.rst b/Documentation/Fluid/ViewHelper/Be/PageRenderer.rst deleted file mode 100644 index bf64af4..0000000 --- a/Documentation/Fluid/ViewHelper/Be/PageRenderer.rst +++ /dev/null @@ -1,139 +0,0 @@ -.. include:: ../../../Includes.txt - -================= -f:be.pageRenderer -================= - -The first question you should ask yourself is whether you want to build something using the existing TYPO3 interface, or -build something completely bespoke. If you're making a bespoke interface, then you don't need this ViewHelper at all. -In this event, bind your own JavaScript and CSS assets yourself. - -However, if you want to build Extbase modules using the standard TYPO3 interface, thereby providing a close integration and -compatibility with other modules, then use this ViewHelper. In essence, you only need to use two rows of code and around -ten properties. - -Properties -========== - -.. rst-class:: dl-parameters - -pageTitle - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - 'title' tag of the module. Not required by default, as BE modules are shown - in a frame. - - -loadExtJs - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - Specifies whether to load ExtJS library. This option will be removed in - TYPO3 v9. - - -loadExtJsTheme - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` true - :sep:`|` - - Whether to load ExtJS "grey" theme. This option will be removed in TYPO3 v9. - - -enableExtJsDebug - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - If set to TRUE, the debug version of ExtJS is loaded. Use this for - development only. This option will be removed in TYPO3 v9. - - -loadJQuery - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - Whether to load jQuery library. This option will be removed in TYPO3 v9. - - -includeCssFiles - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - List of custom CSS files to be loaded. - - -includeJsFiles - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - List of custom JavaScript files to be loaded. - - -addJsInlineLabels - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Custom labels to add to JavaScript inline labels. - - -includeRequireJsModules - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - List of RequireJS modules to be loaded. - - -jQueryNamespace - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - Store the jQuery object in a specific namespace. This option will be removed - in TYPO3 v9. - - -Examples -======== - -All options ------------ - -Custom CSS file EXT:your_extension/Resources/Public/Css/styles.css and JavaScript files -EXT:your_extension/Resources/Public/JavaScript/Library1.js and EXT:your_extension/Resources/Public/JavaScript/Library2.js -will be loaded, plus ExtJS and jQuery and some inline labels for usage in JS code. - -:: - - - - diff --git a/Documentation/Fluid/ViewHelper/Be/Security/IfAuthenticated.rst b/Documentation/Fluid/ViewHelper/Be/Security/IfAuthenticated.rst deleted file mode 100644 index 806ec4d..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Security/IfAuthenticated.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. include:: ../../../../Includes.txt - -============================= -f:be.security.ifAuthenticated -============================= - -This ViewHelper checks to see whether the current page visitor (backend user) -is authenticated or not. According to the result of the check, the content of -the subsidiary `f:then` or `f:else` ViewHelper will be parsed. - -This feature is predominantly used in the front end of the website: you can -check whether the website visitor is currently authenticated as a backend user. -A good example of a possible use case is for a front end editing tool, which -should only be made available to a validated, logged-in backend user. - -Properties -========== - -This ViewHelper doesn't accept any properties. - - -Examples -======== - -IF->THEN->ELSE --------------- - -:: - - - - You have permission to edit this content. - - - You must log in if you want to edit this content. - - - - -Status-dependent content ------------------------- - -:: - - - You are seeing this message because you are - logged in as a backend user. - diff --git a/Documentation/Fluid/ViewHelper/Be/Security/IfHasRole.rst b/Documentation/Fluid/ViewHelper/Be/Security/IfHasRole.rst deleted file mode 100644 index efacb7f..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Security/IfHasRole.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. include:: ../../../../Includes.txt - -======================= -f:be.security.ifHasRole -======================= - -This ViewHelper checks to see whether a logged-in backend user has been -assigned the indicated role, through use of a user group. The general use is -the same as with the `f:if` ViewHelper: if the check is true, then the code -within the subsidiary `f:then` ViewHelper will be parsed. If not, then the -content of the optional `f:else` ViewHelper will be parsed. - -Properties -========== - -.. rst-class:: dl-parameters - -role - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Either the (case-sensitive) user group name or (preferentially) the user - group UID. - - -Examples -======== - -IF->THEN->ELSE --------------- - -:: - - - - You have permission to edit this content. - - - Only backend users with administration rights - may edit this content. - - - - -Status-dependent content ------------------------- - -:: - - - Welcome, Administrator. - diff --git a/Documentation/Fluid/ViewHelper/Be/Security/Index.rst b/Documentation/Fluid/ViewHelper/Be/Security/Index.rst deleted file mode 100644 index f333e76..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Security/Index.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. include:: ../../../../Includes.txt - -==================== -ViewHelper: Security -==================== - -**Contents** - -.. toctree:: - :titlesonly: - - IfAuthenticated - IfHasRole diff --git a/Documentation/Fluid/ViewHelper/Be/TableList.rst b/Documentation/Fluid/ViewHelper/Be/TableList.rst deleted file mode 100644 index 6f5dd90..0000000 --- a/Documentation/Fluid/ViewHelper/Be/TableList.rst +++ /dev/null @@ -1,187 +0,0 @@ -.. include:: ../../../Includes.txt - -============== -f:be.tableList -============== - -A very useful ViewHelper. We can use the familiar view from the Web->List -module and configure it for our own purposes. - -Properties -========== - - -.. rst-class:: dl-parameters - -tableName - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - The name of the database table. - -fieldList - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` null - :sep:`|` - - List of fields to be displayed. If empty, only the title column (configured - in :php:` $TCA[$tableName]['ctrl']['title']`) is shown. - - -storagePid - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` integer - :sep:`|` :aspect:`Default:` null - :sep:`|` - - By default, records are fetched from the storage PID configured in - persistence.storagePid. With this argument, the storage PID can be - overwritten. - - -levels - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` integer - :sep:`|` :aspect:`Default:` 0 - :sep:`|` - - Corresponds to the level selector of the TYPO3 list module. By default only - records from the current storagePid are fetched. - - -filter - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - Corresponds to the "Search String" textbox of the TYPO3 list module. If not - empty, only records matching the string will be fetched. - - -recordsPerPage - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` integer - :sep:`|` :aspect:`Default:` ... \| 100 - :sep:`|` - - The amount of records to be displayed at once. Defaults to - :php:`$TCA[$tableName]['interface']['maxSingleDBListItems']` or (if that's - not set) to 100. - - -sortField - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - The table field by which the applicable records should be sorted. - - -sortDescending - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - If set to TRUE, the records will be sorted in descending order. - - -readOnly - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - If set to TRUE, the edit icons won't be shown. Otherwise edit icons will be - shown, if the current BE user has edit rights for the specified table! - - -enableClickMenu - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` true - :sep:`|` - - When active, the context menu will be activated for the view. - - -clickTitleMode - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - A choice of “edit”, “info” or “show”. The mode “show” only applies to - records from the “pages” or ”tt_content” types. Under usual circumstances, - you need to either work using the content menu or an alternative module. - Now, clicking on the record title will be sufficient. - - -Minimal example -=============== - -The following example shows a table containing the header and bodytext fields -of matching tt_content records. The table will only be displayed if there are -records of this type available in the page defined by storagePid. - -All backend modules - at least, those created using the Extension Builder - -come with an extension template which must be bound to the site's root page. -You can then define the page uid in the TypoScript constants as a fallback, in -the event that storagePid isn't defined. (As is the case in this example.) - -:: - - - - -Example: maximum number of records -================================== - -Although we haven't defined recordsPerPage in the following example, only 100 -of more than 150 records will be displayed within the data delivered with the -Introduction Package. This is because where the property recordsPerPage isn't -defined, the value from TCA -(:php:`$TCA[TabellenName]['interface']['maxSingleDBListItems']`) is applicable. -Where this isn't set, then the limit is set to 100. If you need to show more -than 100 records (in this example), use the property recordsPerPage. - -:: - - - - -Example: show records directly -============================== - -You normally need to switch to the Web->View module or navigate via the context -menu to see a preview of a selected record. A much easier option is to link the -title of the record in such a way that clicking on it reveals a preview. This -is where the property clickTitleMode comes into play, when it's set to “show”. -(The following example also contains an example of the use of alternating -background colours.) - -:: - - diff --git a/Documentation/Fluid/ViewHelper/Be/Widget/Index.rst b/Documentation/Fluid/ViewHelper/Be/Widget/Index.rst deleted file mode 100644 index b86561a..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Widget/Index.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. include:: ../../../../Includes.txt - -================== -ViewHelper: Widget -================== - -**Contents** - -.. toctree:: - :titlesonly: - - Paginate diff --git a/Documentation/Fluid/ViewHelper/Be/Widget/Paginate.rst b/Documentation/Fluid/ViewHelper/Be/Widget/Paginate.rst deleted file mode 100644 index 845d852..0000000 --- a/Documentation/Fluid/ViewHelper/Be/Widget/Paginate.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. include:: ../../../../Includes.txt - -==================== -f:be.widget.paginate -==================== - -This ViewHelper allows you to split a large amount of data into chunks across -multiple pages, to define the number of records on each page, and to define -where and how the navigation between the pages should appear. - -Properties -========== - -.. rst-class:: dl-parameters - -objects - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` QueryResultInterface - :sep:`|` - - Not the result objects themselves, but the object from the Repository which - contains the data needed to reproduce the SQL command. The SQL statement - object and the SQL command aren't allowed here, as Extbase won't be able to - work out how to implement the LIMIT attribute which controls the division of - the data into paginated results. - - -as - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` - - The name of the variable in which the reduced object is made available. - - -configuration - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` See "Configuration of the page navigation" - :sep:`|` - - Configuration of the page navigation - - -Configuration of the page navigation -==================================== - -.. rst-class:: dl-parameters - -itemsPerPage - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` QueryResultInterface - :sep:`|` :aspect:`Default:` 10 - :sep:`|` - - The number of objects which may be associated with each page in the series. - - -insertAbove - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - Display the page navigation above the results. - - -insertBelow - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` true - :sep:`|` - - Display the page navigation below the results. - - -recordsLabel - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - An optional text to replace the standard descriptor “Records 1 - xy”. - diff --git a/Documentation/Fluid/ViewHelper/CObject.rst b/Documentation/Fluid/ViewHelper/CObject.rst deleted file mode 100644 index 6cd314b..0000000 --- a/Documentation/Fluid/ViewHelper/CObject.rst +++ /dev/null @@ -1,138 +0,0 @@ -.. include:: ../../Includes.txt - -f:cObject -========= - -This ViewHelper provides a connection to TypoScript. Pass in a TypoScript object path (lib.*) and let TypoScript -do the work. - -Properties ----------- - -typoscriptObjectPath -~~~~~~~~~~~~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The TypoScript object path - -:aspect:`Default value` - -:aspect:`Mandatory` - Yes - -data -~~~~ -:aspect:`Variable type` - Mixed - -:aspect:`Description` - Iterable variable containing values to use inside the object - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -currentValueKey -~~~~~~~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Key of the value mapped as current in the data. It will be used when using :ts:`current=1` - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - - -Simple example --------------- - -**TypoScript** - -:: - - lib.fluidText = TEXT - lib.fluidText { - value = Text from TypoScript - } - -**Fluid template** - -:: - -

- -**Output** - -:: - -

Text from TypoScript

- -Example for a localized date value ----------------------------------- - -The `f:format.date` ViewHelper works with the PHP function `date()`, so it can only output English month names. It would -be better if we could use `strftime`: TypoScript provides dates formatted using `strftime`. Here's an example, using the -current date and a German date format. - -**TypoScript** - -:: - - lib.formattedDate = TEXT - lib.formattedDate { - current = 1 - strftime = %d. %B %Y - } - -**Fluid template** - -:: - -

{address.dayOfBirth}

- -**Output** - -:: - -

17. Januar 2013

- -Example with an array or object -------------------------------- - -**TypoScript** - -:: - - lib.address = COA - lib.address { - 10 = TEXT - 10.value.current = 1 - 10.value.wrap =

First name: |

- 20 = TEXT - 20.value.dataWrap =

Full name: {field: firstName} {field: lastName} - } - -**Fluid template** - -:: - - - -**Output** - -:: - -

First name: Stefan

Full name: Stefan Froemken

- -.. tip:: - - As explained above, you can use currentValueKey to define which value should be provided using current=1. You can - access other values from the array using "field", as per the example. diff --git a/Documentation/Fluid/ViewHelper/Case.rst b/Documentation/Fluid/ViewHelper/Case.rst deleted file mode 100644 index 9874795..0000000 --- a/Documentation/Fluid/ViewHelper/Case.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. include:: ../../Includes.txt - -====== -f:case -====== - -This ViewHelper is part of the use case for `f:switch`. Where the value of -this tag matches the value in the `f:switch` tag, the content of this tag -will be rendered and output. - -Properties -========== - -Exclusive properties of this ViewHelper: - - -value ------ - -:aspect:`Variable type` - Mixed - -:aspect:`Description` - The value against which the value from the `f:switch` ViewHelper should be compared. - -:aspect:`Mandatory` - Yes - - -Example -======= - -See the example for the :ref:`viewhelper 'switch' `. - - -Deprecation -=========== - -The usage of this ViewHelper for the default case in the following manner -is deprecated and will be removed in TYPO3 v9. Use `DefaultCaseViewHelper` instead. - -.. highlight:: xml - -Old, deprecated:: - - Foo - -New:: - - Foo diff --git a/Documentation/Fluid/ViewHelper/Comment.rst b/Documentation/Fluid/ViewHelper/Comment.rst deleted file mode 100644 index d4f23a5..0000000 --- a/Documentation/Fluid/ViewHelper/Comment.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. include:: ../../Includes.txt - -f:comment -========= - -Everything inside an `f:comment` ViewHelper will be removed. ViewHelpers within an `f:comment` block will not be executed. -This ViewHelper is most useful when debugging a website: for example, you can temporarily wrap a `f:for` loop with an -`f:comment` ViewHelper to stop it from being executed. - -Properties ----------- - -This ViewHelper has no properties. - -Example -------- - -:: - - -

This text will not be displayed

-

My name is: {address.firstName}

-
-

{address.firstName} lives in city xyz

- This text was made by {address.firstName} and will be displayed but not processed.

]]> - -**Output** - -:: - -

Stefan lives in city xyz

-

This text was made by {address.firstName} and will be displayed but not processed.

- -.. tip:: - - The last row in this example is a special case. By using CDATA notation, you can stop the processing of variable - placeholders from being executed. The text will be output, but the placeholder {address.firstName} won't be - replaced. This is most common when working with JavaScript in your template, where you may want to output a - string containing curly quotes. diff --git a/Documentation/Fluid/ViewHelper/Count.rst b/Documentation/Fluid/ViewHelper/Count.rst deleted file mode 100644 index ac298d3..0000000 --- a/Documentation/Fluid/ViewHelper/Count.rst +++ /dev/null @@ -1,81 +0,0 @@ -.. include:: ../../Includes.txt - -f:count -======= - -This ViewHelper counts the elements in the referenced object or array. - -Properties ----------- - -subject -~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - Provide the array or object containing the entries to be counted. If this value is empty, the ViewHelper - will attempt to interpret the content between the tags as an array, and then count its entries. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - - - -.. highlight:: html - - -Example: array as renderChildren --------------------------------- - -:: - -

There are {addresses} records in our database

- -**Output** - -:: - -

There are 23 records in our database

- -Example: array by subject -------------------------- - -:: - -

There are records in our database

- -**Output** - -:: - -

There are 23 records in our database

- -Example: inline notation ------------------------- - -:: - -

There are {f:count(subject: addresses)} records in our database

- -**Output** - -:: - -

There are 23 records in our database

- -Example: better inline notation -------------------------------- - -:: - -

There are {addresses -> f:count()} records in our database

- -**Output** - -:: - -

There are 23 records in our database

diff --git a/Documentation/Fluid/ViewHelper/Cycle.rst b/Documentation/Fluid/ViewHelper/Cycle.rst deleted file mode 100644 index 8aa244f..0000000 --- a/Documentation/Fluid/ViewHelper/Cycle.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. include:: ../../Includes.txt - -f:cycle -======= - -You can improve the output of the `f:for` ViewHelper using `f:cycle`. For example, you can add odd/even classes to a -table row. While you can reach the first and last elements using `f:for`, you'll need to use `f:cycle` to reach any of -the other entries. - -Properties ----------- - -values -~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - Input in array notation. (See example for details.) - -:aspect:`Default value` - -:aspect:`Mandatory` - Yes - -as -~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The name of the new variable for subsequent use in your template. - -:aspect:`Default value` - -:aspect:`Mandatory` - Yes - -Beispiel --------- - -:: - - - - - - - - - - -
{address.firstName}{address.lastName}
- -**Output** - -:: - - - - - - - - - - - - - - - - - - -
StefanFroemken
BastianKrump
ThorstenPloemi
MaxMustermann
diff --git a/Documentation/Fluid/ViewHelper/Debug.rst b/Documentation/Fluid/ViewHelper/Debug.rst deleted file mode 100644 index 0bb28ee..0000000 --- a/Documentation/Fluid/ViewHelper/Debug.rst +++ /dev/null @@ -1,140 +0,0 @@ -.. include:: ../../Includes.txt - -f:debug -======= - -This ViewHelper allows you to output the value of a variable or a set of variables (e.g. array) to the screen. This can -be helpful when debugging, to make sure that the value of the variable is as you would expect it to be. Individual nested -array or object attributes can be individually expanded. - -Properties ----------- - -title -~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - You can use this property to give the debug output a title, so that it can more readily be identified. - (For example, if you're going to output multiple debug blocks during the same request.) - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -maxDepth -~~~~~~~~ -:aspect:`Variable type` - Integer - -:aspect:`Description` - Extremely large arrays or deeply-nested objects can lead to TYPO3 being unable to build a complete view - of the entire structure. By using the 'maxDepth' property, you can adjust the depth of the output to a - maximum of 8 levels, in order to get around this problem. You can fine-tune the value of the property - according to the performance of the server and the maximum processing time available. - -:aspect:`Default value` - 8 - -:aspect:`Mandatory` - No - -plainText -~~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - If you're using the CLI mode, using this property will switch the output into plain text mode. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - No - -ansiColors -~~~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - Some shell environments allow syntax highlighting - by activating the ansiColors mode, the debug - output will be extended with control characters, so that the shell can implement highlighting. This - option only works when 'plainText' mode is active. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - No - -inline -~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - The debug output usually appears at the top of the page output. By setting this property, the output - will appear at the point where the `f:debug` ViewHelper is inserted in the code. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - No - -blacklistedClassNames -~~~~~~~~~~~~~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - The use of this property highlights specific classes. It currently (?) doesn't work when Namespaces - are in use. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -blacklistedPropertyNames -~~~~~~~~~~~~~~~~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - The use of this property highlights specific object properties. It currently (?) doesn't work when - Namespaces are in use. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -.. tip:: - - Debugging aggregate root objects in earlier versions often lead to problems. Many objects are deeply nested or even - built recursively. This lead in many instances to the system exceeding the memory_limit or max_execution_time in - php.ini. In such cases, it's recommended to only debug a part of the object in question, or to first convert it to - an array. - -Examples --------- - -:: - - {customers} - -:: - - {customers -> f:debug(title: "Results of customers query")} - -:: - - {f:debug(subject: customers, title: "Results of customers query")} diff --git a/Documentation/Fluid/ViewHelper/Debug/Index.rst b/Documentation/Fluid/ViewHelper/Debug/Index.rst deleted file mode 100644 index 230cf8a..0000000 --- a/Documentation/Fluid/ViewHelper/Debug/Index.rst +++ /dev/null @@ -1,107 +0,0 @@ -.. include:: ../../../Includes.txt - -ViewHelper: Debug -================= - -This ViewHelper generates a HTML dump of the tagged variable. - -Properties ----------- - -title -~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - An optional custom title for the debug output. - -:aspect:`Default value` - -:aspect:`Mandatory` - No - -maxDepth -~~~~~~~~ -:aspect:`Variable type` - Integer - -:aspect:`Description` - Sets the max recursion depth of the dump. - De- or increase the number according to your needs and memory limit. - -:aspect:`Default value` - 8 - -:aspect:`Mandatory` - No - -plainText -~~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - If TRUE, the dump is in plain text, if FALSE the debug output is in HTML format. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - No - -ansiColors -~~~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - If TRUE, ANSI color codes are added to the plaintext output, if FALSE the - plaintext debug output is not colored. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - No - -inline -~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - If TRUE, the dump is rendered at the position of the tag. - If FALSE, the dump is displayed at the top of the page. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - No - -blacklistedClassNames -~~~~~~~~~~~~~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - An array of class names (RegEx) to be filtered. - -:aspect:`Default value` - -:aspect:`Mandatory` - No - -blacklistedPropertyNames -~~~~~~~~~~~~~~~~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - An array of property names and/or array keys (RegEx) to be filtered. - -:aspect:`Default value` - -:aspect:`Mandatory` - No diff --git a/Documentation/Fluid/ViewHelper/Debug/Render.rst b/Documentation/Fluid/ViewHelper/Debug/Render.rst deleted file mode 100644 index aa72d4d..0000000 --- a/Documentation/Fluid/ViewHelper/Debug/Render.rst +++ /dev/null @@ -1,97 +0,0 @@ -.. include:: ../../../Includes.txt - -f:debug.render -============== - -This ViewHelper contains a debuggable version of f:render. It performs the same rendering operation but wraps the output -with HTML that can be inspected with the admin panel in FE. - -This ViewHelper replaces `f:render` when the admin panel decides (see ViewHelperResolver class). It is also possible to -use explicitly by using `f:debug.render` instead of the normal `f:render` statement. - -Properties ----------- - -section -~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Section to render - combine with partial to render section in partial - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -partial -~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Partial to render, with or without section - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -arguments -~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - Array of variables to be transferred. Use {_all} for all variables - -:aspect:`Default value` - [] - -:aspect:`Mandatory` - No - -optional -~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - If TRUE, considers the *section* optional. Partial never is. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - No - -default -~~~~~~~ -:aspect:`Variable type` - Mixed - -:aspect:`Description` - Value (usually string) to be displayed if the section or partial does not exist - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -contentAs -~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - If used, renders the child content and adds it as a template variable with this name for use in the partial/section - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No diff --git a/Documentation/Fluid/ViewHelper/DefaultCase.rst b/Documentation/Fluid/ViewHelper/DefaultCase.rst deleted file mode 100644 index a467aa3..0000000 --- a/Documentation/Fluid/ViewHelper/DefaultCase.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. include:: ../../Includes.txt - -f:defaultCase -============= - -A view helper which specifies the "default" case when used within the SwitchViewHelper. -Returns the contents of this view helper if no other "Case" view helper of the surrounding switch view helper matches. - -Properties ----------- - -This ViewHelper has no properties. - -Example -------- - -:: - - - Hello Mr. {person.lastName} - Hello Mrs. {person.lastName} - Hello Miss {person.lastName} - A person with no specified gender - diff --git a/Documentation/Fluid/ViewHelper/Else.rst b/Documentation/Fluid/ViewHelper/Else.rst deleted file mode 100644 index 8990c9b..0000000 --- a/Documentation/Fluid/ViewHelper/Else.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. include:: ../../Includes.txt - -f:else -====== - -The use of this ViewHelper is explained in the documentation for `f:if`, as it can only be used within that ViewHelper. - -Properties ----------- - -This ViewHelper has no properties. diff --git a/Documentation/Fluid/ViewHelper/Escape.rst b/Documentation/Fluid/ViewHelper/Escape.rst deleted file mode 100644 index a131ab4..0000000 --- a/Documentation/Fluid/ViewHelper/Escape.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. include:: ../../Includes.txt - -f:escape -======== - -This ViewHelper has been deprecated since Extbase 1.4.0 and it was removed in Extbase version 1.6.0. Please use -the `f:format.*` ViewHelper instead. \ No newline at end of file diff --git a/Documentation/Fluid/ViewHelper/FlashMessages.rst b/Documentation/Fluid/ViewHelper/FlashMessages.rst deleted file mode 100644 index abe28cb..0000000 --- a/Documentation/Fluid/ViewHelper/FlashMessages.rst +++ /dev/null @@ -1,84 +0,0 @@ -.. highlight:: html - -.. _vh-flash-messages: - -=============== -f:flashMessages -=============== - -This viewhelper is for use in extensions you program yourself, as it is -intended to output error messages which are shown to the website user. For -example, a user has forgotten to fill out a required field and the relevant -Action method is connected to a server-side validator. The input is passed to -an errorAction method, which collates each error messages as a 'Flash Message' -in turn, then outputs them all as a “bundle” at the place where you have -inserted this viewhelper. - - -Usage -===== - -Minimal usage: - :: - - - - -All parameters: - :: - - - - -Parameters -========== - -All the :ref:`universal tag attributes ` - -plus - -.. rst-class:: dl-parameters - -queueIdentifier - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - Flash-message queue to use. - - -as - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` null - :sep:`|` - - The name of the current flashMessage variable for rendering inside. - - -Examples -======== - -Example: Standard Usage ------------------------ - -:: - - - -Example: Self Rendered Template -------------------------------- - -:: - - - -
- - {flashMessage.title}
-
-

{flashMessage.message -> f:format.html()}

-
-
-
diff --git a/Documentation/Fluid/ViewHelper/For.rst b/Documentation/Fluid/ViewHelper/For.rst deleted file mode 100644 index 24dc535..0000000 --- a/Documentation/Fluid/ViewHelper/For.rst +++ /dev/null @@ -1,242 +0,0 @@ -.. include:: ../../Includes.txt -.. highlight:: html - -===== -f:for -===== - -The `f:for` viewhelper is the preferred viewhelper to form loops and lists. - - -Usage -===== - -Minimal usage: - :: - - - ... - - - -All parameters: - :: - - - ... - - - -Parameters -========== - -.. rst-class:: dl-parameters - -each - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` array - :sep:`|` :aspect:`Default:` NULL - :sep:`|` - - The **array** or **object** to be iterated. - -as - :sep:`|` :aspect:`Condition:` required - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` NULL - :sep:`|` - - The **name of the variable** which contains the value - for the current loop iteration. - -key - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` empty string - :sep:`|` - - The **name of the variable** that contains the key - of the current loop iteration. - -reverse - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` boolean - :sep:`|` :aspect:`Default:` false - :sep:`|` - - A **boolean flag**. Use *true* to reverse the sequence. - - *Examples of true:* `reverse="true"`, `reverse="1"`, `reverse="abc"`. - - *Examples of false:* `reverse="false"`, `reverse="0"`, `reverse=""`. - -iteration - :sep:`|` :aspect:`Condition:` optional - :sep:`|` :aspect:`Type:` string - :sep:`|` :aspect:`Default:` NULL - :sep:`|` - - The **name of a variable** that holds the iteration data of each loop. - - *Example:* `iteration="iterator"`. Iteration data can then be accessed - like `{iterator.index}`, `{iterator.cycle}`, `{iterator.total}`, - `{iterator.isEven}`, `{iterator.isOdd}`, `{iterator.isFirst}`, `{iterator.isLast}`. - - *Attention:* `iterator.cycle` is just a simple counter. It has nothing to - do with the viewhelper `f:cycle`. - -Examples -======== - -Example: Exhaustive usage -------------------------- - -1. Page typoscript template: - - .. code-block:: typoscript - - page = PAGE - page { - 10 = FLUIDTEMPLATE - 10.file = fileadmin/FluidForLoopExample.html - } - -2. Fluid html template in file :file:`fileadmin/FluidForLoopExample.html`:: - -

FluidForLoopExample.html

-
- - -

Legend:
-
01 = employee.first_name -
02 = employee.city -
03 = itemkey -
04 = iterator.index -
05 = iterator.cycle -
06 = iterator.isFirst -
07 = iterator.isLast -
08 = iterator.isOdd -
09 = iterator.isEven -
10 = iterator.total -

- -

reverse = "false"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01020304050607080910
{employee.first_name}{employee.city} {itemkey} {iterator.index} {iterator.cycle} {iterator.isFirst} {iterator.isLast} {iterator.isOdd} {iterator.isEven} {iterator.total}
-
- -3. Result for `reverse="false"`: - - .. figure:: For.rst.001.png - :class: with-shadow - - With `reverse="false"` items appear in normal (default) order. - -4. Result for `reverse="true"`: - - .. figure:: For.rst.002.png - :class: with-shadow - - With `reverse="true"` items appear in reversed order. Everything else - remains. - - -Example: Minimum usage ----------------------- - -:: - - - - - - - - - -
{employee.first_name}{employee.city}
-
- -This creates a new table row for each of the entries in the 'employee' array. - - -Example: Iterator usage ------------------------ - -:: - - - - - - - - - - - - - {employee.first_name} - {employee.city} - - - - - - - -
List of employees
Iteration beginning with 0: {iterator.index}Iteration beginning with 1: {iterator.cycle}
Number of employees: {iterator.total}
-
diff --git a/Documentation/Fluid/ViewHelper/For.rst.001.png b/Documentation/Fluid/ViewHelper/For.rst.001.png deleted file mode 100644 index f22d7eafa7f8a48f6a0e6c2f32f406e4f62101e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20601 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 diff --git a/Documentation/Fluid/ViewHelper/For.rst.002.png b/Documentation/Fluid/ViewHelper/For.rst.002.png deleted file mode 100644 index b0e2b9f3fd6dbc1212603caef80f9ff643e86e3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20767 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

sKYg~Siqj#yWTB~A3zb%VVvliZ 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 po(Y^yN~*` - -Global properties of this ViewHelper -#################################### - -enctype -~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The format with which the form data should be encoded and submitted. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -method -~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Transfer method - GET or POST. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -name -~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The HTML 'name' attribute of the form. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -onreset -~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The JavaScript to be executed when the reset button in the form is clicked. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -onsubmit -~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The JavaScript to be executed when the submit button in the form is clicked. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -Exclusive properties of this ViewHelper -####################################### - -action -~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The action method to be called when the form is submitted. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -arguments -~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - Additional variables should be sent with each form submission. - -:aspect:`Default value` - Empty array - -:aspect:`Mandatory` - Yes - -controller -~~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - If the action method isn't in the same Controller, then you'll need to specify the appropriate Controller. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -extensionName -~~~~~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - If the form submission should be handled by a different extension, this property contains the name of - this extension, without the tx\_ prefix and without underline characters. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -pluginName -~~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - If the form submission should be handled by a different plugin, this property should contain the plugin name. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -pageUid -~~~~~~~ -:aspect:`Variable type` - Integer - -:aspect:`Description` - Define the page UID if the form submission should be sent to a different page. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -object -~~~~~~ -:aspect:`Variable type` - Mixed - -:aspect:`Description` - Contains an object with properties which mirror the input fields in the form. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -pageType -~~~~~~~~ -:aspect:`Variable type` - Integer - -:aspect:`Description` - Use the pageType property to define a non-standard page type to handle the form submission. For example, - where the form submission takes place via AJAX. - -:aspect:`Default value` - 0 - -:aspect:`Mandatory` - Yes - -noCache -~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - Can be used to completely deactivate the page cache on the target page. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - Yes - -noCacheHash -~~~~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - If this property is activated, the link to the target page won't contain a cHash parameter. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - Yes - -section -~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Define an anchor on the target page, if the target page contains a large amount of content. The browser - will scroll to the indicated anchor. - -:aspect:`Default value` - Empty string - -:aspect:`Mandatory` - Yes - -format -~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The required data format to be delivered on the target page - for example, “xml”. This property only takes - effect if 'actionUri' isn't set. - -:aspect:`Default value` - Empty string - -:aspect:`Mandatory` - Yes - -additionalParams -~~~~~~~~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - Additional variables for the target page. Contrary to 'arguments', these variables won't be prefixed - with the extension name. This property only takes effect if 'actionUri' isn't set. - -:aspect:`Default value` - Empty array - -:aspect:`Mandatory` - Yes - -absolute -~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - Upon activation, the domain name and full page path will be prefixed to the form action. This property - only takes effect if 'actionUri' isn't set. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - Yes - -addQueryString -~~~~~~~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - This property defines whether query parameters on the page containing the form will be passed on to the - target page. This property only takes effect if 'actionUri' isn't set. - -:aspect:`Default value` - FALSE - -:aspect:`Mandatory` - Yes - -argumentsToBeExcludedFromQueryString -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -:aspect:`Variable type` - Array - -:aspect:`Description` - If 'addQueryString' is activated, you can use this property to exclude specific query parameters. This - property only takes effect if 'actionUri' isn't set. - -:aspect:`Default value` - Empty array - -:aspect:`Mandatory` - Yes - -fieldNamePrefix -~~~~~~~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Use this property if you want to use an alternative string to prefix the form fields. Mainly for use - if the form submission is handled by a different extension. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -actionUri -~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Define a specific form action URL. Using this option disables many of the other properties (above). - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - -objectName -~~~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - An object (Model) name, into which the submitted form data will be saved. This allows the data to be - validated once in the Model, instead of in every individual action method. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - Yes - - -Example --------- - -:: - - - - - -…will create (approximately) the following output in the form page HTML. - -:: - -

-
- - - - -
- -
- -If you take a close look at this generated code, you can see the security elements. Fluid builds a hidden section within -the form, which contains a few values: amongst them, an '_hmac' value, which contains a reference to all allowed form -fields. This means that in the event of a website attack, in which specific fields are added or omitted, Extbase can -compare the form data with the _hmac value to see that the form submission is invalid, and stop processing the request -immediately with an error message. - -In the earlier example, we've set the object name “newFeUser”. As you can see, this value is prepended to each field. The -advantage of this is that all of you form fields are bundled together into an array for the target page. Your action can -take this array and port it into a Model object, during which the array entries are validated. (Assuming that the Model -contains the appropriate validation definitions.) The form data will only be accepted into the Model if it can be -validated, after which a simple, single command could store the data in the database. \ No newline at end of file diff --git a/Documentation/Fluid/ViewHelper/Form/AbstractForm.rst b/Documentation/Fluid/ViewHelper/Form/AbstractForm.rst deleted file mode 100644 index 9b5ebe8..0000000 --- a/Documentation/Fluid/ViewHelper/Form/AbstractForm.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.abstractForm -=================== - -Abstract Form View Helper. Bundles functionality related to direct property access of objects in other Form ViewHelpers. - -If you set the "property" attribute to the name of the property to resolve from the object, this class will -automatically set the name and value of a form element. diff --git a/Documentation/Fluid/ViewHelper/Form/AbstractFormField.rst b/Documentation/Fluid/ViewHelper/Form/AbstractFormField.rst deleted file mode 100644 index 806690d..0000000 --- a/Documentation/Fluid/ViewHelper/Form/AbstractFormField.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.abstractFormField -======================== - -Abstract Form Field View Helper. Bundles functionality related to direct property access of objects in other Form ViewHelpers. - -If you set the "property" attribute to the name of the property to resolve from the object, this class will -automatically set the name and value of a form element. - -Properties ----------- - -name -~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Name of input tag - -:aspect:`Default value` - Empty string - -:aspect:`Mandatory` - No - -value -~~~~~ -:aspect:`Variable type` - Mixed - -:aspect:`Description` - Value of input tag - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -property -~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Name of Object Property. If used in conjunction with , "name" and "value" properties will be ignored. - -:aspect:`Default value` - Empty string - -:aspect:`Mandatory` - No diff --git a/Documentation/Fluid/ViewHelper/Form/Button.rst b/Documentation/Fluid/ViewHelper/Form/Button.rst deleted file mode 100644 index ebc0891..0000000 --- a/Documentation/Fluid/ViewHelper/Form/Button.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.button -============= - -This ViewHelper creates a button element in a form, for example the one which allows the form to be submitted. - -Properties ----------- - -All the :ref:`universal tag attributes ` - -All the :ref:`universal form field attributes ` - -Exclusive properties for the HTML-Element -######################################### - -type -~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - The type of button to create. Allowed options are "button", "reset" and "submit" - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -Examples --------- - -:: - - Send Mail - - -:: - - Cancel diff --git a/Documentation/Fluid/ViewHelper/Form/Checkbox.rst b/Documentation/Fluid/ViewHelper/Form/Checkbox.rst deleted file mode 100644 index 09cab14..0000000 --- a/Documentation/Fluid/ViewHelper/Form/Checkbox.rst +++ /dev/null @@ -1,205 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.checkbox -=============== - -This ViewHelper creates a checkbox element for use in an HTML form. - -Properties ----------- - -All the :ref:`universal tag attributes ` - -All the :ref:`universal form field attributes ` - -Exclusive properties for the HTML-Element -######################################### - -disabled -~~~~~~~~ -:aspect:`Variable type` - String - -:aspect:`Description` - Allows the checkbox to appear in an inactive (non-responsive) state. - -:aspect:`Default value` - -:aspect:`Mandatory` - No - -Exclusive properties of this ViewHelper -####################################### - -checked -~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - When active, the checkbox will appear in a checked (active) state. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -multiple -~~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - Specifies whether the checkbox belongs to a grouped set of multiple checkboxes. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - - - -Workaround for an invalid Form object -------------------------------------- - -.. tip:: - - The following text was pre-existing at the time of this page's translation to English. It may no longer be - relevant in more up-to-date versions of Fluid/Extbase. - -Checkbox handling is a catastrophe in Fluid/Extbase. It took me quite a bit of time to get checkboxes working, because -their use requires an empty but available Model if they are to be bound to an object by means of a property:: - - No value found for key `Tx_Fluid_ViewHelpers_FormViewHelper->formObject` - -In order to get rid of an error message like this one, you'll need to ensure that the object isn't NULL. You'll need to -create an empty object in the relevant Action. You could achieve this with something like the following: - -:: - - /** - * action new - * - * @param $newCar - * @dontvalidate $newCar - * @return void - */ - public function newAction(\Vendor\Extkey\Domain\Model\Car $newCar = NULL) { - if ($newCar == NULL) { // workaround for fluid bug ##5636 - $newCar = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\Vendor\Extkey\Domain\Model\Car::class); - } - $this->view->assign('newCar', $newCar); - } - -The checkbox will only appear once this amendment is in place. - -Example without a property --------------------------- - -The problem with this method is that you'll have to find out yourself if the checkbox is active or not. You will need -to have already set the values in your Controller, and then apply the state by means of the `checked` attribute. Valid -values at this point are either TRUE (or 1) or FALSE (or 0). - -As this example uses a grouped set of multiple checkboxes, you'll need to add the empty square brackets to the field -name, in order to ensure that the group is maintained and so that the values are submitted as a grouped Array. - -:: - - - - - - -Example with a property ------------------------ - -If you want to avoid the problem above - you should - then bind the checkboxes to an Object property you've defined -in the encompassing `f:form` ViewHelper. Then, your code will look like this.:: - - - - - - -Somewhat more elegant, I'm sure you'll agree. - -Example of grouped checkboxes ------------------------------ - -At the present time, the extension_builder can only create individual checkboxes. This happens when you choose the -field type “Boolean”. If you want to create multiple checkboxes which act together as a group, as in the examples -above, then you'll have to move away from the boolean field type. - -This might be a good point to think about whether your code would be better served by creating a relation to a -separate table, and managing the options for the checkboxes in that table. If not - if you want to simply build a group -of checkboxes directly - then you can save the values together in a single database field. Using a grouped set of -multiple checkboxes will mean that you won't be able to edit the data in the Backend. The Backend doesn't currently -allow for a grouped set of multiple checkboxes. - -When you create your field in the extension_builder, use the field type “Text”. This creates a field in the database -which can store 65,000 individual characters. Don't forget to write the new type to the database, by means of the -Database Analyzer. - -The form will then remain as in the former examples.:: - - yellow
- brown
- blue
- - -Because you can't save an Array directly to the database, you'll have to convert the values which come from the form to -a string. For example, by using the `serialize()` function. The accompanying function `unserialize()` will convert the -values back to an Array when reading the values from the database. Each of these functions can be applied in the -appropriate “getter” and “setter” functions in your Model. :: - - /** - * @var string - */ - protected $colour; - /** - * @return array $colour - */ - public function getColour() { - return unserialize($this->colour); - } - /** - * @param array $colour - * @return void - */ - public function setColour(array $colour) { - $this->colour = serialize($colour); - } - - - -Add a constructor to the Model, too.:: - - /** - * initializes this object - * - * @param string $make - * @param string $description - * @param boolean $accident - * @param array $colour - */ - public function __construct($make = '', $description = '', $accident = false, array $colour = array()) { - $this->setMake($make); - $this->setDescription($description); - $this->setAccident($accident); - $this->setColour($colour); - } - - -Your group will only be converted to a grouped set of multiple checkboxes through the use of this constructor. Take a -look at the generated HTML code.:: - - -
-
-
- - -You can see, by the empty square brackets, that the `colour` field is a grouped set of multiple checkboxes. This also -allows users to edit existing data with no problem at all. diff --git a/Documentation/Fluid/ViewHelper/Form/Hidden.rst b/Documentation/Fluid/ViewHelper/Form/Hidden.rst deleted file mode 100644 index 6d4c9cf..0000000 --- a/Documentation/Fluid/ViewHelper/Form/Hidden.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.hidden -============= - -This ViewHelper allows you to create a hidden field in an HTML form. It renders an tag. -Such a field can be useful to provide record UIDs in the form, which the website visitor can't see but which are -essential when transmitting the form data to the web server. - -Properties ----------- - -All the :ref:`universal tag attributes ` - -All the :ref:`universal form field attributes ` - -Examples --------- - -:: - - - - -or - -:: - - diff --git a/Documentation/Fluid/ViewHelper/Form/Index.rst b/Documentation/Fluid/ViewHelper/Form/Index.rst deleted file mode 100644 index 7539c80..0000000 --- a/Documentation/Fluid/ViewHelper/Form/Index.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. include:: ../../../Includes.txt - -ViewHelper: Form -================ - -Properties ----------- - -**Table of Contents** - -.. toctree:: - :maxdepth: 5 - :titlesonly: - :glob: - - AbstractForm - AbstractFormField - Button - Checkbox - Hidden - Password - Radio - Select - Select/Index - Submit - Textarea - Textfield - Uploads - ValidationResults \ No newline at end of file diff --git a/Documentation/Fluid/ViewHelper/Form/Password.rst b/Documentation/Fluid/ViewHelper/Form/Password.rst deleted file mode 100644 index 24f8918..0000000 --- a/Documentation/Fluid/ViewHelper/Form/Password.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.password -=============== - -This ViewHelper allows you to create a field in an HTML form, whose content is optically masked by the browser. (e.g. -the value in the field is replaced by a series of star characters. - -Properties ----------- - -All the :ref:`universal tag attributes ` - -All the :ref:`universal form field attributes ` - -Examples --------- - -:: - - - - -or - -:: - - diff --git a/Documentation/Fluid/ViewHelper/Form/Radio.rst b/Documentation/Fluid/ViewHelper/Form/Radio.rst deleted file mode 100644 index 26a8cac..0000000 --- a/Documentation/Fluid/ViewHelper/Form/Radio.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.radio -============ - -This ViewHelper allows you to create a radio button element for use in an HTML form. Radio button fields are usually -used in groups, and only a single radio button in a group may be active at one time. A multiple selection - like the one -we see when using checkboxes - isn't possible with radio buttons. - -Properties ----------- - -All the :ref:`universal tag attributes ` - -All the :ref:`universal form field attributes ` - -Exclusive properties for the HTML-Element -######################################### - -checked -~~~~~~~ -:aspect:`Variable type` - Boolean - -:aspect:`Description` - When active, the radio button field will appear in a checked (active) state. - -:aspect:`Default value` - NULL - -:aspect:`Mandatory` - No - -Examples --------- - -:: - - - - - - -Preselect - -:: - - - -Bind to object property - -:: - - - - diff --git a/Documentation/Fluid/ViewHelper/Form/Select.rst b/Documentation/Fluid/ViewHelper/Form/Select.rst deleted file mode 100644 index 177cc6c..0000000 --- a/Documentation/Fluid/ViewHelper/Form/Select.rst +++ /dev/null @@ -1,208 +0,0 @@ -.. include:: ../../../Includes.txt - -f:form.select -============= - -This ViewHelper enables you to create a