Обсуждение Википедии:Гаджеты/Упрощение ссылок/Архив

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Упрощение внутренних ссылок

[править код]
Перенесено из user_talk:Alex Smotrov/urldecoder.js

Для раскодирования имеющихся внутренних ссылок добавьте себе urlDecoderIntLinks = true. —AlexSm 22:27, 15 апреля 2009 (UTC)

  • Добавил. На примере, приведённом выше, вроде работает нормально. Будут какие-то проблемы - разумеется, сообщу. -- AVBtalk 18:05, 17 апреля 2009 (UTC)
  • Не проблема, пожелание: при декодировании ссылки вида [[Обсуждение_участника:Alex_Smotrov/urldecoder.js#.D0.9E_.D1.81.D1.82.D0.B8.D0.BB.D1.8F.D1.85]] получается [[Обсуждение_участника:Alex_Smotrov/urldecoder.js#О_стилях]] с подчёркиваниями. Было бы неплохо, если бы подчёркивания здесь убирались (и до #, и после). -- AVBtalk 15:15, 18 апреля 2009 (UTC)

Я уже сделал это у себя в локальной версии, однако при тестировании скрипта на ВП:ВУ обнаружилась проблема: в подписи одного участника скрипт меняет «user_talk» на «user talk», что не очень хорошо. Будете каждый раз проверять изменения и в таких случаях заменять обратно вручную? —AlexSm 17:23, 21 апреля 2009 (UTC)

Хотел бы предупредить, что, исправляя случайно вкравшуюся ошибку, я также обновил и остальной код гаджета, так что теперь как раз и реализуются мои опасения, высказанные выше («user_talk» → «user talk»). Если что, все шишки будут Ваши. — AlexSm 04:21, 27 апреля 2009 (UTC)
  • также обновил - я видел. Причём именно на примере указанной правки. Я теперь этот скрипт стал применять через выделение всей страницы, но всё равно результат предварительно проглядываю перед записью. -- AVBtalk 20:52, 27 апреля 2009 (UTC)
  • В сегодняшней версии user_talk специально исключён из обработки внутренних ссылок. — AlexSm 19:29, 19 мая 2009 (UTC)

Положение пиктограммы на тулбаре

[править код]

После замены со скрипта на гаджет, его пиктограмма переползла на первое место в тулбаре. Нельзя это исправить? И ещё: у меня после начала недавних исправлений скрипта пиктограмма заменилась на знак одного процента, а это, на мой взгляд, слишком узко. Нельзя сделать чуток пошире? -- AVBtalk 17:59, 17 апреля 2009 (UTC)

На первом месте кнопка исключительно из-за порядка вызова гаджетов, Common.js и персональных скриптов. Я такого положения кнопки не ожидал, и тоже предпочёл бы её после викификатора, но пока не вижу нормального способа это исправить. Пожалуй, довольно легко её можно перенести в самый конец. —AlexSm 20:00, 17 апреля 2009 (UTC)
Один % вместо двух случайно остался после отладки, уже исправлено. —AlexSm 20:00, 17 апреля 2009 (UTC)

Пожелание: хоткей

[править код]

Нельзя добавить хоткей (возможность задания хоткея) для вызова скрипта? -- AVBtalk 17:59, 17 апреля 2009 (UTC)

Параметр добавлен, пример применения: urlDecoderKey = 'c'.
AlexSm 20:00, 17 апреля 2009 (UTC)

Дальнейшее обсуждение перенесено на user_talk:js#accesskeys

urlDecoderEngNames

[править код]
== Документация ==

Не ясен функционал переменной urlDecoderEngNames. -- AVBtalk 17:59, 17 апреля 2009 (UTC)

Это на любителей, задаёт замену имён пространств, то есть например «участник:» → «user:». (В новой версии) такая замена происходит только при преобразовании одной ссылки перед курсором. —AlexSm 20:00, 17 апреля 2009 (UTC)

фигурные скобки после ссылки

[править код]

Если фрагмент

  • {{oq|en|http://meta.wikimedia.org/wiki/Licensing_update/CentralNotice}}

выделить и упростить, то фигурные скобки обработаются неправильно:

  • {{oq|en|[[meta:Licensing update/CentralNotice}}]]

-- AVBtalk 13:05, 9 мая 2009 (UTC)

Спасибо за сообщение. Не лучшее решение, но пока что http://...}} скриптом просто будут игнорироваться. К сожалению, где-то в середине шаблона http://...| будет по-преждему обрабатываться некорректно. Как вариант, можно также вообще исключить из обработки шаблоны (как и в Викификаторе, до первых же }}). Более «умные» варианты пока реализовать сложно. — AlexSm 19:29, 19 мая 2009 (UTC)

запятые в ссылках

[править код]

Тут вот с какой бякой столкнулся. Формально, запятая в ссылках допустима, но вики считает запятую терминатором (что меня удивило). Пример:

После обработки этой ссылки гаджетом ссылка вползает в скобки: en:Audio Transcoder,. Удивило же меня это потому, что запятая обрабатывается как терминатор не всегда, пример:

Вероятно, это как-то зависит от того, что идёт после запятой - пробел и конец строки вызывает интерпретацию как терминатор... -- AVBtalk 15:44, 1 июня 2009 (UTC)

Точно такая ситуация уже ранее была исправлена для точки. После поиска в SVN нашлась функция makeFreeExternalLink в Parser.php, которая делает текстовые URL ссылками, и выяснилось, что символы ,;\.:!? в самом конце URL считаются не принадлежащими к URL. Соответственно будет исправлено в скрипте. Видимо добавлю к списку этих символов также | и }}, чтобы (пусть и с возможными неверными исключениями) сразу решить и проблему в предыдущей теме. — AlexSm 18:39, 1 июня 2009 (UTC)
Исправлено. — AlexSm 21:45, 24 июля 2009 (UTC)

Ссылка на wikimedia

[править код]

После декодирования ссылки http://usability.wikimedia.org/wiki/Designs результат (usability:Designs) невалидный. -- AVBtalk 15:09, 6 июня 2009 (UTC)

  • Если дойдут руки, придётся реализовывать в коде исключения для .wikimedia.org, потому что до вполне обоснованного запроса meta:Talk:Interwiki map#Wikimedia Usability видимо ни у кого руки не доходят. — AlexSm 21:45, 24 июля 2009 (UTC)
  • К этому моменту уже исправлено, путём указания конкретного списка поддоменов «(meta|commons|incubator|species|strategy)», которые используются с .wikimedia.org. — AlexSm 21:38, 12 июля 2011 (UTC)

длинное тире в названии раздела

[править код]

При декодировании ссылки

получается

  • [[ВП:ОС#Тире (.E2.80.94.29]]

хотя должно было бы получиться

  • [[ВП:ОС#Тире (—)]]

-- AVBtalk 17:11, 21 июля 2009 (UTC)

Это не тире, а код, который перед декодированием прятал всё похожее на IP адреса. Я сделал условие более жёстким, чтобы конкретно этот пример декодировался правильно, но всё равно возможны случаи, которые будут в принципе обрабатываться неправильно. — AlexSm 21:45, 24 июля 2009 (UTC)
  • Я сталкивался с конвертацией IP в ссылку в diffs и мне это понравилось, хотя я и удивился, почему это работает не всегда. Но, касательно данного случая: разве имеет смысл считать IP-адресом цепочку из более (как здесь) или менее чем 4 10- или 16-ричных чисел (вариант из 8 чисел, наверное, отбрасываем?)? Особенно если они окружены не знаками препинания (здесь - подчёркивание после первой цепочки) или пробелами или перед цепочкой идёт точка (здесь - перед второй цепочкой)? -- AVBtalk 09:28, 7 августа 2009 (UTC)
Не совсем понял к чему здесь вообще конвертация в ссылку. Про цепочки объясню ещё раз: последовательность вида 80.80.94.29 может оказаться как частью закодированного якоря, в котором волей случая использованы только цифры 0-9, без A-F, а может оказаться незакодированным IP адресом. На любой компьютерный алгоритм всегда найдутся случаи, неразрешимые без участия человека. Присутствие/отсутствие некоторых символов вокруг действительно можно проверять, что я и сделал в том изменении. — AlexSm 19:49, 18 августа 2009 (UTC)
  • Конвертация тут при том, что пришлось к слову. К тому же, если там и тут используется единый алгоритм, то исправление в одном месте должно помочь в другом. Особенно с учётом того, что, повторюсь, я удивлялся, когда из двух рядом стоящих адресов один становится ссылкой, а другой - нет.
  • Насчёт якоря я всё прекрасно понимаю, но повторюсь: IP-адрес совершенно очевидно не может быть иметь точку перед ним и/или точку с цифрами после него (псевдокод: \.IP или IP\.[0-9]), а также не может иметь знаки подчёркивания (так же, как и буквы) ни перед, ни после него. То есть, IP может быть окружён только знаками препинания, но не точкой вначале или точкой с цифрами после, а также не знаками подчёркивания или буквами. А если быть совсем строгим, то нужно и количество цифр проверять (вариант 1234.5.6.7 тоже не является IP), хотя в нашем случае это лишнее. Или я ошибаюсь и здесь возможны обратные случаи (которые мог бы разрешить только человек)? -- AVBtalk 15:33, 20 августа 2009 (UTC)

(отступ) Искусственно сконструировать неразрешимый случай можно всегда, например (смотреть на ссылку в статусной строке) t#vandal!!!! и t#vandal.21.21.21.21. Насколько вероятно встретить такое вживую — это другой вопрос. В данный момент в коде уже максимально жёсткие условия к цифрам IP (кажется брал тут) и условие, что перед IP не стоит 0..9 или A..F или точка — в надежде на то, что так в заголовке никто писать не будет. Остальное сомнительно, поскольку для точки с цифрами после достаточно поставить впритык какой-нибудь символ (например !!), a подчёркивание как раз особенно вероятно, потому что в него преобразуется пробел. — AlexSm 20:59, 20 августа 2009 (UTC)

  • vandal.21.21.21.21 - так что тут неразрешимого? Очевидно, что здесь нет IP. А вот с подчёркиванием я действительно дал маху. :( Плюс, закодированные знаки препинания после IP (да хотя бы скобка - (IP_12.34.56.78))... М-да. -- AVBtalk 21:54, 21 августа 2009 (UTC)
    По-моему вполне возможен заголовок например «опять вандал...21.21.21.21». — AlexSm 17:36, 2 сентября 2009 (UTC)
Это для нас очевидно, что такой заголовок маловероятен, но алгоритмически это трудно описать. — AlexSm 15:04, 3 сентября 2009 (UTC)

ссылки на иноязычные разделы

[править код]

Что-то случилос с декодированием ссылок на иноязычные разделы:

  • [http://nl.wikimedia.org/wiki/Hoofdpagina Wikimedia Netherlands]

после преобразования оказывается без ведущего двоеточия:

  • [[nl:Hoofdpagina|Wikimedia Netherlands]]

-- AVBtalk 09:20, 7 августа 2009 (UTC)

Раньше все домены над wikimedia.org имели свои интервики, совпадающие с названием домена, или по крайней мере я так считал. Исправлено: вместо *.wikimedia.org скрипт теперь проверяет конкретный список (meta|commons|incubator|species|strategy). P.S. Общего wikimedia: префикса иногда очень не хватает: meta:Talk:Interwiki map#Generic Wikimedia prefix. — AlexSm 19:49, 18 августа 2009 (UTC)

процент vs подчёркивание в ссылках от diffs

[править код]

В списке наблюдения имена с пробелами даются как ссылки с подчёркиваниями:

  • http://ru.wikipedia.org/wiki/Microsoft_Excel

А в заголовке diffs то же имя даётся с %20:

  • http://ru.wikipedia.org/wiki/Microsoft%20Excel

При декодировании такого имени получается такое:

  • [[Microsoft%20Excel]]

Я думаю, это не есть хорошо. -- AVBtalk 17:08, 18 августа 2009 (UTC)

Исправлено: %20 теперь, как и подчеркивание, заменяется на пробел. — AlexSm 19:49, 18 августа 2009 (UTC)

апострофы и внешняя ссылка

[править код]

Вот есть такая ссылка:

  • [http://books.google.com/books?id=e93Pj_HB5fQC&pg=PA11''Islam and Bosnia'' ISBN 0773524134]

Если её обработать, что часть ''Islam пропадает. -- AVBtalk 00:38, 1 сентября 2009 (UTC)

Фактически это случай en:Garbage In, Garbage Out, потому что такая ссылка показывается движком неправильно (в MediaWiki в URL не может быть двойного апострофа). С другой стороны, в коде действительно была небольшая ошибка. Учитывая, что для разделения ссылки и имени двойной апостроф никто не использует, я изменил скрипт, чтобы '' обычно считалось частью ссылки и исправлялось на %27%27. А вторая проблема в ссылке выше, с пробелами, похоже нерешаема (там просто непонятно, где начинается имя ссылки). — AlexSm 17:36, 2 сентября 2009 (UTC)
  • показывается движком неправильно - как раз наоборот, движок это показывает правильно (Islam and Bosnia ISBN 0773524134). Тут суть в том, что "Islam and Bosnia ISBN 0773524134" - это не часть ссылки, а описание. -- AVBtalk 06:09, 3 сентября 2009 (UTC)
    Ну значит теперь гаджет будет обрабатывать такую ссылку неправильно. По-моему использовать тот факт, что двойной апоствоф в ссылке недопустим, и поэтому не ставить пробел между ссылкой и именем — просто очень некрасиво. — AlexSm 15:04, 3 сентября 2009 (UTC)

упрощение ссылок с "title="

[править код]
перенесено с Обсуждение участника:Alex SmotrovAlexSm 20:58, 19 ноября 2009 (UTC)

А можно ли добавить упрощение ссылок вида http://ru.wikipedia.org/w/index.php?title=Файл:LEXICON-14.pngФайл:LEXICON-14.png)? -- AVBtalk 22:11, 11 ноября 2009 (UTC)

В принципе можно, но по-моему такое встречается не так часто, поэтому я пока и не делал. — AlexSm 21:40, 12 ноября 2009 (UTC)
  • Действительно, не часто, но попадается. Я уже несколько раз мучался с переделкой префикса подобных ссылок, чтобы конвертировать их. -- AVBtalk 02:37, 13 ноября 2009 (UTC)

Кстати, напоминаю про ссылки на другие разделы в статьях: могу я рассчитывать, что они будут конвертироваться в гиперссылки, а не интервики? -- AVBtalk 02:43, 13 ноября 2009 (UTC)

Да, это надо бы исправить, пусть двоеточие вставляется в зависимости от того, обрабатывается кусок текста или только ссылка под курсором. — AlexSm 05:39, 13 ноября 2009 (UTC)
✔ Исправлено. — AlexSm 20:58, 19 ноября 2009 (UTC)

"упрощение ссылок"

[править код]
перенесено с Обсуждение участника:Alex SmotrovAlexSm 20:58, 19 ноября 2009 (UTC)

Ещё глючок обнаружился:

конвертируется в

  • [[Журнал %22Предпринимательство%22]]

(то есть кавычки не конвертируются). К счастью, ссылка остаётся рабочей. -- AVBtalk 00:09, 19 ноября 2009 (UTC)

✔ Исправлено, спасибо. — AlexSm 20:58, 19 ноября 2009 (UTC)

2 момента

[править код]
  1. В некоторых случаях (например) не упрощается часть ссылки, ведущая на название раздела.
  2. Иногда бывает удобно вставлять неупрощённую ссылку таким образом: [[http-ссылка|некий набор слов]]; к сожалению, при обработке такой конструкции возникает лишний спецсимвол: [[ссылка|некий|набор слов]]. Это, конечно, не критично и легко исправимо, но немного неудобно.

NBS 15:49, 2 декабря 2009 (UTC)

  1. Известная особенность/недостаток: якорь упрощается только у внутренних ссылок, где он и встречается в подавляющем числе случаев.
  2. Если речь идёт об обработке куска текста, то скрипт старается сохранять предыдущую функциональность, а у http ссылки концом считается именно пробел, а не «|». Если речь идёт применении скрипта прямо при наборе текста, то в описании указан основной рекомендуемый способ его применения: вставить ссылку, пробел, описание ссылки, и нажать кнопку (скобки и pipe вручную добавлять не нужно). Можно немного подробнее про «иногда бывает удобно»?
AlexSm 17:28, 3 декабря 2009 (UTC)
  1. Не понял — там же внутенняя ссылка.
  2. Если это поменять сложно — ну и фиг с ним.
NBS 17:38, 3 декабря 2009 (UTC)
  1. Под внутренней я имею в виду [[ссылку с двойными скобками]], а там ссылка на &oldid=, и она остаётся [http://...]. Если дойдут руки — может позже исправлю.
  2. По второму вопросу — я увы так и не понял когда это ( [[http-ссылка|некий набор слов]] ) нужно и зачем.
AlexSm 17:48, 3 декабря 2009 (UTC)

спецзнаки в URL

[править код]

Есть такая ссылка:

Если её обработать, то получится

Я проверял, обе ссылки вроде работают идентично, но при вводе второй ссылки в адресную строку opera заменяет знаки после dl= на "??" (то есть, наверное, со второй ссылкой что-то не так). Не знаю, почему и что там не так, но можно ли это как-то избежать/улучшить? -- AVBtalk 01:43, 25 декабря 2009 (UTC)

Я наблюдаю в Opera 11.50 то же самое, но поскольку скрипт предназначен для ссылок в викикоде, а там эта ссылка работает, то видимо так и останется. — AlexSm 21:38, 12 июля 2011 (UTC)

вертикальная черта в URL

[править код]

Есть такая ссылка:

В шаблоне она не работает из-за вертикальной черты. Однако если закодировать её, то гаджет её раскодирует. Как я понимаю, надо вертикальную черту исключить из процесса декодирования. -- AVBtalk 01:47, 25 декабря 2009 (UTC)

Исправлено, теперь скрипт всегда заменяет «|» на «%7C». — AlexSm 21:38, 12 июля 2011 (UTC)

угловые скобки в якорях

[править код]

Есть такая ссылка: 1. После её декодирования получается

  • [[ВП:ССО#Используется HTML-тег изменения стиля текста ]]

Эта ссылка нерабочая (тег в ней отрабатывается как тег, а не как часть названия, из-за чего я вынужден был добавить закрывающий тег сразу после ссылки, иначе весь последующий текст помечается как big), пока угловые скобки в ней не вернуть обратно к кодированному виду:

-- AVBtalk 16:02, 2 января 2010 (UTC)

Ссылки на спецстраницы с параметрами

[править код]

Возможно ли добавить упрощение ссылок типа http://ru.wikipedia.org/w/index.php?title=Служебная:LinkSearch&target=upyachka.ru до Служебная:LinkSearch/upyachka.ru? --Shureg 09:28, 16 января 2010 (UTC)

Теоретически конечно можно, но поскольку параметры у специальных страниц разные, подобное преобразование получается слишком узкого применения и лежит вне области назначения гаджета. Можно добавить такое преобразование в собсвтенную функцию, которую гаджет будет вызывать. — AlexSm 19:26, 16 июня 2010 (UTC)

Бета-версия

[править код]

У меня включена бета-версия, и некоторое время кнопку гаджета на тулбаре я видел справа, вместе с кнопкой викификации. Некоторое время назад обе эти кнопки у меня пропали. В настройках галочка по-прежнему стоит. С чем это может быть связано и как исправить? --Nashev 00:03, 17 февраля 2010 (UTC)

Кстати да, пропала. --Illythr (Толк?) 19:15, 16 июня 2010 (UTC)
В начале года кнопка была добавлена прямо вместе с куском старого тулбара, но через некоторое время из-за изменений, сделанных разработчиками, это просто перестало работать. 8 июня 2010 для гаджета была добавлена новая кнопка , которая показывается и в старом и в новом тулбаре. Если с тех пор она «вдруг» исчезает, значит пользователь перешёл на другой браузер с устаревшим кешем, который просто надо обновить. — AlexSm 19:26, 16 июня 2010 (UTC)
Мда, смотрю в книгу, вижу WYSIWYG. Ещё и кеш, гад, сегодня обновился, так то даже и отмазаться нельзя... X_X --Illythr (Толк?) 19:34, 16 июня 2010 (UTC)

вертикальная черта после ссылки

[править код]

Ссылка, в которое сразу после URL идёт вертикальная черта с пробелом, не обрабатывается:

  • [http://en.wikipedia.org/wiki/Long_and_short_scales| Long and short scales]

-- AVBtalk 20:46, 13 апреля 2010 (UTC)

Ссылка неправильная, поэтому она и не обрабатывается. — AlexSm 21:38, 12 июля 2011 (UTC)

Апострофы около ссылки

[править код]

Если ссылка окружена апострофами, то при обработке они забираются в ссылку, что неверно. Пример: ссылка http://ru.wikipedia.org/wiki/Исповедник_(святой) преобразуется в Исповедник (святой)''. --IGW 12:47, 18 июля 2010 (UTC)

Исправлено. — AlexSm 21:38, 12 июля 2011 (UTC)

Проблема с установкой

[править код]

Сохранил .js в свою вики, настроил гаджет, подключил -- броузер поругался на js в строке 72 (брал .js экспортом, видимо там не учитывается переход на новую строку или еще что-то) -- исправил ошибки, кнопки всё-равно нет. Подскажите, как быть?

делал основную функцию пустой, для проверки -- все-равно нет кнопки. в исходном коде нет ничего указывающего на то, что гаджет подгрузился.

другие гаджеты (hotcat) работают как надо.

ZubZaZub 09:44, 30 сентября 2010 (UTC) ZubZaZub

Этот гаджет использует функцию, определённую через в других файлах проекта (MediaWiki:Editpage.js и т.д., из-за необходимости поддержки старого и нового тулбаров), и поэтому просто так его перенести не получится. Попробуйте взять en:User:Js/urldecoder (код), он в этом смысле более универсальный. — AlexSm 14:12, 30 сентября 2010 (UTC)

Ссылка с index.php

[править код]
== Гаджет не сработал ==

На этой ссылке:

http://ru.wikipedia.org/w/index.php?title=GeForce_500&stable=0&redirect=no#.D0.A2.D0.B5.D1.85.D0.BD.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.85.D0.B0.D1.80.D0.B0.D0.BA.D1.82.D0.B5.D1.80.D0.B8.D1.81.D1.82.D0.B8.D0.BA.D0.B8 --IGW 21:41, 21 января 2011 (UTC)

Конкретно для этой ссылки не существует полностью эквивалентной внутренней ссылки. А в принципе, алгоритма анализа ссылок вида w/index.php на предмет возможного превращения во внутренние в гаджете никогда и не было. — AlexSm 21:47, 21 января 2011 (UTC)
Разве не эта GeForce 500#Технические характеристики? Впрочем, ссылка была как-то некорректно сформирована. Зашел снова в статью, ссылка стала с /wiki/ и все нормально обрабатывается. Насчет не было алгоритма. Обычно русский текст расшифровывается, а здесь что-то не сработало. --IGW 22:05, 21 января 2011 (UTC)
А, разобрался. Здесь точки, вместо процентов. --IGW 22:08, 21 января 2011 (UTC)
Попробую объяснить по-другому. Гаджет упрощает только ссылки с /wiki/. При этом ссылка вида /w/index.php?title=Test хотя теоретически эквивалентна /wiki/Test и соотвественно [[Test]], скриптом игнорируется, просто потому что такие ситуации редки: гораздо чаще ссылки с w/index.php имеют дополнительные параметры и поэтому непреобразуемы. В данном конкретном случае для преобразования этой ссылки гаджету кроме всего прочего ещё нужно было бы «знать», что параметр &stable=0 можно выбросить, и &redirect=no при наличии якоря # вроде бы тоже можно выбросить. То есть в принципе теоретически эти преобразования возможны, но в данный момент не реализованы, и у меня есть соменения, что эту функциональность действительно нужно добавлять. — AlexSm 22:19, 21 января 2011 (UTC)
Понятно, спасибо. Вот попутно такой вопрос. Иногда нужно расшифровать только текст. Напр., чтобы стало так: http://ru.wikipedia.org/w/index.php?title=GeForce_500&stable=0&redirect=no#Технические_характеристики . Можно это каким-то образом сделать? --IGW 22:44, 21 января 2011 (UTC)
Теоретически можно, но на практике увы не сделано: сейчас якоря расшифровываются только после того, как ссылка переведена во внутреннюю. — AlexSm 23:09, 21 января 2011 (UTC)