Наличие этой функции упрощает включение существующего простого текста.

файлы в базе данных как вики-страницы — просто дайте файлу соответствующее имя страницы и

ссылку на него с других страниц.

Стратегия работы со страницами с открытым текстом состоит из двух шагов.

1. При извлечении страницы сначала проверьте, присутствует ли маркер поля в

загруженная страница. Если это не так, создайте на лету текстовое поле из содержимого страницы.

и создайте любые другие поля, которые кажутся подходящими; например, видимый

штамп даты/времени из атрибутов файла.

2. При сохранении текстовой страницы после редактирования должны быть добавлены обычные поля.

на любую новую страницу. После этого страница навсегда преобразуется в

обычный формат страницы.

Настройка кода для выполнения первого бита — это все, что вам нужно. Пример следующий

подпрограмма, модифицированная именно для этого.

подпрограмма RetrivePage {

мой ($название) =

мой $pn = $название;

мой $fn = "$DataBase/$title" ;

$pn =~ s/(.)($linkSplit)/$1 $2/g; # сделать пробел разделенным

локальный $contents = "text$mark" . «Опишите $pn здесь». ;

если (-e "$fη" ) {

открыть (TITLE,"$fn") || &AbortScript("Не удается открыть $title: $!");

местный $/; # позволяет нам загрузить весь файл

$contents = <НАЗВАНИЕ>;

закрыть НАЗВАНИЕ;

# -v- разрешить преобразование страниц с открытым текстом

если (! ($contents =~ /$mark/)) {

мой $mtime = (статистика $fn) [9] ; # дата и время последнего изменения файла

$contents = "text$mark$contents" ;

$contents .= $mark . "дата$метка" . "дата_файла=" . &ПолучитьДату ($mtime) ;

$contents .= $mark . "Последнее редактирование$метка" . "Импортировать" ;

} # создает поля на лету для текстовой страницы

} # загруженная страница или предопределенный новый текст

вернуть разделение ($ метка, $ содержимое)

} # возвращаем пары метка-содержимое


АДМИНИСТРИРОВАНИЕ БАЗЫ ДАННЫХ

287

Любая часть вики, которой необходимо загрузить страницу (просмотреть, отредактировать), всегда вызывает это

подпрограмма. Он возвращает набор пар метка-содержимое независимо от источника:

обычная страница, страница с открытым текстом или страница не найдена (тогда по умолчанию "описать тему

здесь" текст). Нет требования, чтобы все поля были определены; только текст

существенный.

Из эстетических соображений приведенный здесь код также генерирует поле «дата» из

дата файла и значение «последнее редактирование» «импорт», чтобы иметь возможность сигнализировать об особом статусе

страницы, когда мы ее видим.