外部リンクのプロバイダ

この関数はタスクと別のシステムに保存されているアイテムのリンクの追加を許容します。

例えば、タスクとこれらをリンクできます:

  • (古典的な)webページ
  • 添付ファイル (web上に保存されているPDF文書、アーカイブ…)
  • 他のチケットシステム (バグトラッカー, カスタマーサポート用チケット…)

個々のアイテムはURL、依存タイプ、そしてタイトルの型を持ちます。

デフォルトでは、Kanboard は2つのタイプのプロバイダを含んでいます:

  • Web リンク: リンクをコピー・ペーストするとKanboardはページのタイトルを自動的に取得します
  • 添付: webページ以外の全てのものとリンク

ワークフロー

  1. エンドユーザーはURLをフォームにコピー・ペーストして投稿します
  2. リンクのタイプが “auto” ならば、Kanboardは見合うものがあるまで全ての登録済みプロバイダを順繰りに当たります。
  3. その後リンクのプロバイダは ``ExternalLinkInterface``として実装されるオブジェクトを返します
  4. リンクを保存する前の、全てのデータが埋められたフォームがユーザーに表示されます。

インターフェース

プラグインから新しいリンクのプロバイダを実装するには、これらのインターフェースの実装から2つのクラスを作成しなければなりません。

  • Kanboard\Core\ExternalLink\ExternalLinkProviderInterface
  • Kanboard\Core\ExternalLink\ExternalLinkInterface

ExternalLinkProviderInterface

Method Usage
getName() プロバイダ名 (label) を取得
getType() リンクのタイプを取得 (して、データベースに保存)
getDependencies() プロバイダによってサポートされている 依存タイプの連想配列を取得
setUserTextInput($input) ユーザーによって入力されたテキストをセットする
match() ユーザーの入力をプロバイダが正しくパースした場合に trueを返す
getLink() プロパティからリンクを見つけて取得

ExternalLinkInterface

Method Usage
getTitle() リンクのタイトルを取得
getUrl() リンクのURLを取得
setUrl($url) リンクのURLをセット

新しいリンクのプロバイダを登録する

Plugin.php 内では、単に ExternalLinkManager オブジェクトから register() メソッドを呼び出すだけです:

<?php

namespace Kanboard\Plugin\MyExternalLink;

use Kanboard\Core\Plugin\Base;

class Plugin extends Base
{
    public function initialize()
    {
        $this->externalLinkManager->register(new MyLinkProvider($this->container));
    }
}

  • Kanboardに含まれるデフォルトのプロバイダの “WebLink” と “Attachment”