* import/export: CSH for the whole module, localization of all labels
[Packages/TYPO3.CMS.git] / TODO.txt
1 *******************************************
2 TODO LIST for the Core of TYPO3.
3
4 Maintained by Kasper
5 Do not modify without permission!
6 *******************************************
7
8
9 General:
10 - CHECK: What is the number of supported page levels? 20 or 100?
11 - CHECK: possible XSS problem with alt_mod_frameset.php taking parameters for scripts to display in frames.
12 - Option: Turn of "onBlur" in backend (Message-ID: <001801c2a28c$bb020c70$963afea9@bla8kdvxpl8glk>)
13 - Feature: "admin" can click a button which wipes out all record-lockings. (Message-Id: <200301281752.23246.mundaun@gmx.ch>)
14 - Feature: Controlling access to function menu modules as well (thus we could have a user-module inside ?Template? which could edit the constants field)
15 - Feature: Web >plugins -> to be a main module where people can place modules for their extension.
16 - 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!!!
17 - Backend Interface: Dont show edit icons if editing cannot be performed due to recordEditAccessInternals() / editlock for pages (pid)
18
19 TCEmain:
20 - Commenting of the class.
21 - Charset:
22         - 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?
23         - Note: No charset conversion is done in TCEmain. It is expected that the content enters TCEmain in the charset of the backend in general.
24 - FEATURES:
25         - 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?
26         - 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.
27         - Implement field evaluation in TCEmain: Evaluate min/max? Checking references exists?
28         - 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.
29         - "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.
30         - pre and post processing by user functions of the data? (Message-ID: <C018FF617C61AB4588D15494126A5C0F23E431@Soulman.hanno-kirchhoff.de>)
31         - "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>)
32         - 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.
33         - "child records" - records which MUST be related to another table - and will be moved along with the main record if moved.
34         - Implement *real* record locking?
35                 - Configure on a per-table basis
36                         - For instance, the TCEforms will render non-editable fields for ordinary users, while editable fields for "admin" users still
37                         - Should the check be done only in TCEforms - or also in TCEmain?
38         - 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)
39                 - Could be solved by PRE-processing of content in user functions!
40         - Implement "last_edited_by" field saving the BE-user UID just like tstamps are... (JH asked)
41         - Transformation API: Implement the possibility of custom to/from transformations for the "user" type (or any field?)
42         - Selector box type:
43                 - MM support for strings
44         - 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....
45         - Support that the content of a single field can be stored in an external file instead.
46         - Support that a list of fields can be stored in an external XML file instead.
47         - Record Reference tracking in a table in TCEmain; Used to:
48                 - Check before deletion that a record is not used.
49                 - Used by TemplaVoila where it is hard to track references in FlexForms
50                 - A backend module can regenerate the "index-table" if it becomes invalid over time for some reason...
51                 - Used for import/export module and anywhere else where we are looking up references!
52         - "uniquePerField"
53                 - used for pages_overlay_records "pid"
54                 - used for "tt_content"/"sys_language_uid", field "l18n_parent"
55 - VERSIONING:
56         - See description in appendix.
57 - LOGGING:
58         - Finish the logging of TCEmain actions (delete/copy) + finally define the API to the "sys_log" table!
59 - CLEAN_UP:
60         - Implement kill/restore of "deleted" records.
61         - 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)
62 - PERMISSIONS:
63         - Permission management on selector box/radio button values
64                 - so certain "CType" / "Insert plugin" / "FlexForm datatypes" values could be blocked
65                 - 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.
66         - Permission management for translations? Users are allowed to edit certain languages? (Setup with general access list API?)
67         - Permissions on record-level
68         - CHECK: That permissions are properly evaluated (especially for moving content?)
69         - Security in tcemain: Uploaded/Attached files are allowed to be in ONLY a relative path OR in the "lockDir"!
70 - BUG:
71         - 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!):"
72         - 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.
73 - RELATED: DBint/admin, logging-display, TCEforms, Web>List
74 - IDEA: check for potential dangerous php-extension
75 - TCEforms/TCEmain available for frontend?
76
77
78 TCEmain/TCEforms for FlexForms:
79 - Affects: "lowlevel" ext/DBint , "impexp" extension. Must/Should be extended.
80 - Permissions handled per-field in FlexForms?
81 - What to do if data structure was not found? (Both TCEmain, TCEforms, templavoila_pi1, t3lib_transferdata)
82 - block the creation of FlexForm in FlexForm inside TCEforms.
83 - ['pi_flexform']['config']['ds'] must be set to some default message making sense!
84 - CSH for flexforms
85 - TCEmain features:
86         - caching of references/files in meta data (for analysis tools)? --> NO, rather use the "new" planned reference index table, see above.
87         - mapping values to a plain-text search field(s)
88         - Offering API functions for add/delete/move/copy
89         - Cleaning the original data in field since this may have an invalid structure if the data structure has changed in the meantime.
90         - Possibility to write the XML data values into a table instead (see Marc Schlingers idea, stored on paper in my red organizer).
91 - TCEforms:
92         - 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).
93         - Visual interface for forms, DHTML for sheets etc, various sheet modes, language menu form.
94         - 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!
95         - Add many "types" of sections at a time when "add new"
96         - NiceToHave: Attaching an image to the Data Structure. This image is a preview of what the data structure can create. When rolling over the image you can have the form fields highlighted which affects the area. (by a red border or so...)
97                 - 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")
98         - Displaying partial branch of the data structure (and to a certain level)
99         - 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.
100         - 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 possibilities 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.
101         - Implement "<displayCond>EXT:templavoila:LOADED:true</displayCond>" for flexforms. (needed for mininews!!)
102         - Implement CSH for FF fields.
103
104
105 TCEforms:
106 - Support for other backend charsets / right-aligned charsets!?
107 - FEATURES:
108         - GENERAL:
109                 - 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?
110                 - Ability to set up user functions for pre and post processing of the data?
111                 - API for adding JS-functions to the onchange-event.
112                 - 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).
113         - SELECT type:
114                 - Ability to see icon/image from record of selected value in the selector box.
115                 - 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.
116                 - Reflect possible tree-structure for records in Select/Items list
117                 - a way to grant read for the selectors without displaying the storagefolder in the treeview?
118                 - move one up / one down buttons for the list (also for GROUP element)
119                 - CHECK: "multiple" feature, single, sorted and non-sorted selections.
120                 - making copies of select fields etc - check that remapped records are OK treated (with foreign/neg_foreign + free string values)
121                 - 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!)]
122                 - Exclude field selection better, in a tree? (in IFRAME, could be cool!)
123                 - BUG: itemsArrayProcFunc only active IF there is an array! Shouldn't it be in any case?
124                 - set the width of the selector field(s)
125         - GROUP type:
126                 - [file] allow the selection of files from the system to be added as REFERENCES, not copied! (Message-ID: <003f01c23503$8cdd69d0$55333bd4@comtech>, + notify "illuminatus")
127                 - In the thumbnail list add the Edit and view icons as in the good old days.
128                 - BUG: By the way, isn't there a bug in the listing of the thumbnails of records?
129                 - Nested records:
130                   - 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.
131                   - See JH mail: Message-ID: <C018FF617C61AB4588D15494126A5C0F23E410@Soulman.hanno-kirchhoff.de>
132                 - IFRAME alternative for Element Browser.
133                 - set the width of the selector field(s)
134         - DISPLAY_CONDITIONS:
135                 - "readonly" flag, or user group dependant. See "Message-Id: <200210241441.50295.r.fritz@colorcube.de>"
136         - ? type:
137                 - "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>)
138         - Concealed password fields, support for two fields with the same password being submitted... (JavaScript evaluated?)
139 - BUGS:
140         - Ask to save record when you want to add a category with the "Plus" icon.
141         - CHECK: ###STORAGE_PID### incorrectly calculated?
142 - DONE?: Support for label for main palette: (Rene: Message-Id: <200210011646.10346.r.fritz@colorcube.de>)
143
144 Charset:
145 - checking (for XML) if there is "character data" in a string?
146
147 Element Browser:
148 - Support for DAM
149 - Support for browsing custom category-trees (passed by some PHP script)
150 - Support for deleting files in the listing there.
151 - Disable thumbnail option for faster display.
152 - Element Browser configurable a) without the page tree but hardcoded to specific PID, b) just default PID (possibly able to override from TSconfig)
153 - 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?)
154 - Ability to insert images when their info page (larger thumbnail) is displayed. Maybe a small + (plus) icon would do. (Notify Patrick Roeder)
155 - Some quick-lookup feature (like we have on TER)
156
157 Wizards:
158 - Add wizard icon to TSconfig and Setup/Constants fields for immediate syntax highlighting (in popup window)
159 - Add wizard icon to see/clean up FlexForm data? Convert language mode?
160
161 Interface:
162 - 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>)
163 - Ability to create another Main/sub module structure in the backend (Daniel H: Message-ID: <BAB9A920.E95D%daniel@typo3.com>)
164         - Change order, level, title, icon.
165         - Use User TSconfig... and allow someone to create an extension to visually create a TSconfig output
166         - See DHs mail: Message-ID: <mailman.1060763871.6396.typo3-metadev@lists.netfielders.de>
167         - Links could be going directly to the function menus inside modules as well!
168
169 Localization:
170 - Export/Import of "translation XML file" or spreadsheet:
171         - Will allow all translation of new and changed content to be done in ONE place, probably outside of TYPO3
172         - In TYPO3 tool for such a file format: Can also show diff-view like with ll-XML format.
173         - SOAP services(?)
174         - Contains fields similar to orig_hash and orig_text with values of translated content so diff can be shown
175
176 Context Sensitive Help (CSH):
177 - Add multimedia?
178 - Special Glossary Support?
179
180 WEB main module/page tree:
181 - Option: For a frameset module, register the ID per sub-module, not just globally (see JH mail: Message-ID: <C018FF617C61AB4588D15494126A5C0F1F67AB@Soulman.hanno-kirchhoff.de>)
182
183 Web>List:
184 - Add "New" to the clickmenu of eg. "be_users" (non-sorted items) when you want to copy a user into the list.
185 - 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.
186 - Page-tree-stop: Click on red "+" brings forth some kind of browser (list of pages, browseable, Web>List module feature?)
187 - 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.
188 - Check that permissions are respected for the buttons in the control-panel of the List module
189 - Why is web>list slow on new typo3.org?
190 - Page TSconfig option: Only to select the table-headers for display (with record count), and only the extended view will show the records inside.
191 - 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?
192 - Support for tree-tables (that can be browsed).
193 - 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).
194 - Support for display of relations: Files, 1-M, M-M
195 - FlexForm tree view / editing:
196         - 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!
197                 - 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!
198 - Fikse copy/paste s�at list-module reloader (lser ogs�problemet med paste fra sidetr�t/foldertr�t?)
199
200 File>List:
201 - 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.
202 - Adding possibility to show files recursively (more levels), filter on a file name, search file content
203
204 History/Undo:
205 - Must present a page/content element view, so a page with content elements can be restored as a whole
206 - Undo must be able to restore attached files as well
207 - Should be possible to disable for certain tables (can it be done already with TSconfig?)
208 - Delete saved states (and save whole record content).
209 - Need to implement the diff-feature for windows as well (that is; set configuration)
210
211 LDAP support:
212 - See "APPENDIX: LDAP"
213
214 EM:
215 - Display: review-flag + link to review - cannot be overridden?
216 - Display: After import, link to Install/Details.
217 - Display: Better filtering, quicker listing
218 - 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)
219 - Feature: EM suggest clear-cache af scripts?
220 - Install: Select other repository URLS in selector box?
221 - Install: Extensions which can point the import/export to a directory with import-files.
222 - Install: Getting from TER only already installed extensions.
223 - Install: Flag: "Import ext"; "Show non-secure extensions" (show ALL ext., not only reviewed ones)
224 - Upload: emconf.php should have the md5-part updated when upload to TER
225 - CHECK: Better failure-tolerance when "fatal errors" occur in ext_localconf/ext_tables.php files!?
226 - CHECK: Can Install Tool bypass including ext_localconf/ext_tables if there are errors in them?
227 - 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)
228 - BUG: Clear cache files should remove ALL "temp_CACHED_*" files in typo3conf/ (not just the current two)
229 - 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.
230 - DOC: "Extension API" manual.sxw!
231 - Check mailbox for more... ?
232 - Related: The KickStarter Wizard, in particular a) cleaner code output, b) merging updates.
233
234 The REGEX-{} problem:
235 - 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>)
236         - Should be fixed by "[{]..." instead!
237
238 Install/Servers:
239 - 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.
240 - 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>)
241 - CHECK: Security: Can HTTP_SERVER_VARS be overridden from URL if global vars are enabled???
242 - TYPO3_PORT bug (Message-ID: <005f01c2df3f$4006db00$0100a8c0@knoell>)
243
244 Filepermissions of source:
245 - Test that these permissions work OK:
246   - chmod 555 typo3_src/ -R
247   - cd typo3_src/typo3/
248   - chmod 755 ext/
249
250
251
252 **************************
253 DOCUMENTATION TODO list
254 **************************
255 Extensions:
256 - 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?
257
258
259
260
261
262 *****************
263 PHP issues
264 *****************
265 Generally: TYPO3 works with PHP5. But...:
266 - UTF-8 strings to freetype doesn't work! Renders box instead.
267 - 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.
268 - Errors regarding treating strings as arrays: Normally, just check if the variable is an array first.
269         - 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]) ...
270
271
272
273 *****************
274 NOTES
275 *****************
276 - 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.
277
278
279
280
281 ******************************************
282 APPENDIX 1: CLEANING UP FOR TYPO3 3.6.0
283 ******************************************
284 Cleaning for 3.6 involves:
285 - XHTML transitional compliance
286 - " to '
287 - Commented functions
288
289 1: Add comments
290  * NOTICE: This will also detect JavaScript functions, but if you place a comment line like "// ..." in the end of the function definition line they will not have the JavaDoc style comment added. Eg. "       function blabla()       {       //    "
291 2: Write comments, organize them, add sections etc. (search [type])
292 2a: Set "@access private"
293 3: double to single quote (check for "\n")
294 4: XHTML
295 5: $Id$ CVS keyword expansion
296 6: @package tags
297 7: Function Index in scripts
298 8: Depreciated use of t3lib_BEfunc::titleAttrib
299 9: Generally, try to read all GPvars in init() functions and set them as internal variables - gives a nice, natural overview of what is used from the outsite
300
301
302 Status 27/10 (TYPO3 Core + extensions "cms" and "lang" in sysext/ (but without global extensions in ext/ !)):
303 - 2000 @param and @return tags in 800 functions still needs commenting (3800 tags in 1400 functions has already been done)
304 - 50 scripts still needs cleaning for XHTML, comments and single-quotes
305
306
307 Note on XHTML compliance:
308 - We strive for XHTML transitional / frames
309 - Certain incompatibilities has been allowed for practical reasons (for now). These include:
310         - align="absmiddle" for images
311         - width/height properties for input tags when images are used
312         - missing "cols" attribute for textarea tags.
313         - Some attributes for framesets.
314         [The reason for allowing this is probably that I do not know any workaround to achieve the same effect. The problem of non-allowed attributes/values also rate very low in my understanding of XHTML compliancy - it is far more important with nesting integrity, char case of tags/attributes, etc.]
315
316
317 ---------------------------------------------------------------
318 NOTES ABOUT WHICH SCRIPTS HAS BEEN CLEANED AND WHICH REMAINS:
319 ---------------------------------------------------------------
320 Finished (XHTML, quotes, comments, revised-note), XQCR:
321 (Indented scripts are still missing clean-up)
322
323 typo3/___________________________________________:
324 XQCR: alt_clickmenu.php
325 XQCR: alt_db_navframe.php
326 XQCR: alt_doc.php               TODO: Check "redirect" GPvar for XSS hole!?
327 XQCR: alt_doc_nodoc.php
328 XQCR: alt_file_navframe.php
329 XQCR: alt_intro.php
330 XQCR: alt_main.php
331 XQCR: alt_menu.php
332 XQCR: alt_menu_sel.php
333 XQCR: alt_mod_frameset.php
334 XQCR: alt_palette.php
335 XQCR: alt_shortcut.php
336 XQCR: alt_toplogo.php
337 XQCR: alt_topmenu_dummy.php
338 XQCR: browse_links.php
339 XQCR: browser.php
340 XQCR: class.alt_menu_functions.inc
341 XQCR: class.db_list.inc
342 XQCR: class.db_list_extra.inc
343 XQCR: class.file_list.inc
344 XQCR: class.show_rechis.inc
345 XQCR: db_list.php
346 XQCR: db_new.php
347 XQCR: db_new_content_el.php
348 default.htm
349 default.html
350 XQCR: dummy.php
351 XQCR: file_edit.php
352 XQCR: file_list.php
353 XQCR: file_newfolder.php
354 XQCR: file_rename.php
355 XQCR: file_upload.php
356 XQCR: index.php         TODO: Check "redirect" GPvar for XSS hole!?
357 -QC-: index_re.php
358 -Q-R: init.php
359 XQCR: listframe_loader.php
360 XQCR: login_frameset.php
361 -QC-: logout.php                TODO: Check "redirect" GPvar for XSS hole!?
362 XQCR: move_el.php
363 XQCR: show_item.php
364 XQCR: show_rechis.php
365 -QCR: tce_db.php
366 -QCR: tce_file.php
367 XQCR: template.php
368 XQCR: view_help.php
369 XQCR: wizard_add.php
370 XQCR: wizard_colorpicker.php
371 XQCR: wizard_edit.php
372 XQCR: wizard_forms.php
373 XQCR: wizard_list.php
374 XQCR: wizard_rte.php
375 XQCR: wizard_table.php
376 XQCR: wizard_tsconfig.php
377
378 XQCR: mod/help/about/index.php:
379 XQCR: mod/tools/em/index.php
380 XQCR: mod/web/info/index.php
381 XQCR: mod/web/func/index.php
382 XQCR: mod/web/perm/index.php
383
384
385 t3lib/________________________________________:
386 XQCR: t3lib/class.t3lib_admin.php
387 XQCR: t3lib/class.t3lib_arraybrowser.php
388 -QCR: t3lib/class.t3lib_basicfilefunc.php
389 XQCR: t3lib/class.t3lib_bedisplaylog.php
390 XQCR: t3lib/class.t3lib_befunc.php
391 XQCR: t3lib/class.t3lib_beuserauth.php
392 XQCR: t3lib/class.t3lib_browsetree.php
393 XQCR: t3lib/class.t3lib_clipboard.php
394 -QC-: t3lib/class.t3lib_cs.php
395 XQCR: t3lib/class.t3lib_diff.php
396 XQCR: t3lib/class.t3lib_div.php
397                 t3lib/class.t3lib_dmailer.php                   [Jan-Erik!]
398                 t3lib/class.t3lib_exec.php                              [Rene]
399 -QCR: t3lib/class.t3lib_extfilefunc.php
400 -QCR: t3lib/class.t3lib_extmgm.php
401 -QCR: t3lib/class.t3lib_extobjbase.php
402 XQCR: t3lib/class.t3lib_foldertree.php
403 -QCR: t3lib/class.t3lib_formmail.php
404                 t3lib/class.t3lib_fullsearch.php                [Kasper]
405                 t3lib/class.t3lib_htmlmail.php                  [Jan-Erik?]
406 XQCR: t3lib/class.t3lib_iconworks.php
407 -QCR: t3lib/class.t3lib_install.php
408 -QCR: t3lib/class.t3lib_loaddbgroup.php
409 -QCR: t3lib/class.t3lib_loadmodules.php
410 -QCR: t3lib/class.t3lib_matchcondition.php
411 -QCR: t3lib/class.t3lib_modsettings.php
412 XQCR: t3lib/class.t3lib_page.php
413 XQCR: t3lib/class.t3lib_pagetree.php
414 XQCR: t3lib/class.t3lib_parsehtml.php
415 XQCR: t3lib/class.t3lib_parsehtml_proc.php
416 XQCR: t3lib/class.t3lib_positionmap.php
417                 t3lib/class.t3lib_querygenerator.php    [Kasper]
418 -QCR: t3lib/class.t3lib_readmail.php
419 XQCR: t3lib/class.t3lib_recordlist.php
420 -QCR: t3lib/class.t3lib_scbase.php
421                 t3lib/class.t3lib_sqlengine.php                 [Kasper/Karsten?]
422 -QCR: t3lib/class.t3lib_stdgraphic.php
423 XQCR: t3lib/class.t3lib_superadmin.php
424                 t3lib/class.t3lib_svbase.php                    [Rene]
425 -QCR: t3lib/class.t3lib_tceforms.php                    [Kasper]
426                 t3lib/class.t3lib_tcemain.php                   [Kasper]
427 XQCR: t3lib/class.t3lib_timetrack.php
428 -QCR: t3lib/class.t3lib_transferdata.php
429 XQCR: t3lib/class.t3lib_treeview.php
430 XQCR: t3lib/class.t3lib_tsfebeuserauth.php
431 -QCR: t3lib/class.t3lib_tsparser.php
432                 t3lib/class.t3lib_tsparser_ext.php              [Kasper]
433                 t3lib/class.t3lib_tsstyleconfig.php             [Kasper]
434 -QCR: t3lib/class.t3lib_tstemplate.php
435 XQCR: t3lib/class.t3lib_userauth.php
436 XQCR: t3lib/class.t3lib_userauthgroup.php
437 -QCR: t3lib/class.t3lib_xml.php
438
439 -QCR: t3lib/config_default.php
440 -QCR: t3lib/thumbs.php
441 XQCR: template.php
442 -QCR: t3lib/stddb/load_ext_tables.php
443 -QCR: t3lib/stddb/tables.php
444 -QCR: t3lib/stddb/tbl_be.php
445
446
447 sysext/cms/___________________________________________:
448 XQCR: tslib/class.tslib_content.php
449 XQCR: tslib/class.tslib_fe.php
450 -QCR: tslib/class.tslib_fetce.php
451 -QCR: tslib/class.tslib_feuserauth.php
452 -QCR: tslib/class.tslib_gifbuilder.php
453 XQCR: tslib/class.tslib_menu.php
454 XQCR: tslib/class.tslib_pagegen.php
455 XQCR: tslib/class.tslib_pibase.php
456 XQC-: tslib/class.tslib_search.php
457 XQCR: tslib/media/scripts/example_callfunction.php
458 XQCR: tslib/media/scripts/example_itemArrayProcFunc.php
459 XQCR: tslib/media/scripts/example_keepRollover.php
460 XQ-R: tslib/media/scripts/example_languageMenu.php
461 XQCR: tslib/media/scripts/example_typolinkpop.php
462 XQCR: tslib/media/scripts/fe_adminLib.inc
463 XQ-R: tslib/media/scripts/freesite_dummy_page_menu.php
464 XQCR: tslib/media/scripts/gmenu_foldout.php
465 XQCR: tslib/media/scripts/gmenu_layers.php
466 -QCR: tslib/media/scripts/makeMenu_datedirectory.inc
467 -QCR: tslib/media/scripts/makeMenu_keywords_updated.inc
468 XQCR: tslib/media/scripts/plaintextLib.inc
469 XQCR: tslib/media/scripts/postit.inc
470 ----: tslib/media/scripts/testscript.inc
471 ----: tslib/media/scripts/testscript_EXT.php
472 ----: tslib/media/scripts/testscript_INT.php
473 XQCR: tslib/media/scripts/tmenu_layers.php
474 XQCR: tslib/media/scripts/wapversionLib.inc
475 XQCR: tslib/media/scripts/xmlversionLib.inc
476 -Q-R: tslib/index_ts.php
477 -Q-R: tslib/pagegen.php
478 -Q-.: tslib/publish.php
479 .QCR: tslib/showpic.php
480 XQCR: web_info/class.tx_cms_webinfo.php
481 XQCR: layout/db_layout.php
482 XQCR: layout/class.tx_cms_layout.php
483 XQCR: layout/db_new_content_el.php
484
485
486 typo3/sysext/___________________________________________:
487 OK              aboutmodules/
488                 belog                   (2 / 500)
489                         - Needs a vision! Couldn't the Log be more useful?
490                 beuser                  (1 / 1300)
491                         - Add option to Create backend users there! (backend users, groups, filemounts)
492 OK              cms/
493 OK              context_help/
494                 css_styled_content              (1/200)         [H]
495                         - Manual written?
496 XQCR:   extra_page_cm_options/
497 XQCR:   func_wizards/
498 XQC-:   impexp
499                 indexed_search          (4/3500)
500                         - Templates?
501                         - Speedoptimizations?
502                         - Kasper has some objections regarding complex code parts.
503 XQCR    info_pagetsconfig/
504                 install/                                        [ingmar]
505                         - Clean-up of the Install Tool in general!
506 OK              lang/
507                 lowlevel                        (2/800)
508                         - Extend support and finish it with the efforts soon to be done for TCEmain.
509 OK              setup/
510 ?               sv/                                                     [Rene]
511                 sys_action                      (1/400)
512                         - Extend with API for adding custom action scripts
513                         - flexforms for configuration!
514 OK              sys_note
515                 taskcenter                      (4/400) [Julle]
516 OK              tsconfig_help
517                         - Needs maintenance plan
518                 version                         [Kasper]
519                         - (See Kaspers personal todo and Appendix about versioning in this document)
520                 viewpage                        (2/200)
521 XQRC:   wizard_crpages/
522 XQRC:   wizard_sortpages/
523
524
525 For all extensions (even those approved):
526 - Remember to add package tags to all classes!
527 - Write documentation for each (CSH is fine enough).
528 - Check HTML source / CSS usage / XHTML compliancy / That icons are skinnable (add to "skin360")
529 - $LANG->getLL() are htmlspecialchars()'ed / second argument is "1"
530
531
532
533
534
535 *******************
536 APPENDIX 2: XHTML
537 *******************
538 Overview of implications before implementation:
539 - UTF-8 encoding is in fact expected by XML! So the real charset must be set
540 - Wellformedness: Nesting ok. All img tags must be ended with /> (frame,base,meta,link,img,br,hr,area,input)
541 - Lowercase for elements and attributes (and everything else...) + stylesheet element and attribute names.
542 - All attributes in quotes
543 - Minimized values not allowed: Must do this: selected="selected"
544 - Wrapping scripts and style element contents in CDATA - or alternatively they should have entitites converted.
545 - name/id attribute double
546 - Certain nesting of elements not allowed. Most interesting, <PRE> cannot contain img, big,small,sub,sup ...
547 - Setting charsets may put some special requirements on both XML declaration/ meta-http-equiv. (C.9)
548 - ampersands (and entities in general I think) MUST be converted to an entity reference! (&amps;). This may mean further conversion of non-tag content before output to page. May be related to the charset issue as a whole.
549
550 Related issues:
551 - Charset / encoding issues
552
553 ---------
554 Practical steps for creating XHTML compliance:
555
556 - lowercase: <(td|tr|p|div|table|b|i|u|a)
557 - attributes in lowercase and ""; TYP: bgColor, border=0 cellspacing=0 cellpadding=0, valign=top, onClick, onChange, onSubmit, method="POST", type="Submit"
558 - Ending tags: <br>, <hr>, <input>, <img> (Longer list: frame,base,meta,link,img,br,hr,area,input)
559 - shorthand: checked, selected, multiple, nowrap
560 - href="", action="", src="", onclick= tags: htmlspecialchars() of URLS
561 - <img -> ' alt="" />'    REGEX: <img[^>]*[^-]>
562 - FINDING attributes with no quotes:
563 ([[:space:]]+)(class|face|hspace|vspace|rowspan|bgcolor|src|colspan|align|color|valign|border|width|height|cellpadding|cellspacing)=([^[:space:]>"']+)
564 ... and replace with: \1\2="\3"
565
566
567
568
569
570 *******************
571 APPENDIX 2: Debugging / varoius
572 *******************
573
574 Teststring for XSS bugs and SQL injection:
575         >><b><i>asdf</i></b>-\-\\-\"-\'-"-'-
576
577 debug_backtrace() - nice function for debug-output.
578
579
580 *****************
581 APPENDIX: Versioning thoughts:
582 Authors: Julle and Kasper.
583 *****************
584
585 - Versioning (for single elements including single "pages" record) is based on
586         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!)
587         OK - All versions of this one element being a) at pid "-1" and b) a field "real_id" pointing to the official UID
588         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!
589         ? - Backend user access to elements is based on the access restrictions for the official element. THis must be implemented on core level.
590
591 - Preview in frontend:
592   OK - Pages can be previewed just by their UID (which will select the offline version!)
593   OK - For other elements, sending ADMCMD_vPrev array
594   - Selector in the AdminPanel selects:
595         - Version of page for current ID?
596         - TAG (across many records)
597
598 - Tagging:
599         - Setting tags across records for mass-swapping:
600                 - A tag can only be set for ONE version of a record
601                 - There is a default tag used when new versions are created called "draft". Users can create own tags and select one of those instead.
602                 - Implicitly the published version is tagged "published"
603                 - 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.
604                 - We might set states like "draft (never published, many), published (online, only 1), archive  (has been published, many) - but what significance does that carry?
605
606 - Permission setting:
607         - 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!
608                 Enabled for tables with:
609                 - versioning enabled
610                 - a certain extra flag set in [ctrl] (eg. "versioning_freezeOnline"
611                 - Globally set with a flag in TYPO3_CONF_VARS (so we can build the first version of the site)
612                 - "admin" users can circumvent it.
613
614 - Swapping versions:
615   OK - clear-cache actions when swapping?
616   OK - Swapping might need to exclude fields like "sorting" etc. Others could be imagined.
617   OK - copies:
618   OK - Swapping should consider if a PAGE record should be swapped record-only OR including its content!!
619   - 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?
620   - TODO: When swapping; Check "unique" fields (like pages.alias) etc.
621   - Swap by TAG (across many records)
622
623 - Trunk/Branch:
624     OK - Create version of single page (as above)
625         OK - Create version of page branch (1-... levels)
626                 OK (API) - Either create version of EACH page individually (like tagging in CVS)
627                 OK (API) - Or create single-point-of-reference so that pages INSIDE can be swapped, deleted and created (just like content elements can)
628                         - Requirement: Intelligent swapping of "sub-element" ids that CAN be traced back to the original!
629
630 - Backend:
631   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.
632   OK - In Page module + TemplaVoila page module: There will be a version selector implemented so users can switch around between versions.
633
634
635 - Pages-versioning and the impact of NOT swapping tt_content element uids:
636         - Loose anchor-points, manually made (could be hack-fixed by some intelligent copying tracking)
637         - 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)
638         - Insert-records could potentially do the same
639         - Impact assesment: Low.
640         - Clean-up module (in templavoila?) could also track such things
641         - Problems for non-templavoila sites would be low.
642     - What about a page alias?
643
644
645
646
647
648
649
650
651 ******************
652 APPENDIX: Charsets
653 ******************
654 In TYPO3s backend charsets used has traditionally been the 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
655 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.
656 You set the global charset in a localconf file like this: $TYPO3_CONF_VARS["BE"]["forceCharset"] = "utf-8";
657
658 Here are a few notes:
659 - 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.
660 - PHP Upper/Lowercase - not tested.
661 - 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.
662
663
664
665 ******************
666 APPENDIX: LDAP
667 ******************
668 - hash of base-dn skal v?re cleaned op. M?ske prefixe usernames med 10-char hash af base-dn.
669 - 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!!!
670 - Ved record creation: LDAP default group.
671
672 ? Getting info like usergroups, email, name?
673 ? Case-sensitivity of the DN in general?
674 ? DN entering..
675 ! MD5-hashed passwords
676
677 1) AUTO -DN : Array of DN's, searched in order.
678 2) Select dn: User selects the DN he is from.
679 --------------------------
680 So we are looking at two scenarios:
681 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)
682 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").
683 3) Mapping of ONE typo3 user to MANY LDAP users...
684
685 - 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...)
686
687 - Make API so that other authentication solutions than LDAP can be used (eg. another MySQL table!)  [See Rene Fritz's prototype work with services...]
688
689
690 Also see:
691 - [Kasper] "LDAP" folder in Mailbox
692
693
694 ********************
695 APPENDIX: DBAL (moved to TODO.txt of extension "dbal")
696 ********************
697
698
699
700 **********************
701 APPENDIX: LPE
702 *********************
703 Also see:
704 - [Kasper] "LPE" folder in Mailbox
705
706 Syncronization (JH thoughts, general LPE):
707 DB -> DB (1):
708 - Production environment, which can dump configured set of tables to live server database and back. This is controlled from Production env.
709 - 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).
710 - 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.
711 - 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...
712
713 Req to T3:
714 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.
715
716 DB->HTML
717 - Basically this is an rsync/ftp sync question which requires a set of static files.
718 - 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.
719
720 Two situations:
721 - 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)
722 - Publish static for FTP server. All *.html requests MUST exist. (Purely static, limitations acceptable.)
723
724 _____________________________________
725 Server sync. extension, PLAN:
726 Create an extension which syncronizes a set of tables to another database, using DBAL extension to determine handler for the remote tables
727 - Use "tstamp" for update, "crdate" for inserts; does not dump full tables, only pushes updated content!
728 - "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.
729
730 _______________________________________
731 General Crawler ("crawler"):
732 - Crawls pages on TYPO3 site by URLs (using PHP fetching)
733         Config:
734         - Preload queue
735                 - with previous crawler session log
736                 - page tree pages / single top page?
737                         - For this; variable parameters, eg. "&lang=(dk|de)&cur=(Euro/DKK)&type=(0|1)" giving 3x2 combinations. Challenge; cHash?
738         - Set max-depth
739         - Adds GET parameter to identify operation (handler)?
740                 - (re)index pages
741                 - (re)cache pages
742                 - Export as static HTML...
743         Session log:
744         - Identifies session by handler/id
745         - Can look up if a crawler has opened/closed/is-stalled etc.
746         - Multithreading crawlers (in IFRAMES or whatever)
747         - From session log we can read out the status-arrays of the threads and display in backend (handler shows as it likes.)
748         - Start / stop crawler session
749
750 For indexing (and caching and publishing!) we basically need to configure traversal through configurable paramters like:
751         - id
752         - type
753         - L (sys_language)
754         - MP (?)
755         - Simulate user logins (eg. sending "no-login", "user:kasper, password=blabla", "user:homer, password=blabla2")
756         - Additional parameter ranges per page (eg. "tx_myext[var1] : 1-7   AND tx_myext[var1] : 0,1 ")
757         - Command parameter like "&DO_INDEX=1" or "&RECACHE=1" (or both!)
758
759         - Use CLI script for crawler?
760
761 __________________________________________-
762 CACHE MANAGEMENT EXTENSION
763
764 - cache_pages -> API for adding key1/key2 custom content!
765 - automatic clear-pages cache protection? (global flag)
766 - OK - Configuration: Configure "cache_" tables to clear when "Clear all cache"
767 - "clear-cache" might not DELETE records but rather mark them "update-cache" or something like that... (would require the URL to be around...)
768 - 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!)
769 - "key1" and "key2" for granularity in caching!
770         -> used in manual clear-cache situations (cache mgm)
771         -> used in configurable clear-cache situations (clearing cache for a single document on TYPO3.org!)
772 - "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)
773         -> For TV: ->registerElement('tt_content','uid'); when elements are NOT on the physical page
774         -> For 3dsplm: ->registerElement('bfs_brand','catia')
775         -> For 3dsplm: ->registerElement('bfs_skills','')       [saying that ANY bfs_skill changed will clear cache of front-page where all are shown.]
776 - &no_cache can be disabled (allows DoS attacks!)
777 - cHash problems?
778
779 cache-extension ("cachemgm")
780 - in click menu, link to cache mgm
781 - Web>Info "Cache overview":
782         - 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!
783         - clear cache for page/section of page tree.
784 - RE-generation of branches of this tree! (crawling the pages)
785 - overview of cache_hash table.
786 - overview of pages-section table.
787 - tracking pages which are shown non-cached
788
789 _____________________________________
790 Static publishing ("staticpub" extension)
791 - Writes static file (automatically) IF simulateStaticDocument uses HTML / Speaking URLs and allows caching of page
792         - root of the publishing dir MUST be hardcoded in TYPO3_CONF_VARS etc.; The extension has full power inside of this dir!
793         - Support for both speaking URLs (hierarchy of directories) and regular simulate static document types (flat dir)
794         - Using mod_rewrite to access static versions of documents.
795                 - Checks existence of files
796                 - Can bypass GET/QUERY string and POST requests!
797         - File location is tracked in a table tied to page-cache table uids - thus making a flush very easy
798         - File write should probably happen together with inserting cached version in database (system hook)
799 - setting a "config.disableStaticCreation = 1" flag (in TS template) can disable it (for conditions situations)
800 - Also registeres: a) resources on the page (images/stylesheets), b) GET parameters from M5/B6 encryption. (not used yet!)
801 - Publishing can be done by remote-client requests (default) or using the general crawler (for re-caching pages)
802 - Web>Info module "Static publishing": overview showing all files and which pages they are related to, possible "lost files" (those not registered in database) and "missing files" (in the database but not there).
803 - To create new versions doesn't have to REMOVE the existing! Just overwrite!
804
805
806 ******************************
807 APPENDIX: Image Processing
808 *****************************
809 Generally we want:
810 - Full PNG main support
811 - Full IM5.x support
812 - Non-ImageMagick version which CAN scale images (with GD/JPG)
813
814 To get rid of ImageMagick totally we need a GD with...:
815 - blur/sharpening
816 - scaling
817 - masking
818 - reduce colors / dithering
819 - jpg quality control
820 - 96 dpi / 72 dpi
821 - other effects?
822 - Support for many file formats.
823 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).
824
825 Notes:
826 - Consider imageprocessing issues like PNG / GDlib2 / Freetype2 / IM5.4.x  / T1lib
827 - Other options: PHPImLib? GIMP?
828 - Improve Install Tool
829
830 --------------------
831 imagecopymerge
832
833 jonny at sanriowasteland dot net
834 29-Sep-2002 06:36
835
836 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).
837
838
839 Also see:
840 - [Kasper] "ImageManipulation" folder in Mailbox
841
842
843 ******************************
844 APPENDIX: Idea about "Roles"
845 ******************************
846 This is a few ideas about adding roles to the permission concept of TYPO3:
847 - There could be, say, 4 default roles:  author, editor, administrator, developer
848 - Users can be assigned "membership" of a role (basically a "role" is like a hardcoded "user-group"?)
849 - Like you can configure database fields in TCA to be an "excludeField" you could also configure which ROLES can edit the field.
850 - Possibly each role could assign membership of some groups.
851
852
853 *************************************
854 APPENDIX: Various ideas for extensions
855 *************************************
856 EMAIL publication:
857 - People can publish stuff by sending email to certain adresse piping the content into database.
858 - 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).
859 - See mail from DH, subject; "Last day for feature requests" Message-ID: <200202181821120933.01CA5B9F@smtp.worldonline.dk>
860
861 IMPORT WEBSITE:
862 - Import external website! (Rene's extension). Includes some crawler feature (locally og external url)
863
864 SITE-CRAWLER:
865 - A crawler which crawls either local or external site, invoked from a) backend or b) cron-script.
866 - Used for 1) Indexed Search, 2) External website import, 3) Just walking through a site for indexing/caching all pages.
867 - Trying to define a sitemap/menu structure + find "content" on page
868   - 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?
869
870 BACKEND TOOLS:
871 - Global search and replace of records (Rene F?)
872 - Export the complete typo3 site/database, in a big file like mycompletesite.t3d
873
874 Repeated intervals extension:
875 - Cron-job which alters the start/end times according to some schedule.
876 - Configurable for any element of course
877
878 New-Wizard:
879 - 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.
880 - Could be useful for: TemplaVoila Template Objects, Content Elements (like tables/forms/plugins), Pages of sorts.
881 - Configuration could be in XML (since it needs a hierarchy)
882
883
884 **************************************
885 APPENDIX: PATTERN-control
886 **************************************
887 - Specify a pattern of allowed/required values.
888 - Those values are on the basic level just "table:uids". On the next level it would also set requirements on one or more field values inside!
889 - How can this be done?
890 - 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...?
891
892
893
894 **************************************
895 Rapport of "deleted"-check in typoscripts (190500)
896 **************************************
897 TYPO3:
898 - "deleted"-field must be set manually in userauth for user-tables!
899 Hardcoding:
900 - "pages" in load_tree.php
901 - "sys_filemounts" in userauth_group
902 - "user-group tables" in userauth_groups
903 - "pages" in ti_inc.php
904 - "pages" in transferdata.php
905
906 TypoScript:
907 - sys_domain is NOT checked for deleted in "page.php"
908 - getForeignRecords() (page.php) does not check for deleted!!! (this is even not used any more!!
909 Hardcoding:
910 - "pages" in page.php
911 - "pages" in t_search.php
912 - "pages" in index_ts.php (caching)
913 - "sys_template" in t_template.php
914 - "fe_groups" in index_ts.php
915
916
917 **************************************
918 Bugs, considerations, notes
919 **************************************
920 - mail() hangs in 90 second (approx) if computer is not on the net! (deliver to mail-server)
921 - REWRITE of files when they already exists? shortMD5 is guilty?
922 - "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.
923 - mysql_query() function should not be used I think as this queries the current database. mysql() should be used instead.
924 - 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.
925 - PDF-files over 600 k are not rendered by ImageMagick. Less than 270 is! How come and is this true. Number of pages?
926 - When GDlib is disabled it can be very confusing that record icons does not change their look according to hidden/starttime/endtime etc...
927 - 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)
928
929
930 **************************************
931 Innovation, brainstorming for future
932 **************************************
933 - TSconfig defined through FlexForms?
934 - Drop tt_content for content rendering and let extensions be the sole source of new content element types?
935 - Check sitecore ideas for adding new fields etc.
936 - Backend for PDAs/Lynx
937
938
939
940
941 *********************************
942 Translation of Backend
943 *********************************
944 Overview of missing translations. (UPDATED 18/11 after major change to ll-XML and csh_* language packs)
945 Numbers are new labels needing translation (changed labels are not measured)
946
947 - dk [Danish]           55
948 - de [German]           9
949 - no [Norwegian]        57
950 - it [Italian]          9
951 - fr [French]           36
952 - es [Spanish]          63
953 - nl [Dutch]            9
954 - cz [Czech]            9
955 - pl [Polish]           9
956 - si [Slovenian]        90
957 - fi [Finnish]          9
958 - tr [Turkish]          9
959 - se [Swedish]          9
960 - pt [Portuguese]       136
961 - ru [Russian]          79
962 - ro [Romanian]         74
963 - ch [Chinese (Simpl)]  282
964 - sk [Slovak]           188
965 - lt [Lithuanian]       142
966 - is [Icelandic]        624
967 - hr [Croatian]         121
968 - hu [Hungarian]        9
969 - gl [Greenlandic]      1031
970 - th [Thai]                     141
971 - gr [Greek]            1262
972 - hk [Chinese (Trad)]   168
973 - eu [Basque]           938
974 - bg [Bulgarian]        319
975 - br [Brazilian Portuguese]     15
976 - et [Estonian]         243
977 - ar [Arabic]           691
978 - he [Hebrew]           153
979 - ua [Ukrainian]        662
980 - lv [Latvian]          307
981 - jp [Japanese]         1261
982 - vn [Vietnamese]       1245
983 - ca [Catalan]          1262
984 - ba [Bosnian]          141
985 - kr [Korean]           1262
986