1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JqueryでRedmineのメニューにアイコンを入れる方法

Last updated at Posted at 2023-12-04

JqueryでRedmineのメニューにアイコンを入れる方法

Redmine Advent Calendar 2023の5日目の記事として作成しました。


やりたいこと

デフォルトのRedmineのメニューにはテキストだけが表示され、アイコンが表示されていません。
現在のUIではテキストの代わりにアイコンが多用されており、デフォルトのRedmineのメニューは堅苦しい感があります。

image.png
         <現状のデフォルトのRedmineのメニュー画面>

既存のデフォルトのRedmineのメニューにアイコンを挿入してみました。

image.png
image.png
image.png

         <Redmineのメニューにアイコンを追加した画面>

既存のデフォルトのRedmineのメニューのテキストを削除して、アイコンだけを表示させ、マウスオーバー時に、メニュー名が表示されるようにしてみました。

image.png
         image.png

         <Redmineのメニューからテキストを削除してアイコンだけ表示>


実現した方法

下記のプロセスでRedmineのメニューにアイコンを追加します。

1)https://ionic.io/ioniconsからRedmineのメニューで表示させるアイコンを選択します。
2)Jqueryを使ってIoniconsのインストール用のスクリプトと1)のアイコンをRedmineのメニューに追加させます。
3)上記の2)のJqueryのスクリプトを実行します。

具体的な方法を説明します。

1)はお好みのアイコンを選択します。Ioniconsは2023年現在、MIT Licenseで提供されています。各自の責任でご利用ください。
2)メニューの位置が「top-menu」と「main-menu」があります。ブラウザのデベロッパーツールで要素の定義を確認します。
image.png

Ioniconsのインストール用のスクリプトを挿入します。

  // #ajax-modal 要素の後にスクリプトを挿入
  $('#ajax-modal').after(
      '<script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>' +
      '<script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>'
  );

アイコンをtop-menuの各要素に挿入するサンプル例

  // #top-menu > ul > li:nth-child(1) > a 要素の直前に ion-icon を挿入
  $('#top-menu > ul > li:nth-child(1) > a').before(
      '<ion-icon name="home-outline"></ion-icon>'
  );

アイコンをtop-menuの各要素に挿入するサンプル例

$('#main-menu > ul > li:nth-child(2) > a').each(function() {
  $(this).html('<ion-icon name="chatbox-ellipses-outline"></ion-icon>' + $(this).html());
});  

アイコンに「padding-right」を指定

 $('ion-icon').css('padding-right', '3px');

メニューのテキストをtitle属性に反映して、マウスオーバー時にメニュー名が表示される処理は下記の通りです。

//メニューのテキストをtitle属性に反映、これによりマウスオーバー時にメニュー名が表示される
$('#main-menu > ul a').each(function() {
  $(this).attr('title', $(this).text());
});

//メニューのテキストを削除してアイコンだけ表示させる
$('#main-menu > ul a').contents().filter(function() {
  return this.nodeType === 3; 
}).remove();

3)上記の2)のJqueryのスクリプトを実行する方法は色々とありますが、View Customizeを使うのが便利だと思います。


感想

  • メニューにアイコンが表示されるだけで、だいぶメニューの雰囲気が変わったことが実感できました。
  • JavaScript(Jquery)だけで実現できるので、かなりお手軽にRedmineの改善が実現できました。
  • Ioniconsには多様なアイコンがあるのですが、Redmineで使えるぴったりのアイコンはなかったので、一番近いイメージのアイコンを選びました。
  • メニュでテキストが長いと横スクロールさせる必要がありますが、テキストを削除してアイコンだけ表示させると横スクロールさせなくても目的のメニューをクリックできるようになり利便性が向上しました。

この記事の作成者の紹介


山崎進

  • Redmine、Jquery、JavaScript,Rails、Ruby、SQL、VBA、RPAの開発を行なっています。
  • 自動化、業務の効率化に高い関心があります。
  • 下記の媒体で情報を発信しています。Redmineのプラグインの開発などに対応が可能ですので、お気軽にご連絡ください。

 * Qiita:https://qiita.com/ankosoft
 * Twitter:https://twitter.com/yamasaki24
 * Redmine Advent Calendarで記事投稿
 * redmine.tokyoで講演多数
 * Redmine Japan Vol.1 前夜祭、Redmine Japan Vol.3で講演
 * https://ankosoft.co.jp/blog/
 * https://technology.ankosoft.co.jp/


関連記事

関連記事

* JqueryでRedmineのメニューにアイコンを入れる方法

* JqueryでRedmineのメニューを閉じたり開いたりする方法

 * JqueryでRedmineの「活動ページ」をもっと便利に(タイトルを開閉したり、曜日を入れたり)

 * JqueryでRedmineの「活動ページ」をもっと便利に②(フィルタリング機能と移動機能)

 * JqueryでRedmineの「wikiページ」をもっと便利に(フィルタリング機能と移動機能)

 * JqueryでRedmineの「チケットページ」をもっと便利に(年ごと、月ごと、四半期ごとの集計機能の開発)

 * RedmineのパスワードやログインIDを忘れた時の復旧方法

 * 「rails console」を使ってRedmine上のスケジュールを一括変更する方法

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?