フリガナのルビ表示 (dirty patch)

フリガナのルビ表示 (dirty patch)

- Takayuki ISHIKAWA の投稿
返信数: 1
画像 Developers

大阪国際大学では、Moodle の全利用者のフリガナおよび英字綴りを登録し、fullname 表示の際はそれらを全て表示していたのですが、あまりにも表示が長すぎて可読性が落ちていました。


そこで、ルビ表示 (傍字表示) がなされるように (そして英字綴りが緑で表されるように) 改変してみました。


改変部分 (lib/moodlelib.php) は以下の通りです。patch も添付します。ただし、汎用性が非常に低い、美しくない改変です。

--- moodle/lib/moodlelib.php	Thu Jan 08 19:00:28 2015
+++ moodle/lib/moodlelib.php Fri Jan 09 18:24:47 2015
@@ -3657,6 +3657,15 @@

// Trimming $displayname will help the next check to ensure that we don't have a display name with spaces.
$displayname = trim($displayname);
+
+ // ルビ表示
+ $displayname = str_replace('_beginruby_', '<ruby>', $displayname);
+ $displayname = str_replace('_endruby_', '</ruby>', $displayname);
+ $displayname = str_replace('_beginrt_', '<rp>(</rp><rt>', $displayname);
+ $displayname = str_replace('_endrt_', '</rt><rp>)</rp>', $displayname);
+ $displayname = str_replace(' // ', '<br><span style="color: hsl(135, 100%, 40%)">', $displayname);
+ $displayname = str_replace(' ///', '</span>', $displayname);
+
if (empty($displayname)) {
// Going with just the first name if no alternate fields are filled out. May be changed later depending on what
// people in general feel is a good setting to fall back on

また、「サイト管理」→「ユーザ」→「パーミッション」→「ユーザポリシー」→「フルネームフォーマット」は次のように設定してあります。

_beginruby_ lastname _beginrt_ lastnamephonetic _endrt_ _endruby_ _beginruby_ firstname _beginrt_ firstnamephonetic _endrt_ _endruby_ // alternatename ///

もっと時間があればじっくり調べてちゃんとした改変をしたい (そして Moodle Tracker で提案したい) のですが、現時点ではここまでしかできませんでした。どなたか興味がありましたらもっと汎用性が高い形にしてもらえると嬉しいのですが... (最後まで自分でやれよ、という声が聞こえてきそうです)。

最大評点: お役立ち度: ★★★★★★★ (1)
Takayuki ISHIKAWA への返信

Re: フリガナのルビ表示 (dirty patch)

- Takayuki ISHIKAWA の投稿
画像 Developers

この改変は、全ての fullname 表示の際に適用されてしまうため、副作用が大きく、結局元に戻してしまいました。具体的に言いますと、利用者への e-mail 送信の際に氏名表示が長くなりすぎて Gmail から弾かれてしまうなどの弊害がありました。

そのため、別の改変を試し、Moodle tracker の以下の URL において提案しました。賛同いただける方にはぜひ投票 (vote) していただきたいです。

https://tracker.moodle.org/browse/MDL-49172

また、添付した patch はかなり雑なので、よりよい patch (code) を書ける方がいらっしゃいましたら、ぜひお願いしたいと思っています。