Title: プラグイン設定の追加方法

プラグインによっては、インストール済みプラグイン項目に [設定] リンクが表示され、クリックして表示される画面で細かな設定変更ができるようになっているものがあります。この記事では、このような設定の設置方法や利用方法について説明します。



動作例プラグイン



ここをクリックして、下記の解説で使用しているプラグインをダウンロードできます。

com.traction.sdllessons.settings-1.0.0.zip

注意: このドキュメントを作成中にプラグイン名称を変更しました。スクリーンショットでは、プラグインのフォルダ名が「com.traction.hoge」になっていますが、これを「com.traction.sdllessons.settings」に読み替えてください。



設定の種類(レベル)



設定の種類と影響範囲



まず、TeamPage の設定には、ジャーナル、サーバー、スペース、ユーザーの 4 つの「種類(レベル)」があるということから見てみましょう。

種類(レベル) 説明 設定された内容の保存場所
ジャーナル ジャーナル(TeamPageのデータ保管場所)に保存される設定で、サーバー管理者だけが設定できる。 ジャーナルの db.properties ファイル
サーバー サーバーに適用される設定で、サーバー管理者だけが設定できる。ジャーナルを変更しても、このサーバーの設定は変わらない。 erver ディレクトリの Traction.properties ファイル
スペース スペース毎に適用される設定で、スペース管理者またはサーバー管理者が設定できる。 ジャーナルの 番号.prop または スペース名.prop ファイル
ユーザー ユーザーごとに適用される設定で、各ユーザー(ただし「パーソナル セットアップ」権限が必要)とサーバー管理者が設定できる。 ジャーナルの users サブディレクトリの 番号.prop ファイル


例えば、サーバーセットアップ > 既定値 > ジャーナル設定 の ジャーナル ロケール はジャーナルの設定です。この設定を変更すると、設定値は、ジャーナルのフォルダの db.properties ファイルの locale= 行に保存されます。

また、サーバーセットアップ > 既定値 > ユーザー設定 > ブラウザ の ロケール はユーザーの設定です。この設定は、パーソナル セットアップ >ユーザー設定 > ブラウザ にもあります。サーバーセットアップにあるものは、サーバー管理者がすべてのパーソナルセットアップの既定値として設定するものです。それに対して、パーソナルセットアップにあるものは、該当ユーザーが自分の設定として行います。変更内容は、ジャーナルのフォルダにある「users」サブフォルダの「ユーザー番号.prop」ファイルに locale= として保存されます。

参照: DocJp510: 既定値の設定について

設定ファイルが置かれている場所



これらの設定ファイルは、TeamPage がインストールされた server ディレクトリの、config/setting/props 内に、journal、server、project、user などのフォルダごとに分類されて設置されています。

メモ: TeamPage の過去のバージョンでは「スペース」のことを「プロジェクト」と呼んでいました。その歴史的な理由により、スペースの設定ファイルは「project」フォルダに置かれています。



config/settings/props folder

プラグインの動作を変更させるための新しい設定を追加するには、プラグインのフォルダに config/settings/props 階層を作成し、その中に journal, server, project, user などのフォルダを作成し、その中に設定の定義ファイルを設置します。次に、そのやり方を解説します。

新しい設定を利用できるようにする



設定の定義ファイルを設置する



プラグインのフォルダに config/settings/props 階層を作成します。例えば、プラグインの名前が「com.traction.sdllessons.settings」だとすると、TeamPage がインストールされた「server」ディレクトリの中の、「plugins」フォルダの中の、「com.traction.sdllessons.settings」フォルダの中に、「config」フォルダを作り、その中に「settings」フォルダを作り、更にその中に「props」フォルダを作ります。

その「props」フォルダの中に、ユーザー用設定を作る場合は「user」フォルダを、ジャーナル用設定を作る場合は「journal」フォルダを…作成します。



例)ジャーナル用設定を設置する



ここでは、「journal」フォルダの中に hoge_yesno.properties というファイルを設置し、「はい」か「いいえ」の選択ドロップダウンリストを作ることにします。



hoge_yesno.properties をテキストエディタで開き、次のように記述して上書き保存します。

class=com.traction.settings.YesNo

display_name=Hoge YesNo
description=Select Yes or No.
tip=This is a great example.

sdleditor=com.traction.sdl.admin.settings#singleselect

default=true
usedefault=true





例)ユーザー用設定を設置する



ここでは、「user」フォルダの中に hoge_text.properties というファイルを設置し、テキスト入力の設定欄を作ることにします。



hoge_text.properties をテキストエディタで開き、次のように記述して上書き保存します。

class=com.traction.settings.TextInput

display_name=Hoge Text Input
description=Text box example.
tip=Great!

sdleditor=com.traction.sdl.admin.settings#textinput_belowlabel
size=80

usedefault=true
default=Foo Bar




メモ: テキストボックスを表示するための sdleditor には、textinput_belowlabel の他に、textinput, textinput_afterlabel, textinput_afterlabel2 などがあり、それぞれテキストボックスや説明文の配置が異なります。



プラグイン定義ファイルで設定定義ファイルを指定する



プラグインの定義ファイル(「com.traction.sdllessons.settings」フォルダの「plugin.properties」ファイル)をテキストエディタで開き、次のように記述します。

display_name=Hoge Settings Plug-in
description=Shows how to implement journal, server, project, and user settings in config/settings/props directory.
version=1.0.0
buildnum=0

server_config=true
db_config=true
db_settings=hoge_yesno
user_config=true
user_settings=hoge_text




ファイルを保存したら、サーバーセットアップ > 一般 > サーバー管理の [キャッシュクリア] をクリックします。

設定画面の表示を確認する



サーバーセットアップ > プラグイン で [Hoge Settings Plug-in] の [設定] リンクをクリックします。[設定] リンクが表示されていない場合は、plugin.properties の server_config= の記述ミスを確認してください。



下図のような設定画面が表示されます。



設定をSDLで利用するには



上記で設定の作り方や設置方法を説明しました。次に、SDL のコード(プログラム)から設定の値を参照する(設定の状態を調べる)方法を解説します。

ビューの作成



設定の動作チェックをするためのビューを作成します。

ビューの定義ファイル (.properties)



プラグインのフォルダの中に config/views/all の階層を作成し、この「all」フォルダの中に「checkhoge.properties」を作成し、テキストエディタで開いて次のように記述します。

sdl=com.traction.sdl.tutorial.checkhoge




ビューの HTML テンプレート ファイル (.sdl)



プラグインのフォルダの中に com/traction/sdl/tutorial の階層を作成し、この「tutorial」フォルダの中に「checkhoge.sdl」を作成し、テキストエディタで開いて次のように記述します。

<!DOCTYPE html>
<html>
<head>
<title>Hoge: Check Configurations</title>
<style>
.true { color: blue; } .false { color: red; }
</style>
</head>
<body>
  <p>The value of hoge_yesno is <#journal_config_yesno />.</p>
  <p>The description of the text box is <#user_config_text />.</p>
</body>
</html>

<sdl.function name="journal_config_yesno">
  <config.db.boolean name="hoge_yesno">
    <!-- ジャーナルの「hoge_yesno」設定で「はい」が選択されている場合 -->
    <span class="true">YES</span>
  <else>
    <!-- ジャーナルの「hoge_yesno」設定で「いいえ」が選択されている場合 -->
    <span class="false">NO</span>
  </config.db.boolean>
</sdl.function>

<sdl.function name="user_config_text">
   <!-- ユーザーの「hoge_text」設定テキストボックスの値を取得する -->
   <config.user.value name="hoge_text" />
</sdl.function>




ファイルを保存し、サーバーセットアップ > 一般 > サーバー管理 の [キャッシュのクリア] をクリックします。

ビューでの動作確認



検索ボックスに /type checkhoge と入力して Enter キーを押します。



下図のような「checkhoge」のビューが表示されます。



1行目は、ジャーナル設定の「hoge_yesno」の「はい」「いいえ」によって変化します。

2行目は、ユーザー設定の「hoge_text」のテキストボックスに入力された内容が反映されます。



設定値を読み取るための SDL タグ



SDL の <config.*.*> タグで設定値を調べたり値を取得したりできます。

Yes/No 式の設定は Boolean タグで調べる



Yes/No 式の設定の値(「はい」か「いいえ」か)を調べるには <config.*.boolean name="設定名">...</config.*.boolean> タグを使います。ここの「*」には、設定の種類(レベル)が入ります。例えば、ジャーナル設定の場合は <config.db.boolean> に、スペース設定の場合は <config.project.boolean> になります。

この <config.*.boolean> は、<else> タグを組み合わせて「条件が真ではないとき」の条件分岐ができます。

<config.user.boolean name="ConfigName">
  <!-- 設定で「はい」が選択されている場合に実行 -->
<else>
  <!-- 設定で「いいえ」が選択されている場合に実行 -->
</config.user.boolean>


また not を組み合わせて逆の動作も指定できます。

<config.user.boolean name="ConfigName" not>
  <!-- 設定で「いいえ」が選択されている場合に実行 -->
<else>
  <!-- 設定で「はい」が選択されている場合に実行 -->
</config.user.boolean>


テキストボックスの値は Value タグで調べる



テキストボックス型の設定欄の値を調べるには、<config.*.value name="設定名" /> を使います。例えば、スペース設定のテキストボックスの値を調べるには <config.project.value name="設定名" /> とします。

さらに、<compare.equals> などの条件分岐タグと組み合わせることも可能です。

参照: DocSDK270: SDL Lesson 11 - 値を比較して「もし真ならばAせよ、さもなくばBせよ」な分岐処理を行う

例えば、次のようにすると、ジャーナルの「today」という設定(テキストボックス)に「2015/01/01」が入力されている場合は、「Happy New Year!」を表示します。(この例には <else> タグがないため、テキストボックスの値が「2015/01/01」ではないときは何も表示しません。)

<compare.equals "<config.db.value name='today' />" "2015/01/01">
  <p>Happy New Year!</p>
</compare.equals>




Attachments:
props_folder.png
20141121-152126.png
20141121-153952.png
20141121-155015.png
configure.png
20141121-165454.png
20141121-170221.png
20141121-171742.png
type_checkhoge.png
20141121-172534.png
20141121-172908.png
com.traction.sdllessons.settings-1.0.0.zip
関連記事
Article: DocSDK126 (permalink)
Categories: :FAQ:カスタマイズ, :DocSDK:カスタマイズ, :DocSDK:FAQ
Date: 2014/11/21; 16時16分36秒 JST

Author Name: TeamPage サポート
Author ID: jpbo