Редактирование: Энциклопедия:Портал сообщества

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 62: Строка 62:
 
::: После этого мы можем подхватить термин и использовать его самостоятельно, понимая все тонкости. Например, так было с термином "animal fantasy" на ВикиФуре: жанр как бы есть, но его поклонники не организованы, поэтому термин не вполне существует. Изучение его истории помогло нам понять, что он также используется для классификации детских сказок, но это скорее совпадение. Мы вывели критерии и иеперь категоризием так книги самостоятельно, не опираясь на вторичные источники. [[Участник:EvilCat|EvilCat]] ([[Обсуждение участника:EvilCat|обсуждение]]) 16:55, 22 января 2024 (MSK)
 
::: После этого мы можем подхватить термин и использовать его самостоятельно, понимая все тонкости. Например, так было с термином "animal fantasy" на ВикиФуре: жанр как бы есть, но его поклонники не организованы, поэтому термин не вполне существует. Изучение его истории помогло нам понять, что он также используется для классификации детских сказок, но это скорее совпадение. Мы вывели критерии и иеперь категоризием так книги самостоятельно, не опираясь на вторичные источники. [[Участник:EvilCat|EvilCat]] ([[Обсуждение участника:EvilCat|обсуждение]]) 16:55, 22 января 2024 (MSK)
  
== Материалы из Википедии ==
+
{{служебные исправления}}
 
 
У нас есть какой-то шаблон для отмечания материалов, переведённых из Википедии? Я подумываю позаимствовать статью [https://en.wikipedia.org/wiki/Wolves_of_Freeport Wolves of Freeport], я по любому не напишу лучше, чем у них. [[Участник:Demetrius|Demetrius]] ([[Обсуждение участника:Demetrius|обсуждение]]) 18:21, 1 февраля 2024 (MSK)
 
: Ты не поверишь… {{tl|Википедия}}
 
: P.S. Кажется, пространство «Энциклопедия» мы импортировать не будем, там что правки можно не отмечать. [[Участник:EvilCat|EvilCat]] ([[Обсуждение участника:EvilCat|обсуждение]]) 21:40, 1 февраля 2024 (MSK)
 
:: Блин, слона и не заметил. Спасибо!
 
 
 
== Версия MediaWiki ==
 
На выходных попробую обновить версию MW до актуальной. Это дело немаленькое: нужно всё забэкапить лишний раз, проверить совместимость плагинов и т. д. Не гарантирую, что всё получится или что время на выходных не денется куда-нибудь внезапно, но надо попробовать, тогда можно будет спокойно ставить свежие версии плагинов (видео, Math, Lua, даже Semantic Media Wiki при желании). [[Участник:EvilCat|EvilCat]] ([[Обсуждение участника:EvilCat|обсуждение]]) 12:17, 6 февраля 2024 (MSK)
 
: Большое спасибо! Знаю, что это сложно. [[Участник:Demetrius|Demetrius]] ([[Обсуждение участника:Demetrius|обсуждение]]) 16:10, 6 февраля 2024 (MSK)
 
 
 
Плохие новости: без переезда на свежий CentOS обновиться не получится :\
 
 
 
Хорошие новости: для переезда около двух лет назад не хватало совместимости некоторых нужных свежих пакетов друг с другом, и к счастью за два года они договорились. Для переезда готово всё, нужно только несколько свободных выходных. Наверное, следующие и послеследующие, если ничего не случится. [[Участник:EvilCat|EvilCat]] ([[Обсуждение участника:EvilCat|обсуждение]]) 12:15, 11 февраля 2024 (MSK)
 
 
 
== Возможная проблема с аттрибуцией для удалённых статей Википедии ==
 
 
 
Когда в Википедии удаляют статью, удаляется и её история. Но если мы сохраняем статью (например, [[Неттерсгеймский договор]]), то у нас таким образом материал без атрибуции. Потенциальное нарушение T_T (хотя, наверное, это как abandonware; если автор появится, мы с радостью его упомянем).
 
 
 
Что с этим делать? Видимо, когда используешь материалы Википедии, надо дублировать список авторов на странице обсуждения? (Есть ли какой-то простой способ составить такой список?) Или это стоит делать только для статей с высокой вероятностью удаления? [[Участник:Demetrius|Demetrius]] ([[Обсуждение участника:Demetrius|обсуждение]]) 19:36, 25 февраля 2024 (MSK)
 
 
 
== Другой интерфейс для категорий языка ==
 
 
 
Предлагаю сделать другой интерфейс для категорий по языку. Сейчас они занимают слишком много места (см. пример в статье [[Cairn (OSR)]]).
 
 
 
Предлагаю [[:Категория:Ролевые материалы по языку|языковые категории]] скрытымь из основного списка (возможно, как [[:Категория:Страницы с оригинальным материалом RPGverse]]), а интерфейс для категорий добавить через тему или через JS.
 
 
 
Через тему правильнее, через JS легче. JS выглядел бы как-то так (на всякий случай на ES5, у нас вроде ES5 используется?):
 
 
 
<pre>
 
// Этот код нужно запускать после того, как страница загрузится
 
// (напр., через document.addEventListener('DOMContentLoaded, ...))
 
(function () {
 
  var LANGUAGE_CATEGORY_NAME_REGEXP = /^Ролевые (материалы|системы) (на .*языке.*|без английской версии)$/;
 
  var CATEGORY_NAMESPACE_ID = 14;
 
  var PARENT_DIV_ID = 'rpgverse-lang-catlinks';
 
  var GENERALIZING_CAT_NAME = 'Ролевые материалы по языку';
 
  var GENERALIZING_CAT_TITLE = 'По языку';
 
  var COLON_TEXT = ': ';
 
  var CATLINKS_ELEMENT_ID = 'catlinks'
 
  var NORMAL_CAT_LINKS_PARENT_ID = 'mw-normal-catlinks'
 
 
 
  /**
 
  * Превращает полное имя категории («Ролевые материалы на китайском языке»)
 
  * в краткое («на китайском»).
 
  *
 
  * Теряет различие между ссылками на категории («Ролевые материалы на X языке»
 
  * и «Ролевые системы на X языке»).
 
  *
 
  * @param {string} fullName Полное имя (без префикса пространства имён)
 
  * @returns {string} Краткое имя
 
  */
 
  function makeShortCategoryText(fullName) {
 
    return fullName.replace(/^Ролевые (материалы|системы) /, '').replace(/ языке$/, '')
 
  }
 
 
 
  /**
 
  * Получает список категорий текущей страницы как массив объектов со
 
  * свойствами name (имя категории без пространства имён)
 
  * и shortName (текст вроде «на N языке»)
 
  *
 
  * @returns {{name: string; shortName: text}[]}
 
  */
 
  function getLanguageCategories() {
 
    var materialsByLanguage = mw.config.get( 'wgCategories' )
 
      .filter(function (catName) {
 
        return catName.match(LANGUAGE_CATEGORY_NAME_REGEXP)
 
      });
 
    var results = [];
 
    materialsByLanguage.forEach(function (name) {
 
      results.push({
 
        name: name,
 
        shortName: makeShortCategoryText(name)
 
      });
 
    })
 
    return results;
 
  }
 
 
 
  /**
 
  * @param {string} name Название категории (без префикса пространства имён)
 
  * @param {string} title Текст ссылки
 
  * @return {HTMLElement} Элемент <a> со ссылкой на категорию
 
  */
 
  function makeCategoryLink(name, title) {
 
    var articlePath = mw.config.get('wgArticlePath');
 
    var categoryNamespace = mw.config.get('wgFormattedNamespaces')[CATEGORY_NAMESPACE_ID];
 
    var qualifiedName = categoryNamespace + ':' + name;
 
   
 
    var className = '';
 
    if (document.querySelector) {
 
      // TODO: этот код не будет работать на старых браузерах, там все ссылки будут синие
 
      // Возможно, стоит либо переписать всё на ES6 (если не нужна), либо на jQuery (если нужна)
 
      var existingLink = document.querySelector('[title*="' + qualifiedName.replace(/["\\]/g, '\\$&') + '"]');
 
      if (existingLink && existingLink.title.indexOf(qualifiedName) === 0) {
 
        className = existingLink.className;
 
      }
 
    }
 
       
 
    var element = document.createElement('a');
 
    element.href = articlePath.replace('$1', qualifiedName);
 
    element.title = qualifiedName;
 
    element.innerText = title;
 
    element.className = className;
 
    return element;
 
  }
 
 
 
  /**
 
  *
 
  * @param {{name: string; shortName: text}[]} categories
 
  * @returns {HTMLElement} Элемент <ul>
 
  */
 
  function makeLanguageCategoriesList(categories) {
 
    var listElement = document.createElement('ul');
 
   
 
    categories.forEach(function (category) {
 
      var itemElement = document.createElement('li');
 
      itemElement.appendChild(makeCategoryLink(category.name, category.shortName));   
 
      listElement.appendChild(itemElement);
 
    });
 
    return listElement;
 
  }
 
 
 
  /**
 
  * @param {{name: string; shortName: text}[]} categories
 
  * @returns {HTMLElement} Элемент <div>
 
  */
 
  function makeLanguageCategoriesDiv(categories) {
 
    var parentElement = document.createElement('div');
 
    parentElement.id = PARENT_DIV_ID;
 
   
 
    parentElement.appendChild(makeCategoryLink(GENERALIZING_CAT_NAME, GENERALIZING_CAT_TITLE));
 
    parentElement.appendChild(document.createTextNode(COLON_TEXT));
 
    parentElement.appendChild(makeLanguageCategoriesList(categories));
 
    return parentElement;
 
  }
 
 
 
  /**
 
  * Скрывает языковые категории из основного списка.
 
  *
 
  * TODO: может, лучше скрыть категории через встроенный механизм MediaWiki?
 
  *
 
  * @param {{name: string; shortName: text}[]} categories
 
  */
 
  function hideLanguageCategoriesFromNormalCatLinks(categories) {
 
    var categoryNamespace = mw.config.get('wgFormattedNamespaces')[CATEGORY_NAMESPACE_ID];
 
    var normalCatLinksParent = document.getElementById(NORMAL_CAT_LINKS_PARENT_ID);
 
   
 
    // TODO: этот код не будет работать на старых браузерах, нам нужна их поддержка?
 
    // Возможно, стоит либо переписать всё на ES6 (если не нужна), либо на jQuery (если нужна)
 
    if (!normalCatLinksParent.querySelector) {
 
    // degrade gracefully на старых браузерах (кто-то ими ещё пользуется? там полинтернета поломано)
 
      return
 
    }
 
   
 
    categories.forEach(function (category) {
 
      var qualifiedName = categoryNamespace + ':' + category.name;
 
      var existingLink = normalCatLinksParent.querySelector('[title*="' + qualifiedName.replace(/["\\]/g, '\\$&') + '"]');
 
      if (existingLink && existingLink.title.indexOf(qualifiedName) === 0) {
 
        existingLink.style.display = 'none';
 
      }
 
    });
 
  }
 
 
 
  /**
 
  * Размещает список категорий по языку на странице.
 
  *
 
  * @param {{name: string; shortName: text}[]} categories
 
  */
 
  function placeLinksByLanguageOnPage(categories) {
 
    var catlinksElement = document.getElementById(CATLINKS_ELEMENT_ID);
 
    if (!catlinksElement) {
 
      console.error('Cannot find element with ID ' + CATLINKS_ELEMENT_ID);
 
      return
 
    }
 
   
 
    if (categories.length < 1) {
 
      return
 
    }
 
    catlinksElement.appendChild(makeLanguageCategoriesDiv(categories))
 
  }
 
 
 
  var parentElement = document.getElementById(PARENT_DIV_ID)
 
  if (!parentElement) {
 
    var categories = getLanguageCategories()
 
    placeLinksByLanguageOnPage(categories);
 
    hideLanguageCategoriesFromNormalCatLinks(categories)
 
  }
 
})()
 
</pre>
 
 
 
[[Участник:Demetrius|Demetrius]] ([[Обсуждение участника:Demetrius|обсуждение]]) 12:28, 10 апреля 2024 (MSK)
 
 
 
Оформил также как userscript для GreaseMonkey (там нельзя использовать mw, поэтому заменил категории на константы и сделал пару хаков): [https://paste.ee/p/kEX0l] — посмотрю, нормально ли смотрится. [[Участник:Demetrius|Demetrius]] ([[Обсуждение участника:Demetrius|обсуждение]]) 12:42, 10 апреля 2024 (MSK)
 
 
 
'''Добавлено:''' мне пришло в голову, что это можно решить проще: скрыть категории через <code><nowiki>__HIDDENCAT__</nowiki></code> и сделать шаблон типа <code><nowiki>{{по языку|анг|рус|фра}}</nowiki></code>. Но тогда этот шаблон надо будет добавлять вюсду, что может усложнить импорт с Викии (если мы решим его заново запустить); впрочем, на Викии только статьи про русский, можно русский не скрывать, а остальное скрыть. Буду раз комментариям. Но пока что мне такой вариант кажется более простым — думаю, он лучше, чем JS. [[Участник:Demetrius|Demetrius]] ([[Обсуждение участника:Demetrius|обсуждение]]) 13:17, 10 апреля 2024 (MSK)
 
 
 
== Проблема с атрибуцией импортированных правок ==
 
 
 
В Викии есть особый механизм импорта из Википедии (и других вики?), при котором сохраняется история оттуда. Пример: [[Hunter: The Vigil]] — [http://wiki.rpgverse.ru/w/index.php?title=Hunter:_The_Vigil&action=history история у нас], [https://rpg.fandom.com/ru/wiki/Hunter:_The_Vigil?action=history история у них]. Это проблема, которую нужно как-то решать.
 
 
 
Либо нужно написать похожий плагин и импортировать такие данные, либо просто вставлять эти данные куда-то ещё (вероятно, в большинстве случаев подойдёт [[Шаблон:Википедия]]; возможно для текущих статей это мог бы сделать я сам ботом, но вот для новых это надо делать автоматически). [[Участник:Demetrius|Demetrius]] ([[Обсуждение участника:Demetrius|обсуждение]]) 01:59, 23 апреля 2024 (MSK)
 

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Creative Commons Attribution Share Alike (см. Энциклопедия:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблоны, используемые на этой странице: