<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
<tt>Hi list,<br>
<br>
as can be seen in <a href="https://www.cubicweb.org/ticket/2406609"
 moz-do-not-send="true">this ticket</a>, I would like to be able to use
the powerful <a
 href="http://docs.cubicweb.org/devweb/rtags.html#the-uicfg-module">uicfg</a>
module more widely to configure my user interfaces.<br>
<br>
The problem to me is that the configurations (be it for forms, primary
views, a.s.o) apply site-wide. You just can't hide one field of a form
to a user and show it to the site managers using uicfg. Same with
primary view parts.<br>
<br>
The way I tried to solve this problem is putting ui configuration
instances into a dedicated registry and make them selectable. Then I
turned direct imports from the default configuration into selection in
this registry and that was it.<br>
<br>
If you have another idea to implement this, please share. This email is
precisely aimed at getting feedback on this solution and choose another
approach if anyone in the CW community has a better plan.<br>
<br>
To give you a better idea, here is the kind of code you will need to
write once <a href="https://www.cubicweb.org/patch/2398503">the
corresponding patch</a> applied (note it depends on <a
 href="http://www.logilab.org/patch/98633">this one</a> in
logilab.common) to build a new configuration instance:<br>
<br>
* </tt><tt>my_cube</tt><tt>/uicfg.py::<br>
<br>
  from cubicweb.web import uicfg<br>
  <br>
  class MyCubeUserAfs(uicfg.AutoformSectionRelationTags):<br>
      __select__ = </tt><tt>uicfg.AutoformSectionRelationTags.__select__
& match_user_groups('users')<br>
<br>
  my_cube_users_afs = MyCubeUserAfs()<br>
<br>
* </tt><tt>my_cube</tt><tt>/views/uicfg.py::<br>
  <br>
  from </tt><tt>my_cube.uicfg import </tt><tt>my_cube_users_afs<br>
  <br>
  </tt><tt>my_cube_users_afs</tt><tt>.tag_object_of(('MyInstanceType1',
'my_rel', '</tt><tt>MyInstanceType2</tt><tt>'), 'main', 'hidden')<br>
<br>
<br>
The reason for splitting this into two files is for automatic reloading
in debug mode : you will be able to edit your configuration rules in
debug mode without restarting your server (however if you edit </tt><tt>my_cube</tt><tt>/uicfg.py,
you will have to restart</tt><tt>).<br>
<br>
The <a
 href="http://docs.cubicweb.org/devweb/rtags.html#the-uihelper-module">uihelper</a>
module functions have been added an optional configuration instance as
a parameter, but should probably become methods of the configuration
classes instead.<br>
<br>
Waiting for you feedback,<br>
Cheers,<br>
Florent Cayré.<br>
</tt>
</body>
</html>