サイドブロックに「管理者からのお知らせ」的な表示を

mahara-adminmessage-01.png

右サイドブロック(デフォルトのテンプレートで)の表示は、モジュールになっておらず lib/web.php にコード内に記述されている。ブロック内のテキストはDwooのテンプレートを読みこむようになってるので、ここでも真似をする。

まずテンプレートを用意する。新たにファイルを作成。

theme/raw/templates/sideblocks/adminmessage.tpl

 <div class="sidebar-header"> 
   <h3>最新情報</h3> 
 </div> 
  
 <div class="sidebar-content"> 
 Hello world! 
 </div> 

lib/web.php

サイドブロックをずらっと定義している所があるので、そこへ追加。

    554         if (get_config('enablenetworking')) {
    555             require_once(get_config('docroot') .'api/xmlrpc/lib.php');
    556             if ($USER->is_logged_in() && $ssopeers = get_service_providers($USER->authinstance)) {
    557                 $SIDEBLOCKS[] = array(
    558                     'name'   => 'ssopeers',
    559                     'weight' => 1,
    560                     'data'   => $ssopeers,
    561                 );
    562             }
    563         }
    564 

                if ($USER->is_logged_in() )  {
                  $SIDEBLOCKS[] = array(
                                        'name'   => 'adminmessage',
                                        'weight' => -100,
                                        'data'   => array(
                                                  'language' => substr(current_language(), 0, 2)
                                                  ),
                                        );
                } 

    565         if (isset($extraconfig['sideblocks']) && is_array($extraconfig['sidebl    565 ocks'])) {

英語表記に対応する

SIDEBLOCKSに配列追加するときに $language をデータに与えている。これを使うと、日本語と英語の表記をテンプレートの中に表記できる。

theme/raw/templates/sideblocks/adminmessage.tpl

 {if $sbdata.language == 'ja'} 
 はろーわーるど 
 {else} 
 Hello World 
 {/if} 

管理者設定で表示をオン/オフする

不要な時はブロックの表示自体を抑制したい。そのために、設定項目を追加してみる。追加する場所は「サイト管理」→「サイトオプション」→「一般設定」

mahara-adminmessage-02.png

admin/site/options.php

    566                 'wysiwyg' => array(
    567                     'type'         => 'select',
    568                     'title'        => get_string('wysiwyg', 'admin'),
    569                     'description'  => get_string('wysiwygdescription', 'admin'),
    570                     'defaultvalue' => get_config('wysiwyg'),
    571                     'options'      => array(
    572                                         '' => get_string('wysiwyguserdefined', 'admin'),
    573                                         'disable' => get_string('disable'),
    574                                         'enable' => get_string('enable'),
    575                                     ),
    576                     'help'         => true,
    577                     'disabled'     => in_array('wysiwyg', $OVERRIDDEN),
    578                 ),

                            'showadminmessage' => array( 
                                'type'         => 'checkbox', 
                                'title'        => get_string('showadminmessage', 'admin'), 
                                'description'  => get_string('showadminmessagedescription', 'admin'), 
                                'defaultvalue' => get_config('showadminmessage'), 
                                'disabled'     => in_array('showadminmessage', $OVERRIDDEN), 
                            ), 

    579             ),
    580         ),
    609         'registerterms', 'allowmobileuploads', 'creategroups', 'createpublicgroups', 'allowgroupcategories', 'wysiwyg',

                 'showadminmessage', 

    610         'staffreports',
    611     );

local/lang/ja.utf8/admin.php

ラベルとメッセージを言語ファイルに追加する(日本語)。

 <?php 
  
 $string['showadminmessage'] = 'システム最新情報を表示する'; 
 $string['showadminmessagedescription'] = 'サイドブロックに「システム最新情報」を表示します。表示する内容は theme/raw/templates/sideblocks/adminmessage.tpl に記述します。'; 

local/lang/en.utf8/admin.php

ラベルとメッセージを言語ファイルに追加する(英語)。

 <?php 
  
 $string['showadminmessage'] = 'Show system updates'; 
 $string['showadminmessagedescription'] = 'If checked, users will see a side block with system update message from administrator.  The contents of the block are read from theme/raw/templates/sideblocks/adminmessage.tpl.'; 

lib/web.php

web.phpの修正点に、下記のように追加。

    554         if (get_config('enablenetworking')) {
    555             require_once(get_config('docroot') .'api/xmlrpc/lib.php');
    556             if ($USER->is_logged_in() && $ssopeers = get_service_providers($USER->authinstance)) {
    557                 $SIDEBLOCKS[] = array(
    558                     'name'   => 'ssopeers',
    559                     'weight' => 1,
    560                     'data'   => $ssopeers,
    561                 );
    562             }
    563         }
    564 

                 if ($USER->is_logged_in() && get_config('showadminmessage') )  {
                   $SIDEBLOCKS[] = array(
                                         'name'   => 'adminmessage',
                                         'weight' => -100,
                                         'data'   => array(
                                                   'language' => substr(current_language(), 0, 2)
                                                   ),
                                         );
                }

    565         if (isset($extraconfig['sideblocks']) && is_array($extraconfig['sidebl    565 ocks'])) {

添付ファイル: filemahara-adminmessage-02.png 325件 [詳細] filemahara-adminmessage-01.png 326件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-10-15 (月) 10:14:21 (1714d)