Publish controls the online/offline status of records. It generalizes publishing using 3 main modules:
Status: to flag a record be online/offline
Schedule: to schedule records to be online/offline automatically
Version: to allow a record to have more than one copies and chain them together
Inject modules to the resource model.
Implement primary slug interfaces for passing the values of primary keys between events
Create publisher and configure Publish view for model, and remember to display Status and Schedule fields in Editing
Implement the publish interfaces if there is a need to publish content to storage(filesystem, AWS S3, ...)
Status module stores the status of the record.
The initial status is draft, after publishing it becomes online, and after unpublishing it becomes offline.
Schedule module schedules records to be online/offline automatically with the publisher job.
If a record has
ScheduledStartAt set, and the current time is larger than this value, the record will be published and the
ActualStartAt will be set to the actual published time, the
ScheduledStartAt will be cleared.
If a record has
ScheduledEndAt set, and the current time is larger than this value, the record will be unpublished and the
ActualEndAt will be set to the actual unpublished time, the
ScheduledEndAt will be cleared.
Version module allows one record to have multiple copies, with Schedule, you can even schedule different prices of a product for a whole year.
Version will be the primary key. By default, the
Version value will be
2006-01-02-v01. And you can rename a version on interface, which will modify the value of
List module publishes list page of resource.