Ah, good point. I need to update the LayoutMetadataReaderUsingJson class to write out in the new format (ie equivalent to the @XxxLayout annotations). will try to do in the next day or so.
thx Dan On 6 January 2015 at 13:25, Erik de Hair <[email protected]> wrote: > My layout file has: > > "actions": { > ... > "runAs": { > "named": { > "value": "Run As" > }, > "actionLayout": { > "cssClass": "btn-warn", > "hidden": "EVERYWHERE" > } > }, > > But in the generated layout file the actionLayout part is gone: > > "actions": { > ... > "runAs": { > "named": { > "value": "Run As" > } > }, > > > On 01/05/2015 10:56 AM, Erik de Hair wrote: > >> Hi Dan, >> >> Is this compatible with Isis 1.7.0? The action isn't hidden and the >> css-class isn't rendered for the button after I add this to the layout-file. >> >> Erik >> >> n 12/05/2014 06:36 PM, Dan Haywood wrote: >> >>> now also documented on the website, see >>> http://isis.apache.org/more-advanced-topics/How-to- >>> suppress-contributions.html >>> . >>> >>> On 5 December 2014 at 14:09, Dan Haywood <[email protected]> >>> wrote: >>> >>> Bit of a delay on this, but anyway... the good news is that it IS >>>> possible >>>> to suppress a contributed action on one parameter but not another. >>>> >>>> I've updated the kitchen sink app [1] to show how >>>> >>>> In the "contrib" package there are three entities: >>>> * Person [2] >>>> * Preference [3] >>>> * FoodStuff [4] >>>> >>>> eg Mary LIKEs Apple, Mungo HATEs Banana, Midge LOVEs Oranges >>>> >>>> Neither Person nor FoodStuff knows about Preferences; the Preference is >>>> the tuple that associates the two together. >>>> >>>> The PreferenceContributions [5] service provides: >>>> * "likes" - contributed collection to Person >>>> * "firstLove" - contributed property to Person >>>> * "addPreference" - contributed action to both Person and FoodStuff >>>> - "removePreference" - contributed action to both Person and FoodStuff >>>> >>>> However, although "addPreference" and "removePreference" *are* >>>> contributed >>>> to all parameter types, this can be hidden using the .layout.json >>>> file. In >>>> FoodStuff,layout.json [6] we have: >>>> >>>> >>>> "actions": { >>>> ... >>>> "removePreference": { >>>> "actionLayout": { >>>> "cssClass": "btn-warn", >>>> "hidden": "EVERYWHERE" >>>> } >>>> } >>>> } >>>> >>>> which means that the "removePreference" action cannot be seen when >>>> viewing >>>> a FoodStuff entity. >>>> >>>> I'll add this stuff to our website for future reference. >>>> >>>> Cheers >>>> Dan >>>> >>>> >>>> [1] https://github.com/isisaddons/isis-app-kitchensink >>>> [2] >>>> https://github.com/isisaddons/isis-app-kitchensink/blob/ >>>> master/dom/src/main/java/org/isisaddons/app/kitchensink/ >>>> dom/contrib/contributee/Person.java#L41-41 >>>> [3] >>>> https://github.com/isisaddons/isis-app-kitchensink/blob/ >>>> master/dom/src/main/java/org/isisaddons/app/kitchensink/ >>>> dom/contrib/contributed/Preference.java#L42-42 >>>> [4] >>>> https://github.com/isisaddons/isis-app-kitchensink/blob/ >>>> master/dom/src/main/java/org/isisaddons/app/kitchensink/ >>>> dom/contrib/contributee/FoodStuff.java#L41-41 >>>> [5] >>>> https://github.com/isisaddons/isis-app-kitchensink/blob/ >>>> master/dom/src/main/java/org/isisaddons/app/kitchensink/ >>>> dom/contrib/contributed/PreferenceContributions.java#L31-31 >>>> [6] >>>> https://github.com/isisaddons/isis-app-kitchensink/blob/ >>>> master/dom/src/main/java/org/isisaddons/app/kitchensink/ >>>> dom/contrib/contributee/FoodStuff.layout.json#L57-57 >>>> >>>> >>>> >>>> https://github.com/isisaddons/isis-app-kitchensink/blob/ >>>> master/dom/src/main/java/org/isisaddons/app/kitchensink/ >>>> dom/contrib/contributed/PreferenceContributions.java#L62-62 >>>> >>>> On 19 November 2014 at 15:27, Jeroen van der Wal <[email protected]> >>>> wrote: >>>> >>>> As to your question if you prevent something being contributed on only >>>>> one >>>>> of the parameter classes: In the metamodel there's no way to specify >>>>> that >>>>> but you could try to hide the contribution in the layout.json file. >>>>> >>>>> something like >>>>> >>>>> "actions":{ >>>>> "yourAction": { >>>>> "hidden":{} >>>>> } >>>>> } >>>>> >>>>> or >>>>> >>>>> "actions":{ >>>>> "yourAction": { >>>>> "hidden":{"where":"ALWAYS" } >>>>> } >>>>> } >>>>> >>>>> Can you check if this works? >>>>> >>>>> On Wed, Nov 19, 2014 at 4:15 PM, Jeroen van der Wal < >>>>> [email protected]> >>>>> wrote: >>>>> >>>>> Hi Erik, >>>>>> >>>>>> You have to repeat the same parameters on the hideXxx method as the >>>>>> >>>>> method >>>>> >>>>>> that you're trying to hide. >>>>>> >>>>>> HTH >>>>>> >>>>>> On Wed, Nov 19, 2014 at 4:09 PM, Erik de Hair <[email protected]> wrote: >>>>>> >>>>>> Hi, >>>>>>> >>>>>>> The method in my entity class is as follows: >>>>>>> >>>>>>> public boolean hideAddPhoneNumbers(PortalCompany owningCompany, >>>>>>> AbstractArticle phoneNumberArticle, >>>>>>> PhoneNumberGrid gridNumber, >>>>>>> AbstractSelectableNumberElement >>>>>>> numberElement) >>>>>>> { >>>>>>> return true; >>>>>>> } >>>>>>> >>>>>>> I also tried >>>>>>> >>>>>>> public boolean hideAddPhoneNumbers() >>>>>>> { >>>>>>> return true; >>>>>>> } >>>>>>> >>>>>>> The signature of the method in the service is >>>>>>> >>>>>>> public FixedPhoneNumberSubscription addPhoneNumbers(PortalCompany >>>>>>> owningCompany, >>>>>>> AbstractArticle phoneNumberArticle, >>>>>>> PhoneNumberGrid gridNumber, >>>>>>> AbstractSelectableNumberElement numberElement) >>>>>>> >>>>>>> >>>>>>> Erik >>>>>>> >>>>>>> <mailto:[email protected]> >>>>>>> >>>>>>> On 11/19/2014 03:37 PM, Martin Grigorov wrote: >>>>>>> >>>>>>> Hi, >>>>>>>> >>>>>>>> On Wed, Nov 19, 2014 at 4:20 PM, Erik de Hair <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>> Hi Martin, >>>>>>>> >>>>>>>>> I think you need to add method hideXyz() as explained at >>>>>>>>> >>>>>>>>> http://isis.apache.org/how-tos/how-to-02-030-How-to-hide- >>>>>>>>>> an-action.html >>>>>>>>>> >>>>>>>>>> By adding a hide to the repository I can only hide it >>>>>>>>>> everywhere or >>>>>>>>>> >>>>>>>>> nowhere but I can't choose to pop up at certain entities only. At >>>>>>>>> least, I >>>>>>>>> don't know how to do that. >>>>>>>>> >>>>>>>>> When I add a hideXXX() to the entity where I want to hide the >>>>>>>>> action, >>>>>>>>> Isis >>>>>>>>> complains about an orphaned method because the method doesn't exist >>>>>>>>> >>>>>>>> at >>>>> >>>>>> the >>>>>>>>> entity itself. >>>>>>>>> >>>>>>>>> Please share the method's code. The log is misleading. Most >>>>>>>> probably >>>>>>>> >>>>>>> the >>>>> >>>>>> method signature is not correct. >>>>>>>> >>>>>>>> it should be : >>>>>>>> - public >>>>>>>> - returning boolean >>>>>>>> - the name should be hide[TheCamelCasedActionName](the, same, >>>>>>>> parameters, >>>>>>>> as, the, action, method) >>>>>>>> - the impl should use all available information to decide whether to >>>>>>>> return >>>>>>>> true or false >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Erik >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>> >> >> >
