Compile (WIP sur updateUser.xhtml et le reste de la transition User)
Showing
20 changed files
with
1033 additions
and
137 deletions
... | @@ -29,6 +29,20 @@ | ... | @@ -29,6 +29,20 @@ |
29 | </dependencyManagement> | 29 | </dependencyManagement> |
30 | 30 | ||
31 | <dependencies> | 31 | <dependencies> |
32 | + <!-- **** PREREQUIS MIGRATION **** --> | ||
33 | + <!-- https://mvnrepository.com/artifact/org.omnifaces/omnifaces --> | ||
34 | + <dependency> | ||
35 | + <groupId>org.omnifaces</groupId> | ||
36 | + <artifactId>omnifaces</artifactId> | ||
37 | + <version>2.5.1</version> | ||
38 | + </dependency> | ||
39 | + | ||
40 | + <!-- https://mvnrepository.com/artifact/org.primefaces/primefaces --> | ||
41 | + <dependency> | ||
42 | + <groupId>org.primefaces</groupId> | ||
43 | + <artifactId>primefaces</artifactId> | ||
44 | + <version>6.0</version> | ||
45 | + </dependency> | ||
32 | 46 | ||
33 | <!-- **** FRAMEWORK : JSF + CDI **** --> | 47 | <!-- **** FRAMEWORK : JSF + CDI **** --> |
34 | 48 | ... | ... |
1 | -package org.legrog.application; | ||
2 | - | ||
3 | -import org.legrog.entities.Country; | ||
4 | -import org.legrog.entities.CountryRepository; | ||
5 | -//import org.slf4j.Logger; | ||
6 | -//import org.slf4j.LoggerFactory; | ||
7 | - | ||
8 | -import javax.ejb.Stateless; | ||
9 | -import javax.enterprise.inject.Alternative; | ||
10 | -import javax.inject.Inject; | ||
11 | -import java.util.List; | ||
12 | - | ||
13 | -@Stateless | ||
14 | -public class CountryServiceSpring implements CountryService { | ||
15 | - | ||
16 | - @Inject | ||
17 | - CountryRepository repository; | ||
18 | - | ||
19 | - public void addCountry(Country country) { | ||
20 | - repository.save(country); | ||
21 | - } | ||
22 | - | ||
23 | - public List<Country> getAllCountries() { | ||
24 | - return repository.findAll(); | ||
25 | - } | ||
26 | -} |
1 | package org.legrog.application; | 1 | package org.legrog.application; |
2 | 2 | ||
3 | import org.legrog.entities.Country; | 3 | import org.legrog.entities.Country; |
4 | +import org.legrog.entities.DisplayNameMask; | ||
5 | +import org.legrog.entities.UserRole; | ||
4 | 6 | ||
5 | import java.util.List; | 7 | import java.util.List; |
6 | 8 | ||
7 | -public interface CountryService { | 9 | +public interface SharedService { |
8 | 10 | ||
9 | void addCountry(Country country); | 11 | void addCountry(Country country); |
10 | 12 | ||
11 | List<Country> getAllCountries(); | 13 | List<Country> getAllCountries(); |
14 | + | ||
15 | + List<DisplayNameMask> getAllDisplayNameMasks(); | ||
16 | + | ||
17 | + List<UserRole> getAvailableUserRoles(); | ||
18 | + | ||
12 | } | 19 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | +package org.legrog.application; | ||
2 | + | ||
3 | +import org.legrog.entities.*; | ||
4 | +//import org.slf4j.Logger; | ||
5 | +//import org.slf4j.LoggerFactory; | ||
6 | + | ||
7 | +import javax.ejb.Stateless; | ||
8 | +import javax.inject.Inject; | ||
9 | +import java.util.List; | ||
10 | +import java.util.Vector; | ||
11 | + | ||
12 | +@Stateless | ||
13 | +public class SharedServiceSpring implements SharedService { | ||
14 | + | ||
15 | + @Inject | ||
16 | + CountryRepository countryRepository; | ||
17 | + @Inject | ||
18 | + UserRoleRepository userRoleRepository; | ||
19 | + | ||
20 | + private List<DisplayNameMask> allDisplayNameMasks; | ||
21 | + | ||
22 | + public void addCountry(Country country) { | ||
23 | + countryRepository.save(country); | ||
24 | + } | ||
25 | + | ||
26 | + public List<Country> getAllCountries() { | ||
27 | + return countryRepository.findAll(); | ||
28 | + } | ||
29 | + | ||
30 | + public List<DisplayNameMask> getAllDisplayNameMasks() { | ||
31 | + if (allDisplayNameMasks == null) | ||
32 | + { | ||
33 | + allDisplayNameMasks = new Vector<DisplayNameMask>(DisplayNameMask.values().length); | ||
34 | + | ||
35 | + for (DisplayNameMask mask : DisplayNameMask.values()) | ||
36 | + { | ||
37 | + allDisplayNameMasks.add(mask); | ||
38 | + } | ||
39 | + } | ||
40 | + return allDisplayNameMasks; | ||
41 | + } | ||
42 | + | ||
43 | + public List<UserRole> getAvailableUserRoles() { | ||
44 | + return userRoleRepository.findAll(); | ||
45 | + } | ||
46 | +} |
1 | +package org.legrog.entities; | ||
2 | + | ||
3 | +/* DbMaskableEntity en v2, mais je pense le nouveau nom plus clair */ | ||
4 | +public interface DisplayNameConfigurable { | ||
5 | + String getFirstName(); | ||
6 | + | ||
7 | + String getLastName(); | ||
8 | + | ||
9 | + String getNickName(); | ||
10 | + | ||
11 | +/* ScreenName en v2, mais je pense la nouveau nom plus clair */ | ||
12 | + String getDisplayName(); | ||
13 | +} |
1 | +package org.legrog.entities; | ||
2 | + | ||
3 | +/** | ||
4 | + * This enumeration provide options for name masking of authors and users. | ||
5 | + * Every {link org.roliste.data.DbMaskableEntity} provide first name, last name and nickname | ||
6 | + * capabilities, that may be "masked", thus shown in some specific way depending on chosen | ||
7 | + * NameMask. | ||
8 | + */ | ||
9 | +public enum DisplayNameMask | ||
10 | +{ | ||
11 | + PRENOMNOM("Prénom Nom") | ||
12 | + { | ||
13 | + public String listMask(DisplayNameConfigurable person) | ||
14 | + { | ||
15 | + return NOMPRENOM.getDisplayName(person); | ||
16 | + } | ||
17 | + | ||
18 | + public String getDisplayName(DisplayNameConfigurable person) | ||
19 | + { | ||
20 | + StringBuilder sb = new StringBuilder(); | ||
21 | + if (person.getFirstName() != null) | ||
22 | + { | ||
23 | + sb.append(person.getFirstName()); | ||
24 | + } | ||
25 | + if (person.getLastName() != null) | ||
26 | + { | ||
27 | + sb.append(' '); | ||
28 | + sb.append(person.getLastName()); | ||
29 | + } | ||
30 | + return sb.toString(); | ||
31 | + } | ||
32 | + }, | ||
33 | + | ||
34 | + NOMPRENOM("Nom, Prénom") | ||
35 | + { | ||
36 | + public String listMask(DisplayNameConfigurable person) | ||
37 | + { | ||
38 | + return NOMPRENOM.getDisplayName(person); | ||
39 | + } | ||
40 | + | ||
41 | + public String getDisplayName(DisplayNameConfigurable person) | ||
42 | + { | ||
43 | + StringBuilder sb = new StringBuilder(); | ||
44 | + if (person.getLastName() != null) | ||
45 | + { | ||
46 | + sb.append(person.getLastName()); | ||
47 | + if (person.getFirstName() != null) | ||
48 | + { | ||
49 | + sb.append(", "); | ||
50 | + sb.append(person.getFirstName()); | ||
51 | + } | ||
52 | + } | ||
53 | + else | ||
54 | + { | ||
55 | + sb.append("!Pas de nom"); | ||
56 | + } | ||
57 | + return sb.toString(); | ||
58 | + } | ||
59 | + }, | ||
60 | + | ||
61 | + PSEUDO("Pseudo") | ||
62 | + { | ||
63 | + public String listMask(DisplayNameConfigurable person) | ||
64 | + { | ||
65 | + return PSEUDO.getDisplayName(person); | ||
66 | + } | ||
67 | + | ||
68 | + public String getDisplayName(DisplayNameConfigurable person) | ||
69 | + { | ||
70 | + StringBuilder sb = new StringBuilder(); | ||
71 | + if (person.getNickName() != null) | ||
72 | + { | ||
73 | + sb.append(person.getNickName()); | ||
74 | + } | ||
75 | + else | ||
76 | + { | ||
77 | + sb.append("!Pas de pseudo"); | ||
78 | + } | ||
79 | + return sb.toString(); | ||
80 | + } | ||
81 | + }, | ||
82 | + | ||
83 | + COMPLET("Prénom 'Pseudo' Nom") | ||
84 | + { | ||
85 | + public String listMask(DisplayNameConfigurable person) | ||
86 | + { | ||
87 | + return NOMPRENOM.getDisplayName(person); | ||
88 | + } | ||
89 | + | ||
90 | + public String getDisplayName(DisplayNameConfigurable person) | ||
91 | + { | ||
92 | + StringBuffer myResult = new StringBuffer(); | ||
93 | + | ||
94 | + if (person.getFirstName() != null) | ||
95 | + { | ||
96 | + myResult.append(person.getFirstName()); | ||
97 | + myResult.append(' '); | ||
98 | + } | ||
99 | + if ( person.getNickName() != null ) | ||
100 | + { | ||
101 | + myResult.append('\''); | ||
102 | + myResult.append(person.getNickName()); | ||
103 | + myResult.append('\''); | ||
104 | + myResult.append(' '); | ||
105 | + } | ||
106 | + if (person.getLastName() != null) | ||
107 | + { | ||
108 | + myResult.append(person.getLastName()); | ||
109 | + } | ||
110 | + return myResult.toString(); | ||
111 | + } | ||
112 | + }; | ||
113 | + | ||
114 | + private final String symbol; | ||
115 | + | ||
116 | + private DisplayNameMask(String symbol) | ||
117 | + { | ||
118 | + this.symbol = symbol; | ||
119 | + } | ||
120 | + | ||
121 | + public String getSymbol() | ||
122 | + { | ||
123 | + return symbol; | ||
124 | + } | ||
125 | + | ||
126 | + public String toString() | ||
127 | + { | ||
128 | + return symbol; | ||
129 | + } | ||
130 | + | ||
131 | + public abstract String getDisplayName(DisplayNameConfigurable person); | ||
132 | + | ||
133 | + public abstract String listMask(DisplayNameConfigurable person); | ||
134 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -10,7 +10,7 @@ import java.util.*; | ... | @@ -10,7 +10,7 @@ import java.util.*; |
10 | // TODO NameMask et DbMaskableEntity à traiter ensemble | 10 | // TODO NameMask et DbMaskableEntity à traiter ensemble |
11 | @Entity | 11 | @Entity |
12 | //@Table(name="utilisateur") | 12 | //@Table(name="utilisateur") |
13 | -public class User /* extends org.roliste.data.DbTraceableEntity implements DbMaskableEntity, DbValidationEntity */ { | 13 | +public class User /* extends org.roliste.data.DbTraceableEntity */ implements DisplayNameConfigurable /*, DbValidationEntity */ { |
14 | 14 | ||
15 | // @Column(name="ID_UTILISATEUR") | 15 | // @Column(name="ID_UTILISATEUR") |
16 | @Id | 16 | @Id |
... | @@ -40,7 +40,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -40,7 +40,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
40 | /** | 40 | /** |
41 | * The mask used for user name. | 41 | * The mask used for user name. |
42 | */ | 42 | */ |
43 | -// private NameMask _mask; | 43 | + private DisplayNameMask displayNameMask; |
44 | /* | 44 | /* |
45 | @Override | 45 | @Override |
46 | public String getUrlKey() | 46 | public String getUrlKey() |
... | @@ -50,21 +50,20 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -50,21 +50,20 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
50 | */ | 50 | */ |
51 | /** | 51 | /** |
52 | * @return the user's name as desired. By default, return the complete name. | 52 | * @return the user's name as desired. By default, return the complete name. |
53 | - * @see org.roliste.data.db.NameMask#mask(org.roliste.data.DbMaskableEntity) | 53 | + * see org.roliste.data.db.NameMask#mask(org.roliste.data.DbMaskableEntity) |
54 | */ | 54 | */ |
55 | - /* | 55 | + public String getDisplayName() |
56 | - public String getScreenName() | ||
57 | { | 56 | { |
58 | - if (_mask != null) | 57 | + if (displayNameMask != null) |
59 | - return _mask.mask(this); | 58 | + return displayNameMask.getDisplayName(this); |
60 | else | 59 | else |
61 | - return NameMask.COMPLET.mask(this); | 60 | + return DisplayNameMask.COMPLET.getDisplayName(this); |
62 | } | 61 | } |
63 | -*/ | 62 | + |
64 | /** | 63 | /** |
65 | * Returns the user's name mask. | 64 | * Returns the user's name mask. |
66 | * @return the mask. | 65 | * @return the mask. |
67 | - * @see #setNameMask(NameMask) | 66 | + * see #setNameMask(NameMask) |
68 | * hibernate.property | 67 | * hibernate.property |
69 | * column="MASQUE_NOM_UTILISATEUR" | 68 | * column="MASQUE_NOM_UTILISATEUR" |
70 | * access="property" | 69 | * access="property" |
... | @@ -72,21 +71,18 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -72,21 +71,18 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
72 | * @hibernate.type | 71 | * @hibernate.type |
73 | * name="org.roliste.data.util.NameMaskUserType" | 72 | * name="org.roliste.data.util.NameMaskUserType" |
74 | */ | 73 | */ |
75 | - /* | 74 | + public DisplayNameMask getDisplayNameMask() { |
76 | - public NameMask getNameMask() { | 75 | + return displayNameMask; |
77 | - return _mask; | ||
78 | } | 76 | } |
79 | -*/ | 77 | + |
80 | /** | 78 | /** |
81 | * Initializes the user's name mask. | 79 | * Initializes the user's name mask. |
82 | - * @param mask the new {@link org.roliste.data.db.NameMask}. | 80 | + * @param mask the new {link org.roliste.data.db.NameMask}. |
83 | - * @see #getNameMask() | 81 | + * see #getNameMask() |
84 | */ | 82 | */ |
85 | - /* | 83 | + public void setDisplayNameMask(DisplayNameMask mask) { |
86 | - public void setNameMask(NameMask mask) { | 84 | + mask = mask; |
87 | - _mask = mask; | ||
88 | } | 85 | } |
89 | -*/ | ||
90 | 86 | ||
91 | 87 | ||
92 | // TODO Faire ailleurs les contrôles de chaîne vide sur : username, password, firstname, lastname, nickname, email, text | 88 | // TODO Faire ailleurs les contrôles de chaîne vide sur : username, password, firstname, lastname, nickname, email, text |
... | @@ -111,7 +107,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -111,7 +107,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
111 | private String lastName; | 107 | private String lastName; |
112 | 108 | ||
113 | /** | 109 | /** |
114 | - * The user screen name. | 110 | + * The user nick name. |
115 | */ | 111 | */ |
116 | private String nickname; | 112 | private String nickname; |
117 | 113 | ||
... | @@ -123,7 +119,8 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -123,7 +119,8 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
123 | /** | 119 | /** |
124 | * The {@link org.roliste.data.db.UserRole}s for this user. | 120 | * The {@link org.roliste.data.db.UserRole}s for this user. |
125 | */ | 121 | */ |
126 | -// private List<UserRole> _roles; | 122 | + @ManyToMany |
123 | + private List<UserRole> roles; | ||
127 | 124 | ||
128 | /** | 125 | /** |
129 | * Retrieves the list of {@link UserRole}s for this user. | 126 | * Retrieves the list of {@link UserRole}s for this user. |
... | @@ -134,7 +131,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -134,7 +131,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
134 | * @see #setRoles(List) | 131 | * @see #setRoles(List) |
135 | * @see #addToRole(UserRole) | 132 | * @see #addToRole(UserRole) |
136 | * @see #removeFromRole(UserRole) | 133 | * @see #removeFromRole(UserRole) |
137 | - * @hibernate.many-to-many | 134 | + * hibernate.many-to-many |
138 | * column="ROLE_FK" | 135 | * column="ROLE_FK" |
139 | * class="org.roliste.data.db.UserRole" | 136 | * class="org.roliste.data.db.UserRole" |
140 | * foreign-key="FK_UTILISATEURROLE_ROLEUTILISATEUR" | 137 | * foreign-key="FK_UTILISATEURROLE_ROLEUTILISATEUR" |
... | @@ -148,28 +145,28 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -148,28 +145,28 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
148 | * table="role_utilisateur" | 145 | * table="role_utilisateur" |
149 | * lazy="true" | 146 | * lazy="true" |
150 | */ | 147 | */ |
151 | - /* | 148 | + |
152 | public List<UserRole> getRoles() { | 149 | public List<UserRole> getRoles() { |
153 | - return _roles; | 150 | + return roles; |
154 | } | 151 | } |
155 | -*/ | 152 | + |
156 | /** | 153 | /** |
157 | * Lists the list of {@link UserRole}s for this user. | 154 | * Lists the list of {@link UserRole}s for this user. |
158 | * @param roles the new {@link List} of {@link UserRole}s. Shall not be <code>null</code>. | 155 | * @param roles the new {@link List} of {@link UserRole}s. Shall not be <code>null</code>. |
159 | * @throws NullPointerException if roles is <code>null</code>. | 156 | * @throws NullPointerException if roles is <code>null</code>. |
160 | * @see #getRoles() | 157 | * @see #getRoles() |
161 | - * @see #addToRole(UserRole) | 158 | + * see #addToRole(UserRole) |
162 | - * @see #removeFromRole(UserRole) | 159 | + * see #removeFromRole(UserRole) |
163 | */ | 160 | */ |
164 | - /* | 161 | + |
165 | public void setRoles(List<UserRole> roles) { | 162 | public void setRoles(List<UserRole> roles) { |
166 | if (roles == null) | 163 | if (roles == null) |
167 | { | 164 | { |
168 | throw new NullPointerException("Impossible d'affecter un ensemble nul aux r�les d'un utilisateur"); | 165 | throw new NullPointerException("Impossible d'affecter un ensemble nul aux r�les d'un utilisateur"); |
169 | } | 166 | } |
170 | - _roles = roles; | 167 | + this.roles = roles; |
171 | } | 168 | } |
172 | -*/ | 169 | + |
173 | /** | 170 | /** |
174 | * Add the user to a given {@link UserRole}s. | 171 | * Add the user to a given {@link UserRole}s. |
175 | * @param role the new {@link UserRole}. Ignored if <code>null</code>. | 172 | * @param role the new {@link UserRole}. Ignored if <code>null</code>. |
... | @@ -232,7 +229,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -232,7 +229,7 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
232 | /** | 229 | /** |
233 | * Presentation text. | 230 | * Presentation text. |
234 | */ | 231 | */ |
235 | - private String text; | 232 | + private String presentation; |
236 | 233 | ||
237 | /** | 234 | /** |
238 | * The {@link org.roliste.data.db.BookDetails}s in this user's collection. | 235 | * The {@link org.roliste.data.db.BookDetails}s in this user's collection. |
... | @@ -736,16 +733,16 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas | ... | @@ -736,16 +733,16 @@ public class User /* extends org.roliste.data.DbTraceableEntity implements DbMas |
736 | * length="2147483647" | 733 | * length="2147483647" |
737 | */ | 734 | */ |
738 | public String getPresentation() { | 735 | public String getPresentation() { |
739 | - return text; | 736 | + return presentation; |
740 | } | 737 | } |
741 | 738 | ||
742 | /** | 739 | /** |
743 | * Initializes the HTML text presentation. | 740 | * Initializes the HTML text presentation. |
744 | - * @param text the new {@link String} HTML text. | 741 | + * @param presentation the new {@link String} HTML text. |
745 | * @see #getPresentation() | 742 | * @see #getPresentation() |
746 | */ | 743 | */ |
747 | - public void setPresentation(String text) { | 744 | + public void setPresentation(String presentation) { |
748 | - this.text = text; | 745 | + this.presentation = presentation; |
749 | } | 746 | } |
750 | 747 | ||
751 | /** | 748 | /** | ... | ... |
1 | +package org.legrog.entities; | ||
2 | + | ||
3 | +import java.util.HashSet; | ||
4 | +import java.util.Set; | ||
5 | + | ||
6 | +import javax.persistence.*; | ||
7 | + | ||
8 | +/** | ||
9 | + * The database representation of a user role or group. | ||
10 | + * A given {@link User} may be part of one or more {@link UserRole}. | ||
11 | + * <br/> | ||
12 | + * Warning: due to laziness of mapped objects, private attributes of all DB entities shall never be used directly. | ||
13 | + * You shall always use the getter/setter methods. | ||
14 | + * alias UserRole | ||
15 | + * | ||
16 | + */ | ||
17 | +@Entity | ||
18 | +// TODO évaluer extend v2 | ||
19 | +public class UserRole /* extends org.roliste.data.DbEntity */ | ||
20 | +{ | ||
21 | + @Id | ||
22 | + @GeneratedValue(strategy = GenerationType.AUTO) | ||
23 | + private int userRoleId; | ||
24 | + | ||
25 | + /** | ||
26 | + * The role identifier. | ||
27 | + */ | ||
28 | + private String rolename; | ||
29 | + | ||
30 | + /** | ||
31 | + * The {@link User}s for this user role. | ||
32 | + */ | ||
33 | + @ManyToMany | ||
34 | + private Set<User> users; | ||
35 | + | ||
36 | + /** | ||
37 | + * Builds a new and empty user role definition. | ||
38 | + * All attributes are set to their default value. | ||
39 | + * <br/> | ||
40 | + * Needed by Hibernate for Java reflection. | ||
41 | + */ | ||
42 | + public UserRole() { | ||
43 | + super(); | ||
44 | + rolename = null; | ||
45 | + visible = true; | ||
46 | + // no need to synchronize this | ||
47 | + users = new HashSet<User>(); | ||
48 | + } | ||
49 | + | ||
50 | + public int getUserRoleId() { | ||
51 | + return userRoleId; | ||
52 | + } | ||
53 | + | ||
54 | + public void setUserRoleId(int userRoleId) { | ||
55 | + this.userRoleId = userRoleId; | ||
56 | + } | ||
57 | + | ||
58 | + /** | ||
59 | + * Returns the role identifier. | ||
60 | + * @return the {@link String} identifier. | ||
61 | + * @see #setRolename(String) | ||
62 | + * hibernate.property | ||
63 | + * column="NOM_ROLE" | ||
64 | + * not-null="true" | ||
65 | + * unique="true" | ||
66 | + * access="property" | ||
67 | + * length="50" | ||
68 | + */ | ||
69 | + public String getRolename() { | ||
70 | + return rolename; | ||
71 | + } | ||
72 | + | ||
73 | + /** | ||
74 | + * Initializes the role identifier. | ||
75 | + * @param name the new {@link String} identifier. | ||
76 | + * @see #getRolename() | ||
77 | + */ | ||
78 | + public void setRolename(String name) { | ||
79 | + rolename = name; | ||
80 | + } | ||
81 | + | ||
82 | + /** | ||
83 | + * The role validation status. | ||
84 | + * A role may be temporarily deactivated. | ||
85 | + */ | ||
86 | + private boolean visible; | ||
87 | + | ||
88 | + /** | ||
89 | + * Indicates if the role is visible. | ||
90 | + * If not, users should not be able to access the privileges | ||
91 | + * they inherit from being part of this role. | ||
92 | + * @return the visible flag. | ||
93 | + * @see #setVisible(boolean) | ||
94 | + * hibernate.property | ||
95 | + * column="IND_VISIBLE" | ||
96 | + * access="property" | ||
97 | + */ | ||
98 | + public boolean isVisible() { | ||
99 | + return visible; | ||
100 | + } | ||
101 | + | ||
102 | + /** | ||
103 | + * Initializes the user visible flag. | ||
104 | + * @param visible the new flag value. | ||
105 | + * @see #isVisible | ||
106 | + */ | ||
107 | + public void setVisible(boolean visible) { | ||
108 | + this.visible = visible; | ||
109 | + } | ||
110 | + | ||
111 | + /** | ||
112 | + * Retrieves the list of {@link User}s for this user role. | ||
113 | + * SHALL be used as a read-only attribute. In particular, avoid | ||
114 | + * using {@link Set#add(Object)} or {@link Set#remove(Object)} on | ||
115 | + * the returned value without caution. | ||
116 | + * @return a {@link Set} of {@link User}. May be <code>null</code>. | ||
117 | + * @see #setUsers(Set) | ||
118 | + * hibernate.many-to-many | ||
119 | + * column="UTILISATEUR_FK" | ||
120 | + * class="org.roliste.data.db.User" | ||
121 | + * foreign-key="FK_UTILISATEURROLE_UTILISATEUR" | ||
122 | + * hibernate.key | ||
123 | + * column="ROLE_FK" | ||
124 | + * not-null="true" | ||
125 | + * foreign-key="FK_UTILISATEURROLE_ROLEUTILISATEUR" | ||
126 | + * hibernate.set | ||
127 | + * access="property" | ||
128 | + * table="role_utilisateur" | ||
129 | + * lazy="true" | ||
130 | + * inverse="true" | ||
131 | + */ | ||
132 | + public Set<User> getUsers() { | ||
133 | + return users; | ||
134 | + } | ||
135 | + | ||
136 | + /** | ||
137 | + * Sets the list of {@link User}s for this user role. | ||
138 | + * @param users the new {@link Set} of {@link User}s. May be | ||
139 | + * <code>null</code> (we don't handle the relation from this side). | ||
140 | + * @see #getUsers() | ||
141 | + */ | ||
142 | + protected void setUsers(Set<User> users) { | ||
143 | + this.users = users; | ||
144 | + } | ||
145 | + | ||
146 | + /** | ||
147 | + * Returns a string representation of this user role definition. | ||
148 | + * @return a string representing this user role definition. | ||
149 | + * hidden | ||
150 | + */ | ||
151 | + public String toString() | ||
152 | + { | ||
153 | + StringBuilder sb = new StringBuilder(); | ||
154 | + | ||
155 | + sb.append("ID_ROLE="); | ||
156 | + sb.append(getUserRoleId()); | ||
157 | + | ||
158 | + sb.append(" NOM_ROLE="); | ||
159 | + sb.append(rolename); | ||
160 | + | ||
161 | + sb.append(" IND_VISIBLE="); | ||
162 | + sb.append(visible); | ||
163 | + | ||
164 | + return sb.toString(); | ||
165 | + } | ||
166 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | package org.legrog.presentation; | 1 | package org.legrog.presentation; |
2 | 2 | ||
3 | -import org.legrog.application.CountryService; | 3 | +import org.legrog.application.SharedService; |
4 | import org.legrog.entities.Country; | 4 | import org.legrog.entities.Country; |
5 | 5 | ||
6 | import javax.enterprise.context.RequestScoped; | 6 | import javax.enterprise.context.RequestScoped; |
7 | import javax.inject.Inject; | 7 | import javax.inject.Inject; |
8 | import javax.inject.Named; | 8 | import javax.inject.Named; |
9 | -import java.util.List; | ||
10 | 9 | ||
11 | @Named | 10 | @Named |
12 | @RequestScoped | 11 | @RequestScoped |
13 | -public class CountryBean { | 12 | +public class AddCountryBean { |
14 | @Inject | 13 | @Inject |
15 | - private CountryService service; | 14 | + private SharedService sharedService; |
16 | - | ||
17 | - private List<Country> countries; | ||
18 | 15 | ||
19 | private String countryName; | 16 | private String countryName; |
20 | 17 | ||
21 | - public List<Country> getCountries() { | ||
22 | - return countries; | ||
23 | - } | ||
24 | - | ||
25 | - public void setCountries(List<Country> countries) { | ||
26 | - this.countries = countries; | ||
27 | - } | ||
28 | - | ||
29 | public String getCountryName() { | 18 | public String getCountryName() { |
30 | return countryName; | 19 | return countryName; |
31 | } | 20 | } |
... | @@ -38,11 +27,8 @@ public class CountryBean { | ... | @@ -38,11 +27,8 @@ public class CountryBean { |
38 | { | 27 | { |
39 | Country country = new Country(); | 28 | Country country = new Country(); |
40 | country.setCountryName(countryName); | 29 | country.setCountryName(countryName); |
41 | - service.addCountry(country); | 30 | + sharedService.addCountry(country); |
42 | return "success"; | 31 | return "success"; |
43 | } | 32 | } |
44 | 33 | ||
45 | - public void onload() { | ||
46 | - countries = service.getAllCountries(); | ||
47 | - } | ||
48 | } | 34 | } | ... | ... |
1 | +package org.legrog.presentation; | ||
2 | + | ||
3 | +import org.legrog.application.SharedService; | ||
4 | +import org.legrog.application.UserService; | ||
5 | +import org.legrog.entities.DisplayNameMask; | ||
6 | +import org.legrog.entities.User; | ||
7 | +import org.legrog.entities.UserRole; | ||
8 | + | ||
9 | +import javax.annotation.PostConstruct; | ||
10 | +import javax.enterprise.context.RequestScoped; | ||
11 | +import javax.inject.Inject; | ||
12 | +import javax.inject.Named; | ||
13 | +import java.util.List; | ||
14 | + | ||
15 | +@Named | ||
16 | +@RequestScoped | ||
17 | +public class AddUserBean { | ||
18 | + @Inject | ||
19 | + private UserService userService; | ||
20 | + @Inject | ||
21 | + private SharedService sharedService; | ||
22 | + | ||
23 | + private int userId; | ||
24 | + | ||
25 | + private String username; | ||
26 | + | ||
27 | + private String firstName; | ||
28 | + | ||
29 | + private String lastName; | ||
30 | + | ||
31 | + private String nickName; | ||
32 | + | ||
33 | + private DisplayNameMask displayNameMask; | ||
34 | + | ||
35 | + private List<DisplayNameMask> allDisplayNameMasks; | ||
36 | + | ||
37 | + private List<UserRole> availableUserRoles; | ||
38 | + | ||
39 | + private String email; | ||
40 | + | ||
41 | + private boolean anonymous; | ||
42 | + | ||
43 | + private String password; | ||
44 | + | ||
45 | + private List<UserRole> roles; | ||
46 | + | ||
47 | + private String presentation; | ||
48 | + | ||
49 | + public String getUsername() { | ||
50 | + return username; | ||
51 | + } | ||
52 | + | ||
53 | + public void setUsername(String username) { | ||
54 | + this.username = username; | ||
55 | + } | ||
56 | + | ||
57 | + public String add() | ||
58 | + { | ||
59 | + User user = new User(); | ||
60 | + user.setUsername(username); | ||
61 | + userService.addUser(user); | ||
62 | + return "success"; | ||
63 | + } | ||
64 | + | ||
65 | + public String getFirstName() { | ||
66 | + return firstName; | ||
67 | + } | ||
68 | + | ||
69 | + public void setFirstName(String firstName) { | ||
70 | + this.firstName = firstName; | ||
71 | + } | ||
72 | + | ||
73 | + public String getLastName() { | ||
74 | + return lastName; | ||
75 | + } | ||
76 | + | ||
77 | + public void setLastName(String lastName) { | ||
78 | + this.lastName = lastName; | ||
79 | + } | ||
80 | + | ||
81 | + public String getNickName() { | ||
82 | + return nickName; | ||
83 | + } | ||
84 | + | ||
85 | + public void setNickName(String nickName) { | ||
86 | + this.nickName = nickName; | ||
87 | + } | ||
88 | + | ||
89 | + public DisplayNameMask getDisplayNameMask() { | ||
90 | + return displayNameMask; | ||
91 | + } | ||
92 | + | ||
93 | + public void setDisplayNameMask(DisplayNameMask displayNameMask) { | ||
94 | + this.displayNameMask = displayNameMask; | ||
95 | + } | ||
96 | + | ||
97 | + public List<DisplayNameMask> getAllDisplayNameMasks() { | ||
98 | + return allDisplayNameMasks; | ||
99 | + } | ||
100 | + | ||
101 | + public void setAllDisplayNameMasks(List<DisplayNameMask> allDisplayNameMasks) { | ||
102 | + this.allDisplayNameMasks = allDisplayNameMasks; | ||
103 | + } | ||
104 | + | ||
105 | + public int getUserId() { | ||
106 | + return userId; | ||
107 | + } | ||
108 | + | ||
109 | + public void setUserId(int userId) { | ||
110 | + this.userId = userId; | ||
111 | + } | ||
112 | + | ||
113 | + public String getEmail() { | ||
114 | + return email; | ||
115 | + } | ||
116 | + | ||
117 | + public void setEmail(String email) { | ||
118 | + this.email = email; | ||
119 | + } | ||
120 | + | ||
121 | + public boolean isAnonymous() { | ||
122 | + return anonymous; | ||
123 | + } | ||
124 | + | ||
125 | + public void setAnonymous(boolean anonymous) { | ||
126 | + this.anonymous = anonymous; | ||
127 | + } | ||
128 | + | ||
129 | + public String getPassword() { | ||
130 | + return password; | ||
131 | + } | ||
132 | + | ||
133 | + public void setPassword(String password) { | ||
134 | + this.password = password; | ||
135 | + } | ||
136 | + | ||
137 | + public List<UserRole> getRoles() { | ||
138 | + return roles; | ||
139 | + } | ||
140 | + | ||
141 | + public void setRoles(List<UserRole> roles) { | ||
142 | + this.roles = roles; | ||
143 | + } | ||
144 | + | ||
145 | + @PostConstruct | ||
146 | + public void init() { | ||
147 | + allDisplayNameMasks = sharedService.getAllDisplayNameMasks(); | ||
148 | + availableUserRoles = sharedService.getAvailableUserRoles(); | ||
149 | + } | ||
150 | + | ||
151 | + public List<UserRole> getAvailableUserRoles() { | ||
152 | + return availableUserRoles; | ||
153 | + } | ||
154 | + | ||
155 | + public void setAvailableUserRoles(List<UserRole> availableUserRoles) { | ||
156 | + this.availableUserRoles = availableUserRoles; | ||
157 | + } | ||
158 | + | ||
159 | + public String getPresentation() { | ||
160 | + return presentation; | ||
161 | + } | ||
162 | + | ||
163 | + public void setPresentation(String presentation) { | ||
164 | + this.presentation = presentation; | ||
165 | + } | ||
166 | +} |
1 | +package org.legrog.presentation; | ||
2 | + | ||
3 | +import org.legrog.application.SharedService; | ||
4 | +import org.legrog.entities.Country; | ||
5 | + | ||
6 | +import javax.annotation.PostConstruct; | ||
7 | +import javax.enterprise.context.RequestScoped; | ||
8 | +import javax.inject.Inject; | ||
9 | +import javax.inject.Named; | ||
10 | +import java.util.List; | ||
11 | + | ||
12 | +@Named | ||
13 | +@RequestScoped | ||
14 | +public class ListCountriesBean { | ||
15 | + @Inject | ||
16 | + private SharedService sharedService; | ||
17 | + | ||
18 | + private List<Country> countries; | ||
19 | + | ||
20 | + public List<Country> getCountries() { | ||
21 | + return countries; | ||
22 | + } | ||
23 | + | ||
24 | + public void setCountries(List<Country> countries) { | ||
25 | + this.countries = countries; | ||
26 | + } | ||
27 | + | ||
28 | + @PostConstruct | ||
29 | + public void init() { | ||
30 | + countries = sharedService.getAllCountries(); | ||
31 | + } | ||
32 | + | ||
33 | +} |
... | @@ -3,18 +3,13 @@ package org.legrog.presentation; | ... | @@ -3,18 +3,13 @@ package org.legrog.presentation; |
3 | import org.legrog.application.UserService; | 3 | import org.legrog.application.UserService; |
4 | import org.legrog.entities.User; | 4 | import org.legrog.entities.User; |
5 | 5 | ||
6 | -import javax.enterprise.context.RequestScoped; | 6 | +import javax.annotation.PostConstruct; |
7 | import javax.inject.Inject; | 7 | import javax.inject.Inject; |
8 | -import javax.inject.Named; | ||
9 | import java.util.List; | 8 | import java.util.List; |
10 | 9 | ||
11 | -@Named | 10 | +public class ListUsersBean { |
12 | -@RequestScoped | ||
13 | -public class UserBean { | ||
14 | @Inject | 11 | @Inject |
15 | - private UserService service; | 12 | + private UserService userService; |
16 | - | ||
17 | - private String username; | ||
18 | 13 | ||
19 | private List<User> users; | 14 | private List<User> users; |
20 | 15 | ||
... | @@ -26,24 +21,9 @@ public class UserBean { | ... | @@ -26,24 +21,9 @@ public class UserBean { |
26 | this.users = users; | 21 | this.users = users; |
27 | } | 22 | } |
28 | 23 | ||
29 | - public String getUsername() { | 24 | + @PostConstruct |
30 | - return username; | 25 | + public void init() { |
31 | - } | 26 | + users = userService.getAllUsers(); |
32 | - | ||
33 | - public void setUsername(String username) { | ||
34 | - this.username = username; | ||
35 | - } | ||
36 | - | ||
37 | - public String add() | ||
38 | - { | ||
39 | - User user = new User(); | ||
40 | - user.setUsername(username); | ||
41 | - service.addUser(user); | ||
42 | - return "success"; | ||
43 | - } | ||
44 | - | ||
45 | - public void onload() { | ||
46 | - users = service.getAllUsers(); | ||
47 | } | 27 | } |
48 | 28 | ||
49 | } | 29 | } | ... | ... |
... | @@ -37,7 +37,7 @@ | ... | @@ -37,7 +37,7 @@ |
37 | </navigation-case> | 37 | </navigation-case> |
38 | <navigation-case> | 38 | <navigation-case> |
39 | <from-outcome>listUsers</from-outcome> | 39 | <from-outcome>listUsers</from-outcome> |
40 | - <to-view-id>/listUsers.xhtml</to-view-id> | 40 | + <to-view-id>/listUsers_short.xhtml</to-view-id> |
41 | </navigation-case> | 41 | </navigation-case> |
42 | </navigation-rule> | 42 | </navigation-rule> |
43 | 43 | ||
... | @@ -53,7 +53,7 @@ | ... | @@ -53,7 +53,7 @@ |
53 | <from-view-id>/addUser.xhtml</from-view-id> | 53 | <from-view-id>/addUser.xhtml</from-view-id> |
54 | <navigation-case> | 54 | <navigation-case> |
55 | <from-outcome>success</from-outcome> | 55 | <from-outcome>success</from-outcome> |
56 | - <to-view-id>/listUsers.xhtml</to-view-id> | 56 | + <to-view-id>/listUsers_short.xhtml</to-view-id> |
57 | </navigation-case> | 57 | </navigation-case> |
58 | </navigation-rule> | 58 | </navigation-rule> |
59 | 59 | ... | ... |
... | @@ -13,9 +13,9 @@ | ... | @@ -13,9 +13,9 @@ |
13 | 13 | ||
14 | <h:panelGrid columns="2"> | 14 | <h:panelGrid columns="2"> |
15 | <h:outputText value='Nom du pays'/> | 15 | <h:outputText value='Nom du pays'/> |
16 | - <h:inputText value='#{countryBean.countryName}'/> | 16 | + <h:inputText value='#{addCountryBean.countryName}'/> |
17 | <h:outputText value='Add'/> | 17 | <h:outputText value='Add'/> |
18 | - <h:commandButton action="#{countryBean.add}" value="Add"/> | 18 | + <h:commandButton action="#{addCountryBean.add}" value="Add"/> |
19 | </h:panelGrid> | 19 | </h:panelGrid> |
20 | </h:form> | 20 | </h:form> |
21 | </body> | 21 | </body> | ... | ... |
... | @@ -13,9 +13,9 @@ | ... | @@ -13,9 +13,9 @@ |
13 | 13 | ||
14 | <h:panelGrid columns="2"> | 14 | <h:panelGrid columns="2"> |
15 | <h:outputText value="Username de l'utilisateur"/> | 15 | <h:outputText value="Username de l'utilisateur"/> |
16 | - <h:inputText value='#{userBean.username}'/> | 16 | + <h:inputText value='#{addUserBean.username}'/> |
17 | <h:outputText value='Add'/> | 17 | <h:outputText value='Add'/> |
18 | - <h:commandButton action="#{userBean.add}" value="Add"/> | 18 | + <h:commandButton action="#{addUserBean.add}" value="Add"/> |
19 | </h:panelGrid> | 19 | </h:panelGrid> |
20 | </h:form> | 20 | </h:form> |
21 | </body> | 21 | </body> | ... | ... |
... | @@ -11,11 +11,8 @@ | ... | @@ -11,11 +11,8 @@ |
11 | <h:outputText value="Menu principal"/> | 11 | <h:outputText value="Menu principal"/> |
12 | </h:commandLink> | 12 | </h:commandLink> |
13 | </h:form> | 13 | </h:form> |
14 | -<f:metadata> | ||
15 | - <f:event type="preRenderView" listener="#{countryBean.onload}" /> | ||
16 | -</f:metadata> | ||
17 | <ul> | 14 | <ul> |
18 | - <ui:repeat value="#{countryBean.countries}" var="country"> | 15 | + <ui:repeat value="#{listCountriesBean.countries}" var="country"> |
19 | <li>#{country.countryName}</li> | 16 | <li>#{country.countryName}</li> |
20 | </ui:repeat> | 17 | </ui:repeat> |
21 | </ul> | 18 | </ul> | ... | ... |
1 | -<?xml version="1.0" encoding="UTF-8"?> | 1 | +<?xml version="1.0" encoding="ISO-8859-1"?> |
2 | -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | 2 | +<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
3 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 3 | +<ui:composition xmlns="http://www.w3.org/1999/xhtml" |
4 | -<html xmlns="http://www.w3.org/1999/xhtml" | 4 | + xmlns:ui="http://java.sun.com/jsf/facelets" |
5 | - xmlns:h="http://xmlns.jcp.org/jsf/html" | 5 | + xmlns:h="http://java.sun.com/jsf/html" |
6 | - xmlns:ui="http://xmlns.jcp.org/jsf/facelets" | 6 | + xmlns:f="http://java.sun.com/jsf/core" |
7 | - xmlns:f="http://xmlns.jcp.org/jsf/core"> | 7 | + xmlns:p="http://primefaces.org/ui" |
8 | -<f:view> | 8 | + template="#{theme.template}"> |
9 | + | ||
10 | + <!-- content --> | ||
11 | + <ui:define name="content"> | ||
12 | + | ||
13 | + <h2>Liste des utilisateurs</h2> | ||
14 | + | ||
15 | + <p> | ||
16 | + Liste des utilisateurs enregistrs sur le site. Un utilisateur peut tre "visible" ou non. Dans | ||
17 | + le cas o il n'est pas visible, il lui est impossible de s'identifier sur le site. Au moment de | ||
18 | + son enregistrement, par dfaut, il n'est pas visible : un systme de confirmation par courriel permet | ||
19 | + de valider que l'adresse est correcte, et seulement ce moment l de le rendre visible. La cration | ||
20 | + d'un utilisateur directement partir de la passerelle n'utilise pas ce systme de confirmation. | ||
21 | + </p> | ||
22 | + | ||
9 | <h:form> | 23 | <h:form> |
10 | - <h:commandLink action="home"> | 24 | + <div id="search" style="text-align:center;"> |
11 | - <h:outputText value="Menu principal"/> | 25 | + <h:panelGrid columns="3" styleClass="half"> |
26 | + <h:outputLabel for="searchString" value="Filtre" styleClass="req"/> | ||
27 | + <h:inputText id="searchString" value="#{userListMgr.searchString}" styleClass="req"/> | ||
28 | + <h:commandButton id="find" value="OK" action="#{userListMgr.find}" styleClass="lanceReq"><!--<s:defaultAction/>--></h:commandButton> | ||
29 | + </h:panelGrid> | ||
30 | + <h:outputText value="Pas d'lment respectant ce critre dans la base" | ||
31 | + rendered="#{elementList.rowCount==0}"/> | ||
32 | + </div> | ||
33 | + | ||
34 | + <h:messages globalOnly="true" errorClass="errorMsg" infoClass="infoMsg"/> | ||
35 | + | ||
36 | + <div id="listElements"> | ||
37 | + | ||
38 | + <h:commandLink styleClass="fRight acLink" action="#{userListMgr.goToCreate('user')}" > | ||
39 | + <img src="/images/structure/vide.gif" class="icAddC" alt="" title="Crer un nouvel utilisateur" /> | ||
40 | + Nouvel Utilisateur | ||
12 | </h:commandLink> | 41 | </h:commandLink> |
42 | + | ||
43 | + <p:dataTable id="tableElements" rendered="#{elementList.rowCount>0}" | ||
44 | + var="user" value="#{elementList}" rows="#{userListMgr.pageSize}" | ||
45 | + styleClass="results" rowClasses="altRichRow,altRow"> | ||
46 | + <f:facet name="header"> | ||
47 | + <p:dataScroller for="tableElements" | ||
48 | + stepControls="auto" boundaryControls="auto" fastControls="auto"> | ||
49 | + <f:facet name="first">Premiers</f:facet> | ||
50 | + <f:facet name="last">Derniers</f:facet> | ||
51 | + <f:facet name="fastforward">Suivants</f:facet> | ||
52 | + <f:facet name="fastrewind">Prcdents</f:facet> | ||
53 | + <f:facet name="pages" > </f:facet> | ||
54 | + </p:dataScroller> | ||
55 | + </f:facet> | ||
56 | + <p:column rendered="#{s:hasRole('ADMINISTRATEUR')}"> | ||
57 | + <h:commandLink id="delete" onclick="return confirm('Voulez vous vraiment supprimer cet lment ?');" action="#{userListMgr.delete}"> | ||
58 | + <img src="/images/structure/vide.gif" class="icDel" alt="" title="Effacer" /> | ||
59 | + </h:commandLink> | ||
60 | + </p:column> | ||
61 | + <p:column rendered="#{s:hasRole('ADMINISTRATEUR')}"> | ||
62 | + <h:commandLink action="#{userListMgr.goToUpdate('user', user.pk)}"> | ||
63 | + <img src="/images/structure/vide.gif" class="icEdit" alt="" title="Modifier" /> | ||
64 | + </h:commandLink> | ||
65 | + </p:column> | ||
66 | + <p:column styleClass="third" sortBy="#{user.username}"> | ||
67 | + <f:facet name="header">Identifiant</f:facet> | ||
68 | + <h:outputLink value="#{user.traceable.urlRewrite}"> | ||
69 | + <h:outputText value="#{user.username}" /> | ||
70 | + </h:outputLink> | ||
71 | + </p:column> | ||
72 | + <p:column styleClass="third" sortBy="#{user.firstName} #{user.lastName}"> | ||
73 | + <f:facet name="header">Nom</f:facet> | ||
74 | + <h:outputLink value="#{user.traceable.urlRewrite}"> | ||
75 | + <h:outputText value="#{user.firstName} #{user.lastName}" /> | ||
76 | + </h:outputLink> | ||
77 | + </p:column> | ||
78 | + <p:column styleClass="third" sortBy="#{user.email}"> | ||
79 | + <f:facet name="header">Email</f:facet> | ||
80 | + <h:outputText value="#{user.email}" /> | ||
81 | + </p:column> | ||
82 | + <p:column> | ||
83 | + <h:graphicImage value="/images/structure/dVert.gif" rendered="#{user.visible and user.activated}" title="Utilisateur activ" /> | ||
84 | + <h:graphicImage value="/images/structure/dOrange.gif" rendered="#{(not user.visible) and user.activated}" title="Utilisateur dsactiv" /> | ||
85 | + <h:graphicImage value="/images/structure/dRouge.gif" rendered="#{not user.activated}" title="Utilisateur non enregistr" /> | ||
86 | + </p:column> | ||
87 | + <f:facet name="footer"> | ||
88 | + <h:commandLink action="#{userListMgr.goToCreate('user')}" value="Crer un nouvel utilisateur" > | ||
89 | + </h:commandLink> | ||
90 | + </f:facet> | ||
91 | + </p:dataTable> | ||
92 | + <p> | ||
93 | + <h:commandLink action="#{userListMgr.goToCreate('user')}" value="Crer un nouvel utilisateur" | ||
94 | + rendered="#{elementList.rowCount==0}"> | ||
95 | + </h:commandLink> | ||
96 | + </p> | ||
97 | + </div> | ||
13 | </h:form> | 98 | </h:form> |
14 | - <f:metadata> | 99 | + |
15 | - <f:event type="preRenderView" listener="#{userBean.onload}" /> | 100 | + </ui:define> |
16 | - </f:metadata> | 101 | + |
17 | - <ul> | 102 | + <!-- sidebars --> |
18 | - <ui:repeat value="#{userBean.users}" var="user"> | 103 | + <ui:define name="sidebar"> |
19 | - <li>#{user.username}</li> | 104 | + <ui:include src="/includes/top-sidebar-admin.include"/> |
20 | - </ui:repeat> | 105 | + |
21 | - </ul> | 106 | + </ui:define> |
22 | -</f:view> | 107 | + |
23 | -</html> | 108 | +</ui:composition> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
src/main/webapp/listUsers_short.xhtml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||
3 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
4 | +<html xmlns="http://www.w3.org/1999/xhtml" | ||
5 | + xmlns:h="http://xmlns.jcp.org/jsf/html" | ||
6 | + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" | ||
7 | + xmlns:f="http://xmlns.jcp.org/jsf/core"> | ||
8 | +<f:view> | ||
9 | + <h:form> | ||
10 | + <h:commandLink action="home"> | ||
11 | + <h:outputText value="Menu principal"/> | ||
12 | + </h:commandLink> | ||
13 | + </h:form> | ||
14 | + <f:metadata> | ||
15 | + <f:event type="preRenderView" listener="#{addUserBean.onload}" /> | ||
16 | + </f:metadata> | ||
17 | + <ul> | ||
18 | + <ui:repeat value="#{addUserBean.users}" var="user"> | ||
19 | + <li>#{user.username}</li> | ||
20 | + </ui:repeat> | ||
21 | + </ul> | ||
22 | +</f:view> | ||
23 | +</html> |
src/main/webapp/updateUser.xhtml
0 → 100644
1 | +<?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | +<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
3 | +<ui:composition xmlns="http://www.w3.org/1999/xhtml" | ||
4 | + xmlns:ui="http://java.sun.com/jsf/facelets" | ||
5 | + xmlns:h="http://java.sun.com/jsf/html" | ||
6 | + xmlns:f="http://java.sun.com/jsf/core" | ||
7 | + xmlns:s="http://jboss.com/products/seam/taglib" | ||
8 | + xmlns:a4j="http://richfaces.org/a4j" | ||
9 | + xmlns:rich="http://richfaces.org/rich" | ||
10 | + xmlns:p="http://primefaces.org/ui" | ||
11 | + template="#{theme.template}"> | ||
12 | + | ||
13 | + <!-- content --> | ||
14 | + <ui:define name="content"> | ||
15 | + <h2><h:outputText value="Cration " rendered="#{empty(addUserBean.userId)}"/> | ||
16 | + <h:outputText value="Modification " rendered="#{not empty(addUserBean.userId)}"/>d'un utilisateur</h2> | ||
17 | + | ||
18 | + <p> | ||
19 | + Les rles sont hirarchiss, et la hirarchie est automatiquement applique lorsque vous | ||
20 | + sauvegardez un utilisateur. Par exemple, un administrateur est forcment visiteur, recrue | ||
21 | + et contributeur. Si vous souhaitez laisser la possibilit un utilisateur de s'identifier | ||
22 | + sur le site, mais sans pouvoir raliser aucune action, il suffit de le dsinscrire de tous | ||
23 | + les rles y compris celui de visiteur. Mettre un utilisateur la "retraite" le dsinscrit | ||
24 | + automatiquement de tous les groupes, l'exception du groupe des simples visiteurs. | ||
25 | + <br/> | ||
26 | + <strong>Attention :</strong> chaque section est sauvegarde et utilisable sparemment. | ||
27 | + </p> | ||
28 | + <p> | ||
29 | + <h:messages globalOnly="true" errorClass="errorMsg" infoClass="infoMsg"/> | ||
30 | + </p> | ||
31 | + <p:panel headerClass="colDroite" bodyClass="colTexte" label="Informations" | ||
32 | + switchType="ajax" opened="true"> | ||
33 | + <h:form> | ||
34 | +<!-- <s:validateAll>--> | ||
35 | + | ||
36 | + <table class="noMargin"> | ||
37 | + <tr> | ||
38 | + <td><h:outputLabel for="username">Identifiant *</h:outputLabel></td> | ||
39 | + <td><h:inputText id="username" value="#{addUserBean.username}" required="true" style="width: 175px;" maxlength="50"/></td> | ||
40 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="username"/></td> | ||
41 | + </tr> | ||
42 | + <tr> | ||
43 | + <td><h:outputLabel for="firstname">Prnom *</h:outputLabel></td> | ||
44 | + <td><h:inputText id="firstname" value="#{addUserBean.firstName}" required="true" style="width: 175px;" maxlength="50"/></td> | ||
45 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="firstname"/></td> | ||
46 | + </tr> | ||
47 | + <tr> | ||
48 | + <td><h:outputLabel for="lastname">Nom *</h:outputLabel></td> | ||
49 | + <td><h:inputText id="lastname" value="#{addUserBean.lastName}" required="true" style="width: 175px;" maxlength="50"/></td> | ||
50 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="lastname"/></td> | ||
51 | + </tr> | ||
52 | + <tr> | ||
53 | + <td><h:outputLabel for="nickname">Pseudonyme</h:outputLabel></td> | ||
54 | + <td><h:inputText id="nickname" value="#{addUserBean.nickName}" style="width: 175px;" maxlength="50"/></td> | ||
55 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="nickname"/></td> | ||
56 | + </tr> | ||
57 | + <tr> | ||
58 | + <td><h:outputLabel for="mask">Affichage public du nom *</h:outputLabel></td> | ||
59 | + <td> | ||
60 | + <h:selectOneMenu id="mask" value="#{addUserBean.displayNameMask}" converter="omnifaces.SelectItemsConverter" required="true" style="width: 175px;"> | ||
61 | + <f:selectItems value="#{addUserBean.allDisplayNameMasks}"/> | ||
62 | + </h:selectOneMenu> | ||
63 | + </td> | ||
64 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="mask"/></td> | ||
65 | + </tr> | ||
66 | + <tr> | ||
67 | + <td><h:outputLabel for="email">Adresse email *</h:outputLabel></td> | ||
68 | + <td><h:inputText id="email" value="#{addUserBean.email}" required="true" style="width: 175px;" maxlength="100"><f:validator validatorId="validateEmail"/></h:inputText></td> | ||
69 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="email"/></td> | ||
70 | + </tr> | ||
71 | + <tr> | ||
72 | + <td><h:outputLabel for="anonymous">Profil Anonyme ?</h:outputLabel></td> | ||
73 | + <td><h:selectBooleanCheckbox id="anonymous" value="#{addUserBean.anonymous}"/></td> | ||
74 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="anonymous"/></td> | ||
75 | + </tr> | ||
76 | + <tr> | ||
77 | + <td><h:outputLabel for="password">Mot de passe *</h:outputLabel></td> | ||
78 | + <td><h:inputSecret id="password" redisplay="true" value="#{addUserBean.password}" required="true" style="width: 175px;" maxlength="50"/></td> | ||
79 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="password"/></td> | ||
80 | + </tr> | ||
81 | + <tr> | ||
82 | + <td><h:outputLabel for="roles">Rles</h:outputLabel></td> | ||
83 | + <td> | ||
84 | + <h:selectManyCheckbox id="roles" value="#{addUserBean.roles}" converter="omnifaces.SelectItemsConverter" layout="pageDirection" > | ||
85 | + <f:selectItems value="#{addUserBean.availableUserRoles}" var="role" label="#{role.rolename}" /> | ||
86 | + </h:selectManyCheckbox> | ||
87 | + </td> | ||
88 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="roles"/></td> | ||
89 | + </tr> | ||
90 | + <tr> | ||
91 | + <td valign="top"> | ||
92 | + <h:outputLabel for="text">Texte de prsentation</h:outputLabel><br/> | ||
93 | + <h:message styleClass="errorMsg" for="text"/> | ||
94 | + </td> | ||
95 | + <td colspan="2"><rich:editor id="text" value="#{addUserBean.presentation}" configuration="article-editor"/></td> | ||
96 | + </tr> | ||
97 | + <ui:fragment rendered="#{not empty(addUserBean.userId)}"> | ||
98 | + <tr> | ||
99 | + <td colspan="3" class="taCenter"> | ||
100 | + <h:dataTable style="width:75%" headerClass="colDroite" | ||
101 | + var="userProperty" value="#{common.availableUserProperties}"> | ||
102 | + <h:column> | ||
103 | + <f:facet name="header"><h:outputLabel>Proprits</h:outputLabel></f:facet> | ||
104 | + <h:outputText value="#{userProperty.tag}"/> | ||
105 | + </h:column> | ||
106 | + <h:column> | ||
107 | + <h:inputText id="prop_#{userProperty.name}" value="#{userMgr.userAttributes[userProperty.name].value}" style="width: 175px;"> | ||
108 | + <f:validateLength maximum="200"/> | ||
109 | + </h:inputText> | ||
110 | + </h:column> | ||
111 | + </h:dataTable> | ||
112 | + </td> | ||
113 | + </tr> | ||
114 | + </ui:fragment> | ||
115 | + <tr> | ||
116 | + <td><h:outputLabel for="criticProvider">Archives de critiques ?</h:outputLabel></td> | ||
117 | + <td><h:selectBooleanCheckbox id="criticProvider" value="#{addUserBean.criticProvider}"/></td> | ||
118 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="criticProvider"/></td> | ||
119 | + </tr> | ||
120 | + <tr> | ||
121 | + <td><h:outputLabel for="visible">Visible ?</h:outputLabel></td> | ||
122 | + <td><h:selectBooleanCheckbox id="visible" value="#{addUserBean.visible}"/></td> | ||
123 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="visible"/></td> | ||
124 | + </tr> | ||
125 | + <tr> | ||
126 | + <td><h:outputLabel for="activated">Activ ?</h:outputLabel></td> | ||
127 | + <td><h:selectBooleanCheckbox id="activated" value="#{addUserBean.activated}"/></td> | ||
128 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="activated"/></td> | ||
129 | + </tr> | ||
130 | + <tr> | ||
131 | + <td colspan="3" class="taCenter"> | ||
132 | + <h:commandButton id="update" value="Enregistrer" action="#{userMgr.save}"/>  | ||
133 | + <h:commandButton id="cancel" value="Annuler" action="#{userMgr.cancel}" immediate="true"> | ||
134 | + </h:commandButton> | ||
135 | + </td> | ||
136 | + </tr> | ||
137 | + </table> | ||
138 | + <!--</s:validateAll>--> | ||
139 | + </h:form> | ||
140 | + </p:panel> | ||
141 | + | ||
142 | + <p:panel headerClass="colDroite" bodyClass="colTexte" label="Import d'anciennes donnes" | ||
143 | + switchType="ajax" opened="true" rendered="#{not empty(addUserBean.userId)}"> | ||
144 | + <h:form> | ||
145 | +<!-- <s:validateAll>--> | ||
146 | + <p> | ||
147 | + La prsente section est destine raffecter des critiques, des commentaires ou des | ||
148 | + articles posts dans le Grog v1 par cet utilisateur. N'effectuez cette opration qu'en | ||
149 | + connaissance de cause, et aprs avoir ventuellement vrifi l'identit de la personne | ||
150 | + (par exemple, via le systme de demande de raffectation prsent sur la page des profils | ||
151 | + utilisateurs). Entrez l'adresse email utilise dans les anciennes critiques (ou les anciens | ||
152 | + articles) ou son pseudo, et cliquez sur le bouton 'Affecter des critiques'. Le lien se fera automatiquement, | ||
153 | + aussi bien pour les critiques sur les jeux pros que pour les commentaires sur les jdra, ou | ||
154 | + pour les articles, s'il y a lieu. | ||
155 | + </p> | ||
156 | + <p> | ||
157 | + <strong>Attention !</strong> Les donnes, une fois affectes, ne pourront plus tre raffectes | ||
158 | + par ce biais. D'autre part, entrez la vritable adresse email, incluant le caractre '@', | ||
159 | + mme si l'utilisateur a post des critiques sous une adresse masque (ne lancez pas cette | ||
160 | + commande avec titi_AT_toto.fr mais avec titi@toto.fr, par exemple). | ||
161 | + <br/> | ||
162 | + Si vous souhaitez faire l'affectation pour un pseudo d'auteur, sans email, rentrez simplement le nom | ||
163 | + de l'auteur. | ||
164 | + </p> | ||
165 | + <table class="noMargin"> | ||
166 | + <tr> | ||
167 | + <td><h:outputLabel for="import_email">Email / Pseudo</h:outputLabel></td> | ||
168 | + <td><h:inputText id="import_email" value="#{userMgr.importEmail}" required="true" style="width: 175px;"/></td> | ||
169 | + <td><h:message errorClass="errorMsg" infoClass="infoMsg" for="import_email"/></td> | ||
170 | + </tr> | ||
171 | + | ||
172 | + <tr> | ||
173 | + <td colspan="3" class="taCenter"> | ||
174 | + <h:commandButton id="import" value="Affecter des critiques" action="#{userMgr.importCritics}"/> | ||
175 | + </td> | ||
176 | + </tr> | ||
177 | + </table> | ||
178 | + <!--</s:validateAll>--> | ||
179 | + </h:form> | ||
180 | + </p:panel> | ||
181 | + | ||
182 | + <h:form rendered="#{not empty(addUserBean.userId)}"> | ||
183 | + <h3>Dlgations</h3> | ||
184 | + <p> | ||
185 | + Les sections suivantes rpertorient les diffrents lments pour lesquels l'utilisateur | ||
186 | + s'est vu dlguer la possibilit de modifier certaines donnes. Attention, ceci ne correspond | ||
187 | + par la possibilit, pour un contributeur, de mettre jour les donnes de la base. | ||
188 | + Il s'agit ici de donner la main un visiteur extrieur sur un ensemble limit d'objets. | ||
189 | + Par exemple, permettre un diteur d'accder son planning ou sa fiche d'diteur, | ||
190 | + ou encore permettre un auteur de jeu indpendant de modifier la fiche de son jeu. | ||
191 | + Toute modification par un dlgu peut donner lieu un message d'avertissement la | ||
192 | + passerelle, ou ce que l'lment repasse en validation... | ||
193 | + </p> | ||
194 | + <p> | ||
195 | + <strong>Avertissement :</strong> pour les diteurs et les partenaires, veillez bien toujours | ||
196 | + vrifier l'identit des personnes dlgues, et vrifier ventuellement par courriel | ||
197 | + ou tlphone que la demande de dlgation a bien t faite par l'diteur. L'affichage | ||
198 | + des sections "dlgations" ci-dessous peut tre un peu lent, en raison du nombre d'objets | ||
199 | + dans la base, soyez patient aprs avoir cliqu... | ||
200 | + </p> | ||
201 | + <p:panel headerClass="colDroite" bodyClass="colTexte" label="Dlgation - Jeux amateurs" | ||
202 | + switchType="ajax" opened="false" eventsQueue="myEvents" requestDelay="400"> | ||
203 | + <rich:pickList styleClass="noMargin" | ||
204 | + showButtonsLabel="false" listsHeight="200px" sourceListWidth="200px" targetListWidth="200px" | ||
205 | + value="#{userMgr.delegatedIndieGames}" > | ||
206 | + <s:selectItems value="#{common.indieGames}" var="indieGame" label="#{indieGame.title}"/> | ||
207 | + <s:convertEntity /> | ||
208 | + </rich:pickList> | ||
209 | + <p> | ||
210 | + <h:commandButton value="Enregistrer les dlgations" action="#{userMgr.saveDeleg}"> | ||
211 | + </h:commandButton> | ||
212 | + </p> | ||
213 | + </p:panel> | ||
214 | + | ||
215 | + <p:panel headerClass="colDroite" bodyClass="colTexte" label="Dlgation - diteurs" | ||
216 | + switchType="ajax" opened="false" eventsQueue="myEvents" requestDelay="400"> | ||
217 | + <rich:pickList styleClass="noMargin" | ||
218 | + showButtonsLabel="false" listsHeight="200px" sourceListWidth="200px" targetListWidth="200px" | ||
219 | + value="#{userMgr.delegatedPublishers}" > | ||
220 | + <s:selectItems value="#{common.availablePublishers}" var="pub" label="#{pub.pubName}"/> | ||
221 | + <s:convertEntity /> | ||
222 | + </rich:pickList> | ||
223 | + <p> | ||
224 | + <h:commandButton value="Enregistrer les dlgations" action="#{userMgr.saveDeleg}"> | ||
225 | + </h:commandButton> | ||
226 | + </p> | ||
227 | + | ||
228 | + </p:panel> | ||
229 | + | ||
230 | + <p:panel headerClass="colDroite" bodyClass="colTexte" label="Dlgation - Partenaires" | ||
231 | + switchType="ajax" opened="false" eventsQueue="myEvents" requestDelay="400"> | ||
232 | + <rich:pickList styleClass="noMargin" | ||
233 | + showButtonsLabel="false" listsHeight="200px" sourceListWidth="200px" targetListWidth="200px" | ||
234 | + value="#{userMgr.delegatedPartners}" > | ||
235 | + <s:selectItems value="#{common.partnerList}" var="partner" label="#{partner.name}"/> | ||
236 | + <s:convertEntity /> | ||
237 | + </rich:pickList> | ||
238 | + <p> | ||
239 | + <h:commandButton value="Enregistrer les dlgations" action="#{userMgr.saveDeleg}"> | ||
240 | + </h:commandButton> | ||
241 | + </p> | ||
242 | + | ||
243 | + </p:panel> | ||
244 | + | ||
245 | + <p:panel headerClass="colDroite" bodyClass="colTexte" label="Dlgation - Biographies" | ||
246 | + switchType="ajax" opened="false" eventsQueue="myEvents" requestDelay="400"> | ||
247 | + <rich:pickList styleClass="noMargin" | ||
248 | + showButtonsLabel="false" listsHeight="200px" sourceListWidth="200px" targetListWidth="200px" | ||
249 | + value="#{userMgr.delegatedAuthors}" > | ||
250 | + <s:selectItems value="#{common.availableAuthors}" var="author" label="#{author.listName}"/> | ||
251 | + <s:convertEntity /> | ||
252 | + </rich:pickList> | ||
253 | + <p> | ||
254 | + <h:commandButton value="Enregistrer les dlgations" action="#{userMgr.saveDeleg}"> | ||
255 | + </h:commandButton> | ||
256 | + </p> | ||
257 | + </p:panel> | ||
258 | + </h:form> | ||
259 | + | ||
260 | + </ui:define> | ||
261 | + | ||
262 | + <!-- sidebars --> | ||
263 | + <ui:define name="sidebar"> | ||
264 | + <ui:include src="/includes/top-sidebar-admin.include"/> | ||
265 | + | ||
266 | + </ui:define> | ||
267 | + | ||
268 | +</ui:composition> | ||
269 | + |
-
Please register or login to post a comment