Наличие этой функции упрощает включение существующего простого текста.
файлы в базе данных как вики-страницы — просто дайте файлу соответствующее имя страницы и
ссылку на него с других страниц.
Стратегия работы со страницами с открытым текстом состоит из двух шагов.
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
Любая часть вики, которой необходимо загрузить страницу (просмотреть, отредактировать), всегда вызывает это
подпрограмма. Он возвращает набор пар метка-содержимое независимо от источника:
обычная страница, страница с открытым текстом или страница не найдена (тогда по умолчанию "описать тему
здесь" текст). Нет требования, чтобы все поля были определены; только текст
существенный.
Из эстетических соображений приведенный здесь код также генерирует поле «дата» из
дата файла и значение «последнее редактирование» «импорт», чтобы иметь возможность сигнализировать об особом статусе
страницы, когда мы ее видим.