More workspace stuff for beta.
[Packages/TYPO3.CMS.git] / TODO.txt
index 745f2f0..9dc77c0 100755 (executable)
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,30 +1,96 @@
-******************
-TODO LIST
-*****************
+*******************************************
+TODO LIST for the Core of TYPO3.
 
-General:
-- CHECK: What is the number of supported page levels? 20 or 100?
-- CHECK: possible XSS problem with alt_mod_frameset.php taking parameters for scripts to display in frames.
-- Option: Turn of "onBlur" in backend (Message-ID: <001801c2a28c$bb020c70$963afea9@bla8kdvxpl8glk>)
-- Feature: "admin" can click a button which wipes out all record-lockings. (Message-Id: <200301281752.23246.mundaun@gmx.ch>)
-- Feature: Controlling access to function menu modules as well (thus we could have a user-module inside ?Template? which could edit the constants field)
-- Feature: Web >plugins -> to be a main module where people can place cmodules for their extension.
+Maintained by Kasper
+Do not modify without permission!
+*******************************************
+
+[@KASPER: ALSO SEE MY MAIL FOLDERS about Core development!]
 
 
-TCEmain:
-- Commenting of the class.
-- Charset:
-       - Currently the upper/lower case conversion converts danish/german letters as if they were iso-8859-1. This will be a problem if other charsets are used. What to do?
+General Backend:
+- CHECK: What is the number of supported page levels? 20 or 100?
+- Feature: "admin" can click a button which wipes out all record-lockings. (Message-Id: <200301281752.23246.mundaun@gmx.ch>)
+- Feature: Controlling access to function menu modules as well (thus we could have a user-module inside ?Template? which could edit the constants field) (including workspace access)
+- Feature: Web >plugins removed
+- Substitute "->include_once[] = ...." with "require_once()" directly in classes - BUT the problem is that class files accesses $TYPO3_CONF_VARS (for XCLASS inclusion) and that is not accessible from the function including the script unless "global $TYPO3_CONF_VARS" is set before inclusion. THEN all XCLASSes of that class will break!!!
+       - Check the source for "require_once()" calls inside of methods and make sure "global $TYPO3_CONF_VARS" are set before (also update CGL document).
+- Backend Interface: Dont show edit icons if editing cannot be performed due to recordEditAccessInternals() / editlock for pages (pid)
+- class.t3lib_dmailer.php into direct_mail module?
+- Avoiding the symlinks in core?
+- GETll can be configured to show the label key so wrong labels can quickly be changed (using the key to find label in translator interface)
+- lock cHash to id as well (otherwise spamming cache-table can be done with a series of cHash values/parameters and traversing known page ids)
+
+TCEmain
+(Related: DBint, User Admin module, logging-display, TCEforms, Web>List)
+- Clean-up and commenting of the class.
+- CHARSET:
        - Note: No charset conversion is done in TCEmain. It is expected that the content enters TCEmain in the charset of the backend in general.
-- FEATURES:
+- LOGGING:
+       - Rewrite log-display, support writing to text-files, syslog on unix (API?)
+               - Reports/Monitoring: Show/send-by-email daily reports over accumulated activity (grouped by workspace/user/pagetree section/modules etc) [Richard at Dassault wanted this]
+                       - Activity of individual users in a summary form
+                       - Activity in branches of a page tree
+                       - Activity in a workspace
+       - Finish the logging of TCEmain actions (delete/copy)
+       - Versioning: sys history/sys_log track the "uid" of a record and version swapping will invalidate the integrity of this! How to deal with?
+       - Centralized logging:
+               - Create an extension which shows how the log data can be stored in a) database, b) files
+               - extension "logit" / PEAR::log package?
+- INTEGRITY / CLEAN_UP / REFERENCE TRACKING:
+       - Implement kill/restore of "deleted" records.
+       - Record Reference tracking in a table in TCEmain
+               - Tracks DB-references, Files and softrefs (including in FlexForms)
+               - Index is generated per record with an API call (both fe/be), making it easy to maintain it and possible to completely regenerate it
+               - Used for:
+                       - Check before deletion that a record is not used?
+                       - Used by applications (like TemplaVoila) where it is hard to track references in FlexForms
+                       - Used for import/export module and anywhere else where we are looking up references!
+                       - Basis for integrity checks
+                       - clearing caching more effectively
+                       - Could be used for MM look-ups on those "unfortunate" comma-list fields?
+               - Offers API to "fix references" if a record carries lost references
+               - Offers way to map a reference to another one ("search/replace")
+               - Offers way to compare actual references in record and those indexed so we can see if there was inconsistency
+       - Record clean-up functionality
+               - Remove references to deleted records (also deleted-to-recycler records? Maybe "deleted-to-recycler" references are important to remove in order to make sure "recycler" records are not selected!) (refs to MM for both tables/files)
+               - Remove references to lost files etc.
+               - Cleaning FlexForm XML according to the current DS (old XML garbage might be left if DS changed)
+       - Versioning:
+               - Flush old versions (requires general clean-up features to be complete!)
+               - Check for "lost" versions during swap?
+- PERMISSIONS:
+       - Permission API: Used for any DB-element in system (See Sune Vestergaards suggestion)
+               - More flexible setting of permissions
+               - Additional checks apart from read/edit/new/delete etc.
+               - Permissions for any record
+               - Can work in conjunction with current page permissions or simply work instead of them.
+               - Access Lists?
+       - CHECK: That permissions are properly evaluated, especially:
+               - Languages (there was a bug proved)
+               - Workspaces / Versioning
+               - Moving of records (source/destination PIDs)
+       - Security in tcemain: Uploaded/Attached files are allowed to be in ONLY a relative path OR in the "lockDir"!
+       - Roles (ideas about adding roles to the permission concept of TYPO3):
+               - There could be, say, 4 default roles:  author, editor, administrator, developer
+               - Users can be assigned "membership" of a role (basically a "role" is like a hardcoded "user-group")
+               - Like you can configure database fields in TCA to be an "excludeField" you could also configure which ROLES can edit the field.
+               - Possibly each role could assign membership of some groups.
+       - Tools > User Admin:
+               - Features helping to configure roles/users?
+       - Versioning:
+               - Backend user access to elements is based on the access restrictions for the official element (except pages?). This must be implemented on core level.
+- TCEforms/TCEmain available for frontend
+       - Makes portal features easier to create
+       - A rewrite of TCEmain might help very much!
+- VARIOUS FEATURES:
        - Support for submitting dates in non-UNIX-time format (eg. DD-MM-YYYY) (is there a PHP function to which you can directly pass something like "DD-MM-YYYY" and then it will clean it all up? Or convert?
        - Recyclebin: If an item is deleted and is NOT in the recyclebin, then move it (all pages to the root of) the closest recyclebin (in a rootline pid AND with write permissions) in the pagetree. If that is not present, then delete normally. If you delete anything in a recycle bin, it's totally deleted.
        - Implement field evaluation in TCEmain: Evaluate min/max? Checking references exists?
        - Implement a feature, "max_number_of_records_in_pid" which means the TCEmain will check if a number of records of a kind has been exceeded for the page.
        - "Pattern-control" for relation fields? (See "APPENDIX: PATTERN-control") Probably create an API by which you can do your own evaluating, return true/false, return an error message.
-       - pre and post processing by user functions of the data? (Message-ID: <C018FF617C61AB4588D15494126A5C0F23E431@Soulman.hanno-kirchhoff.de>) 
        - "Tree-tables": Adding TCA-feature which can describe a field being a internal_pid for the table so tables can be listed as a tree in Web>List (and for TCEmain this means that copying an element). "parent" items. Rene needs this for "categories". See (Message-Id: <200212201257.24705.r.fritz@colorcube.de>)
-       - Support for "grouping": - eg. tt_content elements are grouped by "column" + "language". But copy/cut operations must understand this. And Web>List should reflect this as categorizing. 
+       - Support for "grouping": - eg. tt_content elements are grouped by "column" + "language". But copy/cut operations must understand this. And Web>List should reflect this as categorizing.
        - "child records" - records which MUST be related to another table - and will be moved along with the main record if moved.
        - Implement *real* record locking?
                - Configure on a per-table basis
@@ -33,54 +99,36 @@ TCEmain:
        - If an input value in the data array is NOT a string/integer but an array then just serialize this array and store (thus allowing customly build forms from PHP scripts to submit hierarchical information)
                - Could be solved by PRE-processing of content in user functions!
        - Implement "last_edited_by" field saving the BE-user UID just like tstamps are... (JH asked)
-       - Transformation API: Implement the possibility of custom to/from transformations for the "user" type (or any field?) 
-               - Custom transformations for RTE fields/API?
-       - Selector box type: 
+       - Transformation API: Implement the possibility of custom to/from transformations for the "user" type (or any field?)
+       - Selector box type:
                - MM support for strings
-       - Support for MM-records which does NOT get deleted, but is kept... and then support for having data in those!!
+       - Support for MM-records which does NOT get deleted, but is kept... and then support for having data in those!! NOTE 3/12 04: This will cause severe problems in the import/export interface and probably many other places where the MM relations are stored only as the uid of another table and nothing more. That makes it impossible to track the record in the middle....
        - Support that the content of a single field can be stored in an external file instead.
        - Support that a list of fields can be stored in an external XML file instead.
-- VERSIONING:
-       - Swapping API: A page can be copied for making modifications. Afterwards swapped with the original (page/tt_content uids preserved if possible). The original page is stored in archive of some kind.
-- LOGGING: 
-       - Finish the logging of TCEmain actions (delete/copy) + finally define the API to the "sys_log" table!
-- CLEAN_UP: 
-       - Implement kill/restore of "deleted" records.
-       - Remove references to records when deleting totally (or also deleted-to-recycler records? Maybe "deleted-to-recycler" references are important to remove in order to make sure "recycler" records are not selected!) (refs to MM for both tables/files)
-- PERMISSIONS: 
-       - Permission management on selector box/radio button values 
-               - so certain "CType" / "Insert plugin" / "FlexForm datatypes" values could be blocked
-               - Could it be considered to implement some "access pool" where elements on any level (like here selectorboxes or for FlexForms elements/types there) could add their element by an API and then it would A) automatically be listed for groups access lists and B) automatically enforced.
-       - Permission management for translations?
-       - Permissions on record-level
-       - CHECK: That permissions are properly evaluated (especially for moving content?)
-       - Security in tcemain: Uploaded/Attached files are allowed to be in ONLY a relative path OR in the "lockDir"!
-- BUG: 
+       - "uniquePerField"
+               - used for pages_overlay_records "pid"
+               - used for "tt_content"/"sys_language_uid", field "l18n_parent"
+       - Having references on the form [uid : filereference/] for fall-back abilities.
+- BUG:
        - if a file is uploaded (directly in the form) and there is an upper limit to the number of files which is then exceeded, the uploaded file is STILL copied to the upload folder and will thus be listed as "Files with no references at all (delete them!):"
        - TCEmain: If there is a comma in the filename supplied as an uploaded file it will confuse the handling of files because the comma is also used to split the filename from each other. (29/04/2003). This is a problem with Inter-Photo Netprint where files uploaded by FTP with comma in the name will not be attached as they should. I think the solution should be found in TCEmain so any filename can be supplied as uploaded.
-       - CHECK: hideAtCopy - does it work??
-       - CHECK: copyAfterDuplFields - check it (tt_content).
-- RELATED: DBint/admin, logging-display, TCEforms, Web>List
+       - "editlock" is only implemented for pages at the moment which it should be so for records according to TYPO3 Core API.
 - IDEA: check for potential dangerous php-extension
-- Multiple DBs:
-       - The ability to configure "any" table to be stored in another database. 
-       - Think DBAL into this and also notice that joins could ONLY be done if tables are in the same DB! (since other databases could also be from non-MySQL dbs when the DBAL comes)
-       - Affects: Basically anywhere records are selected -> requires a check of $TCA[ctrl] for the table first before the query is done!
-       - Maybe this feature should wait till DBAL is implemented anyways.
 
 
 TCEmain/TCEforms for FlexForms:
-- Affects: "lowlevel" ext/DBint , "impexp" extension. Must/Should be extended.
 - Permissions handled per-field in FlexForms?
-- What to do if data structure was not found? (Both TCEmain, TCEforms, templavoila_pi1, t3lib_transferdata) 
+- What to do if data structure was not found? (Both TCEmain, TCEforms, templavoila_pi1, t3lib_transferdata)
 - block the creation of FlexForm in FlexForm inside TCEforms.
 - ['pi_flexform']['config']['ds'] must be set to some default message making sense!
+- Other XML formats for DS: - API / services?
+       - xml2array - supporting looking for <>&" and if found wrapping in CDATA instead! (or maybe for multiline values?)
 - TCEmain features:
-       - caching of references/files in meta data (for analysis tools)?
-       - mapping values to a plain-text search field(s)  
-       - Offering API functions for add/delete/move/copy
-       - Cleaning the original data in field since this may have an invalid structure if the data structure has changed in the meantime.
-- TCEforms: 
+       - mapping values to a plain-text search field(s)
+       - Offering API functions for add/delete/move/copy/paste of FlexForm elements/sections
+       - Copy/Paste API for references? (see TemplaVoila page-module pioneer work)
+       - Possibility to write the XML data values into a table instead (see Marc Schlingers idea, stored on paper in my red organizer).
+- TCEforms:
        - Support for checkboxes which can expand/collapse sections/containers? fold-in, fold-out, passing a list of fields to show (with sub-levels for horizontal display).
        - Visual interface for forms, DHTML for sheets etc, various sheet modes, language menu form.
        - Fix the JavaScript in TCEform which keeps track of REG/CM images and required values etc. These things does not work for flex forms yet!
@@ -89,200 +137,152 @@ TCEmain/TCEforms for FlexForms:
                - visual: Table with condition in top header, condition value column + block column. Not user supplied. -> OR just a selector box deciding what is shown below!? (possibly "ALL")
        - Displaying partial branch of the data structure (and to a certain level)
        - FlexForms cannot be possible if the record is not saved? No, should be ok, BUT a data source can of course not be referenced from another field since that fields value is NOT actually there! So only for fixed references to flex form definitions can this be done.
-               
+       - If you have a multiple selector field (or checkbox array) an array of objects could be forced to reflect exactly the fieldnames there 1-1 thus giving us configuration option possibilites per field! For newloginbox extension: You set up a selector box with multiple choice where you can select fields from the fe_users table to display. In an array of elements in the DS you configure that the VALUE of that field is dictating that the same number of objects should be shown for configuration of each field. A "hidden" value would point each object to which value from the field it was for! The same would be very useful for M-M lists of records.
+       - Implement CSH for FF fields.
+       - Localization of FlexForms:
+               - Permissions for specific language as well!
+               - Using DHTML tabs for langChildren = 0, making something else for langChildren = 1
+
 TCEforms:
-- Support for other backend charsets / right-aligned charsets!?
+- Support for right-aligned charsets?
 - FEATURES:
        - GENERAL:
-               - Customized display of a field, possibly passing an array with code that should be displayed and then people can themselves put it together from PHP?
-               - Ability to set up user functions for pre and post processing of the data?
-               - API for adding JS-functions to the onchange-event.
+               - Customized display of a field, possibly passing an array with code that should be displayed and then people can themselves put it together from PHP? (possible already?)
+               - Ability to set up user functions for pre and post processing of the data? (possible already?)
+               - API for adding JS-functions to the onchange-event. (possible already?)
                - Make STORAGE_FOLDERs a LIST of pages - not just one page (still the first page could be the default while other pages will be where stuff is selected from).
+               - Workspace-ReadOnly flag for fields
+                       Should be set for all fields which are used in where clauses in frontend. (Enables fields would candidate for example, but they must be handled otherwise since we WANT to be able to change those in new versions)
+                       - Generally for fields: $TCA[$table]['ctrl']['languageField'] and $TCA[$table]['ctrl']['transOrigPointerField']
+                       - field: pages_language_overlay:sys_language_uid
+                       - field: pages:doktype (used for selection many places!) - but then we cannot make mounts points etc! (?)
        - SELECT type:
-               - select a filepath as a source of the items you can add to the box (single/multiple) without copying the files of course.
                - Ability to see icon/image from record of selected value in the selector box.
                - IFRAME alternative for the selectorboxes where a HTML view can be shown. Possibly having an external script show the content which would be useful for display of tree-tables.
-               - Reflect possible tree-structure for records in Select/Items list
+               - Reflect possible tree-structure for records in Select/Items list.
                - a way to grant read for the selectors without displaying the storagefolder in the treeview?
-               - move one up / one down buttons for the list (also for GROUP element)
-               - Ability to move items when selecting/deselecting them. Or ability to gray out elements in the right list if selected.
                - CHECK: "multiple" feature, single, sorted and non-sorted selections.
-               - Having elements ordered by the "list-order" of the selection selector must be done in JS (or tcemain)
                - making copies of select fields etc - check that remapped records are OK treated (with foreign/neg_foreign + free string values)
                - Letting one selectorbox set another hidden fields value apart from its own? [USE: When selecting a template, that also sets the DS value! (Thus a template is always selected!)]
-               - Exclude field selection better, in a tree?
-               - set the width of the selector field.
+               - Exclude field selection better, in a tree? (in IFRAME, could be cool!)
+               - BUG: itemsArrayProcFunc only active IF there is an array! Shouldn't it be in any case?
+               - set the width of the selector field(s)
        - GROUP type:
-               - [file] allow the selection of files from the system to be added as REFERENCES, not copied! (Message-ID: <003f01c23503$8cdd69d0$55333bd4@comtech>, + notify "illuminatus")
+               - [file] FILE-REFERENCES: allow the selection of files from the system to be added as REFERENCES, not copies!
+                       - upload option to the folder specified in TCA
+               - Subfolders for uploads/ as well, detecting the first (#) a-z0-9 letters) (For large amounts of files!)
+                       - Storing files with "a3#FILENAME.jpg" which indicates a subdirectory.
                - In the thumbnail list add the Edit and view icons as in the good old days.
                - BUG: By the way, isn't there a bug in the listing of the thumbnails of records?
                - Nested records:
-                 - Group-fields of DB-type could be made to actually SHOW the records it contains in the very same form! Possibly with Add/Delete facilities.
-                 - See JH mail: Message-ID: <C018FF617C61AB4588D15494126A5C0F23E410@Soulman.hanno-kirchhoff.de>
+                 - Group-fields of DB-type could be made to actually SHOW the records it contains in the very same form! Possibly with Add/Delete facilities. (JH asked)
                - IFRAME alternative for Element Browser.
-               - Like in CB: Copy image/reference from a record to clipboard, then insert that file/reference in another record again (Element Browser change).
-       - INPUT type:
-               - having a selectorbox from which a default value can be selected (which is just transferred to the input field). Of course the selectorbox can have its content added by a PHP script.
-       - ? type:
-               - "Inverse relations"/"Foreign relations": A "Pseudo field", which lists records REFERING TO this record (foreign relations, eg. many small price-records belonging to ONE shop-article). Possibly this could also EDIT those references (attaching/adding new, removing old, no manual ordering though! - This is what RENE is doing (Message-Id: <E17LO4D-0002hj-00@cube.colorcube>) 
-       - TRANSLATION:
-               - Concept for translation of other language versions simultaneously? (Showing the default/any language side-by-side?)
-               - Would require UTF-8 display in backend.
-               - Support for "original/translation" relationships: 
-                 - The idea is that a) one field from a record is configured in [ctrl] to hold the sys_language (0=default, x=translation of default) value AND b) another field is configured to keep a reference back to the original element (for the translated records)
-                   - If the record is "default" then ALL fields are shown.
-                   - If the record is "translated" then SOME fields are disabled for editing (as configured) BUT shown in the form for information (the value from the original).
-                       - When the record is selected for display or whatever an API call can fetch the original record and take the value of those configured fields and overlay in the translation (exactly like we do with page_overlay_records)
-                       - The core support basically is, that TCEforms automatically understands to disable the fields if needed and display the original content.
-                       - see Message-ID: <200205300155190552.08F5563C@smtp.worldonline.dk>, Message-ID: <mailman.1055945641.8348.typo3-english@lists.netfielders.de>
+               - set the width of the selector field(s)
        - DISPLAY_CONDITIONS:
                - "readonly" flag, or user group dependant. See "Message-Id: <200210241441.50295.r.fritz@colorcube.de>"
+       - ? type:
+               - "Inverse relations"/"Foreign relations": A "Pseudo field", which lists records REFERING TO this record (foreign relations, eg. many small price-records belonging to ONE shop-article). Possibly this could also EDIT those references (attaching/adding new, removing old, no manual ordering though! - This is what RENE is doing (Message-Id: <E17LO4D-0002hj-00@cube.colorcube>)
+       - Concealed password fields, support for two fields with the same password being submitted... (JavaScript evaluated?)
 - BUGS:
        - Ask to save record when you want to add a category with the "Plus" icon.
        - CHECK: ###STORAGE_PID### incorrectly calculated?
 - DONE?: Support for label for main palette: (Rene: Message-Id: <200210011646.10346.r.fritz@colorcube.de>)
 
-Charset:
-- checking (for XML) if there is "character data" in a string?
-
-TCEforms/RTE API:
-[Dominic Brander and Martin Schmidt has shown interest in the ekit Java RTE and may work on that.]
-- API for RTE's (plus converting current RTE to using that!)
-  - review of class.t3lib_parsehtml_proc.php
-- Make TYPO3 ready to accept alternative RTE made in Java. Needs data exchange to (config+data)/from (data) applet.
-- Implement Ekit as Proof-of-concept: http://www.hexidec.com/ekit.php
-- Implement another ActiveX editor as Proof-of-concept.
-
 Element Browser:
 - Support for DAM
+- RTE API integration (rte_images + browselinks)
 - Support for browsing custom category-trees (passed by some PHP script)
 - Support for deleting files in the listing there.
-- Disable thumbnail option for faster display.
+- Disable thumbnail option for faster display. (Already done?)
 - Element Browser configurable a) without the page tree but hardcoded to specific PID, b) just default PID (possibly able to override from TSconfig)
 - Selecting files from other resource-fields of records (which the user can actually read) - maybe with the Element Browser, browsing for record, clicking it, seeing a list of files inside the record?)
 - Ability to insert images when their info page (larger thumbnail) is displayed. Maybe a small + (plus) icon would do. (Notify Patrick Roeder)
 - Some quick-lookup feature (like we have on TER)
+- Showing more than the title column for records listing and making it possible to sort by the columns.
+- BUG: fix bug when used as "wizard" for link fields!
+- Support realurl paths translation to IDs?
+       - Implementing a hook so "realurl" can intercept the "Edit page ID" field in the shortcut frame and allow people to paste in a URL from the website which will be analysed to find the page id from the URL
+       - Implementing a hook similar to this, but used in the RTE link selector box (browse_links.php) so a link to a page can be made in the same way. Such an interface will just link to the page if an ID could be found, otherwise tell that the URL din't have a page id associated with it.
+- Link selector: Disabling target box for selectors directly to HREf fields (DS case with templates...)
 
 Wizards:
-- Finish the colorpicker! Some other person can be in charge of this (See "APPENDIX: Colorpicker")
 - Add wizard icon to TSconfig and Setup/Constants fields for immediate syntax highlighting (in popup window)
-- wizard_add, _edit and _list can be used fantastic to lead the user through multiple 1:n relations but than he starts to be confused if the records he created apear somewhere else, tries to edit them directly there, relations get lost, phone rings. (Peter K?hn). 
-- forms and table wizards should be configurable for making XML structures alternatively to the currently formatting.
-
-Interface:
-- Icons (see Bugs/Additions folder)
-- Showing in "frameset-modules" which submodule you are currently inside. And ability to change submodule in the rightmost frame anyways - maybe as a panel in top of the pages (must be cached so all submodules must not be loaded each time...)? (Message-ID: <3ADE655892793D499E2FBF623045AF4B54E9A4@dbwdfx2f.wdf.sap-ag.de>)
+- Add wizard icon to see/clean up FlexForm data? Convert language mode?
+- Wizard for editing FlexForm DS XML!
+
+Kickstarter:
+- Update kickstarter so new great options are not wastefully never known.
+
+Usability / Interface:
+- Review general backend logic
+- TCEform presentation
+       - How tables fields are currently organized for eg. pages, tt-content etc. and if Tabs should be used more for some of those (example "Standard" / "Advanced" pages)
+- Skin (WinXP skin, what difference would that heretic idea make?)
+- Showing in "frameset-modules" which submodule you are currently inside. And ability to change submodule in the rightmost frame anyways - maybe as a panel in top of the pages (must be cached so all submodules must not be loaded each time...)?
 - Ability to create another Main/sub module structure in the backend (Daniel H: Message-ID: <BAB9A920.E95D%daniel@typo3.com>)
        - Change order, level, title, icon.
        - Use User TSconfig... and allow someone to create an extension to visually create a TSconfig output
-       - See DHs mail: Message-ID: <mailman.1060763871.6396.typo3-metadev@lists.netfielders.de>
        - Links could be going directly to the function menus inside modules as well!
+- Review Skinning API:
+       - Better backend HTML?
+       - More consistent re-use of classes / icons?
+
+Localization:
+[See "Localization workflow" below]
+
+Versioning/Workspaces:
+[See "Versioning/Workspaces" below]
 
 Context Sensitive Help (CSH):
 - Add multimedia?
 
 WEB main module/page tree:
-- The "Page Stop" flag, clicking the red "+" simply makes that point the NEW root in the tree frame (temporarily of course...), see JHs mail: Message-ID: <C018FF617C61AB4588D15494126A5C0F1F660B@Soulman.hanno-kirchhoff.de>
-- Option: For a frameset module, register the ID per sub-module, not just globally (see JH mail: Message-ID: <C018FF617C61AB4588D15494126A5C0F1F67AB@Soulman.hanno-kirchhoff.de>)
+- Option: For a frameset module, register the ID per sub-module, not just globally (JH asked)
 
 Web>List:
 - Add "New" to the clickmenu of eg. "be_users" (non-sorted items) when you want to copy a user into the list.
 - Add email function where you can 0) send email to single records email field, 1) all records on the clipboard, 2) all emails in a list of shown records, 3) all records in the PID. By emailing you can select to receive a copy yourself. Backend user must have name/email configured as from/reply-to/return-path information. Mails can be sent Bcc,CC or seperately. Can be used for lightweight newsletter feature! Maybe implement through some API to the Web>List module.
 - Page-tree-stop: Click on red "+" brings forth some kind of browser (list of pages, browseable, Web>List module feature?)
-- Add flag to TCA/[interface] which keeps a table from being listed in the list module. Probably an option which allows the display for admin-users.
-- Check that permissions are respected for the buttons in the control-panel of the List module
+- Add flag to TCA/[interface] which keeps a table from being listed in the list module. Probably an option which allows the display for admin-users. (Already made?)
+- Check that permissions are respected for the buttons in the control-panel of the List module (including for workspaces)
 - Why is web>list slow on new typo3.org?
-- Page TSconfig option: Only to select the table-headers for display (with record count), and only the extended view will show the records inside.
 - Support for "grouping": - eg. tt_content elements are grouped by "column" + "language". This should be reflected in the LISTING order (before ordered by the "sorting" column) OR maybe in a hierarchical display?
 - Support for tree-tables (that can be browsed).
 - Support for a "tree-group" -> a chain of tables which are displayed in a tree since each table has a config for a parent field in a former table. (Eg. DS: brand -> domain -> product).
-- BUG: no label when copying an item into the Web>List module...
-- FlexForm tree view / editing: 
+- Support for display of relations: Files, 1-M, M-M
+- FlexForm tree view / editing:
        - When a record contains a FlexForm the web>List module could display the fields inside in a nice tree structure which one could expand/collapse! Then by clicking "edit" for a brand you get an interface where you can edit *that branch* of the flexform! Brilliant way to manage large structures inside of flexforms!
                - Can you picture it? That would be like expanding an XML document by a node-tree and add/edit/delete/rearrange any of the internal informational pieces!
 
-               
 File>List:
-- BUG: UNIX: "RW" flag looks only on the permissions for the USER - not the group. So even if PHP via the group of a file can delete it, it is reported that it cannot.
+- BUG: UNIX: "RW" flag looks only on the permissions for the USER - not the group. So even if PHP via the group of a file can delete it, it is reported that it cannot. (Already made?)
+- Adding possibility to show files recursively (more levels), filter on a file name, search file content
+- From click-menu: Access to index files with indexed-search / create a "Indexing configuration" record for that folder / Initiate indexing of the "Indexing Configuration" for folder
 
 History/Undo:
-- Must present a page/content element view, so a page with content elements can be restored as a whole 
-- Undo must be able to restore attached files as well 
+- Undo must be able to restore attached files as well
 - Should be possible to disable for certain tables (can it be done already with TSconfig?)
-- Delete saved states (and save whole record content). 
-- Need to implement the diff-feature for windows as well (that is set configuration)
-  
-LDAP support:
-- See "APPENDIX: LDAP"
-
-DBAL:
-- Next step: Create PHP-test scripts which performs 98% of the SQL operations we need in TYPO3 and then let people try to implement this; We will then know about all the obstacles first-hand before we do any efforts to implement it.
-- See "APPENDIX: DBAL" for Kaspers internal notes on the subject.
-- "TCEmain/Multiple DBs" as well.
-- MySQL practice: "Maybe it's a good idea to quote all table and column names in later versions of typo3 to avoid further problems like this one." (Message-ID: <mailman.1052907363.19535.typo3-english@lists.netfielders.de>) Also good for DBAL? + create API functions for making INSERT/UPDATE query strings.
+- Delete saved states (and save whole record content).
 
 EM:
-- Code commenting
-- Display: Adding "back" buttons a few places.
 - Display: review-flag + link to review - cannot be overridden?
-- Display: Link to Introduction + other sections (typo3.org-API-script), getting started manual in doc/index.html (See extension "tstemplate_styler" which has a prototype!), homepage link
 - Display: After import, link to Install/Details.
-- Display: Clean up the red errors: Major / Minor errors, and make sure it does not report non-errors.
-- Display: Warning for extension of same classes?
 - Display: Better filtering, quicker listing
-- Feature: Specify preferred order of certain extensions.
-- Feature: Change order of loaded extensions
-- Feature: Dependencies includes minimum/max-version (Typo3, PHP, PHP-extensions, T3extensions)
 - Feature: [suggested by robert] resolving of dependencies like in apt-get (Debian package manager). Necessary extensions can be downloaded and installed automatically (idea: create dummy extension which depends on several extensions and acts like a package of extensions)
 - Feature: EM suggest clear-cache af scripts?
-- Feature: New category, "templates"
-- Feature: New review state: security-screened (light review, not quality oriented)
-- Feature: em_conf: "depreciated flag: Beskrivelse af, hvorfor den er depreciated"
-- Install: Select other repository URLS in selector box?
 - Install: Extensions which can point the import/export to a directory with import-files.
-- Install: Updates of plugin checks if there is a local manual.sxw file. If there is the manual is also downloaded. Maybe people can set a flag in the configuration that manuals should always be fetched. (Some of this is already implemented)
-- Install: Upgrade multiple extensions at a time.
-- Install: Upgrade single extension without getting full list from TER
-- Install: Import from online rep: search freetext, enter extension key etc...
 - Install: Getting from TER only already installed extensions.
 - Install: Flag: "Import ext"; "Show non-secure extensions" (show ALL ext., not only reviewed ones)
-- Install: Update button for an extension in the details view.
-- Install: After upload of extension then we should return to the "Information" view, not "Upload"
-- Install: At upgrade: That an extension can display the total changelog between the formerly installed version and the new one.
-- Install: Configuration for EM: Request most recent translations by default?
 - Upload: emconf.php should have the md5-part updated when upload to TER
-- CHECK: flag in [EXT] about if local/global extensions can be updated. (does it work?)
-- CHECK: Are single quotes accepted when writing the "conf.php" files?
 - CHECK: Better failure-tolerance when "fatal errors" occur in ext_localconf/ext_tables.php files!?
 - CHECK: Can Install Tool bypass including ext_localconf/ext_tables if there are errors in them?
 - BUG: EM-extMgm: caching af localconf + extTables configuration in ARRAY? Plus ?ndringer til API specs. (problem when those files includes classes etc... probably not possible)
-- BUG: Fix memory consumption problem.
-- BUG: backend shortcut links to EM pages does not carry the edit-file information. They should.
 - BUG: Clear cache files should remove ALL "temp_CACHED_*" files in typo3conf/ (not just the current two)
-- BUG: detection of single quotes in XCLASS and CONF.PHP file cases (and wherever a regex searches for code snippets!). 
-- BUG: MSIE4: Cannot make backup of extensions (and probably not export them either) because the header-mime-typen is not registered as it should be.
 - BUG: Download of extensions (compressed...) will sometimes NOT get the same MD5 key after being saved (with any browser it seems) as shown at the download link. Origin of error not know. Please help if you encounter the problem.
-- DOC: "Extension API" manual.sxw!
-- Check mailbox for more... ?
-- Related: The KickStarter Wizard, in particular a) cleaner code output, b) merging updates.
-
 
 The REGEX-{} problem:
 - BUG: Regexs; "Warning: Unmatched \{ in /home/sites/site14/typo3_src-3.5b3/typo3/mod/tools/em/index.php on line 1983" which is a ereg with { WITHOUT preceeding slash! (Message-ID: <003c01c275aa$c0c60c10$e3a1a33e@pentiumriv4v9a>, Message-ID: <20030729082437.79900.qmail@web11305.mail.yahoo.com>)
-  
-Install/Servers:
-- FIX: Check safe_mode? Check open_base_dir? (Message-ID: <B9B8E356.1CE0%typo3@ilveneto.net>)
-- FIX: To get PHP to handle PATH_INFO and PATH_TRANSLATED information correctly with this setup, the php parser should be compiled with the --enable-discard-path configure option. 
-- FIX: The "php_sapi_name()=="cgi"||php_sapi_name()=="isapi"" problems (Message-ID: <ADEEJCHPNMOFKAAOJJKKCEKMCAAA.martin.kokes@sitewell.cz>, Message-ID: <200304071146520757.0097D495@smtp.worldonline.dk>, Message-ID: <BACDA028.F428%daniel@typo3.com>)
-- CHECK: MD5 problem on Apache/Windows (Message-ID: <001901c26aeb$99db4c60$a9695651@NIGELJ>)
-- CHECK: Security: Can HTTP_SERVER_VARS be overridden from URL if global vars are enabled???
-- [Ask Michael Stucki for an overview of bugs...?]
-- TYPO3_PORT bug (Message-ID: <005f01c2df3f$4006db00$0100a8c0@knoell>)
-- BUG: open_base_dir problem with tempnam() (affects: tidy, diff, new resource textfiles created in Web>Template/Info, Indexer (using temp-name for input from pdftotext)
-       -> Renes t3lib_exec class useful here?
-
-BE Language:
-- There are a few mails in the Translations mail folder. These files contains some translations which must be integrated manually...
+       - Should be fixed by "[{]..." instead!
 
 Filepermissions of source:
 - Test that these permissions work OK:
@@ -290,6 +290,174 @@ Filepermissions of source:
   - cd typo3_src/typo3/
   - chmod 755 ext/
 
+SQLengine (t3lib_sqlengine):
+- Finish t3lib_sqlengine
+  - Test and compare against MySQL lookups
+  - XMLdb: Lave table locks
+  - Open Office / CSV tests (proof-of-concept)
+
+
+
+
+
+*******************************
+Versioning/Workspaces:
+*******************************
+
+- TemplaVoila and workspaces:
+       - Test TemplaVoila with building site
+       - Mapping of IDs / soft-references?
+
+- CVS:
+- Notice:
+       Jason: Compare with his mail.
+       Benoit, Ingo, Dev-list:
+               - Document for download
+               - Tar ball + CVS
+               - TODO for remaining problems
+               (Invoice for ingo)
+               - TemplaVoila  is updated to support as well.
+       Dimitri: Info about how to proceed.
+
+*************
+- Preparation for next week.
+
+----------------------------------
+Frontend Preview:
+- BUG: New pages, setting to hidden are still displayable and shown in menu!
+?      - tslib_content::getPidList(); TEST Mount points / Use offline UID values for "page" swapmodes; This is probably more natural for preview cases.
+?      - versionOL() implementations missing:
+               - tslib_pibase::pi_getCategoryTableContents()
+               - tslib_content::checkPidArray()
+               - tslib_content::checkPid()
+               - tslib_content::exec_mm_query()/-_uidList() [These seems NOT to be used anymore!]
+- In tslib_fe, this->contentPid is set to "_ORIG_UID" when a versionized page have swapmode set to "0". However this is not completely correct to do: Strictly the "_ORIG_UID" value should be used for tables where "versioning_followPages" is set and for others not. However this is a working quick-fix to display content elements at least!
+       - t3lib_page::getPageOverlay() - because pages_language_overlay records have "versioning_followPages" set this should be observed when selecting language overlay records. But should it be hardcoded or something better?
+
+Backend preview:
+- Permissions reflected in buttons and clickmenus.
+- Logging:
+       - Finally define logging in tcemain!
+
+TCEmain commands:
+- copy:
+       - copying versions:
+               - with references in workspace?
+               - "Page" types?
+               - "Element" types?
+       - Copying depends on "new" versioning type: Element, page, branch!
+       - Check destination if versionized branch / stage
+       - Copy a page in workspace will not copy the contents?
+       - Copy branch in workspace which already has versions - what does it take?
+       - Import/Export function?
+       - Web>Page modules copy function for localization
+- localize command
+       - ?
+
+Versioning API:
+- (Support for) swapping using temporary file (instead of using negative ID)
+- Way to change versioning type from element to page to branch for new records?
+
+Check Various:
+- Auto publishing: Might not work with "Publish only "Publish" stage" because swapped elements will be in editing stage or so!
+
+Workspace Manager TODO:
+- Workspace admin list
+
+Preview:
+- Dualview:
+       - Implement links in notification email + only one notification per. "instance" of TCEmain
+       - Allow preview by non-be-logins through some token-facility (links from tcemain-mails)
+               - Works for certain timespan
+               - Sets cookie? (for workspace browsing)
+
+BUGS:
+- Import/Export module:
+       - In draft workspace: importing a treestructure when "newPagesVersioningType" is set to "1" (new pages as "branch" versions) will only create root point and no subsequent records.
+       - Correct references for softreferences on import.
+
+
+-----LATER:
+
+- Branch versioning:
+       - Intelligent swapping of "sub-element" ids that CAN be traced back to the original? (solution to loosing anchor point and inter-version references?)
+- MySQL/DBAL:
+       - 4.0.14 fails with -1 uid! (4.0.18 is ok eg.)
+       - Correction possible:
+               -> ALTER TABLE jlajlajla AUTO_INCREMENT = 123
+       - Problems with other RDBMS because ID values cannot be changed at all!
+- Swapping consequences:
+       - UID references for such as the sys_history and sys_log table are misleading.
+       - Branchpoints being swapped will swap their UIDs just like "page" and "element" versions - but in the backend the offline UID of "branch" versions are used heavily. This means references to the branchpoint will be invalid when published.
+
+
+*************************
+Localization workflow:
+*************************
+- Export Flow:
+       - Select language
+       - Select tree levels / exclude individual pages/branches from translation / Way to exclude specific elements from localization
+               - We can imagine having translation configuration records in branches defining some presets that export files are related to: Thus we can ensure the same settings are used for both import and export. Also they could contains diff-info for flexforms!
+       - Export mode:
+               - Export needs only (updates/new)
+                       - Options (depending on file format):
+                               - Include other data for view of context
+                               - Include any diff-source data? (alternatively based on previously written file in XML/ser. array format!)
+                               - Include current translation or not (if not, if would be because of TRADOS based situations where a previous file exists to compare a new file with and a file with only the translation is returned.)
+               - each page in single file OR all pages in one file
+       - Export Formats:
+               - Generic XML/ser.array (for TYPO3 translation module which will be made for this purpose: Contains data, existing translation, diff-source, timestamps and hashes, like locallang-XML...)
+                       - Can contain meta data so their starting point and configuration can be re-loaded from a location on the filesystem to where they can also be re-written!!!
+               - HTML (for TRADOS etc.)
+               - XLS/SXC (for excel translation)
+               - SXW / HTML (for OO Writer translation: Put into a table with columns: id/data/translation/colored-diff-view/OK-sign-off
+               - Create workflow items to work from!
+- Import Flow:
+       - Select file / upload
+               - Formats:
+                       - ANY format is converted into internal standard array
+               - Create new elements via localization API in tcemain (to have l10n_mode per. field respected!)
+               - Generate $data array for tcemain from file IDs
+                       - Options:
+                               - Can deselect certain parts manually
+                               - If original has changed, automatically warn/hide/deselect?
+                               - If translation matches current already (if a previous import was done), automatically hidden/deselect/notify? (preference can depend on type of file format)
+- Analyse a page:
+       - Pages:
+               - If no Page Translation Overlay: New
+               - If Page Translation Overlay: Update
+               (Maybe use hidden page translation overlays to identify pages picked for localization? This would work pretty fine I think.)
+       - Records in general:
+               - if [ctrl][languageField] AND [ctrl][transOrigPointerField] is set, select all records with 'default' language (ignoring 'ALL'/-1) and for each:
+                       - if no translation found: new
+                       - if translation found: update
+                       - NOTICE: translations can be found in external tables (like pages_language_overlay)
+               - selected by sorting order according to [ctrl]
+               - TemplaVoila: Here a special selection could apply for tt_content elements based on references in the DS. That would leave out all non-placed content elements. But in fact I rather say that we should NOT do it this way and instead clear out such elements so a general selection of the elements from the page is enough. Anyway, it should be possible though.
+       - Field selection:
+               - Option: Work only on fields where "l10n_cat" is "text" or "image" (selected!). Alternatively, use "l10n_mode" to filter as default (do not show "exclude" fields for instance!)
+       - ERROR reporting:
+               - If two or more records are claiming to be translations of another (for pages_language_overlay, tt_content etc.)
+- Limitations:
+       - Cannot work with content which has no parent/child relationship. This is the case for:
+               - Old style column based localization
+               - FlexForm fields with <langChildren> = 0
+- Translation module:
+       - Based on concepts from llxmltranslate and supporting the generic XML fileformat translations can be exported in.
+
+
+- Localization document!!!
+- Needs:
+       - Clean-up for Unused TemplaVoila elements on a page!
+               -> Would need a reference index available.
+
+
+
+
+
+
+
+
 
 
 **************************
@@ -298,21 +466,46 @@ DOCUMENTATION TODO list
 Extensions:
 - Document how to make "static_template_files" in an extension (Example: How to make a standard templates in extensions to TYPO3) => Rene Fritz doing that?
 
+About Versioning ("Inside TYPO3")
+- Versions can be done on element, page or branch level
+       - In any case a pure copy of the element/branch is produced
+       - "element": Copy of element (pages, tt_content, pages_lang_overlay, sys_template)
+       - "page": Copy of element + tables configured "versioning_followPages" (tt_content, pages_lang_overlay)
+       - "branch": COMPLETE copy of the branch to predefined level.
+- About unique fields:
+       - They are NOT enforced in versionizing - this may be a problem when BRANCHES are exchanged because currently there is no check done if a value inside a versionized branch collides with values in the main branch!
+       - 'AND pid>=0' should be used to avoid problems!
+       - In tcemain::getUnique() there already is a check if "pid>=0"
+- Backend user access to elements is based on the access restrictions (editing) for the official element. For pages; they carry their own access permissions with them. Notice that page permissions are NOT changed to the user making the new version!!!
 
+About Charsets ("Inside TYPO3")
+       In TYPO3s backend charsets used have traditionally been the charset of the backend user language. This is of course a big problem (when other than western european languages are involved) since the encoding of content is thus depending on the charset of the user and not of the system
+       From TYPO3 3.6.0 you can define a global charset for the whole database. This can be any local charset like iso-8859-1 or windows-1250. But for multilingual sites it is recommended to use utf-8 since that can represent all languages.
+       You set the global charset in a localconf file like this: $TYPO3_CONF_VARS["BE"]["forceCharset"] = "utf-8";
 
+       Here are a few notes:
+       - JavaScript functions to convert cases to upper/lower seemed to work with all letters from any charset. In the old days this was not the case and thus functions in eg. "jsfunc.evalfield.js" compensated. This is now disabled since it is apparently not needed anymore.
+       - When one enters eg. danish letters in a form when the russian charset is used, these letters are converted to HTML entities, eg. "&#248;" - this is NOT changed. The philosophy is that IF anyone needs to use characters outside the range of the used backend character set he should use UTF-8 instead. Theoretically we COULD allow the entities to be shown correctly but we dont for now. Better use the right charset.
 
 
+About System Extension:
+- Explain that they are the only ones distributed with TYPO3 core.
 
-*****************
-NOTES
-*****************
-- Undo/Redo behaviour strange?  => This bug report turned out to be about frontend caching: If you saved a value and quickly after (probably within a second) pressed "Undo" button, then the (browser)cached content would be shown. It was obvious because the sys_history table WAS updated, only the form wasnt.
+Write:
+- "css_styled_content" documentation
+- Extension Programming Tutorials: What is status??
 
+Review:
+- doc_core_tstemplates (badly needs it!), doc_core_tsbyex, doc_tut_frontend, doc_tut_n1/n2/n3
+- TSref overhaul
+- "doc_tut_backend" revised/updated.
+
+Remove:
+- doc_core_usermgm : DELETE THIS!
 
 
-  
 ******************************************
-APPENDIX 1: CLEANING UP FOR TYPO3 3.6.0
+APPENDIX: CLEANING UP FOR TYPO3 3.6.0
 ******************************************
 Cleaning for 3.6 involves:
 - XHTML transitional compliance
@@ -336,6 +529,7 @@ Status 27/10 (TYPO3 Core + extensions "cms" and "lang" in sysext/ (but without g
 - 2000 @param and @return tags in 800 functions still needs commenting (3800 tags in 1400 functions has already been done)
 - 50 scripts still needs cleaning for XHTML, comments and single-quotes
 
+
 Note on XHTML compliance:
 - We strive for XHTML transitional / frames
 - Certain incompatibilities has been allowed for practical reasons (for now). These include:
@@ -352,6 +546,68 @@ NOTES ABOUT WHICH SCRIPTS HAS BEEN CLEANED AND WHICH REMAINS:
 Finished (XHTML, quotes, comments, revised-note), XQCR:
 (Indented scripts are still missing clean-up)
 
+typo3/___________________________________________:
+XQCR: alt_clickmenu.php
+XQCR: alt_db_navframe.php
+XQCR: alt_doc.php              TODO: Check "redirect" GPvar for XSS hole!?
+XQCR: alt_doc_nodoc.php
+XQCR: alt_file_navframe.php
+XQCR: alt_intro.php
+XQCR: alt_main.php
+XQCR: alt_menu.php
+XQCR: alt_menu_sel.php
+XQCR: alt_mod_frameset.php
+XQCR: alt_palette.php
+XQCR: alt_shortcut.php
+XQCR: alt_toplogo.php
+XQCR: alt_topmenu_dummy.php
+XQCR: browse_links.php
+XQCR: browser.php
+XQCR: class.alt_menu_functions.inc
+XQCR: class.db_list.inc
+XQCR: class.db_list_extra.inc
+XQCR: class.file_list.inc
+XQCR: class.show_rechis.inc
+XQCR: db_list.php
+XQCR: db_new.php
+XQCR: db_new_content_el.php
+default.htm
+default.html
+XQCR: dummy.php
+XQCR: file_edit.php
+XQCR: file_list.php
+XQCR: file_newfolder.php
+XQCR: file_rename.php
+XQCR: file_upload.php
+XQCR: index.php                TODO: Check "redirect" GPvar for XSS hole!?
+-QC-: index_re.php
+-Q-R: init.php
+XQCR: listframe_loader.php
+XQCR: login_frameset.php
+-QC-: logout.php               TODO: Check "redirect" GPvar for XSS hole!?
+XQCR: move_el.php
+XQCR: show_item.php
+XQCR: show_rechis.php
+-QCR: tce_db.php
+-QCR: tce_file.php
+XQCR: template.php
+XQCR: view_help.php
+XQCR: wizard_add.php
+XQCR: wizard_colorpicker.php
+XQCR: wizard_edit.php
+XQCR: wizard_forms.php
+XQCR: wizard_list.php
+XQCR: wizard_rte.php
+XQCR: wizard_table.php
+XQCR: wizard_tsconfig.php
+
+XQCR: mod/help/about/index.php:
+XQCR: mod/tools/em/index.php
+XQCR: mod/web/info/index.php
+XQCR: mod/web/func/index.php
+XQCR: mod/web/perm/index.php
+
+
 t3lib/________________________________________:
 XQCR: t3lib/class.t3lib_admin.php
 XQCR: t3lib/class.t3lib_arraybrowser.php
@@ -364,42 +620,43 @@ XQCR: t3lib/class.t3lib_clipboard.php
 -QC-: t3lib/class.t3lib_cs.php
 XQCR: t3lib/class.t3lib_diff.php
 XQCR: t3lib/class.t3lib_div.php
-               t3lib/class.t3lib_dmailer.php   [Pekue?]
-               t3lib/class.t3lib_exec.php              [Rene]
-               t3lib/class.t3lib_extfilefunc.php
+               t3lib/class.t3lib_dmailer.php                   [Jan-Erik!]
+-QC-: t3lib/class.t3lib_exec.php
+-QCR: t3lib/class.t3lib_extfilefunc.php
 -QCR: t3lib/class.t3lib_extmgm.php
 -QCR: t3lib/class.t3lib_extobjbase.php
 XQCR: t3lib/class.t3lib_foldertree.php
 -QCR: t3lib/class.t3lib_formmail.php
-               t3lib/class.t3lib_fullsearch.php
-               t3lib/class.t3lib_htmlmail.php  [Pekue?]
+               t3lib/class.t3lib_fullsearch.php                [Kasper]
+               t3lib/class.t3lib_htmlmail.php                  [Jan-Erik?]
 XQCR: t3lib/class.t3lib_iconworks.php
-               t3lib/class.t3lib_install.php
+-QCR: t3lib/class.t3lib_install.php
 -QCR: t3lib/class.t3lib_loaddbgroup.php
 -QCR: t3lib/class.t3lib_loadmodules.php
 -QCR: t3lib/class.t3lib_matchcondition.php
-               t3lib/class.t3lib_modsettings.php       [Rene]
+-QCR: t3lib/class.t3lib_modsettings.php
 XQCR: t3lib/class.t3lib_page.php
 XQCR: t3lib/class.t3lib_pagetree.php
 XQCR: t3lib/class.t3lib_parsehtml.php
-               a.Q..: t3lib/class.t3lib_parsehtml_proc.php (45)
+XQCR: t3lib/class.t3lib_parsehtml_proc.php
 XQCR: t3lib/class.t3lib_positionmap.php
-               t3lib/class.t3lib_querygenerator.php
+               t3lib/class.t3lib_querygenerator.php    [Kasper]
 -QCR: t3lib/class.t3lib_readmail.php
 XQCR: t3lib/class.t3lib_recordlist.php
 -QCR: t3lib/class.t3lib_scbase.php
+-QC-: t3lib/class.t3lib_sqlengine.php
 -QCR: t3lib/class.t3lib_stdgraphic.php
-               t3lib/class.t3lib_superadmin.php
-               t3lib/class.t3lib_svbase.php            [Rene]
--QCR: t3lib/class.t3lib_tceforms.php
-               t3lib/class.t3lib_tcemain.php
+XQCR: t3lib/class.t3lib_superadmin.php
+-QC-: t3lib/class.t3lib_svbase.php
+-QCR: t3lib/class.t3lib_tceforms.php                   [Kasper - 4.0]
+               t3lib/class.t3lib_tcemain.php                   [Kasper - 4.0]
 XQCR: t3lib/class.t3lib_timetrack.php
 -QCR: t3lib/class.t3lib_transferdata.php
 XQCR: t3lib/class.t3lib_treeview.php
 XQCR: t3lib/class.t3lib_tsfebeuserauth.php
 -QCR: t3lib/class.t3lib_tsparser.php
-               t3lib/class.t3lib_tsparser_ext.php
-               t3lib/class.t3lib_tsstyleconfig.php
+               t3lib/class.t3lib_tsparser_ext.php              [Kasper]
+               t3lib/class.t3lib_tsstyleconfig.php             [Kasper]
 -QCR: t3lib/class.t3lib_tstemplate.php
 XQCR: t3lib/class.t3lib_userauth.php
 XQCR: t3lib/class.t3lib_userauthgroup.php
@@ -413,9 +670,6 @@ XQCR: template.php
 -QCR: t3lib/stddb/tbl_be.php
 
 
-sysext/lang/___________________________________________:
-XQCR: lang.php
-
 sysext/cms/___________________________________________:
 XQCR: tslib/class.tslib_content.php
 XQCR: tslib/class.tslib_fe.php
@@ -454,150 +708,55 @@ XQCR: layout/db_layout.php
 XQCR: layout/class.tx_cms_layout.php
 XQCR: layout/db_new_content_el.php
 
-typo3/___________________________________________:
-XQCR: alt_clickmenu.php
-XQCR: alt_db_navframe.php
-XQCR: alt_doc.php              TODO: Check "redirect" GPvar for XSS hole!?
-XQCR: alt_doc_nodoc.php
-XQCR: alt_file_navframe.php
-XQCR: alt_intro.php
-XQCR: alt_main.php
-XQCR: alt_menu.php
-XQCR: alt_menu_sel.php
-XQCR: alt_mod_frameset.php
-XQCR: alt_palette.php
-XQCR: alt_shortcut.php
-XQCR: alt_toplogo.php
-XQCR: alt_topmenu_dummy.php
-XQCR: browse_links.php
-XQCR: browser.php
-XQCR: class.alt_menu_functions.inc
-XQCR: class.db_list.inc
-XQCR: class.db_list_extra.inc
-XQCR: class.file_list.inc
-XQCR: class.show_rechis.inc
-XQCR: db_list.php
-XQCR: db_new.php
-XQCR: db_new_content_el.php
-default.htm
-default.html
-XQCR: dummy.php
-XQCR: file_edit.php
-XQCR: file_list.php
-XQCR: file_newfolder.php
-XQCR: file_rename.php
-XQCR: file_upload.php
-XQCR: index.php                TODO: Check "redirect" GPvar for XSS hole!?
--QC-: index_re.php
--Q-R: init.php
-XQCR: listframe_loader.php
-XQCR: login_frameset.php
--QC-: logout.php               TODO: Check "redirect" GPvar for XSS hole!?
-XQCR: move_el.php
-               show_item.php                           [Peter Kuehn]
-XQCR: show_rechis.php
--QCR: tce_db.php
--QCR: tce_file.php
-XQCR: template.php
-XQCR: view_help.php
-XQCR: wizard_add.php
-               wizard_colorpicker.php          [Matthias]
-XQCR: wizard_edit.php
-XQCR: wizard_forms.php
-XQCR: wizard_list.php
-XQCR: wizard_rte.php
-XQCR: wizard_table.php
-XQCR: wizard_tsconfig.php
-
-XQCR: mod/help/about/index.php:                TODO: Modernize content
-               mod/tools/em/index.php
-XQCR: mod/web/info/index.php
-XQCR: mod/web/func/index.php
-XQCR: mod/web/perm/index.php
 
-
-typo3/ext/_____________________________________:
+typo3/sysext/___________________________________________:
 OK             aboutmodules/
-               belog/          (2 / 500)
-               beuser/         (1 / 1300)
-               cms_plaintext_import/   (1/200)
-OK             conf_userts/
+               belog                   (2 / 500) [Kasper - 4.0]
+                       - Needs a vision! Couldn't the Log be more useful?
+               beuser                  (1 / 1300) [Kasper - 4.0]
+                       - Add option to Create backend users there! (backend users, groups, filemounts)
+OK             cms/
 OK             context_help/
-               css_styled_content/             (1/200)         [H]
-               direct_mail/            (3/2500)                [Peter Kuehn] + class.t3lib_htmlmail.php
-OK             direct_mail_subscription/
+               css_styled_content              (1/200)         [H]
+                       - Manual written?
 XQCR:  extra_page_cm_options/
--QCR:  extrep/
-               extrep_wizard/          (2/4500)                [H]
-               feuser_admin/                                           [testsite...] - XHTML
-               freesite/                       (2/1600)
 XQCR:  func_wizards/
-               imagelist/                      (1/250)
-               impexp/                         (2/2000)                [H]
-               indexed_search/         (4/3500)                [H] [testsite...]
-               info_pagetsconfig/      (1/200)
-OK             install/                                                        + class.t3lib_install.php / class.t3lib_superadmin.php
-               lowlevel/                       (2/800)                 [H]
-XQ-R:  metatags/
-               phpmyadmin/                     (1/130)
-               plugin_mgm/                     (1/300)         ->move? remove?
-               quickhelp/                      (1/80)
-               rte/                            (5/1900)                [H]
-OK             rte_conf/
-OK             setoldpluginlist/
-               setup/                          (1/400)
-OK             skin1/
-OK             static_file_edit/
-               sys_action/                     (1/400)
-               sys_messages/           (1/450)
-OK             sys_note/               
-               sys_notepad/            (1/130)
-OK             sys_stat/
-               sys_todos/                      (1/1100)                
-OK             sys_workflows/          
-               taskcenter/                     (4/400)                 
-               taskcenter_modules/             (1/100)
-               taskcenter_recent/              (1/150)
-               taskcenter_rootlist/    (1/50)
-               tipafriend/                             (1/260)         [testsite...]
-OK             tsconfig_help/
-OK             ts_language_de/
-OK             ts_language_dk/
-OK             ts_language_fr/
-OK             ts_language_nl/
-OK             ts_language_no/
-               tstemplate/                             (1/450)         + class.t3lib_tsparser_ext.php (1700)
-               tstemplate_analyzer/    (1/250)
-               tstemplate_ceditor/             (1/250)
-               tstemplate_info/                (1/450)
-               tstemplate_objbrowser/  (1/500)
-               tstemplate_styler/              (1/1700)
-OK             tt_address/     
-               tt_board/                               (3/1200)
-               tt_calender/                    (1/170)         [testsite...]
-               tt_guest/                               (2/350)         [testsite...]
-               tt_news/                                (1/750)         [testsite...]
-               tt_poll/                                (2/400)         [testsite...], [Rene F]
-               tt_products/                    (5/2000)        [testsite...], [? Peter Kuehn]
-               tt_rating/                              (3/550)         [testsite...], [Rene F]
-               viewpage/                               (2/200)
-XQRC:  wizard_crpages/                 
+XQC-:  impexp
+XQC-:  indexed_search
+XQCR   info_pagetsconfig/
+               install/                                        [ingmar]
+                       - Clean-up of the Install Tool in general!
+OK             lang/
+               lowlevel                        (2/800) [Kasper - 4.0]
+                       - Extend support and finish it with the efforts soon to be done for TCEmain.
+OK             setup/
+OK             sv/
+               sys_action                      (1/400)
+                       - Extend with API for adding custom action scripts
+                       - flexforms for configuration!
+OK             sys_note
+               taskcenter                      (4/400) [Julle]
+OK             tsconfig_help
+                       - Needs maintenance plan
+               version                         [Kasper - 4.0]
+                       - (See Kaspers personal todo and Appendix about versioning in this document)
+               viewpage                        (2/200)
+XQRC:  wizard_crpages/
 XQRC:  wizard_sortpages/
 
-32,5 K Codes lines....
 
 For all extensions (even those approved):
 - Remember to add package tags to all classes!
-- Write documentation for each
+- Write documentation for each (CSH is fine enough).
 - Check HTML source / CSS usage / XHTML compliancy / That icons are skinnable (add to "skin360")
-- $LANG->getLL() are htmlspecialchars()'ed
+- $LANG->getLL() are htmlspecialchars()'ed / second argument is "1"
 
 
 
 
 
 *******************
-APPENDIX 2: XHTML
+APPENDIX: XHTML / XSS
 *******************
 Overview of implications before implementation:
 - UTF-8 encoding is in fact expected by XML! So the real charset must be set
@@ -627,253 +786,51 @@ Practical steps for creating XHTML compliance:
 ([[:space:]]+)(class|face|hspace|vspace|rowspan|bgcolor|src|colspan|align|color|valign|border|width|height|cellpadding|cellspacing)=([^[:space:]>"']+)
 ... and replace with: \1\2="\3"
 
+-----------
+Teststring for XSS bugs and SQL injection:
+       >><b><i>asdf</i></b>-\-\\-\"-\'-"-'-
 
 
-
-
-*****************
-APPENDIX: Versioning thoughts:
-Authors: Julle and Kasper.
-*****************
-- Versions can be done on page level or element level
-- In any case a pure copy of the element is produced
-- For pages only configured tables will be copied, eg:
-       - Page
-         - tt_content
-         - pages_lang_overlay
-
-- Versioning (for single elements including single "pages" record) is based on 
-       - ONE element having an official position in the TYPO3 page tree, thus holding the official "uid" of the element! (If this element was deleted from the system, so are all versions of that element!)
-       - All versions of this one element being a) at pid "-1" and b) a field "real_id" pointing to the official UID
-       - Pages-versioninig: For all elements belonging to a version of a page; They are just copied and has no official new version or binding back to whatever element they came from. They just came along. And in fact, they could even have their own version history for them selves!
-       - Backend user access to elements is based on the access restrictions for the official element. THis must be implemented on core level.
-- Tables supporting versioning will have these fields:
-  - real_id    - Pointing back to official in-tree version
-  - ver_id     - Incremental integer (version number)
-  - ver_label  - Version label, eg. "1.1.1" or "Christmas edition"
-  - editlock   - Flag (core support independant of versioning) which IF SET makes it impossible for anyone to edit the record. The flag must be unset before editing can occur. (Is a feature which can be used to write-protect a version)
-  - pid/uid should have "signed" attributes in MySQL (pid = -1, uid =-xxxx for swapping).
-
-- Preview in fronend
-  - At page level, done with a simple selector in the AdminPanel. Just like date/user/hidden is done.
-  - For other element, time will show.
-
-- Backend module for versioning:
-  - Diff-ing between versions.
-
-- Version-swapping log?
-
-- ID-swapping for versioned elements
-  - Version from archive (future/past) will get the uid of the "real_id", the official element with "real_id" will get the new versions old uid.
-  - For pages-records: We will have to swap the "pid" values of all (versioning-included) elements on the pages.
-  - Swapping three-step process:
-       uid             uid     real_id
-  PUB: 13      -->     -13     247
-       247     -->     13      -
-       -13     -->     247     13
-  - Pages-versioning and the impact of NOT swapping tt_content element uids:
-       - Loose anchor-points, manually made (could be hack-fixed by some intelligent copying tracking)
-       - TemplaVoila references to elements from other pages (will break, however bad practice to reference elements not in some sort of central library which will NEVER be page-versioned anyways)
-       - Insert-records could potentially do the same
-       - Impact assesment: Low.
-       - Clean-up module (in templavoila?) could also track such things
-       - Problems for non-templavoila sites would be low.
-       
-- Backend:
-  - For single-editing of records we will show a version list from which to choose a version to edit (just like the delete button is also hidden at multi-edit)
-  - In list-module we might display a) an icon to a version selector (where diff-ing could be done, swapping performed etc.), b) show archive versions as children in the listing.
-  - In Page module + TemplaVoila page module: There will be a version selector implemented so users can switch around between versions.
-
-
-
-
-
-
-
-
-
-******************
-APPENDIX: Charsets
-******************
-In TYPO3s backend charsets used has traditionally been the the charset of the backend user language. This is of course a big problem since the encoding of content is thus depending on the charset of the user and not of the system
-From TYPO3 3.6.0 you can define a global charset for the whole database. This can be any local charset like iso-8859-1 or windows-1250. But for multilingual sites it is recommended to use utf-8 since that can represent all languages.
-You set the global charset in a localconf file like this: $TYPO3_CONF_VARS["BE"]["forceCharset"] = "utf-8";
-
-Here are a few notes:
-- JavaScript functions to convert cases to upper/lower seemed to work with all letters from any charset. In the old days this was not the case and thus functions in eg. "jsfunc.evalfield.js" compensated. This is now disabled since it is apparently not needed anymore.
-- PHP Upper/Lowercase - not tested.
-- When one enters eg. danish letters in a form when the russian charset is used, these letters are converted to HTML entities, eg. "&#248;" - this is NOT changed. The philosophy is that IF anyone needs to use characters outside the range of the used backend character set he should use UTF-8 instead. Theoretically we COULD allow the entities to be shown correctly but we dont for now. Better use the right charset.
-
-
-
-******************
-APPENDIX: LDAP
-******************
-- hash of base-dn skal v?re cleaned op. M?ske prefixe usernames med 10-char hash af base-dn.
-- Moduler som "User Admin" og andre steder, hvor "usergroups" feltet benyttes skal sl? det op i LDAP uden authentication. -> Faktisk er det IKKE kun usergroups men ALLE felter, som kan mappes!!!
-- Ved record creation: LDAP default group.
-
-? Getting info like usergroups, email, name?
-? Case-sensitivity of the DN in general?
-? DN entering..
-! MD5-hashed passwords
-
-1) AUTO -DN : Array of DN's, searched in order.
-2) Select dn: User selects the DN he is from.
---------------------------
-So we are looking at two scenarios:
-1) fe_/be_user records are automatically created when a LDAP authenticated user loggs in. Configurable is: Where it applies (fe/be) and if any additional LDAP info we can get should be mapped to MySQL records (like name, email, address or user-groups uid's)
-2) fe_/be_user records basically is the same as before (they hold a reference to LDAP user) and authentication is the same, BUT in this case fe_/be_ users are created manually, maybe using a tool of some sort which can look up the whole list of users in LDAP and allow the T3 admin to check off which users to make references to (this would be "Batch create").
-3) Mapping of ONE typo3 user to MANY LDAP users...
-
-- Also have the possibility of local users: Thus 1) FIRST a lookup is done in LDAP, 2) THEN if this fails we look in the local mysql table. (Well, this solution is straight forward since a user must ALWAYS have a record in the local MySQL table...)
-
-
-Also see:
-- [Kasper] "LDAP" folder in Mailbox 
-
-
-********************
-APPENDIX: DBAL
-********************
-Issues:
-- Install tool, analysing SQL files, comparing, dumping etc. How? (MetaDatabase, MetaTables)
-- case-folding?
-- reserved words (uid!!) Which R-words?
-- LIMIT. selectLimit(x,x)
-- mysql_fetch_assoc substitute (seems to be there)
-- escaping chars with special function!!!
-- datatypes? Integer not there? LOB's a problem?
-- Internal functions: AVG, SUM, count
-- mysql_num_rows() = recordCount()
-- autoinc. of numbers with GenID()
-- how about joining?
-- ALTER TABLE syntax?
-
-Analysis:
-- SUPPORT: Core (+ 'cms') will support all DBs, extension MAY support a SUBSET of DBs only.
-- EM: MySQL will be the main supported database. sql-files for install tool follows MySQL syntax. Comparison can be done if ADOdb allows us to read table/field info (will need mapping of datatypes), updates may only be done if we support it. Not important. People CAN update manually with other DBs.
-- NAMING: Reserved words and case restrictions are a real problem. For now, lets call it unacceptable. Handling of this would include 1) conversion table in ADOdb for result set assoc. key mapping AND mapping of fields in the queries!
-- ESCAPING: Escaping characters will be very annoying because we'll have to pass an array first to stripslashes, then to add DB-specific slashes, then make Query. But we can for MySQL (and similar) bypass this...
-- LOBs: Working with LOBs seems to be extremely irritating, inserting them separately (In oracle)!! How are we knowing anyways that this is a LOB? Solution might be to bypass for MySQL and for problem DBs send the UPDATE/INSERT row (must be array then!!!) through a filter which returns new row plus a blob row for update afterwards.
-- AUTO-ID: Auto-incrementing is also a BIG irritation! Currently all inserts DO NOT set the id column!!! All insert statements must include the new, correct field (at least for the problem DB's like Oracle)
-- BTW: Escaping and BLOB handling seems to require the same for all INSERTs and UPDATEs: A field_array passed to function. Auto-id may relate to this (at least it will be required all places ...)
-- SQL: Will have to split up LIMIT selects. New escaping in SELECT queries. INSERT/UPDATE from field_arrays + processing, mysql_fetch_assoc() function "pandan"
-
-API:
-SELECT: 
-- Separate LIMIT from the rest. 
-- JOINS ? Functions like AVG, SUM?
-- Escaping of search strings
-
-UPDATE/INSERT:
-- Array passed to function if not MySQL
-  Function has: possible "autoincrement" field argument; If Oracle, auto-id is handled; If Oracle, BLOB-array is returned for separate insertion.
-
-
-ORACLE does not allow us to CHANGE existing fields into something else - only create new fields, otherwise we must export/import database.
-
-Other notes:
-- Datatypes to use for integers and others? Date/Time not a problem because typo3 uses integers.
-- AVG, SUM, COUNT - will they be there?
-- I'll need access to Oracle, MSSQL, PostGres - basically the databases we are going to connect to!!!
-- JOINS???
-- Having some lookup table (not TCA, because this is very individual from site to site) telling us which database (name+brand+server) a table is coming from, if not the default database. This also means that we will have an array of databases set up (one being default)!
-
-180303 / Oracle:
-- all fields/tablenames must be quoted
-- a quoted value cannot be inserted into an integerfield!!!
-
-
-insert... "kasper"
-
-Related issues: 
-- LPE: DB/DB sync.
-
-ORACLE / DB2:
-- u: db2admin
-- p: password
-
-Also see:
-- [Kasper] "DB Abstraction" folder in Mailbox 
-
-
-**********************
+****************
 APPENDIX: LPE
-*********************
-Syncronization:
+****************
+Syncronization (JH thoughts, general LPE):
 DB -> DB (1):
 - Production environment, which can dump configured set of tables to live server database and back. This is controlled from Production env.
 - Live server has two databases: One which accepts content from P (and is never written to) (P->L). One which ARE written to and is READ back by P (L->P).
 - The "P->L" database has a "backup" (db1, db2) where the "idle" database is the one being updated and after the update it's switched with the live db, which is now idle. The "L->P" database is not affected by this timing issue.
-- uploads/* dirs (and any files at all) might be syncronized by general rsync/ftp syncronization. Both ways? Primarily from P->L. Basically this sync. might take the whole sourcecode with it... 
+- uploads/* dirs (and any files at all) might be syncronized by general rsync/ftp syncronization. Both ways? Primarily from P->L. Basically this sync. might take the whole sourcecode with it...
 
 Req to T3:
-- That EACH table can be found in its own database (configurable). This means the TYPO3_db constant might have to be wasted? And not just another MySQL database - at another Database server or type (like Oracle). This is related to DBAL.
-- Q's: FTP-functions in php; How to syncronize? MySQL working across databases, connecting to more than one database? 
+OK [The dbal implementation solves this.] - That EACH table can be found in its own database (configurable). This means the TYPO3_db constant might have to be wasted? And not just another MySQL database - at another Database server or type (like Oracle). This is related to DBAL.
 
 DB->HTML
 - Basically this is an rsync/ftp sync question which requires a set of static files.
-- Also a "mixed mode" concept where static files not found are server dynamically by TYPO3, but where the TYPO3 install does NOT allow backend access at all - only frontend delivery.
+- Also a "mixed mode" concept where static files not found are served dynamically by TYPO3, but where the TYPO3 install does NOT allow backend access at all - only frontend delivery.
 
-Two situation:
+Two situations:
 - Publish static for local server, using mod_rewrite to direct requests transparently (static/dynamic). So all *.html requests WILL be found, static or dynamically! (Static/Dynamic blend)
 - Publish static for FTP server. All *.html requests MUST exist. (Purely static, limitations acceptable.)
 
-A HTML-filename which contains parameters__________:
- - Two solutions: using base64 or md5/db to encode/store parameters, adding md5/base64 to html-filename (either the real staticly written filename or the "fake" one)
- - Examples:
-&tt_board_uid=233&cHash=alkdfjlaskdf
-&tx_mininews_pi1[pointer]=0&tx_mininews_pi1[sword]=asdf&tx_mininews_pi1[mode]=asdf
-+1/3 length:
-This_is_my_page.123.1.64WAoaFRW9BXWTlzZ0ow53Dx8PEgASxh9namzMWxYIBDMdGnDx8PEgASxh9namzMWxYIBDMdGn.html
-
-This_is_my_page.123.1.m5abe83fd83e.html
-&tt_board_uid=233&blablabla=342&cHash=alkdfjlaskdf
-
-de dk
-This_is_my_page.123.1.m5abe83fd83e.html
-This_is_my_page.123.1.m5edf837afde.html
-
-Management__________________:
-- Clear-all-static-pages button; Staticly written filenames are retrieved from database table where those filenames are stored when ever they are written to disk (includes TTL time etc)
-- Clear-page-cache might also clear-page-static files.
-
----------------------------------------
-General config:        
-    For each page-id:
-        &lang=   (dk|de)
-        &cur=     (Euro/DKK)
-        &type=     (1)
-            2x2 = 4  (here we have some limit applied!)
-
-MAIN PAGE    &type=  (0|1|2|3)    4*4 = 16
-- Page 1    
-- Page 2    
-- Page 3    (Adresselist):    &tx_address_list[pointer]=    (0|1|2|3|4)    4*5 = 20 pages
-
-Various______________:
-- SearchEngine friendly / cachable URLs in board, products, tt_news
-- "Publish" funktionen brugte images_on_page. Genskab dette.
-
-THOUGHTS from Dassault work:
-# WriteToStatic function [Basically the static publishing system] (core feature: Kasper).
-  - writes static file IF simulateStaticDocument uses HTML *without* any parameters
-  - setting a "config.disableStaticCreation = 1" flag can disable it (for conditions situations)
-  - setting a value from PHP function (eg. if a search form needs to submit to the page) can disabled it
-  - registering the filename related to ID [and other parameters] so that "clear page cache" can also remove the file automatically.
-  - Also registeres: a) resources on the page (images/stylesheets), b) GET parameters from M5/B6 encryption.
-  - a browsing mechanism for creating static versions; could browse page, then show all links with checkboxes. Then checking of which links to follow and press button; browses the new pages. Then again checkboxes and so on. Which links were checked should be stored so that a process of publising could thus be followed automatically. This feature would include "clear files" function and also warn if a requested page was NOT written. (Problem; what if user-requests would generate the file? Possibly use a cookie or GET parameter or backend flag to request this.)
-  - includes an overview module showing all files and which pages they related to, possible "lost files" (those not registered in database) and "missing files" (in the database but not there).
-  - To create new versions doesn't have to REMOVE the existing! Just overwrite!
-
-Also see:
-- [Kasper] "LPE" folder in Mailbox 
+_____________________________________
+Server sync. extension ("dbsync"):
+Create an extension which syncronizes a set of tables to/from another TYPO3 installation
+- Using SOAP for information exchange
+       - Local machine (production) = Client
+       - Remote machine (live) = Server
+       - Must have the "dbsync" extension installed both places
+               - client has a set of table names configured, where each is marked with the *direction* (possibly bi-directional in future?)
+               - For each table, client asks for a "header" which contains list of uid/tstamp/crdata/possibly MD5 sum of content (if tstamp/crdate is not present)
+               - Client compares this with local table, finds records to add/remove/delete
+               - Client pushes / retrieves records
 
+_____________________________________
+Static publishing ("staticpub" extension)
+[2/2005: Today, a reverse proxy (using cache control) is a better solution than static publishing if you want to speed up a TYPO3 site. Therefore static publishing is a concept mostly interesting if you want to export a TYPO3 site as static files to an ordinary webhoster.]
+- The extension "staticpub" has now been made for this purpose.
 
 
-
-******************************
+*****************************
 APPENDIX: Image Processing
 *****************************
 Generally we want:
@@ -887,7 +844,7 @@ To get rid of ImageMagick totally we need a GD with...:
 - masking
 - reduce colors / dithering
 - jpg quality control
-- 96 dpi / 72 dpi 
+- 96 dpi / 72 dpi
 - other effects?
 - Support for many file formats.
 This is currently implemented for GD2 by Kasper/Rene but the changes are not used. Just proof-of-concept. We are in contact with Pierre-Alain from the PHP-dev team about the issue and hope that his changes will make the future GDlib in PHP5 so powerful that ImageMagick is not needed anymore and most importantly: We can rely on a totally standard PHP installation available at any webhotel (in the future).
@@ -901,28 +858,30 @@ Notes:
 imagecopymerge
 
 jonny at sanriowasteland dot net
-29-Sep-2002 06:36 
+29-Sep-2002 06:36
+
 If you need to merge 2 png's (or  presumably 2 gifs) with different color palettes, I have found this is the function to use.  Just set pct to 99, and you are rocking.  With pct set to 100, or imagecopy for that matter, the palette seems to go wonky.  (It probably just uses the palette of the source image. but don't quote me on that).
+
+
 Also see:
-- [Kasper] "ImageManipulation" folder in Mailbox 
+- [Kasper] "ImageManipulation" folder in Mailbox
+
 
-******************************
-APPENDIX: Idea about "Roles"
-******************************
-This is a few ideas about adding roles to the permission concept of TYPO3:
-- There could be, say, 4 default roles:  author, editor, administrator, developer
-- Users can be assigned "membership" of a role (basically a "role" is like a hardcoded "user-group"?)
-- Like you can configure database fields in TCA to be an "excludeField" you could also configure which ROLES can edit the field.
-- Possibly each role could assign membership of some groups.
+
+*****************
+APPENDIX: PHP5 issues
+*****************
+Generally: TYPO3 works with PHP5. But...:
+- UTF-8 strings to freetype doesn't work! Renders box instead.
+- array_merge must always have arrays as arguments. When this problem is found in TYPO3 it is regarded a TYPO3 bug and we fix it.
+- Errors regarding treating strings as arrays: Normally, just check if the variable is an array first.
+       - Details: Non-existing indexes is not a problem if the variable is unset - only if it is another type (eg. string). This means we can normally just check if the first index is an array and it will work: is (is_array($a) && $a[key1][key2][key3]) ...
 
 
-*************************************
+
+***************************************
 APPENDIX: Various ideas for extensions
-*************************************
+***************************************
 EMAIL publication:
 - People can publish stuff by sending email to certain adresse piping the content into database.
 - This could also be upload of files, eg. a word document to a place in fileadmin/ (such a document could contain information inside which was displayed on the website).
@@ -931,16 +890,18 @@ EMAIL publication:
 IMPORT WEBSITE:
 - Import external website! (Rene's extension). Includes some crawler feature (locally og external url)
 
-SITE-CRAWLER:
-- A crawler which crawls either local or external site, invoked from a) backend or b) cron-script.
-- Used for 1) Indexed Search, 2) External website import, 3) Just walking through a site for indexing/caching all pages.
-- Trying to define a sitemap/menu structure + find "content" on page
-  - maybe with some kind of "hint" facility to tell what html-elements wraps content or maybe for each page visually pick out the content area: OR this could be done by the TemplaVoila tool?
-
 BACKEND TOOLS:
 - Global search and replace of records (Rene F?)
-- Export the complete typo3 site/database, in a big file like mycompletesite.t3d
-  
+
+Repeated intervals extension:
+- Cron-job which alters the start/end times according to some schedule.
+- Configurable for any element of course
+
+New-Wizard:
+- An extension offering people to configure a wizard for creation of records. For instance you can configure to create a content element in three steps: First select type and header, then according to first choice, select more. Each screen has custom text/images/examples. Eventually the record is created. After creation there might be more options to set. In the end the wizard might fire up another application (like TemplaVoila) or a wizard or such.
+- Could be useful for: TemplaVoila Template Objects, Content Elements (like tables/forms/plugins), Pages of sorts.
+- Configuration could be in XML (since it needs a hierarchy)
+
 
 **************************************
 APPENDIX: PATTERN-control
@@ -951,28 +912,27 @@ APPENDIX: PATTERN-control
 - Will be hard to manage that records being a part of the pattern are not changed after having been added to the pattern. But at least this could be a beginning...?
 
 
-
 **************************************
-Rapport of "deleted"-check in typoscripts (190500) 
+Rapport of "deleted"-check in typoscripts (190500)
 **************************************
-TYPO3: 
+TYPO3:
 - "deleted"-field must be set manually in userauth for user-tables!
-Hardcoding: 
-- "pages" in load_tree.php 
-- "sys_filemounts" in userauth_group 
-- "user-group tables" in userauth_groups 
-- "pages" in ti_inc.php 
-- "pages" in transferdata.php 
-
-TypoScript: 
-- sys_domain is NOT checked for deleted in "page.php" 
-- getForeignRecords() (page.php) does not check for deleted!!! (this is even not used any more!! 
-Hardcoding: 
-- "pages" in page.php 
-- "pages" in t_search.php 
-- "pages" in index_ts.php (caching) 
-- "sys_template" in t_template.php 
-- "fe_groups" in index_ts.php 
+Hardcoding:
+- "pages" in load_tree.php
+- "sys_filemounts" in userauth_group
+- "user-group tables" in userauth_groups
+- "pages" in ti_inc.php
+- "pages" in transferdata.php
+
+TypoScript:
+- sys_domain is NOT checked for deleted in "page.php"
+- getForeignRecords() (page.php) does not check for deleted!!! (this is even not used any more!!
+Hardcoding:
+- "pages" in page.php
+- "pages" in t_search.php
+- "pages" in index_ts.php (caching)
+- "sys_template" in t_template.php
+- "fe_groups" in index_ts.php
 
 
 **************************************
@@ -980,50 +940,63 @@ Bugs, considerations, notes
 **************************************
 - mail() hangs in 90 second (approx) if computer is not on the net! (deliver to mail-server)
 - REWRITE of files when they already exists? shortMD5 is guilty?
-- "Fields not properly updated:" - error: Varchar(xx) cannot included spaces AFTER the last character and therefore TYPO3 interface reports an error. Solve this error by setting "eval" to "trim" in $TCA for inputfields of the type VARCHAR. 
-- mysql_query() function should not be used I think as this queries the current database. mysql() should be used instead. 
-- JavaScript: escape() doesn't rawurlencode the "+"-character. This can be a problem, eg. when trying to rename files with a plus in the name. I have made an alternative escape-function. 
-- PDF-files over 600 k are not rendered by ImageMagick. Less than 270 is! How come and is this true. Number of pages? 
+- "Fields not properly updated:" - error: Varchar(xx) cannot included spaces AFTER the last character and therefore TYPO3 interface reports an error. Solve this error by setting "eval" to "trim" in $TCA for inputfields of the type VARCHAR.
+- mysql_query() function should not be used I think as this queries the current database. mysql() should be used instead.
+- JavaScript: escape() doesn't rawurlencode the "+"-character. This can be a problem, eg. when trying to rename files with a plus in the name. I have made an alternative escape-function.
+- PDF-files over 600 k are not rendered by ImageMagick. Less than 270 is! How come and is this true. Number of pages?
 - When GDlib is disabled it can be very confusing that record icons does not change their look according to hidden/starttime/endtime etc...
 - many files in typo3temp/ slows down processing. Eg. a image resize with 33.000 files in typo3temp/ took 3 seconds where it would take 40 ms when the folder is clean. (on linux)
 
 
-**************************************
-Innovation, brainstorming for future
-**************************************
-- TSconfig defined through FlexForms?
-- Drop tt_content for content rendering and let extensions be the sole source of new content element types?
-- Check sitecore ideas for adding new fields etc.
-- Backend for PDAs/Lynx
-
-
-************************************
-Translation of Extensions
-************************************
-
-These [global] extensions has priority when translating extensions:
-
-lang
-cms
-extra_page_cm_options
-rte
-imagelist
-aboutmodules
-lowlevel
-beuser
-setup
-taskcenter
-sys_action
-sys_messages
-sys_notepad
-taskcenter_recent
-taskcenter_rootlist
-sys_todos
-sys_workflows
-func_wizards
-wizard_crpages
-wizard_sortpages
-info_pagetsconfig
-indexed_search
-tt_guest
-mininews
\ No newline at end of file
+
+*********************************
+Translation of Backend
+*********************************
+Overview of missing translations. (1547 normal core labels, updated 22/5 2005 before release of TYPO3 3.8.0)
+Numbers are new labels needing translation (changed labels are not measured)
+
+- dk [Danish]          0
+- de [German]          1
+- no [Norwegian]       0
+- it [Italian]         0
+- fr [French]          134
+- es [Spanish]         0
+- nl [Dutch]           1
+- cz [Czech]           202
+- pl [Polish]          4
+- si [Slovenian]       304
+- fi [Finnish]         0
+- tr [Turkish]         254
+- se [Swedish]         0
+- pt [Portuguese]      421
+- ru [Russian]         235
+- ro [Romanian]                358
+- ch [Chinese (Simpl)] 0
+- sk [Slovak]          113
+- lt [Lithuanian]      332
+- is [Icelandic]       904
+- hr [Croatian]                0
+- hu [Hungarian]       1
+- gl [Greenlandic]     1316
+- th [Thai]                    426
+- gr [Greek]           1547
+- hk [Chinese (Trad)]  3
+- eu [Basque]          1223
+- bg [Bulgarian]       302
+- br [Brazilian Portuguese]    0
+- et [Estonian]                457
+- ar [Arabic]          149
+- he [Hebrew]          438
+- ua [Ukrainian]       292
+- lv [Latvian]         35
+- jp [Japanese]                123
+- vn [Vietnamese]      1530
+- ca [Catalan]         1547
+- ba [Bosnian]         1
+- kr [Korean]          1547
+- eo [Esperanto]       1536
+- my [Bahasa Malaysia] 1545
+- hi [Hindi]           1547
+
+
+