Здравствуйте
Но не нашел на сайте контактов для связи кому это можно отправить
Описание проблемы:
Неправильная работа фильтра “Авто-связывание глоссария”
Проблема заключалась в работе с тегом <a ></a> (Тег <A> является одним из важных элементов HTML и предназначен для создания ссылок. В зависимости от присутствия параметров name или href тег <A> устанавливает ссылку или якорь. Якорем называется закладка внутри страницы, которую можно указать в качестве цели ссылки. При использовании ссылки, которая указывает на якорь, происходит переход к закладке внутри веб-страницы.)
Детальное описание проблемы:
Проблема возникает не со всеми тегами <a> , а только с тегами которые имеют наличие параметра например <a href="URL">...</a> или <a name="идентификатор">...</a> или <a target="имя окна">...</a> или <a title="текст">...</a>.В версии скаченной с сайта HYPERLINK "http://www.moodle.org"
www.moodle.org
проблема проявляет себя следующим образом:
<table>
<tr>
<td>
<a href="URL">...</a> Здесь должен быть какой-нибудь текст и в этом тексте работать автоматическое связывание не будет
<a href="URL">...</a> А здесь в тексте будет автоматическое связывание
<a href="URL">...</a> Здесь должен быть какой-нибудь текст и в этом тексте работать автоматическое связывание не будет
<a href="URL">...</a> А здесь в тексте будет автоматическое связывание
И т.д.
</td>
</tr>
</table>
Это происходит на мой взгляд из за не правильного использования регулярного выражения <a[^>]+?> о котором будет написано ниже. Это выражение подразумевает двойное нахождение тега <a>, что способствует проявлению выше описанной ошибки.
Проблемная функция:
строка 43 /lib/filterlib.php
/**
* Process phrases intelligently found within a HTML text (such as adding links)
*
* param text the text that we are filtering
* param link_array an array of filterobjects
* param ignoretagsopen an array of opening tags that we should ignore while filtering
* param ignoretagsclose an array of corresponding closing tags
**/
Что в переводе на русский означает интеллектуальный поиск внутри html текста.(такой как добавление ссылок)
Строка 51 /lib/filterlib.php
function filter_phrases ($text, &$link_array, $ignoretagsopen=NULL, $ignoretagsclose=NULL)
Решение:
Нас интересуют строчки 76 и 77 (/lib/filterlib.php) до преобразования
$ignoretagsopen = array('<a[^>]+?>');
$ignoretagsclose = array('</a>');
Строку $ignoretagsopen = array('<a[^>]+?>'); нужно заменить на $ignoretagsopen = array('<a[^>]+?');
PS В 1.7 эта ошибка по прежнему существует.
Тест выявляющий или не выявляющий ошибку.
Параметры фильтров
Filter match once per page нет
Filter match once per text нет
Filter all strings да
Следующий текст нужно вставить в урок. Но предварительно нужно в глоссарии добавить термин "Человечество" и не забыть указать "Эта запись должна автоматически связываться".
текcт который нужно вставить в урок
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<table align="center" border="0" cellpadding="2" cellspacing="2" width="600">
<tbody><tr>
<td>
<b></b><p><b><a href="#m1">Критерии вступления общества в постиндустриальный, информационный периоды своего развития</a>
</b></p><p><b><a href="#m2">Эволюция социальных систем</a>
</b></p><p><b><a href="#m3">Зарубежные и российские ученые, внесшие вклад в изучение проблем постиндустриального, информационного общества</a>
</b></p><p><b><a href="#m4">Понятие "информатизация общества"</a>
</b></p><p><b><a href="#m5">Социальная информатика - определение, предметное поле исследования, методологическая роль</a>
</b></p><p><b><a href="#m6">Выводы</a>
</b></p><p><b><a href="#m7">Литература</a>
</b>
</p></td>
</tr>
</tbody></table>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<table align="center" border="0" cellpadding="2" cellspacing="2" width="600">
<tbody><tr>
<td>
<b></b><p><b><a href="#m1">Критерии вступления общества в постиндустриальный, информационный периоды своего развития</a>
</b></p><p><b><a href="#m2">Эволюция социальных систем</a>
</b></p><p><b><a href="#m3">Зарубежные и российские ученые, внесшие вклад в изучение проблем постиндустриального, информационного общества</a>
</b></p><p><b><a href="#m4">Понятие "информатизация общества"</a>
</b></p><p><b><a href="#m5">Социальная информатика - определение, предметное поле исследования, методологическая роль</a>
</b></p><p><b><a href="#m6">Выводы</a>
</b></p><p><b><a href="#m7">Литература</a>
</b>
</p></td>
</tr>
</tbody></table>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<table align="center" border="0" cellpadding="2" cellspacing="2" width="600">
<tbody><tr>
<td>
<b></b><p><b><a href="#m1">Критерии вступления общества в постиндустриальный, информационный периоды своего развития</a>
</b></p><p><b><a href="#m2">Эволюция социальных систем</a>
</b></p><p><b><a href="#m3">Зарубежные и российские ученые, внесшие вклад в изучение проблем постиндустриального, информационного общества</a>
</b></p><p><b><a href="#m4">Понятие "информатизация общества"</a>
</b></p><p><b><a href="#m5">Социальная информатика - определение, предметное поле исследования, методологическая роль</a>
</b></p><p><b><a href="#m6">Выводы</a>
</b></p><p><b><a href="#m7">Литература</a>
</b>
</p></td>
</tr>
</tbody></table>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<table align="center" border="0" cellpadding="2" cellspacing="2" width="600">
<tbody><tr>
<td>
<b></b><p><b><a href="#m1">Критерии вступления общества в постиндустриальный, информационный периоды своего развития</a>
</b></p><p><b><a href="#m2">Эволюция социальных систем</a>
</b></p><p><b><a href="#m3">Зарубежные и российские ученые, внесшие вклад в изучение проблем постиндустриального, информационного общества</a>
</b></p><p><b><a href="#m4">Понятие "информатизация общества"</a>
</b></p><p><b><a href="#m5">Социальная информатика - определение, предметное поле исследования, методологическая роль</a>
</b></p><p><b><a href="#m6">Выводы</a>
</b></p><p><b><a href="#m7">Литература</a>
</b>
</p></td>
</tr>
</tbody></table>
Найдена ошибка в работе фильтра Авто-связывание глоссария
Number of replies: 11Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Денис, не увлекайтесь ссылками и якорями. Фильтр авто-связывания и не будет работать со ссылками.
Причина - результат авто-связывания - это гиперссылка на термин в словаре. А создать вложенную гиперссылку просто невозможно. 
Кстати, привожу на всякий случай фрагмент кода, который формирует система при установлении авто-связывания:
Кстати, привожу на всякий случай фрагмент кода, который формирует система при установлении авто-связывания:
<a target="entry" class="glossary autolink glossaryid21" title="Словарь с функцией редактирования: Форум" href="URL" Xonclick="return openpopup('/mod/glossary/showentry.php?courseid=12\&concept=%D4%EE%F0%F3%EC', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);">Форум</a>
Это как раз результат работы авто-связывания с термином "Форум" в словаре курса.
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Денис, не увлекайтесь ссылками и якорями. Фильтр авто-связывания и не будет работать со ссылками.
Причина - результат авто-связывания - это гиперссылка на термин в словаре. А создать вложенную гиперссылку просто невозможно. 
Я не пытался создать ссылку в ссылке я же ведь на писал где будет работать автоматическое связывание а где не будет
Пишу еще раз:
<table>
<tr>
<td>
<a href="URL">...</a> Здесь должен быть какой-нибудь текст и в этом тексте работать автоматическое связывание не будет работать (это не ссылка а продолжение текста после ссылки)
<a href="URL">...</a> А здесь в тексте будет автоматическое связывание(это не ссылка а продолжение текста после ссылки)
<a href="URL">...</a> Здесь должен быть какой-нибудь текст и в этом тексте работать автоматическое связывание не будет работать(это не ссылка а продолжение текста после ссылки)
<a href="URL">...</a> А здесь в тексте будет автоматическое связывание(это не ссылка а продолжение текста после ссылки)
И т.д.
</td>
</tr>
</table>
Получается что автоматическое связывание работает только между четными последовательностями пар тегов <a href="URL">...</a>. Покрайней мере у меня.
Вы по пробовали надеюсь текстовый фрагмент который я привел.


Я не пытался создать ссылку в ссылке я же ведь на писал где будет работать автоматическое связывание а где не будет
Пишу еще раз:
<table>
<tr>
<td>
<a href="URL">...</a> Здесь должен быть какой-нибудь текст и в этом тексте работать автоматическое связывание не будет работать (это не ссылка а продолжение текста после ссылки)
<a href="URL">...</a> А здесь в тексте будет автоматическое связывание(это не ссылка а продолжение текста после ссылки)
<a href="URL">...</a> Здесь должен быть какой-нибудь текст и в этом тексте работать автоматическое связывание не будет работать(это не ссылка а продолжение текста после ссылки)
<a href="URL">...</a> А здесь в тексте будет автоматическое связывание(это не ссылка а продолжение текста после ссылки)
И т.д.
</td>
</tr>
</table>
Получается что автоматическое связывание работает только между четными последовательностями пар тегов <a href="URL">...</a>. Покрайней мере у меня.
Вы по пробовали надеюсь текстовый фрагмент который я привел.
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Если тестовый текст сократить до нижеследующего:
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
То у меня в первом и третьем абзаце фильтр Авто-связывание глоссария не работает. Я уже начинаю думать что это только у меня такая проблема.
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
<a name="m8"></a><b></b><center><h3><b><u>Тема 1</u>. СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА</b></h3></center>
<blockquote>
<p align="justify">
<i><font size="+1">Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</font></i>
</p></blockquote>
То у меня в первом и третьем абзаце фильтр Авто-связывание глоссария не работает. Я уже начинаю думать что это только у меня такая проблема.
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
А после изменения функции filter_phrases о которой я писал в первом посте
У меня все начинает работать
У меня все начинает работать
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Все верно. Проблема существует.
Для такого кода.....
А вот в варианте:
<a name="m8">Тема 1.</a> СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА
<p align="justify">
Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.
<a name="m8">Тема 1.</a> СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА
</p><p align="justify">
Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</p>
Все работает.
Пожалуйста, не пользуйтесь Microsoft-подобными редакторами для верстки страниц. Есть Dreamweaver, которая создает нормальный код. Обратите внимание, что тег <a> не должен быть пустым. Одно из главных правил верстки страниц гласит, что не допускается использование пустых тегов.
И, пожалуйста, для выделения полужирного, курсивного начертания используйте теги strong, em.
Привожу цитату:
Так же для выделения текста используются теги <strong> и <em>, данные теги являются контейнерами и требуют закрывающегося тега. Тег <strong> сообщает браузеру, что на заключенном в нем тексте необходимо сделать сильное ударение. Обычно визуальные браузеры отображают содержимое данного тега полужирным шрифтом, но это может быть легко изменено с помощью таблицы стилей. Так как данный тег является структурным, он несет смысловую нагрузку, в отличие от тега <b>, который лишь форматирует текст полужирным, то его использование предпочтительней. Тег <em> тоже акцентирует внимание на заключенном внутри тексте, но он считается менее сильным ударением. Отображается он как правило курсивом. По тем же причинам что тег <strong> его использование предпочтительней тега <i>. Сравните то как будет отформатирован следующий текст.
А вот в варианте:
<a name="m8">Тема 1.</a> СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА
<p align="justify">
Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.
<a name="m8">Тема 1.</a> СОЦИАЛЬНАЯ ИНФОРМАТИКА: ПРЕДМЕТ И ЗАДАЧИ КУРСА
</p><p align="justify">
Человечество стремительно вступает в информационную эпоху. Вес информационного сектора экономики, предметом труда в котором является информация, стремительно возрастает в мире - доля ее производства и переработки в суммарном рабочем времени для экономически развитых стран мира на рубеже XXI века составила 50-75%.</p>
Все работает.
Пожалуйста, не пользуйтесь Microsoft-подобными редакторами для верстки страниц. Есть Dreamweaver, которая создает нормальный код. Обратите внимание, что тег <a> не должен быть пустым. Одно из главных правил верстки страниц гласит, что не допускается использование пустых тегов.
И, пожалуйста, для выделения полужирного, курсивного начертания используйте теги strong, em.
Привожу цитату:
Так же для выделения текста используются теги <strong> и <em>, данные теги являются контейнерами и требуют закрывающегося тега. Тег <strong> сообщает браузеру, что на заключенном в нем тексте необходимо сделать сильное ударение. Обычно визуальные браузеры отображают содержимое данного тега полужирным шрифтом, но это может быть легко изменено с помощью таблицы стилей. Так как данный тег является структурным, он несет смысловую нагрузку, в отличие от тега <b>, который лишь форматирует текст полужирным, то его использование предпочтительней. Тег <em> тоже акцентирует внимание на заключенном внутри тексте, но он считается менее сильным ударением. Отображается он как правило курсивом. По тем же причинам что тег <strong> его использование предпочтительней тега <i>. Сравните то как будет отформатирован следующий текст.
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Спасибо за ответ и признание наличия ошибки хотя бы для такого кода и за рекомендации тоже обязательно воспользуюсь
А что касается материала то его моя задача разместить. Материала много и что естественно его уже поздно переформатировать.
Но я хотел бы что бы эта ошибка была исправлена в следующей версии.
А что касается материала то его моя задача разместить. Материала много и что естественно его уже поздно переформатировать.
Но я хотел бы что бы эта ошибка была исправлена в следующей версии.
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
А Вы на tracker.moodle.org создали bug report? Насколько я знаю, в рамках русского сообщества нет официальных разработчиков Moodle...
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Денис, можете даже не пытаться создавать баг репорт, т.к. ваше решение проблемы неверное и потенциально опасное.
В вашем решении будет фильтроваться только последовательность '<a ', таким образом если у меня в глосарии будет термин, например, scorm, а в статье будет ссылка сайт с этим словом в адресе или документ находящийся в папке с таким именем, то данное слово из адреса будет отфильтровано, что приведет к появлению тега А между треугольными скобками другого тега.
В лучшем случае у вас пропадет часть текста, в худшем - испортится оформление всей страницы.
Пожалуйста, будьте внимательней с исправлениями системы и, главное, публикацией этих исправлений.
В вашем решении будет фильтроваться только последовательность '<a ', таким образом если у меня в глосарии будет термин, например, scorm, а в статье будет ссылка сайт с этим словом в адресе или документ находящийся в папке с таким именем, то данное слово из адреса будет отфильтровано, что приведет к появлению тега А между треугольными скобками другого тега.
В лучшем случае у вас пропадет часть текста, в худшем - испортится оформление всей страницы.
Пожалуйста, будьте внимательней с исправлениями системы и, главное, публикацией этих исправлений.
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Я, честно говоря, детально не вглядывался в эту проблему. Просто подумал, даже если баг ошибочный - его просто, скорее всего, не пропустят...
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Денис, Вы не поняли. В данном случае, проблема не Moodle, а проблема - в коде, который Вы используете. Пожалуйста, не используйте пустой тег <a> даже для описания закладки. См. мой предыдущий ответ.
Пожалуйста, не забывайте, что есть разные стандарты HTML и Moodle не использует стандарт от Microsoft.
Пожалуйста, не забывайте, что есть разные стандарты HTML и Moodle не использует стандарт от Microsoft.
Re: Найдена ошибка в работе фильтра Авто-связывание глоссария
Денис, осмелюсь всеже еще раз посоветовать вам Dreamweaver. Он имееет прекрасные средства для автоматической очистки документа от того что там накуралесил Word!