Люблю джаваскрипт за то, что c ним порой чувствуешь себя магом и волшебником. Не так давно в голове возникла идея - а что, если на сайт, который изначально не гибок в этом плане (без аджакса и джаваскриптовой цветомузыки) навешать немного джаваскрипта. Скажу сразу, речь идет об LMS Moodle (для тех, кто не в курсе - это CMS для тренингов). Так вот была у нас одна проблемка с ним - много че может делать, только вот ничего не понятно как это сделать - часто пользователи нас спрашивают "а как то?", "а как это?", причем, порой, даже сам забываешь где там кликнуть надо... Люблю я его за это - квестообразующий :) - не соскучишься с ним. Но это мне так интересно, а другим пользователям? Нужно максимально упрощать!
Идея пришла во время серфинга на другом сайте. Там был простенький гид, кликни там, кликни сям, а тут вот это, а тут ты можешь сделать это. И я подумал - хочу! Стал искать решения. Их есть с десяток. Но я хотел решения, которое будет чисто джаваскриптовым - без правки HTML. И оно нашлось! Сразу показываю результат, каким он получился у меня.
Есть такая библиотека с использованием JQuery, называется Guiders-JS. Настраивается достаточно не сложно. Вот код, который я вставил в боковую панельку чтобы линк Training Guide ожил.
Enjoy! И спасибо разработчикам Guiders-JS!!
Идея пришла во время серфинга на другом сайте. Там был простенький гид, кликни там, кликни сям, а тут вот это, а тут ты можешь сделать это. И я подумал - хочу! Стал искать решения. Их есть с десяток. Но я хотел решения, которое будет чисто джаваскриптовым - без правки HTML. И оно нашлось! Сразу показываю результат, каким он получился у меня.
Есть такая библиотека с использованием JQuery, называется Guiders-JS. Настраивается достаточно не сложно. Вот код, который я вставил в боковую панельку чтобы линк Training Guide ожил.
<ul> <li>...</li> <li>...</li> <li>...</li> <li>...</li> <li><span id="training-guide"><a href="#">Training guide</a></span></li> </ul> <p id="training-guide-script"> <script src="https://host.com/js/guiders-1.3.0/jquery-1.5.1.min.js" type="text/javascript"></script> <script src="https://host.com/js/guiders-1.3.0/guiders-1.3.0.js" type="text/javascript"></script> <link rel="stylesheet" href="https://host.com/js/guiders-1.3.0/guiders-1.3.0.css" type="text/css" /> <script src="https://host.com/js/guiders-1.3.0/training-guiders.js" type="text/javascript"></script> </p>Все просто. Создается линк никуда не ссылающийся (на него потом навешается обработчик с помощью jQuery). Подключается библиотека jQuery и Guiders-JS, подключается стиль и мой скрипт, в котором описаны окошки гида. Там же и навешивается обработчик на клик и делаются еще кой че.
$(document).ready(function () { if ($("#module-1224").size() == 0) { // проверяем, если мы не на главной страничике (содержащей див // с айди module-1224), то запускать гид бессмысленно $('#training-guide').parent().hide(); // потому мы скрываем возможность вызвать гида return; } $('#training-guide').click(function () { // при клике на линк guiders.show("start"); // открываем гид (первый диалог) }); guiders.createGuider({ // создается первый диалог buttons: [ // с кнопкой next {name: "Next"} ], title: "**** ******* Guide", // это его заголовок description: "Hi! This is **** ****** training course guide. Hope it will help.", // с сообщением id: "start", // это его айдиха next: "guide2", // это айдиха того, куда переходим overlay: true, // задний фон за диалогом будет затеняться xButton: true, // у диалога будет кнопка X в правом верхнем углу closeOnEscape: false, // по нажатию на Esc будет закрыто окно width: 350 // ширина диалога }).show(); guiders.createGuider({ // создаем следующий шаг attachTo: "#inst16", // он прикрепляется к диву с этой айдишкой position: 10, // прицепляется в позиции 10. С каждой стороны к диву можно прицепиться: // с одного краю, с другого и по центру - всего 12 позиций. По часовой // стрелке от 1 до 12. // // вот кусочек исходного кода библиотеки: // guiders._offsetNameMapping = { // "topLeft": 11, // "top": 12, // "topRight": 1, // "rightTop": 2, // "right": 3, // "rightBottom": 4, // "bottomRight": 5, // "bottom": 6, // "bottomLeft": 7, // "leftBottom": 8, // "left": 9, // "leftTop": 10 // "}; overlay: true, // опять же фон будет размыт и в тени highlight: "#inst16", // но сам див будет подсвечен buttons: [ {name: 'Next', onclick: guiders.next} ], //" на кнопку next навешивается обработчик - следующий диалог title: "", description: "You you can find useful links here.", // другое сообщение id: "guide2", // айдиха текущего диалога next: "guide3", // куда идем на следующий диалог autoFocus: true, // если вдруг див ушел за пределы экрана, подсветить его проскролив страничку xButton: true, closeOnEscape: false, width: 350 }); function topic_toggle_new(number, isOpen) { // это самописная функция которая разворачивает/сворачивает // модуля тренинга на Moodle, вызывая его js код var open = $("#toggle-" + number + " .toggle_closed"); open = (open.size() > 0) ? open[0] : null; var close = $("#toggle-" + number + " .toggle_open"); close = (close.size() > 0) ? close[0] : null; if (isOpen) { element = (open == null) ? null : open; } else { element = (close == null) ? null : close; } if (element != null) { toggle_topic(element, number); } } guiders.createGuider({ // создаем третий шаг attachTo: "#inst370", position: 10, highlight: "#inst370", overlay: true, buttons: [ {name: "Next", onclick: function () { // вот тут на next навешиваем больше чем одну // функцию - создли анонимную функцию и в ней // прописали весь сценарий topic_toggle_new(1, false); topic_toggle_new(2, false); topic_toggle_new(3, false); topic_toggle_new(4, false); topic_toggle_new(5, false); topic_toggle_new(6, false); topic_toggle_new(7, false); topic_toggle_new(8, false); topic_toggle_new(9, false); topic_toggle_new(10, false); guiders.next(); }} ], title: "", description: "For each code review you'll get 3 XP. More code " + "review you do - more XP you get. Collect XP and " + "distinguish yourself!", id: "guide3", next: "guide4", autoFocus: true, xButton: true, closeOnEscape: false, width: 350 }); // ну и так далее. На последнем шаге добавляется кнопка Close вот так // buttons: [{name: "Close", onclick: guiders.hideAll }] // ... });Что замечательно, так это то, что я могу по линку https://host.com/training-page.html#guider=start открыть страничку с гидом.
Enjoy! И спасибо разработчикам Guiders-JS!!
Комментариев нет:
Отправить комментарий