Commit Graph

1494 Commits

Author SHA1 Message Date
Ralf Becker
7e0df9eb55 allow to force tooltip for help messages by prepending a pipe "|" character 2012-02-19 13:54:57 +00:00
Ralf Becker
253f98d315 Restore all eTemplates from distirbution file via eTemplate editor (no need to touch distribution file or fiddle with the database) 2012-02-15 14:51:58 +00:00
Nathan Gray
1624c37dc7 Fix typo in Excel date processing 2012-02-13 19:23:17 +00:00
Nathan Gray
4f669300a4 When merging into a spreadsheet document, convert dates into SS dates 2012-02-13 18:59:00 +00:00
Ralf Becker
1f76e0c191 fixed several small issues around CardDAV and history logging in addressbook (dont log not set custom fields as there are not stored and therefore not changed) 2012-02-10 21:29:50 +00:00
Nathan Gray
73c1ae8617 Use double quotes for onchange to match everything else 2012-02-02 20:22:09 +00:00
Ralf Becker
5433778fc5 fix for integer input with negative length, to get readonly input field, fixes html5 not setting size/width commit 2012-02-01 17:30:28 +00:00
Nathan Gray
b8d9b748ac - Re-arrange HTML tag order to account for simplistic newline handling (broke nested tags)
- If unable to load/parse content after trying to convert HTML styles into target document styles, fall back and try again, but strip all tags this time.
2012-02-01 00:03:31 +00:00
Ralf Becker
c3cadea4f4 storing unsupported (valarm-)components like unsupported (X-)properties 2012-01-31 01:02:21 +00:00
Ralf Becker
d7a953a60c fixed fatal error calling widgetExists on a non-object 2012-01-30 22:53:48 +00:00
Ralf Becker
fb16ff842d InfoLog/CalDAV: store unsupported iCal properties like custom fields incl. history logging, thought they are not displayed unless you explicitly add a custom field from them (prefixed with one #) 2012-01-29 22:34:43 +00:00
Ralf Becker
d972804aff * Addressbook: preference to open EMail addresses in external mail program, even if user has access to EMail app 2012-01-13 05:22:18 +00:00
Ralf Becker
b34d6f9d35 automatic conversation of not set DB timestamps returned by MySQL as "0000-00-00 00:00:00" to null 2012-01-11 01:03:45 +00:00
Nathan Gray
f76b1ad858 Use opener.egw_appWindowOpen() if in a popup to open links in main window, if the app doesn't want a popup 2012-01-09 20:28:44 +00:00
Ralf Becker
043b895a04 ability to open nm_action=location in a given targetapp tab, plus documentation 2012-01-07 23:02:29 +00:00
Nathan Gray
af2e743a83 Add parameter to exclude certain entries 2012-01-06 17:28:40 +00:00
Klaus Leithoff
b79af79410 remove felamimail from static app_list in egw_link, as felamimail is implementing search_link; gather only apps for link that implement query and title 2012-01-06 10:11:16 +00:00
Nathan Gray
2e9866bab9 Add mergeprint tag for links to a specified application: links/appname 2012-01-05 17:43:44 +00:00
Nathan Gray
32b1cc2a29 Limit custom field app entry possibilities to apps that support query and title, which are required for custom field to work properly 2012-01-05 17:04:54 +00:00
Ralf Becker
a34e9b8431 html5 input type=nummeric seems to ignore size, setting a width instead 2012-01-05 01:42:06 +00:00
Nathan Gray
194edcd349 Another attempt to fix lost infolog custom fields in addressbook view when changing nm filters 2012-01-04 22:01:15 +00:00
Klaus Leithoff
2e8ec69619 API/customfields: fix for link-entry validation problems caused by unmotivated/empty default data. This may require a review. 2012-01-03 16:34:02 +00:00
Klaus Leithoff
ed9f079fda * API/customfields: fix for Stylite Ticket#2629 ->Mandatory custom field not saved<- fix for customfields (if mandatory) where not saved on first attempt, after failed formvalidation. 2012-01-03 14:46:06 +00:00
Nathan Gray
7d5500d1dd If hooked, keep app in extension_data to persist across etemplate loops. Fixes lost infolog custom fields in addressbook view when changing nm filters
- Attempt 2, see r36956.
2011-12-23 16:32:15 +00:00
Nathan Gray
a5e904faa1 Revert accidentally commited devel stuff 2011-12-23 16:29:09 +00:00
Nathan Gray
587418fca2 If hooked, keep app in extension_data to persist across etemplate loops. Fixes lost infolog custom fields in addressbook view when changing nm filters
- Attempt 2, see r36788.
2011-12-23 16:27:41 +00:00
Klaus Leithoff
d37ee80161 mending Warnings: Cannot use a scalar value as an array 2011-12-20 15:57:03 +00:00
Nathan Gray
f8ec5c9f40 Revert 37361, didn't solve the issue 2011-12-19 16:13:51 +00:00
Nathan Gray
2eee7a5119 Fix missing >< when merging to XML, caused by double escaping 2011-12-09 21:00:57 +00:00
Nathan Gray
22668f078d Use js link registry to open links, allows more accurate target (popup, tab, _blank) 2011-11-24 19:07:32 +00:00
Ralf Becker
c76f663b61 dont use html5 input type="url", as it requires a scheme (eg. http) 2011-11-24 07:12:36 +00:00
Nathan Gray
1afba81ce8 Add 'No definition' option for default export definition preference. Allows use of legacy nextmatch CSV export with Import/Export app still available 2011-11-18 16:01:57 +00:00
Ralf Becker
38f282bccf fixed warning if no name part exists 2011-11-18 13:03:12 +00:00
Ralf Becker
978b014ffc * Mergeprint: fixed not working merge (white screen, nothing in error-log) under PHP 5.2.6
Catchable fatal error: argument 1 to transformToXml() must be of type DOMDocument
2011-11-16 09:26:23 +00:00
Nathan Gray
26c888ccd4 Encode square brackets and split names at ][, not just [ 2011-11-14 22:57:06 +00:00
Nathan Gray
471f471ee9 Get simple submit buttons (legacy actions) working in datagrid 2011-11-09 21:34:52 +00:00
Ralf Becker
b4bfa392b2 * Filemanager/eTemplate: fix for MyStylite bug #2495: deleting files containing [ as first char deletes whole directory
added encoding of square brackets in eTemplate and improved etemplate_bo::(get|set|isset|unset)_array() to split indexes at ][ and not just [
--> needs to be "back"-ported to eTemplate2 to!!!
2011-11-09 14:32:07 +00:00
Nathan Gray
4449f65797 Call entry2name() for titles, don't just use cache 2011-10-31 15:47:24 +00:00
Klaus Leithoff
0141321c76 silence warning: bo_merge::get_links -> make third parameter optional, as the parent function called has this one as optional parameter too. 2011-10-31 11:23:04 +00:00
Hans-Jürgen Tappe
abdcd1ca29 Fix a compilation error which currently prevents from using etemplates 2011-10-30 20:43:06 +00:00
Nathan Gray
40fbf0a450 List each link on own line, add ID shortcut like filemanager, if available 2011-10-27 16:08:59 +00:00
Nathan Gray
18e38b1dfc - Add app filter
- List should be comma separated
- Add attachments translation
2011-10-25 22:50:05 +00:00
Nathan Gray
c972484133 Add common function to get titles of linked entries 2011-10-25 22:30:51 +00:00
Nathan Gray
3b73d9bb3d Fix column sorting 2011-10-18 22:20:27 +00:00
Nathan Gray
452b7c98e1 Fix typo, accept null values 2011-10-18 16:33:41 +00:00
Ralf Becker
ebb3a2595f reverting r36788 as it breaks editing of custom fields, type is not returned because of added post_process method is also called for customfields-type widget 2011-10-14 18:20:09 +00:00
Nathan Gray
3260c1cc81 Store common custom field settings globally, at top level. 2011-10-14 17:56:29 +00:00
Nathan Gray
aba7a6eca3 Add namespace, get row template parsed too 2011-10-14 17:55:24 +00:00
Klaus Leithoff
1621485da9 * import/export: fix for failed export on not set limit for nonadmins on standard export (handle empty export_limit since it will be casted to 0 on (int)) 2011-10-12 10:37:35 +00:00
Nathan Gray
06e03d2137 Make sure customfields widget has an ID, or it can't access settings client-side 2011-10-11 18:15:51 +00:00
Nathan Gray
575d21b962 Progress on custom fields widgets 2011-10-06 23:44:55 +00:00
Nathan Gray
66ea661e08 Try to handle partial template names - row as well as app.function.row 2011-10-06 15:23:24 +00:00
Nathan Gray
f67bfba58d Let transformer handle trying to change sel_options 2011-10-05 22:27:35 +00:00
Nathan Gray
dfe5d21ea4 Save as default checkbox - still a problem getting value on server 2011-10-05 16:12:40 +00:00
Nathan Gray
a9b4bfdaba Move column selection popup to nextmatch 2011-10-04 21:45:54 +00:00
Nathan Gray
3c1bebf3f1 Fix missing current app... 2011-10-03 16:02:41 +00:00
Nathan Gray
155e3ab3b5 Fix error when sorting/filtering (showed up in timesheet) 2011-10-03 15:34:10 +00:00
Nathan Gray
c230e5f99a Send category options - header doesn't use a template, so they have to be passed 2011-10-03 14:56:20 +00:00
Nathan Gray
16d010becf If hooked, keep app in extension_data to persist across etemplate loops. Fixes lost infolog custom fields in addressbook view when changing nm filters 2011-09-30 14:59:41 +00:00
Nathan Gray
36c39cf4b8 Get filterheaders working 2011-09-27 17:58:10 +00:00
Nathan Gray
0ace096701 Start nextmatch header 2011-09-23 19:09:52 +00:00
Klaus Leithoff
2d494997ab rework of bo_merge::getExportLimit, apply to etemplate, importexport, addressbook, calendar 2011-09-16 13:03:46 +00:00
Nathan Gray
0d47709ed1 Implement transformer changing type on client side by changing type while loading 2011-09-15 18:00:17 +00:00
Nathan Gray
965fb54ffa Fix handling of first example - simple assignment 2011-09-15 17:57:48 +00:00
Klaus Leithoff
d216a37bba check if app is set before calling the hook on export_limit; TODO: move the call to bo_merge::getExportLimit and cache the appspecific returnvalue there, to improve speed 2011-09-15 17:40:37 +00:00
Klaus Leithoff
d9905d3fb4 calendar/addressbook/API: introduce hook to fetch the export_limit to be applied for an app; introduce method to test if a specific hook exists for an application; fetch the export_limit via hook where appropriate 2011-09-15 14:46:56 +00:00
Klaus Leithoff
70a7026915 * merge_print/calendar: control the availability of mergeprint and csv export, if the export_limit is set to ->no<- and the user in question is not exempted from export_limit restrictions 2011-09-14 13:09:13 +00:00
Klaus Leithoff
36e3a1b8ce add missing translations for export_limit feature of calendar, correcting translation strings for export_limit warnings 2011-09-14 10:27:53 +00:00
Ralf Becker
2bd343ee05 - processsing actions now on serverside, also creating action_links array
- call_get_rows return now directly rows indexed by row-number: start, ..., start+num_rows-1
- non-numerical indexed rows are returned as is
--> widget still calls ajax_get_rows, even as we supply the first N=25 rows
2011-09-14 09:41:08 +00:00
Nathan Gray
a3901bd00f Link list 2011-09-14 00:06:04 +00:00
Ralf Becker
77f2a043fc local caching and queueing of egw.link_title() requests 2011-09-13 19:55:06 +00:00
Ralf Becker
5cadd29d58 Basic egw.link_title(_app,_id,_callback,_context) method.
Plan is to run a clientside cache and own queue for link_titles, as server can query titles for N id's for a given app more effiently then N separeate queries.
2011-09-13 18:23:43 +00:00
Klaus Leithoff
74b41ec99a fix bug regarding merge_print with export_limit set in calendar, as calendar may pass a search query instead of a list of ids (this is the reason, why the test within bo_merge on export_limit is not working as expected) 2011-09-13 15:41:31 +00:00
Klaus Leithoff
d52c72207c * calendar/importexport/addressbook: calendar introduce new config option to set app specific export_limit; calendar csv export: use enumerate for exporting events as csv; bo_merge: introduce new helper functions to get and check export-limit; addressbook: use new helper functions 2011-09-13 09:05:33 +00:00
Klaus Leithoff
55ba753e3c making 1st param for custumfield_widget construct (ui) optional, to avoid warning 2011-09-13 08:38:16 +00:00
Ralf Becker
132cafc8a9 check if we can use the XSL extension, to not give a fatal error and rendering whole merge-print non-functional AND only keep tags, if XSL is available 2011-09-12 10:51:21 +00:00
Ralf Becker
9066385fa5 check if we can use the XSL extension, to not give a fatal error and rendering whole merge-print non-functional 2011-09-12 10:21:18 +00:00
Ralf Becker
d2adcf972d skip the empty (NULL) row 2011-09-09 19:55:22 +00:00
Ralf Becker
791f4ae071 remove empty rows required by old etemplate to compensate for header rows 2011-09-09 19:46:44 +00:00
Nathan Gray
c0962b1ce7 Don't give an exception on null values 2011-09-09 16:46:55 +00:00
Ralf Becker
4600445527 fixed exception with text "0" 2011-09-09 16:30:20 +00:00
Andreas Stöckel
2290b04102 Loading data from server in nextmatch widget - readonlys is not processed as it is not so easy to handle 2011-09-09 14:32:55 +00:00
Ralf Becker
e998a1fed5 - sending 25 rows with inital request to client
- callback for further rows from client
2011-09-09 14:00:30 +00:00
Ralf Becker
b045e1f852 stopping permanent error_log 2011-09-09 13:26:54 +00:00
Ralf Becker
64b4ac7e68 added a static method max_upload_size_message, required by some apps 2011-09-09 13:26:14 +00:00
Andreas Stöckel
58bc3367df Implemented server-side callback function 2011-09-09 11:29:07 +00:00
Ralf Becker
476deb3605 query_list(). initialize return value to array(), to allways return an array 2011-09-09 09:41:51 +00:00
Nathan Gray
89991ffb60 Link widget with async file upload + linking 2011-09-09 00:05:46 +00:00
Ralf Becker
ea03c4032b implemented link attributes for image-widget and added them to xulio, some docu for describtion 2011-09-08 20:44:53 +00:00
Ralf Becker
89847abae6 added "progress"(-bar) widget to differ from image and using it in templates 2011-09-08 19:00:57 +00:00
Ralf Becker
008f009d80 - implemented new egw.link_app_list(_must_support) and egw.link_get_registry(_app, _name) methodes
- using egw.link_app_list('query') in link widget (no need to transfer it additonally)
- added some more docu to egw object
2011-09-08 12:24:53 +00:00
Nathan Gray
d9f321a413 Start of a link-to widget using jQuery-UI's autocomplete 2011-09-07 23:32:24 +00:00
Nathan Gray
ae1b9c8a64 - Don't let tidy wrap lines - line breaks don't go inside tags
- If tidy reports errors, strip all tags so we should get some sort of openable file
2011-09-07 15:15:08 +00:00
Ralf Becker
b633044a46 * API/Calendar: allow to link to accounts and allow to select accounts as participants by searching them like contacts 2011-09-07 14:47:51 +00:00
Nathan Gray
b2e032245a - Nicer UI for status
- Implement server side callback function when file is uploaded
- Send needed file info back to client instead of storing in session
2011-09-06 19:55:52 +00:00
Nathan Gray
d71b807b8f Use 'utf-8' (instead of utf8) as the encoding, it seems to solve any encoding issues 2011-09-06 18:21:39 +00:00
Nathan Gray
67d7615ecc Fix config for HTML Tidy, fix stripped text in lists 2011-09-06 17:22:48 +00:00
Ralf Becker
f8ad548a9a added missing semicolon to entity &#8203 and do an urldecode to get a nicer looking link 2011-09-06 07:41:14 +00:00
Ralf Becker
7984af4c0e specify encoding, as it defaults to latin1 (iso-8859-1) which is not longer used by EGroupware and writes non-ascii as entities 2011-09-06 06:25:17 +00:00
Nathan Gray
9e17bd1faa If HTML Tidy is available, use it to clean HTML content 2011-09-05 20:24:10 +00:00
Nathan Gray
cb5ee32664 Remove spans with no attributes, they're invisible and can cause invalid XML with linebreaks 2011-09-05 16:10:04 +00:00
Ralf Becker
504db7e3ae validation for date-widgets, needs more testing 2011-09-04 08:37:39 +00:00
Nathan Gray
8875c94c24 Async file uploads 2011-09-01 22:07:30 +00:00
Nathan Gray
8a632c723a - Add image widget
- Add missing dependency on et2_core_common
2011-08-30 20:56:01 +00:00
Nathan Gray
c84a471538 Implement last of the date widgets 2011-08-30 20:50:55 +00:00
Ralf Becker
bc739d8309 adding an empty hidden field, to force some return value, if no account was selected for export_limit_excepted, without any return value nothing gets returned and therefore stored 2011-08-30 08:16:51 +00:00
Ralf Becker
fa435de6a9 allow to call a function instead of a static helptext 2011-08-27 18:35:40 +00:00
Ralf Becker
8b49d88788 ignore et2 base-class when scanning for widgets to display in (old) editor 2011-08-27 09:08:07 +00:00
Ralf Becker
07f7e61e91 do not call parent constructor for old etemplate 2011-08-27 09:03:32 +00:00
Ralf Becker
389486793d - config is now cached on instance level
- arrays in $GLOBALS[egw_info][server] are now automatically serialized and unserialized
- new static method to check if user is export-limit excepted
--> saves to query it on each request (for non-phpgwapi, which was already cached in the session)
2011-08-26 13:50:20 +00:00
Ralf Becker
7d33eb610a partially reverted r36310 as it has side-effects on the nextmatches widget (in actions and selected rows) 2011-08-26 13:30:05 +00:00
Nathan Gray
0571ac47e2 Get basic HTML formattings working in word 2003, formattings inside table working in word documents 2011-08-25 20:28:24 +00:00
Ralf Becker
502ac42923 - etemplate_widget_transformer abstract baseclass to define new widgets using a transformation out of existing widgets
- defines a syntax to describe how the widget is build out of existing widgets
--> reimplemented contact-widget using that aproach on serverside for old etemplate
--> sending the modifications via etemplate_widget::setElementAttribute() to the client fails, because client does not support changing the widget type
--> need to be implemented on the client
2011-08-25 19:52:51 +00:00
Nathan Gray
005b483487 Replace extra XML declaration 2011-08-25 15:46:54 +00:00
Nathan Gray
bb00c4217d Don't fail if table has properties, support table borders in docx files 2011-08-24 17:29:03 +00:00
Ralf Becker
04aa3d35b9 - no longer translating options on server-side
- sending evtl. necessary no_lang attribute via modifications to client
- deprecated template->(get|set|disable)_cell(_attribute) in favor of new etemplate_widget::(get|set|disable)Element(Attribute)
--> options via sel_options are currenlty not working on clientside
2011-08-24 09:24:55 +00:00
Ralf Becker
33c6766c88 - fixed xul_io class not exporting id of tab
- fixed tab widget to use id instead of label
- added attribute names for describtion (label) in xul_io, to export them as single attributes not comma-sep. as options
- added translate: true to description/label title
--> xet-files need to be dumped new, to get the tab-ids
--> seems like describtion value is translated unconditional, it should only be translated if no_lang attribute is not set or false, while label attribute is always translated (Andreas?)
2011-08-24 07:18:59 +00:00
Nathan Gray
42af1f2db6 Fix line breaks in xmlWord.Documents 2011-08-23 19:56:46 +00:00
Andreas Stöckel
b0a21acb12 Changed name of 'label_for' attribute to 'for', implemented attribute translation 2011-08-23 17:05:05 +00:00
Nathan Gray
1cddecb832 - Fix missing formatting in xml/word documents
- some changes in bullets, maybe avoid error in docx documents
2011-08-22 22:30:14 +00:00
Nathan Gray
0264b70a0b Silence warning when export exception is not set 2011-08-22 14:20:44 +00:00
Klaus Leithoff
b76da493de * API: taking care of sorting AND filtering by customfields with names containing whitespace; (best way to deal with this issue, is not using whitespace in your customfield names at all) 2011-08-22 13:08:19 +00:00
Ralf Becker
31ab3d9d75 use html_entity_decode, as we add options with .text(), it can't be entities, but php knows no string literals with utf-8 2011-08-22 07:46:38 +00:00
Ralf Becker
0aa128b53e Loading translations like other javascript files:
setting headers to allow browser to cache the file until it's etag containing the creationdates of the used langfiles changes
--> et2 can now use egw_lang object to translate labels, options, ...
2011-08-21 20:09:14 +00:00
Ralf Becker
7b89481b76 fixed typo giving fatal error with template infolog.edit 2011-08-21 17:13:08 +00:00
Ralf Becker
db9434d8e6 added radio validation to etemplate_widget_checkbox, as they are nearly identical 2011-08-21 14:03:52 +00:00
Ralf Becker
5bc3844be8 fixed typo 2011-08-21 14:02:31 +00:00
Ralf Becker
7c5cb7e04b validator for checkbox, not yet tested because of missing clientside 2011-08-21 13:47:45 +00:00
Ralf Becker
74fabe9994 removed implemented todo 2011-08-21 13:46:21 +00:00
Ralf Becker
32ea28a59c fixed copy-n-paste typo 2011-08-21 13:45:55 +00:00
Ralf Becker
76d5a57b8c added validator for htmlarea, not yet tested, as it is not yet implemented on clientside 2011-08-21 13:01:10 +00:00
Ralf Becker
ec58f52b62 implemented disabled columns 2011-08-21 12:43:02 +00:00
Ralf Becker
c4293ba3bc honor disabled attribute in validation for widgets including grid rows, but not yet grid columns 2011-08-21 11:55:56 +00:00
Ralf Becker
7916e86880 method to translate options incl. optionial title 2011-08-21 11:38:01 +00:00
Ralf Becker
e0624ebe89 removed set_(row|column)_attributes and disable_(row|column) method, which modifies template on run-time, it was only used internally by etemplate 2011-08-21 09:14:58 +00:00
Ralf Becker
e92087df31 - new validator for selectboxes (menupopup)
- also used currently to supply options for predefined selectboxes (eg. select-cat), need to discuss if we want to fetch these per ajax
- new widget method run, which runs a given method on all widgets (and children) supporting it, eg. used now for validate
2011-08-20 10:27:38 +00:00
Ralf Becker
30ed6a8ab7 - added legacy-options parsing and defintions for currently implemented widgets
- added more server-side debuging:
* etemplate_widget_template class can be called via url and displays parsed xml, eg:
  http://localhost/egroupware/etemplate/inc/class.etemplate_widget_template.inc.php?name=infolog.edit
  This is different from directly calling the xet file, as it show what got parsed and how:
  http://localhost/egroupware/infolog/templates/default/edit.xet
* etemplate_new class can be called via url to render an arbitrary template, eg:
  http://localhost/egroupware/etemplate/inc/class.etemplate_new.inc.php?name=timesheet.edit
  Thought not all are already rendered correct, eg. infolog.edit is not:
  http://localhost/egroupware/etemplate/inc/class.etemplate_new.inc.php?name=infolog.edit
2011-08-19 08:22:19 +00:00
Ralf Becker
107b12abcd - template references can contain attributes, in this case we have to clone the template and set them
- optional template namespace is in "content" attribute
- ability to unset validation messages
2011-08-19 06:30:06 +00:00
Ralf Becker
b57b633944 ability to unset validation messages 2011-08-19 06:21:46 +00:00
Ralf Becker
a488b67f99 serverside validation for textbox and button 2011-08-18 21:56:37 +00:00
Ralf Becker
d095250d85 read and parse widgets on serverside 2011-08-18 18:08:40 +00:00
Ralf Becker
d6509ad506 fixed grid in cf widget displays border, if options are set 2011-08-18 09:22:59 +00:00
Ralf Becker
b892149294 fixed grid in cf widget displays border, if options are set 2011-08-18 09:21:03 +00:00
Nathan Gray
03d549bab9 Add validation (basic client & server side) 2011-08-17 21:36:08 +00:00
Ralf Becker
d20c38b3d0 added richtext customfield 2011-08-17 16:34:09 +00:00
Nathan Gray
8f5f334762 Only process HTML inside Word xml documents 2011-08-17 15:47:05 +00:00
Nathan Gray
16bafa78b8 Implement export restriction exception for given users/groups in apps 2011-08-17 15:38:56 +00:00
Nathan Gray
2a815be3d3 Process xml as if it were a MSOffice document 2011-08-17 14:47:17 +00:00
Ralf Becker
7cbff78854 config for export limit excepted users/groups, need backend work from nathan 2011-08-17 09:36:51 +00:00
Nathan Gray
ea8d70136e Implement labelplaceholder for OO.o files 2011-08-16 23:07:44 +00:00