Feature #14

tags for projects

Added by Chris Cannam over 13 years ago. Updated over 10 years ago.

Status:NewStart date:2011-11-11
Priority:UrgentDue date:
Assignee:Luis Figueira% Done:

85%

Category:-
Target version:-

Description

The ability to associate free tags (e.g. "vamp") with projects would be handy.

And some ability to visualise and browse them.

There is a "tagging plugin" in the Redmine plugins list, but it's not clear whether you can use this for tagging projects themselves (the summary mentions tagging issues and wiki pages).


Subtasks

Bug #321: Hiding "My Projects" only useful if hidden state is persi...ClosedChris Cannam

Bug #322: Pagination broken in projects listClosedChris Cannam

Bug #323: Filtering does not work in test sitesClosedLuis Figueira

Bug #324: Filter "widget" needs to be closer to project tableClosedChris Cannam

Bug #325: Text in My Projects list too smallClosedChris Cannam

Bug #327: Edits ignored in tag edit field while autocomplete menu v...NewLuis Figueira

Bug #331: Not apparent how to remove tag filtersClosedChris Cannam

Bug #332: Textual search ignored if tags present in filterClosedChris Cannam

Bug #330: Tag autocomplete in project filter area should _not_ have...FeedbackChris Cannam

Feature #336: My projects should also list their tagsClosedChris Cannam

Bug #337: Pagination links disappear when list refreshed after searchClosedChris Cannam

Bug #338: Project filter yielding no results does not update result...ClosedChris Cannam

Bug #339: Changing tags in filter box should regenerate results lis...ClosedChris Cannam

Bug #340: Textual search matches not highlighted in descriptionClosedChris Cannam

Bug #341: Clicking on a tag does not show tag in filter areaIn ProgressLuis Figueira

Feature #343: Need helpful line of text under Tags field in SettingsClosedChris Cannam

Bug #365: Tag autocomplete broken on New Project pageClosedLuis Figueira

Bug #352: Cannot add tags on New Project PageClosedLuis Figueira

Feature #459: Warn project managers that their project is untagged!NewLuis Figueira

Bug #559: Autocomplete not working when creating a new projectRejectedChris Cannam

History

#1 Updated by Chris Cannam over 13 years ago

  • Assignee set to Luis Figueira

#2 Updated by Chris Cannam over 13 years ago

  • Priority changed from Normal to High

#4 Updated by Chris Cannam over 12 years ago

The third representation mentioned in the article at http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html (referred to as the "Toxi" schema) seems probably the most appropriate.

Note that this schema, which uses a separate tag-labels table and a join table to connect tags to objects, allows you to use the same tag vocabulary with more than one sort of object (e.g. with projects and issues) if you want to.

This suggests that we should take another look at the plugins that already exist for tagging, because even if a plugin has only been designed to permit tagging issues (say), it might still turn out to have a schema suitable for tagging other objects.

#5 Updated by Chris Cannam over 12 years ago

And indeed, https://github.com/ixti/redmine_tags/ appears to provide in the basic design for tags to be applied to objects of any model.

#7 Updated by Chris Cannam over 12 years ago

Hm, one problem with a completely generic tagging implementation like this -- it has to record the taggable class in the db for every taggable-tag relation added.

e.g. I install the redmine_tags plugin and add two tags to one issue ("thin", "thick") and one tag to another ("thin"). The relevant db tables subsequently contain:


mysql> select * from tags;
+----+-------+
| id | name  |
+----+-------+
|  1 | thick |
|  2 | thin  |
+----+-------+
2 rows in set (0.00 sec)

mysql> select * from taggings;
+----+--------+-------------+-----------+-------------+---------------+---------+---------------------+
| id | tag_id | taggable_id | tagger_id | tagger_type | taggable_type | context | created_at          |
+----+--------+-------------+-----------+-------------+---------------+---------+---------------------+
|  1 |      1 |           4 |      NULL | NULL        | Issue         | tags    | 2011-08-15 15:10:28 |
|  2 |      2 |           4 |      NULL | NULL        | Issue         | tags    | 2011-08-15 15:10:28 |
|  3 |      2 |           3 |      NULL | NULL        | Issue         | tags    | 2011-08-15 15:16:22 |
+----+--------+-------------+-----------+-------------+---------------+---------+---------------------+
3 rows in set (0.00 sec)

That's a hell of a lot of data for three tags, far more than the alternative model in which we have a dedicated join table for each taggable type. That model would give us e.g. an issue_tags table containing something like

+----+----------+--------+
| id | issue_id | tag_id |
+----+----------+--------+
|  1 |        4 |      1 |
|  2 |        4 |      2 |
|  3 |        3 |      2 |
+----+----------+--------+

which is far smaller than the above, but which would require a separate table for each taggable type (i.e. statically limited set of taggables).

Also available in: Atom PDF