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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

ADDING NEW TAB IN CMS


Go to End
Reply


2 Posts   3292 Views

Avatar
servalman

Community Member, 211 Posts

4 July 2010 at 6:19am

Edited: 04/07/2010 6:22am

Hello

Here is my problem :

I have a DataObject (Product) that adds a new product Tab in the backend (that is workin fine) but I also need to add another tab ActifsProduct in the Backend to take advantage of tyne mce wysiwyg and style functions.

I tried to it following the tutorial and it created some table field.

What I can't do is adding the tab to the backend codes below (in bold the lines I added to create my new tyni MCE tab:

if someone could help me it would be great

Product.php (the DataObject)

<?
class Product extends DataObject
{
	static $db = array (
		'Productname' => 'Text',
		'Imagename' => 'Text',
		'Presentation' => 'Text',
		'Contenance' => 'Text',
		'Actifs' => 'Text',
		'Price' => 'Text'
	);
 
	static $has_one = array (
		'ProductPage' => 'ProductPage'
	);
 
	public function getCMSFields_forPopup()
	{
		return new FieldSet(
			new TextField('Productname'),
			new TextField('Imagename'),
			new TextField('Presentation'),
			new TextField('Contenance'),
			new TextField('Actifs'),
			new TextField('Price')
			//new TextareaField('Quote')
			

		);
	}

	public function Link() {
return $this->ProductPage()->Link("show/$this->ID");
}

public function FlashVar() {
return "myFlashVar=$this->Imagename";
} 

}

and ProductPage.php (this where I guess I create new cms tabs)

<?
class ProductPage extends SiteTree
{
	static $has_many = array (
		'Products' => 'Product'
	);

	   static $db = array(
	  
      'ActifsProduct' => 'HTMLText'
	  
   );
 
	public function getCMSFields()
	{
		$f = parent::getCMSFields();
		$f->addFieldToTab("Root.Content.Products", new DataObjectManager(
			$this,
			'Products',
			'Product',
			array('Productname'=>'Productname','Imagename'=>'Imagename','Presentation' => 'Presentation','Contenance' => 'Contenance','Actifs' => 'Actifs','Price' => 'Price'),
			'getCMSFields_forPopup'
		
		));
		
		return $f;
	
	 $fields = parent::getCMSFields();
 
      
      $fields->addFieldToTab('Root.Content.Main', new HtmlEditorField('ActifsProduct'), 'Content');
 
      return $fields;
	}


 
}






	class ProductPage_Controller extends Page_Controller
{


public function index() {
return Director::redirect($this->Products()->First()->Link());
}


static $allowed_actions = array (
'show'
);
public function show() {
return array (
'Product' => DataObject::get_by_id("Product",$this->urlParams['ID'])

);
}
}

Thank you

Avatar
Willr

Forum Moderator, 5521 Posts

4 July 2010 at 11:40am

Edited: 04/07/2010 11:41am

Your getCMSFields is returning a result before it even gets to your code... and you also don't need to call parent::getCMSFields() twice.

public function getCMSFields() { 
      $f = parent::getCMSFields(); 
$f->addFieldToTab("Root.Content.Products", new DataObjectManager( 
         $this, 
         'Products', 
         'Product', 
         array('Productname'=>'Productname','Imagename'=>'Imagename','Presentation' => 'Presentation','Contenance' => 'Contenance','Actifs' => 'Actifs','Price' => 'Price'), 
         'getCMSFields_forPopup' 
       
      )); 

$f->addFieldToTab('Root.Content.ActifsProduct', new HtmlEditorField('ActifsProduct'));

return $fields; 
   }