Gossamer Forum
Home : Gossamer Threads Inc. : Announcements :

Gossamer Links 3.3.0 Released!

Quote Reply
Gossamer Links 3.3.0 Released!

It's been a while since our last release, but we're pleased to announce the release of Gossamer Links 3.3.0! No huge functionality changes, but we've upgraded FileMan to version 3.0 and have fixed a ton of bugs, so it should be a fairly safe upgrade.

Items with a star in front of them are changes that have been available from Gossamer Update.

New Features:
  • Upgraded FileMan to version 3.0
  • Added new syntax to category and detailed url formats. This additional syntax allows you to use a format such as: '%Category_URL|Full_Name%', where Category_URL is a new column in the Category table. If Category_URL has a non-zero length value, then it will be used, otherwise Full_Name will be used. You can have an unlimited list of columns to try (the first column to return a value will be used).
  • Added option (build_home) to change the home page filename. Note that to use this option, you will have to update your templates
  • Added option to not put paid links at the top of category listings above free links
  • Added a new option (build_new_date_span_pages) to split apart the what's new listings into separate pages based on date. It was previously tied in with the build_span_pages option so you couldn't span pages, but have all the what's new listings not split up into days.
  • Added plugin hooks to Links::init(), Links::init_user() and Links::init_admin(). Note that the Links::init hook is essentially a post hook as it runs after the initialisation code has run.
  • Added an option (multipleMax) to treecats.js for setting the maximum number of categories that can be selected. Note that the backend code still doesn't do a check for this.
  • Added more currencies that PayPal supports
  • Added dynamic 404 status to detailed pages as well
  • Links::send_email now reads extra smtp auth options from the config file (see the function for variable names). The admin interface does not expose these options as this is only needed in rare cases.
  • Added a default CSS class that can be used with <ul>'s to undo the styling that we've added. Use <ul class="default">.
  • Added a %STASH global variable and moved all the %LOADED variables into it (so if you're using %LOADED, change your code to use %STASH instead).
  • Added a building_static variable to the templates to specify whether or not we're building the static site or generating dynamic content.
  • Added the GT::JSON module into the package. Not used by Gossamer Links by default, but a useful module to have.
  • Added edit/delete links next to the ID in the database editor search results.
  • * Moved some of the verify link options from inside the code into the UI. You can now easily change the number of maximum children spawned and the number of links each child processes.
Bug Fixes:
  • Fixed problems with file column checks when modification validation is enabled. Previously, if a file column was a required field, you could not modify the record without re-uploading the file.
  • Added a build_format_compat option which controls how _'s are treated with the Full_Name variable in build_category_format and build_detail_format. This allows you to fix the issue where Full_Name doesn't generate the same url for categories and detailed pages.
  • When modifying a link, only update the columns that were actually modified. When change validation is required this fixes the problem of users making a modification request, then making a payment and then on admin validation, the old ExpiryDate would be used.
  • Fixed problem where a user submits a change request, then makes a payment and the added time from the payment is lost when the admin validates the change request
  • Fixed title_loop on the detailed page when the link has a / in it
  • Build changed will now rebuild links and categories affected by deleted reviews
  • Preserve query string arguments such as the template set with the treecats category browser
  • Added additional security checks to payment code
  • Don't allow '*' to be used as the username to list all reviews
  • Don't attempt to create backups for tables that don't exist (ie. incorrect def files)
  • Changed the way the glinks' html subclasses use the 'code' option so that plugins can override the way the html is generated
  • You can now change the case of a category name without renaming it to something else first
  • When validating a link or review, don't check for a valid e-mail address unless we're actually sending an e-mail to them
  • Fixed problem with treecats category browser not working on domains that aren't exactly the same as your static url (eg. www.example.com vs example.com)
  • Fixed a compatibility issue with Opera and the category browser where clicking on categories does not load
  • Fixed bug where passing in an invalid category ID to page.cgi would result in a blank page
  • Allow a global to have an empty or 0 value
  • Fixed handling of unchecked checkboxes in browser.cgi
  • Fixed bug in browser.cgi where searching doesn't search the sub-categories of the categories that the user has access to
  • Fixed bug in browser.cgi where attempting to modify a link in multiple categories results in an error
  • With browser.cgi, pass the same variables to the rejection e-mails as we do on the admin side
  • When validating a link in browser.cgi, it updates the Mod_Date (and Add_Date if link_validate_date is enabled) like it does on the admin side link validation.
  • Added the detailed_url variable to the e-mail templates
  • The original (what's in the database) Add_Date/Mod_Date variables on the detailed page are saved as Add_Date_orig/Mod_Date_orig so they can be used for date transformations, etc
  • Staggered builds wasn't updating new/changed links
  • Added in a 30 second timeout for link checking requests
  • Fixed an SQL compatibility issue with Microsoft SQL Server - it doesn't like GROUP BY's that don't select columns that are in the GROUP BY
  • Fixed a bug in valid username checking. It was previously only checking the first character of the username.
  • For admin e-mails, load the globals.txt from the admin directory if it exists
  • Added a new status for urls that use the default 'http://' url instead of grouping it with the Bad URL format urls
  • Fixed several bugs in MySQLMan: allow 0 as as a default for column definitions; the current column properties weren't being set as the default when modifying a column; timestamp columns were being reset when updating records; fixed form generation for enums and sets
  • A few GT::SQL fixes and cleanup - fixed not null checks with strings on insert/update; fixed problems with multiple not null errors; empty strings will get inserted as NULL if allowed on add()/modify()
  • * Fix category list when db_gen_category_list is set to 'No'
  • * build_more option wasn't working properly with static pages
  • * build_index_include option wasn't working properly with paging
  • * Fixed error with ModifyDate while adding reviews
  • * Fixed problems with bookmark management when links were in multiple folders
  • * Fixed problem where a bookmark couldn't be moved on the edit bookmark page
  • * The category browser wasn't showing files when validating changes
  • * Fixed a bug where if you add a custom payment term to a category, then change the category to use the global Payment_Mode, then glinks will incorrectly still attempt to use the custom payment term.
  • * Fixed a problem where if you select multiple categories to send a mass mail to, it only goes to users in one of the selected categories
  • * Category counts are incorrect after changing a link's isValidated status from Yes to No
  • * Fixed an XSS vulnerability with certain error messages (eg. invalid category in dynamic mode). Note to plugin developers: If you pass html to Links::language, you need to pass this in as a scalar reference if you don't want your html escaped.
  • * In some situations payment discounts aren't applied when they should be
  • * If an invalid category ID is passed to page.cgi, it returns a blank page instead of a proper error


Last edited by:

brewt: Jun 3, 2009, 7:48 PM