Coffee
Alfred/Spotlight風のクイックナビゲーション検索ボックスで、キーボードショートカットとオートコンプリート検索を使用して、ユーザーがDrupal内の任意の管理ページに素早く移動したりコマンドを実行したりできます。
coffee
インストール
composer require 'drupal/coffee:^2.0'
composer require 'drupal/coffee:8.x-1.4'
composer require 'drupal/coffee:8.x-1.2'
概要
Coffeeモジュールは、Drupalの管理インターフェース内で高速なナビゲーションを可能にする、Alfred/Spotlight風の強力な検索インターフェースを提供します。管理者やエディターは、複雑なメニュー構造をたどることなく、任意の管理ページへのジャンプ、コンテンツの作成、カスタムコマンドの実行を素早く行えます。
キーボードショートカット(Alt+D)またはツールバーボタンで起動すると、洗練された検索ダイアログが表示され、ページタイトルやパスの一部を入力できます。モジュールは設定されたメニューからマッチする結果を即座にフィルタリングして表示し、数回のキー入力だけでナビゲーションを可能にします。例えば、「ap」と入力してEnterキーを押すと、Appearance管理ページに直接移動します。
Coffeeはhook_coffee_commands() APIを通じて高度に拡張可能で、他のモジュールがカスタムコマンドや検索結果を追加できます。モジュールには:frontでフロントページに移動したり、:addで任意のコンテンツタイプをすばやく作成するなどの組み込みコマンドが用意されています。
Features
- Alt+Dキーボードショートカットまたはツールバーボタンで起動するクイックナビゲーション検索ボックス
- 管理メニュー、アカウントメニュー、その他の設定されたメニューを含む複数メニューにわたるリアルタイムオートコンプリートフィルタリング
- フロントページに素早く移動するための組み込み:frontコマンド
- すべてのコンテンツタイプに対応した素早いコンテンツ作成のための組み込み:addコマンド(例::add Article)
- hook_coffee_commands()による拡張性で、モジュールがカスタムコマンドやナビゲーション項目を追加可能
- 検索結果の数を設定可能(1〜50、デフォルト7)
- 矢印キーで結果をブラウズし、Enterで選択するキーボードナビゲーションをサポート
- Ctrl+Enter(Windows)またはCmd+Enter(macOS)で結果を新しいウィンドウで開く
- マウスユーザー向けの「Go to」ボタンによるシームレスなツールバー統合
- Coffeeの使用と管理に対する別々の権限によるアクセス制御
- 自動的なアクセスチェックにより、ユーザーはアクセス権限のあるメニュー項目のみを表示
- Config Translationが有効な場合、翻訳ページへの追加ナビゲーションを提供するローカルタスクをサポート
- 利用可能な場合、Configuration Translation ページを検索結果に含む
- スムーズなトランジションを備えたクリーンなモーダルスタイルのダークUI
- 安全なナビゲーションのためのCSRFトークン処理
Use Cases
管理ページへのクイックナビゲーション
複雑なDrupalサイトを管理するサイト管理者として、コンテンツ、構造、ユーザー、レポートなどのさまざまな管理ページに頻繁にアクセスする必要があります。複数のメニュー階層をクリックする代わりに、Alt+Dを押して数文字を入力(例:コンテンツには「cont」、ユーザーには「peo」、レポートには「rep」)し、Enterを押すだけで即座に移動できます。
素早いコンテンツ作成
頻繁に新しいコンテンツを作成するコンテンツエディターは、:addコマンドを使用してNode作成フォームに素早くアクセスできます。Alt+Dを押し、「:add Article」または「:add Page」と入力してEnterを押すと、そのタイプのコンテンツ作成フォームに直接移動します。これにより、コンテンツ > コンテンツを追加のメニューナビゲーションを完全にバイパスできます。
フロントページへの素早いアクセス
管理エリアで作業中にサイトのフロントページをプレビューする必要がある場合、:frontコマンドを使用します。Alt+Dを押し、「:front」と入力してEnterを押すと、サイトのフロントページに即座に移動します。
カスタムモジュールとの統合
開発者はモジュールにhook_coffee_commands()を実装することでCoffeeを拡張できます。例えば、カスタムダッシュボードモジュールは「:dashboard」のようなコマンドを追加してカスタム管理ダッシュボードにジャンプしたり、「:reports」でカスタムレポートページにアクセスしたりできます。これにより、モジュール固有の機能がCoffeeを通じて簡単にアクセス可能になります。
複数メニュー検索の設定
複数のメニュー(例:管理、メインナビゲーション、フッター)を使用するサイトでは、管理者はCoffeeがすべてのメニューを検索するように設定できます。これにより、エディターは管理ページだけでなく、サイト上のリンクされたページを素早く見つけることができます。/admin/config/user-interface/coffeeで追加のメニューを有効にしてください。
新しいタブで管理ページを開く
複数の管理ページを同時に開く必要がある場合(例:設定の比較や別のページを参照しながらコンテンツを編集)、CoffeeでCtrl+Enter(Windows)またはCmd+Enter(Mac)を使用すると、現在のページを離れずに新しいブラウザタブで結果を開くことができます。
Develモジュールとの統合
Develモジュールがインストールされている場合、そのメニュー項目はCoffeeで検索可能になります。「clear」と入力してcacheクリアページ(devel/cache/clear)を見つけて移動したり、「phpinfo」でPHP情報ページにアクセスしたりして、開発者のワークフローを効率化できます。
Tips
- 短く覚えやすい検索語を使用 - Coffeeはページタイトル、パス、コマンドに対してマッチするため、2〜3文字の入力で十分なことが多い
- :frontや:addなどの組み込みコマンドにはコロン(:)をプレフィックスとして使用
- 主に管理ナビゲーションが必要な場合は、より速く焦点を絞った結果のために設定するメニューを少なくする
- 選択前により多くのオプションを確認する必要がある場合は、設定でmax_resultsを増やす
- 開発者ツールやcacheクリアへのクイックアクセスのためにCoffeeとDevelモジュールを組み合わせる
- Coffeeはアクセス権限を尊重 - ユーザーはアクセス権限のあるメニュー項目のみを表示
- 気が変わった場合はEscapeキーでCoffeeダイアログを素早く閉じる
Technical Details
Admin Pages 1
/admin/config/user-interface/coffee
Coffeeが検索するメニューと、オートコンプリートドロップダウンに表示する結果の数を設定します。
権限 2
Hooks 1
hook_coffee_commands
カスタムコマンドとナビゲーション項目でCoffeeの機能を拡張します。このhookにより、モジュールは独自の検索可能な項目をCoffeeインターフェースに追加でき、カスタムページへのクイックナビゲーションやモジュール固有のコマンドの実行が可能になります。
Troubleshooting 5
ユーザーが「Access Coffee」権限を持っていることを確認してください。ページソースを検査してcoffee.jsがロードされているか確認してください。すべてのcacheをクリアして再試行してください。
/admin/config/user-interface/coffeeのCoffee設定で少なくとも1つのメニューが選択されていることを確認してください。選択したメニューに項目が含まれていること、およびユーザーがそれらのメニュー項目へのアクセス権限を持っていることを確認してください。
ツールバーボタンは「Access Coffee」と「Access toolbar」の両方の権限を持つユーザーにのみ表示されます。Toolbarモジュールがまだ有効でない場合はインストールして有効にし、適切な権限が付与されていることを確認してください。
実装が.coffee.incファイル(hook_hook_info()で定義)またはメインの.moduleファイルにあることを確認してください。新しいコマンドを追加した後はすべてのcacheをクリアしてください。hookが各項目に「value」、「label」、「command」キーを持つ配列を返していることを確認してください。
一部のブラウザ(特にOperaとInternet Explorer)では、Alt+Shift+DまたはAlt+Ctrl+Dを使用してください。キーボードショートカットに問題がある場合は、ツールバーのCoffeeアイコンをクリックすることもできます。
Security Notes 4
- Coffeeはすべてのメニュー項目に自動的にアクセスチェックを適用し、ユーザーがアクセス権限のあるナビゲーションオプションのみを表示することを保証
- CSRFトークンは必要なルートに対して適切に処理され、潜在的なセキュリティ脆弱性を防止
- モジュールは機能の使用(access coffee)と管理(administer coffee)に対して別々の権限を作成し、Drupalの最小権限の原則に従う
- すべてのメニュー項目タイトルはHtml::escape()を使用して適切にエスケープされ、XSS脆弱性を防止