はじめに
プリザンターであまり使わないサイトや既に終了したプロジェクトのためのサイトなど、消すわけにはいかないけど、表示されているのが邪魔だな・・・というサイトがありませんか?
アーカイブ用のフォルダを作って移動させるのも1つの方法なのですが、アクセス権の管理がサイトの階層から離れてしまうことが嫌なケースや、そもそも所定の階層外に動かしたくないなど、その場で存在だけ消したいという場合の対処法を紹介します。
「読取専用の場合は画面に表示しない」オプションを使う
サイトへのアクセス権が読み取りのみの場合に画面に表示しないというオプションです。マニュアルはこちらです。
管理者など必要最低限のユーザーのみ書き込み権限を付与して、他のユーザは読み取り権限のみとすることで、サイトからの表示は消えます。
ただし、この方法だと完全に表示からは消えてしまうので、一時的に表示させることは出来ません。これだと一時的に消しておきたいという場合はアンマッチですね。
スタイルとスクリプトで対応する
現時点だとこの方法がオススメです。消したいサイトに対してCSSをあてて非表示化して、表示させたい時にスクリプトで表示させます。
このようになっているサイトで、記録テーブルA(サイトID:3482327)にアーカイブっぽい動作をあててみます。
消したいサイトを指定する
消したいサイトが含まれるフォルダ(今回はSandbox)の管理のスタイルから、消したいサイトを指定したCSSをあてます。CSSはこのようになります。
.nav-site[data-value="3482327"] {
display:none;
}
再表示を行う
CSSでdisplay:none;
として消してしまっているので、勘の鋭い方はもうおわかりかと思います。
再度表示させる時はjQueryでshow
してしまえばOKです。JavaScriptとしては、こんな感じです。
$('.nav-site').show();
試しに開発者ツールのコンソールで実行してみると、先ほど非表示にした記録テーブルAが再度表示されますね。
あとは、これを実行しやすい様にナビゲーションメニューやコマンドボタンなどに仕込みます。
もう一工夫
先ほどの単に表示させるだけでもかまわないのですが、ちょっと工夫を凝らして、「アーカイブしていないサイト(=通常のサイト)」と「アーカイブされているサイト」をスイッチ出来るようにします。
$('.nav-site:not(.to-parent)').toggle();
工夫といってもこれだけです。toggle
を使えば、show
とhide
間で自動的にスイッチされます。このとき、「上へ」もnav-site
クラスを持っているため、それが一緒にスイッチされるのを防ぐために否定フィルタを加えています。
これを開発者ツールで実行してみるとこんな動きになります。
いい感じですね。
実際に設定してみた
今度はこれをナビゲーションメニューに仕込みます。拡張ナビゲーションメニューの出番です。
定義ファイルを作ってみるとこんな感じになります。
{
"TargetId": "SettingsMenu",
"Action": "Append",
"NavigationMenus": [
{
"ContainerId": "SiteArchiveContainer",
"MenuId": "SiteArchiveMenu",
"Name": "アーカイブ",
"Icon": "ui-icon ui-icon-gear",
"ChildMenus": [
{
"MenuId": "SiteArchive_ArchiveToggle",
"Name": "アーカイブ表示",
"Icon": "ui-icon ui-icon-arrowrefresh-1-w",
"Url": "javascript:$('.nav-site:not(.to-parent)').toggle();$('#SiteArchive_ArchiveToggle a').text($('#SiteArchive_ArchiveToggle a').text() === 'アーカイブ表示' ? '通常表示' : 'アーカイブ表示');",
"ReferenceTypes": ["Sites"],
"Actions": ["index"]
}
]
}
]
}
ナビゲーションメニューの文言の書き換えも同時におこなっています。
実行してみるとこんな感じです。
いい感じですね。
まとめ
プリザンターでサイトのアーカイブっぽい挙動を作ってみました。アーカイブ対象としたいサイトの背景色を変える1などすれば、さらに見た目でわかりやすい運用も可能ですので、これらのソースをベースにカスタマイズして使ってみてください。
-
最初に非表示のスタイルを当てるタイミングで背景色設定もしてしまう ↩