Инструменты пользователя

Инструменты сайта



// Цикл статей про источники питания

Цикл статей про источники питания: http://naf-st.ru/articles/ip/

// Dokuwiki Bookmark и Firefox

Какое-то время назад я поднял у себя на wiki систему веб-закладок. Из браузеров подобные закладки добавляются при помощи так называемых bookmarklets - javascript вводящихся через адресную строку.

Естественно что, по сути, единственная удобная возможность использования веб-закладок - это создать на панели закладок (каламбууур!) закладку с URL с текстом букмарклета.

Но мне что-то не понравилось: держать открытую панель закладок ради этого, тратить драгоценное экранное место моего EeePC 1000HA… Решил покурить тему.

Задачу сформулировал так: создать кнопку, которую можно поместить на любую активную панель, и вызывать диалог сохраненя веб-закладки по нажатию на неё.

Приступил к поиску. Результат не заставил себя долго ждать: почти сразу нашел расширение Custom Buttons.

Следующим шагом - придумать код кнопки. Атака «в лоб», то есть подстановкой кода букмарклета в команду openURI не увенчалась успехом. Но, благодаря этим документам:

  • Tabbed browser (особенно про получение объекта document для текущей открытой вкладки)
  • Pages tagged with "DOM" (тут вообще читать не перечитать, но оставим это любителям ваять расширения для FF)

был составлен следующий код (помещается во вкладке Code (Код) редактора новой кнопки):

/*CODE*/
host  = 'http://hatred.homelinux.net/wiki';
 
doc   = content.document;
title = doc.title;
url   = doc.location.href;
sel   = doc.selection ? doc.selection.createRange().text : doc.getSelection();
 
target_url = host + '/doku.php?do=dokubookmark&te=' + encodeURI(sel) + 
                    '&ur=' + encodeURI(url) + '&ti=' + encodeURI(title);
 
// Open in new Window
window.open(target_url, 'dokuwikiadd',
    'scrollbars=yes,resizable=yes,toolbars=yes,width=680,height=520,left=210,top=150,status=yes');
// Open in new Tab
//gBrowser.selectedTab = gBrowser.addTab(target_url);

Адрес сайта, естественно, исправляете на свой. Так же можете выбрать способ открытия окна сохранения: по умолчанию - новое окно, а можно - в новой вкладке.

На скриншоте процесс редактирования выглядит так:

Кнопку после создания помещаем на любую открытую панель и пользуемся.

Из замеченных косяков: при включенном No script при открытии окна сохранения ругается на возможную XSS атаку и малость коверкает выделение при вставке, приходится перечитывать.

// DokuWiki и web-закладки

Случайно наткнулся на плагин dokubookmark, ставится в два движения, настраиваются неймспейсы… Но тороплюсь.

Для чего нужен: позволяет быстро создать web-закладку (а по сути запись в DokuWiki) на текущий сайт, помимо этого, сразу можете назначить теги (если стоит плагин tag), автоматом так же вставится текущий выделенный текст (если он есть) на странице, это дело можете сразу подправить, выбрать направление: публичные или приватные закладки (для приватных закладок рекомендую отдельнную область имен (namespace), которой назначить, соответственно, ограниченные права) и сохранить.

Как их потом искать? В шаблоне по-умолчанию сразу ставится тег Bookmark, я рекомендую его не убирать, потом по этому тегу просматривать свои закладки. Помимо этого:

  • по назначенным тегам, если озаботились этим
  • поиском по сайту

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

javascript:Q=document.selection?document.selection.createRange().text:document.getSelection();void(window.open('http://SITE/wiki/doku.php?do=dokubookmark&te='+encodeURIComponent(Q)+'&ur='+encodeURIComponent(location.href)+'&ti='+encodeURIComponent(document.title),'dokuwikiadd','scrollbars=yes,resizable=yes,toolbars=yes,width=680,height=520,left=210,top=150,status=yes'));

Только исправьте адрес и путь на сайте на свои.

Все, пробуйте :)

UPD: Поддержка кирилицы

Из коробки пока не работает нормально с кирилицей (решение ниже, оно же отправлено разработчику)

Вы можете заметить, что для экранирования передаваемой строки используется escape(), так что кодировку строки-источника мы определить никак не сможем. Есть другие вызовы, которые так же экранируют строку, но в кодировке UTF-8, не зависимо от настроек сайта, это:

  • encodeURI()
  • encodeURIComponent()

Различия между ними можно посмотреть в этой статье (и о escape() так же): http://habrahabr.ru/blogs/webdev/17640/, после чего выберите ту, которая по вкусу.

Но этого не достаточно, в самом плагине, нужно открыть файл helper.php и заменить все вхождения

htmlentities($some_text_var)

на

htmlentities($some_text_var, ENT_COMPAT, "UTF-8")

Дело в том, что у htmlentities(), согласно документации, кодировка по умолчанию ISO-8859-1, за подробностями в документацию (умный форматировщик кода у меня тут, даже ссылки сразу на первоисточники поставил, пользуйтесь).

UPD2: Все, эти пляски не нужны, автор обновил версию, за что ему большое спасибо :)