Thanks, Dan. I'll give it a try.

Erik


On 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 <d...@haywood-associates.co.uk>
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 <jer...@stromboli.it>
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 <jer...@stromboli.it>
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 <e...@pocos.nl> 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:serviced...@pocos.nl>

On 11/19/2014 03:37 PM, Martin Grigorov wrote:

Hi,

On Wed, Nov 19, 2014 at 4:20 PM, Erik de Hair <e...@pocos.nl> 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







Reply via email to