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

&attachref(mahara-adminmessage-01.png);

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

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

** theme/raw/templates/sideblocks/adminmessage.tpl [#tb2b972e]

#pre(soft){{
&color(#ff0000){ <div class="sidebar-header"> };
&color(#ff0000){   <h3>最新情報</h3> };
&color(#ff0000){ </div> };
&color(#ff0000){  };
&color(#ff0000){ <div class="sidebar-content"> };
&color(#ff0000){ Hello world! };
&color(#ff0000){ </div> };
}}

** lib/web.php [#p8aa78bb]
サイドブロックをずらっと定義している所があるので、そこへ追加。

#pre(soft){{
    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 

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

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

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


** theme/raw/templates/sideblocks/adminmessage.tpl [#tb2b972e]

#pre(soft){{
&color(#ff0000){ {if $sbdata.language == 'ja'} };
&color(#ff0000){ はろーわーるど };
&color(#ff0000){ {else} };
&color(#ff0000){ Hello World };
&color(#ff0000){ {/if} };
}};

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

&attachref(mahara-adminmessage-02.png);

** admin/site/options.php [#iae32731]

#pre(soft){{
    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                 ),

&color(#ff0000){                            'showadminmessage' => array( };
&color(#ff0000){                                'type'         => 'checkbox', };
&color(#ff0000){                                'title'        => get_string('showadminmessage', 'admin'), };
&color(#ff0000){                                'description'  => get_string('showadminmessagedescription', 'admin'), };
&color(#ff0000){                                'defaultvalue' => get_config('showadminmessage'), };
&color(#ff0000){                                'disabled'     => in_array('showadminmessage', $OVERRIDDEN), };
&color(#ff0000){                            ), };

    579             ),
    580         ),
}}

#pre(soft){{
    609         'registerterms', 'allowmobileuploads', 'creategroups', 'createpublicgroups', 'allowgroupcategories', 'wysiwyg',

&color(#ff0000){                 'showadminmessage', };

    610         'staffreports',
    611     );
}}

** local/lang/ja.utf8/admin.php [#f4a74a6b]
ラベルとメッセージを言語ファイルに追加する(日本語)。

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

** local/lang/en.utf8/admin.php [#l25e173e]
ラベルとメッセージを言語ファイルに追加する(英語)。

#pre(soft){{
&color(#ff0000){ <?php };
&color(#ff0000){  };
&color(#ff0000){ $string['showadminmessage'] = 'Show system updates'; };
&color(#ff0000){ $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 [#vaa20e38]
web.phpの修正点に、下記のように追加。


#pre(soft){{
    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 

&color(#ff0000){                 if ($USER->is_logged_in() &color(#ff0000){&& get_config('showadminmessage')}; )  { };
&color(#ff0000){                   $SIDEBLOCKS[] = array( };
&color(#ff0000){                                         'name'   => 'adminmessage', };
&color(#ff0000){                                         'weight' => -100, };
&color(#ff0000){                                         'data'   => array( };
&color(#ff0000){                                                   'language' => substr(current_language(), 0, 2) };
&color(#ff0000){                                                   ), };
&color(#ff0000){                                         ); };
&color(#ff0000){                 } };
                 if ($USER->is_logged_in() &color(#ff0000){&& 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'])) {
}}

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS