留言板

Benutzerliste anzeigen im eigenen Portlet

Robert Heiner,修改在13 年前。

Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 10 加入日期: 10-11-15 最近的帖子
Hallo,

ich möchte folgendes Szenario umsetzen:

Ein Gast erstellt sich einen neuen Account und wählt über ein Kontrollkästchen aus, dass er als Benutzer in einer Liste veröffentlich werden möchte.

Das heißt ich brauch eine dynamische Liste die alle registrierten Benutzer anzeigt, die dieses Kontrollkästchen ausgewählt haben.


Jetzt war meine Überlegung dazu, dass ich das vorhandene Portlet "directory" bzw. "Verzeichnis" kopiere, die Searchfunktion rausnehme und anschließend die Ansicht etwas überarbeite.

Jedoch finde ich keine Beschreibung dazu wie ich so etwas umsetze.

Ein Standardportlet habe ich mir bereits erstellt.

Aber was muss ich genau kopieren bzw. anpassen, damit ich für den ersten Schritt zumindest eine eigene 1 zu 1 Kopie des "directory"-Portlets bekomme ??

Jede JSP importiert verschachtelt packages, die wiederum irgendwo auf Klassen verweisen, die ganze Struktur ist mir immernoch ein Rätsel das nirgendswo aufgelöst wird.

Oder hat vielleicht jemand eine Alternative Lösung, bin für jeden Vorschlag offen! emoticon


Kann mir bitte jemand helfen?
thumbnail
Kolja Köster,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

Regular Member 帖子: 164 加入日期: 09-5-11 最近的帖子
Robert Heiner:

Oder hat vielleicht jemand eine Alternative Lösung, bin für jeden Vorschlag offen! emoticon


Query auf den entsprechenden Table in der Datenbank, alle Benuzernamen mit der Bedingung, daß Dein Anzeigekennzeichen gesetzt ist (Customfield). Ergebnisse in nen HTML Table packen und anzeigen.

Oder verstehe ich Dich nicht richtig?

Gruß
Kolja
Robert Heiner,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 10 加入日期: 10-11-15 最近的帖子
Danke für deine Antwort Kolja!

Das war auch mein erster Gedanke, jedoch wie sieht dies bei Liferay in der Praxis aus?
Momentan, solange entwickelt wird, läuft der Tomcat auf der Hibernate Datenbank.

Wie und von wo kann ich auf die Datenbank zugreifen? Wie setze ich den Rest anschließend um.

Es muss doch irgendwie möglich sein das directory portlet zu kopieren und dieses anschließend zurechtzubasteln!??

Bitte nicht wundern, ich bin Neuling emoticon

Gruß
Robert
thumbnail
Kolja Köster,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

Regular Member 帖子: 164 加入日期: 09-5-11 最近的帖子
Robert Heiner:

Wie und von wo kann ich auf die Datenbank zugreifen? Wie setze ich den Rest anschließend um.
Robert

Das Finden und der Zugriff sollten doch über JNDI geregelt werden, wenn ich mich nicht irre. Gibt es mehrere passende Einträge im Wiki zu:

Klick
Klick
Klick

Wie nun der Query ausehen muß (also wie die Tabelle und die Felder heißen), kann ich Dir aus dem Stand leider auch nicht sagen. Aber ich denke das wird sich ebenfalls herausbekommen lassen.

Gruß
Kolja
thumbnail
Felix Meinhold,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 8 加入日期: 07-12-3 最近的帖子
Hi Robert,


ich würde das mit den Liferay Services im Plugin und Custom Attributes machen, ein gutes Beispiel findet sich im Wiki:

http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/How%20to%20use%20Custom%20Attributes%20to%20enhance%20Users

Nutzt du Eclipse?
Die Services erhältst du automatisch, wenn du zum Beispiel mit der Liferay IDE ein Liferay Portlet Plugin Project anlegst und darin ein neues MVC Portlet erstellst. Ist empfehlenswert für Einsteiger.

Gruß,
Felix
Robert Heiner,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 10 加入日期: 10-11-15 最近的帖子
Gibt es mehrere passende Einträge im Wiki zu:

Klick
Klick
Klick


Danke für die Links, leider sind mir diese nicht so schlüssig, ich steh immernoch vor einem großen Fragezeichen.

Hast du vielleicht eine Idee zu der Option mit dem directory-Portlet ??


ich würde das mit den Liferay Services im Plugin und Custom Attributes machen, ein gutes Beispiel findet sich im Wiki:

http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/How%20to%20use%20Custom%20Attributes%20to%20enhance%20Users


Hi Felix, vielen Dank. Das ist bereits erledigt.
Über diesen Weg habe ich die Custom Fields in die Registrierung und die Userview eingefügt.
Jetzt stehe ich vor dem Problem wie ich die User angezeigt bekomme.

In der SVN, über das sample-jsp-portlet Beispiel hab ich ein leeres Portlet erzeugt.

Jetzt wäre halt mein Wunsch, das directory Portlet zu kopieren und anschließend anzupassen.
Welche Files sind den dafür notwendig? Reicht es wenn ich nur bestimmte jsp-Dateien kopiere und die import-Pfade ändere, oder muss ich hierbei die Java-Files ebenfalls übernehmen?? Und wie gehe dabei vor?
thumbnail
Kolja Köster,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

Regular Member 帖子: 164 加入日期: 09-5-11 最近的帖子
Robert Heiner:

Danke für die Links, leider sind mir diese nicht so schlüssig, ich steh immernoch vor einem großen Fragezeichen.

Dann erklär doch einmal, wo es hapert.

Robert Heiner:

Hast du vielleicht eine Idee zu der Option mit dem directory-Portlet ??

Nein, denn dieser Ansatz ist aus meiner Sicht nicht geschickt, wie man Dir auch schon geantwortet hat. Datenbankabfragen aus nem Portlet heraus passierten Dir vermutlich in gefühlt 80% aller Fälle, in denen Du eins baust somit ist es schlau das einmal händisch zu bauen. Ich habe nen Beispiel dazu, aber da habe ich die Datenbankanbindung zu Fuß gebaut deshalb fürchte ich, daß es Dir nicht allzuviel hilft, aber ich kann es Dir gern zur Verfügung stellen, wenn Du möchtest. Wenn sich ein Zugriff über Liferay Services erledigen läßt (so habe ich den Beitrag von Felix jedenfalls verstanden) würde ich das auch nutzen wollen, weil Du Dir damit vermutlich nie wieder die Finger brechen mußt, wenn Du das Konzept einmal verstanden hast. Ich muß aber gestehen, daß ich diesen Weg auch bisher nicht kannte, ich kann mich nur noch in meiner Freizeit mit Liferay befassen und davon hab ich im Moment nicht so viel ^^.

Gruß
Kolja
thumbnail
Felix Meinhold,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 8 加入日期: 07-12-3 最近的帖子
Hi Robert,

Liferay sieht eigentlich nur das Ändern eines Portlets (am besten mittels Hooks) vor- nicht das "Kopieren".

Dein Wunsch, das Directory Portlet zu kopieren, ist meiner Meinung nach komplizierter, als ein Portlet "from scratch" zu entwicklen.
Grundsätzlich findest du alle jsps zum Portlet (wie du sicher schon weisst) unter html/portlet/<porletname>.
Natürlich benötigst du dann auch die struts Konfiguration, die Tiles Definitionen und die ganzen Java Actions.

Hilfreich für die Actions ist struts-config.xml und liferay-portlet.xml, um den struts path zu finden, der für das jeweilige portlet zuständig ist.

Gruß,
Felix
Tarkan Corak,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

Regular Member 帖子: 141 加入日期: 08-10-7 最近的帖子
Hi Robert,

Nimm statt dem Directory Portlet lieber das Members Portlet aus der Anwendung "social-networking-portlet". Das hat den Vorteil, dass es (im Gegensatz zum Directory Portlet) ein externes Portlet ist. Somit dürften Erweiterungen einfacher umsetzbar sein. Und außerdem passt es eher zu deinen Anforderungen. In view_members.jspf findet die Suche nach den anzuzeigenden Benutzern statt. Wenn du also dort den Code anpasst, sollte es genau das Gewünschte anzeigen.

Viel Glück
Tarkan
Robert Heiner,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 10 加入日期: 10-11-15 最近的帖子
@Kolja

Nein, denn dieser Ansatz ist aus meiner Sicht nicht geschickt, wie man Dir auch schon geantwortet hat. Datenbankabfragen aus nem Portlet heraus passierten Dir vermutlich in gefühlt 80% aller Fälle, in denen Du eins baust somit ist es schlau das einmal händisch zu bauen.


Da hast du natürlich Recht, jedoch fehlen mir dazu ganz ehrlich die nötigen Kenntnisse und ich check den ganzen Aufbau noch immer nicht, wie die Daten aus der DB geholt werden, diese übergeben werden und über Java, Velocity, Jsp, XML usw. verarbeitet werden.
Ich versuche nur die Aufgabe zu lösen...emoticon

@Tarkan
Vielen Dank für den Tip, hat super funktioniert!
Jetzt stellt sich mir die Frage was da rein gehört, damit die custom fields mit angezeigt werden.

Wenn ich das richtig sehe, werden in der view_members.jspf

// User display

	row.addJSP("/members/user_display.jsp", application, request, response);

	// Add result row

	resultRows.add(row);


über user_display.jsp die Userdaten angezeigt. Oder verstehe ich da was falsch?

<liferay-ui:user-display userId="<%= member.getUserId() %>" userName="<%= member.getFullName() %>" />


Wie spreche ich nun meine Custom Field Werte an und bekomme diese darin angezeigt?
Tarkan Corak,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

Regular Member 帖子: 141 加入日期: 08-10-7 最近的帖子
Schau mal, ob dir dieser Artikel weiterhilft.
Robert Heiner,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 10 加入日期: 10-11-15 最近的帖子
Danke, die Attribute sind jetzt drin.
Musste nur noch die passenden User-Objekte übergeben, in dem Fall die "members".

<liferay-ui:custom-attribute className="<%= User.class.getName() %>" classPK="<%= (member != null) ? member.getUserId() : 0 %>" editable="<%= false %>" label="<%= true %>" name="City" />


Wie kann ich nun auf den Attributwert zugreifen und diesen auslesen?

Damit ich sagen kann:
Liste nur die Benutzer auf, bei denen das primitive Custom-Attribut auf "true" gesetzt ist.

Der obige Code zeigt das Attribut ja nur an.
Robert Heiner,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 10 加入日期: 10-11-15 最近的帖子
Habe immernoch das Problem, wie ich den Wert eines Custom-Fields abgefragt bekomme.

Den Link vom Tarkan habe ich dazu zur Hilfe genommen, danke dafür, leider funktioniert das noch nicht.

Es sollen nur die Benutzer aufgelistet werden, die den Wert "True" in dem Custom-Field mit dem Namen "Entry Members" gesetzt haben.

In der view_members.jspf habe ich die oberen 2 Codezeilen laut dem "How to use Custom Attributes ..."-Wiki angepasst.

Wieso funktioniert das nicht, hat jemand eine Idee?

[b]LinkedHashMap userParams = new LinkedHashMap();

	userParams.put("Entry Members", "True");[/b]

int total = UserLocalServiceUtil.searchCount(company.getCompanyId(), null, Boolean.TRUE, userParams);

searchContainer.setTotal(total);

List<user> results = UserLocalServiceUtil.search(company.getCompanyId(), null, Boolean.TRUE, userParams, searchContainer.getStart(), searchContainer.getEnd(), new UserLoginDateComparator());

searchContainer.setResults(results);
</user>
Robert Heiner,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 10 加入日期: 10-11-15 最近的帖子
Problem gelöst, habe hierbei die user_display.jsp, folgend als Beispiel erweitert:

String City = (String)member.getExpandoBridge().getAttribute("City");


Und über
&lt;%= City %&gt;
aufgerufen.
Danke für die Hilfe!

Hat noch jemand eine Idee wie ich den "Title"-Attibutwert (Dr., Mr., usw.) eines Users ausgelesen bekomme?
Alexander Boldt,修改在13 年前。

RE: Benutzerliste anzeigen im eigenen Portlet

New Member 帖子: 12 加入日期: 11-1-6 最近的帖子
Hi,

du kommst doch über

ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);


an das UserObject aus Liferay ran. Schau da doch mal nach ob es sowas gibt ?!