Skip to content

Commit 94b9b54

Browse files
committed
fixes igniterealtime#240: Remove scriptaculous
In Openfire 4.8.0, the Scriptaculous javascript library is removed. This plugin should no longer use it. This commit replaces scriptaculous functionality with javascript-native functionality. There is a minor reduction in visual effects as a result.
1 parent 3baa92d commit 94b9b54

11 files changed

+325
-455
lines changed

changelog.html

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ <h1>
4848
<ul>
4949
<li>[<a href='https://github.com/igniterealtime/openfire-monitoring-plugin/issues/232'>Issue #232</a>] - Fix SQL issue when retrieving archived messages from MSSQL</li>
5050
<li>[<a href='https://github.com/igniterealtime/openfire-monitoring-plugin/issues/235'>Issue #235</a>] - Plugin compatible with Openfire 4.8.0</li>
51+
<li>[<a href='https://github.com/igniterealtime/openfire-monitoring-plugin/issues/240'>Issue #240</a>] - Stop using javascript libraries that are removed from Openfire 4.8</li>
5152
<li>[<a href='https://github.com/igniterealtime/openfire-monitoring-plugin/issues/242'>Issue #242</a>] - Fix 'Unable to save XML properties' error</li>
5253
</ul>
5354

src/java/org/jivesoftware/openfire/archive/ConversationUtils.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,12 @@ public ConversationInfo getConversationInfo(long conversationID, boolean formatP
119119
* @return a Map of ConversationInfo objects.
120120
*/
121121
public Map<String, ConversationInfo> getConversations(boolean formatParticipants) {
122-
Map<String, ConversationInfo> cons = new HashMap<String, ConversationInfo>();
122+
Map<String, ConversationInfo> cons = new HashMap<>();
123123
MonitoringPlugin plugin = (MonitoringPlugin)XMPPServer.getInstance().getPluginManager()
124-
.getPluginByName(MonitoringConstants.NAME).get();
124+
.getPluginByName(MonitoringConstants.PLUGIN_NAME).get();
125125
ConversationManager conversationManager = plugin.getConversationManager();
126126
Collection<Conversation> conversations = conversationManager.getConversations();
127-
List<Conversation> lConversations =
128-
Arrays.asList(conversations.toArray(new Conversation[conversations.size()]));
129-
for (Iterator<Conversation> i = lConversations.iterator(); i.hasNext();) {
130-
Conversation con = i.next();
127+
for (Conversation con : conversations) {
131128
ConversationInfo info = toConversationInfo(conversationManager, con, formatParticipants);
132129
cons.put(Long.toString(con.getConversationID()), info);
133130
}

src/java/org/jivesoftware/openfire/plugin/service/MonitoringAPI.java

-8
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,6 @@ public class MonitoringAPI {
1919

2020
private ConversationUtils conversationUtils = new ConversationUtils();
2121

22-
@GET
23-
@Path("/stats/latest")
24-
public Response getLatest(@QueryParam("count") int count,
25-
@QueryParam("mostRecentConversationID") long mostRecentConversationID) {
26-
return Response.ok(statsAction.getNLatestConversations(
27-
count, mostRecentConversationID)).build();
28-
}
29-
3022
@GET
3123
@Path("/stats/updated")
3224
public Response getUpdated(@QueryParam("timePeriod") String timePeriod) {

src/java/org/jivesoftware/openfire/reporting/stats/StatsAction.java

-62
Original file line numberDiff line numberDiff line change
@@ -97,68 +97,6 @@ private Map getUpdatedStat(String statkey, long[] timePeriod) {
9797
return stat;
9898
}
9999

100-
101-
/**
102-
* Retrieves the last n conversations from the system that were created after
103-
* the given conversationID.
104-
*
105-
* @param count the count of conversations to return.
106-
* @param mostRecentConversationID the last conversationID that has been retrieved.
107-
* @return a List of Map objects.
108-
*/
109-
public List<Map<String, Long>> getNLatestConversations(int count, long mostRecentConversationID) {
110-
// TODO Fix plugin name 2 lines below and missing classes
111-
List<Map<String, Long>> cons = new ArrayList<Map<String, Long>>();
112-
MonitoringPlugin plugin = (MonitoringPlugin)XMPPServer.getInstance().getPluginManager().getPluginByName(MonitoringConstants.PLUGIN_NAME).get();
113-
ConversationManager conversationManager = plugin.getConversationManager();
114-
Collection<Conversation> conversations = conversationManager.getConversations();
115-
List<Conversation> lConversations = Arrays.asList(conversations.toArray(new Conversation[conversations.size()]));
116-
Collections.sort(lConversations, conversationComparator);
117-
int counter = 0;
118-
for (Iterator<Conversation> i = lConversations.iterator(); i.hasNext() && counter < count;) {
119-
Conversation con = i.next();
120-
if (mostRecentConversationID == con.getConversationID()) {
121-
break;
122-
} else {
123-
Map mCon = new HashMap();
124-
mCon.put("conversationid", con.getConversationID());
125-
String[] users;
126-
int usersIdx = 0;
127-
if (con.getRoom() == null) {
128-
users = new String[con.getParticipants().size()];
129-
for (JID jid : con.getParticipants()) {
130-
String identifier = jid.toBareJID();
131-
try {
132-
identifier = UserNameManager.getUserName(jid, jid.toBareJID());
133-
}
134-
catch (UserNotFoundException e) {
135-
// Ignore
136-
}
137-
users[usersIdx++] = StringUtils.abbreviate(identifier, 20);
138-
}
139-
}
140-
else {
141-
users = new String[2];
142-
users[0] = LocaleUtils.getLocalizedString("dashboard.group_conversation", MonitoringConstants.NAME);
143-
try {
144-
users[1] = "(<i>" + LocaleUtils.getLocalizedString("muc.room.summary.room") +
145-
": <a href='../../muc-room-occupants.jsp?roomName=" +
146-
URLEncoder.encode(con.getRoom().getNode(), "UTF-8") + "'>" + con.getRoom().getNode() +
147-
"</a></i>)";
148-
} catch (UnsupportedEncodingException e) {
149-
Log.error(e.getMessage(), e);
150-
}
151-
}
152-
mCon.put("users", users);
153-
mCon.put("lastactivity", formatTimeLong(con.getLastActivity()));
154-
mCon.put("messages", con.getMessageCount());
155-
cons.add(0, mCon);
156-
counter++;
157-
}
158-
}
159-
return cons;
160-
}
161-
162100
/**
163101
* Given a statistic key and a start date, end date and number of datapoints, returns
164102
* a String[] containing the low and high values (in that order) for the given time period.

src/web/archive-conversation-participants.jsp

+11-16
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
<%@ page import="org.jivesoftware.openfire.archive.ConversationParticipation" %>
66
<%@ page import="org.jivesoftware.openfire.XMPPServer" %>
77
<%@ page import="org.jivesoftware.openfire.user.UserManager" %>
8-
<%@ page import="org.jivesoftware.util.Log" %>
98
<%@ page import="org.jivesoftware.util.NotFoundException" %>
109
<%@ page import="org.jivesoftware.util.ParamUtils" %>
1110
<%@ page import="org.jivesoftware.util.StringUtils" %>
@@ -30,22 +29,18 @@
3029
MonitoringPlugin plugin = (MonitoringPlugin) server.getPluginManager().getPluginByName(MonitoringConstants.PLUGIN_NAME).get();
3130
3231
ConversationManager conversationmanager = plugin.getConversationManager();
33-
List<String[]> values = new ArrayList<String[]>();
34-
JID room = null;
32+
List<String[]> values = new ArrayList<>();
33+
JID room;
3534
String roomName = "";
3635
try {
3736
Conversation conversation = conversationmanager.getConversation(conversationID);
38-
List<JID> participants = new ArrayList<JID>(conversation.getParticipants());
37+
List<JID> participants = new ArrayList<>(conversation.getParticipants());
3938
for (JID user : participants) {
4039
for (ConversationParticipation participation : conversation.getParticipations(user)) {
4140
values.add(new String[]{participation.getNickname(), user.toString()});
4241
}
4342
}
44-
Collections.sort(values, new Comparator<String[]>() {
45-
public int compare(String[] o1, String[] o2) {
46-
return o1[0].compareTo(o2[0]);
47-
}
48-
});
43+
values.sort(Comparator.comparing(o -> o[0]));
4944
room = conversation.getRoom();
5045
if (room != null) {
5146
roomName = room.getNode();
@@ -62,11 +57,9 @@
6257
<html>
6358
<head>
6459
<meta name="decorator" content="none"/>
65-
</head>
66-
<body>
67-
<script type="text/javascript" language="javascript" src="scripts/tooltips/domTT.js"></script>
68-
<script type="text/javascript" language="javascript" src="scripts/tooltips/domLib.js"></script>
69-
<style type="text/css">
60+
<script type="text/javascript" src="scripts/tooltips/domTT.js"></script>
61+
<script type="text/javascript" src="scripts/tooltips/domLib.js"></script>
62+
<style>
7063
.jive-testPanel {
7164
display: block;
7265
position: relative;
@@ -123,6 +116,8 @@
123116
color: #890000;
124117
}
125118
</style>
119+
</head>
120+
<body>
126121

127122
<!-- BEGIN connection settings test panel -->
128123
<div class="jive-testPanel">
@@ -176,8 +171,8 @@
176171
int from = (curPage-1) * range;
177172
int to = curPage * range;
178173
// Check ranges
179-
from = from > values.size() ? values.size() : from;
180-
to = to > values.size() ? values.size() : to;
174+
from = Math.min(from, values.size());
175+
to = Math.min(to, values.size());
181176
// Get subset of participants to display
182177
values = values.subList(from, to);
183178
for (Iterator<String[]> it = values.iterator(); it.hasNext();) {

0 commit comments

Comments
 (0)