diff --git a/hiboo/application/social.py b/hiboo/application/social.py index f08973bb5ddbe46a8e8f9849dd0486f09aa27814..e47678a25e854b78db074ab9d1467b91ff30fcb4 100644 --- a/hiboo/application/social.py +++ b/hiboo/application/social.py @@ -47,10 +47,6 @@ class SynapseApplication(base.SAMLApplication): admin_token = fields.PasswordField(_("Synapse administrator token")) submit = fields.SubmitField(_('Submit')) - class SearchForm(flask_wtf.FlaskForm): - keyword = fields.StringField(_("Search keyword")) - submit = fields.SubmitField(_("Search")) - def populate_service(self, form, service): service.config.update({ "application_uri": form.application_uri.data, @@ -81,14 +77,39 @@ class SynapseApplication(base.SAMLApplication): """ Search by keyword among server rooms, including non-published rooms """ - form = SynapseApplication.SearchForm() + class SearchForm(flask_wtf.FlaskForm): + keyword = fields.StringField(_("Search keyword")) + submit = fields.SubmitField(_("Search")) + form = SearchForm() if form.validate_on_submit(): client = self.get_axon(service) results = client.list_rooms(False, search_term=form.keyword.data) else: results = [] return flask.render_template( - "application_synapse/rooms.html", form=form, results=results) + "application_synapse/rooms.html", form=form, results=results, + service=service + ) + + @base.action("Get room details") + def get_room(self, service): + """ Display some room details, including members + """ + class RoomForm(flask_wtf.FlaskForm): + roomid = fields.StringField(_("RoomID")) + submit = fields.SubmitField(_("Display")) + form = RoomForm() + roomid = flask.request.values.get("roomid") + if roomid: + client = self.get_axon(service) + room = client.get_room(roomid) + members = client.get_room_members(roomid) + else: + room = members = None + return flask.render_template( + "application_synapse/room.html", form=form, room=room, + members=members + ) @register("writefreely") diff --git a/hiboo/application/templates/application_synapse/room.html b/hiboo/application/templates/application_synapse/room.html new file mode 100644 index 0000000000000000000000000000000000000000..09b2155ea892f07bf72c19eb51fe0999f94e9eb7 --- /dev/null +++ b/hiboo/application/templates/application_synapse/room.html @@ -0,0 +1,30 @@ +{% import "macros.html" as macros %} +{{ macros.form(form) }} +{% if room.get("room_id") %} +<div class="row"> + <div class="col-md-6"> + <div class="table-responsive no-padding"> + <table class="table table-hover"> + <tr> + <th>{% trans %}Member{% endtrans %}</th> + </tr> + {% for member in members["members"] %} + <tr> + <td>{{ member }}</td> + </tr> + {% endfor %} + </table> + </div> + </div> + <div class="col-md-6"> + <dl> + {% for name, value in room.items() %} + <dt>{{ name }}</dt> + <dd>{{ value }}</dd> + {% endfor %} + </dl> + </div> + </div> + </div> +</div> +{% endif %} \ No newline at end of file diff --git a/hiboo/application/templates/application_synapse/rooms.html b/hiboo/application/templates/application_synapse/rooms.html index b26ff6745e0c3bf56ff79ccc693b85f501722c81..04cb9960cccda8c2a4d2f0cc5ef6d13994f8da42 100644 --- a/hiboo/application/templates/application_synapse/rooms.html +++ b/hiboo/application/templates/application_synapse/rooms.html @@ -15,7 +15,7 @@ </tr> {% for room in results["rooms"] %} <tr> - <td>{{ room["room_id"] }}</td> + <td><a href="{{ url_for("service.action", service_uuid=service.uuid, action="get_room", roomid=room["room_id"]) }}">{{ room["room_id"] }}</a></td> <td>{{ room["canonical_alias"] }}</td> <td>{{ room["name"] }}</td> <td>{{ room["joined_members"] }} ({{ room["joined_local_members"] }})</td> diff --git a/hiboo/service/templates/service_list.html b/hiboo/service/templates/service_list.html index fbf82e7a3fbe46e6924d45981b40c24342f8a910..996c3b96e3b4cc96ff114cca589bf93819baadff 100644 --- a/hiboo/service/templates/service_list.html +++ b/hiboo/service/templates/service_list.html @@ -28,7 +28,7 @@ <td> <a href="{{ url_for("profile.list_for_service", service_uuid=service.uuid)}}">Profiles</a> <a href="{{ url_for(".edit", service_uuid=service.uuid)}}">Edit</a> - {% for action, (label, profile, quick) in app.actions.items() %} + {% for action, (label, profile, quick, function) in app.actions.items() %} {% if quick and not profile %} <a href="{{ url_for(".action", service_uuid=service.uuid, action=action) }}">{{ label }}</a> {% endif %}