Hi,
I'm trying to convert the Nivo Slider extension into a widget, because I don't like it to mix up page types just for something I'd like to use on multiple page types. The original Nivo Slider extension can be found here:
http://www.silverstripe.org/nivo-slider-silverstripe-extension-module/
Anyway, as can be seen in the attached screenshot, it all seems to work, except for the edit link of an item.
The edit link refers to
http://mylocalsite.com/item/1/edit?ctf[NivoSliderItems][start]=0&ctf[NivoSliderItems][per_page]=10&ctf[NivoSliderItems][showall]=0&ctf[NivoSliderItems][sort]=&ctf[NivoSliderItems][sort_dir]=&ctf[NivoSliderItems][search]=&ctf[NivoSliderItems][filter]=
And that link just doesn't work.
Is it possible at all to use the DataObjectManager in the widget area? Are there any examples out there?
Here's the relevant code for the widget
class NivoSliderWidget extends Widget {
static $db = array(
'effect' => "Enum('sliceDown,sliceDownLeft,sliceUp,sliceUpLeft,sliceUpDown,sliceUpDownLeft,fold,fade,random','random')",
...
);
static $has_many = array('NivoSliderItems' => 'NivoSliderItem');
public function getCMSFields() {
$f = new FieldSet(
new DropdownField('effect',"Effect", singleton('NivoSliderWidget')->dbObject('effect')->enumValues()),
...
new TextField('captionOpacity','Universal caption opacity 0-1'),
new TabSet("Tabs",
new Tab("Items",
new DataObjectManager($this, 'NivoSliderItems', 'NivoSliderItem', array(
'Thumbnail' => _t('Image.PLURALNAME'),
'Title' => _t('SiteTree.METATITLE'),
'Tagline' => _t('SiteTree.METADESC')),
'getCMSFields_forPopup'
)
)
)
);
return $f;
}
And the DataObject for the NivoSliderItem looks like:
class NivoSliderItem extends DataObject {
static $db = array (
'Title' => 'Text',
'Tagline' => 'Text'
);
static $has_one = array(
'NivoSliderWidget' => 'NivoSliderWidget',
'PanelImage' => 'Image',
'PanelLink' => 'SiteTree'
);
static $api_access = true;
public function getCMSFields_forPopup(){
$image=class_exists('ImageUploadField')?'ImageUploadField':'FileIFrameField';
$tree=class_exists('SimpleTreeDropdownField')?'SimpleTreeDropdownField':'HTMLDropdownField';
$imager=new $image('PanelImage',_t('Image.SINGULARNAME')." ...");
if($image=='ImageUploadField')$imager->uploadOnSubmit();
return new FieldSet(
new TextField('Title',_t('SiteTree.METATITLE')),
new TextField('Tagline',_t('SiteTree.METADESC')),
$imager,
new $tree("PanelLinkID",_t('RedirectorPage.REDIRECTTOPAGE'),"SiteTree")
);
}
....
Any idea's?
Btw, the item show is added manually to the database :)
Best regards,
Ronald