Gruta TODO / Bug List
=====================

Release Critical Bugs
---------------------

 * 1077: When inserting a story, Renderer::BASE::story() is unable
   to call related_stories().

Open Bugs
---------

 * 1001: Audit all possible directory traversal vulnerabilities
   in Source::FS.
 * 1065: Every time the supertemplate is changed, it should also
   be set in the CGI vars hash.

Pending Enhancements
--------------------

 * 1051: Add a glossary://topic/story pseudo-url, that creates an
   `abbr' or `acronym'.
 * 1062: Add `from' and `to' date arguments to `LIST'.
 * 1057: Delete the vfields() and afields() methods, and use only
   fields().
 * 1066: Add uploads (img/ dir and such) as another component of
   the source, so that uploaded things are inside it. For the FS
   nothing would change regarding filesystem layout, but on the DBI
   binaries will be stored as blobs.
 * 1075: Create a server process that serves Gruta databases, maybe
   as a RESTful service.

Closed
------

 * 1000: Source::FS don't create new ids for stories
   (Wed, 04 Jul 2007 13:18:04 +0200).
 * 1002: link_to_topic() and link_to_story() should move to Gruta.pm,
   but infinite loops (of two stories linking each other) must be
   solved (Thu, 12 Jul 2007 13:36:22 +0200).
 * 1003: Use flock() in index creation / reading in Source::Mbox
   (fixed on 9f922c4fdaa35206693caabf110717ce26203d0d;
    Fri, 20 Jul 2007 14:15:04 +0200).
 * 1005: stories_top_ten, when returning values from different sources,
   does not reorder the stories (Wed, 17 Oct 2007 13:04:36 +0200).
 * 1007: Add the Gruta.pm wrapper to stories_by_tag()
   (Wed, 17 Oct 2007 13:16:26 +0200).
 * 1008: Add the Gruta.pm wrapper to tags()
   (Wed, 17 Oct 2007 13:16:26 +0200).
 * 1010: Move is_visible_story() from Artemus to generic story code
   (Wed, 21 Nov 2007 12:50:55 +0100).
 * 1009: For subscriptions to work correctly, the 'visibility' of
   future stories should not depend only on the user logged in, but
   in the editing capabilities of the user upon the story
   (Thu, 22 Nov 2007 14:00:57 +0100).
 * 1012: Delete Artemus function loop_tags (Tue, 08 Jan 2008 14:10:18 +0100).
 * 1013: Delete template _tag_with_count_as_item (Tue, 08 Jan 2008 14:10:18 +0100).
 * 1014: Delete template _tag_as_cloud (Tue, 08 Jan 2008 14:10:18 +0100).
 * 1020: Delete Artemus function search_stories_by_tag (Tue, 08 Jan 2008 14:10:18 +0100).
 * 1021: Delete Artemus function story_loop_top_ten (Tue, 08 Jan 2008 14:10:18 +0100).
 * 1024: search_stories_by_tag() FS should be AND, not OR
   (Tue, 12 Feb 2008 12:49:51 +0100).
 * 1025: search_stories_by_tag() DBI query must be:
   select topic_id, id from tags where (tag = 'entrantes' or tag = 'setas') 
   group by topic_id, id having count(id) = 2
   (Tue, 12 Feb 2008 13:07:02 +0100).
 * 1027: Fill the RDF template (Tue, 18 Mar 2008 11:17:02 +0100).
 * 1028: Fill the RSS template (Tue, 18 Mar 2008 11:17:02 +0100).
 * 1011: Templates should live in /usr/share/gruta/templates and,
   when changed, be saved in the var/templates directory
   (Mon, 21 Apr 2008 14:02:46 +0200).
 * 1032: Do Gruta::Source::Mbox stories_top_ten()
   (Mon, 21 Apr 2008 15:54:47 +0200).
 * 1033: Do Gruta::Source::Mbox stories_by_tag()
   (Mon, 21 Apr 2008 16:06:49 +0200).
 * 1031: Do Gruta::Source::Mbox search_stories()
   (Mon, 21 Apr 2008 16:18:41 +0200).
 * 1034: Create a Gruta::Data::crypt() function
   (Mon, 21 Apr 2008 16:46:54 +0200).
 * 1029: Move admin user creation from Gruta.pm to Gruta::CGI.pm
   (Tue, 29 Apr 2008 14:28:19 +0200).
 * 1036: Test default user creation and sid management introduced
   in issue #1029 under production (Thu, 08 May 2008 07:18:58 +0200).
 * 1030: Infer default values for topic_id, topic_name and index_file
   in Gruta::Source::Mbox (as done in bin/gruta)
   (Mon, 09 Jun 2008 13:17:18 +0200).
 * 1040: The 'intermixed_index' template crashes in DBI
   (Tue, 16 Sep 2008 14:17:45 +0200).
 * 1023: stories_by_date() 'offset' argument fails in FS if the search
   is done on more than one topic (Wed, 17 Sep 2008 07:53:12 +0200).
 * 1039: The 'story_hits' template should returns something
   different from 0 (Closed by #1042; Thu, 18 Sep 2008 12:16:25 +0200).
 * 1042: IN DBI, the 'hits' column in 'stories' seems to be
   initialized as an empty string or NULL instead of 0 (even
   though it's defined as DEFAULT 0). This bug is probably
   only for SQLite (Thu, 18 Sep 2008 12:22:43 +0200).
 * 1037: Document the installation process
   (Thu, 18 Sep 2008 12:32:59 +0200).
 * 1038: Translate the spanish templates to english
   (Thu, 18 Sep 2008 13:04:40 +0200).
 * 1044: Fix Mbox's search_by_tag (Mon, 27 Oct 2008 16:19:16 +0100).
 * 1045: Fix Gruta->url() to not return static urls if additional
   arguments are given (Sun, 16 Nov 2008 09:49:48 +0100).
 * 1043: Delete template _select_option
   (Wed, 26 Nov 2008 17:12:16 +0100).
 * 1049: Add a description field to topics (to be set as the
   HTML description) (Fri, 05 Dec 2008 13:24:37 +0100).
 * 1050: Add a description field to stories (to be set as the
   HTML description) (Wed, 10 Dec 2008 07:25:18 +0100).
 * 1046: Delete template l (Mon, 22 Dec 2008 13:12:38 +0100).
 * 1015: Delete Artemus function loop_topics
   (Mon, 22 Dec 2008 13:16:44 +0100).
 * 1016: Delete Artemus function loop_users
   (Mon, 22 Dec 2008 13:16:44 +0100).
 * 1017: Delete Artemus function loop_renderers
   (Mon, 22 Dec 2008 13:16:44 +0100).
 * 1018: Delete Artemus function loop_templates
   (Mon, 22 Dec 2008 13:16:44 +0100).
 * 1019: Delete Artemus function loop_upload_dirs
   (Mon, 22 Dec 2008 13:16:44 +0100).
 * 1022: Delete Artemus function story_loop_by_date
   (Mon, 22 Dec 2008 13:16:44 +0100).
 * 1026: Delete Artemus function loop_story_tags
   (Mon, 22 Dec 2008 13:16:44 +0100).
 * 1006: Stories should always be rendered on save and retrieved
   from a cache (Fri, 02 Jan 2009 07:40:16 +0100).
 * 1047: Escape Artemus markup from story contents
   (Fri, 02 Jan 2009 07:54:06 +0100).
 * 1052: Escape Artemus markup from user data
   (Fri, 02 Jan 2009 07:54:06 +0100).
 * 1053: Reorder return values from stories_by_date() to be
   topic_id, id and date (Thu, 08 Jan 2009 08:54:07 +0100).
 * 1054: FS's search_stories() should be sorted by title
   (Tue, 13 Jan 2009 13:27:36 +0100).
 * 1055: FS's stories_by_tag() should be sorted by title
   (Tue, 13 Jan 2009 13:52:18 +0100).
 * 1041: Gruta::stories_by_date() will fail when using an offset and
   more than one source (related to #1023) (Only one source
   supported; Thu, 15 Jan 2009 13:11:15 +0100).
 * 1004: Support broken lines in message headers in Source::Mbox
   (Mbox is now deprecated; Thu, 15 Jan 2009 13:27:13 +0100).
 * 1058: Move the hardcoded top ten limit to an argument
   (Mon, 02 Feb 2009 13:52:05 +0100).
 * 1059: Move the hardcoded CGI compression size to an argument
   (Mon, 02 Feb 2009 13:57:07 +0100).
 * 1061: In a story:// pseudo-url, don't generate a link if the
   story is a future one (Thu, 12 Feb 2009 10:03:30 +0100).
 * 1035: Change Gruta::Data::today() to allow a date to be set
   (Mon, 22 Jun 2009 10:29:40 +0200).
 * 1063: In `_story_footer', disable showing the hits if they are
   disabled (`cfg_top_ten_num' set to 0)
   (Mon, 22 Jun 2009 16:14:02 +0200).
 * 1064: In `TOP_TEN', redirect to `INDEX' if hits are disabled
   (`cfg_top_ten_num' set to 0) (Mon, 22 Jun 2009 16:24:47 +0200).
 * 1067: Story names formed by numbers only collide with the
   `mod_rewrite' rule that treats filenames with numbers as
    an offset to a topic index (no longer allow automatic
    ids with all numbers; Wed, 14 Oct 2009 12:08:26 +0200).
 * 1068: Modify gruta_mksite to ask for Art5 sites (it now creates
   Art5 sites by default; Sat, 13 Mar 2010 09:00:03 +0100).
 * 1048: Add user comments to stories
   (Tue, 18 May 2010 11:58:37 +0200).
 * 1069: Rename 'cfg_additional_headers' to 'additional_headers'
   (Sun, 06 Jun 2010 20:31:27 +0200).
 * 1070: Rename 'cfg_index' to 'index'
   (Mon, 07 Jun 2010 08:37:46 +0200).
 * 1072: Add a "More..." link to RSS entries that need it
   (Fri, 25 Mar 2011 10:56:03 +0100).
 * 1073: Change the comment mail notification to a template
   (Tue, 10 May 2011 09:42:00 +0200).
 * 1071: Move comment SPAM testing to Gruta::CGI
   (Tue, 10 May 2011 16:05:37 +0200).
 * 1074: Add an `Expires' header a little time in the future
   (i.e. 10 minutes) when the user is not logged in (used cache
   control; Mon, 26 Sep 2011 15:26:10 +0200).
 * 1060: Fix RSS to avoid generating an author tag if there is
   no author (no longer applicable; Mon, 26 Sep 2011 15:26:10 +0200).
 * 1056: Delete _destroy_index() and create _rebuild_index() in FS
   (Mon, 16 Apr 2012 09:18:16 +0200).
 * 1076: When inserting a story, the tags are not correctly stored
   in the master index, because calling $story->tags() before the
   story exists generates a crash (Sun, 02 Jun 2013 12:38:46 +0200).
 * 1078: Unify all stories_by Source functions in one, named
   story_set(), that searches by date, tag and content and with
   a sorting option (date or title) (Fri, 11 Jul 2014 10:30:18 +0200).

Email bugs to angel@triptico.com
