.. You may want to use the usual include line. Uncomment and adjust the path. .. include:: ../Includes.txt ===================== EXT: KB Content Table ===================== :Created: 2012-07-13T02:28:36 :Changed: 2012-07-13T20:37:51 :Author: Bernhard Kraft :Email: kraftb@seicht.co.at :Info 3: :Info 4: .. _EXT-KB-Content-Table: EXT: KB Content Table ===================== Extension Key: **kb\_conttable** Copyright 2004-2012, Bernhard Kraft, This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml The content of this document is related to TYPO3 \- a GNU/GPL CMS/Framework available from www.typo3.com .. _Table-of-Contents: Table of Contents ----------------- **EXT: KB Content Table 1** **Introduction 1** What does it do? 1 **Users manual 1** Creating the content element 2 The Tabs 2 Using the Wizard 3 Selecting a template 4 The RTE Mode 5 Caching 5 Character Sets 5 **Administration 5** Table Locking 5 Cell locking 6 Action locking 7 Creating Templates 7 FAQ 8 **Installation 8** Applying the patch 8 **Configuration 8** mustache optionSplit 8 Page TS Config Configuration 9 EM Configuration 9 Fast mode 10 FAQ 10 **Known problems 10** **Intention 10** **Credits 10** **To-Do list 10** **Changelog 11** .. _Introduction: Introduction ------------ .. _What-does-it-do: What does it do? ^^^^^^^^^^^^^^^^ The KB Content Table Extensions primarily allows a User to insert a Table as an Content Element and insert Content Elements into each cell. This is what was already supported in the previous version of this extension. But the extension has been completely rewritten and many new Features got implemented. Here a short list. - Completely Flexform based - Table configuration via Flexform tabs (Locking) - Templating(Save table templates to storage folder and reuse on a user/group basis) - Normal or RTE mode (Content elements inside cells vs. Rich Text Editor fields) - Inter operablewith standard clipboard - TemplaVoilacompatible - Configuration of cell properties via new “mustache”optionSplit:) .. _Users-manual: Users manual ------------ Here you will learn how to create a new Table. Possibly select a template as basis and edit the table and it's contents. The actual editable fields can differ from installation to installation as the admincan restrict which fields you are allowed to edit. .. _Creating-the-content-element: Creating the content element ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To do this just go to the Page Module (Either the traditional or the one from Templa Voila) and click the create new content element button as you would do when creating a “Text” or “Text w. Image” content element. You will have a new option at the bottom of your normal elements replacing the default table. (This can be disabled when installing the Extension). When you selected the new multi-colored Content Table element you will get to the well known record edit screen of TYPO3. If you are not using TemplaVoila you will have to save the record in order to see the table wizard icon instead of a text area. If you use TemplaVoila the record is already created in database as soon as you see the record edit screen and the table wizard icon will be there from the beginning. If you saved the form once or used the wizard to initialize the everything you will see the Flexform containing the Table Settings and other tabs. If your are an administrator your edit area will look like this, if you are a normal user you will have less tabs: |img-1| Now you could start to enter data in the Flexform defining the settings for the starting tag. .. _The-Tabs: The Tabs ^^^^^^^^ Here is a listing what the different Tabs are for. If a Tab is visible for Users and Adminsit is explained further in the User (this) section. If it is just visible for Admins it gets described in the Administration section of this manual: .. _Table-setting: **Table setting** """"""""""""""""" **Visibility** : User & AdminThe values defined in here are used to generate the opening
tag of the resulting table. Here also the RTE mode can get set. When it is active each cell will contain an RTE field instead of content elements. .. _Template: **Template** """""""""""" **Visibility** : User & AdminThe only option in here is “Select Template” which lets a normal User select a template to use. Whetherthe mode of the Template is set to Empty, Copy or Reference it will be filled with Content Elements. .. _New-template: **New template** """""""""""""""" **Visibility** : AdminThis Tab is creating new Templates. When the field “Name” gets filled out or an existing template gets selected via the “Overwrite Existing” and the form gets saved then a new template will get created. The form will be empty again afterwards. .. _Table-locking: Table locking """"""""""""" **Visibility** : AdminHere you can define to which values the fields of the tab “Table Setting” will be set by default. If you set them to some other value than the default the value will be locked and a normal User can't edit the field but just can see its value. .. _Cell-locking: Cell locking """""""""""" Visibility: AdminIn this table you can define to which values the properties of each cell (colspan, rowspan, align, etc.) will be set. This is done via the extended “mustache”optionSplit mechanism. This is explained further in the Configuration section. .. _Action-locking: Action locking """""""""""""" **Visibility** : AdminHere you can define which actions a user may perform on each row, column or cell. If he is allowed to move or delete, or edit content or properties at all. .. _Row-n: Row (n) """"""" **Visibility** : (User) & AdminThose tabs are numbered from one one till the number of default rows which get created when a new table was made. The admin can forbid you to see those tabs or some of them. In those tabs you can make all settings which you can also make in the table wizard. It is up to your choice where you do the changes - although it is more comfortable in the wizard as you see the changes .. _Using-the-Wizard: Using the Wizard ^^^^^^^^^^^^^^^^ To activate the table wizard just click on the red-bordered wizard icon. A new page will appear in the right TYPO3 frame which will look like this if you are an admin or aren't restricted in any way: |img-2| On the top right you have a select box which you can use to switch the table to a bigger frame or to no frameat all (“Edit table”). In this mode the table will alway use the full width. The cellproperties can be edited by clicking the well known edit pencil in the middle of a cell (between the move up/down arrows). The properties dialog will appear below the table wizard and look like this, some fields could be disabled if you are not allowed to edit them (This screen shothas been taken in “Edit table” mode. With smaller frames it will be possible that lines are broken): Move Row/Column/Cell: With the Buttons for Move up/down/left/right you can move each row/column/cell in each possible direction. There is a move right and move left button next to each other although those two buttons have the same effect. The intention is usability. The delete button can get used to delete a complete row or column. The create new content element icon does what its name implies that it does :) The create new column/row icon create a new record or column. Below the Location information on the Left side you have the default save, save and close and close buttons. It may be misleading that changes to the table like moving a row or deleting a column is saved as it is done and not after pressing the save button. The save button is just for saving changes to the cell properties. In RTE mode you dont have (5) but can edit the cell properties and also the RTE content with (2). .. _Cell-properties: Cell properties """"""""""""""" If you click the “Edit cell properties” pencil (2) a new form will open up on the bottom of the wizard. |img-3| If you edit some properties and click the save or save and close button next to the “Edit Properties” form then the content will just be saved temporary just like when you edit different Flexform tabs (You could of course edit other table cell properties). The properties of the cells will just get saved finally if you click the save or save and close button on the top of the wizard. If the actual properties are unsaved when clicking the top save button they get saved automatically. .. _Selecting-a-template: Selecting a template ^^^^^^^^^^^^^^^^^^^^ If you have the necessary access rights and there are ready made templates you can select a pre-made template and your actual table (best try with a newly created) will get changed to the template. The template can have default settings for some values so your configuration possibilities are restricted but this is for achieving a common CI all over your site. You admin made the settings in such a way that the table always looks good together with the rest of your site - and you don't want to change that. To select a template just edit to the default content element edit screen (not the table wizard) where you normally edit a content element. There you have a tab called “Template” in the Flexform. Select it by clicking on it. Then the only option you have is to select an already existing template. Choose an existing template from the select box and click the Save Button of the element. After saving the new template will override the actual content and design. WARNING: If you select a different template, then switch to another tab and make some changes, and want to just save the changes you will have to reset the “Select Template” drop-down box to “None”. Else your actual template will be **OVERWRITTEN** !!! .. _The-RTE-Mode: The RTE Mode ^^^^^^^^^^^^ In When you set the checkbox “RTE Mode” in the Tab “Table Setting” then you will not be able to insert content elements into each cell but have an RTE for each cell. Currently each RTE has to be implemented on its own as there isn't a Javascript API for getting and setting the RTE content. If this would be possible this general API could be used but now each RTE must be handled on its own. So the only currently supported RTEs are: - Default RTE (Windows IE) - RTE HTMLArea (Windows IE & FF & NS, Linux FF & NS) perhaps if another RTE becomes popular it will also be added. Currently if you have both the standard RTE and RTE HTMLArea installed then under Windows IE the standard RTE will be used. In all other cases will rtehtmlarea be the only working choice. Currently there is no software implementation of copy & paste for RTE content. Cou can just copy and paste it using the clipboard of your OS. .. _Caching: Caching ^^^^^^^ Normally pages from TYPO3 which are generated on the FE are cached by the T3 caching mechanism. To render a table with 40 rows takes a huge amount of time as a large XML has to get parsed several times. So it is best practice to not set pages which contain Content Tables to no\_cache except for debugging purposes (And don't forget to set it back ! I told you !) .. _Character-Sets: Character Sets ^^^^^^^^^^^^^^ Currently the extension is tested with utf-8 and iso-8859-1. It seems to work in all browsers which support the RTE Area except Netscape which isn't tested (Mail me for information). The tests with utf-8 were made by setting forceCharset to utf-8 in the Install Tool. .. _Administration: Administration -------------- You can configure the Table in such a way that you can lock values to a specific value and then save the fully-defined table as a template which can get reused many times. To do this you will first need to set your table to proper values. There are three “Locking” Tabs which are used for setting the Table to default values and allowing the User just certain actions. These tabs are: - Table Locking - Cell Locking - Action Locking and will be described here in detail. By default all fields of those tabs which have common types will have common default values. For example Integer values will have -1 as default which means to not lock. Luckily no value of a table can be negative. .. _Table-Locking: Table Locking ^^^^^^^^^^^^^ This tab is used for locking the values which generate the starting
tag. .. ### BEGIN~OF~TABLE ### .. _Field-Name: Field Name : """""""""""" .. container:: table-row Field Name Field Name : Type Type : Default Default : Description Description : .. _Table-Setting: Table Setting """"""""""""" .. container:: table-row Field Name Table Setting Type Check Default not checked Description When this checkboxgets set the complete Table Setting Tab will be hidden from the User. .. _RTE-Mode: RTE Mode """""""" .. container:: table-row Field Name RTE Mode Type Integer Default -1 Description If set to 0 RTE Mode will always be disabled. If set to some higher value RTE Mode will always be enabled. With -1 the User can decide. .. _Cellspacing: Cellspacing """"""""""" .. container:: table-row Field Name Cellspacing Type Integer Default -1 Description If not smaller than 0 the cellspacinggets locked to this value. .. _Cellpadding: Cellpadding """"""""""" .. container:: table-row Field Name Cellpadding Type Integer Default -1 Description If not smaller than 0 the cellpaddinggets locked to this value. .. _Border: Border """""" .. container:: table-row Field Name Border Type Integer Default -1 Description If not smaller than 0 the border gets locked to this value. .. _Width: Width """"" .. container:: table-row Field Name Width Type Integer Default -1 Description If not smaller than 0 the width gets locked to this value. .. _Width-format: Width format """""""""""" .. container:: table-row Field Name Width format Type Select Default None Description If other than “None” the value gets locked to the selected item. .. _Height: Height """""" .. container:: table-row Field Name Height Type Integer Default -1 Description If not smaller than 0 the height gets locked to this value. .. _Height-format: Height format """"""""""""" .. container:: table-row Field Name Height format Type Select Default None Description If other than “None” the value gets locked to the selected item. .. _Align: Align """"" .. container:: table-row Field Name Align Type Select Default None Description If other than “None” the value gets locked to the selected item. .. _Style: Style """"" .. container:: table-row Field Name Style Type String Default '' (empty) Description If set to some value the style will be locked to it (field gets trimmed !) .. _Class: Class """"" .. container:: table-row Field Name Class Type String Default '' (empty) Description If set to some value the class will be locked to it (field gets trimmed !) .. _Id: Id "" .. container:: table-row Field Name Id Type String Default '' (empty) Description If set to some value the id will be locked to it (field gets trimmed !) .. _Additional-Attributes: Additional Attributes """"""""""""""""""""" .. container:: table-row Field Name Additional Attributes Type String Default '' (empty) Description If set to some value the additional attributes will be locked to it (field gets trimmed !) .. _Rows: Rows """" .. container:: table-row Field Name Rows Type Integer (optionSplit) Default Description This field gets optionSplittedwith the number of existing rows as length. Each item gets evaluated if it is an integer bigger than zero. If it is so this row is locked and you wont see the Tab of it. .. _Columns: Columns """"""" .. container:: table-row Field Name Columns Type Integer (optionSplit) Default Description The same for columns as with the Rows field of this Tab. If the lock value is set to 1 the column is not shown. .. ###### END~OF~TABLE ###### .. _Cell-locking: Cell locking ^^^^^^^^^^^^ This tab can be used for locking the values/properties of each cell, which mostly describe the opening
tag of each cell, to some values. All of the fields in this table use the “mustache”(Schnurrbart) optionSplit. It is called this way because it is two optionSplitsinserted in each other. And the inner one needs another split token for which I choose “ ~\*~ “ which looks like a mustache, instead of “ \|\*\| “ . But this if further explained in the Chapter configuration with some examples. .. ### BEGIN~OF~TABLE ### .. _Field-Name: Field Name : """""""""""" .. container:: table-row Field Name Field Name : Type Type : Default Default : Description Description: .. _Properties: Properties """""""""" .. container:: table-row Field Name Properties Type Integer(mustacheoptionSplit) Default '' (empty) == 0 Description If a cell value is not equal zero then the properties for this cell will be completelydisabled. .. _Content: Content """"""" .. container:: table-row Field Name Content Type Integer(mustacheoptionSplit) Default '' (empty) == 0 Description If a cell value is not equal zero then the content edit possibilities forthis cell willbe completelydisabled. .. _Colspan: Colspan """"""" .. container:: table-row Field Name Colspan Type Integer(mustacheoptionSplit) Default '' (empty) == 0 Description If a cell value is not equal zero the colspan of this cell will be locked to this value. .. _Rowspan: Rowspan """"""" .. container:: table-row Field Name Rowspan Type Integer(mustacheoptionSplit) Default '' (empty) == 0 Description If a cell value is not equal zero the rowspan of this cell will be locked to this value. .. _Celltype: Celltype """""""" .. container:: table-row Field Name Celltype Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the celltypeof this cell will be locked to this value. .. _Horizontal-align: Horizontal align """""""""""""""" .. container:: table-row Field Name Horizontal align Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the horizontal align of this cell will be locked to this value. .. _Vertical-align: Vertical align """""""""""""" .. container:: table-row Field Name Vertical align Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the vertical align of this cell will be locked to this value. .. _Fontweight: Fontweight """""""""" .. container:: table-row Field Name Fontweight Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the font weight of this cell will be locked to this value. .. _Fontfamily: Fontfamily """""""""" .. container:: table-row Field Name Fontfamily Type String(mustacheoptionSplit) Default '' (empty) Description If a cell value is set to some value the font familyof this cell will be set to the specified value. .. _Cellwidth: Cellwidth """"""""" .. container:: table-row Field Name Cellwidth Type Integer(mustacheoptionSplit) Default '' (empty) == 0 Description If a cell value is not equal zero the cellwidthof this cell will be locked to this value. .. _Cellwidth-format: Cellwidth format """""""""""""""" .. container:: table-row Field Name Cellwidth format Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the cellwidth format of this cell will be locked to this value. .. _Cellheight: Cellheight """""""""" .. container:: table-row Field Name Cellheight Type Integer(mustacheoptionSplit) Default '' (empty) == 0 Description If a cell value is not equal zero the cellheightof this cell will be locked to this value. .. _Cellheight-format: Cellheight format """"""""""""""""" .. container:: table-row Field Name Cellheight format Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the cellheight format of this cell will be locked to this value. .. _Wordwrap: Wordwrap """""""" .. container:: table-row Field Name Wordwrap Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the wordwrapof this cell will be locked to this value. Wordwrap defines if the content of this cell will be wrapped if it is too long. If set to no-wrapno line-break will occur. .. _Fontsize: Fontsize """""""" .. container:: table-row Field Name Fontsize Type Integer(mustacheoptionSplit) Default '' (empty) == 0 Description If a cell value is not equal zero the fontsizeof this cell will be locked to this value. .. _Fontsize-format: Fontsize format """"""""""""""" .. container:: table-row Field Name Fontsize format Type Select (mustacheoptionSplit) Default -1 Description If a cell value is not equal -1 the fontsize format of this cell will be locked to this value. .. _Class: Class """"" .. container:: table-row Field Name Class Type String (mustacheoptionSplit) Default '' (empty) Description If a cell value is set to some value the class of this cell will be set to the specified value. .. _Id: Id "" .. container:: table-row Field Name Id Type String (mustacheoptionSplit) Default '' (empty) Description If a cell value is set to some value the id of this cell will be set to the specified value. .. _Text-color: Text color """""""""" .. container:: table-row Field Name Text color Type String (6 chars max) (mustacheoptionSplit) Default '' (empty) Description If a cell value is set to some value the text color of this cell will be set to the specified value. This value is what comes after the # of the color definition in hex RGB. .. _Background-color: Background color """""""""""""""" .. container:: table-row Field Name Background color Type String (6 chars max) (mustacheoptionSplit) Default '' (empty) Description If a cell value is set to some value the background color of this cell will be set to the specified value. This value is what comes after the # of the color definition in hex RGB. .. _Style: Style """"" .. container:: table-row Field Name Style Type String (mustacheoptionSplit) Default '' (empty) Description If a cell value is set to some value the style of this cell will be set to the specified value. .. _Additional: Additional """""""""" .. container:: table-row Field Name Additional Type String (mustacheoptionSplit) Default '' (empty) Description If a cell value is set to some value the additional attributesof this cell will be set to the specified value. .. ###### END~OF~TABLE ###### .. _Action-locking: Action locking ^^^^^^^^^^^^^^ This gets used for defining which actions a User can perform on the table. For each possible action there is a optionSplitted field which defines the rights. .. ### BEGIN~OF~TABLE ### .. _Field-Name: Field Name : """""""""""" .. container:: table-row Field Name Field Name : Type Type : Default Default : Description Description : .. _Move-column-left: Move column left """""""""""""""" .. container:: table-row Field Name Move column left Type Integer (Option-Split) Default '' (empty) == 0 Description Each column value specifies if a user can move the corresponding column to the left. .. _Move-column-right: Move column right """"""""""""""""" .. container:: table-row Field Name Move column right Type Integer (Option-Split) Default '' (empty) == 0 Description Each column value specifies if a user can move the corresponding column to the right. .. _Move-row-up: Move row up """"""""""" .. container:: table-row Field Name Move row up Type Integer (Option-Split) Default '' (empty) == 0 Description Each row value specifies if a user can move the corresponding row up. .. _Move-row-down: Move row down """"""""""""" .. container:: table-row Field Name Move row down Type Integer (Option-Split) Default '' (empty) == 0 Description Each row value specifies if a user can move the corresponding row down. .. _Delete-Column: Delete Column """"""""""""" .. container:: table-row Field Name Delete Column Type Integer (Option-Split) Default '' (empty) == 0 Description Each column value specifies if a user can delete the corresponding column. .. _Delete-Row: Delete Row """""""""" .. container:: table-row Field Name Delete Row Type Integer (Option-Split) Default '' (empty) == 0 Description Each row value specifies if a user can delete the corresponding row. .. _Hide-Column: Hide Column """"""""""" .. container:: table-row Field Name Hide Column Type Integer (Option-Split) Default '' (empty) == 0 Description Each column value specifies if a user can hide the corresponding column. .. _Hide-Row: Hide Row """""""" .. container:: table-row Field Name Hide Row Type Integer (Option-Split) Default '' (empty) == 0 Description Each row value specifies if a user can hide the corresponding row. .. _Insert-column-before: Insert column before """""""""""""""""""" .. container:: table-row Field Name Insert column before Type Integer (Option-Split) Default '' (empty) == 0 Description Each column value specifies if a user can insert a column before the corresponding column. .. _Insert-column-after: Insert column after """"""""""""""""""" .. container:: table-row Field Name Insert column after Type Integer (Option-Split) Default '' (empty) == 0 Description Each column value specifies if a user can insert a column after the corresponding column. .. _Insert-row-before: Insert row before """"""""""""""""" .. container:: table-row Field Name Insert row before Type Integer (Option-Split) Default '' (empty) == 0 Description Each row value specifies if a user can insert a row before the corresponding row. .. _Insert-row-after: Insert row after """""""""""""""" .. container:: table-row Field Name Insert row after Type Integer (Option-Split) Default '' (empty) == 0 Description Each row value specifies if a user can insert a row after the corresponding row. .. ###### END~OF~TABLE ###### .. _Creating-Templates: Creating Templates ^^^^^^^^^^^^^^^^^^ If you have fully configured a table you may want to archive your work and make it reusable so others can easily make pre-designed tables. This gets achieved by templates.If you have finished configuring your table and locking (Also content elements will be copied if template is configured that way) finally press the save button again wherever you are and switch to the content element edit screen where you have the Flexform. **IMPORTANT** : Don't forget to save your changes. Unsaved changes will not be stored in the template. Then choose the tab “New Template” . I will shortly explain what the Fields are for. - **Overwrite Existing** If you choose some existing template from this drop-down box the selected template will get overwritten if the rest of the form is filled out correctly. - **Name** If no existingtemplate is selected in “Overwrite Existing” and a name is given here then a new template with this name will get created. - **TSConfig** **Name** This is the name the template will have for TSConfig configuration. This is not used actually but is required for future compatibility intentions. - **Storage Folder** This is the storage folder where the templates get stored to. You must select some “General Storage Page” in the Page Header of your Site Root-Page. Else no Storage Folders are configured. This is the same as for Templa Voila DS and TO records. - **Allowed BE Users** Just those BE Users will have access to this Template - **Allowed** **BE Groups** If the User is a member of the herein listed groups or one of the allowed BE Users he will have access to the template. - **Content Mode** This selects whetherthe new table has empty content, the content is copied from the template table (if it still exists), or is referenced (also just if it still exists). Note that a new template gets just created or an existing one overwritten if a Storage Folder gets selected. If “overwrite” is selected no name needs to be given - the template will just be untitled. .. _FAQ: FAQ ^^^ **Can I set different lockings for different users ?** No. Actually it is just possible to set lockings which get applied to any non-admin user. I will implement better access restrictions in the future ... Perhapsusing some ACL extension. **Why is such a complicated thing as Option-Split** **chosen** **for configuration ?** If you ever have learned to configure menus with optionSplit to do some tricky things you will already love it ... And if you get to know what powerful things can be done with optionSplit in conjunctions with things like tables you will never want to miss them again. **And this** **mustache** **makes the mess perfect ?** If you understand simple optionSplit you should understand mustacheoptionSplit after reading section “Configuration > mustacheoptionSplit”. **How does locking** **inter operate** **with templates.** It's simply this way: The complete table and all it's locking information is stored in the template and copied to the actually edited table when a template is selected. So the complete locking will be used 1:1. .. _Installation: Installation ------------ The extension gets installed as any usual extension via the EM. You have a few options to set when you install the extension but those are described in the configuration screen. .. _Applying-the-patch: Applying the patch ^^^^^^^^^^^^^^^^^^ If you have a TYPO3 version below 3.8.0 you will have to apply a patch to your source code for Templating and Locking to work properly. You need this patch exactly from versions from and below 3.8.0beta2. If no other version than 3.8.0 is out at the point when you read this document then you will have to check out the latest sources from CVS. Do that by reading the sourceforge TYPO3 CVS pages. To apply this patch just change in the directory “TYPO3ROOT/t3lib/” and execute the following command on your UNIX shell (don't know what to do under windows :) :: patch -p 0 ./class.t3lib_befunc.php < TYPO3ROOT/typo3conf/ext/kb_conttable/patch_t3lib_befunc_hook.diff Hopefully the patch will succeed. Afterwards you will be rewarded with the full functionality of the extension. You don't have to worry that you source code get's messed up. Just a simple hook gets added. .. _Configuration: Configuration ------------- Here the special configuration method, newly introduced by this extension, called “mustache”-Option-Split will get explained further. It mainly is a 2 dimensional extension of the well known optionSplit. Also the Configuration which is available when installing the Extension with the EM is documented. .. _mustacheoptionSplit: mustacheoptionSplit ^^^^^^^^^^^^^^^^^^^ First of all you will need to know what optionSplit does. If you see a string like: :: 1 |*| 1 || 0 || 1 |*| 1 You should not be scared. If you are you should first read: `TSref `_ `3.1.4 optionSplit `_ If you are already advanced read on. .. _The-second-dimension: The second dimension """""""""""""""""""" optionSplit does nothing more than looping a defined amount of cycles and setting each value determined by the split definition pattern. Normally you would expect each value of the optionSplit to be some value which get used for wrapping or something. In this extension the values are used directly. But they are also used for replacing a second split-token - the mustache“ ~\*~ “ by the default split token “ \|\*\| “ and get feed to optionSplit again. Such a extended optionSplit string looks like the following for example. It could get used as class definition in the Cell locking tab: :: cell-empty ~*~ cell-header |*| cell-default |*| cell-default the first optionSplit results it letting the middle rows and last row have “cell-default” as class. But for the first row there is an inner optionSplit which results in letting the first cell of the first row have “cell-empty” and all other cells of the first row have “cell- header” as style. As you can see this really opens up many possibilities. You may think: Yes but I would have more fine grained control over the table if I could set access restrictions for each cell. In my opinion: maybe. You would not have the power of configuring how new cells are handled except if you create a lot of extra information. With this kind of configuration you also have the possibilityto configure each cell of each table completelybut you will most probably need to restrict the creation of new cells else your defined configuration will not be valid any more. What I'm talking about is a configuration like the following for the font-weight of a 3x3 table: bold ~~ bold ~~ normal \|\| bold ~~ normal ~~ bold \|\| normal ~~ bold ~~ bold This would result in a table like the following: .. ### BEGIN~OF~TABLE ### .. _bold: bold ~~~~ .. container:: table-row a bold b bold c normal .. _bold: bold ~~~~ .. container:: table-row a bold b normal c bold .. _normal: normal ~~~~~~ .. container:: table-row a normal b bold c bold .. ###### END~OF~TABLE ###### Most probably you will recognize that the mustacheoptionSplit definition is nothing more than a simple listing of each row. If you now inhibit the creation of new cells the table fontweightwill be absolutely defined. .. _Examples: Examples """""""" Make a “border” of cells with a different background-color around a center of cells with white background. :: a07020 |*| a07020 ~*~ ffffff ~*~ a07020 |*| a07020 Allow a user to add just columns at the very end :: Insert Column before = 1 Insert Column after = 1 |*| 0 .. _Conclusion: Conclusion """""""""" At the moment I am not completely sure which possibilities are hidden inside 2-dimensional optionSplit. It could perhapsopen up the doors for many new ideas and usages. Feel free to invent ! .. _Page-TS-Config-Configuration: Page TS Config Configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This extensions does at the moment only rarely support Page TSConfig configuration. It will become more advanced in the future as you can already see from the Templates which got a TSConfig name. Here are the preliminary configuration options. .. _tx-kbconttable-keys: tx\_kbconttable.{keys} """""""""""""""""""""" .. ### BEGIN~OF~TABLE ### .. _Field-Name: Field Name : ~~~~~~~~~~~~ .. container:: table-row Field Name Field Name : Type Type : Description Description : .. _likeAdminsUser: likeAdminsUser ~~~~~~~~~~~~~~ .. container:: table-row Field Name likeAdminsUser Type string list Description This field contains a comma separated list of (mixed) uids or usernames of BE users who have the same rights as admins regarding the table. This is just valid for the Flexform. The wizard is also restricted at the moment. Let me know if I should change this behaviour. .. _likeAdminsGroup: likeAdminsGroup ~~~~~~~~~~~~~~~ .. container:: table-row Field Name likeAdminsGroup Type string list Description This field contains a comma separated list of BE group uids which have the same rights as admins regarding the Flexform of the conten table. .. _previewTextLen: previewTextLen ~~~~~~~~~~~~~~ .. container:: table-row Field Name previewTextLen Type integer Description Sets the length of the Text which gets shown in each table cell for a content element or the RTE. Default value is setable when installing the extension. .. ###### END~OF~TABLE ###### .. _Example: Example: ~~~~~~~~ :: tx_kbconttable.likeAdminsUser = 1,5,tester tx_kbconttable.likeAdminsGroup = 1,8 .. _EM-Configuration: EM Configuration ^^^^^^^^^^^^^^^^ When you install this extension via the TYPO3 EM you should get presented a configuration screen after creating the required table (changes) which shows you some options to configure. Some of them will also be configurable via TSConfig in the future (Make requests to me: what option and how !) .. ### BEGIN~OF~TABLE ### .. _Field-Name: Field Name : """""""""""" .. container:: table-row Field Name Field Name : Type Type : Default Default : Range Range : Description Description : .. _RTE-Configuration-RTEconf: **RTE Configuration** RTEconf """"""""""""""""""""""""""""" .. container:: table-row Field Name **RTE Configuration** RTEconf Type string Default richtext[cut\|copy\|paste\|formatblock\|textcolor\|bold\|italic\|under line\|left\|center\|right\|orderedlist\|unorderedlist\|outdent\|indent \|link\|table\|image\|line\|chMode]:rte\_transform[mode=ts\_css\|imgpa th=uploads/tx\_kbconttable/rte/] Range any TCA RTE configuration string Description This is the RTE configuration which you normally find inside a TCA.php file. I will enhance RTE customization further (on a per Page basis). .. _Preview-Text-Length-previewTextLen: **Preview Text Length** previewTextLen """""""""""""""""""""""""""""""""""""" .. container:: table-row Field Name **Preview Text Length** previewTextLen Type integer Default 100 Range 0-MAXINT Description Defines how many characters of a Content Element or of the RTE are shown in a cell. .. _Default-colPos-value-colPos: **Default colPos value** colPos """"""""""""""""""""""""""""""" .. container:: table-row Field Name **Default colPos value** colPos Type integer Default 10 Range 0-MAXINT Description Defines to which T3 column (Left, Normal, Right, Border) the Content Elements are saved by default. As this extension is compatible with the default Page module they can't get saved to the Normal column by default as this would disturb the normal elements. So it will get saved to the 10th column by default. If you use the 10th column already (wow :) ) enter another number. .. _Show-content-column-in-page-module-showContentCol: **Show content column in page module** showContentCol """"""""""""""""""""""""""""""""""""""""""""""""""""" .. container:: table-row Field Name **Show content column in page module** showContentCol Type boolean Default FALSE Range true/false Description Normally the 10th column is hidden. This will show it (If you have overwritten )”mod.SHARED.colPos\_list” it will not be shown - somebody knows how to “append” something in TSConfig ?) .. _New-Table-Columns-defaultColumns: **New Table Columns** defaultColumns """""""""""""""""""""""""""""""""""" .. container:: table-row Field Name **New Table Columns** defaultColumns Type integer Default 2 Range 1 - 20 Description The number of columns a newly created table will have by default. This is configurable via Page TSConfig also .. _New-Table-Rows-defaultRows: **New Table Rows** defaultRows """""""""""""""""""""""""""""" .. container:: table-row Field Name **New Table Rows** defaultRows Type integer Default 2 Range 1 - 20 Description The number of rows a newly created table will have by default. This is configurable via Page TSConfig also. .. _Fast-mode: **Fast mode** """"""""""""" .. container:: table-row Field Name **Fast mode** fastMode Type boolean Default TRUE Range true/false Description When this checkbox gets checked the Table uses the “Fast-mode”. See following section “Fast mode” for more information. .. ###### END~OF~TABLE ###### .. _Fast-mode: Fast mode ^^^^^^^^^ In this mode the cell properties can't get edited in the T3 record editing screen (alt\_doc.php) but rather only in the table wizard. This is because the properties are stored in a serialized array which increases performance compared to XML. When fast-mode gets enabled or disabled or when updating from a previous version without fast-mode (But above 0.1.0) then the table gets automatically converted to fast-mode when saving the first time in the table wizard. You will notice the changes in the Flexform only after this task. .. _FAQ: FAQ ^^^ Do i have to use optionSplitall the time ?If you simply want to lock all cellwidth values to one value just write the value in the locking field. Then all values will be set to the same value. This is also why “-1” is the default for all select fields. It means to don't lock all values. I don't get that optionSplit what shall I do ?Just do it after a combined principle reading `TSref 3.1.4 optionSplit `_ and trial-and-error by using the locking fields. Just log into TYPO3 twice (Tip for Firefoxusers: start Firefoxwith option -ProfileManger (edit shortcut or call from commandline) and create two different profiles) once as Admin and a second time as User. Then lock some fields and look what happens. .. _Known-problems: Known problems -------------- Slow because of the really large Flexforms. Even with “fast” mode where all cell properties are combined into one field which is not editable directly through the Flexform though. New solution: Restructure large parts of the extension so single records get created for each cell and now de/serializiation and/or XML decoding/encoding has to get performed. If you experience long loading times of the wizard please inform me and tell me about the type, size and content of your table and the server hardware you use. .. _Intention: Intention --------- If you like this extension. Or any other of my extension, you are invited to contribute to my idea of a beautiful world. You could spend money to any non-profit environmental or humanitarian organization like Greenpeace, WWF, Global 2000, Amnesty International, Care, etc. .. _Credits: Credits ------- This extensions was sponsored by the Austrian company Active Solution ( `http://www.activesolution.at `_ ) for their customer IT-Austria. Thanks to Petra Forman and Markus Thannhäuser from Active Solution and Walter Wasinger from IT-Austria for the good cooperation. Also thanks go to Stefan Beylen for proofreading the documentation. The work of updating the extension to work with current TYPO3 versions 4.x was partially sponsored by the German company Dynamic Lines GmbH ( `http://www.dynamiclines.de/ `_ ) .. _To-Do-list: To-Do list ---------- - Add more configuration possibilities via TSConfig. - Make RTE more configurable. - Make it multi-language compatible - When item cut from “Normal” clipboard it doesn't get removed. .. _Changelog: Changelog --------- .. ### BEGIN~OF~TABLE ### .. _Version: Version : ^^^^^^^^^ .. container:: table-row Version Version : Date Date : Changelog Changelog : .. _0-0-0: 0.0.0 ^^^^^ .. container:: table-row Version 0.0.0 Date ( ? ) Changelog Initial release .. _0-0-1: 0.0.1 ^^^^^ .. container:: table-row Version 0.0.1 Date ( ? ) Changelog Fixed paths to get fetched from TYPO3. Hardcoded before. .. _0-0-2: 0.0.2 ^^^^^ .. container:: table-row Version 0.0.2 Date 2005-01-24 20:30 CET Changelog Fixed the irritating red “not saved” message appearing after changing cell properties. Table gets saved automatically now. .. _0-1-0: 0.1.0 ^^^^^ .. container:: table-row Version 0.1.0 Date 2005-05-02 22:45 CET Changelog Completely rewritten !!!\* Now completely Flexform based. \* Configuration via 2D optionSplit \* Many other new features: see first documentation paragraph. .. _0-1-1: 0.1.1 ^^^^^ .. container:: table-row Version 0.1.1 Date 2005-05-03 19:15 CET Changelog Updated manual (now includes screenshots directly - upload limit was raised :) Added section regarding the “ERROR: NEW4277ac44005ea” error. .. _0-1-2: 0.1.2 ^^^^^ .. container:: table-row Version 0.1.2 Date 2005-05-12 18:45 CET Changelog Included a workaround for a bug in T3 3.7.0 so now templating should also work in this version if the included patch gets applied. .. _0-1-3: 0.1.3 ^^^^^ .. container:: table-row Version 0.1.3 Date 2005-06-17 12:42 CET Changelog Updated documentation .. _0-1-4: 0.1.4 ^^^^^ .. container:: table-row Version 0.1.4 Date 2005-07-10 19:00 CET Changelog Fixed a bug which caused that the content element couldn't be copied or imported. Included German translations .. _0-2-0: 0.2.0 ^^^^^ .. container:: table-row Version 0.2.0 Date 2005-07-23 19:15 CET Changelog Introduced “Fast-Mode” which stores the cell properties in a serialized array. This increases speed but cell properties can't get edited from the T3 record editing screen anymore but rather from the table wizard. Also the RTE fields now only get inserted into the Flexform when RTE Mode is switched on. This also increases speed. For speed comparison see: `http://www.think- open.org/kraftb/kb\_conttable\_speedimprovements.pdf `_ For more information on Fast mode see section “Fast mode” in the documentation. .. _0-2-1: 0.2.1 ^^^^^ .. container:: table-row Version 0.2.1 Date 2005-07-29, 15:30 CET Changelog Fixed a bug which resulted in not being able to save RTE content. This bug occured only when creating new tables with version 0.2.0 because of the change that the RTE editor is only included when needed. .. _0-2-2: 0.2.2 ^^^^^ .. container:: table-row Version 0.2.2 Date 2005-10-28, 08:15 CET Changelog Fixed a small issue which caused locked fields to not be set/locked properly. .. _0-2-3: 0.2.3 ^^^^^ .. container:: table-row Version 0.2.3 Date 2005-11-03, 23:30 CET Changelog Fixed a problem which lead to not working locking. Completed locking mechanism by adding fields for the last actions which weren't lockable (Hide Cells, Move cells) .. _0-2-4: 0.2.4 ^^^^^ .. container:: table-row Version 0.2.4 Date 2005-11-16, 12:30, CET Changelog Fixed 2 bugs with RTE mode .. _0-2-5: 0.2.5 ^^^^^ .. container:: table-row Version 0.2.5 Date 2006-01-02, 12:30, CET Changelog Implemented the Template “Keep” mode. This allows to save a template in such a way that when it get's used only the style definitions get copied to the actual table but not any information about the number of rows and their content: Content stays - Style changes. .. _0-2-6: 0.2.6 ^^^^^ .. container:: table-row Version 0.2.6 Date 2006-02-13, 21:15 CET Changelog Now works together with kb\_pm\_paste .. _0-2-7: 0.2.7 ^^^^^ .. container:: table-row Version 0.2.7 Date 2009-11-28, 11:50 CET Changelog Updated the extension to work with TYPO3 versions 4.2 and 4.3 .. _0-2-8: 0.2.8 ^^^^^ .. container:: table-row Version 0.2.8 Date 2009-11-28, 12:15 CET Changelog Fixed a small issue with dynamically generated content element wizard in table wizardRaised TER state from "alpha" to "stable"Initial import into forge SVN Updated documentation .. _0-3-0: 0.3.0 ^^^^^ .. container:: table-row Version 0.3.0 Date 2009-11-28, 13:00 CET Changelog Raised version to 0.3.0Set proper version requirements for TYPO3 and PHP in ext\_emconf.php .. _0-3-1: 0.3.1 ^^^^^ .. container:: table-row Version 0.3.1 Date 2009-11-30, 12:15 CET Changelog Fixed a bug: Commented out not fully implemented feature “DB mode” .. _0-3-2: 0.3.2 ^^^^^ .. container:: table-row Version 0.3.2 Date 2009-11-30, 15:15 CET Changelog Updated documentation: Added information about sponsor .. _0-3-3: 0.3.3 ^^^^^ .. container:: table-row Version 0.3.3 Date 2009-12-02, 13:30 CET Changelog Removed debug statementsIncorporated the templavoila xml/api handling classes completly into the extension. So the extension does not depend on specific templavoila versions any moreFixed the new content elements wizard .. _0-4-0: 0.4.0 ^^^^^ .. container:: table-row Version 0.4.0 Date 2010-05-05, 12:00 CET Changelog Updated all PHP doc references for methods at beginning of files using extdeveval Updated the copyright date and email address in all files, switched first and lastname of author Added a link to the table wizard, directly from the Web>Page module using a hook of recent TYPO3 versions Added support for new RTE in RTE mode: tinymce\_rte is now also supported Fixed an issue with the RTE mode (thanks to Raymond Irwin for pointing this out) Fixed a charset issue concerning XML/ARRAY conversion of DS and FLEX structures (thanks to Markus Dellmann for pointing out this issue and sponsoring the bugfix) Removed a debug statement Removed a path for adding a hook (this was only required in TYPO3 < 3.8.0) Added a configuration option which allows combining posted cell properties to one POST variable to overcome mod\_security/suhosin restrictions when posting too many fields .. _0-4-1: 0.4.1 ^^^^^ .. container:: table-row Version 0.4.1 Date 2012-07-12, 12:00 CET Changelog Fixed bug: At some places the deprecated/removed method “t3lib\_div::GPvar” has been used. Changed this occurences to use “t3lib\_div::GP” Fixed bug: The XCLASSing of “template.php” didn't work anymore because t3lib\_div now caches the names of classes instanciated via “t3lib\_div::makeInstance” .. _0-4-2: 0.4.2 ^^^^^ .. container:: table-row Version 0.4.2 Date 2012-07-13, 20:30 CET Changelog Updated documentation .. ###### END~OF~TABLE ###### |img-4| EXT: KB Content Table - 12 .. ######CUTTER_MARK_IMAGES###### .. |img-1| image:: img-1.png .. :align: left .. :border: 0 .. :height: 664 .. :id: Graphic2 .. :name: Graphic2 .. :width: 669 .. |img-2| image:: img-2.png .. :align: left .. :border: 0 .. :height: 448 .. :id: Graphic5 .. :name: Graphic5 .. :width: 641 .. |img-3| image:: img-3.png .. :align: left .. :border: 0 .. :height: 395 .. :id: Graphic6 .. :name: Graphic6 .. :width: 608 .. |img-4| image:: img-4.png .. :align: left .. :border: 0 .. :height: 32 .. :id: Graphic1 .. :name: Graphic1 .. :width: 102