Skip to content

Commit 3f7f950

Browse files
committed
Ajout du filtrage par pdc sur le tag PagesList
1 parent 057b0a1 commit 3f7f950

File tree

2 files changed

+81
-6
lines changed

2 files changed

+81
-6
lines changed

src/main/java/com/silverpeas/tags/navigation/PageListeTag.java

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import com.silverpeas.tags.kmelia.KmeliaTagUtil;
1515
import com.silverpeas.tags.navigation.config.Configurateur;
1616
import com.silverpeas.tags.navigation.links.LinkGeneratorFactory;
17+
import com.silverpeas.tags.pdc.PdcTagUtil;
18+
import com.stratelia.silverpeas.pdc.model.Value;
1719
import com.stratelia.webactiv.util.node.model.NodeDetail;
1820
import com.stratelia.webactiv.util.publication.model.PublicationDetail;
1921

@@ -26,10 +28,14 @@ public class PageListeTag extends TagSupport {
2628
private static final long serialVersionUID = 7316128024807549206L;
2729
private static final String TOPIC_ID_PREFIX = "topicId-";
2830

29-
private KmeliaTagUtil themetracker = null;
31+
private KmeliaTagUtil themetracker = null;
32+
private PdcTagUtil pdc = new PdcTagUtil(null, null, 0, null);
3033
private String idTopicRoot;
3134
private String currentNumber;
35+
private String idAxisFiltering = null;
36+
private String axisValueFilter = null;
3237
private String id;
38+
private String classNamesFiltered;
3339

3440

3541
/**
@@ -40,6 +46,30 @@ public void setIdTopicRoot(String idTopicRoot) {
4046
this.idTopicRoot = idTopicRoot;
4147
}
4248

49+
/**
50+
* Classes appliquées si la publication est positionnée sur idAxisFiltering avec la valeurs "axisValueFilter".
51+
* @param classNamesFiltered
52+
*/
53+
public void setClassNamesFiltered(String classNamesFiltered) {
54+
this.classNamesFiltered = classNamesFiltered;
55+
}
56+
57+
/**
58+
* Id de l'axe qui va servir pour filtrer l'arborescence.
59+
* @param idAxisFiltering
60+
*/
61+
public void setIdAxisFiltering(String idAxisFiltering) {
62+
this.idAxisFiltering = idAxisFiltering;
63+
}
64+
65+
/**
66+
* Valeur du filtre de l'arborescence.
67+
* @param axisValueFilter
68+
*/
69+
public void setAxisValueFilter(String axisValueFilter) {
70+
this.axisValueFilter = axisValueFilter;
71+
}
72+
4373
/**
4474
* Id de l'élément HTML contenant le menu (UL).
4575
*/
@@ -110,10 +140,12 @@ private void browse(JspWriter out, NodeDetail rootTopic) {
110140
PublicationDetail pub = (PublicationDetail) iPubs.next();
111141
html.setLength(0);
112142
html.append("<li id='");
113-
html.append(buildId(TOPIC_ID_PREFIX, rootTopic, number) + "'");
114-
if (Integer.parseInt(currentNumber)==number) {
115-
html.append("' class='item-selected'");
116-
}
143+
html.append(buildId(TOPIC_ID_PREFIX, rootTopic, number));
144+
145+
html.append("' class='");
146+
html.append(getClassNameByPublication(pub, number));
147+
html.append("'");
148+
117149
html.append(">");
118150
html.append("<a href='");
119151
html.append(generateFullSemanticPath(rootTopic, pub, number));
@@ -131,6 +163,34 @@ private void browse(JspWriter out, NodeDetail rootTopic) {
131163
}
132164
}
133165

166+
/**
167+
* Retourne le nom de la classe css à appliquer pour lien donné.
168+
* @param pub
169+
* @return
170+
* @throws Exception
171+
*/
172+
private String getClassNameByPublication(PublicationDetail pub, int number) throws Exception {
173+
StringBuffer className = new StringBuffer("");
174+
if (Integer.parseInt(currentNumber)==number) {
175+
className.append("item-selected");
176+
}
177+
178+
if (idAxisFiltering != null && axisValueFilter != null && !idAxisFiltering.isEmpty() && !axisValueFilter.isEmpty()) {
179+
@SuppressWarnings("unchecked")
180+
Collection<Value> values = pdc.getValuesOnAxis(pub.getId()+","+themetracker.getComponentInst().getId()+","+idAxisFiltering);
181+
Iterator<Value> iValues = values.iterator();
182+
while (iValues.hasNext()) {
183+
Value v = (Value) iValues.next();
184+
if (v.getName().equals(axisValueFilter) && classNamesFiltered != null) {
185+
className.append(" ");
186+
className.append(classNamesFiltered);
187+
break;
188+
}
189+
}
190+
}
191+
return className.toString().trim();
192+
}
193+
134194
/**
135195
* Print html.
136196
* @param out

src/main/resources/META-INF/silverpeas-navigation.tld

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,22 @@
201201
<name>currentNumber</name>
202202
<required>true</required>
203203
<rtexprvalue>true</rtexprvalue>
204-
</attribute>
204+
</attribute>
205+
<attribute>
206+
<name>idAxisFiltering</name>
207+
<required>false</required>
208+
<rtexprvalue>true</rtexprvalue>
209+
</attribute>
210+
<attribute>
211+
<name>axisValueFilter</name>
212+
<required>false</required>
213+
<rtexprvalue>true</rtexprvalue>
214+
</attribute>
215+
<attribute>
216+
<name>classNamesFiltered</name>
217+
<required>false</required>
218+
<rtexprvalue>true</rtexprvalue>
219+
</attribute>
205220
</tag>
206221

207222
<tag>

0 commit comments

Comments
 (0)