Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

DataObjectManager Module /

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, Ed, biapar, Willr, Ingo, swaiba

ImageDataObjectManager Stage/Live and versions


Go to End


4 Posts   1540 Views

Avatar
T-Muns

Community Member, 8 Posts

10 June 2011 at 7:43am

Edited: 10/06/2011 7:44am

I'm creating a site where the home page has rotating billboard images in the main area. I'm using the ImageDataObjectManager with this type of approach: http://silverstripe.org/customising-the-cms/show/10890#post279361

So it creates a tab for the rotating images where the user can select from the Files & Images section or upload directly.

It's working well but when you save, it takes it live right away. It also doesn't insert into the page history so you can't tell (from the cms) that a change was made and/or who made the change.

I am new to SS but am learning. Can anyone point me in the right direction to get this working? Thanks!

Avatar
T-Muns

Community Member, 8 Posts

11 June 2011 at 2:04am

I don't know if this is a good idea, but I'm considering storing blocks of dynamic content data in text columns of the table. For example, if I have a class that inherits Page and have custom fields. It seems like I could just create a custom DataObject that would json_encode/decode an object/array, etc and store it in the text field. I don't foresee any efficiency issues with this. Possibly a little extra cpu overhead in the encode/decode process but static pages would reduce this considerably.

In this case with the ImageDataObjectManager, could I basically leave it as-is and just add the logic to serialize the data into a normal text column so it would work with versions and history? In essence, you would be redundantly storing the data in a packaged format. Otherwise, I guess you could modify the DOM to be able to have the option to store data like this, which is probably a better idea.

The idea is that you click a version in the typical page history and it loads the main content and any other custom tabs that contain dynamic data.

Seems like a shortcut, but it would utilize the stage/live versions and history that is already in place. Versions and history on a lot of dynamic data seems like a lot to manage if you have to write version logic for every piece. I don't think I would want a Diff for this so I'd probably disable it.

Any thoughts appreciated

Avatar
UncleCheese

Forum Moderator, 4102 Posts

11 June 2011 at 3:22am

Only SiteTree objects get the Versioned decorator by default. You can apply the decorator manually to your DataObject subclasses, but it's up to you to create the UI to browse the history, apply rollbacks, etc.

There's a good example in the UserForms module of managing published state of DataObjects from within the holder page. You basically just use the doPublish(), doDeleteFromStage(), etc. hooks to alter the versions of your DataObjects.

https://github.com/silverstripe/silverstripe-userforms/blob/master/code/UserDefinedForm.php

--------------------
SilverStripe tips, tutorials, screencasts and more: http://www.leftandmain.com

Avatar
T-Muns

Community Member, 8 Posts

11 June 2011 at 3:36am

Thanks for the response. I eventually found another one of your posts showing the UserForms example. Instead of a separate UI to browse history, etc, why not use the Page Version History UI that is already there? Couldn't I just have it save versions of the DataObjects anytime the main content is saved and vice versa? Same with loading previous versions...load the dynamic data as well?