XLX MultiProtocolGateway + dashboard2にモジュール一覧を表示する機能を追加します
【前提条件】
- xlx version 2.2.2
- dashboard version 2.3.7
【目次】
dashboard2/pgs/modules.phpを作成
モジュールリスト表示用のブロックを定義します
//nano dashboard2/pgs/modules.php
<div class="panel panel-default">
<div class="panel-heading"><?php echo $Reflector->GetReflectorName(); ?> Module List</div>
<table class="table">
<tr>
<th>Module</th>
<th>ModuleName</th>
<th>Interlinked</th>
<th>Description</th>
</tr>
<?php
$Modules = $PageOptions['ModuleNames'];
foreach($Modules as $ModuleKey => $Module) {
echo '<tr>';
echo '<td>'.$ModuleKey.'</td>';
echo '<td>'.$Module['Name'].'</td>';
$interlinked = FALSE;
$peerCount = 0;
for($i = 0; $i < $Reflector->PeerCount(); $i++){
$peer = $Reflector->Peers[$i];
if(strpos($peer->GetLinkedModule(), $ModuleKey) !== false){
$interlinked = TRUE;
$peerCount++;
}
}
if($interlinked){
echo '<td><font color="red">Yes</font> ('.$peerCount.' peers)</td>';
}
else{
echo '<td>No</td>';
}
echo '<td>'.$Module['Description'].'</td>';
echo '</tr>';
}
?>
</table>
</div>
dashboard2/pgs/users.phpの表示を一部改修
設定方法を改変するので、そのままだとUsers/Modules画面右側のモジュール表示がおかしくなります。
設定改変に併せて、表示を改修します
//nano dashboard2/pgs/users.php
// 160行目くらい
$Modules = $Reflector->GetModules();
sort($Modules, SORT_STRING);
echo '<tr>';
for ($i=0;$i<count($Modules);$i++) {
if (isset($PageOptions['ModuleNames'][$Modules[$i]])) {
echo '<th>'.$PageOptions['ModuleNames'][$Modules[$i]];
if (trim($PageOptions['ModuleNames'][$Modules[$i]]) != "") {
echo '<br />';
}
echo $Modules[$i].'</th>';
}
else {
echo '
<th>'.$Modules[$i].'</th>';
}
}
// ↓['Name']を追加する(2箇所)
$Modules = $Reflector->GetModules();
sort($Modules, SORT_STRING);
echo '<tr>';
for ($i=0;$i<count($Modules);$i++) {
if (isset($PageOptions['ModuleNames'][$Modules[$i]])) {
echo '<th>'.$PageOptions['ModuleNames'][$Modules[$i]]['Name'];
if (trim($PageOptions['ModuleNames'][$Modules[$i]]['Name']) != "") {
echo '<br />';
}
echo $Modules[$i].'</th>';
}
else {
echo '
<th>'.$Modules[$i].'</th>';
}
}
dashboard2/index.phpを一部編集
index.phpを編集して、モジュールリストがページに表示されるようにします
// nano dashboard2/index.php
// 172行目くらい
<li<?php echo (($_GET['show'] == "users") || ($_GET['show'] == "")) ? ' class="active"' : ''; ?>><a href="/kdk/./index.php">Users / Modules</a></li>
<li<?php echo ($_GET['show'] == "repeaters") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=repeaters">Repeaters / Nodes (<?php echo $Reflector->NodeCount(); ?>)</a></li>
<li<?php echo ($_GET['show'] == "peers") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=peers">Peers(<?php echo $Reflector->PeerCount(); ?>)</a></li>
<li<?php echo ($_GET['show'] == "reflectors") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=reflectors">Reflectorlist</a></li>
<li<?php echo ($_GET['show'] == "liveircddb") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=liveircddb">D-Star live</a></li>
// ↓
<li<?php echo ($_GET['show'] == "modules") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=modules">Module List</a></li>
//を挿入します
//↓
<li<?php echo (($_GET['show'] == "users") || ($_GET['show'] == "")) ? ' class="active"' : ''; ?>><a href="/kdk/./index.php">Users / Modules</a></li>
<li<?php echo ($_GET['show'] == "repeaters") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=repeaters">Repeaters / Nodes (<?php echo $Reflector->NodeCount(); ?>)</a></li>
<li<?php echo ($_GET['show'] == "modules") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=modules">Module List</a></li>
<li<?php echo ($_GET['show'] == "peers") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=peers">Peers(<?php echo $Reflector->PeerCount(); ?>)</a></li>
<li<?php echo ($_GET['show'] == "reflectors") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=reflectors">Reflectorlist</a></li>
<li<?php echo ($_GET['show'] == "liveircddb") ? ' class="active"' : ''; ?>><a href="/kdk/./index.php?show=liveircddb">D-Star live</a></li>
// nano dashboard2/index.php
// 195行目くらい
switch ($_GET['show']) {
case 'users' :
require_once("./pgs/users.php");
break;
case 'repeaters' :
require_once("./pgs/repeaters.php");
break;
case 'liveircddb' :
require_once("./pgs/liveircddb.php");
break;
case 'peers' :
require_once("./pgs/peers.php");
break;
case 'reflectors' :
require_once("./pgs/reflectors.php");
break;
default :
require_once("./pgs/users.php");
}
// ↓
require_once("./pgs/modules.php");
//を挿入します(2箇所)
// ↓
switch ($_GET['show']) {
case 'users' :
require_once("./pgs/users.php");
require_once("./pgs/modules.php");
break;
case 'repeaters' :
require_once("./pgs/repeaters.php");
break;
case 'modules' :
require_once("./pgs/modules.php");
break;
case 'liveircddb' :
require_once("./pgs/liveircddb.php");
break;
case 'peers' :
require_once("./pgs/peers.php");
break;
case 'reflectors' :
require_once("./pgs/reflectors.php");
break;
default :
require_once("./pgs/users.php");
require_once("./pgs/modules.php");
break;
}
dashboard2/pgs/config.inc.phpの設定を一部改変
// nano dashboard2/pgs/config.inc.php
// 38行目くらい
$PageOptions['ModuleNames'] = array(); // Module nomination
$PageOptions['ModuleNames']['A'] = 'Int.';
$PageOptions['ModuleNames']['B'] = 'Regional';
$PageOptions['ModuleNames']['C'] = 'National';
$PageOptions['ModuleNames']['D'] = '';
// ↓
// 構造変更
// ↓
$PageOptions['ModuleNames'] = array(); // Module nomination
$PageOptions['ModuleNames']['A'] = array();
$PageOptions['ModuleNames']['A']['Name'] = 'Int\' | Peers';
$PageOptions['ModuleNames']['A']['Description'] = '海外とのインターリンク(一方通行になる場合があります)';
$PageOptions['ModuleNames']['B'] = array();
$PageOptions['ModuleNames']['B']['Name'] = 'Regional Users';
$PageOptions['ModuleNames']['B']['Description'] = '地域(ほぼ日本)とのインターリンク(局数は多め)';
以上で改修は終了です。
index.phpを表示し、モジュールリストが表示される事を確認して下さい。
2018-10-07