In our Craft Pro site we've enabled public registrations and allow anyone to create an account and make entries in a "blog" channel. These entries are then filtered via URL segments - so /blog/ will show a listing of entries by each user. A user can create different entry types (video/audio/text/etc) which are handled by different templates.
I'm trying to add the ability for a user to "reblog" or "repost" another user's entry - I'm not sure of the best way to do that though. The ideas I've had are:
- Create a new entry type (reblog), with a field that stores a reference to the original entry ID and allows the user to add a comment
- Use a custom plugin to create an entry as above
- Clone the original entry data into a new entry and allow the user to edit it
- Create a new channel for reblogs which the user doesn't have permission to post to via the CP, and try to hack around that using a plugin and frontend forms
My issue is that, for usability reasons, I'd very much prefer to hide the original entry ID reference field (if this is handled through the CP) but I don't know if that's possible? We're relying entirely on the CP for creating entries at the moment, so it'd be a bit clunky if we moved the handling of reposts to a separate section of the site.
Also if I simply reference the original entry ID in a field, while it would be cleaner than cloning the original entry's content (assets/etc) and creating a new post for the current user, I'll most likely still have to create a new entry type (reblog) to house the new post, which would then appear in the "Entry Type" dropdown when accessing the create entry page, which would be pretty confusing to the end user, unless I made the original entry ID some kind of custom FieldType with a live-search sort of feature?
I'm beginning to think that perhaps the best way is to handle this through a plugin / frontend form, but that feels super hacky.
Any suggestions on how best to approach this issue? I'm totally open to any and all ideas!