Hooks in tslib_fe, Frontend login mode feature for pages; various other things. see...
[Packages/TYPO3.CMS.git] / TODO.txt
index be34d6a..23dcda5 100755 (executable)
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,6 +1,10 @@
-******************
-TODO LIST
-*****************
+*******************************************
+TODO LIST for the Core of TYPO3.
+
+Maintained by Kasper
+Do not modify without permission!
+*******************************************
+
 
 General:
 - CHECK: What is the number of supported page levels? 20 or 100?
@@ -10,6 +14,7 @@ General:
 - 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 modules for their extension.
 - 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!!!
+- Backend Interface: Dont show edit icons if editing cannot be performed due to recordEditAccessInternals() / editlock for pages (pid)
 
 TCEmain:
 - Commenting of the class.
@@ -34,14 +39,21 @@ TCEmain:
                - 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:
                - 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.
+       - Record Reference tracking in a table in TCEmain; Used to:
+               - Check before deletion that a record is not used.
+               - Used by TemplaVoila where it is hard to track references in FlexForms
+               - A backend module can regenerate the "index-table" if it becomes invalid over time for some reason...
+               - Used for import/export module and anywhere else where we are looking up references!
+       - "uniquePerField"
+               - used for pages_overlay_records "pid"
+               - used for "tt_content"/"sys_language_uid", field "l18n_parent"
 - 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.
+       - See description in appendix.
 - LOGGING:
        - Finish the logging of TCEmain actions (delete/copy) + finally define the API to the "sys_log" table!
 - CLEAN_UP:
@@ -58,8 +70,6 @@ TCEmain:
 - 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
 - IDEA: check for potential dangerous php-extension
 - TCEforms/TCEmain available for frontend?
@@ -73,7 +83,7 @@ TCEmain/TCEforms for FlexForms:
 - ['pi_flexform']['config']['ds'] must be set to some default message making sense!
 - CSH for flexforms
 - TCEmain features:
-       - caching of references/files in meta data (for analysis tools)?
+       - caching of references/files in meta data (for analysis tools)? --> NO, rather use the "new" planned reference index table, see above.
        - 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.
@@ -101,20 +111,17 @@ TCEforms:
                - API for adding JS-functions to the onchange-event.
                - 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).
        - 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
                - 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")
                - In the thumbnail list add the Edit and view icons as in the good old days.
@@ -124,22 +131,11 @@ TCEforms:
                  - See JH mail: Message-ID: <C018FF617C61AB4588D15494126A5C0F23E410@Soulman.hanno-kirchhoff.de>
                - IFRAME alternative for Element Browser.
                - set the width of the selector field(s)
-       - 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>
        - 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?
@@ -148,14 +144,6 @@ TCEforms:
 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
 - Support for browsing custom category-trees (passed by some PHP script)
@@ -165,10 +153,11 @@ Element Browser:
 - 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.
 
 Wizards:
 - Add wizard icon to TSconfig and Setup/Constants fields for immediate syntax highlighting (in popup window)
-- Add wizard icon to see/clean up FlexForm data?
+- Add wizard icon to see/clean up FlexForm data? Convert language mode?
 
 Interface:
 - 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>)
@@ -178,11 +167,18 @@ Interface:
        - 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!
 
+Localization:
+- Export/Import of "translation XML file" or spreadsheet:
+       - Will allow all translation of new and changed content to be done in ONE place, probably outside of TYPO3
+       - In TYPO3 tool for such a file format: Can also show diff-view like with ll-XML format.
+       - SOAP services(?)
+       - Contains fields similar to orig_hash and orig_text with values of translated content so diff can be shown
+
 Context Sensitive Help (CSH):
 - Add multimedia?
+- Special Glossary Support?
 
 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>)
 
 Web>List:
@@ -200,7 +196,7 @@ Web>List:
 - 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!
-- Fikse copy/paste så at list-module reloader (løser også problemet med paste fra sidetræet/foldertræet?)
+- Fikse copy/paste s�at list-module reloader (lser ogs�problemet med paste fra sidetr�t/foldertr�t?)
 
 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.
@@ -238,6 +234,7 @@ EM:
 
 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>)
+       - Should be fixed by "[{]..." instead!
 
 Install/Servers:
 - 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.
@@ -263,6 +260,16 @@ Extensions:
 
 
 
+*****************
+PHP 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]) ...
+
+
 
 *****************
 NOTES
@@ -297,6 +304,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:
@@ -313,6 +321,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
@@ -325,42 +395,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   [Jan-Erik?]
-               t3lib/class.t3lib_exec.php              [Rene]
+               t3lib/class.t3lib_dmailer.php                   [Jan-Erik!]
+               t3lib/class.t3lib_exec.php                              [Rene]
 -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  [Jan-Erik?]
+               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
 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
+               t3lib/class.t3lib_sqlengine.php                 [Kasper/Karsten?]
 -QCR: t3lib/class.t3lib_stdgraphic.php
 XQCR: t3lib/class.t3lib_superadmin.php
-               t3lib/class.t3lib_svbase.php            [Rene]
--QCR: t3lib/class.t3lib_tceforms.php
-               t3lib/class.t3lib_tcemain.php
+               t3lib/class.t3lib_svbase.php                    [Rene]
+-QCR: t3lib/class.t3lib_tceforms.php                   [Kasper]
+               t3lib/class.t3lib_tcemain.php                   [Kasper]
 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
@@ -374,9 +445,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
@@ -415,147 +483,51 @@ 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
-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
-
 
 typo3/sysext/___________________________________________:
-               install/        [ingmar]
+OK             aboutmodules/
+               belog                   (2 / 500)
+                       - Needs a vision! Couldn't the Log be more useful?
+               beuser                  (1 / 1300)
+                       - Add option to Create backend users there! (backend users, groups, filemounts)
 OK             cms/
+OK             context_help/
+               css_styled_content              (1/200)         [H]
+                       - Manual written?
+XQCR:  extra_page_cm_options/
+XQCR:  func_wizards/
+XQC-:  impexp
+               indexed_search          (4/3500)
+                       - Templates?
+                       - Speedoptimizations?
+                       - Kasper has some objections regarding complex code parts.
+XQCR   info_pagetsconfig/
+               install/                                        [ingmar]
+                       - Clean-up of the Install Tool in general!
 OK             lang/
+               lowlevel                        (2/800)
+                       - Extend support and finish it with the efforts soon to be done for TCEmain.
 OK             setup/
-XQCR:  func_wizards/
+?              sv/                                                     [Rene]
+               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]
+                       - (See Kaspers personal todo and Appendix about versioning in this document)
+               viewpage                        (2/200)
 XQRC:  wizard_crpages/
 XQRC:  wizard_sortpages/
-XQCR:  extra_page_cm_options/
-OK             aboutmodules/
-OK             install/                                                        + class.t3lib_install.php / class.t3lib_superadmin.php
 
-typo3/ext/_____________________________________:
-               belog/          (2 / 500)
-               beuser/         (1 / 1300)
-               cms_plaintext_import/   (1/200)
-OK             conf_userts/
-OK             context_help/
-               css_styled_content/             (1/200)         [H]
-               direct_mail/            (3/2500)                [Jan-Erik] + class.t3lib_htmlmail.php
-OK             direct_mail_subscription/
-               extrep_wizard/          (2/4500)                [H]
-               feuser_admin/                                           [testsite...] - XHTML
-               freesite/                       (2/1600)
-               imagelist/                      (1/250)
-               impexp/                         (2/2000)                [H]
-               indexed_search/         (4/3500)                [H] [testsite...]
-               info_pagetsconfig/      (1/200)
-               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/
-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)
-
-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"
 
 
 
@@ -610,64 +582,65 @@ debug_backtrace() - nice function for debug-output.
 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-versioning: 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:
+       OK - 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!)
+       OK - All versions of this one element being a) at pid "-1" and b) a field "real_id" pointing to the official UID
+       OK - Pages-versioning: 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.
+
+- Preview in frontend:
+  OK - Pages can be previewed just by their UID (which will select the offline version!)
+  OK - For other elements, sending ADMCMD_vPrev array
+  - Selector in the AdminPanel selects:
+       - Version of page for current ID?
+       - TAG (across many records)
+
+- Tagging:
+       - Setting tags across records for mass-swapping:
+               - A tag can only be set for ONE version of a record
+               - There is a default tag used when new versions are created called "draft". Users can create own tags and select one of those instead.
+               - Implicitly the published version is tagged "published"
+               - When a tag is swapped into published, the records swapped into archive will get a new tag to remind us that they were swapped out instead of that TAG. Something like "TAG-archive". Only done when TAG-swapping is used, not for spontaneous swapping.
+               - We might set states like "draft (never published, many), published (online, only 1), archive  (has been published, many) - but what significance does that carry?
+
+- Permission setting:
+       - That NO record with PID!=-1 OR PID!=-1 in rootline can be edited or otherwise! This will effectively LOCK every single record capable of versioning in the live tree!
+               Enabled for tables with:
+               - versioning enabled
+               - a certain extra flag set in [ctrl] (eg. "versioning_freezeOnline"
+               - Globally set with a flag in TYPO3_CONF_VARS (so we can build the first version of the site)
+               - "admin" users can circumvent it.
+
+- Swapping versions:
+  OK - clear-cache actions when swapping?
+  OK - Swapping might need to exclude fields like "sorting" etc. Others could be imagined.
+  OK - copies:
+  OK - Swapping should consider if a PAGE record should be swapped record-only OR including its content!!
+  - Swapping pages (pids) should consider that some records might be left inside a versionized branch. Question is; Should ALL records swap pids, not only the versioning_followPages ones?
+  - TODO: When swapping; Check "unique" fields (like pages.alias) etc.
+  - Swap by TAG (across many records)
+
+- Trunk/Branch:
+    OK - Create version of single page (as above)
+       OK - Create version of page branch (1-... levels)
+               OK (API) - Either create version of EACH page individually (like tagging in CVS)
+               OK (API) - Or create single-point-of-reference so that pages INSIDE can be swapped, deleted and created (just like content elements can)
+                       - Requirement: Intelligent swapping of "sub-element" ids that CAN be traced back to the original!
+
+- Backend:
+  OK - 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.
+  OK - In Page module + TemplaVoila page module: There will be a version selector implemented so users can switch around between versions.
+
+
+- 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.
-  - Swapping might need to exclude fields like "sorting" etc. Others could be imagined.
-  - copies:
     - What about a page alias?
-- Trunk/Branch:
-    - Create version of single page (as above)
-       - Create version of page branch (1-... levels)
-               - Either create version of EACH page individually (like tagging in CVS)
-               - Or create single-point-of-reference so that pages INSIDE can be swapped, deleted and created (just like content elements can)
-                       - Requirement: Intelligent swapping of "sub-element" ids that CAN be traced back to the original!
-
-- 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.
-
 
 
 
@@ -679,7 +652,7 @@ Authors: Julle and Kasper.
 ******************
 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
+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";
 
@@ -739,71 +712,31 @@ DB -> DB (1):
 - 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 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.)
 
 _____________________________________
-Server sync. extension, PLAN:
-Create an extension which syncronizes a set of tables to another database, using DBAL extension to determine handler for the remove tables
-- Use "tstamp" for update, "crdate" for inserts; does not dump full tables, only pushes updated content!
-- "Complete Sync": Feature for MD5 checking whole tables, thereby pushing content not based on timestamps but Md5 sum of content. This is if the timestamps are not getting updated correctly.
-
-_______________________________________
-General Crawler ("crawler"):
-- Crawls pages on TYPO3 site by URLs (using PHP fetching)
-       Config:
-       - Preload queue
-               - with previous crawler session log
-               - page tree pages / single top page?
-                       - For this; variable parameters, eg. "&lang=(dk|de)&cur=(Euro/DKK)&type=(0|1)" giving 3x2 combinations. Challenge; cHash?
-       - Set max-depth
-       - Adds GET parameter to identify operation (handler)?
-               - (re)index pages
-               - (re)cache pages
-               - Export as static HTML...
-       Session log:
-       - Identifies session by handler/id
-       - Can look up if a crawler has opened/closed/is-stalled etc.
-       - Multithreading crawlers (in IFRAMES or whatever)
-       - From session log we can read out the status-arrays of the threads and display in backend (handler shows as it likes.)
-       - Start / stop crawler session
-
-__________________________________________-
-CACHE MANAGEMENT EXTENSION
-
-- cache_pages -> API for adding key1/key2 custom content!
-- automatic clear-pages cache protection? (global flag)
-- Configuration: Configure "cache_" tables to clear when "Clear all cache"
-- "clear-cache" might not DELETE records but rather mark them "update-cache" or something like that... (would require the URL to be around...)
-- protect-flag which will disable the *automatic* clearing of page cache for a single page (in page header; expiry set to never -> setting flag in "cache_pages" table and records with that flag set cannot be flushed!)
-- "key1" and "key2" for granularity in caching!
-       -> used in manual clear-cache situations (cache mgm)
-       -> used in configurable clear-cache situations (clearing cache for a single document on TYPO3.org!)
-- "registerElement" per page for cache clearing (frontend scripts; function puts record reference in internal array and writes to disk only when cache table is written to! Flushes table with cache table also! Just like cache_pagessection)
-       -> For TV: ->registerElement('tt_content','uid'); when elements are NOT on the physical page
-       -> For 3dsplm: ->registerElement('bfs_brand','catia')
-       -> For 3dsplm: ->registerElement('bfs_skills','')       [saying that ANY bfs_skill changed will clear cache of front-page where all are shown.]
-
-cache-extension ("cachemgm")
-- in click menu, link to cache mgm
-- Web>Info "Cache overview":
-       - Overview of cached versions in tree (with stat like time, expiry, content size, parameter content, URL, key1/2) - standard categorizing, eg. [parameter1]:[param2]:[param3], page title!
-       - clear cache for page/section of page tree.
-- RE-generation of branches of this tree! (crawling the pages)
-- overview of cache_hash table.
-- overview of pages-section table.
-- tracking pages which are shown non-cached
+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.]
 - Writes static file (automatically) IF simulateStaticDocument uses HTML / Speaking URLs and allows caching of page
        - root of the publishing dir MUST be hardcoded in TYPO3_CONF_VARS etc.; The extension has full power inside of this dir!
        - Support for both speaking URLs (hierarchy of directories) and regular simulate static document types (flat dir)
@@ -812,6 +745,7 @@ Static publishing ("staticpub" extension)
                - Can bypass GET/QUERY string and POST requests!
        - File location is tracked in a table tied to page-cache table uids - thus making a flush very easy
        - File write should probably happen together with inserting cached version in database (system hook)
+               - Resource files on the page can optionally be written to a sub-dir of the publishing dir.
 - setting a "config.disableStaticCreation = 1" flag (in TS template) can disable it (for conditions situations)
 - Also registeres: a) resources on the page (images/stylesheets), b) GET parameters from M5/B6 encryption. (not used yet!)
 - Publishing can be done by remote-client requests (default) or using the general crawler (for re-caching pages)
@@ -906,7 +840,6 @@ 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)
 **************************************
@@ -952,33 +885,49 @@ Innovation, brainstorming for future
 - 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
+*********************************
+Translation of Backend
+*********************************
+Overview of missing translations. (UPDATED 18/11 after major change to ll-XML and csh_* language packs)
+Numbers are new labels needing translation (changed labels are not measured)
+
+- dk [Danish]          55
+- de [German]          9
+- no [Norwegian]       57
+- it [Italian]         9
+- fr [French]          36
+- es [Spanish]         63
+- nl [Dutch]           9
+- cz [Czech]           9
+- pl [Polish]          9
+- si [Slovenian]       90
+- fi [Finnish]         9
+- tr [Turkish]         9
+- se [Swedish]         9
+- pt [Portuguese]      136
+- ru [Russian]         79
+- ro [Romanian]                74
+- ch [Chinese (Simpl)] 282
+- sk [Slovak]          188
+- lt [Lithuanian]      142
+- is [Icelandic]       624
+- hr [Croatian]                121
+- hu [Hungarian]       9
+- gl [Greenlandic]     1031
+- th [Thai]                    141
+- gr [Greek]           1262
+- hk [Chinese (Trad)]  168
+- eu [Basque]          938
+- bg [Bulgarian]       319
+- br [Brazilian Portuguese]    15
+- et [Estonian]                243
+- ar [Arabic]          691
+- he [Hebrew]          153
+- ua [Ukrainian]       662
+- lv [Latvian]         307
+- jp [Japanese]                1261
+- vn [Vietnamese]      1245
+- ca [Catalan]         1262
+- ba [Bosnian]         141
+- kr [Korean]          1262
+