I'm looking for a solution to build an offer system relatively similar to upwork:

  • Offer system (fieldable) attached to a Node.
  • User can make only 1 offer per node.
  • User can only view his own offer and its replies by the node author.
  • Node author can view all offers and can accept, reply, and reject.

I tried to do it with the comments system but it wasn't as flexible as I thought.

Any suggestions?


You might want to start from the Answers module. Here are some details about it (from its project page):

Answers enables the implementation of a Question & Answer system in a Drupal site. Users can post questions and other users can answer them.

Head over to its project page for more details.

The question would be about something being searched for (wanted, aka the demand), like goods, properties or services for sale or for rent. And the answer(s) consists of one of more possible offers (the fullfilment of the request in the demand). Variation of this are Classified Ads or Auctions.

At its core, this module exists of 2 typical content types:

  • Question.
  • Answers.

The Answers module comes with integrations with other modules such as the Rules module and the Userpoints module (and supports voting, which in this use case may not be needed, unless you want users that evaluate offers to use it).

I see these enhancements you'd have to do to fit your requirements:

  • If you'd add the Content Access module you should be able to tune its permission to fit your needs.
  • To enforce your "User can make only 1 offer per node" requirement, you could use the Rules module to create a custom rule for that.

To be complete:

  • Since Questions and Answers are just nodes, "(fieldable) attached to such node" is just out-of-the-box.
  • You can use the "Best Answer" submodule for implementing "Node author can accept". And you could make the Rules module trigger all sorts of subsequent things to happen "when an answer gets marked as best answer".
  • Posting replies is just standard "node comments", but you may also want to use the "subscribe" feature (based on the "message stack").
  • The "Reject" feature could be as simple as an extra flag implemented via the Flag module (which is a dependency of the Answers module already).

To decide between the 7.x-3.2 and the 7.x-4.0-rc2 release, I would recommend the 7.x-4.0-rc2 (which also has the shiny new theming stuff ...). Even though it is not yet an official release, it is fairly stable/functional, and only has a few more minor glitches to be resolved. Pretty soon an rc-3 (the last 'rc' release?) should become available also, which will include the newest features as you can see in the demo site already. More important: if you're just starting with the module, you won't have to "migrate" from 3.x in the future (some type of migration will be needed, which is still an open issue for now).

Disclosure: I'm a (co-)maintainer of this module.


Not the answer you're looking for? Browse other questions tagged or ask your own question.