Slideshow CK

XLX+dashboard2でモジュール一覧を表示する

XLX MultiProtocolGateway + dashboard2にモジュール一覧を表示する機能を追加します

【前提条件】

  • xlx version 2.2.2
  • dashboard version 2.3.7

【目次】

  1. dashboard2/pgs/modules.phpを作成

  2. dashboard2/pgs/users.phpの表示を一部改修

  3. dashboard2/index.phpを一部編集

  4. dashboard2/pgs/config.inc.phpの設定を一部改変

 

 

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