Материал из биософт-м
По аналогии как было в форуме в вики теперь тоже можно скрывать опциональные детали текста до щелчка по ним:
Детали
Полезно в основном программистам чтоб заховать свои исходники и свое мумбо джумбо которое нормальных людей читать напрягает.
- Тут можно использовать обычное форматирование вики.
Для этого текст заключается в
<hide>Скрываемый текст</hide>
Опции
Для того чтобы заменить текст на кнопке, укажите XML параметр label:
<hide label="Подробности">Скрываемый текст</hide>
получится:
Проблемы
- После </hide> обязательно надо переходить на новую строку.
Детали
Вики зачем то прерывает предыдущий параграф. Это не дает и реализовать этот тег как span, внутри текста. Нет времени вникать почему.
- Перед тегом <hide> не надо пропускать строчку.
- На версии страницы для печати все детали раскрыты всегда, что бы читателю распечатки не пришлось тщетно кликать в бумагу если та не поддерживает интерактивный HTML в полном объеме стандарта.
Реализация
Эта функция реализована как расширение парсера вики через ее стандартный интерфейс.
Детали
//VL: 2010-09-11
//
// hide label="more">...
//
$wgHooks['ParserFirstCallInit'][] = 'GHideTagSetup';
function GHideTagSetup( &$parser )
{
$parser->setHook( 'hide', 'GHideTagRender' );
return true;
}
function GHideTagRender( $input, $args, $parser, $frame = null )
{
$sLabel = $args['label'];
if ($sLabel == "")
{
$sLabel = "(...)";
}
$sStyle = "style='display:none;'";
global $wgRequest;
if ($wgRequest->getVal( 'printable' ) === 'yes')
{
$sStyle = "";
}
$sId = mt_rand();
$sLabel = $parser->recursiveTagParse($sLabel);
$input = $parser->recursiveTagParse($input);
$htmlResult =
"\n" .
"<div class='HideTagBorder'>" .
"<a href=\"javascript:ShowHideWiki('" . $sId . "', '');\" " .
"class='HideTagButton'" .
">" .
$sLabel . "</a>\n" .
"<div id='" . $sId . "' class='HideTagHidden' " . $sStyle . ">" .
$input .
"</div>" .
"</div>";
return $htmlResult;
//return implode( '<br />', $attr ) . "\n\n" . htmlspecialchars( $input );
}
//VL.
Этот код полагается на JavaScript ShowHideWiki() который можно почитать в исходнике данной страницы.