• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(ページ,編集,UI);

*目次 [#w75bb1ef]
#contents
----
#lsx(new=true);

*関連 [#fb08e581]
#lsx(tag=下位展開,new=true,except=^下位展開(/.*)?$)

[[検索:下位展開]]

*下位展開周辺のタグ [#gad22428]
#tag(0,下位展開)


*下位展開とは [#v252e4b3]
RIGHT:[[:t/下位展開]]

ツリー状のページ構造で、上位ページを扱うときに下位のページを含むこと。
ルートディレクトリにサブディレクトリが含まれるように。


%%''編集時に''下位ページを埋め込み。%%
閲覧時に見える範囲を編集するので、閲覧時・編集時両方で。
まとめて編集、ページの分割や統合なども。

その範囲が編集対象の下位に位置するページ。

-何階層下まで含むか?

**体裁 [#q1420ada]
編集時はWikiTextで複数ページを表現しないといけない。
→WikiNotation/ページタイトル で1ページずつ区切る。(ページ区切り、マーカーを用意する)

ページ/章 と競合。
ページが細切れになるのは隠蔽すべきだけど、マーカー(ページ区切り)が見えるくらいならいい。


**表示中より深いページを編集するときの展開範囲 [#h9500888]
基準ページと、深さで展開範囲指定。
閲覧ビューが基準。他のビューでは閲覧ビューに合わせて展開。
→展開された下位ページの編集ボタンを押すと、深さを減らして展開するように。
%%それよりも、基準ページはそのまま(上位)、深さもそのまま、代わりに編集対象ページ名を付けたほうが分かりやすい。URIが閲覧していたページになるので。%%


**下位展開(閲覧時/編集時) [#z8af969d]
下位ページが展開されないと使いにくい。
作成時のページ内容が再現されないので。
→編集時に下位ページが展開されるように。1つのテキストに下位ページ分も含むようにする。見出しを編集するときはその見出しの下位ページも含む。

%%見出し横のEditボタンはその見出しだけ。下位ページは埋め込みリンクのまま。%%
%%どのページも見出しで始まるので下位展開しない編集はページ全体どこででもできる。%%

ページ先頭にはページタイトルが見出しとして(ページ/内容に書いてなくても)’’閲覧時に’’自動付与する。
ページ先頭にはページタイトルが見出しとして(ページ/内容に書いてなくても)''閲覧時に''自動付与する。

自動で埋め込み記法を追加するようなことはしない。
下位展開しないページでは(例えばルートページでは)下位とは別のページとして見えるようにする。
それ以外のページは下位ページ全てを含めて1つのページに見えるように。


***下位展開をCRUDそれぞれの場合で [#j0a9707d]
C:見出しは下位ページになる。
R:閲覧時、「下位ページを見せない属性」が付いていないページなら下位と結合(下位展開)して表示。
U:下位展開されたページを編集すれば下位ページも更新。
D:下位展開されたページを消せば、そのページも消える。


**実装案 [#yadfe92a]
編集には下位ページを含めることができる。どうするかはユーザーからのリクエスト次第。編集コマンドに下位展開オプションがある。
下位ページが展開されているときは複数ファイルを書き換えることになる。
下位ページが見出し(埋め込みリンク)だけのときは下位ページに影響なし。埋め込みが行なわれなくなるだけ。
見出しだけの下位ページがあったとしても、埋め込みリンク記法かどうかで区別できるはず。それに見出しごとではなく1ページ分をまとめて下位展開するので気付きにくくはない。


**例 [#y30d53b1]


***ルートページを消されたとき [#s950be4f]
ルートページを消してしまったとき、あるいは書き換えられてしまったとき、下位ページが残っている間はルートページを戻すだけで全て元通り。
下位ページ(ルートの下位=全ページ)も消えてしまったら1ページあたり2〜3クリックでリバート。


***ルートページを消したいとき [#qdb9b2cb]
ルートページだけ消す。あとは放置するか、パージコマンドを実行。全ページが削除される。下位ページを編集する必要は無い。


**パージ [#ie1b7ac7]
不要。

%%埋め込みされなくなっただけで、消したつもりのページが残ってしまうことがあるので、そういうページを消す仕組みがいる。%%
%%複数データを一括処理するとき、取り消しが困難になりやすいので、その対策も含めて。%%
%%時間経過かパージコマンド実行で削除する。’’通常の削除なのでそれでもまだ復帰できる’’。%%
%%時間は無限大にもできるように。→自動的には削除しないという設定になる。%%

%%被リンク数ではなく、上位ページが無いページをパージ対象にする。%%
%%これはファイルシステムのフォルダーのメタファーに当てはめやすい。%%

--------------------

下位ページ作成をユーザーに見せなくするので、パージを不要にする必要がある。
編集時に下位展開されれば、下位ページが埋め込みされなくなることはなくなる。問題は下位展開の深さに制限をかける設定の時。埋め込みだけ消すことができる。
それでも埋め込みされないページができてしまうなら、孤立しているページ一覧を作るプラグインも用意。


**編集コマンドの下位展開オプション [#p371614e]
編集コマンドでは「下位を含むか」ではなく、「下位をいくつ含むか」を指定。
これは分かりやすくするため閲覧時も編集時も同じ値を設定しておく。非推奨設定ながら別の値にもできるように。

値の範囲は0以上の整数。0で下位を見せない(下位展開しない)。
無限大も設定可能に。それ以外はデフォルト値。デフォルト値は1〜2程度?ハードコーディング。デフォルト値のときだけページ/属性の「下位を展開しない」を反映する。

0のときでもアウトライン編集として利用価値がある。見出しの順序入れ替えをしやすい。


**%%下位ページをサポートする機能を%% [#pf587e20]
%%ページ作成時とページ編集時でも下位ページの仕組みをサポートする機能を用意。%%
下位ページは上位ページと一緒に扱われる。


**想定される使用方法 [#of8e17c3]
一番分かりやすいのは
-デフォルト展開深度は∞に設定
特に指定しなければ末端まで展開。
-ルートページには展開しない属性を付与
ルートに限らず任意のページでページ属性を設定すればいい。

展開深度のデフォルト値を設定するので、ルートページなどでは下位展開されない。ちょうどいい。

普通にページ作成していけば最大でも深度は4程度。
編集頻度は末端のほうが高いだろうから下位展開を気にすることは少ないはず。


**見える範囲 [#p748006c]

ページ構造のなかで、表示は指定されたページの[[有力な見解]]とその下位ページのみ表示。
%%下位方向の管理者設定にある「下位何階層を表示するか」。%%→これはやめて、常に最下層まで展開するように。使いやすさのため。作成時に打ち込んだテキストがすべて見えるように。

%%それより下位のページはページ名だけ目次として表示。%%
%%これも管理者設定の「目次だけを何階層表示するか」で。内容表示しない深さを何階層分にするか。%%

ページ/属性で下位展開をしないよう設定されているページを閲覧・編集するとき、下位ページのサポートはしない。
別のページのように見えていいので。例えばルートページとその下位ページ。

--------------------

%%目次の位置はそれぞれのページ内容の末尾、関連するページの側がいい。%%


**下位展開するかしないかの設定 [#z2578147]
-下位を展開するか
-下位展開に応じるか

ページが2つのページ/属性を持つ。
隠し属性がついていれば「下位展開には応じない」ので、「下位展開に応じるか」=隠し属性でもいい。
編集時、閲覧時共通。同じ属性値で両方の場合に影響。


**編集時の下位展開 [#fda9ea42]
投稿時、マーカーの存在しないページは空とみなす→ページ削除
編集フォームには(下位展開分も含めた)ページ名を版ID付きで付けておく。これでページ名を表すマーカーがあるかどうか判定。
版ID付き…編集の衝突判定にも使うので。

ページ/編集とも関連。