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.

Customising the CMS /

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

Create another inline button in modeladmin edit form


Go to End


1520 Views

Avatar
thomas.paulson

Community Member, 107 Posts

12 June 2014 at 5:05pm

Edited: 12/06/2014 5:07pm

I recently created product modeladmin as below, what i want is to show another inline button like 'Update URL' next to category dropdown on change event, please see the attached screenshot

class Product extends DataObject {

private static $db = array(
'URLSegment' => 'Varchar(100)',
'Title' => 'Varchar(255)',
'MetaTitle' => 'Varchar(255)',
'MetaDescription' => 'Varchar(255)',
'Content' => 'HTMLText',
"SortOrder" => "Int",
"Size" => "Text",
);

private static $defaults = array(
'Title'=>'New Item',
'URLSegment' => 'new-item'
);

private static $has_one = array(
'ProductCategory' => 'ProductCategory',
'Image1' => 'Image',
'Image2' => 'Image',
'Image3' => 'Image'
);

//The class of the page which will list this DataObject
//private static $listing_page_class = 'ProductCategory';
//Class Naming (optional but reccomended)
private static $singular_name = "Product";
private static $plural_name = "Products";

private static $default_sort = '"Title" ASC';

static $summary_fields = array(
"ProductThumbnail" => "Image",
"Title" => "Name",
"Size" => "Size",
'ProductCategory.Title' => 'Category'
);

/*
static $searchable_fields = array(
'Title',
'Size',
'Content'=> array('title' => 'Content'),
'ProductCategoryID' => array('title' => 'Product Category')
);
*/

static $field_labels = array(
'Title' => 'Product Name'
);

public function getCMSFields()
{
$fields = parent::getCMSFields();

/ /$fields->addFieldToTab('Root.Main', new TextField('Title','Name'));

//Remove Scafolded fields
$fields->removeFieldFromTab('Root.Main', 'URLSegment');
$fields->removeFieldFromTab('Root.Main', 'MetaTitle');
$fields->removeFieldFromTab('Root.Main', 'MetaDescription');

$fields->addFieldToTab('Root.Main', new TextField('Title'));

if($this->ID)
{
$urlsegment = new SiteTreeURLSegmentField("URLSegment", $this->fieldLabel('URLSegment'));
//$urlsegment->setURLPrefix($prefix);

$helpText = _t('SiteTreeURLSegmentField.HelpChars', ' Special characters are automatically converted or removed.');
$urlsegment->setHelpText($helpText);
$fields->addFieldToTab('Root.Main', $urlsegment);
}

$fields->addFieldToTab('Root.Main', new HTMLEditorField('Content'));

$fields->addFieldToTab('Root.Main',new ToggleCompositeField('Metadata', 'Metadata',
array(
new TextField("MetaTitle", $this->fieldLabel('MetaTitle')),
new TextareaField("MetaDescription", $this->fieldLabel('MetaDescription'))
)
));

$fields->removeFieldFromTab("Root.Main","ProductCategoryID");

$fields->addFieldsToTab('Root.Main', array(
DropdownField::create('ProductCategoryID', _t("Product.CATEGORY", "Category"), $this->categoryoptions())
,
), 'Content');

$fields->addFieldToTab('Root.ProductImages', $uploadField = new UploadField('Image1','Main Product Image'));
$uploadField->setFolderName('Products/'.$this->URLSegment);
$fields->addFieldToTab('Root.ProductImages', $uploadField = new UploadField('Image2','Second Product Image'));
$uploadField->setFolderName('Products/'.$this->URLSegment);
$fields->addFieldToTab('Root.ProductImages', $uploadField = new UploadField('Image3','Third Product Image'));
$uploadField->setFolderName('Products/'.$this->URLSegment);
//$uploadField->setConfig('fileEditFields', 'priorityField');
//$uploadField->FolderName = 'Uploads/'.'member-photos/'.($this->Title);
$fields->addFieldToTab('Root.Main', new TextField('Size'));

$fields->removeFieldsFromTab('Root.Main', array('SortOrder'));

return $fields;
}

public function getProductThumbnail() {
if ($Image = $this->Image1()->ID) {
return $this->Image1()->SetWidth(100);
} else {
return '(No Image)';
}
}
/**
* Helper function for generating list of categories to select from.
* @return array categories
*/
private function categoryoptions() {
$categories = ProductCategory::get()->map('ID', 'NestedTitle')->toArray();
$categories = array(
0 => _t("SiteTree.PARENTTYPE_ROOT", "Top-level page")
) + $categories;

return $categories;
}

}

Attached Files