diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/DisplaySettings.java b/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/DisplaySettings.java index 6ad044075..8da90a2b2 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/DisplaySettings.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/DisplaySettings.java @@ -36,6 +36,7 @@ public class DisplaySettings { public static final Setting ORDER_WORLD_PIE_BY_PERC = new BooleanSetting("Display_options.Sessions.Order_world_pies_by_percentage"); public static final Setting PLAYERS_PER_SERVER_PAGE = new IntegerSetting("Display_options.Players_table.Show_on_server_page"); public static final Setting PLAYERS_PER_PLAYERS_PAGE = new IntegerSetting("Display_options.Players_table.Show_on_players_page"); + public static final Setting OPEN_PLAYER_LINKS_IN_NEW_TAB = new BooleanSetting("Display_options.Open_player_links_in_new_tab"); public static final Setting PLAYER_IPS = new BooleanSetting("Display_options.Show_player_IPs"); public static final Setting GAPS_IN_GRAPH_DATA = new BooleanSetting("Display_options.Graphs.Show_gaps_in_data"); public static final Setting GRAPH_TPS_THRESHOLD_HIGH = new IntegerSetting("Display_options.Graphs.TPS.High_threshold"); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/HtmlTables.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/HtmlTables.java index 145d3719d..5262540f4 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/HtmlTables.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/HtmlTables.java @@ -157,6 +157,7 @@ public class HtmlTables { config.get(DisplaySettings.PLAYERS_PER_SERVER_PAGE), config.get(TimeSettings.ACTIVE_PLAY_THRESHOLD), config.get(TimeSettings.ACTIVE_LOGIN_THRESHOLD), + config.get(DisplaySettings.OPEN_PLAYER_LINKS_IN_NEW_TAB), formatters.timeAmount(), formatters.yearLong(), formatters.decimals() ); } @@ -172,6 +173,7 @@ public class HtmlTables { players, config.get(DisplaySettings.PLAYERS_PER_PLAYERS_PAGE), config.get(TimeSettings.ACTIVE_PLAY_THRESHOLD), config.get(TimeSettings.ACTIVE_LOGIN_THRESHOLD), + config.get(DisplaySettings.OPEN_PLAYER_LINKS_IN_NEW_TAB), formatters.timeAmount(), formatters.yearLong(), formatters.decimals() ); } @@ -184,6 +186,10 @@ public class HtmlTables { * @return a new {@link PluginPlayersTable}. */ public TableContainer pluginPlayersTable(Map containers, Collection players) { - return new PluginPlayersTable(containers, players, config.get(DisplaySettings.PLAYERS_PER_SERVER_PAGE)); + return new PluginPlayersTable( + containers, players, + config.get(DisplaySettings.PLAYERS_PER_SERVER_PAGE), + config.get(DisplaySettings.OPEN_PLAYER_LINKS_IN_NEW_TAB) + ); } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PlayersTable.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PlayersTable.java index 5b81b2885..4e2708ec6 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PlayersTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PlayersTable.java @@ -43,6 +43,7 @@ class PlayersTable extends TableContainer { private final int maxPlayers; private final long activeMsThreshold; private final int activeLoginThreshold; + private final boolean openPlayerPageInNewTab; private final Formatter decimalFormatter; @@ -51,6 +52,7 @@ class PlayersTable extends TableContainer { int maxPlayers, long activeMsThreshold, int activeLoginThreshold, + boolean openPlayerPageInNewTab, Formatter timeAmountFormatter, Formatter yearLongFormatter, Formatter decimalFormatter @@ -68,6 +70,7 @@ class PlayersTable extends TableContainer { this.maxPlayers = maxPlayers; this.activeMsThreshold = activeMsThreshold; this.activeLoginThreshold = activeLoginThreshold; + this.openPlayerPageInNewTab = openPlayerPageInNewTab; this.decimalFormatter = decimalFormatter; useJqueryDataTables("player-table"); @@ -104,8 +107,10 @@ class PlayersTable extends TableContainer { String geolocation = GeoInfoMutator.forContainer(player).mostRecent().map(GeoInfo::getGeolocation).orElse("-"); + Html link = openPlayerPageInNewTab ? Html.LINK_EXTERNAL : Html.LINK; + addRow( - Html.LINK_EXTERNAL.parse(url, name), + link.parse(url, name), activityString, playtime, loginTimes, diff --git a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PluginPlayersTable.java b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PluginPlayersTable.java index 20ff08e89..4fdcd0630 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PluginPlayersTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/utilities/html/tables/PluginPlayersTable.java @@ -39,24 +39,28 @@ class PluginPlayersTable extends TableContainer { private Collection players; private final int maxPlayers; + private final boolean openPlayerPageInNewTab; PluginPlayersTable( Map containers, Collection players, - int maxPlayers + int maxPlayers, + boolean openPlayerPageInNewTab ) { - this(getPluginDataSet(containers), players, maxPlayers); + this(getPluginDataSet(containers), players, maxPlayers, openPlayerPageInNewTab); } private PluginPlayersTable( TreeMap> pluginDataSet, Collection players, - int maxPlayers + int maxPlayers, + boolean openPlayerPageInNewTab ) { super(true, getHeaders(pluginDataSet.keySet())); this.players = players; this.maxPlayers = maxPlayers; + this.openPlayerPageInNewTab = openPlayerPageInNewTab; useJqueryDataTables("player-plugin-table"); @@ -91,11 +95,13 @@ class PluginPlayersTable extends TableContainer { if (i >= maxPlayers) { break; } + UUID uuid = profile.getUnsafe(PlayerKeys.UUID); String name = profile.getValue(PlayerKeys.NAME).orElse("Unknown"); - String link = Html.LINK_EXTERNAL.parse(PlanAPI.getInstance().getPlayerInspectPageLink(name), name); + Html link = openPlayerPageInNewTab ? Html.LINK_EXTERNAL : Html.LINK; + String linkHtml = link.parse(PlanAPI.getInstance().getPlayerInspectPageLink(name), name); - String[] playerData = ArrayUtil.merge(new String[]{link}, rows.getOrDefault(uuid, new String[]{})); + String[] playerData = ArrayUtil.merge(new String[]{linkHtml}, rows.getOrDefault(uuid, new String[]{})); addRow(ArrayUtils.addAll(playerData)); i++; diff --git a/Plan/common/src/main/resources/bungeeconfig.yml b/Plan/common/src/main/resources/bungeeconfig.yml index 6e14e70fb..94c35f8ed 100644 --- a/Plan/common/src/main/resources/bungeeconfig.yml +++ b/Plan/common/src/main/resources/bungeeconfig.yml @@ -104,6 +104,7 @@ Display_options: Order_world_pies_by_percentage: false Players_table: Show_on_players_page: 25000 + Open_player_links_in_new_tab: false Show_player_IPs: true Graphs: Show_gaps_in_data: false diff --git a/Plan/common/src/main/resources/config.yml b/Plan/common/src/main/resources/config.yml index f6fc8d97b..61249c756 100644 --- a/Plan/common/src/main/resources/config.yml +++ b/Plan/common/src/main/resources/config.yml @@ -112,6 +112,7 @@ Display_options: Players_table: Show_on_server_page: 2500 Show_on_players_page: 25000 + Open_player_links_in_new_tab: false Show_player_IPs: true Graphs: Show_gaps_in_data: false diff --git a/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java b/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java index 24f6ea210..c26095816 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/utilities/html/tables/PlayersTableTest.java @@ -63,6 +63,7 @@ public class PlayersTableTest { 50, // maxPlayers TimeUnit.MINUTES.toMillis(60), // activeMsThreshold 5, // activeLoginThreshold + false, l -> "", l -> "", d -> ""