tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグイン作成で、ページベースの画面を作る

タイトルだけだとなんのこっちゃって感じですが。。。
一番わかりやすいのは、Wordのインポート機能のページかと思います。ページを表示しているときに右上の「Tools」からプルダウンで出てくるやつ。
f:id:tohokuaiki:20140521212725j:plain

これって、左側のページメニューやスペースへのアクセス権限はすべてチェックされているけどページを表示しているわけではないんですよね。こういうのをプラグインで作りたい。XWorks/WebWorks2のActionクラスであれば簡単にできます。

単純に、

public class AttachPagecustomAction extends ViewPageAction implements PageAware

というようにViewPageActionを継承し、PageAwareをImplementしたActionクラスにすること。

ViewPageAction は、添付ファイルのアップロード画面だとAbstractViewAttachmentsActionクラスになる*1

あとは、未実装なものを

    @Override
    public ContentEntityObject getContentEntityObject()
    {
        return getPage();
    }

    private AbstractPage page;

    /**
     *
     * @return
     */
    @Override
    public AbstractPage getPage()
    {
        return page;
    }

    /**
     *
     * @param page
     */
    @Override
    public void setPage(AbstractPage page)
    {
        this.page = page;
    }

    @Override
    public boolean isPageRequired()
    {
        return true;
    }

    @Override
    public boolean isLatestVersionRequired()
    {
        return true;
    }

    @Override
    public boolean isViewPermissionRequired()
    {
        return true;
    }

としてやる。基本的に全部tureで良い。

また、このページベースだと、pageId=をURLかPOSTで渡してやらないとPage Not Foundの画面が出る。便利である。

*1:・・・みたい。ページの添付ファイルアップロード画面を見たらそうなってた