Hopefully this makes it more clear.
Indeed it makes it more clear :)

Can you change the mock up to add two separate lists for contains and must not contain?
I'm sending a different interaction proposal. If we add two lists, we need two Add buttons to specify in which list are you adding a item or if we keep a button, we need to have one more step (drop down) to specify in which list to add the item.
Considering that the user needs to fill at least one contains condition, I put an initial input inviting him to fill it. Once he press enter, the input becomes a element that can be removed by clicking in the "x". This way I think we have a much faster and easier interaction. I'm just not sure how many conditions will we have. I expect to have one line of conditions for each type but having two lines would not be a problem.

So if we have a match for anything in the contains list, and we don't
have a match for anything in the 'does-not-contains' list, then the
condition for user agent strings is true. 
I tried to make it evident by presenting the following message in the initial state: "At least one element for the redirection to happen." and by labeling the second line as "and does not contain".

If you want to do something like direct for every User-Agent except if
it contains abc, then you would add '*' to contains (regex to match
everything) and add 'abc' to does-not-contain.
The does-not-contain list can be empty.
This requires some high IT knowledge. So just to be sure, the person who will set it up is a Admin, a IT guy? Does he already knows that (*) means like "all"? Should not we use another notation, like work "all" or something like that?

For device properties, if the list is empty then it means we are not
checking any device properties, and the device property check will
return true. When creating a new condition, this list should be empty.
It would be nice if for an empty list we have an entry in the table
saying something like 'No Device Properties specified. Device Properties
are not being checked'.
That's a good idea that I borrowed to apply in the "contains" condition too.

Thoughts?

Gabriel

 



On Apr 12, 2012, at 5:22 PM, Matt Wringe wrote:

cc'ing back in the gatein-dev list, you should usually use
'reply-all' (or reply-to-list) so that the list gets added. It's usually
best to discuss things on the list so that the whole group can comment.

On Thu, 2012-04-12 at 15:41 -0300, Gabriel Cardoso wrote:
Hi Matt.
Would that work? Just adding the words OR and AND before the specs?
Thanks

No, not exactly (but its my fault its confusing and I should have
specified two separate lists from the original mockups). Can you change
the mock up to add two separate lists for contains and must not contain?

Really what is comes down to is:

Contains:
   foo
or  bar
or  ...

Must Not Contain:
   abc
or  xyz
or  ...

So if we have a match for anything in the contains list, and we don't
have a match for anything in the 'does-not-contains' list, then the
condition for user agent strings is true. Its the same thing as a white
list and a black list.

For example, using the above configuration

User-Agent: fasdfl asdf asdf asdf foo asdf asdf a dsf
-> is true because it contains foo _and_ does not contain abc and xyz

User-Agent: fasdfl asdf asdf asdf foo abc asdf asdf a dsf
-> is false, even though it contains foo, because it contains abc it
fails

User-Agent: fasdfl asdf asdf asdf asdf asdf a dsf
-> is false, there is no match on a contains

User-Agent: fasdfl asdf abc asdf asdf asdf asdf a dsf
-> is false, it contains abc which is in the does-not-contain list (and
it also doesn't contain anything in the contains list)

If you want to do something like direct for every User-Agent except if
it contains abc, then you would add '*' to contains (regex to match
everything) and add 'abc' to does-not-contain.
The does-not-contain list can be empty.

For the situation when you create a new condition, the contains list and
the doesn-not-contain list should probably both be empty (since the
contains list is empty, the default will be to never redirect until the
admin configures something here).

For device properties, if the list is empty then it means we are not
checking any device properties, and the device property check will
return true. When creating a new condition, this list should be empty.
It would be nice if for an empty list we have an entry in the table
saying something like 'No Device Properties specified. Device Properties
are not being checked'.
If we have one or more device properties specified, then _all_ of these
properties must be met (ie its now using AND).


So it all works something like this (note: this is for higher level
logic, the implementation doesn't exactly follow these steps).

1) we check if the User-Agent string has a match in the list of
'contains'. If true continue, if not don't do the redirect

2) we check if the User-Agent string has a match in the list of 'does
not contain'. If we have a match, then don't do the redirect. Otherwise
continue

3) we check if there is a match for all the device properties. If we
have a match, now we can do the redirect, otherwise don't do the
redirect.

Hopefully this makes it more clear.



On Apr 12, 2012, at 3:09 PM, Matt Wringe wrote:


JBoss Community
Gatein Mobile Detection And Redirection: Administration UI
new comment by Matt Wringe View all comments on this document
After a offline discussion, the following changes were determined:


- no more concept of device type

- prepopulate a new portal with a couple of default redirects which contain default conditions for some specific devices (phone, tablet, etc..)


screen 1:

- remove the icon and change 'Device' to something like 'Redirect' which will display the redirect name.

- add a 'copy' option to clone a new redirect based on a exiting redirect. Copy and Delete will appear under a separate menu where the current 'delete' icon is currently located


screen 2:

- removed

- when creating a new redirect, screen 3 will be displayed.


screen 3:

- no icon beside the redirect name.

- when creating a new redirect: generic redirect name ('redirect-1' or something similar) but its an editable value, so it change be changed. The redirect site will have to be set to the first site name in the drop down [does this make sense? or should it be empty/null by default?]. Redirect will be enabled by default when creating a new redirect [right? since they obviously want to use the redirect, otherwise why would they create one?] [Note this part as not discussed, just adding my thoughts here]

- make the 'redirect to' more prominent (larger font size, etc. Its too small and out of the way right now when its an important option)


screen 4:

TODO: make clearer in screen 4 the behaviour when multiple conditions are specified.

Current behaviour for user-agent string: Condition is true if the user agent contains any of the strings specified in 'contains' and no string specified in 'does not contain'

[multiple user-agent conditions act as OR]

Current behabiour for device properties: If ALL the device conditions are met

[multiple device properties act as AND]


The idea behind this is that you would probably want to list multiple different contains for a user agent string (ie for a list of browser types, so OR) but you would probably want to use AND for device properties (ie if width is less than X and device pixel density is above y). But this gets a bit confusing. I would rather not have to support more complex rules if possible.