Форум Dwarf Fortress

Администрация форума => Вики-дварфия => Тема начата: Asva от 27 Августа 2013, 18:50:06

Название: Вопросы по работе в вики.
Отправлено: Asva от 27 Августа 2013, 18:50:06
Есть несколько вопросов к разбирающимся людям.
1) В англоязычной вики, воркшопы, существа, вещи многие параметры берут из равов. Можно ли реализовать что-то сходное?
Ведь ручная правка, в сравнении, куда более трудоемка и, менее - мобильна.
2) Вброс кипы картинок, реально?
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 28 Августа 2013, 21:09:17
1. В нашей вики-дварфии тоже самое, инфа о существах, растениях, камнях берётся из равок. Ведь во многом она является зеркальным отражением англовики.
2. Картинки можно, только не переборщить, как с количеством, так и с размером. Картинки по 5-10 Мб каждая не нужны. Куда именно ты хочешь их вставлять?
Название: Re: Вопросы по работе в вики.
Отправлено: AnotherBoris от 29 Августа 2013, 04:24:09
:) Асва скромный, и не в обиду ему будет сказано, мутный :) Он имел в виду не столько можно ли в русской вики реализовать что-то подобное (ибо Асва уже знал до этого, что можно), и даже не столько как это реализовать, сколько просил показать ему на конкретных примерах как этим пользоваться для конкретных, не названных Асвой в целях конспирации, целях, прости Господи за тавтологию :)
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 29 Августа 2013, 11:16:44
Подтверждаю сказанное нескромным AnotherBoris-ом.
1) Нужно взять равы из мастерворка и адаптировать автоматическое из них выдирание нужных кусков так, чтобы минимально затронуть работу вики ванильной. Я слабое представление имею, как  это делается :).
На данном этапе интересуют воркшопы. В перспективе - также существа и вещи. Хотя если ориентироваться на вики англоязычную, существ может оказаться сделать изрядно просто (если на задаваться целью впихнуть в каждую статью кастомный кусок).
2) Меня интересуют картинки воркшопов. Сильно заколебался их руками вставлять. Они в сумме на пару мегабайт может завесят.
Название: Re: Вопросы по работе в вики.
Отправлено: Oreyn от 29 Августа 2013, 14:57:34
Подтверждаю сказанное нескромным AnotherBoris-ом.
1) Нужно взять равы из мастерворка и адаптировать автоматическое из них выдирание нужных кусков так, чтобы минимально затронуть работу вики ванильной. Я слабое представление имею, как  это делается :).
На данном этапе интересуют воркшопы. В перспективе - также существа и вещи. Хотя если ориентироваться на вики англоязычную, существ может оказаться сделать изрядно просто (если на задаваться целью впихнуть в каждую статью кастомный кусок).
2) Меня интересуют картинки воркшопов. Сильно заколебался их руками вставлять. Они в сумме на пару мегабайт может завесят.

Давно тыкал я медиавики. Но помню там можно указывать тег на принадлежность статьи к определенной группе. Создаешь группу "Мастерворк" и вперед. Мало того, можно сделать шаблон специальной плашки с картинкой и надписью "Эта статья относится к моду Мастерворк", и в которую включить тег группы. После чего такую плашку можно добавить в статью одной строчкой вызова, статья обзаведется нужным заголовком плюс автоматически попадет в список статей по мастерворку, который можно получать в виде списка. Кроме того, в шаблон плашки можно передавать например название статьи в виде параметра, и тогда она будет выглядеть как "Мастерская Говнокрафтера относится к моду мастерворк!". И сюда же линк, на статью что же такое мастерворк вообще.

Что ты имеешь в виду под "подсунуть равки - получить статьи?". В принципе это возможно, фактически тебе нужно всего лишь написать текстовый парсер, который из подсунутых равок сделает шаблон в формате медиавики. Если шаришь в любом языке программирования, открыть/закрыть/построчно прочитать/записать текстовый файл, регулярные выражения, словари для уже имеющихся статей, чтобы делать медиавики линки и вперед.
Но опять таки, сколько там всего этих мастерских? 10-20? Написать и отладить такой парсер по времени будет дольше чем руками их набрать. Разве что ошибок по невнимательности будет меньше, да и стиль единым.
А вот если замахиваться на парсер, который будет инкрементально обновлять статьи по новым равкам. Тут задачка еще посложнее и позаковыристей. Но опять таки вопрос "маю час, маю натхнення".

Да, про размер файлов - в фотошопе юзайте Save for Web and Devices, с небольшой потерей в качестве отличная потеря в весе. Вместо 2 мб будет килобайт 500 от силы.
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 29 Августа 2013, 15:03:35
1. А если равки мастерворка слегка переименовать, добавить какую-нибудь букву к текстовым файлам в начале? Тогда стандартные шаблоны можно использовать без изменений.
2. Про картинки не совсем понял, тебя утомило их по одной загружать на сайт и хочется сразу десяток выбрать?

Мало того, можно сделать шаблон специальной плашки с картинкой и надписью "Эта статья относится к моду Мастерворк", и в которую включить тег группы.
Стоит уже нечто подобное.
Что ты имеешь в виду под "подсунуть равки - получить статьи?". В принципе это возможно, фактически тебе нужно всего лишь написать текстовый парсер, который из подсунутых равок сделает шаблон в формате медиавики. Если шаришь в любом языке программирования, открыть/закрыть/построчно прочитать/записать текстовый файл, регулярные выражения, словари для уже имеющихся статей, чтобы делать медиавики линки и вперед.
Парсер уже есть, но как я понял, есть вероятность затереть оригинальные равки, если они имеют одинаковые названия с равками из Мастерворка.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 30 Августа 2013, 02:26:42
Oreyn, >10-20
В районе трехсот, если не больше  :-[.

Admin, >тебя утомило их по одной загружать на сайт
Да, разбалован дропбоксом и любыми другими хостингами.
> есть вероятность затереть оригинальные равки
Не знаю. И толком не могу найти информации на эту тему. Предположительно, для загрузки равок нужно больше прав (чем есть у меня).
Можно по-подробнее, как создаются (тырятся из англ. вики) модули парсера?

Эдит: немного разобрался в том, как это работает. Для существ есть темплейт, выдирающий из равов все, что полагается. Равы делаются подстатьей (?), так: Beer Man/raw?.
Для воркшопов ситуация куда грустней. В ваниле воркшопов немного и они не полностью описаны равками. Т.е. их проще описать ручками, а парсера нет.
Для мастерворка хотел бы сделать автовыдирание из равов профессии строителя и работника, горячие клавиши, список реакций. Таков план.
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 30 Августа 2013, 20:03:18
Вроде вот этот парсер обрабатывает информацию. Если ты в этом разбираешься, то можешь переделать его под свои нужды, а я прикручу его к движку вики-дварфии. А дальше уже шаблонами.
<?php
/*
 * DFRawFunctions extension by Quietust
 * Dwarf Fortress Raw parser functions
 */

if (!defined('MEDIAWIKI'))
{
echo "This file is an extension of the MediaWiki software and cannot be used standalone\n";
die(1);
}

$wgExtensionCredits['parserhook'][] = array(
'path'           => __FILE__,
'name'           => 'DFRawFunctions',
'author'         => 'Quietust',
'url'            => 'http://df.magmawiki.com/index.php/User:Quietust',
'version'        => '1.0',
'description'    => 'Dwarf Fortress Raw parser functions',
);

$wgHooks['ParserFirstCallInit'][] 'efDFRawFunctions_Setup';
$wgHooks['LanguageGetMagic'][] 'efDFRawFunctions_Magic';

function 
efDFRawFunctions_Setup (&$parser)
{
$parser->setFunctionHook('df_raw', 'DFRawFunctions::raw');
$parser->setFunctionHook('df_tag', 'DFRawFunctions::tag');
$parser->setFunctionHook('df_tagentry', 'DFRawFunctions::tagentry');
$parser->setFunctionHook('df_tagvalue', 'DFRawFunctions::tagvalue');
$parser->setFunctionHook('df_foreachtag', 'DFRawFunctions::foreachtag');
$parser->setFunctionHook('df_foreachtoken', 'DFRawFunctions::foreachtoken');
$parser->setFunctionHook('df_makelist', 'DFRawFunctions::makelist');
$parser->setFunctionHook('df_statedesc', 'DFRawFunctions::statedesc');
$parser->setFunctionHook('mreplace', 'DFRawFunctions::mreplace');
$parser->setFunctionHook('delay', 'DFRawFunctions::delay');
$parser->setFunctionHook('eval', 'DFRawFunctions::evaluate');
return true;
}

function 
efDFRawFunctions_Magic (&$magicWords$langCode)
{
$magicWords['df_raw'] = array(0'df_raw');
$magicWords['df_tag'] = array(0'df_tag');
$magicWords['df_tagentry'] = array(0'df_tagentry');
$magicWords['df_tagvalue'] = array(0'df_tagvalue');
$magicWords['df_foreachtag'] = array(0'df_foreachtag');
$magicWords['df_foreachtoken'] = array(0'df_foreachtoken');
$magicWords['df_makelist'] = array(0'df_makelist');
$magicWords['df_statedesc'] = array(0'df_statedesc');
$magicWords['mreplace'] = array(0'mreplace');
$magicWords['delay'] = array(0'delay');
$magicWords['eval'] = array(0'eval');
return true;
}

class 
DFRawFunctions
{
// Takes some raws and returns a 2-dimensional token array
// If 2nd parameter is specified, then only tags of the specified type will be returned
private static function getTags ($data$type '')
{
$raws = array();
$off 0;
while (1)
{
$start strpos($data'['$off);
if ($start === FALSE)
break;
$end strpos($data']'$start);
if ($end === FALSE)
break;
$off $end 1;
$tag explode(':'substr($data$start 1$end $start 1));
if (($type == '') || ($tag[0] == $type))
$raws[] = $tag;
}
return $raws;
}

// Take an entire raw file and extract one entity
public static function raw (&$parser$data ''$object ''$id ''$notfound '')
{
$start strpos($data'['$object .':'$id .']');
if ($start === FALSE)
return $notfound;
$end strpos($data'['$object .':'$start 1);
if ($end === FALSE)
return substr($data$start);
return substr($data$start$end $start);
}

// Checks if a tag is present, optionally with a particular token at a specific offset
public static function tag (&$parser$data ''$type ''$offset 0$entry '')
{
if ($entry == '')
$entry $type;
$tags self::getTags($data$type);
foreach ($tags as $tag)
{
if ($offset >= count($tag))
continue;
if ($tag[$offset] == $entry)
return TRUE;
}
return FALSE;
}

// Locates a tag matching certain criteria and returns the tag at the specified offset
// Match condition parameters are formatted CHECKOFFSET:CHECKVALUE
// If offset is of format MIN:MAX, then all tokens within the range will be returned, colon-separated
public static function tagentry (&$parser$data ''$type ''$offset 0$notfound 'not found')
{
$numcaps func_num_args() - 5;
$tags self::getTags($data$type);
foreach ($tags as $tag)
{
if ($offset >= count($tag))
continue;
$match true;
for ($i 0$i $numcaps$i++)
{
$parm func_get_arg($i 5);
list($checkoffset$checkval) = explode(':'$parm);
if (($checkoffset >= count($tag)) || ($tag[$checkoffset] != $checkval))
{
$match false;
break;
}
}
if ($match)
{
$range explode(':'$offset);
if (count($range) == 1)
return $tag[$offset];
else
{
$out = array();
for ($i $range[0]; $i <= $range[1]; $i++)
$out[] = $tag[$i];
return implode(':'$out);
}
}
}
return $notfound;
}

// Locates a tag and returns all of its tokens as a colon-separated string
public static function tagvalue (&$parser$data ''$type ''$notfound 'not found')
{
$tags self::getTags($data$type);
if (count($tags) == 0)
return $notfound;
$tag $tags[0];
array_shift($tag);
return implode(':'$tag);
}

// Iterates across all matching tags and produces the string for each one, substituting \1, \2, etc. for the tokens
// Probably won't work with more than 9 parameters
public static function foreachtag (&$parser$data ''$type ''$string '')
{
$tags self::getTags($data$type);
$out '';
foreach ($tags as $tag)
{
$rep_in = array();
for ($i 0$i count($tag); $i++)
$rep_in[$i] = '\\'. ($i 1);
$out .= str_replace($rep_in$tag$string);
}
return $out;
}

// Iterates across all tokens within a specific tag in groups and produces the string for each group, substituting \1, \2, etc.
// Input data is expected to come from tagvalue()
public static function foreachtoken (&$parser$data ''$offset 0$group 1$string '')
{
$tag explode(':'$data);
$out '';
$rep_in = array();
for ($i 0$i $group$i++)
$rep_in[] = '\\'. ($i 1);
for ($i $offset$i count($tag); $i += $group)
{
$rep_out = array();
for ($j 0$j $group$j++)
$rep_out[] = $tag[$i $j];
$out .= str_replace($rep_in$rep_out$string);
}
return $out;
}

// Iterates across all objects in the specified raw file and extracts specific tokens
// Token extraction parameters are formatted TYPE:OFFSET:CHECKOFFSET:CHECKVALUE
// If CHECKOFFSET is -1, then CHECKVALUE is ignored
// If TYPE is "STATE" and OFFSET is "NAME" or "ADJ", then OFFSET and CHECKOFFSET will be fed into statedesc() to return the material's state descriptor
// Objects which fail to match *any* of the checks will be skipped
public static function makelist (&$parser$data ''$object ''$string '')
{
$numcaps func_num_args() - 4;
$rep_in = array();
for ($i 0$i $numcaps$i++)
$rep_in[$i] = '\\'. ($i 1);
$out '';
$off 0;
while (1)
{
$start strpos($data'['$object .':'$off);
if ($start === FALSE)
break;
$end strpos($data'['$object .':'$start 1);
if ($end === FALSE)
$end strlen($data);
$off $end;
$tags self::getTags(substr($data$start$end $start));
$rep_out = array();
for ($i 0$i $numcaps$i++)
{
$parm func_get_arg($i 4);
list($gettype$getoffset$checkoffset$checkval) = explode(':'$parm);
// permit fetching material state descriptors from here
if (($gettype == 'STATE') && (in_array($getoffset, array('NAME''ADJ'))))
{
$val self::statedesc($parsersubstr($data$start$end $start), $getoffset$checkoffset);
if (strlen($val))
$rep_out[$i] = $val;
continue;

foreach ($tags as $tag)
{
if (($tag[0] != $gettype) || ($getoffset >= count($tag)))
continue;
if (($checkoffset 0) || (($checkoffset count($tag)) && ($tag[$checkoffset] == $checkval)))  
{
$rep_out[$i] = $tag[$getoffset];
break;
}
}
}
if (count($rep_in) == count($rep_out))
$out .= str_replace($rep_in$rep_out$string);
}
return $out;
}

// Determines a material's state descriptor by parsing its raws
public static function statedesc (&$parser$data ''$type ''$state '')
{
$tags self::getTags($data);
$names = array('NAME' => array(), 'ADJ' => array());
foreach ($tags as $tag)
{
if (in_array($tag[0], array('STATE_NAME''STATE_NAME_ADJ')))
{
if (in_array($tag[1], array('SOLID''ALL_SOLID')))
$names['NAME']['SOLID'] = $tag[2];
if (in_array($tag[1], array('SOLID_POWDER''POWDER''ALL_SOLID')))
$names['NAME']['POWDER'] = $tag[2];
if (in_array($tag[1], array('SOLID_PASTE''PASTE''ALL_SOLID')))
$names['NAME']['PASTE'] = $tag[2];
if (in_array($tag[1], array('SOLID_PRESSED''PRESSED''ALL_SOLID')))
$names['NAME']['PRESSED'] = $tag[2];
if ($tag[1] == 'LIQUID')
$names['NAME']['LIQUID'] = $tag[2];
if ($tag[1] == 'GAS')
$names['NAME']['GAS'] = $tag[2];
}
if (in_array($tag[0], array('STATE_ADJ''STATE_NAME_ADJ')))
{
if (in_array($tag[1], array('SOLID''ALL_SOLID')))
$names['ADJ']['SOLID'] = $tag[2];
if (in_array($tag[1], array('SOLID_POWDER''POWDER''ALL_SOLID')))
$names['ADJ']['POWDER'] = $tag[2];
if (in_array($tag[1], array('SOLID_PASTE''PASTE''ALL_SOLID')))
$names['ADJ']['PASTE'] = $tag[2];
if (in_array($tag[1], array('SOLID_PRESSED''PRESSED''ALL_SOLID')))
$names['ADJ']['PRESSED'] = $tag[2];
if ($tag[1] == 'LIQUID')
$names['ADJ']['LIQUID'] = $tag[2];
if ($tag[1] == 'GAS')
$names['ADJ']['GAS'] = $tag[2];
}
}
if (!isset($names[$type]))
return '';
if (!isset($names[$type][$state]))
return '';
return $names[$type][$state];
}

// Performs multiple string replacements
public static function mreplace (&$parser$data '')
{
$numargs func_num_args() - 2;
$rep_in = array();
$rep_out = array();
for ($i 0$i $numargs$i += 2)
{
$rep_in[] = func_get_arg($i 2);
if ($i == $numargs 2)
$rep_out[] = '';
else $rep_out[] = func_get_arg($i 3);
}
return str_replace($rep_in$rep_out$data);
}

public static function delay (&$parser)
{
$args func_get_args();
array_shift($args);
return '{{'implode('|'$args) .'}}';
}

// Evaluates any templates within the specified data - best used with foreachtag
public static function evaluate (&$parser$data '')
{
return $parser->replaceVariables($data);
}
}

Касательно мультизагрузки, есть пара плагинов для медиавики, но ни один не захотел работать.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 30 Августа 2013, 22:09:01
Admin:
Этот то, что нужно!
Возьми отсюда (https://github.com/quietust/DFRawFunctions) (справа кнопочка загрузить) новую версию. Вероятно, она куда-то кидается через FTР. В ней и равы мастерворка есть. Это даст мне возможность поколупать парсер в боевых условиях.
Есть основания полагать, что дописывать массу кода не нужно; необходимы, в худшем случае, косметические изменения.
С картинками печально. Ну да ладно, вставлю руками.
Название: Re: Вопросы по работе в вики.
Отправлено: Oreyn от 30 Августа 2013, 22:46:52
поколупать парсер в боевых условиях.

Я бы советовал поднять медиавики на локале и опробовать и отладить парсер там, перед "боевыми условиями".
Всяко меньше крови сдавать на откатах версии обратно, даже если для этого есть инструменты.
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 30 Августа 2013, 23:50:07
Вероятно, она куда-то кидается через FTР. В ней и равы мастерворка есть. Это даст мне возможность поколупать парсер в боевых условиях.
Я знаю, куда она кидается, потому что ранняя версия этого парсера у нас уже стояла. Версию обновил, вроде всё работает как прежде, что радует.

Вижу появилось в парсере разделение на версии, в зависимости от префиксов названий страниц (40d, DF2012 и т.д.)  Буржуям ещё не надоело плодить разные пространства имён. Если ничего не найдено, то грузятся настройки по умолчанию, видимо как у нас. Не знаю, может быть для работы должной с равками мастерворка потребуется создавать пространство имён Masterwork, чтобы страницы в итоге имели наименования вида Masterwork:Tribal_Wargear?, а может и так работать будет, если грузить равки вручную самому на сайт.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 31 Августа 2013, 10:47:27
Странное дело. Я не нашел на русской вики ни одного случая использования этого раводера - #df_raw. Т.е. любая информация сначала любовно по-кусочкам добавляется ручками - потом парсится средствами медиавики.
Провел несколько опытов по использованию #df_raw:
Задал вопрос главному повару (http://dwarffortresswiki.org/index.php/User_talk:Quietust) всей этой кухни. Глядишь, проблема разрешится.
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 31 Августа 2013, 13:23:29
Странное дело. Я не нашел на русской вики ни одного случая использования этого раводера - #df_raw.
Может быть кто-то уже перелопатил наши шаблоны на другой лад, я этим не занимался.

Повторюсь, на английской есть разделение на версии (это прописывается в конфиге вики). Но даже если тупо назвать страницу Masterwork:мастерская, то всё вероятно будет работать.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 31 Августа 2013, 13:31:16
2. Да, забыл сказать, в голой вики на локалхосте я добавил namespace - Masterwork. Пробовал создать с ним статьи. Это дало ничего.
Кроме того, на вики англоязычной выдирание равов мастерворка можно проводить и не в неймспейсе мастерворка, а вполне даже DF2012.
Цитировать
Может быть кто-то уже перелопатил наши шаблоны на другой лад, я этим не занимался.
Хочешь сказать, раньше было по-другому?
Просто в англоязычной эту команду тоже никто особо не использовал (ввиду сложности, надо думать), предпочитая копипастить кусочки ручками.  :)
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 31 Августа 2013, 17:11:20
Я в шаблонах вики мало смыслю, поэтому ничего не могу сказать, что было и что стало. Юзер Cypselus (http://dfwk.ru/User:Cypselus) очень много менял.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 31 Августа 2013, 20:40:36
Ответ пришел. Надо в LocalSettings.php дописать строчку $wgDFRawEnableDisk = true;Проверил на самопальной вики - чудо случилось.
Название: Re: Вопросы по работе в вики.
Отправлено: iKlim от 31 Августа 2013, 21:33:49
Добавил и получил кучу ошибок:
Warning: array_shift() expects parameter 1 to be array, null given in /extensions/DFRawFunctions/DFRawFunctions.body.php on line 193
Warning: implode() [function.implode]: Invalid arguments passed in /extensions/DFRawFunctions/DFRawFunctions.body.php on line 194

Снова отключил.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 31 Августа 2013, 21:43:00
iKlim
Хм, странно. Вот что я добавил к девственно чистому LocalSettings.php (MediaWiki 1.21.1):
if (!$wgCommandLineMode) {
   require_once "$IP/extensions/DFRawFunctions-master/DFRawFunctions.php";
}
if (!$wgCommandLineMode) {
   require_once "$IP/extensions/DFRawFunctions-master/DFRawFunctions.body.php";
}
$wgDFRawEnableDisk = true;

А вот это уже можно пихать в шаблон. Выдирает из равов название профессии, нужной для того, чтоб построить здание, название которого соответствует названию статьи. Работает.
[[{{#df_tagentry:{{#df_raw:Masterwork:profession_dwarf.txt|PROFESSION|DWARF}}|
{{#df_tagentry:{{#df_raw:Masterwork:building_kobold.txt|BUILDING_WORKSHOP|{{uc:{{PAGENAME}}}}|Unknown!}}|BUILD_LABOR|0|1|Unknown!|}}|0|1|Unknown!|}}]]
Название: Re: Вопросы по работе в вики.
Отправлено: iKlim от 01 Сентября 2013, 15:43:08
Тупо удалил пару строчек, на которые ругалось, вроде теперь без ошибок, но работает ли.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 01 Сентября 2013, 16:47:36
Вроде, да. (http://dfwk.ru/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Asva) Если что - сообщу.  :)
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 04 Сентября 2013, 17:12:53
Победа, товарищи.  8-)
Скрипт:
public static function raw_asva (&$parser, $data = '', $object = '', $s_type = '', $s_param = '', $l_type = '',$number = '',  $notfound = ''){
$data = self::loadFile($data); $tags = self::getTags($data);
if (!$object)
return $data;
$e=0; $i = 0; $obj_numb=0; $return_value = ''; $tmp=array();
while ($tags[$i][0]!=FALSE){
if ($tags[$i][0]==$object){ // Checks if left tag fits OBJECT.
$obj_num=$obj_num+1; $affirmed_type=FALSE; $i_object=$i;
}
if ($obj_num>0){ // Made in case something's wrong with quotes.
if  ($tags[$i][0] == $s_type and $tags[$i][1] == $s_param and $affirmed_type == FALSE) // Checks if TYPE:PARAMETER is present in the OBJECT. Puts flag and leaps back if yes.
{$affirmed_type = TRUE; $i=$i_object;}
if ($l_type == $tags[$i][0] and $affirmed_type == TRUE){
$tmp[$e] = $e+1 .") ". $tags[$i][1]; $e++;}
}
$i++;
}
//Test (hidden)
if ($number == '')
return implode(", ",$tmp);
if ($number == -1)
return "Last reaction of the TYPE is: ". $e .") ". $tmp[$e-1] .'.';
return $tmp[$number];
}

Вики разметка:
== Тест скрипта выдиральщика реакций для строения ==
{{spoiler|df_raw тест|{{#df_raw:Masterwork:reaction_kobold_small_asva.txt|REACTION|KOBOLD_EXTRACT_BLOOD}}
}}
'''All reactions:''' {{#df_raw_asva:Masterwork:reaction_kobold.txt|REACTION|BUILDING|KITCHEN|NAME||Not found.}}.
# {{#df_raw_asva:Masterwork:reaction_kobold.txt|REACTION|BUILDING|KITCHEN|NAME|0|Not found.}}
# {{#df_raw_asva:Masterwork:reaction_kobold.txt|REACTION|BUILDING|KITCHEN|NAME|1|Not found.}}
# {{#df_raw_asva:Masterwork:reaction_kobold.txt|REACTION|BUILDING|KITCHEN|NAME|2|Not found.}}
# {{#df_raw_asva:Masterwork:reaction_kobold.txt|REACTION|BUILDING|KITCHEN|NAME|3|Not found.}}
{{#df_raw_asva:Masterwork:reaction_kobold.txt|REACTION|BUILDING|KITCHEN|NAME|-1|Not found.}}

Результат:
All reactions: 1) extract blood, 2) boil silk from coocoon, 3) make sausages (3), 4) ferment boozebelly cheese.

    1) extract blood
    2) boil silk from coocoon
    3) make sausages (3)
    4) ferment boozebelly cheese

Last reaction of the TYPE is: 4) ferment boozebelly cheese.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 06 Сентября 2013, 16:30:43
Просьба админам заменить существующий extension на этот (https://github.com/Asvae/DFRawFunctions).
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 07 Сентября 2013, 14:37:44
Заменил.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 08 Сентября 2013, 18:02:02
Новые свершения. (https://www.dropbox.com/s/mgdy51k57r56bdb/screenshoot_00358.jpg)  >>(
Название: Re: Вопросы по работе в вики.
Отправлено: Rayko от 11 Сентября 2013, 19:53:48
Спойлер
(http://puu.sh/4oGmR.jpg)
[свернуть]
Время от времени предлагает скачать страницу. Причём "приступами" - за короткий промежуток времени разные страницы будут предлагать скачаться с вероятностью 100%.
Пробовал качать из любопытства - пытается скачать архивоподобный файл, но файл не качается. (: Это нормально?

У меня опера 16.
Название: Re: Вопросы по работе в вики.
Отправлено: iKlim от 11 Сентября 2013, 20:37:33
Это ненормально, просто страницы отдаются сервером в сжатом виде и почему-то браузер их не воспринимает.
Название: Re: Вопросы по работе в вики.
Отправлено: Asva от 15 Сентября 2013, 15:08:33
Rayko
Проблема хромиума, насколько мне известно. Неизлечимая.

All
Что касается PHP скриптинга:
- сделаны все функции для темплейта к воркшопам/печам (размеры, картинка, непроходимые блоки, реакции, вещи для постройки, специальность)
- тестировать буду в англоязычной вики; когда приду к конкретным стабильным решениям - отпишусь
Название: Re: Вопросы по работе в вики.
Отправлено: xenofeel от 21 Августа 2014, 11:56:49
Можно ли проставлять спойлеры в статьях и как?
Название: Re: Вопросы по работе в вики.
Отправлено: iKlim от 21 Августа 2014, 14:09:39
Кусок текста
{{spoiler| описание спойлера | сам скрываемый текст}}

На всю страницу:
{{majorspoiler|   текст }}
Название: Re: Вопросы по работе в вики.
Отправлено: xenofeel от 21 Августа 2014, 17:01:18
Кусок текста
{{spoiler| описание спойлера | сам скрываемый текст}}

На всю страницу:
{{majorspoiler|   текст }}

Чтото он както странно работает. {{{2}}} остается. ЧЯДНТ?
Название: Re: Вопросы по работе в вики.
Отправлено: Plumbum от 04 Ноября 2014, 12:13:06
Давно хотел задать вопрос: а есть ли на нашей вики-дварфии сборник с описанием багов? Самых жестоких и древних, которые присутствуют в текущих версиях?
Название: Re: Вопросы по работе в вики.
Отправлено: iKlim от 05 Ноября 2014, 01:32:31
Вот такая статья есть, не более того: http://dfwk.ru/Известные ошибки и проблемы (http://dfwk.ru/Известные ошибки и проблемы)
Название: Re: Вопросы по работе в вики.
Отправлено: Risto от 23 Ноября 2017, 22:12:35
У кого есть права на редактирование главной, замените, пожалуйста, Что нового в 0.43.xx (http://dfwk.ru/Release_information/0.43) на Что нового в 0.44.xx (http://dfwk.ru/Release_information/0.44).
Название: Re: Вопросы по работе в вики.
Отправлено: Admin от 15 Декабря 2017, 15:29:41
У кого есть права на редактирование главной, замените, пожалуйста, Что нового в 0.43.xx (http://dfwk.ru/Release_information/0.43) на Что нового в 0.44.xx (http://dfwk.ru/Release_information/0.44).
Для этого права не нужны, там вставлен шаблон: http://dfwk.ru/Шаблон:News (http://dfwk.ru/Шаблон:News)