I've got some major revisions to tagadelic in my sandbox. These include

New features

  • Weighted node tagging: Currently the tag cloud can show weights corresponding to how many nodes are placed under a specific term. Weighted node tagging shows a tag cloud with weights corresponding to how many users have tagged this node with a specific term. So if 20 users tag a node 'funny', the tag cloud shows it larger. See http://podcasts.yahoo.com/series?s=bb9bd351bc27e4ec039d10dfe3a74a2f for an example.
  • Quick tag form: Adds an optional quick tag form to a full node view page. See http://podcasts.yahoo.com/series?s=bb9bd351bc27e4ec039d10dfe3a74a2f for an example.
  • User tags: You can now set a vocabulary to be a user tags vocab which means that users only see what they have tagged a node with.

To Do

  1. New block for "what this user has tagged other nodes with" like http://flickr.com/photos/pezclown/tags/.
  2. Currenlty, anonymous users cannot delete tags. Implement ability to delete anonymous node tags.
  3. Multiple selection like tagadelic/term/34+16, etc. works now if all terms are tags. If you add a term from another vocabulary that is not user tagging, it won't work.
  4. Test with multiple vocabularies of different types (user tags, non-user tags, non-free tagging).
  5. More testing all around! Once this is testing and the code is looking good, I'll submit a patch.

Ber, I know you said you want to keep tagadelic table-less, but I would hate to put this functionality in another module. This still needs a lot of work, but I'd like to work with you to make this solid so you'll feel good about (hopefully) putting this in to tagadelic. A lot of people have posted about this and have contributed to this work. Let me know what you think.

Comments

RobRoy’s picture

NOTE: The tagadelic module in my sandbox is not stable and severe data loss could occur if you use it! I've tested it out quite a bit, but it is definitely still in beta so beware. I would love some feedback though!

admincyma’s picture

Having just completed a hack to support 3., I am willing to give your code a whirl, but cannot find your sandbox? Yes I'm a n00b :-)

RobRoy’s picture

You can browse the files at http://cvs.drupal.org/viewcvs/drupal/contributions/sandbox/robroy/tagade... or download them with a program like TortoiseCVS.

Bèr Kessels’s picture

Robroy.

It is great to see new features and overhauls. However, make them SMALL.

Also note that you are mixing functionality into tagadelic wich **clearly** does not belong there. Since I like to keep the "mandate" for a module clean, lean and small, we need to discuss whether or not some of you features actually belong in other modules instead.

* user-tags: Great. Sounds like a very nice feature. As long as we can keep it extremely clean and clear on the front-end, that is. We must treat node and user tags as similar items. A node-based tagadelic with a bolted-on user-tag feature is not an option. Both must be consistent, clean and use similar APIs.

* Quick tag form. This does not belong in tagadelic. Sorry, however great and usefull the feature may be, this is about *adding* tags. Adding tags is the task of taxonomy module, categories module or any third-party taxonomy_addition.module. Tagadelic is about displaying, viewing and rendering tags.

* User tags. This is introducing new functionality to both taxonomy and tagadelic. Even more then the QTform this should be in an external module. Tagadelic is not about introducing new taxonomy-concepts, it is about displaying tag clouds.

Bèr Kessels’s picture

sorry: the first bullet, named "user-tagging" should read "Weighted node tagging".

Bèr Kessels’s picture

Let me be a little clearer, and lets com up with a battle plan.

By no means do I say "no this is not an option".

* I am very willing to add hooks, APIs or other means to let other modules introduce new tag cloud concepts. We could even ship some of the modules as a bundle or so. Lets see what suits best.
* I prefer to keep things simple. This does not mean that I dislike new features, I just hate frankenstein-modules. Modules that do all sorts of stuff, with inconsistent UIs and inconsistent APIs. That is not only unmaintainable, but it is very hard to "market".
* I prefer to make one-module-per-task. This, however, does not mean that modules should not talk to eachother, on the contrary! It is just that I much prefer a user_tags.module, with a hook and integration in tagadelic, then have this feature baked in hard. I hope you can understand that philosophy. If you look at how links (bundle) does it: that is how I love a module. Simple. modular. Feature-free by default. By adding/installing modules you add/install new features. Rather then a huge monolithical system that forces all sorts of features into your site that you never wanted. By making it separate project/modules/files you can still serve the blogger (who wants a simple tag cloud) but also some user-tagging system or a complex huge community site with community tagging.

Hence I'd like to see if it is possible to split up all your features into several (seven, eight) small chunks, so that we can introduce them in tagadelic one by one.
Bèr

RobRoy’s picture

I am very willing to add hooks, APIs or other means to let other modules introduce new tag cloud concepts. We could even ship some of the modules as a bundle or so. Lets see what suits best.

I've been thinking about this and tend to agree. I would prefer to bundle them like aggregator2 or links does since they are so related, but give users the option to enable/disable. I'm imagining two additional modules, one for weighted node tagging/quick tag form since they are inseperable IMO and one for user tags which doesn't *need* the quick tag form, but it is nice to have.

Hence I'd like to see if it is possible to split up all your features into several (seven, eight) small chunks, so that we can introduce them in tagadelic one by one.

I agree, that's why I'd like your input. What do you imagine would constitute seven or eight small chunks? If I split this functionality into separate modules, we'll need to change _tagadelic_get_weighted_tags() as an API function so we can use the same function to calculate weights. And, similarly we'll need the tag cloud display function to work with the other modules but I think those are pretty much already there.

I'm trying to image any hooks needing to be added to tagadelic, but think that hook_nodeapi() and hook_taxonomy() already take care of this. We'll just need to ensure that our module is weighted correctly (which I already do in there).

So tagadelic_node_tags.module and tagadelic_user_tags.module? Thoughts?

Bèr Kessels’s picture

From what I can see that needs to be done, here is a first step:

1. rewrite the tag creation and tag visualisation to use APIS: get_weighted_tags_by_nodes() (later we add get_weighted_tags_by_user(), get_weighted_tags_by_comments() etc.), theme_weighted_tags() (render the HTML for a cloud), theme_tagadelic_page() (render the HTML for a page). These apis need well designed parameters and return structures.

Then, I think you should start two new modules, user_tags and quick_taxonomy_form.

From there on, we can improve the tagadelic itself and add an option to weight tags based on other parameters then only nodes.

Bèr

Boris Mann’s picture

RobRoy, looks like great work.

Ber I think wants to keep this for tag display (and perhaps analysis). I also think that this would be better done as a separate module. Also, I happen to know that http://www.knosos.be is going to be releasing some code at DrupalCon that implements usertagging.

I've also contacted you via email, as I know of one other group that is very interested in having this as a robust functionality.

patchak’s picture

Any news here about the 'user tags' project??

Thanks

monkeythug’s picture

Hi,

I've also been playing around with these enhancements and I'd be willing to help out if help is needed.

One thing that has occurred to me is that "user tags" seems to be just Access Control under another name. I'm trying to determine if the same sort of functionality can be done with TAC-lite or maybe Category module + Nodeaccess. What do other people think about this approach?

Cheers, David.

webchick’s picture

Hey all. I've taken RobRoy's work and made a project called "Community Tags" to handle the user tagging portion. Please feel free to lend a hand!

Project page: http://drupal.org/project/community_tags
Issue queue: http://drupal.org/project/issues/community_tags
Code: http://cvs.drupal.org/viewcvs/drupal/contributions/modules/community_tags/
Commit messages: http://drupal.org/project/cvs/90368

Bèr Kessels’s picture

Status: Active » Closed (works as designed)

This issue moved. Closing this.