I had some misunderstanding about how the Campaign features work. Evidently, only files or pages and their “owned” objects can be added to a campaign. I wanted to be able to add files and/or versioned DataObjects to a specific campaign, so that they could be aggregated and published all at once. A specific example is product DataObjects which are controlled by gridfields on multiple pages, but when I create specific groups of new products, it would be preferable to publish that group all at once, regardless of its page affiliation. An issue has been raised to address this, (“Add to campaign” on versioned GridFields · Issue #89 · silverstripe/silverstripe-campaign-admin · GitHub) but I’m not sure it’s a high priority for anyone besides me.
Thanks for the feedback. I’ve just changed the impact level on this ticket from “medium” to “high”, since - as you describe - it’s a pretty crucial part of making campaigns useful. This means you can expect it to be worked on in the next few months by a team here at SilverStripe. Contributions are welcome of course, GridField is pretty extensible in that way. If you need any pointers to get started, check out the “betterbuttons” module.