Dismiss
Version 0.2.2 Released
New in this version (full release notes):
- Import and Export your Texts via CSV.
- List sorting and navigation options have been improved and expanded.
- Tag output in Recent Activity feeds is now aggregated.
- URLs can now be added to Author records.
- Various bug fixes, interface improvements, and code enhancements.
If you have any feedback or bug reports, please don't hesitate to get in touch!
Release Notes
Versions
- Version 0.2.3 (October 16th, 2008)
- Version 0.2.2 (August 11th, 2008)
- Version 0.2.1 (July 21st, 2008)
- Version 0.2 (June 20th, 2008)
- Version 0.1.9 (May 30th, 2008)
- Version 0.1.8 (April 30th, 2008)
- Version 0.1.7 (April 15th, 2008)
- Version 0.1.6 (April 4th, 2008)
- Version 0.1.5 (March 22nd, 2008)
- Version 0.1.4 (Feb. 26th, 2008)
- Version 0.1.3 (Feb. 13th, 2008)
- Version 0.1.2 (Feb. 3rd, 2008)
- Version 0.1.1 (Jan. 31st, 2008)
Version 0.2.3
Released October 17th, 2008 (maintenance release)
Views
- Updated Welcome page to simplify sign up instructions, and add a Recently Added Texts carousel element.
- Updated Terms of Service to reflect new user deletion methods.
- Renamed Search 'logs' to 'history' throughout application.
- Corrected sorting links in Search history to persist the value of 'reader_id' and 'all' attributes.
- Search history now correctly sorts by time within day when ordered by date (most recent first).
- Simplified Tag 'show' view to only show those record types that are tagged.
- Fixed label on 'Recent Activity' link in Texts list.
- Corrected active sort field display on Reader listings.
- Phantom readers are now hidden in Reader listings (see ticket:155).
- Added reminder and link to Add Group form that Digital Texts Groups can also be associated with existing Facebook Groups.
- Added 'Full Texts Only' option to Text listings.
Controllers
- Added welcome method to Application controller, which populates the recent_app_documents array for the carousel.
- Corrected bug in calendar calculation of statistics method which was leading to incorrect date labels for certain date ranges.
- Updated import method of Documents controller to limit imports to 50 items at a time (see ticket:153).
- Added register_*model*_template_bundle methods to Document, Collection, and Group models. This registers the template bundles defined in each model's template_format method and retrieves a template bundle ID from Facebook.
- Updated send_fb_notification method of the Application controller to conform to new Feed API.
- Updated all calls to the send_fb_notification method of the Application controller to submit a template_data Hash and a template_bundle_id.
Models
- Added template_bundle_id, template_format and template_data methods to the Document, Collection, and Group models. The template_bundle_id method simply returns the assigned Facebook Template Bundle ID for that model (switching for environment). The template_format method defines the templates needed for notification types for that model, and the template_data method builds a Hash of tokens to populate those templates when submitted to the send_fb_notification method of the Application controller.
Images
- Modified 'table_th_bg.png' and 'table_th_bg_sort.png' to span the height of taller table headers.
Gems & Plugins
- Updated rFacebook gem to v.0.9.8. and modified 'lib/facebook_session.rb' to call api.new.facebook.com.
- Installed the JSON gem (v.1.1.2) to encode calls to new Feed API.
Version 0.2.2
Released August 11th, 2008
Views
- Fixed javascript bug in quick add Collection form that would reset the Collection title to the default text after selection.
- Added "Add New Record" buttons to successful creation notifications (for Authors, Collections, Groups and Texts) to facilitate a multiple input workflow. These are generated by a call to the new 'general/_add_success_message.rhtml' partial.
- Replaced ugly flash message gradient backgrounds with solid colours.
- Added and redesigned table header links to sort most lists by most recently updated and most recently added.
- Added updated_at and created_at information to most list view items.
- Relabeled 'Invite' menu item in header to 'Invite Friends.'
- Added wording around actions that generate Facebook notifications to make this activity explicit.
- Reworked Invite form: moved limit notice, added Cancel option, added Friend by Letter anchors, added Reset button to checkbox list, and added pre-validation JavaScript function to check for number of invites before submission.
- Improved Suggest form with jump to letter links in Friends list.
- Tweaked '_new_form.rhtml' and '_edit_form.rhtml' Comment partials to improve AJAX interaction feedback.
- Redesigned list options to allow paginated/non-paginated and everyone/reader/mine listings.
- Added 'Add Text' quick link icon to '_top_bar.rhtml' partial, for easy access.
- Added 'import.rhtml', 'import_results.rhtml' and 'import_confirmation.rhtml' views and the '_import_item.rhtml' partial for the Import process.
- Added links to new Import feature on the Home screen (dashboard links) and the Texts listing.
- Modified '_new_author.rhtml' and '_new_collection.rhtml' partials to show a loading spinner on form submit.
- Modified '_new_collection.rhtml' and '_collection_checkbox.rhtml' partials to accept a form name local variable. This allows the Collection association partials to be called from any form, and have the generated checkbox names match the params hash of the form.
- Added 'export.rhtml' and 'export_confirmation.rhtml' views for Export feature.
- Added Export buttons to Author, Collection, Group, and Reader 'show' views.
- Tags are now grouped by record/reader in the Recent Activity feeds (in Home and Recent Activity views of Main controller).
- Added Version Release announcement to 'layouts/application.rhtml', which is displayed when a new version is released, and can be dismissed by the reader (which sets a cookie). Announcement is in the 'general/_announcement.rhtml' partial.
- Added URL field to Author form and URL display in Author 'show' views.
- Tweaked tag cloud design to accent popular tags and minimize one-offs.
Controllers
- Modified flash notices in Author, Collection, Group and Document create methods to call the 'general/_add_success_message.rhtml' partial.
- Added 'updated_at' and 'created_at' as sort parameters in Author, Collection, Group and Document list methods.
- Added code to collect first letters of Friends first names in invite method of Main controller. This is used to provide letter anchors in the Invite form.
- Updated create method of Comments controller to output a more specific notification message, and to recognize comments on Groups.
- Tweaked create and update methods of Comments controller to improve AJAX interaction feedback.
- Moved calls to refresh_profile method in Comment controller create and destroy methods to before the page update is rendered to avoid DoubleRenderErrors.
- Added import_results and import_confirmation methods to Document controller, which are responsible for retrieving texts from Amazon by ISBN lookup and importing those texts to the database, respectively.
- Added export and export_confirmation methods to Document controller.
- Rewrote destroy method of Readers controller to remove all a reader's associations and neutralize their 'created_by' fields. This method is now called when a reader removes DT2 from their Facebook account.
- Modified parse_isbn method in Application controller to strip all non-digit characters (except x and X) from ISBNs using a regular expression.
- Added some validation into the show method of the Reader controller to check for a valid Facebook profile before attempting to show a reader. An error message is displayed if the requested user is no longer a member of Digital Texts.
- Modified code to group Tag entries by record/reader in the home and recent methods of the Main controller, in order to prevent Tag activity from swamping the Recent Activity lists.
- Modified logs method of Search controller to use up to date list sorting and display parameters.
Models
- Set the association between Searches and Readers to :dependent => :destroy to clean up Searches made by a reader if they uninstall the app.
- Modified code to group Tag entries by record in the recent_items method or the Reader model.
Database
- Added 'url' field to Author table.
Routes
- Added list by reader routes (ie. map.connect 'documents/list/reader/:reader_id', :controller => "documents", :action => "list").
Plugins & Gems
- Installed the ar_extensions gem, which provides import and CSV features, and extends the ActiveRecord find methods.
- Installed the FasterCSV gem, which is a faster, improved replacement for Ruby's standard CSV library.
- Installed the Exception Notifier plugin, which will mail information about exceptions generated by the application to errors@dtext2.org.
JavaScript
- Added countFriends() function to application.js, which counts the number of friends selected on the invite form before submitting in order to provide pre-validation (eliminating a page reload).
- Added countTexts() function to application.js, which counts the number of texts selected on the import confirmation form before submitting in order to provide pre-validation (eliminating a page reload).
- Added missing variable declaration in checkCollections() function. This is in response to a bug in the Add Text form submit code which was causing submission failure for some users.
- Added checkAnnouncement() function, which checks the status of the announcement cookie, and shows or removes the Version Release announcement div accordingly.
- Added 'cookies.js' to javascripts folder, which includes cookie management functions from http://www.quirksmode.org/js/cookies.html.
Images
- Removed 'notice_bg.png' and 'error_bg.png' images (replaced by solid backgrounds).
- Added 'csv.png', 'announcement.png', 'new.png', 'accept_mini.png', 'error_mini.png', 'import.png', 'export.png' and 'add_text.png' icons.
Version 0.2.1
Released July 21st, 2008
Views
- Applied list-sorting interface updates from v.0.2 to Search logs.
- Corrected Show views to allow Readers to remove Texts, Collections and Groups from their accounts. Previously, only the creator of a record was shown the option to delete it.
- Added title attributes to interface buttons to clarify their purpose.
- Reordered action buttons on record views to more clearly group them by similar actions.
- Fixed wording around Facebook Groups in the My Groups section of the Home screen to clarify use.
- Made list views of "My Texts/Collections/Groups" more consistent, and added in Remove options, where applicable.
- You can now edit the values for Group image URLs. This allows the use of remotely hosted images for groups not associated with Facebook.
- Various housecleaning improvements to the UI on the Home screen to improve consistency.
- Corrected ordering bug in Search log listings.
- Removed '_profile_action.rhtml' partial from 'main' views, as it is no longer called.
- Updated addresses for developers to @dtext2.org email addresses on About page, and added feedback@dtext2.org address to Feedback page.
- Updated Terms of Service to reflect the latest features.
- Added "Join" column and buttons to Group listings, to maintain consistency with Text and Collection lists (which have an Add column).
- Corrected spacing on links to Amazon, Google Books, and Full Text View in the Document 'show' view, if all are present.
- Renamed all "Suggest" elements to "Share", to clarify purpose (and maintain consistency with other web service that use 'Share this...' type links).
- Moved '_required_fields.rhtml' and '_textile_note.rhtml' partials to views/general (were in views/layouts).
- Reworded instructions on Text form.
- Reworded instructions on Tag form.
- Added feature to include a brief message with Shared items.
- Redesigned interface for Associations (Collection-Texts, Group-Texts, Group-Collections), replacing drag-and-drop interface.
- Corrected 'comments/_comment.rhtml' partial to allow the author of a comment to delete it.
- Deleted '_associated_docs', '_associated_item', '_unassociated_docs', and '_unassociated_item' partials from views/general, and 'associate_document.rjs' and 'disassociate_document.rjs' templates from views/main as they are no longer used.
- Tweaked design of Collection collages.
- Reworked Collection, Document and Group forms to display interface for Permissions.
- Added logic in 'show' views to reflect 'add_permissions' feature.
- Comments now indicate if they have been edited, and when.
- Author listings in the header of Text show view are now in "First Last" format.
- Updated suggest partials to support new Suggest to Groups functionality.
- Corrected number on My Tags link of Home navigation to reflect the number of unique tags, rather than the total number.
Controllers
- Changed add_collection and remove_collection methods to no longer add (or remove) a collection's documents to/from a user's account when that collection is added (or removed). My reasoning is that you may want to 'belong' or have access to a collection, without necessarily wanting to add all of that collection's documents. Automatically adding them all, and subsequently removing them all on Collection removal, was having the unwanted side effect of removing documents from a user's account that they may have added separately from adding the collection (no way to distinguish this). I think this functionality is more intuitive.
- add_document, remove_document, add_collection and remove_collection methods now redirect to the record in question after completion, rather than the user's Home screen.
- Removed creator method from Application controller, and rewrote all calls to it to the existing Reader.getInfo method.
- The edit and show methods of the Groups controller now call the update_facebook_images method of the Group model.
- Updated refresh_profile method to generate newly redesigned Facebook Profile boxes (see Facebook notes below).
- Added calls to refresh_profile from newly relevant methods (comments, groups, etc).
- Updated refresh_profile method to comply with new Facebook profile structure.
- Added send_fb_notification method to Application controller, which accepts a notification hash (containing a required title and optional body, image, and image link), and sends it to Facebook.
- Modified Document, Collection, and Group controller methods to submit notifications to the new send_fb_notification method in the Application controller.
- Simplified the send_invite and send_suggest methods of the Main controller.
- Added additional validation to send_invite method. It now checks for more than 10 friends selected in the Invite form and displays a notice about Facebook restrictions.
- Modified new and edit methods of Collections controller: removed @unassociated_documents code and added @documents and @letters code to support new associations interface.
- Modified create and update methods of Collections controller: removed all the code to compile the document_ids array and added code to check for checkbox values.
- Added logic in 'add_document' and 'add_collection' methods to reflect 'add_permissions' feature.
- Removed requirement for a user to have added a Collection or Text in order to edit it (still requires 'edit_permissions' are set to true). Groups must still be joined before they may be edited.
- Added parse_isbn method to Application controller, and removed duplicated code in various Document controller methods, redirecting them to call parse_isbn.
- Rewrote send_suggest method of Main controller to support new Suggest to Groups functionality.
- Modified list method of Tags controller and home method of Main controller to sort tags alphabetically, regardless of case (upper or lower).
Models
- Modified update_amazon_images method of the Document model to only update image fields if they have been changed in Amazon's records. This fixes the bug from the last version of the same value being overwritten and updating the Text on every page view.
- Added an update_facebook_images method to the Group model, which checks if a group has a 'facebook_gid' value, and if so updates the group's image fields to those stored by Facebook. This fixes the broken image links that occur when a Facebook group's image changes.
- Modified collage_images method of Collection controller to select three random images to make up the collage, rather than ordering the images alphabetically by text title. This makes the collection collages more spontaneous and interesting.
- Updated Author, Collection, Document, Reader and Group models to set their has_many associations with Comments and Tags to :dependent => :destroy, to ensure that a record's Comments and Tags are deleted when that record is deleted from the DB.
Helpers
- Removed duplicate creator method from the Application helper (never should have been here in the first place).
- Cleaned up page_title method in the Application helper by using Rails truncate method.
Facebook
- Redesigned and improved Facebook profile boxes, which now include visual elements and more useful information about a user's recently added Texts, Collections, Groups and Comments.
- Updated a variety of Application details on the Digital Texts About Page.
Database
- Added 'add_permissions' columns to Collections and Documents tables.
Images
- Added 'delete_mini.png', 'add_mini.png', 'edit_mini.png', 'permissions.png' and 'reset.png' icons.
- Removed 'add_small.png' icon.
- Modified 'cover_bg.jpg' image.
Miscellaneous
- Added 'actionpack_ext.rb' file to lib, which extends some Text Helper methods (pluralize, truncate) to the module level, so they may be used in Controllers (source).
Version 0.2
Released June 20th, 2008
Views
- Added 'line-height: 1em;' attribute to <sup> tags to prevent incorrect vertical spacing on these elements in some browsers.
- Corrected bug in My Tags output on Home screen which was specifying the current_reader id rather than the tag id to link to.
- Implemented square reader thumbnails across the application.
- Corrected bug in '_amazon_item.rhtml' partial that caused an error for certain Amazon results with a nil publisher field.
- Redesigned step guides used in forms.
- Redesigned My Friends section of Home view.
- Redesigned Comment forms, display, and interaction.
- Expanded list sorting functionality across application.
- Added '_carousel_and_list.rhtml' partial to Groups views to maintain consistency with Collection and Text listings.
- Redesigned list sorting interface to be more lightweight and intuitive.
- Added a '_current_readers.rhtml' partial to the Reader views, called from any record that has Current Readers (Texts, Collections, Groups). This is a display of square profile images, laid out in a mosaic with links to each reader's profile.
- You can now add Collections while creating a new Text, by clicking the Add New Collection button in the collection checkbox section. This functions similarly to the Add New Author feature.
- Added '_new_collection.rhtml' and '_collection_checkbox.rhtml' partials to Document views.
- Added missing Author item information in Recent Activity output.
- Revised layout of anchor links in Reader profiles.
- You can now edit the values for Text image URLs. This allows the use of remotely hosted images for texts not retrieved from Amazon.
- Added 'suggest_form', 'suggest_link', 'suggest_success' and 'suggestFBML' partials to "views/general". These can be called from any suggest-able record's view.
Controllers
- Simplified and corrected @my_tags array in 'home' method of Main controller.
- Corrected @recent_app_documents array in 'home' method of Main controller to select the most recently added documents (previously, the MySQL LIMIT option was selecting the first 20 rather than the 20 most recently updated).
- @my_friends array in 'home' method of Main controller now sorts friends alphabetically by first name (in keeping with Facebook conventions).
- Updated 'creator' method of Application controller to retrieve square Facebook image.
- Refactored 'list' methods to make logic cleaner and allow for sorting by all criteria.
- Added 'save_remote_collection' method to Documents controller.
- The 'edit' and 'show' methods of the Documents controller now call the 'update_amazon_images' method of the Document model.
- Added 'suggest' and 'send_suggest' methods to the Main controller.
- Added form validation to Invite form.
Models
- 'getInfo' method of Reader model now retrieves 'pic_square' rather than 'pic_small' field from Facebook.
- Added an association between Authors and Readers (Author belongs_to :reader, Reader has_many :authors). This was already implicit (with the 'created_by' field in the Authors table), but didn't previously conform to Rails conventions. This cleans up MySQL calls to retrieve a Reader's Authors.
- Removed 'Reader.reader_list' class method from Reader model, as it was only called once (from the 'list' method of the Readers controller), and is no longer necessary due to method refactoring.
- Added an 'update_amazon_images' method to the Document model, which checks if a document has an 'amazon_url' value, and if so updates the document's image fields to those stored by Amazon. This helps to remedy the broken image links that occur when Amazon changes its image locations.
Database
- Changed the name of the 'created_by' column in the Authors table to 'reader_id' to match the new Author>Reader association.
Images
- Added 'bubble_top.png', 'bubble_middle.png', 'bubble_bottom.png', 'generic_person_square.png', 'guide.png', 'generic_group.png' images.
- Added 'redbox' images: 'top.png', 'middle.png' and 'bottom.png'.
- Added 'reader_mini.png', 'collection_mini.png', 'text_mini.png' and 'suggest' icons.
- Removed 'sort_asc.png', 'sort_desc.png', 'sort_num_asc.png', 'sort_num_desc.png' icons.
Plugins
- Added the Redbox plugin, which allows easy integration of modal windows with Rails views.
Miscellaneous
- Added 'bubbles.css' stylesheet, which contains selectors for the new bubble interface elements (used in comments and other reader-oriented data display).
- Added 'redbox.css' stylesheet, which contains selectors for the new Redbox modal windows.
- Added 'redbox.js' javascript.
- Removed 'comments.css' stylesheet, as it is no longer used.
Version 0.1.9
Released May 30th, 2008
Views
- Modified error pages (404 and 500 errors) to link to the Feedback form to report the error.
- Added a note to the Feedback form to request the URL of bugs/errors.
- Added Sparkline graphs (via the Google Charts API) to personal and application stats.
- Modified 'general/_letters.rhtml' partial to correctly check for the correct action (list or cloud).
- Modified 'general/_letters.rhtml' to accept an optional 'title' parameter, which indicates what the letters are related to (title, author, etc).
- Modified column titles in list views to indicate which items may be used to sort a list.
- Added a split Thumbnail/List view of Texts and Collections to Home and Reader Profiles to reduce the screen real-estate taken up by these lists while simultaneously providing more information and a more dynamic user interface.
- Redesigned statistics output on Home and Reader Profiles to reduce space taken up and display timelines as sparklines.
- Broke Home view up into Sections, dynamically navigated with javascript.
- Added "Friend Feed" items to My Friends section in Home, so readers can quickly see what their friends have added or updated.
- Removed Breadcrumbs, as the new navigation makes them redundant.
- Added "Recently Added on Digital Texts" carousel to Home, which displays the 20 most recently added Texts, application-wide.
- Replaced images in Recent Activity feeds with icons to make the lists less bulky.
- Split 'About' and 'Terms of Service' back into separate pages, now that the Nav has enough space to accommodate both items.
- Added 'Statistics' view, which displays some application-wide stats built using the Google Charts API.
- Added 'general/_section_nav.rhtml' partial, which generates links to show/hide a set of sections, as implemented in the Home view.
- Added superscript counts to nav items to quickly give an idea of how many of a given record are available in that section.
- Added photos to About page.
- Added Logs to Search views, which shows recent Searches, sortable by date and number of results.
- Added My Recent Searches to Dashboard.
- Moved '_associated_docs', '_associated_item', '_unassociated_docs', and '_unassociated_item' partials from views/collections to views/general, where they are shared by the Group and Collection document association forms.
- Changed style of Tags in forms to make them more apparent and clearly separated.
- Added 'documents/_carousel_and_list.rhtml' and 'collections/_carousel_and_list.rhtml' partials, called from any view that needs a Text or Collection carousel(s).
- Redesigned reader profiles to match the new Home layout.
- Added 5 most recent searches below Simple Search form.
Controllers
- Added escapes to SQL queries for tags by label. This prevents errors on tags with apostrophes.
- Added 'create_timeline' method to Application controller, which accepts an array of records of any type and a timespan in days and returns a timeline of activity for those records over the span specified. The returned array is then used to construct a graph with the Google Charts API.
- Edited 'authors_names' method in Document controller to remove bibliographic formatting ("Last, First, First Last and First Last"), as this wasn't being used and was interfering with Author output on sorted listings.
- Modified 'list' methods in Document, Author, and Reader controllers to allow sorting by different fields/criteria.
- Added 'statistics' method to Main controller, which crunches the numbers to generate the charts on the statistics view.
- Removed 'associate_document' and 'disassociate_document' methods from Collections controller and translated them to RJS templates with the same names in views/main. These are then shared by the Group and Collection document association forms.
- Added Groups controller, with new, new_from_facebook_group, create, edit, update, join, and leave methods.
Models
- Added 'Search' model.
- Added 'Group' model.
- Added 'recent_items' method to the Reader model, which accepts a number and returns that number of recent items (updated records of any type) for the reader.
- Added 'url' and 'full_text_url' fields as searchable fields to Document model.
Database
- Added 'searches' table with 'id', 'query', 'reader_id', 'created_at', and 'results_count' fields.
- Added 'groups' table with 'id', 'facebook_gid', 'name', 'description', 'notes', 'created_by', 'edit_permissions', 'created_at', 'updated_at', 'pic' and 'pic_small' fields.
- Added 'groups_readers', 'collections_groups', and 'documents_groups' mapping tables.
- Documents table now has 'url' and 'full_text_url' fields, with notes on the form indicating how each should be used.
Images
- Re-designed 'generic_text.png' to match standard dimensions of cover thumbnails returned by Amazon.
- Re-designed 'logo.png' to suit new navigation structure.
- Removed old nav images and added new ones.
- Added 'tags_mini.png', 'comments_mini.png', 'sort_num_asc.png', 'sort_num_desc.png', 'sort_asc.png', 'sort_desc.png', 'leave.png', 'logs.png', 'full_text.png' and 'group.png' icons.
- Removed score images (formerly used in Search results).
Miscellaneous
- Added 'carousel.css' stylesheet and 'carousel.js' javascript to public.
Version 0.1.8
Released April 30th, 2008
Views
- Reworded invitation notification (too many "Digital Texts!").
- Added pagination by letter to Author, Text and Tag list views (didn't think it was useful for Collections).
- Added '_letters.rhtml' partial to 'views/general'.
- Tag weights are now differentiated by colour as well as size in the Cloud view.
- Rewrote note on Text form about ISBN lookups to clarify 10 vs. 13-digit support.
- Removed (misleading) score output from search results.
- The Add Text form now checks for existing matches on the user input for ISBN (exact) and title (similar) fields and suggests the matches. Once suggested, the user has the option to View, Add, or Reject the match. Adding it effectively gives the user the Text they wanted in the first place, and prevents a duplicate from being created. Matching Amazon selections are also checked for duplication.
- Resurrected 'tags/_tags.rhtml' partial, as it is called from the Tag suggest method (oops). Renamed to '_tag_suggestions.rhtml' for clarity.
- Added "Show All" links to all list views.
- Added Tag and Comment counts to Reader listings.
- Added 'last logged in' info to Reader profiles.
- Added quick icon links to Reader Texts and Collections in Reader profiles and Home views.
- Added '_amazon_pagination.rhtml' and '_amazon_item.rhtml' partials to views/documents.
- Modified '_amazon_results.rhtml' partial to display pagination for multiple pages of Amazon results.
- Updated 'documents/_fields.rhtml' partial to display fields for Edition and Volume.
- Updated 'documents/show.rhtml' to display Edition and Volume information, if available.
- Corrected order of Recent Activity items on Reader Profiles (was incorrectly using created_at rather than updated_at values).
- Added a Welcome page ('main/welcome.rhtml'), which is now the default landing page. It offers more information about Digital Texts to new users, and allows existing users to login.
- Modified 'layouts/_top_bar.rhtml' and 'layouts/_footer.rhtml' partials to output information for Guest users.
- Updated About page with more thorough information.
- Added statistics and timelines to Home page.
- Added statistics to Reader profiles.
- Added '_timeline_item.rhtml' partial to views/main.
Controllers
- Modified 'list' methods in Author, Document and Tag controllers (also 'cloud' method) to return lists by letter when requested.
- Modified 'list' methods in Author, Collection, Document and Tag controllers to return non-paginated lists when requested.
- Updated 'tag_suggest' method in Tag controller to call renamed '_tag_suggestions.rhtml' partial.
- Added 'duplicate_check' method to Documents controller, which checks the database for existing entries matching the ISBN or title of texts being added using the Add Text interface (either manually or by Amazon form population).
- Split 'amazon_lookup' method in the Documents controller into two methods: 'amazon_isbn_lookup' and 'amazon_keyword_search'.
- Added 'more_amazon_results' method to Documents controller, which returns the requested page of Amazon results to the New Text form.
- Added 'before_filter' exceptions to the Main controller to allow non-users to browse a limited number of pages (About, Notes, Feedback, Welcome) before being required to add Digital Texts.
- Modified 'home' method in Main controller to return material for statistics output.
- Modified 'show' method in Readers controller to return material for statistics output.
Database
- Added 'edition' and 'volume' fields to Documents table.
Plugins & Gems
- Modified the aws4r plugin to return a more fully fleshed out Results object to calls to the item_search method. The Results object now returns the number of pages returned, the current page of results, and the keywords used to generate the result set. This information is used in the Amazon results pagination.
Images
- Added 'match.png', 'stats.png', 'personal_stats.png' and 'digital_texts.png' icons.
- Added 'light_grey_bg.png' image.
Miscellaneous
- Added 'stats.css' stylesheet, and included it in 'layouts/application.rhtml'.
Version 0.1.7
Released April 15th, 2008
Views
- Corrected display order of Comments - now displayed chronologically rather than the reverse.
- "Add this Text" and "Add this Collection" links in the show views are now prominently displayed in the title area of un-added texts and collections (next to the edit and delete buttons), and styled as buttons.
- Updated the 'layouts/_textile_note.rhtml' partial to indicate that users can use Textile or HTML to markup their text.
- Added Feedback form ('main/feedback.rhtml').
- Added Feedback link to footer.
- Rearranged header nav options:
- Combined About and Terms of Service pages, both now under About.
- Moved link to Release Notes to the footer.
- Added tabs for Recent Activity, Search and Feedback.
- Removed the link to the Wiki.
- Shortened "Invite Friends" to "Invite"
- Added top nav bar with a quick search box and links back to Facebook, back to top (of page), and Home. The current user logged in is also displayed, along with a Logout link. This bar is fixed, so it travels down the page when the user scrolls.
- Replaced submit button on Invite Friends form with a custom button.
- Added 'recent.rhtml' page to main/views. This is populated with Recent Activity items filterable by type of activity and number of days to display, and grouped by day.
- Added Recent Activity buttons to Author, Collection, Tag and Text listings, which link to the Recent Activity page, filtered by the given type of listing.
- Added '_form.rhtml' partial to views/tags, called from any form that allows Tags to be added.
- Added '_display.rhtml' partial to views/tags, called from any record that displays its associated Tags.
- Tag suggest options now have a hand cursor on rollover, rather than the text cursor.
- Added a '_collage.rhtml' partial to views/collections, called from Collection listings throughout the application to display a collage of up to three of that Collections cover images, if available, or a generic Collection image if not.
- Added 'last logged in' info to Reader listings.
- Replaced submit buttons and cancel links in the Comment forms with styled buttons.
- Updated comment and tag forms to integrate new fields for polymorphic associations.
- Added Tags Listing to Reader Profiles and Home.
- Removed '_tags.rhtml' partial from views/tags, as it was no longer used.
- Added Recent Activity feed to Reader Profiles.
- Rewrote welcome message on Home screen to more immediately offer some interactive paths to new users.
- Added 'nationality' field to Author forms.
- Added 'editors' field to Document form.
- Modified 'main/_inviteFBML.rhtml' partial to take into account that Facebook prepends all notifications with the logged in users name: ("Johnny Rodgers has invited you to...").
- Added Google Books lookup to Document show view, which displays a link to the Text in Google Books, if available, and indicates its Viewability (Info only, Partial view, Full Text).
- Changed guide number background to orange gradient.
Controllers & Helpers
- Added 'production?' method to Application controller, which returns true if the app environment is Production.
- Added conditionals to all calls to Facebook profile and story actions to check if the app is in Production. This prevents changes made in the development environment and database (my local install and the version of DT running on Tapor Dev) from broadcasting information to users Facebook profiles and feeds (which would contain faulty URLs).
- Modified conditions for 'edit' access to Texts and Collections, so that a user must first add a text or collection before being able to edit it.
- Added 'recent' method to Main controller, which displays a feed of recent activity, filterable by type of activity and number of days to display.
- Modified 'tag_suggest' method in Tags controller to accept the new Tag form partial parameters, and to group suggestions by label.
- Removed 'create' method from Tags controller, as it is never called (as Tags are created on other model forms).
- Rewrote 'show' method of Tags controller to use SQL INNER JOIN queries to return the same information as the previous array looping method.
- Rewrote 'list' and 'cloud' methods of Tags controller to more efficiently select and group tags matching model conditions.
- Rewrote 'save_tags' method to work with the new polymorphic associations.
- Collapsed 'save_tags' methods from each controller into one 'save_tags' method in the Application controller.
- Collapsed 'creator' methods from each controller into one 'creator' method in the Application controller. I've also had to add this method to application_helper.rb so that it is available to all the views. Is there a better way to do this?
- Removed 'record_owner' methods from Tag and Comment controllers - this information is now available through 'tag.record.created_by' and 'comment.record.created_by.'
- Added 'tags_with_classes' method to Application controller, which accepts an array of Tag objects and adds a 'css_class' attribute to each based on their usage count (called from any method which needs to display Tags as a cloud).
- Added Search controller with a 'results' method which searches across all indexed models using Ferret and returns paginated search results.
- Fixed typo in Main Controller's 'send_invites' method which was breaking multiple friend invites.
- The 'create' method of the Comments controller now generates a Facebook notification which is sent to all readers of the record which the comment is made on.
- Added code to the Document 'create' and 'update' methods to clean up ISBNs entered in the Document form (strip spaces and dashes, attempt to parse 13-digit ISBNs).
Models
- Added 'getInfo' method to Reader model, which returns the 'name' and 'pic_small' values from their Facebook profile.
- Corrected association between Comments and Readers in the Comment model to 'belongs_to :reader' (formerly 'has_one :reader').
- Added relationship between Readers and Tags (Tag 'belongs_to :reader' and Reader 'has_many :tags').
- Removed 'tags_by_model' method of Tag model. With polymorphic associations this functionality can be accomplished much more efficiently with an SQL query.
- Added a 'collage_images' method to the Collections model, which returns a set of images to use to represent the Collection visually.
Database
- Removed duplicate authors from database, reassigning associated documents and comments as necessary.
- Upgraded Comments and Tags to use Polymorphic associations. This removes the HABTM tables betweeen comments, tags, and their subjects (Authors, Collections, Documents), and adds 'record_id' and 'record_type' fields to the Comments and Tags tables.
- Added 'reader_id' field to Tag table to keep track of associations between Readers and their Tags (used to display better information in the Recent Activity and Reader Profile views). Populated this field with the Reader id of the creator of the record that each tag corresponds to (may not be right but is the best guess, given the lack of information about this relationship).
- Added 'nationality' field to Authors table.
- Added 'editors' field to Documents table.
Routes
- Added recent activity route, with "All" as the default filter and "7" as the default number of days to display.
- Added search route to display search form.
JavaScript
- Added 'ProcessGBSBookInfo()' function to 'application.js', called from the Document show view.
Images
- Added 'generic_collection.png' image, used when none of a Collections Texts have cover images available.
- Added 'calendar.png', 'calendar_day.png', 'down.png', 'feedback.png', 'send.png', 'home.png', 'up.png', 'top.png', 'google.gif', and 'advanced_search.png' icons.
- Added 'top_bar_bg.png', 'red_score.png', 'yellow_score.png', 'cover_bg.jpg', 'green_score.png', 'grey_bg.jpg', 'orange-bg.jpg', and 'orange_bg_tall.jpg' images.
Plugins & Gems
- Added a modified version of the xss_terminate plugin to protect against XSS (cross-site scripting) attacks. This works by stripping potentially malicious HTML from user input (JavaScript, links which might include destructive parameters), while allowing a subset of safe tags (such as formatting tags like <strong>, <em> and <code>).
- Installed the acts_as_ferret plugin to enable full-text searching (modified to work with will_paginate).
Version 0.1.6
Released April 4th, 2008
Views
- Added back to top link to footer.
- Added Pretty Page Titles to all pages to assign a more helpful, context-aware, title to each page.
- Added Reader profile images to Reader listings.
- Added conditionals to Reader profile image instances, as sometimes Facebook doesn't return the image along with the other user info (due to server load, etc). When the image is not available, a generic profile image is temporarily displayed.
- Removed date icons from listings (unnecessary).
- Moved comments layout to '_comments.rhtml' partial, which is called from any page that has comments (collections/show, authors/show, documents/show, readers/show).
- Redesigned comment display. They are now cleaner and take up less space.
- Added thumbnail images to Text listings in Reader profiles (missed this list last time).
- Moved footer navigation items in Show views (Back, Edit, Delete) to the item title area. The increasing length of show pages for things like Texts was making these links hard to find, and it was no longer clear what they were associated with. The Back item in this nav area has been removed in all cases (unnecessary).
- Replaced Edit and Delete links in Show views with smaller button-style links (like the Add New Text, etc buttons).
- Replaced existing blue buttons with slightly smaller versions.
- Table header rows now have a blue gradient background.
- Redesigned header to complement new button style and richer colour scheme.
- Redesigned Tag Cloud page to take up less vertical space.
- Placed Author birth/death dates beside name in Author show view, rather than as a separate (and very short) paragraph.
- You can now add Notes to Authors.
- All textarea fields now accept Textile input, which is interpreted by the RedCloth gem and returned as HTML. The best immediate impact of this is that paragraph and line breaks are interpreted correctly as entered. It also allows a full set of HTML-like formatting capabilities for better control over longer portions of text.
- Added '_textile_note.rhtml' partial to 'layouts' that is called to present a note anywhere that Textile input is supported.
- Collection listings in Home display available text thumbnails. This is a start toward an idea I have for Collection listings that focuses more on their Texts, and displays texts under collections, hierarchically.
- Corrected accent in Stéfan's name in the footer!
- Adapted Add Text form to allow Amazon lookup through keywords as well as ISBN.
- Added '_amazon_error.rhtml' partial to display Amazon lookup errors (no results, bad input, etc).
- Added '_author_matches.rhtml' partial to display an Author disambiguation form on Amazon lookup.
- Reworked Text form to make interaction flow more clear, and to make submit/reset buttons stand out. The step-by-step style and buttons from this form have been expanded to the other forms on the site.
- Added a prompt to the user if no Collections were selected when adding or editing a Text.
Controllers
- Renamed 'amazon_decline.rjs' to 'amazon_reject.rjs'.
- Rewrote 'amazon_lookup' method in 'documents_controller.rb' to allow for ISBN or Keyword input, and to return an array of books rather than a single entry.
- Added 'add_amazon_author' method to Documents controller. This creates and saves a new Author object confirmed by the user on the author disambiguation form.
- Modified 'destroy' method in Documents controller to destroy associated Authors who don't have any other documents associated with them.
Models
- Removed the relationship between Readers and Comments that allowed readers to comment on one another's profiles. This feature was unnecessary and duplicated a communication channel already offered by Facebook.
- Added 'document_titles' method to Author model, which returns an array of the titles of an authors associated documents.
Helpers
- Added a page_title method to 'application_helper.rb' to return pretty page titles.
- Added textile and clean_textile methods to 'application_helper.rb' to either interpret text marked up with Textile and return it as HTML (textile) or interpret and then remove HTML from such text (clean_textile - for where just a snippet of plain text is displayed, such as the descriptions in the Collection listing).
Database
- Added 'notes' field to 'authors' table.
- Removed 'comments_readers' table.
JavaScript
- Added 'checkCollections()' function to 'application.js', called from the Add/Edit Text forms.
Images
- Added 'generic_person_small.png' and 'generic_person_large.png' images.
- Added nav directory to images containing new nav bg images.
- Added smaller button images (blue and grey).
- Added table th background image.
- Added 'tip.png' image, used in the Textile note partial.
- Added 'amazon_mini.png' and 'author_conflict.png' images, used in Amazon results.
- Removed 'date.png' and 'date_mini.png' images.
Plugins & Gems
- Added the RedCloth gem, a module for using Textile in Ruby.
Version 0.1.5
Released March 22nd, 2008
Views
- Added document lookup via Amazon Web Services when adding a new text.
- Added Comment features for Authors, Collections and Documents and Readers. This is offered in addition to the existing Notes field of the first three objects.
- Added '_comment.rhtml', '_new_form.rhtml' and '_edit_form.rhtml' partials to Comments views.
- Added small comment count to Collection and Document listings in Home view.
- Form element labels are now right-aligned to make it more immediately clear which input they relate to.
- Added blue background to required form elements to make them stand out.
- Redesigned header and nav to slightly compress the vertical space consumed by these elements.
- Designed buttons for prominent interface links (Add New Text, etc.).
- Updated logo!
- Added 'amazon_accept' and 'amazon_decline' RJS templates to the 'documents' views to handle Amazon lookup results.
- Added thumbnail images to Text listings, where available, and a generic text image where not.
- Added thumbnail images to Text 'show' view, where available
- Final breadcrumb item is now trimmed and appended with an ellipse if it is too long for the space. This prevents wrapping text which interferes with the main content.
- Updated Collection, Text and Author listings in Tag 'show' view to match format of all other listings.
- Added a pair of error page templates to a new 'errors' directory in the 'views' folder. These are rendered by rescue actions in the ApplicationController, and by the catch-all route in 'routes.rb'.
Controllers
- Modified 'add_collection' and 'remove_collection' methods. Adding an existing collection now adds all documents in that collection to your account (creates a document to reader association). Removing a collection disassociates all documents in that collection from your account.
- Added rescue methods to the Application Controller to prevent ActiveRecord::RecordNotFound and other errors when a non-existent object ID or other unsupported route is requested (for example, in an inbound link from an outdated Facebook notification) (Ticket #30).
- Added Comments controller with dynamic CRUD methods.
Models
Facebook
- Added thumbnail images to new Text notifications, if available.
- Changed wording of Facebook new Text notifications.
- Corrected pronoun usage in Facebook notifications to use the correct gender of the Reader (formerly hard-coded as 'his' - oops!). Detected with FBML.
Database
- Added 'isbn', 'amazon_url', 'smallimage' and 'mediumimage' fields to 'documents' table. These store data for texts looked up from Amazon, and are all optional.
- Added tables for Comments: 'comments', 'authors_comments', 'collections_comments', 'comments_documents', 'comments_readers'.
Routes
- Added a default catch-all route at the bottom of 'routes.rb' to rescue unknown/unsupported actions and display a 500 error page.
Plugins & Gems
- Added aws4r (Amazon Web Services for Ruby) library to wrap and simplify Amazon API methods. I have turned this into a plugin and rewritten parts of the code, as the download from RubyForge is only a 0.1 release, and appears to be abandoned (last updated April 2006).
- Added Chronic gem (a Ruby natural language date parser) to assist with interpreting publication dates returned by Amazon, as these can vary widely. It helps, but still can't interpret dates like '1999-07' (intended as July 1999, a format sometimes returned). I've filed a request for support for this format on RubyForge.
Miscellaneous
- Removed unused 'visualizations' controllers and views - leftovers from an early prototype.
- Added new stylesheets for Amazon and Comments features (amazon.css, comments.css).
- Renamed 'author_bg.jpg' graphic to 'blue_bg.jpg' to reflect its more general use.
- Added 'comments.css' stylesheet for Comment elements.
Version 0.1.4
Released February 26th, 2008
URLs
Facebook
- Rewrote '_profileFBML.rhtml' partial to link all Collection and Text Titles back to Digital Texts.
- Added link to Digital Texts under user's Profile picture (via :profile_action argument in refresh_profile method). Reads: "View Johnny's Texts (17)" (insert your username and number of texts here). This is only visible to you and others who have added the Digital Texts application.
- Changed wording on Added Collection and Added Text Facebook notifications to be a little more direct (from "Johnny added the Text 'The Bible' to his Digital Texts account." to "Johnny added the Text 'The Bible.'").
Views
- Texts
- Redesigned Text form. Now divided into Publication Information, Authors, Collections, and Tags sections.
- Overhauled Author associations in the Text form. The methods of adding and removing Authors are completely new (and very AJAX-y).
- Authors associated with Texts are now sortable. This is handy for academic publications and other literature that requires a strict author order in the publication information.
- Added '_author_list_item.rhtml' and '_sortable_helper.rhtml' partials to views/documents. These are called from the Text form.
- Collections in Text form are now selected with checkboxes, rather than a multi-select list.
- Added Authors listing to Publication Information in Text 'show' view.
- Added Date span fields to Text form. On new Text creation, the Date span is hidden, and can be revealed by checking a box labeled "This Text was written or published over a span of time." This reveals the Date span field and some brief instructions. When editing a Text, the form detects whether a date span is present and displays the relevant fields.
- Reformatted Text listings to display title of work first, then authors.
- Text publication information in the 'show' view now displays Date Spans, if present.
- Collections
- Added visual Text Assocation feature to Collection form (new/edit). This allows the user to drag Texts into or out of a Collection without needing to interact with any form elements. Does away with the confusing multi-select list, and is more intuitive (and fun!) than a list of checkboxes.
- Added '_associated_docs.rhtml', '_associated_item.rhtml', '_unassociated_docs.rhtml', and '_unassociated_item.rhtml' partials to the Collection views folder. These are called from the Collection form.
- Tags
- Rewrote all Tag fields (on the Author, Collection and Text forms) to take advantage of the built-in auto_complete_field helper in Rails (see note). This functionality is now more compact, faster, and more functional. Users can traverse the list of Tag suggestions using their mouse or the arrow keys to select options, and also now receive suggestions on every tag they enter (separated by commas). This is significantly superior to the previous version.
- Added '_tags.rhtml' partial to views/tags/. This is an HTML list populated by the results of calls to the 'tag_suggest' method, which is then displayed below the calling field.
- Removed the '_tag_suggest.rjs' template from views/tags/, as it is no longer called.
- General
- Added Breadcrumbs navigation to Header to give context.
- Cleaned up Credits in main/about.rhtml, and included appropriate license links.
- For consistency, the profile images used on the Home page and Reader profiles are now styled the same as other Reader images (with links to that users DT and Facebook Profiles).
- Added more descriptive Title attributes to navigation items for rollover help.
- Added '_profile_action.rhtml' partial containing Profile Action FBML. Called from refresh_profile method in Application controller.
- Fixed small bug in pagination routes where navigating from documents/list/page/2 to collections/list would automatically request collections/list/page/2. Header links to the different list types now specify :page => 1 to rectify this.
- Replaced all date stamps with general time indicators using Rails distance_of_time_in_words helper: ("last updated 3 days ago" vs. "last updated February 19th, 2008 at 10:48:07").
- Added "First added January 24, 2008. Last tagged 6 minutes ago." style indicator to Tag 'show' view.
- Added 'last updated x minutes/days/weeks ago' information to most listings.
- Replaced lists with tables in 'show' views for consistency with how records are displayed in Home.
- Resized textarea form elements to fit the form width in Safari.
- Friend/reader lists are now composed of smaller Facebook profile pictures (pic_small in the users.getInfo API, max width 50px), and the reader/friends first name.
Helpers
- Removed 'toggle_authors_link' and 'add_authors_link' helper methods from Texts helper. The first is no longer needed, and the second is only used once, so it has been embedded in the Text form.
Models
- Added 'timespan' method to Tag model which returns the oldest and newest records of a given Tag label in a timespan hash.
- Added 'ordered_authors' method to Document model which returns the Text's authors ordered by their 'author_order' field.
- Updated 'authors_names' method of Document model to return Texts' authors as ordered by 'ordered_authors' method.
Controllers
- Completely rewrote 'tag_suggest' method in 'tags_controller'. Now returns a maximum of 8 matches and follows Rails auto_complete conventions.
- Added :profile_action argument to refresh_profile method (and reorganized order of arguments hash to fit updated API), which adds a link to Digital Texts to users profiles underneath their Profile picture.
- Rewrote destroy methods in the Author, Collection and Text controllers to destroy associated tags upon record deletion. This dependency would normally be specified in the Model, but HABTM associations do not allow :dependent => :destroy.
- Too many changes to Documents controller to outline in detail. Basically, the 'create' and 'update' methods have been rewritten to accommodate the new Author association mechanisms, and new methods have been added for the visual Author add/remove/sort features.
- Updated 'destroy' method in Authors controller to update associated Text records (author_ids and author_order).
- Added 'associate_document' and 'disassociate_document' methods to Collections controller. These are called from the visual Text association feature in the Collection form.
Database
- Dropped 'publication_year' field and added 'publication_span_start' and 'publication_span_end' fields to 'documents' table (both of type :date). This allows for Date spans for Text objects (to allow for better accuracy when adding Texts which were composed over several years/decades).
- Added 'author_order' field to 'documents' table. This stores the order of the author_ids associated with a given Text.
Images
- Replaced green back arrow with a slimmer blue one to match breadcrumbs arrows.
- Added 'author_bg.jpg' graphic, used in the Create New Author pop-up form.
NOTE: This helper has been extracted to a plugin in Rails 2.0. This will need to be addressed if the server running Digital Texts is upgraded to the latest Rails.
Version 0.1.3
Released February 13th, 2008
Facebook
- Set up a mirror Dev app that only Stéfan and I can add, available at http://apps.facebook.com/digitaltexts_dev. This is used for local development, with the callback URL of http://localhost:3000 expecting a Rails app running at that port on your local machine (with a matching digitaltexts_development database).
- Added Digital Texts 2.0 Profile box to Facebook Profile of users. This displays your 3 most recently added Collections and Texts, and a link to Digital Texts. This shows up as a wide profile box on your Facebook Profile after you add the application (and is updated each time you login to Digital Texts, and each time you create or add a collection or text). Works via a call to Facebook's profile.setFBML method.
- Added News Feed and Mini-Feed notifications when a user creates or adds a new Collection or Text, and when a user adds the application.
Views
- Added "View in External Window" option to Footer
- Added an 'invite' view to the Main controller, with an "Invite Friends to Digital Texts 2.0" form on it
- Added an "_inviteFBML.rhtml" partial which is called on form submit. This contains the FBML that is sent to the invited users as a Facebook Notification
- Added Friends list in Home view, which links to the logged in users Facebook Friends who have added the Digital Texts application. If the user does not currently have any friends on Digital Texts, this section instead displays a link to the "Invite Friends to Facebook" form
- Added "Invite Friends" links to Home welcome message and Footer
- Added Invite Friends tab to upper nav menu.
- Changed Readers listings in Collections and Texts to fit the style of the Friends listings (a thumbnail of the reader with their name below and links to the DT and Facebook profiles)
- Added a "main/_profileFBML.rhtml" partial which is called from the 'refresh_profile' method in the Application controller
- Minor stylesheet changes in 'style.css' and 'tags.css'
Models
- Changed the 'current_readers' methods in the Collection and Text controllers to retrieve the current readers 'pic' and 'first_name' in addition to their 'name' from their Facebook profile
Controllers
- The 'show' method in the Readers controller and the 'home' method in the Main controller now retrieve a list of the displayed Reader's friends who have added the Digital Texts application
- Added 'refresh_profile' method to Application controller, which is called from the 'home' method of the Main controller and the 'create', and 'add_collection/document' methods of the Collection and Text controllers
- Added 'invite' method to Main controller, which generates a list of your Friends who haven't added DT2.0 to Facebook
Version 0.1.2
Released February 3rd, 2008
Views
- Added "Allow others to edit this record?" checkboxes to Add Author, Add Collection, and Add Text forms, with them checked by default.
- Added "Allow others to edit this record?" checkboxes to Edit Author, Edit Collection, and Edit Text forms. Only the Creator of a record is able to change this value (or see it).
- Changed Home lists for Collections and Texts to check for edit_permissions in order to show or disable the Edit link.
- Changed 'show' views for Authors, Collections and Texts to check for edit_permissions in order to show or disable the Edit link.
- Corrected typos in Collections and Texts lists which stated that you were viewing Authors when you were viewing a specific Readers Collections or Texts.
- Changed how a Reader's Collections and Texts are shown in their Reader Profile. The Profile now shows the Reader's 5 most recently edited Collections and Texts, with links to lists of all of their records via collections/view/:reader_id and documents/view/:reader_id links.
Controllers
- Rewrote 'edit' method checks in author, collection, and document controllers to check for edit_permissions field for the record OR whether the current_reader is the record's creator.
Database
- Added edit_permissions field to 'authors' 'collections' and 'documents' tables. This is an integer column that can be set to 1 or 0 depending on whether the creator of a record allows it to be edited by other Readers. Delete permissions remain restricted to the creator of a record. The default value for this column is 1, or true. This way, the creator of a record will need to purposefully disallow editing.
Version 0.1.1
Released January 31st, 2008
Views
- Redesigned how required fields are displayed in forms to make them more apparent
- Added Readers tab to menu
- Added version number to footer
- Rewrote Terms of Service
- Resized Pagination to make it less conspicuous
- Added pagination at head of listings (in addition to foot)
- Cleaned up display of error messages generated by form validations
- All 'created_at' and 'modified_at' hidden form fields have been removed (as they are actually unnecessary thanks to ActiveRecord)
- Added Facebook navigation options (View in Canvas, Back to Facebook, Logout) to footer
- Removed 'logout.rhtml' view, as the Logout action now redirects the user to their Facebook profile
- Flash messages are now more precise, indicating the record that the message is about ("Leo Tolstoy was successfully updated." vs. "Author was successfully updated.").
- References to Collection 'genre' field have been removed
- Cleaned up display of Author error messages inside the Text form
- Made the default value for Text URL "http://" in the document form (helps prevent broken links)
- Added simple Tag suggest mechanism (only works for first tag) to all forms
- Added "Add this Collection", "Add this Text" links in Collection and Text views, and in Reader profiles
- Made Text form populate the Collections select list with only the current reader's Collections, rather than all Collections in the DB
- Added Release Notes tab
Models
- Added simple validation to all models (currently only validates presence of required fields)
- Tags are now separated by commas to allow for multi-word tags (ie. "avant garde")
- Improved code commenting
Controllers
- Removed 'new' and 'edit' methods and views from Tags controller. Tags are created and deleted through the other model's forms, not in isolation.
- Moved 'logout' action to Application Controller ('application.rb') from Main Controller ('main_controller.rb')
- Permissions to edit and delete objects in the database are now restricted to the creator of an object. This will be expanded to allow role-based permissions assignment for things like Research Groups, etc.
- Moved 'remove_tag' method to Tags Controller ('controllers/tags_controller.rb'), and removed it from the Author, Collection and Text Controllers
- Moved the 'remove_tag' RJS template to views/tags/remove_tag.rjs and removed it from the Author, Collection and Text views
- Added 'tag_suggest' method to Tags Controller
- Added add and remove collection and document methods to allow users to add and remove Collections and Texts posted by other Readers
- Rewrote collection and document 'destroy' methods to check for other Readers. This prevents the creator of a record deleting it without realizing that others are 'reading' it. If the destroy method detects that there are other readers, it redirects the request to the 'remove' method, allowing the record to persist but removing the association between record and creator.
- Improved code commenting
Database
- All 'modified_at' columns renamed to 'updated_at' to take advantage of ActiveRecord's magic
- 'updated_at' column added to Readers table
- 'genre' column dropped from 'collections' table
Routes
- Added clean Pagination routes so that URLs like "collections/list?page=2" become "collections/list/page/2"