7913 Posts in 1355 Topics by 930 members
DataObjectManager Module
SilverStripe Forums » DataObjectManager Module » I can add objects to DOM, but not edit them
Discuss the DataObjectManager module, and the related ImageGallery module.
Moderators: martimiz, UncleCheese, Howard, Sean, Ryan M., biapar, Willr, Ingo, swaiba, simon_w
|
Page:
1
|
Go to End | |
| Author | Topic: | 740 Views |
-
I can add objects to DOM, but not edit them

11 January 2011 at 5:35am
Here is my DOM:
class VideoHolder extends Page {
static $has_many = array(
'VideoObjects' => 'VideoObject'
);public function getCMSFields()
{
$fields = parent::getCMSFields();
$datamanager = new DataObjectManager(
$this, // Controller
'VideoObjects', // Source name
'VideoObject', // Source class
array(
'Category' => 'Category',
'Description' => 'Description',
'YouTubeLink' => 'YouTubeLink',
'URLSegment' => 'URLSegment'
), // Headings
'getCMSFields_forPopup'// Detail fields (function name or FieldSet object)
// Filter clause
// Sort clause
// Join clause
);
//$datamanager->setPopupWidth('675');$fields->addFieldToTab("Root.Content.Videos",$datamanager);
return $fields;
}}
and my DataObject:
class VideoObject extends DataObject {
static $db = array (
'Category' => "Enum('Auto Load and Unload, Cappers, DeCappers, Fillers, Leak Detection, Robotics, Washers', 'Auto Load and Unload')",
'Description' => 'Varchar(255)',
'YouTubeLink' => 'Varchar(255)',
'ShortCode' => 'HTMLText',
'URLSegment' => 'Varchar(255)'
);static $has_one = array(
'VideoHolder' => 'VideoHolder'
);public function getCMSFields_forPopup()
{
return new FieldSet(
new DropdownField(
$name = "Category",
$title = "Video Category",
$source = singleton('VideoObject')->dbObject('Category')->enumValues()
),
new TextField('Description','Description (text appears in link)'),
new TextField('YouTubeLink','URL of YouTube Page')
);
}public function onBeforeWrite()
{
if($this->Description){
$this->URLSegment = SiteTree::GenerateURLSegment($this->Description);
if($object = DataObject::get_one($this->ClassName, "URLSegment='" .$this->URLSegment
."' AND ID !=".$this->ID)){
$this->URLSegment = $this->URLSegment.'-'.$this->ID;
}
// else {
//$this->URLSegment = SiteTree::GenerateURLSegment($this->ClassName.'-'.$this->ID);
//}
}
if($this->YouTubeLink){
$this->ShortCode = '[YouTube id="'.substr($this->YouTubeLink,strpos($this->YouTubeLink,"watch?v=")+8,strlen($this->YouTubeLink)).'"]';
}parent::onBeforeWrite();
}function ShowActionLink(){
if($this->VideoHolder()){
return $this->VideoHolder()->Link().'show/'.$this->URLSegment;
}
}}
If the environment type is 'dev' I get a notice in the popup:
[Notice] Undefined index: start
GET /admin/EditForm/field/VideoObjects/item/1?SecurityID=11197/edit?ctf[VideoObjects][start]=0&ctf[VideoObjects][per_page]=10&ctf[VideoObjects][showall]=0&ctf[VideoObjects][sort]=&ctf[VideoObjects][sort_dir]=&ctf[VideoObjects][search]=&ctf[VideoObjects][filter]=Line 139 in C:\website\cs\dataobject_manager\code\DataObjectManager.php
If environment type is not 'dev' I get the pop up, but the fields are not editable.
TIA
Luke
-
Re: I can add objects to DOM, but not edit them

25 February 2011 at 9:08pm Last edited: 27 February 2011 6:19am
I'm having this same problem again (can add but not edit) with a new error. This is a totally different install, different site, different everything actually. This time the Error is an SQL error:
"Couldn't run query: SELECT "StaffMember"."ClassName", "StaffMember"."Created", "StaffMember"."LastEdited", "StaffMember"."Name", "StaffMember"."Title", "StaffMember"."Bio", "StaffMember"."StaffMemberPageID", "StaffMember"."PhotoID", "StaffMember"."ID", CASE WHEN "StaffMember"."ClassName" IS NOT NULL THEN "StaffMember"."ClassName" ELSE 'StaffMember' END AS "RecordClassName" FROM "StaffMember" WHERE ("ParentID" = '2') Unknown column 'ParentID' in 'where clause'"Anyone have ideas? I'm pretty sure the last time i fixed this by updating to a new verstion of DOM iirc. I'm now using r540, but no joy.
code below:class StaffMemberPage extends Page{
static $has_many=array(
'StaffMembers'=>'StaffMember'
);
public function getCMSFields(){
$fields=parent::getCMSFields();
$manager = new DataObjectManager(
$this,
'StaffMembers',
'StaffMember',
array(
'Thumbnail' => 'Photo',
'Name'=>'Name',
'Title'=>'Title'
),
'getCMSFields_forPopup'
);
$fields->addFieldToTab('Root.Content.Staff',$manager);
return $fields;
}class StaffMember extends DataObject{
static $db = array(
'Name' => 'Text',
'Title' => 'Text',
'Biography' => 'HTMLText'
);
static $has_one = array(
'StaffMemberPage' => 'StaffMember',
'Photo' => 'Image'
);
public function getCMSFields_forPopup(){
$imageUploadField = new ImageUploadField(
'Photo',
'Photo to add:',
array(
'buttonText' => 'Upload an image'
)
);
$imageUploadField->setuploadFolder('Images/StaffMembers');
$imageUploadField->allowFolderSelection = false;
return new FieldSet(
$imageUploadField,
new TextField('Name', 'Name:'),
new TextField('Title', 'Title:'),
new SimpleTinyMCEField('Biography','Biography')
);
}
function Thumbnail(){
$Photo = $this->Photo();
if($Photo){
return $Photo->CMSThumbnail();
}
else{
return null;
}
}Also (and this may be part of the problem) my SimpleTinyMCEField looks like a SimpleHTMLEditorField--no toolbar with buttons etc.
Thanks! -
Re: I can add objects to DOM, but not edit them

26 February 2011 at 3:52am
Mmm... do you see something wrong here?
static $has_one = array(
'StaffMemberPage' => 'StaffMember',
'Photo' => 'Image'
); -
Re: I can add objects to DOM, but not edit them

27 February 2011 at 5:43am Last edited: 27 February 2011 6:10am
OBVIOUSLY! I guess thats what happens when you stay up way too late writing code.
My DOM is functional now, but the SimpleTinyMCEField still has no buttons. I'm getting a JS error in firebug that points to '$(function(){' in this script:
<script type="text/javascript">//<![CDATA[
$(function() {
$('#DataObjectManager_Popup_AddForm_Biography').tinymce({
plugins : 'safari,paste',
theme : 'advanced',
theme_advanced_buttons1 : 'bold,italic,underline,|,justifyleft,justifycenter,justifyright,|,styleselect,formatselect',theme_advanced_buttons2 : 'cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,link,unlink,anchor,image,|,code',theme_advanced_buttons3 : '',theme_advanced_buttons4 : '',
theme_advanced_toolbar_location : 'top',
theme_advanced_toolbar_align : 'left',
theme_advanced_statusbar_location : 'bottom',
theme_advanced_resizing : false,
paste_auto_cleanup_on_paste : true,
paste_remove_spans: true,
paste_remove_styles: true,
content_css : ''
});
});//]]></script>
Nothing jumps out at me immediately here except that it mentions 'safari' and I'm using firefox. It is on a mac though.
Any ideas? Thanks! -
Re: I can add objects to DOM, but not edit them

14 March 2011 at 11:56pm
Hi,
I've got a similar issue with editing existing data objects.
I am using it for a number of things, incuding testimonials - very similar to the tutorial here: http://doc.silverstripe.org/old/modules:dataobjectmanager
Bizarrely, if I have more than one, I can use the prev/next buttons and edit the content in the popup fine. However, I can't edit the first 1 I click on. Any ideas?
class Testimonial extends DataObject
{
static $db = array (
'Quote' => 'Text',
'Author' => 'Text'
);
static $has_one = array (
'Page' => 'Page'
);
public function getCMSFields_forPopup()
{
return new FieldSet(
new TextField('Quote', "Quote (no punctuation)"),
new TextField('Author', "Author name")
);
}
}It's probably not best pratice, but I am extending my page class as I need to be able to add testimonials in across the site:
class Page extends SiteTree {
...static $has_many = array (
'Testimonials' => 'Testimonial'
);...
$TestimonialDataManager = new DataObjectManager(
$this, // Controller
'Testimonials', // Source name
'Testimonial', // Source class
array(
"Quote" => "Quote",
"Author" => "Author name"
), // Headings
'getCMSFields_forPopup' // Detail fields function or FieldSet
// Filter clause
// Sort clause
// Join clause
);
$fields->addFieldToTab("Root.Content.Testimonials", $TestimonialDataManager);I can add them and get them to display fine - just the editing is not quite working as it should...
Thanks in advance.
-
Re: I can add objects to DOM, but not edit them

15 March 2011 at 3:04am
I think I have tracked the issue down - it looks like it might be related to the SecureFiles module. The link in the edit buttons - and this is the same in the Files & Images section - is not correct:
/admin/EditForm/field/Testimonials/item/8?SecurityID=e26aa5351da9fe08e317cd0e6c681fef66f3c2e4/edit?ctf[Testimonials][start]=0&ctf[Testimonials]
For some reason it is adding the security ID element of the querystring in the wrong place.
Not sure how to fix it still
-
Re: I can add objects to DOM, but not edit them

15 March 2011 at 4:11am
FIXED!
It was after all an issue with the DataObjectManager. I saw this thread on Uncle Cheese's site:
But actually saw that the latest version of DOM fixed it anyway. Installed that and all sorted...
| 740 Views | ||
|
Page:
1
|
Go to Top |


