I am looking for a way to fix the number of items of a ComplexTableField within the CMS. I.e. I have a page thas has_many pages as teasers, and i want the authors to set exactly (or at least not more than) 5 teasers. I checked the reference but found no thing like $TeaserTable->maxItems = 5. Is there anything like this?
As workaround, I tried to modify the authors user rights so they can't add or delete any items. (So the admin could set 5 of them and the the authors could change them, but not change their numbers). I added
public function canDelete($Member = null)
to the Teaser Object, this worked. But
public function canAdd($Member = null)
shows no impact on the bottom 'Add Teaser' line of the table overview.
Shouldn't you use canCreate() instead of canAdd()?
Just thinking: you could maybe subclass the ComplexTableField, then create a public method that sets the $permissions array (that is default set to add, edit, show, delete). See what that does?
Would be nice if you could make it dynamic and test the number of items... But then I don't know if the add button would be updated when the complextablefield is reloaded in the cms after adding/removing an item...
Ah - I was looking for that method and just couldn't find it... That's why I came up with the vague idea to extend the class to create it. Guess I should have taken the time to read it four times as well :-(