Commit Graph

1591 Commits

Author SHA1 Message Date
Ralf Becker
4cce629666 * fixed handling of + char in VFS filenames (using egw_vfs::decodePath() instead of urldecode()) 2011-03-03 15:41:01 +00:00
Nathan Gray
57fa8b5504 Automagically detect & set type for numbers when merging into a OO.o calc spreadsheet 2011-03-03 00:15:27 +00:00
Nathan Gray
e81802d0cd Promote number_format() to base class so it's available for all extending classes 2011-02-28 20:31:56 +00:00
Nathan Gray
830fcad2f6 Fix commands for table repeats 2011-02-28 19:16:58 +00:00
Nathan Gray
20d6378bd2 Change importexport exporting to be able to pass a definition 2011-02-28 18:10:18 +00:00
Nathan Gray
2e5144b5a2 Add permission check before using importexport for export 2011-02-28 17:35:18 +00:00
Nathan Gray
36ac740a5c * Nextmatch widget can use Import/Export definitions for exporting, if the app has the preference nextmatch-export-definition set to the name of the definition to use. 2011-02-28 17:32:32 +00:00
Nathan Gray
d6aa239e62 Make merge respect export limit 2011-02-24 00:08:12 +00:00
Nathan Gray
e100e423d8 Move special flags IF, NELF, etc to function so they can be used in a table 2011-02-23 21:01:37 +00:00
Stefan Becker
a8cc0801ec add German translation and fixed some typos 2011-02-23 13:13:01 +00:00
Nathan Gray
96dd9d46c2 Include main category even if no sub-cats are selected 2011-02-22 20:14:35 +00:00
Nathan Gray
03d3b5c36b Add common function to get list of supported extensions 2011-02-22 19:46:09 +00:00
Andreas Stöckel
6d2179889c Fixed stylite bug #1291, mime type icons were to large. Fix does not work with IE <=6 2011-02-21 18:59:58 +00:00
Andreas Stöckel
43e4fa2c3c Updated the thumbnail generator to use the egw_cache_file class to generate a temp filename 2011-02-21 18:37:45 +00:00
Nathan Gray
99df873aa3 - Add setting to select-cat to display missing IDs as Missing: #
- Use select-cat setting in historylog widget to display something for deleted categories
2011-02-18 18:27:01 +00:00
Nathan Gray
dfa96ca0a6 List each sub-cat separately 2011-02-18 15:04:40 +00:00
Nathan Gray
d846176c9f Include path for sub-categories 2011-02-17 16:40:57 +00:00
Nathan Gray
1ef649b869 Fix for display of multi-row read-only select-account widget 2011-02-16 18:22:42 +00:00
Nathan Gray
3980ba3692 Correct category formatting 2011-02-16 17:56:00 +00:00
Nathan Gray
0c97c3bd10 Add extra placeholder 'categories' for expanded categories with path 2011-02-16 17:47:31 +00:00
Christian Binder
c8d92bc7ca some type checks to avoid php warnings 2011-02-09 20:11:17 +00:00
Christian Binder
31a8c3b51c implemented table plugin for eroles - added bo class for eroles and moved corresponding methods from so to bo 2011-02-07 11:08:08 +00:00
Nathan Gray
23645c7b9f Shrink icon to 16x16 pixels to match others 2011-02-04 20:05:23 +00:00
Nathan Gray
aad884a3aa Add a common method get_documents() to fetch a list of documents from a given directory so we don't keep copying it. 2011-02-04 20:04:17 +00:00
Oscar Manuel Gómez Senovilla
28d2b6b072 Update for translations in trunk 2011-01-30 12:53:49 +00:00
Christian Binder
407f7c9440 moved eroles specific code from parent merge class to projectmanager merge class 2011-01-27 17:08:40 +00:00
Nathan Gray
ec4ef57ed0 Add common merge icon for anything using bo_merge 2011-01-26 20:12:41 +00:00
Nathan Gray
939052437d Fix escaping of double quotes 2011-01-24 16:43:15 +00:00
Christian Binder
b6b7e7bd84 moved erole widget from global class to app-specific class 2011-01-22 17:02:31 +00:00
Christian Binder
0670e247e9 changed retrieving of pm_id and pe_id to etemplate_request::read() (thanks Ralf) - added tiny method to check for global eroles - prevent displaying global eroles in etemplate editor 2011-01-19 16:36:13 +00:00
Nathan Gray
5301af7a82 Use custom label as label, if it's not just a number 2011-01-18 15:55:42 +00:00
Klaus Leithoff
85ec9e5a53 fix problem with assumedly broken ZipArchives with OpenOffice Documents used with ZipArchive on SLES11; try opening the archive anyway, even if the onening with CHECKCONS failes. Report that to error_log, and try to proceed before failing fataly 2011-01-13 10:57:20 +00:00
Nathan Gray
91a5f43670 Updated file from Randy Houlahan
- Updates for JS code changes
- Change in file name handling - looks for lower case now
2011-01-10 15:44:32 +00:00
Christian Binder
b80eaab81f initial implementation of merge class and element roles for projectmanager - projectmanager fields are not yet supported but will be implemented later. This feature is sponsored by www.inspectionsunlimited.com. 2011-01-08 16:04:44 +00:00
Nathan Gray
e2d54119dd - Fix infinite loop bug if you use 'OR' in search
- Use case-insensitive LIKE from db capabilities
2011-01-07 21:13:40 +00:00
Christian Binder
52133ffd54 fixed typo (did not validate but should be a typo) 2011-01-07 13:57:58 +00:00
Andreas Stöckel
4b93e5c0c5 Accidently set the thumbnail size to 16 in every vfs-mime widget. Added new option to the vfs-mime widget which allows you to set the thumbnail size. 2010-12-31 14:31:50 +00:00
Andreas Stöckel
2a71bab988 Fixed parts of EGW Stylite Bug #8260. Very wide images do not longer get displayed very broadly in the filemanager select widget.
To achive this, some changes to the CSS were made and the ability to return thumbnails with a given size was added to etemplate/thumbnail.php. Miniature images with dimensions smaller than one pixel are now no longer created.
In this progress I discovered a minor security issue which might cause multiple egroupware instances to mix up their thumbnails in rare occasions. This was fixed by now hashing the image path together with the webserver url and the thumbnail size. In this progress, the thumbnail generation code has been restructured, making it faster and much easier to understand.
2010-12-30 19:54:43 +00:00
Nathan Gray
726798c8cb Fix order, escape quotes first or the field delimiters get doubled 2010-12-17 16:59:02 +00:00
Nathan Gray
855c601f98 Escape double quotes 2010-12-17 16:45:57 +00:00
Klaus Leithoff
e3ee0b34fd * CSV Export: Replace CRLF with LF so excel does not break lines early (myStylite#974) 2010-12-16 15:07:19 +00:00
Klaus Leithoff
cc1310b6de Addressbook / Merge functions: remove error logging 2010-12-15 12:06:53 +00:00
Klaus Leithoff
f42b5cdbe9 * Addressbook / Merge functions: allow pagerepeat for merge in text/plain mimetypes/documents 2010-12-15 10:50:29 +00:00
Ralf Becker
92ebc10cef give current value higher priority then $value[default_sel] when determining $app 2010-11-12 08:17:30 +00:00
Ralf Becker
43d2411ba1 fixing some warnings 2010-11-10 08:26:41 +00:00
Hans-Jürgen Tappe
33a0f786bd - Add hint on how to revert changes / reset an eTemplate change as discussed on
the developer's list.
- Fix typos
- Add a reference from the reference.html to the now existing etemplate
  documentation.
2010-11-07 13:25:00 +00:00
Ralf Becker
5cd2b962ea split merge taking a path as argument in second method merge_string taking the document as string 2010-10-27 09:34:42 +00:00
Ralf Becker
5efac64eff fixed wrong parameter type warning 2010-10-26 13:29:09 +00:00
Ralf Becker
af7a24eb9a framework->navbar() now automatically calls framework->header(), this way navbar or sidebox can include JS or CSS, because header is called after 2010-10-18 10:46:47 +00:00
Ralf Becker
0dd58b36cf quiten warning if $cell[size] is an array 2010-10-12 07:48:35 +00:00
Klaus Leithoff
e4ef70dd02 dont try to translate text from textfields when in listview 2010-10-04 11:50:37 +00:00
Nathan Gray
9f6c1c1994 Add a parameter to allow an extra 'Custom' country option when using 2 letter codes 2010-09-28 20:53:00 +00:00
Nathan Gray
272d30c3a7 Add parameter 'show_deleted' to include 'deleted' links waiting for purge 2010-09-27 16:29:50 +00:00
Ralf Becker
d29205529b removed use of PHP 5.3 deprecated eregi 2010-09-17 19:32:11 +00:00
Ralf Becker
201f0d33e3 also quote quotes in variables surounded by curly brackets, eg. '{[nm][path]}' 2010-09-14 16:33:33 +00:00
Ralf Becker
50c43deec9 updating verson to 1.8 2010-09-05 15:24:34 +00:00
Ralf Becker
3c58ef8473 fixed historylog widget shows "unknow type" for selectboxes with explicit options containing key 0 2010-08-27 16:11:02 +00:00
Oscar Manuel Gómez Senovilla
65f1702caa Tracker #2657 2010-08-25 16:23:17 +00:00
Oscar Manuel Gómez Senovilla
2f0df89b4f Tracker #2703 2010-08-25 16:14:29 +00:00
Ralf Becker
ea97fc438f using utf-8 encoding for html merge-print 2010-08-23 12:03:03 +00:00
Ralf Becker
3835e9acbc reverted r31570/7: using label as blur text, as label is already used (as label), using blur text field now, no idea why I didnt used it in the first place ;-) 2010-08-16 07:28:58 +00:00
Ralf Becker
f156301f25 fixed wrongly display blur text for value "0" 2010-08-12 18:03:03 +00:00
Ralf Becker
5a03cff75d set span & class from original cell for single fields 2010-08-05 15:36:23 +00:00
Ralf Becker
bb468774f7 quitened warning 2010-08-01 12:47:26 +00:00
Ralf Becker
a1c9f68a1e remove not used advanced-search-widget 2010-08-01 10:02:04 +00:00
Hans-Jürgen Tappe
c6a4c40934 Fix HTML code in etemplate documentation:
- Close 'li' tags
- Close 'lt' tags by 'gt' tags
- Convert ampersands to 'amp' tags.
2010-07-31 07:03:15 +00:00
Ralf Becker
3dc949d08e display readonly link-entry widgets as links to the linked entry 2010-07-30 15:27:51 +00:00
Ralf Becker
4fc00c03ae forgot to translate the label 2010-07-30 14:02:19 +00:00
Ralf Becker
55463e493b displaying label of link-entry widget as blur text 2010-07-30 08:36:41 +00:00
Klaus Leithoff
72610fb3ad allow minus and underscore in validation as part of the LocalPart of the eMailaddress; even directly in front of the @ sign 2010-07-23 12:10:52 +00:00
Ralf Becker
b9bfd285a5 fixed not working checkboxes after r31472 2010-07-22 13:09:33 +00:00
Ralf Becker
f597385a9c fixed caching of etemplates:
- never read timestamp of last import from cache
- check timestamps only once per session and app
2010-07-21 13:50:29 +00:00
Ralf Becker
4da973400c allow and validate needed (required) attribute for file uploads, checkboxes and radio buttons 2010-07-21 08:21:42 +00:00
Ralf Becker
4ad95007b5 using call_user_func instead of depricated call_user_method, which seems at least under PHP5.3 not to allow static calls 2010-07-20 14:34:20 +00:00
Ralf Becker
b5f35a4b75 validating (string) === '' (instead === ''), as on ajax commit no yet set inputs are returned as null instead of '' 2010-07-13 20:47:25 +00:00
Nathan Gray
48ba641cb3 Avoid conflicts with other objects that have ->db defined by using the global db 2010-07-13 14:22:14 +00:00
Klaus Leithoff
b78a9865cc explicitly process fields to order by, as cutomfields may have names with spaces, so we examine each order by criteria, as our preg did not do the job properly 2010-07-08 11:37:56 +00:00
Klaus Leithoff
82e8bdbd9e allow for like wildcard.val.wildcard in filtersearch for customfields (needed for advanced search, as criteria are now remapped to be filters for customfields) 2010-07-07 14:11:33 +00:00
Klaus Leithoff
07930ecd58 fix advanced search for customfields (multiple field criteria, combined by AND) in addressbook 2010-07-07 11:38:52 +00:00
Ralf Becker
c1fa529fc8 new optional parameter "extra_args" for link widget, to add further get parameters to the link 2010-07-07 10:10:23 +00:00
Klaus Leithoff
c8abf9eacc fix a problem with content validation; was returned as array 2010-06-28 14:09:59 +00:00
Ralf Becker
30ce2262dd if search pattern alread contains a wildcard, do NOT add further ones automatic (eg. in extended search in addressbook) 2010-06-25 07:11:39 +00:00
Nathan Gray
97cdb61ea5 Fix for searching with custom fields in 2010-06-18 11:15:35 +00:00
Jörg Lehrke
a4b36620dd Fix excess of maximum column length issue 2010-06-18 09:33:57 +00:00
Ralf Becker
88ebb437c2 methods to set or get all body tags or javascript files, replacing direct access to variables of old javascript class 2010-06-15 16:08:10 +00:00
Ralf Becker
8c913bb95a correct validation errors, if no file selected or file could not be attached 2010-06-14 20:17:55 +00:00
Nathan Gray
e37b4807c2 Fix searching for a given custom field value using criteria parameter 2010-06-14 10:18:23 +00:00
Ralf Becker
401d9dcf21 removed now global available array_stripslashes 2010-06-11 10:39:59 +00:00
Ralf Becker
58ce706d2c Use json_encode() instead of removed convert_phparray_jsarray() 2010-06-10 14:41:05 +00:00
Ralf Becker
8b49db5a57 new framework method to return javascript to call manual 2010-06-07 22:06:35 +00:00
Ralf Becker
f80f79a98a removing unnecessary diagnostics 2010-05-30 11:19:50 +00:00
Klaus Leithoff
3d99f3e9b3 if is not a string but 0, the comparsion == ->autoinc_id is true, which leads to an SQL Query error, if an extra column is used in sorting/filtering together with the lettersearch 2010-05-28 11:08:36 +00:00
Ralf Becker
579cf86bbc fix for bug #2624: SQL error - CONCAT not supported by postgres 2010-05-26 15:44:09 +00:00
Nathan Gray
2760915be4 Always understand english search operators 2010-05-25 19:04:40 +00:00
Ralf Becker
b43a3843d2 fixing bug #2609: Saving attached files to the filemanager doesn't work 2010-05-25 13:17:46 +00:00
Stefan Becker
50af95793b add German translations 2010-05-21 10:35:43 +00:00
Ralf Becker
04601a486e "understand run_lang for settings, to NOT return already translated phrases with replaced placeholders" 2010-05-21 07:21:30 +00:00
Ralf Becker
6799864392 fixed wrong language in notifications 2010-05-20 19:32:52 +00:00
Ralf Becker
a3a3fa1671 "new feature to explicitly set an id for widgets: prefix name with a hash --> id is the name without the hash, and NOT the form_name as before
Should not create any backward compatibilty issues - fingers crossed ;-)"
2010-05-20 09:06:53 +00:00
Klaus Leithoff
0070aaec57 translation provided by mkk 2010-05-20 08:07:01 +00:00
Klaus Leithoff
885b18d8e6 translation provided by mkk 2010-05-20 08:07:00 +00:00
Ralf Becker
3a1412d8fe "fixed warning: explode expects 2. parameter to be string, array given" 2010-05-15 13:44:42 +00:00
Ralf Becker
71a7c20326 "fix for bug #2588 and #2592: links/popups in resources are not working
--> seems to be an aftermath of the new quoting
Thanks to Yudhi Kusnanto for a patch"
2010-05-12 19:17:01 +00:00
Ralf Becker
55f5a80a5e refining regular expressesion for PHP variables (replies[$row][reply_message] returned more then $row) and removed quoting from submitit call in button, as quotes in vars get quoted double 2010-05-12 07:50:13 +00:00
Ralf Becker
dbf8a15b55 "disable permanent error_log" 2010-05-11 18:12:55 +00:00
Ralf Becker
fd56fb27c3 Correct quoting of special chars in vfs:
- # has special meaning in url and is intern always urlencoded as %23
- ? has special meaning in url and is intern always urlencoded as %3F
- % need to be urlencoded as %25, as it's the escape char in urlencoding
  (it has not been stored urlencoded in sqlfs so far, there's some
   workaround in filemanger_ui to deal with the old unencoded % chars)
- space and + are NOT urlencoded in sqlfs in the DB, they get urlencoded
  only for download urls
- " get urlencoded for download urls only as it messes up the html
  markup
--> Filenames get urldecoded, before displayed to user
- done manually eg. in messages
- done automatically in new vfs-name widget (both ways)
2010-05-11 15:02:30 +00:00
Ralf Becker
2d0c33bb90 Some more quoting (and unquoting) of quotes in variable used eg. as
button names: eg. "delete[$row_cont[path]]" with path containing " or '
- they need to get quoted for correct html markup
- etemplate_request::set_to_process() need to use unquoted version, as
  this is how it get returned in $_POST
2010-05-11 14:52:45 +00:00
Ralf Becker
290c23f9c6 Fixed not working [CSS Styles] button in editor, no idea why and when it
stoped working ...
2010-05-11 12:17:01 +00:00
Ralf Becker
db23b1d746 - correctly quote single and double quotes in html element id's
- correctly quote quotes in parameters of javascript functions used
  eg. as eventhandlers, eg. onchange="do_something('$cont[name]');"
  --> if $cont[name] is an array: do_something([ 'val1', 'val2' ]) is used
- correctly quote & in get parameters of url's
2010-05-09 14:06:35 +00:00
Ralf Becker
4ecc2c0360 "allowing (at least) German umlauts in domain names" 2010-05-06 08:02:32 +00:00
Ralf Becker
5bda513fd7 Mailing files directly from filemanager 2010-05-06 06:53:52 +00:00
Klaus Leithoff
ed040955bb prevent foreach warning, when & is not an array 2010-04-27 10:37:50 +00:00
Nathan Gray
f47cced6ed Fix for Postgres DB error loading eTemplate from Yudhi Kusnanto 2010-04-25 23:47:16 +00:00
Jörg Lehrke
334a8c6fc3 Fix addressbook_bo::find_contact() 2010-04-21 17:41:34 +00:00
Nathan Gray
6c3ba68ca1 If only_keys is true, expand it in so_sql_cf so the table_name can be prepended. Fixes last part of #2543, adding link when importing mail to infolog 2010-04-21 15:40:58 +00:00
Klaus Leithoff
69da1000b2 if only keys is passed to search return only the DISTINCT result-set (was not implemented when only_keys where passed as array) 2010-04-21 12:14:04 +00:00
Klaus Leithoff
7a4f191fb3 fix to provide (return) data even if a shortname is used as column name 2010-04-20 13:58:01 +00:00
Ralf Becker
423dbbc567 "an other fix: if there's already an explicit named column, just use that name" 2010-04-20 08:12:22 +00:00
Ralf Becker
765a1d5c09 "fixed not returned (explicitly given) columns: you need to use $table.'.'.$col.' AS '.$col, without AS column get NOT returned as name is different" 2010-04-20 07:39:23 +00:00
Klaus Leithoff
a9fd21325d fixing a bug, when trying to sanitize possible ambiguous columns 2010-04-16 10:35:09 +00:00
Nathan Gray
2aed9e476f Fix copy/paste error to get address merging working 2010-04-15 14:56:37 +00:00
Klaus Leithoff
00ba3606de translations provided by mkk 2010-04-13 15:03:57 +00:00
Klaus Leithoff
5b3c05a616 translations provided by mkk 2010-04-12 11:21:49 +00:00
Klaus Leithoff
1ec94a70fe set cat_app with value from get_row (, if not set) to ensure the cats of the template/listview in question are to be loaded 2010-04-12 07:23:21 +00:00
Nathan Gray
549626cbf9 Add some extra handling for potentially ambiguous columns in 2010-04-08 22:13:22 +00:00
Nathan Gray
215da11fae Add some extra handling for ambiguous columns 2010-04-08 20:21:40 +00:00
Nathan Gray
79dfab8005 Custom field widget can be limited to (or exclude) certain fields. Put the list of fieldnames to display as the 3rd (4th, etc) option. Using a ! as the first character will negate the list, and exclude the named fields. 2010-04-07 17:00:09 +00:00
Nathan Gray
97727d41ce Fix filtering on a multi-select custom field. Any entry with the filter value will be included. 2010-04-07 16:06:01 +00:00
Ralf Becker
f2e9a38ff4 "fixed ambiguous column sql-error by adding table-name to id over which we join" 2010-04-04 09:08:25 +00:00
Ralf Becker
a45ea03b19 "fixed ambiguous column sql-error by adding table-name to id over which we join" 2010-04-04 08:59:37 +00:00
Nathan Gray
5e23cfb764 Working on searching...
- Check default column names to avoid DB errors
- Prefix default column names with table name to avoid ambiguity
- Handle single words in quotes
2010-04-01 20:48:16 +00:00
Nathan Gray
93cf9c2e84 Don't need to pass ->extra_value, search2criteria() will take care of it 2010-04-01 20:20:08 +00:00
Nathan Gray
4b134dfc9e Extra column check needs to be escaped 2010-04-01 20:19:28 +00:00
Nathan Gray
fa6c1d4a9c Need to set numeric types to check 2010-04-01 20:07:01 +00:00
Nathan Gray
d22773d04d Add extra search functionality to custom fields. 2010-04-01 19:59:50 +00:00
Nathan Gray
3d8fca332b More sensible handling of numeric columns:
- If app doesn't specify columns to search, all columns except numerics with '_id', 'modified', 'modifier', 'status', 'cat_id', 'owner' will be considered
- Numeric columns will be searched only if the search string contains a numeric token.  'maintenance 50' is ok to search for, but for numeric columns only 50 will be searched.  
- Numeric columns are searched using equality, unless user puts in a wildcard.  Searching for 50 will only match 50, not 150 or 1950/04/10, but *50 will match 150.
- Text columns are searched using LIKE, including numeric search terms, as before.
2010-04-01 17:03:51 +00:00
Nathan Gray
cc0f8f3c28 An attempt to add more functionality to searching
- All words are trimmed
- Double quotes require the exact phrase ("Nathan Gray" will not match Nathan Brown or Gray Power)
- Modifiers + and - before a word will require or exclude the word (+test -fail), otherwise word is ORed
- User language modifiers AND, OR and NOT (uppercase) will be parsed.
- Combinations: tracker entry -testing -"fatal error"
Note that "entry" will not match "entries", and the results are not sorted by match strength.

All applications that use so_sql for searching should gain these benefits.
2010-03-31 21:29:11 +00:00
Ralf Becker
a858db5eb8 "for iPhone and Android: replace evtl. configured telephony integration link with tel: protocoll" 2010-03-28 13:33:40 +00:00
Ralf Becker
c60a1ad94d "for iPhone and Android: replace evtl. configured telephony integration link with tel: protocoll" 2010-03-28 13:27:30 +00:00
Ralf Becker
99a9132cd5 "fixed not working activation of tab with different prefix" 2010-03-23 19:34:40 +00:00
Ralf Becker
71960a6d02 Fixed some more php53 Warnings after latest fix_depricated.php
improvment.
2010-03-21 09:37:52 +00:00
Ralf Becker
4cc9586e39 xajax uses xml to transport the label, therefore we have to replace not only CR, LF (not allowed unencoded in Javascript strings) but also all utf-8 C0 and C1 plus CR and LF 2010-03-19 13:05:20 +00:00
Ralf Becker
6c7e9b0062 fixed regular expression to NOT "eat" 8 and , from merge print replacements 2010-03-16 13:38:20 +00:00
Klaus Leithoff
d9c39caf7e removing possible CR/LF from content for ajax search result javascript, as it breaks the options 2010-03-15 17:17:33 +00:00
Ralf Becker
bb580029c1 "fixed handling of linebreaks from text and rich text fields for xml based formats (Open Office and MS Office)" 2010-03-08 21:56:05 +00:00
Ralf Becker
3f8da06a9e "replace all control chars (C0+C1) but CR, LF and TAB (eg. vertical tabulators) with space as they are not allowed in xml" 2010-03-08 11:34:22 +00:00
Ralf Becker
83b60b81fc Fixed r29141: "Add a checkbox to allow user to prevent notification of
changes to a ticket", to NOT prevent history logging, if checked
2010-03-07 14:45:12 +00:00
Ralf Becker
3eb38935bb caching etemplates using egw_cache class on instance level (instead off old not egw_cached based code on request level), to ease the load on the db 2010-03-05 08:18:46 +00:00
Ralf Becker
0f2eceefb8 Preseed link title-cache for link-list and link-string widget
(Performance improvment, as all titles of an application get queried in
a single query and NOT once for every link)
2010-03-04 17:07:10 +00:00
Nathan Gray
4424d49c30 Handle case when ID is missing, happens the time after clearing the cf search 2010-02-22 22:46:17 +00:00