Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
/***
|!Параметр|!Цвет|!Параметр|!Цвет|!Параметр|!Цвет|!Параметр|!Цвет|
|Background|background-color:#f6f6f6;|~PrimaryPale|background-color:#8cf;|~SecondaryPale|background-color:#ffc;|~TertiaryPale|background-color:#eee;|
|Foreground|background-color:#000;|~PrimaryLight|background-color:#18f;|~SecondaryLight|background-color:#fe8;|~TertiaryLight|background-color:#ccc;|
|||~PrimaryMid|background-color:#04b;|~SecondaryMid|background-color:#db4;|~TertiaryMid|background-color:#999;|
|Error|background-color:#f88;|~PrimaryDark|background-color:#014;|~SecondaryDark|background-color:#841;|~TertiaryDark|background-color:#666;|
!Цвета текста, фона и ссылок в заголовках таблиц разных уровней
|!Параметр|!Цвет|!Параметр|!Цвет|!Параметр|!Цвет|!Параметр|!Цвет|!Параметр|!Цвет|
|~TableHeader|background-color:#fcfcfc;|~TableHeader2|background-color:#960;|~TableHeader3|background-color:#960;|~TableHeader4|background-color:#960;|~TableHeader5|background-color:#850;|
|~TableHeaderBg|background-color:#db4;|~TableHeader2Bg|background-color:LightYellow;|~TableHeader3Bg|background-color:HoneyDew;|~TableHeader4Bg|background-color:LavenderBlush;|~TableHeader5Bg|background-color:pink;|
|~TableHeaderRef|background-color:#ffa;|~TableHeader2Ref|background-color:#089;|~TableHeader3Ref|background-color:#089;|~TableHeader4Ref|background-color:#089;|~TableHeader5Ref|background-color:#078;|
!Цвета, используемые в подключаемых модулях и в [[пользовательской таблице оформления|StyleSheet]]
|!Параметр|!Цвет|!Описание параметра|
|~HeaderTop|background-color:#04b;|Top gradient color of the wiki header {{remark{(верхний цвет градиентного заголовка)}}} |
|~HeaderBottom|background-color:#18f;|Bottom gradient color of the wiki header {{remark{(нижний цвет градиентного заголовка)}}} |
|~PreBg|background-color:#ffc;|Preformatted text {{remark{(code samples, etc.)}}} background color {{remark{(цвет фона форматированного текста)}}} |
|~PreBorder|background-color:#fe8;|Preformatted text border color {{remark{(цвет рамки вокруг форматированного текста)}}} |
|~FooterTop|background-color:#ffe4c0;|#eee #ffe4c0 тоже неплохо смотрелся |
|~FooterBottom|background-color:#eed090;|#ddd; #eed090 тоже неплохо смотрелся |
|~FooterBg|background-color:#fcdc66;|Цвет однородного фона подвала |
|~FooterBorder|background-color:#cba;|#ccc #cba тоже неплохо смотрелся|
|~FooterText|background-color:#000;|Цвет текста в подвале |
|~FooterRef|background-color:#950;|Цвет ссылок в подвале |
/%
Background: #f6f6f6
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
TableHeader: #fcfcfc
TableHeaderBg: #db4
TableHeaderRef: #ffa
TableHeader2: #960
TableHeader2Bg: LightYellow
TableHeader2Ref: #089
TableHeader3: #960
TableHeader3Bg: HoneyDew
TableHeader3Ref: #089
TableHeader4: #960
TableHeader4Bg: LavenderBlush
TableHeader4Ref: #089
TableHeader5: #850
TableHeader5Bg: pink
TableHeader5Ref: #078
HeaderTop: #04b
HeaderBottom: #18f
PreBg: #ffc
PreBorder: #fe8
FooterTop: #ffe4c0
FooterBottom: #eed090
FooterBg: #fcdc66
FooterBorder: #cba
FooterText: #000
FooterRef: #950
***/
//%/
/***
|Name:|DisableWikiLinksPlugin|
|Source:|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version:|1.6.0|
|Author:|Eric Shulman|
|License:|http://www.TiddlyTools.com/#LegalStatements|
|CoreVersion:|2.1|
|Type:|plugin|
|Description:|selectively disable TiddlyWiki's automatic WikiWord linking behavior|
***/
//{{{
version.extensions.DisableWikiLinksPlugin= {major: 1, minor: 6, revision: 0, date: new Date(2008,7,22)};
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks=false;
if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks=true;
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;
if (config.options.txtDisableWikiLinksList==undefined) config.options.txtDisableWikiLinksList="DisableWikiLinksList";
if (config.options.txtDisableWikiLinksTag==undefined) config.options.txtDisableWikiLinksTag="excludeWikiWords";
// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
config.formatters[i].coreHandler=config.formatters[i].handler;
config.formatters[i].handler=function(w) {
// supress any leading "~" (if present)
var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
var title=w.matchText.substr(skip);
var exists=store.tiddlerExists(title);
var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);
// check for excluded Tiddler
if (w.tiddler && w.tiddler.isTagged(config.options.txtDisableWikiLinksTag))
{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
// check for specific excluded wiki words
var t=store.getTiddlerText(config.options.txtDisableWikiLinksList);
if (t && t.length && t.indexOf(w.matchText)!=-1)
{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
// if not disabling links from shadows (default setting)
if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)
return this.coreHandler(w);
// check for non-existing non-shadow tiddler
if (config.options.chkDisableNonExistingWikiLinks && !exists)
{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
// if wikiLinks disabled, just return text without linking
if (config.options.chkDisableWikiLinks)
{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
// do standard WikiWord link formatting
return this.coreHandler(w);
}
}
Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function() {
/*
var skip=(this.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
var title=this.substr(skip);
var exists=store.tiddlerExists(title);
var exists=store.tiddlerExists(this.title);
alert(this.title+"; "+exists);
if (config.options.chkDisableNonExistingWikiLinks && !exists) return false;
*/
// if all automatic links are not disabled, just return results from core function
if (config.options.chkDisableWikiLinks) return false;
return this.coreAutoLinkWikiWords.apply(this,arguments);
}
Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
this.disableWikiLinks_changed.apply(this,arguments);
// remove excluded wiki words from links array
var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
if (t.length) for (var i=0; i<t.length; i++)
if (this.links.contains(t[i]))
this.links.splice(this.links.indexOf(t[i]),1);
}
config.optionsDesc["chkDisableWikiLinks"]="Disables WikiLinks";
config.optionsDesc["chkDisableNonExistingWikiLinks"]="Disables only non-existing WikiLinks";
config.optionsDesc["chkAllowLinksFromShadowTiddlers"]="Allows WikiLinks from ShadowTiddlers";
config.optionsDesc["txtDisableWikiLinksList"]="Name of tiddly which contains the default settings for DisableWikiLinksPlugin";
config.optionsDesc["txtDisableWikiLinksTag"]="Disables WikiWords for tiddlers, marked by this tag";
//}}}
<!--{{{-->
<table width=100%><tr>
<td valign=top><div class='title' macro='view title'></div></td>
<td valign=top><div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div></td>
</tr></table>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit tags'></div>
<div class='editorFooter'>
<span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span>
</div>
<div class='editor' macro='edit text'></div>
<!--}}}-->
/***
|''Name:''|ExcludeOrphansPlugin|
|''Author:''|vmunt|
|''Description:''|Обработчик тега excludeOrphans<br>Тag excludeOrphans handler|
|''Version:''|0.1|
|''Date:''|2010|
|''Source:''|http://vmunt.site/tw|
|''License:''|BSD open source license|
|''CoreVersion:''|2.6.0|
Этот модуль создаёт обработчик тега {{{excludeOrphans}}}. Заметки с этим тегом не появляются в списке Потери. Можно использовать для пометки плагинов {{remark{(заметок, помеченных тегом systemConfig, ибо они доступны из сервисных меню, генерируемых кодом)}}}, и для заметок, описывающих авторов заметок {{remark{(ибо ссылка на автора всё равно присутствует в заголовке каждой заметки)}}}. Плагин сделан простой подменой функции {{{TiddlyWiki.prototype.getOrphans}}}
Eng:
This plugin creates tag {{{excludeOrphans}}} handler. This tag useful for {{{systemConfig}}} tiddlers, author tiddlers and others service tiddlers, links to them missing in text tiddlers in this wiki. Tiddlers marks for this tag is not shown in list More/Orphans. Plugin makes as simple replace by function {{{TiddlyWiki.prototype.getOrphans}}}
{{remark{(If you find ugly constructions in my English, I will be pleased to advice how to makes this text more correct. My native language is Russian, and I have no language practice before...}}}
***/
//{{{
// Return an array of names of tiddlers that are defined but not referred to
TiddlyWiki.prototype.getOrphans = function()
{
var results = [];
this.forEachTiddler(function (title,tiddler) {
if(this.getReferringTiddlers(title).length == 0 && !tiddler.isTagged("excludeLists") && !tiddler.isTagged("excludeOrphans"))
results.push(title);
});
results.sort();
return results;
};
//}}}
Назначение и описание TiddlyWiki можно прочитать [[здесь|http://vmunt.site/tw/tw.tutorial.rus.html#TiddlyWiki]]
Для начала работы с пустой TiddlyWiki Вам может потребоваться изменить следующие заметки:
* [[Заголовок|SiteTitle]] и [[Подзаголовок|SiteSubtitle]] этой TiddlyWiki
* Содержимое [[Главного меню|MainMenu]] ({{remark{которое обычно располагается слева}}})
* [[Заметки, открываемые по умолчанию|DefaultTiddlers]]
Ваше имя для подписывания корректировок можно ввести тут: <<option txtUserName>>
/***
|''Name:''|ImportTablePlugin|
|''Old name:''|ImportTiddlersExp|
|''Author:''|vmunt|
|''Description:''|Расширенное меню импорта заметок|
|''Version:''|0.1.1|
|''Date:''|2010|
|''Source:''|http://vmunt.site/tw|
|''License:''|BSD open source license|
|''CoreVersion:''|2.6.0|
|''Remark:''|Не закончена функция formatDateStr() и стоит явное указание форматной строки {{remark{(потому что выравнивание колонки по правому краю в wizard-е пока не знаю, как делать)}}}. Также думаю сделать закомментированный вариант английских названий колонок|
Вместо такого меню импорта:
|!Заметка|!Размер|!Метки|
|TiddlyWiki:rus|26 KB|systemConfig|
делает такое
|!Заметка|!Метки|!Размер|!Кем|!Изменена|!Старая дата|!Бывший автор|!Сколько занимала|
|TiddlyWiki:rus|systemConfig|26 KB|vmunt|16.06.2010|28.07.2010|vmunt|26 KB|
***/
//{{{
config.macros.importTiddlers.listViewTemplateExp = {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Tiddler', field: 'tiddler', title: "Заметка", type: 'Tiddler'},
{name: 'Tags', field: 'tags', title: "Метки", type: 'Tags'},
{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Размер", type: 'Size'},
{name: 'Modifier', field: 'modifier', title: "Кем", type: 'String'}, //**** vmunt: added ****
{name: 'Modified', field: 'modified', title: "Изменена", type: 'String'}, // Fri Jun 4 09:37:00 UTC+0600 2010
{name: 'StoreModifier', field: 'sModified', title: "Старая дата", type: 'String'}, // 201006041906
{name: 'StoreModified', field: 'sModifier', title: "Бывший автор", type: 'String'},
{name: 'StoreSize', field: 'sSize', title: "Сколько занимала", type: 'Size'}],
rowClasses: [
{className: 'warning', field: 'sNewer'},
{className: 'lowlight', field: 'sEqual'}
]};
String.prototype.formatDateString = function(template) {
function hour12(s) { return (int.s > 12) ? zeroPad(int.s - 12,2) : int.s; }
var t = template.replace(/wYYYY/g,this.substr(0,4));
t = t.replace(/wYY/g,this.substr(2,4));
t = t.replace(/YYYY/g,this.substr(0,4));
t = t.replace(/YY/g,this.substr(2,4));
t = t.replace(/mmm/g,config.messages.dates.shortMonths[parseInt(this.substr(4,2))-1]);
t = t.replace(/MMM/g,config.messages.dates.months[parseInt(this.substr(4,2))-1]);
t = t.replace(/0MM/g,this.substr(4,2));
t = t.replace(/MM/g,parseInt(this.substr(4,2))); // not quite correct
t = t.replace(/0DD/g,this.substr(6,2));
t = t.replace(/DD/g,parseInt(this.substr(6,2)));
// t = t.replace(/0mm/g,String.zeroPad(this.getMinutes(),2));
// t = t.replace(/mm/g,this.getMinutes());
// t = t.replace(/0hh12/g,String.zeroPad(this.substr(8,2)));
/*
t = t.replace(/hh12/g,this.getHours12());
t = t.replace(/0hh/g,String.zeroPad(this.getHours(),2));
t = t.replace(/hh/g,this.getHours());
t = t.replace(/0ss/g,String.zeroPad(this.getSeconds(),2));
t = t.replace(/ss/g,this.getSeconds());
t = t.replace(/[ap]m/g,this.getAmPm().toLowerCase());
t = t.replace(/[AP]M/g,this.getAmPm().toUpperCase());
t = t.replace(/0WW/g,String.zeroPad(this.getWeek(),2));
t = t.replace(/WW/g,this.getWeek());
t = t.replace(/DDD/g,config.messages.dates.days[this.getDay()]);
t = t.replace(/ddd/g,config.messages.dates.shortDays[this.getDay()]);
t = t.replace(/DDth/g,this.getDate()+this.daySuffix());
var tz = this.getTimezoneOffset();
var atz = Math.abs(tz);
t = t.replace(/TZD/g,(tz < 0 ? '+' : '-') + String.zeroPad(Math.floor(atz / 60),2) + ':' + String.zeroPad(atz % 60,2));
t = t.replace(/\\/g,"");
*/
return t;
};
config.macros.importTiddlers.onGerTiddlerListOrig = config.macros.importTiddlers.onGetTiddlerList; // Save pointer to original macro
config.macros.importTiddlers.onGetTiddlerList = function(context,wizard) {
if(context.status !== true) {
wizard.setButtons([{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}],config.macros.importTiddlers.errorGettingTiddlerList);
return;
}
// Extract data for the listview
var listedTiddlers = [];
if(context.tiddlers) {
for(var n=0; n<context.tiddlers.length; n++) {
var tiddler = context.tiddlers[n];
var ss = 0;
if (store.tiddlerExists(tiddler.title)) {
ss = store.getTiddlerText(tiddler.title);
ss = ss.length > 0 ? ss.length : -1;
}
var tm = tiddler.modified.convertToYYYYMMDDHHMM();
var sm = store.getValue(tiddler.title,'modified');
listedTiddlers.push({
title: tiddler.title,
modified: tm.formatDateString("0DD.0MM.YYYY"), // config.views.wikified.dateFormat),
modifier: tiddler.modifier,
text: tiddler.text ? wikifyPlainText(tiddler.text,100) : "",
tags: tiddler.tags,
size: tiddler.text ? tiddler.text.length : 0,
tiddler: tiddler,
//*** vmunt added ***
sModified: ss == 0 ? '' : sm.formatDateString("0DD.0MM.YYYY"), // config.views.wikified.dateFormat), //sm.formatDateString("DD.0MM.YYYY")
sModifier: ss == 0 ? '' : store.getValue(tiddler.title,'modifier'),
sSize: ss,
sEqual: sm==tm ? true : false,
sNewer: sm>tm ? true : false
});
}
}
listedTiddlers.sort(function(a,b) {return a.title < b.title ? -1 : (a.title == b.title ? 0 : +1);});
// Display the listview
wizard.addStep(config.macros.importTiddlers.step3Title,config.macros.importTiddlers.step3Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
var listView = ListView.create(listWrapper,listedTiddlers,config.macros.importTiddlers.listViewTemplateExp);
wizard.setValue("listView",listView);
wizard.setValue("context",context);
var txtSaveTiddler = wizard.getElement("txtSaveTiddler");
txtSaveTiddler.value = config.macros.importTiddlers.generateSystemServerName(wizard);
wizard.setButtons([
{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel},
{caption: config.macros.importTiddlers.importLabel, tooltip: config.macros.importTiddlers.importPrompt, onClick: config.macros.importTiddlers.doImport}]);
};
//}}}
[[Будущая начинка]]
----
@@color:green;font-size:.9em;[[TiddlyWiki|GettingStarted]], v.<<version>>
© [[Jeremy Ruston|http://www.tiddlywiki.com/#JeremyRuston]] & [[vmunt]], 2010÷2011@@
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<link rel="shortcut icon" type="image/x-icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGFBMVEX////e3t7Ozs6cnJwIe/cIa+YAWtYASsXtbw4DAAAACXBIWXMAAAsSAAALEgHS3X78AAAARklEQVR4nJWNyxIAIARFb+X//7cFPUaMbJqsOI6LCHdR+Qc9A1Rpp+dlD4LYjjGOwYbM8BMzkA0NCF98UBAyHsbC+iUE7pqBRhsiwMkCJwAAAABJRU5ErkJggg==" />
<!--}}}-->
[[Настройки интерфейса|SystemSettings]] для изменения вида TiddlyWiki, которые сохраняются программой просмотра
Ваше имя для подписывания правок. Можете записать его как WikiWord (к примеру, JoeBloggs)
<<option txtUserName>>
<<option chkSaveBackups>> Резервная копия
<<option chkAutoSave>> Автосохранение
<<option chkRegExpSearch>> Регулярные выражения
<<option chkCaseSensitiveSearch>> Чувствительность к регистру
<<option chkAnimate>> Анимация
----
[[Начальные настройки|GettingStarted]]
[[Расширенные настройки|AdvancedOptions]]
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::HeaderTop]] [[ColorPalette::HeaderBottom]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class="topSearch"><span macro='search ""'></span></div>
</div>
<div id='sidebar'>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebarOptions' refresh='content' force='true' tiddler='SideBarOptions'></div>
<!-- vmunt: Tabs slider inserted to SideBarOptions -->
<!-- <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div> -->
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<<newTiddler>><<permaview>><<saveChanges>><<closeAll>><<slider chkSliderOptionsPanel OptionsPanel "настройки »" "Изменение настроек TiddlyWiki">> <<slider chkSliderHistoryPanel SideBarTabs "история »" "Панель истории изменений и прочих списков заметок">>
/***
|!Дата|!Изменение|
|10.07.2011|Перенёс определение высот тегов BODY и HTML {{remark{(а заодно и тегов #pageFrame и #contentWrapper)}}} в заметку [[MarkupPostHead]], которая будет распространяться вместе с [[шаблоном страницы|PageTemplate]] с подвалом {{remark{(ибо, как оказалось, в IE8 height:100% размножается кратно {{remark{(в IE7 и других браузерах этой проблемы нет)}}})}}}. Завести стили прямо в [[шаблон страницы|PageTemplate]] с подвалом не удалось, ибо тот же IE8 переопределение стилей внутри тега BODY уже не воспринимает, а лепить модуль исключительно для стилевой поддержки пока не очень хочется. Вся эта возня, собственно, затеяна для того, чтобы сделать универсальную {{remark{(подходящую для всех моих шаблонов)}}} стилевую таблицу|
|18.06.2011|Сделал стилевую поддержку для заголовков второго-пятого уровней в таблицах {{remark{(сама поддержка таких заголовков включается плагином TableHeadersPlugin)}}}|
|08.05.2011|Внутри displayArea {{remark{(в заметках)}}} для гиперссылок поставлен запрет переноса на другую строку {{remark{(чтобы не разрывать ссылку на несколько строк, ибо часто некрасиво получается)}}}|
|20.03.2011|Сделан левый отступ для sliderPanel. Теперь вложенные sliderPanel имеют визуальную ступенчатую структуру |
|02.03.2011|Добавлены стили перекрёстных ссылок в заголовках {{remark{(для лучшего распознавания сдвигающихся/раздвигающихся текстов)}}} |
|02.02.2011|Добавлены стили для оформления подвала {{remark{(pageFrame, pageFooter, pageFooterLimiter)}}} |
|31.12.2011|Добавлен стиль {{{.viewer TH A}}} для установления цвета ссылок в заголовках таблиц с указанием цвета текста из параметра [[ColorPalette::TableHeaderRef|ColorPalette]] |
|03.11.2010|Добавлен стиль {{{.viewer TH}}} с указанием параметрических цветов текста [[ColorPalette::TableHeader|ColorPalette]] и фона [[ColorPalette::TableHeaderBg|ColorPalette]], плюс тег {{{.viewer PRE}}} тоже сделан параметрическим {{remark{(введены параметры [[ColorPalette::PreBg|ColorPalette]] и [[ColorPalette::PreBorder|ColorPalette]])}}}|
|15.10.2010|К стилю {{{tabContents}}} добавлено свойство {{{overflow:hidden}}} для того, чтобы длинные слова не вылазили за рамку истории|
|14.10.2010|Введён стиль ячейки {{{TD.left}}} с выравниванием по левому краю и абзацным выступом и определены стили {{{TR.oddRow}}} и {{{TR.evenRow}}}|
|20.09.2010|Изменил цвет внутренних ссылок TiddlyWiki, чтобы они чуток отличались цветом от внешних ссылок. Удобно при импортировании текстов с других сайтов, чтобы отличать ссылки, которые уже исправлены на ссылки внутри TiddlyWiki, и которые ещё нет.|
|16.09.2010|Присваивание специфических для {{{DIV.pic}}} параметров {{remark{(float:left в частности)}}} {{{TD.pic}}}-у решено признать неудачной идеей...|
|06.09.2010|Чуток приподнял subtitle в заголовке, чтобы текст смотрелся посередине заголовка {{remark{(ну и при уменьшении ширины экрана чтобы меньше с поиском пересекалось)}}}|
|30.08.2010|Изменена длина строки поиска в заголовке {{remark{(стиль DIV.topSearch)}}}|
|24.08.2010|Добавлен стиль {{{TD.pic}}} и {{{DIV.pic}}} для вставок картинок и оформления галерей|
|20.08.2010|Включена заметная тень заголовка {{remark{(.headerShadow left&top)}}}|
|03.08.2010|Изменено расположение блока меток, для этого изменены стили {{{.tagging}}} и {{{.tagged}}}|
|02.08.2010|Включено выравнивание текста в заметках по ширине {{remark{(стиль .viewer)}}}. Оставлено центрирование заголовков таблиц {{remark{(стиль .viewer TH)}}}. Сделан отступ от правого края списков в истории {{remark{(стили #sidebar LI и #sidebar LI.listTitle)}}}. Убран устаревший стиль {{{LI.listLink}}}|
***/
/*{{{*/
H1, H2, H3, H4, H5, H6 { font-style:italic;padding:0px }
H1, H2 { border-bottom:2px solid lightgray;margin-bottom:3px;margin-top:6px }
H3, H4, H5, H6 { border-bottom:1px solid lightgray;margin-bottom:2px;margin-top:3px }
H1 A { color:#620 } /* #841 */
H2 A { color:[[ColorPalette::SecondaryDark]] }
H3 A { color:#861 }
H4 A { color:#771 }
H5 A { color:#691 }
P { margin:5px 0px;padding:0px;text-align:justify;text-indent:25px }
.accent { color:#044;font-style:oblique;font-weight:bold } /* Выделение, акцент на слово или на фразу */
.alert { color:red } /* Места, требующие особого внимания */
.ask { font-style:italic;font-weight:bold;margin-bottom:0px;margin-top:10px } /* Абзац вопроса при интервью */
.author { color:#444;font-style:italic;text-align:right } /* Автор публикации */
.intro { color:#444;font-style:italic;text-align:justify } /* Вступление или предисловие к статье */
.remark { color:#800;font-size:.9em;font-style:italic;margin-bottom:6px;margin-top:6px } /* Примечания переводчика или мои */
.source { color:#080;font-style:italic;text-align:right } /* Ссылка на источник публикации */
.trans,
.titled { color:#060;font-style:italic;font-weight:bold } /* Слово, имеющее всплывающую расшифровку */
LI { margin:4px 0px 4px 25px;text-align:justify }
SAMP { color:blue }
CITE { color:#006 }
CODE {}
.viewer PRE { background-color:[[ColorPalette::PreBg]];border:1px solid [[ColorPalette::PreBorder]];margin:6px 4px }
DIV.cite { border:1px solid #666 }
DIV.cite P { color:#004;font-style:italic;margin:4px 25px 4px 25px;text-align:left;text-indent:0px } /* Цитата, взятая из какого-либо источника */
.txtOptionInput { width:11.5em } /* Длина строк ввода (например, имени пользователя) */
.viewer BLOCKQUOTE,
BLOCKQUOTE { border-bottom:1px solid #555;border-top:1px solid #555;border-left:3px solid #555;margin:10px 25px;margin-right:0px;padding:5px 20px;padding-right:0px } /* Цитата HTML */
BLOCKQUOTE P { color:#004;font-size:0.9em;font-style:italic;margin:2px 0px;text-indent:0px }
BLOCKQUOTE LI { font-size:0.9em;font-style:italic;margin:4px 0px;text-align:justify }
DIV.tiddler { padding-top:6px }
DIV.toolbar { margin-top:4px }
DIV.toolbar A { } /* white-space:nowrap */
DIV.topSearch INPUT.txtOptionInput { width:18em } /* Длина строки поиска в заголовке */
DIV.topSearch { position:absolute;right:12px;top:21px } /* Специальный класс для строки поиска в заголовке (используется в PageTemplate */
DIV.topSearch A,
DIV.topSearch A:visited { border:none;color:white }
DIV.topSearch A:hover { color:#FFEE88 }
DIV.topSearch INPUT { margin-left:.5em }
A.tiddlyLink { color:#064;padding-left:1px;padding-right:1px }
A.tiddlyLink:hover { background-color:#064;color:#fff }
DIV.sliderPanel { padding-left:10px }
#sidebarOptions .sliderPanel A.tiddlyLink,
#sidebarOptions .sliderPanel A.tabSelected,
#sidebarOptions .sliderPanel A.tabUnselected { color:#042;padding-left:1px;padding-right:1px }
#sidebarOptions .sliderPanel A.tiddlyLink:hover,
#sidebarOptions .sliderPanel A.tabSelected:hover,
#sidebarOptions .sliderPanel A.tabUnselected:hover { background-color:#042;color:#fff }
#sidebarOptions A { margin-left:0px;margin-right:0px;padding-left:.5em;padding-right:.5em }
.quickEdit A:hover { color:white } /* !!! new for toolbar buttons */
.viewer TABLE { margin:5px 4px }
.viewer TH { background-color:[[ColorPalette::TableHeaderBg]];color:[[ColorPalette::TableHeader]] }
.viewer TH A { color:[[ColorPalette::TableHeaderRef]] }
.viewer TH A:hover { background-color:[[ColorPalette::TableHeaderRef]];color:[[ColorPalette::TableHeaderBg]] }
.viewer TH.th2 { background-color:[[ColorPalette::TableHeader2Bg]];color:[[ColorPalette::TableHeader2]] }
.viewer TH.th3 { background-color:[[ColorPalette::TableHeader3Bg]];color:[[ColorPalette::TableHeader3]] }
.viewer TH.th4 { background-color:[[ColorPalette::TableHeader4Bg]];color:[[ColorPalette::TableHeader4]] }
.viewer TH.th5 { background-color:[[ColorPalette::TableHeader5Bg]];color:[[ColorPalette::TableHeader5]] }
.viewer TH.th2 A { color:[[ColorPalette::TableHeader2Ref]] }
.viewer TH.th3 A { color:[[ColorPalette::TableHeader3Ref]] }
.viewer TH.th4 A { color:[[ColorPalette::TableHeader4Ref]] }
.viewer TH.th5 A { color:[[ColorPalette::TableHeader5Ref]] }
.viewer TH.th2 A:hover { background-color:[[ColorPalette::TableHeader2Ref]];color:[[ColorPalette::TableHeader2Bg]] }
.viewer TH.th3 A:hover { background-color:[[ColorPalette::TableHeader3Ref]];color:[[ColorPalette::TableHeader3Bg]] }
.viewer TH.th4 A:hover { background-color:[[ColorPalette::TableHeader4Ref]];color:[[ColorPalette::TableHeader4Bg]] }
.viewer TH.th5 A:hover { background-color:[[ColorPalette::TableHeader5Ref]];color:[[ColorPalette::TableHeader5Bg]] }
TR.info { height:1% } /* Непустые строки в анкетах. Используется для установления минимально необходимой высоты, чтобы пустая строка заполнила всё пространство при объединении ячеек по строкам */
TD.ask { font-style:normal;text-align:right }
TD.odd,
TR.odd,
TR.oddRow { background-color:#fff } /* В коде TiddlyWiki перепут чётных и нечётных строк */
TD.even, TD.evn,
TR.even, TR.evn,
TR.evenRow { background-color:#EEEEEE }
TD.num { padding:0px 5px;text-align:right } /* Колонка нумерации */
TD.mark { background-color:#afa;text-align:center } /* Выделенная ячейка расписания */
TD.mid, TD.midb { text-align:center } /* Ячейки с выравниванием по центру */
TD.midb { font-weight:bold }
TD.left { padding:1em;text-align:left;text-indent:-1em } /* Ячейки с выравниванием по левому краю и абзацным выступом */
TD.pic,
DIV.pic { border:1px solid #cc4;padding:10px;text-align:center;text-size:.8em;width:150px }
DIV.pic { float:left;margin:0px 10px 10px 0px }
DIV.cite { border:1px solid #666 }
DIV.cite P { color:#004;font-style:italic;margin:4px 25px 4px 25px;text-align:left;text-indent:0px } /* Цитата, взятая из какого-либо источника */
/* Оформление для таблиц назначений контактов в разъёмах */
TABLE.pinLayout { border:0px solid black;border-collapse:collapse }
TABLE.pinLayout TR { border:none }
TD.ld { border:none;font-size:6pt;padding:0px 6px 0px 2px;text-align:right } /* Описание слева */
TD.rd { border:none;font-size:6pt;padding:0px 2px 0px 6px;text-align:left } /* Описание справа */
TD.pin { border:1px solid darkblue;height:10px;width:10px;padding:0px } /* Сам контакт */
TD.sp { border:none } /* пустые места, обрамление разъёма */
/* Переназначение встроенных стилей TiddlyWiki */
.viewer { border-top:1px solid gray;padding-top:5px;text-align:justify }
.viewer TABLE { margin-left:4px;margin-right:4px }
.viewer TH { text-align:center }
.viewer UL,
.viewer OL { margin-left:0px;margin-bottom:.5em;margin-top:.5em;padding-left:0px }
.viewer .listTitle { margin-left:0px }
.headerForeground,
.headerShadow { padding:1em 0em 1em 1em }
.headerShadow { left:2px;top:2px } /* Отступ тени в заголовке */
.siteTitle { font-size:2em }
.siteSubtitle { font-size:1em;font-style:italic;margin-left:.5em;vertical-align:.25em }
#pageFooterLimiter { height:2.3em }
#footerPanel { color:[[ColorPalette::FooterText]];background-color:[[ColorPalette::FooterTop]];border:1px solid [[ColorPalette::FooterBorder]];margin:-2.3em 1em 0px 15.8em;padding:.5em 1em .5em }
#footerPanel DIV { margin:0px;padding:0px }
#footerPanel A { color:[[ColorPalette::FooterRef]];text-decoration:none }
#footerPanel A:hover { background-color:[[ColorPalette::FooterRef]];color:[[ColorPalette::FooterTop]];text-decoration:none }
#footer { float:left;font-size:.9em }
#footerRight { float:right;font-size:.9em }
#displayArea { margin:1em 1em 0 15.8em }
#displayArea A { white-space:nowrap }
#sidebar { float:left;left:0;right:auto;padding-left: 0.5em;padding-right: 0.5em;top:auto;width:16em }
#mainMenu { background-color:#fff;border:1px solid #ccc;margin-left:0px;margin-top:1em;padding:.5em;position:static;text-align:right;width:13.35em } /* 13.5 */
.tiddler { background-color:#fff;border:1px solid #ccc;margin:5px 0;padding:10px;position:auto }
#sidebarOptions .sliderPanel { background-color:#ddd;font-size:1em;margin-left:0px;margin-right:0px }
#sidebarOptions .sliderPanel .tabSelected,
#sidebarOptions .sliderPanel .tabUnselected { border-left:1px solid #aaa;border-right:1px solid #aaa;border-top:1px solid #aaa;font-weight:normal;margin:0px 1px;padding:2px 1px 0px 2px }
.tabUnselected { background-color:#c8c8c8 } /* Заголовок неактивной закладки в боковой панели истории */
#sidebarOptions .sliderPanel A.tiddlyLinkNonExisting { font-weight:normal }
#sidebarOptions .sliderPanel A.tiddlyLinkNonExisting.shadow { font-weight:bold }
#sidebar LI { padding-left:1em;text-align:left;text-indent:-1em }
#sidebar LI.listTitle { padding-left:0px;text-indent:0px }
.tabset { padding-top:.5em }
.tabContents { overflow:hidden }
.tabSetWrapper LI,
.tabContents LI { margin:0px } /* Элементы списка в боковых меню (история, прочее) */
.subtitle { margin-top:4px }
.editor { margin-bottom:2px;margin-top:2px }
.annotation { margin:4px -2px 4px 0px }
.tagging, .tagged { float:right;margin:5px 0px 0px;padding:0 }
.tagging UL,
.tagged UL { margin:0px }
.tagging LI,
.tagged LI { float:left;margin-left:0px;padding-left:.5em;padding-right:.5em }
/*}}}*/
chkAllowLinksFromShadowTiddlers: false
chkDisableNonExistingWikiLinks: true
chkDisableWikiLinks: true
chkInsertTabs: true
chkToggleLinks: false
txtDisableWikiLinksList:
txtDisableWikiLinksTag: excludeWikiWords
/***
|''Name:''|TableHeadersPlugin|
|''Version:''|0.1|
|''Description:''|Plugin turn on supports TABLE TH cells with styles th2, th3, th4... for cells with "!!header text", "!!!header text", "!!!header text" and so on|
|''Описание:''|Модуль включает поддержку заголовков таблицы второго, третьего и прочих уровней добавлением стилей th2, th3, th4 и т.д.|
|''CoreVersion:''|2.6.x|
|''Version comment:''|Tested on v.2.6.2|
|''Date:''|2011|
|''Author:''|vmunt|
|''Source:''|http://vmunt.site/tw|
|''License:''|BSD open source license|
***/
//{{{
for(var n=0; n<config.formatters.length; n++) {
if (config.formatters[n].name=='table') {
config.formatters[n].oldRowHandler = config.formatters[n].rowHandler;
config.formatters[n].rowHandler = function(w,e,prevColumns) {
var col = 0;
var colSpanCount = 1;
var prevCell = null;
this.cellRegExp.lastIndex = w.nextMatch;
var cellMatch = this.cellRegExp.exec(w.source);
while(cellMatch && cellMatch.index == w.nextMatch) {
if(cellMatch[1] == "~") {
// Rowspan
var last = prevColumns[col];
if(last) {
last.rowSpanCount++;
last.element.setAttribute("rowspan",last.rowSpanCount);
last.element.setAttribute("rowSpan",last.rowSpanCount); // Needed for IE
last.element.valign = "center";
if(colSpanCount > 1) {
last.element.setAttribute("colspan",colSpanCount);
last.element.setAttribute("colSpan",colSpanCount); // Needed for IE
colSpanCount = 1;
}
}
w.nextMatch = this.cellRegExp.lastIndex-1;
} else if(cellMatch[1] == ">") {
// Colspan
colSpanCount++;
w.nextMatch = this.cellRegExp.lastIndex-1;
} else if(cellMatch[2]) {
// End of row
if(prevCell && colSpanCount > 1) {
prevCell.setAttribute("colspan",colSpanCount);
prevCell.setAttribute("colSpan",colSpanCount); // Needed for IE
}
w.nextMatch = this.cellRegExp.lastIndex;
break;
} else {
// Cell
w.nextMatch++;
var styles = config.formatterHelpers.inlineCssHelper(w);
var spaceLeft = false;
var chr = w.source.substr(w.nextMatch,1);
while(chr == " ") {
spaceLeft = true;
w.nextMatch++;
chr = w.source.substr(w.nextMatch,1);
}
var cell;
if(chr == "!") {
w.nextMatch++;
// vmunt code: insert TH with thN for !!head, !!!head and so on
var thLevel = 1;
while((chr=w.source.substr(w.nextMatch,1))== "!") {
thLevel++;
w.nextMatch++;
}
if(thLevel==1)
cell = createTiddlyElement(e,"th");
else
cell = createTiddlyElement(e,"th",null,'th'+thLevel);
// vmunt code: end
} else {
cell = createTiddlyElement(e,"td");
}
prevCell = cell;
prevColumns[col] = {rowSpanCount:1,element:cell};
if(colSpanCount > 1) {
cell.setAttribute("colspan",colSpanCount);
cell.setAttribute("colSpan",colSpanCount); // Needed for IE
colSpanCount = 1;
}
config.formatterHelpers.applyCssHelper(cell,styles);
w.subWikifyTerm(cell,this.cellTermRegExp);
if(w.matchText.substr(w.matchText.length-2,1) == " ") // spaceRight
cell.align = spaceLeft ? "center" : "left";
else if(spaceLeft)
cell.align = "right";
w.nextMatch--;
}
col++;
this.cellRegExp.lastIndex = w.nextMatch;
cellMatch = this.cellRegExp.exec(w.source);
}
}
}
break;
}
//}}}
/***
|''Name:''|TiddlyWiki:rus|
|''Version:''|0.9.7|
|''Description:''|TiddlyWiki russian interface plugin. Supports core up to 2.6.2|
|''Описание:''|Русификация TiddlyWiki. Поддерживает ядро до 2.6.2 включительно|
|''CoreVersion:''|2.6.x|
|''Version comment:''|Tested on v.2.6.0 and 2.6.1|
|''Date:''|2010|
|''Author:''|vmunt|
|''Source:''|http://vmunt.site/tw|
|''License:''|BSD open source license|
|''Idea:''|Глеб Тржемецкий (Gleb Trzhemetski), http://www.glebsite.ru|
***/
//{{{
//-- Строки для перевода
// Строки в "двойных кавычках" должны быть переведены; строки в 'одиночных кавычках' должны быть оставлены как есть
merge(config.tasks,{
save: {text: "сохранить", tooltip: "Сохранить Ваши изменения в эту TiddlyWiki", action: saveChanges},
sync: {text: "синхронизация", tooltip: "Синхронизировать изменения с другим файлом или сервером TiddlyWiki", content: '<<sync>>'},
importTask: {text: "импорт", tooltip: "Импортировать заметки и модули из другого файла или сервера TiddlyWiki", content: '<<importTiddlers>>'},
tweak: {text: "настройка", tooltip: "Подстроить появление и поведение TiddlyWiki", content: '<<options>>'},
upgrade: {text: "обновление", tooltip: "Обновить код ядра TiddlyWiki", content: '<<upgrade>>'},
plugins: {text: "модули", tooltip: "Управление встроенными модулями", content: '<<plugins>>'} });
// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
txtUserName: "Имя пользователя для подписывания Ваших правок",
chkRegExpSearch: "Разрешить регулярные выражения при поиске",
chkCaseSensitiveSearch: "Регистро-зависимый поиск",
chkIncrementalSearch: "Последовательный поиск слово-за-словом",
chkAnimate: "Разрешить анимацию",
chkSaveBackups: "Сохранить старую копию при сохранении изменений",
chkAutoSave: "Автоматическое сохранение изменений",
chkGenerateAnRssFeed: "Генерировать RSS-ленту при сохранении изменений",
chkSaveEmptyTemplate: "Генерировать пустой шаблон при сохранении изменений",
chkOpenInNewWindow: "Открывать внешние ссылки в новом окне",
chkToggleLinks: "Нажатие на ссылках для открытия заметок также и закрывает их",
chkHttpReadOnly: "Скрывать возможности редактирования при обращении через протокол HTTP",
chkForceMinorUpdate: "Не обновлять автора изменений и дату редактирования заметок",
chkConfirmDelete: "Спрашивать подтверждение при удалении заметок",
chkInsertTabs: "Использовать клавишу табуляции для вставления символа табуляции вместо перехода по полям",
txtBackupFolder: "Имя папки для резервных копий",
txtMaxEditRows: "Максимальное количество строк в окне редактирования",
txtTheme: "Имя темы для использования",
txtFileSystemCharSet: "Кодировка символов в файле TiddlyWiki для сохранения изменений (только для Firefox/Mozilla)" });
merge(config.messages,{
customConfigError: "Не удалось загрузить модуль. Подробнее смотрите в PluginManager",
pluginError: "Ошибка: %0",
pluginDisabled: "Не выполнено в связи с запретом, установленным меткой 'systemConfigDisable'",
pluginForced: "Executed because forced via 'systemConfigForce' tag",
pluginVersionError: "Не выполнено, так как этот модуль сделан для более новой версии TiddlyWiki",
nothingSelected: "Ничего не выбрано. Вы должны сначала выбрать один или несколько элементов",
savedSnapshotError: "Похоже, что эта TiddlyWiki была сохранена с ошибкой. Обратитесь к http://www.tiddlywiki.com/#Download за более детальной информацией",
subtitleUnknown: "(неизвестно)",
undefinedTiddlerToolTip: "Заметка '%0' пока не создана",
shadowedTiddlerToolTip: "Заметка '%0' пока не создана, но она имеет предопределённое служебное значение",
tiddlerLinkTooltip: "%0 - %1, %2",
externalLinkTooltip: "Внешняя ссылка на %0",
noTags: "Нет помеченных заметок",
notFileUrlError: "Вам нужно сначала сохранить эту TiddlyWiki в файл, прежде чем Вы сможете сохранять изменения",
cantSaveError: "Сохранить изменения невозможно. Возможные причины включают:\n- Ваша программа просмотра не поддерживает сохранение (Firefox, Internet Explorer, Safari и Opera все работают, но только тогда, когда правильно настроены)\n- путь к файлу TiddlyWiki содержит запрещённые символы\n- файл TiddlyWiki был перемещён, удалён или переименован",
invalidFileError: "Исходный файл '%0' не похож на правильную TiddlyWiki",
backupSaved: "Архивная копия сохранена",
backupFailed: "Не удалось сохранить архивную копию",
rssSaved: "RSS-лента сохранена",
rssFailed: "Не удалось сохранить файл с RSS-лентой",
emptySaved: "Пустой шаблон сохранён",
emptyFailed: "Не удалось сохранить файл с пустым шаблоном",
mainSaved: "Главный файл TiddlyWiki сохранён",
mainFailed: "Не удалось сохранить главный файл TiddlyWiki. Ваши изменения не сохранены",
macroError: "Ошибка в макросе <<\%0>>",
macroErrorDetails: "Ошибка при выполнении макроса <<\%0>>:\n%1",
missingMacro: "Нет такого макроса",
overwriteWarning: "Заметка с именем '%0' уже существует. Нажмите OK для перезаписи её содержимого",
unsavedChangesWarning: "ВНИМАНИЕ! В TiddlyWiki есть несохранённые изменения\n\nНажмите OK для сохранения\nНажмите CANCEL, если изменения не нужны",
confirmExit: "--------------------------------\n\nВ TiddlyWiki есть несохранённые изменения. Если Вы продолжите, Вы потеряете эти изменения\n\n--------------------------------",
saveInstructions: "SaveChanges",
unsupportedTWFormat: "Неподдерживаемый формат TiddlyWiki '%0'",
tiddlerSaveError: "Ошибка при сохранении заметки '%0'",
tiddlerLoadError: "Ошибка при загрузке заметки '%0'",
wrongSaveFormat: "Не могу сохранить с форматом хранения '%0'. Используйте стандартный формат для сохранения.",
invalidFieldName: "Неверное имя поля %0",
fieldCannotBeChanged: "Поле '%0' не может быть изменено",
loadingMissingTiddler: "Пытаюсь восстановить заметку '%0' с сервера '%1' по адресу:\n\n'%2' в 'рабочем пространстве' '%3'",
upgradeDone: "Обновление до версии %0 завершено\n\nНажмите 'OK' для перезагрузки новой обновлённой TiddlyWiki",
invalidCookie: "Испорченная cookie-переменная '%0'"}); // v.2.6.1
merge(config.messages.messageClose,{text: "[X]", tooltip: "закрыть эту область сообщения"});
config.messages.backstage = {
open: {text: "обслуживание", tooltip: "Откройте меню обслуживания для проведения сервисных задач"},
close: {text: "закрыть", tooltip: "Закрытие меню обслуживания"},
prompt: "Ослуживание: ",
decal: {edit: {text: "правка", tooltip: "Правка заметки '%0'"}}};
config.messages.listView = {
tiddlerTooltip: "Щёлкните тут для просмотра полного текста этой заметки",
previewUnavailable: "(предварительный просмотр недоступен)"};
config.messages.dates.months = ["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"];
config.messages.dates.days = ["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"];
config.messages.dates.shortMonths = ["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"];
config.messages.dates.shortDays = ["Вс","Пн","Вт","Ср","Чт","Пт","Сб"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = [
"-е","-е","-е","-е","-е","-е","-е","-е","-е","-е",
"-е","-е","-е","-е","-е","-е","-е","-е","-е","-е",
"-е","-е","-е","-е","-е","-е","-е","-е","-е","-е",
"-е"];
config.messages.dates.am = "утра";
config.messages.dates.pm = "дня";
merge(config.views.wikified.tag,{
labelNoTags: "меток нет",
labelTags: "метки: ",
openTag: "Открыть метку '%0'",
tooltip: "Показать заметки, помеченные как '%0'",
openAllText: "Открыть всё",
openAllTooltip: "Открыть все эти заметки",
popupNone: "Нет других заметок, помеченных '%0'"});
merge(config.views.wikified,{
defaultText: "Заметка '%0' пока не создана. Создайте её двойным щелчком мышки",
defaultModifier: "(отсутствует)",
shadowModifier: "(встроенная служебная заметка)",
dateFormat: "DD.0MM.YYYY",
createdPrompt: "создана"});
merge(config.views.editor,{
tagPrompt: "Введите метки, разделённые пробелами, в случае необходимости [[используйте двойные квадратные скобки|use double square brackets]], или добавьте существующие метки",
defaultText: "Введите текст для '%0'"});
merge(config.views.editor.tagChooser,{
text: "метки",
tooltip: "Выберите существующую метку для добавления к этой заметке",
popupNone: "Нет ни одной метки",
tagTooltip: "Добавьте метку для '%0'"});
merge(config.messages,{
sizeTemplates: [
{unit: 1024*1024*1024, template: "%0\u00a0 Gb"},
{unit: 1024*1024, template: "%0\u00a0 Mb"},
{unit: 1024, template: "%0\u00a0 Kb"},
{unit: 1, template: "%0\u00a0 b"}]});
merge(config.macros.search,{
label: "поиск",
prompt: "Поиск в этой TiddlyWiki",
accessKey: "F",
successMsg: "Найдено %0 заметок с текстом %1",
failureMsg: "Нет ни одной заметки с текстом %0"});
merge(config.macros.tagging,{
label: "метки: ",
labelNotTag: "(нет меток)",
tooltip: "Список заметок, помеченных как '%0'"});
merge(config.macros.timeline,{
dateFormat: "DD.0MM.YYYY"});
merge(config.macros.allTags,{
tooltip: "Показать заметки, помеченные как '%0'",
noTags: "Нет ни одной помеченной заметки"});
config.macros.list.all.prompt = "Все заметки в алфавитном порядке";
config.macros.list.missing.prompt = "Отсутствующие заметки, на которые при этом есть ссылки с других заметок";
config.macros.list.orphans.prompt = "Заметки, на которые нет ни одной ссылки из других заметок";
config.macros.list.shadowed.prompt = "Служебные заметки";
config.macros.list.touched.prompt = "Заметки, которые были изменены";
merge(config.macros.closeAll,{
label: "закрыть всё",
prompt: "Закрыть все отображённые заметки (за исключением заметок в состоянии правки)"});
merge(config.macros.permaview,{
label: "прямая ссылка",
prompt: "Создание адресной строки для открытия TiddlyWiki с текущими открытыми заметками"});
merge(config.macros.saveChanges,{
label: "сохранить",
prompt: "Сохранение TiddlyWiki со всеми заметками",
accessKey: "S"});
merge(config.macros.newTiddler,{
label: "новая заметка",
prompt: "Создать новую заметку",
title: "Новая заметка",
accessKey: "N"});
merge(config.macros.newJournal,{
label: "новая запись",
prompt: "Создать новую заметку с текущей датой и временем",
accessKey: "J"});
merge(config.macros.options,{
wizardTitle: "Расширенные пункты настройки",
step1Title: "Эти настройки Ваша программа просмотра сохраняет с помощью cookies",
step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Показать настройки без описания</input>",
unknownDescription: "//(unknown)//",
listViewTemplate: {
columns: [
{name: 'Option', field: 'option', title: "Возможности", type: 'String'},
{name: 'Description', field: 'description', title: "Описание", type: 'WikiText'},
{name: 'Name', field: 'name', title: "Имя", type: 'String'}],
rowClasses: [{className: 'lowlight', field: 'lowlight'} ]}
});
merge(config.macros.plugins,{
wizardTitle: "Управление модулями",
step1Title: "Подключенные модули",
step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
skippedText: "(Этот модуль не выполняется, так как после его добавления ещё не было перезапуска TiddlyWiki)",
noPluginText: "Нет установленных модулей",
confirmDeleteText: "Вы уверены, что хотите удалить эти модули:\n\n%0",
removeLabel: "удалить метку systemConfig",
removePrompt: "Удалить метку systemConfig",
deleteLabel: "удалить",
deletePrompt: "Удалить эту заметку навсегда",
listViewTemplate: {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Tiddler', field: 'tiddler', title: "Заметка", type: 'Tiddler'},
{name: 'Description', field: 'Description', title: "Описание", type: 'String'},
{name: 'Version', field: 'Version', title: "Версия", type: 'String'},
{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Размер", type: 'Size'},
{name: 'Forced', field: 'forced', title: "Forced", tag: 'systemConfigForce', type: 'TagCheckbox'},
{name: 'Disabled', field: 'disabled', title: "Запрещён", tag: 'systemConfigDisable', type: 'TagCheckbox'},
{name: 'Executed', field: 'executed', title: "Загружен", type: 'Boolean', trueText: "Да", falseText: "Нет"},
{name: 'Startup Time', field: 'startupTime', title: "Стартовый", type: 'String'},
{name: 'Error', field: 'error', title: "Состояние", type: 'Boolean', trueText: "Ошибка", falseText: "Норма"},
{name: 'Log', field: 'log', title: "Протокол", type: 'StringList'} ],
rowClasses: [
{className: 'error', field: 'error'},
{className: 'warning', field: 'warning'} ]},
listViewTemplateReadOnly: {
columns: [
{name: 'Tiddler', field: 'tiddler', title: "Заметка", type: 'Tiddler'},
{name: 'Description', field: 'Description', title: "Описание", type: 'String'},
{name: 'Version', field: 'Version', title: "Версия", type: 'String'},
{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Размер", type: 'Size'},
{name: 'Executed', field: 'executed', title: "Загружен", type: 'Boolean', trueText: "Да", falseText: "Нет"},
{name: 'Startup Time', field: 'startupTime', title: "Стартовый", type: 'String'},
{name: 'Error', field: 'error', title: "Состояние", type: 'Boolean', trueText: "Ошибка", falseText: "Норма"},
{name: 'Log', field: 'log', title: "Log", type: 'StringList'}
],
rowClasses: [
{className: 'error', field: 'error'},
{className: 'warning', field: 'warning'}
]}
});
merge(config.macros.toolbar,{
moreLabel: "ещё",
morePrompt: "Показать дополнительные команды",
lessLabel: "кратко",
lessPrompt: "Скрыть дополнительные команды",
separator: "|" });
merge(config.macros.refreshDisplay,{
label: "обновить",
prompt: "Обновить отображение TiddlyWiki" });
merge(config.macros.importTiddlers,{
readOnlyWarning: "Вы не можете добавлять что-либо в открытую только для чтения TiddlyWiki. Попробуйте открыть её как файл (через обращение file://)",
wizardTitle: "Импорт заметок из другого файла или сервера",
step1Title: "Шаг 1: Найдите сервер или файл TiddlyWiki",
step1Html: "Укажите тип сервера: <select name='selTypes'><option value=''>Выберите...</option></select><br>введите адрес или путь к файлу тут: <input type='text' size=50 name='txtPath'><br>...или найдите файл: <input type='file' size=50 name='txtBrowse'><br><hr>...или выберите заготовку: <select name='selFeeds'><option value=''>Выберите...</option></select>",
openLabel: "открыть",
openPrompt: "Подключиться к этому файлу или серверу",
openError: "Возникли проблемы с получением файла TiddlyWiki", // v.2.6.0, removed in v.2.6.1
statusOpenHost: "Открытие узла",
statusGetWorkspaceList: "Получение списка доступных рабочих областей",
step2Title: "Шаг 2: Выберите рабочую область",
step2Html: "Введите имя рабочей области: <input type='text' size=50 name='txtWorkspace'><br>...или выберите рабочую область: <select name='selWorkspace'><option value=''>Выберите...</option></select>",
cancelLabel: "отмена",
cancelPrompt: "Отмена этого импорта",
statusOpenWorkspace: "Открытие рабочего пространства",
statusGetTiddlerList: "Получение списка разрешённых заметок",
errorGettingTiddlerList: "Ошибка при получении списка заметок, нажмите Отмену и попробуйте снова",
step3Title: "Шаг 3: Выберите импортируемые заметки",
step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Оставить эти заметки связанными с этим сервером для облегчения последующих синхронизаций</input><br><input type='checkbox' name='chkSave'>Сохранить параметры этого сервера в заметке с названием 'systemServer':</input> <input type='text' size=25 name='txtSaveTiddler'>",
importLabel: "импорт",
importPrompt: "Импортировать эти заметки",
confirmOverwriteText: "Вы действительно хотите заменить эти заметки:\n\n%0",
step4Title: "Шаг 4: Импортируется заметок: %0",
step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
doneLabel: "завершить",
donePrompt: "Закрыть этот мастер-диалог",
statusDoingImport: "Импортирование заметок",
statusDoneImport: "Все заметки импортированы",
systemServerNamePattern: "%2 из %1",
systemServerNamePatternNoWorkspace: "%1",
confirmOverwriteSaveTiddler: "Заметка '%0' уже существует. Нажмите 'OK' для замены её на заметку с указанного сервера, или нажмите 'Cancel' для оставления её неизменной",
serverSaveTemplate: "|''Введите:''|%0|\n|''Адрес:''|%1|\n|''Рабочее пространство:''|%2|\n\nЭта заметка будет автоматически создана для записи параметров этого сервера",
serverSaveModifier: "(System)",
listViewTemplate: {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Tiddler', field: 'tiddler', title: "Заметка", type: 'Tiddler'},
{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Размер", type: 'Size'},
{name: 'Tags', field: 'tags', title: "Метки", type: 'Tags'} ],
rowClasses: []
} });
merge(config.macros.upgrade,{
wizardTitle: "Обновление кода ядра TiddlyWiki",
step1Title: "Обновление или восстановление этой TiddlyWiki до последней версии",
step1Html: "Вы готовы обновить код ядра TiddlyWiki до последней версии (с адреса <a href='%0' class='externalLink' target='_blank'>%1</a>). Информационное наполнение этого файла будет сохранено.<br><br>Заметьте, что обновление кода ядра может вызвать конфликт с уже подключенными старыми модулями. Если у Вас появились проблемы с обновлённым файлом, почитайте здесь: <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
errorCantUpgrade: "Не могу обновить эту TiddlyWiki. Вы можете производить обновление TiddlyWiki-файлов, сохранённых только локально",
errorNotSaved: "Вы должны сохранить изменения, прежде чем производить обновление",
step2Title: "Подтвердите параметры обновления",
step2Html_downgrade: "У Вас получается ухудшение версии файла TiddlyWiki с версии %1 до версии %0.<br><br>Замена версии кода ядра на более раннюю не рекомендуется",
step2Html_restore: "Похоже, что эта TiddlyWiki уже использует последнюю версию кода ядра (%0).<br><br>Вы можете продолжить замену кода ядра в любом случае для того, чтобы быть уверенными, что код ядра не повреждён и не испорчен",
step2Html_upgrade: "Вы готовы обновить версию TiddlyWiki с %1 до %0?",
upgradeLabel: "обновление",
upgradePrompt: "Приготовьтесь к процессу обновления",
statusPreparingBackup: "Делается резервная копия",
statusSavingBackup: "Сохраняется резервная копия",
errorSavingBackup: "Возникла проблема с сохранением файла резервной копии",
statusLoadingCore: "Загрузка кода ядра",
errorLoadingCore: "Ошибка при загрузке кода ядра",
errorCoreFormat: "Ошибка в новом коде ядра",
statusSavingCore: "Сохранение нового кода ядра",
statusReloadingCore: "Повторная загрузка нового кода ядра",
startLabel: "пуск",
startPrompt: "Запуск процесса обновления",
cancelLabel: "отмена",
cancelPrompt: "Отмена процесса обновления",
step3Title: "Процесс обновления прерван",
step3Html: "Вы отменили процесс обновления TiddlyWiki"
});
merge(config.macros.sync,{
listViewTemplate: {
columns: [
{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
{name: 'Tiddler', field: 'tiddler', title: "Заметка", type: 'Tiddler'},
{name: 'Server Type', field: 'serverType', title: "Тип сервера", type: 'String'},
{name: 'Server Host', field: 'serverHost', title: "Хранилище сервера (host)", type: 'String'},
{name: 'Server Workspace', field: 'serverWorkspace', title: "Рабочее пространство сервера", type: 'String'},
{name: 'Status', field: 'status', title: "Состояние синхронизации", type: 'String'},
{name: 'Server URL', field: 'serverUrl', title: "Адресная строка", text: "View", type: 'Link'} ],
rowClasses: [],
buttons: [{caption: "Синхронизировать эти заметки", name: 'sync'}] },
wizardTitle: "Синхронизировать с внешним сервером или файлом",
step1Title: "Выберите заметки, которые Вы хотите синхронизировать",
step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
syncLabel: "синхронизация",
syncPrompt: "Синхронизировать эти заметки",
hasChanged: "Изменены с момента последней синхронизации",
hasNotChanged: "Нет изменений с момента последней синхронизации",
syncStatusList: {
none: {text: "...", display:'none', className:'notChanged'},
changedServer: {text: "Изменены на сервере", display:null, className:'changedServer'},
changedLocally: {text: "Изменены локально", display:null, className:'changedLocally'},
changedBoth: {text: "Изменены в обоих местах сразу", display:null, className:'changedBoth'},
notFound: {text: "Отсутствует на сервере", display:null, className:'notFound'},
putToServer: {text: "Обновление сохранено на сервер", display:null, className:'putToServer'},
gotFromServer: {text: "Обновления получены с сервера", display:null, className:'gotFromServer'} } });
merge(config.macros.annotations,{});
merge(config.commands.closeTiddler,{
text: "закрыть",
tooltip: "Закрыть эту заметку"});
merge(config.commands.closeOthers,{
text: "закрыть другие",
tooltip: "Закрыть все другие заметки"});
merge(config.commands.editTiddler,{
text: "правка",
tooltip: "Исправить эту заметку",
readOnlyText: "просмотр",
readOnlyTooltip: "Просмотр исходного текста этой заметки"});
merge(config.commands.saveTiddler,{
text: "сохранить",
tooltip: "Сохранить изменения этой заметки"});
merge(config.commands.cancelTiddler,{
text: "отмена",
tooltip: "Отменить изменение этой заметки",
warning: "Вы действительно уверены, что Вы хотите потерять все Ваши изменения заметки '%0'?",
readOnlyText: "возврат",
readOnlyTooltip: "Просмотр этой заметки в нормальном режиме"});
merge(config.commands.deleteTiddler,{
text: "удалить",
tooltip: "Удалить эту заметку",
warning: "Вы уверены, что хотите удалить '%0'?"});
merge(config.commands.permalink,{
text: "прямая ссылка",
tooltip: "Адресная строка для этой заметки"});
merge(config.commands.references,{
text: "ссылки",
tooltip: "Показать все заметки, которые ссылаются на эту заметку",
popupNone: "Нет ссылок"});
merge(config.commands.jump,{
text: "переход",
tooltip: "Переход на другую открытую заметку"});
merge(config.commands.syncing,{
text: "синхронизация",
tooltip: "Управление синхронизацией этой заметки с сервером или внешним файлом",
currentlySyncing: "<div>Синхронизирую с помощью <span class='popupHighlight'>'%0'</span> с:</"+"div><div>хранилищем: <span class='popupHighlight'>%1</span></"+"div><div>рабочее пространство: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
notCurrentlySyncing: "Пока не синхронизировано",
captionUnSync: "Остановить синхронизацию этой заметки",
chooseServer: "Привести в соответствие эту заметку с другим сервером:",
currServerMarker: "\u25cf ",
notCurrServerMarker: " "});
merge(config.commands.fields,{
text: "поля",
tooltip: "Отображение расширенных параметров этой заметки",
emptyText: "У этой заметки нет расширенных параметров",
listViewTemplate: {
columns: [
{name: 'Field', field: 'field', title: "Поле", type: 'String'},
{name: 'Value', field: 'value', title: "Значение", type: 'String'} ],
rowClasses: [],
buttons: [] } });
merge(config.shadowTiddlers,{
DefaultTiddlers: "[[GettingStarted]]",
MainMenu: "[[GettingStarted]]",
SiteTitle: "Моя TiddlyWiki",
SiteSubtitle: "гипертекстовая записная книжка",
SiteUrl: "",
SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD.0MM.YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "настройки \u00bb" "Изменение настроек TiddlyWiki">>',
SideBarTabs: '<<tabs txtMainTab "история" "История" TabTimeline "все" "Все заметки" TabAll "метки" "Все метки" TabTags "ещё" "Другие списки" TabMore>>',
TabMore: '<<tabs txtMoreTab "нет" "Отсутствующие заметки" TabMoreMissing "потери" "Потерянные заметки" TabMoreOrphans "служебные" "Служебные заметки" TabMoreShadowed>>' });
merge(config.annotations,{
AdvancedOptions: "Эта служебная заметка обеспечивает доступ к некоторым дополнительным настройкам",
ColorPalette: "Значения из этой служебной заметки определяют цветовую схему пользовательского интерфейса TiddlyWiki",
DefaultTiddlers: "Заметки, перечисленные в этой служебной заметке, будут автоматически открываться при каждом запуске TiddlyWiki",
EditTemplate: "Шаблон HTML в этой служебной заметке определяет, как заметки будут выглядеть, пока они редактируются",
GettingStarted: "Эта служебная заметка содержит инструкции по начальному использованию",
ImportTiddlers: "Эта служебная заметка обеспечивает доступ к импортированным заметкам",
MainMenu: "Эта служебная заметка используется для хранения содержимого главного меню (//обычно отображается в левой колонке экрана//)",
MarkupPreHead: "Эта заметка вставляется в начало раздела <head> этого HTML-файла c TiddlyWiki",
MarkupPostHead: "Эта заметка вставляется в конец раздела <head> этого HTML-файла c TiddlyWiki",
MarkupPreBody: "Эта заметка вставляется в начало раздела <body> этого HTML-файла c TiddlyWiki",
MarkupPostBody: "Эта заметка вставляется в конец раздела <body> этого HTML-файла с TiddlyWiki сразу же после блока кода",
OptionsPanel: "Эта служебная заметка используется для хранения скрываемой панели Настроек, расположенной на боковой панели",
PageTemplate: "HTML-шаблон в этой служебной заметке определяет общий вид TiddlyWiki",
PluginManager: "Эта служебная заметка обеспечивает доступ к управлению модулями",
SideBarOptions: "Эта служебная заметка используется для хранения панели поиска и настроек на боковой панели",
SideBarTabs: "Эта служебная заметка содержит начинку панели со списком служебных заметок на боковой панели",
SiteSubtitle: "Эта служебная заметка содержит вторую часть заголовка страницы",
SiteTitle: "Эта служебная заметка содержит первую часть заголовка страницы",
SiteUrl: "В эту служебную заметку должен быть занесён полный URL публикации этой TiddlyWiki",
StyleSheetColors: "Эта служебная заметка содержит CSS-описания, относящиеся к цветам элементов страницы. ''НЕ ИЗМЕНЯЙТЕ ЭТУ ЗАМЕТКУ''. Все изменения делайте в служебной заметке StyleSheet",
StyleSheet: "Эта заметка может содержать Ваши определения и изменения стилей CSS",
StyleSheetLayout: "Эта служебная заметка содержит СSS-описания, относящиеся к расположению элементов страниц.''НЕ ИЗМЕНЯЙТЕ ЭТУ ЗАМЕТКУ''. Все изменения делайте в служебной заметке StyleSheet",
StyleSheetLocale: "Эта служебная заметка содержит CSS-описания, относящиеся к переводу на местный язык",
StyleSheetPrint: "Эта служебная заметка содержит CSS-описания для печати",
SystemSettings: "Эта заметка используется для хранения параметров настройки этой TiddlyWiki",
TabAll: "Эта служебная заметка содержит начинку закладки 'Все' на боковой панели",
TabMore: "Эта служебная заметка содержит начинку закладки 'Ещё' на боковой панели",
TabMoreMissing: "Эта служебная заметка содержит начинку закладки 'Нет' на боковой панели",
TabMoreOrphans: "Эта служебная заметка содержит начинку закладки 'Потери' на боковой панели",
TabMoreShadowed: "Эта служебная заметка содержит начинку закладки 'Служебные' на боковой панели",
TabTags: "Эта служебная заметка содержит начинку закладки 'Метки' на боковой панели",
TabTimeline: "Эта служебная заметка содержит начинку закладки 'История' на боковой панели",
ToolbarCommands: "Эта служебная заметка определяет, какие команды будут показываться в меню заметки",
ViewTemplate: "HTML-шаблон в этой сервисной заметке определяет, как будет выглядеть заметка",
WindowTitle: "Эта служебная заметка содержит полный вид заголовка страницы" });
//}}}
|~ViewToolbar|closeTiddler closeOthers +editTiddler > fields syncing permalink references jump <|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
<!--{{{-->
<table width=100%>
<tr><td valign=top>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
</td>
<td valign=top>
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='tagClear'></div>
</td></tr>
</table>
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->
<!--{{{-->
<span class='yourSearchNumber' macro='foundTiddler number'></span>
<span class='yourSearchTitle' macro='foundTiddler title'/></span> -
<span macro='foundTiddler field includeURL'/></span> -
<span class='yourSearchTags' macro='foundTiddler field tags 50'/></span>
<span macro="yourSearch if previewText"><div class='yourSearchText' macro='foundTiddler field text 250'/></div></span>
<!--}}}-->
/***
|''Name:''|YourSearchPlugin|
|''Version:''|2.1.5 (2010-02-16)|
|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|© 2005-2010 [[abego Software|http://www.abego-software.de]]|
|''~CoreVersion:''|2.1.0|
|''Community:''|[[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23YourSearchPlugin]]|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; ~InternetExplorer 6.0|
!About YourSearch
YourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!
For more information see [[Help|YourSearch Help]].
!Compatibility
This plugin requires TiddlyWiki 2.1.
Check the [[archive|http://tiddlywiki.abego-software.de/archive]] for ~YourSearchPlugins supporting older versions of TiddlyWiki.
!Source Code
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/Plugin-YourSearch-src.2.1.5.js]] to get the readable source code.
***/
///%
if(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:1,revision:5,source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin",licence:"[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",copyright:"Copyright (c) abego Software GmbH, 2005-2010 (www.abego-software.de)"};if(!window.abego){window.abego={};}if(!Array.forEach){Array.forEach=function(_1,_2,_3){for(var i=0,_4=_1.length;i<_4;i++){_2.call(_3,_1[i],i,_1);}};Array.prototype.forEach=function(_5,_6){for(var i=0,_7=this.length;i<_7;i++){_5.call(_6,this[i],i,this);}};}abego.toInt=function(s,_8){if(!s){return _8;}var n=parseInt(s);return (n==NaN)?_8:n;};abego.createEllipsis=function(_9){var e=createTiddlyElement(_9,"span");e.innerHTML="…";};abego.shallowCopy=function(_a){if(!_a){return _a;}var _b={};for(var n in _a){_b[n]=_a[n];}return _b;};abego.copyOptions=function(_c){return !_c?{}:abego.shallowCopy(_c);};abego.countStrings=function(_d,s){if(!s){return 0;}var _e=s.length;var n=0;var _f=0;while(1){var i=_d.indexOf(s,_f);if(i<0){return n;}n++;_f=i+_e;}return n;};abego.getBracedText=function(_10,_11,_12){if(!_11){_11=0;}var re=/\{([^\}]*)\}/gm;re.lastIndex=_11;var m=re.exec(_10);if(m){var s=m[1];var _13=abego.countStrings(s,"{");if(!_13){if(_12){_12.lastIndex=re.lastIndex;}return s;}var len=_10.length;for(var i=re.lastIndex;i<len&&_13;i++){var c=_10.charAt(i);if(c=="{"){_13++;}else{if(c=="}"){_13--;}}}if(!_13){if(_12){_12.lastIndex=i-1;}return _10.substring(m.index+1,i-1);}}};abego.select=function(_14,_15,_16,_17){if(!_17){_17=[];}_14.forEach(function(t){if(_15.call(_16,t)){_17.push(t);}});return _17;};abego.consumeEvent=function(e){if(e.stopPropagation){e.stopPropagation();}if(e.preventDefault){e.preventDefault();}e.cancelBubble=true;e.returnValue=true;};abego.TiddlerFilterTerm=function(_18,_19){if(!_19){_19={};}var _1a=_18;if(!_19.textIsRegExp){_1a=_18.escapeRegExp();if(_19.fullWordMatch){_1a="\\b"+_1a+"\\b";}}var _1b=new RegExp(_1a,"m"+(_19.caseSensitive?"":"i"));this.tester=new abego.MultiFieldRegExpTester(_1b,_19.fields,_19.withExtendedFields);};abego.TiddlerFilterTerm.prototype.test=function(_1c){return this.tester.test(_1c);};abego.parseNewTiddlerCommandLine=function(s){var m=/(.*?)\.(?:\s+|$)([^#]*)(#.*)?/.exec(s);if(!m){m=/([^#]*)()(#.*)?/.exec(s);}if(m){var r;if(m[3]){var s2=m[3].replace(/#/g,"");r=s2.parseParams("tag");}else{r=[[]];}var _1d=m[2]?m[2].trim():"";r.push({name:"text",value:_1d});r[0].text=[_1d];return {title:m[1].trim(),params:r};}else{return {title:s.trim(),params:[[]]};}};abego.parseTiddlerFilterTerm=function(_1e,_1f,_20){var re=/\s*(?:(?:\{([^\}]*)\})|(?:(=)|([#%!])|(?:(\w+)\s*\:(?!\/\/))|(?:(?:("(?:(?:\\")|[^"])+")|(?:\/((?:(?:\\\/)|[^\/])+)\/)|(\w+\:\/\/[^\s]+)|([^\s\)\-\"]+)))))/mg;var _21={"!":"title","%":"text","#":"tags"};var _22={};var _23;re.lastIndex=_1f;while(1){var i=re.lastIndex;var m=re.exec(_1e);if(!m||m.index!=i){throw "Word or String literal expected";}if(m[1]){var _24={};var _25=abego.getBracedText(_1e,0,_24);if(!_25){throw "Invalid {...} syntax";}var f=Function("tiddler","return ("+_25+");");return {func:f,lastIndex:_24.lastIndex,markRE:null};}if(m[2]){_23=true;}else{if(m[3]){_22[_21[m[3]]]=1;}else{if(m[4]){_22[m[4]]=1;}else{var _26=m[6];var _27=m[5]?window.eval(m[5]):m[6]?m[6]:m[7]?m[7]:m[8];var _20=abego.copyOptions(_20);_20.fullWordMatch=_23;_20.textIsRegExp=_26;var _28=[];for(var n in _22){_28.push(n);}if(_28.length==0){_20.fields=_20.defaultFields;}else{_20.fields=_28;_20.withExtendedFields=false;}var _29=new abego.TiddlerFilterTerm(_27,_20);var _2a=_26?_27:_27.escapeRegExp();if(_2a&&_23){_2a="\\b"+_2a+"\\b";}return {func:function(_2b){return _29.test(_2b);},lastIndex:re.lastIndex,markRE:_2a?"(?:"+_2a+")":null};}}}}};abego.BoolExp=function(s,_2c,_2d){this.s=s;var _2e=_2d&&_2d.defaultOperationIs_OR;var _2f=/\s*(?:(\-|not)|(\())/gi;var _30=/\s*\)/g;var _31=/\s*(?:(and|\&\&)|(or|\|\|))/gi;var _32=/\s*[^\)\s]/g;var _33=/\s*(\-|not)?(\s*\()?/gi;var _34;var _35=function(_36){_33.lastIndex=_36;var m=_33.exec(s);var _37;var _38;if(m&&m.index==_36){_36+=m[0].length;_37=m[1];if(m[2]){var e=_34(_36);_30.lastIndex=e.lastIndex;if(!_30.exec(s)){throw "Missing ')'";}_38={func:e.func,lastIndex:_30.lastIndex,markRE:e.markRE};}}if(!_38){_38=_2c(s,_36,_2d);}if(_37){_38.func=(function(f){return function(_39){return !f(_39);};})(_38.func);_38.markRE=null;}return _38;};_34=function(_3a){var _3b=_35(_3a);while(1){var l=_3b.lastIndex;_31.lastIndex=l;var m=_31.exec(s);var _3c;var _3d;if(m&&m.index==l){_3c=!m[1];_3d=_35(_31.lastIndex);}else{try{_3d=_35(l);}catch(e){return _3b;}_3c=_2e;}_3b.func=(function(_3e,_3f,_40){return _40?function(_41){return _3e(_41)||_3f(_41);}:function(_42){return _3e(_42)&&_3f(_42);};})(_3b.func,_3d.func,_3c);_3b.lastIndex=_3d.lastIndex;if(!_3b.markRE){_3b.markRE=_3d.markRE;}else{if(_3d.markRE){_3b.markRE=_3b.markRE+"|"+_3d.markRE;}}}};var _43=_34(0);this.evalFunc=_43.func;if(_43.markRE){this.markRegExp=new RegExp(_43.markRE,_2d.caseSensitive?"mg":"img");}};abego.BoolExp.prototype.exec=function(){return this.evalFunc.apply(this,arguments);};abego.BoolExp.prototype.getMarkRegExp=function(){return this.markRegExp;};abego.BoolExp.prototype.toString=function(){return this.s;};abego.MultiFieldRegExpTester=function(re,_44,_45){this.re=re;this.fields=_44?_44:["title","text","tags"];this.withExtendedFields=_45;};abego.MultiFieldRegExpTester.prototype.test=function(_46){var re=this.re;for(var i=0;i<this.fields.length;i++){var s=store.getValue(_46,this.fields[i]);if(typeof s=="string"&&re.test(s)){return this.fields[i];}}if(this.withExtendedFields){return store.forEachField(_46,function(_47,_48,_49){return typeof _49=="string"&&re.test(_49)?_48:null;},true);}return null;};abego.TiddlerQuery=function(_4a,_4b,_4c,_4d,_4e){if(_4c){this.regExp=new RegExp(_4a,_4b?"mg":"img");this.tester=new abego.MultiFieldRegExpTester(this.regExp,_4d,_4e);}else{this.expr=new abego.BoolExp(_4a,abego.parseTiddlerFilterTerm,{defaultFields:_4d,caseSensitive:_4b,withExtendedFields:_4e});}this.getQueryText=function(){return _4a;};this.getUseRegExp=function(){return _4c;};this.getCaseSensitive=function(){return _4b;};this.getDefaultFields=function(){return _4d;};this.getWithExtendedFields=function(){return _4e;};};abego.TiddlerQuery.prototype.test=function(_4f){if(!_4f){return false;}if(this.regExp){return this.tester.test(_4f);}return this.expr.exec(_4f);};abego.TiddlerQuery.prototype.filter=function(_50){return abego.select(_50,this.test,this);};abego.TiddlerQuery.prototype.getMarkRegExp=function(){if(this.regExp){return "".search(this.regExp)>=0?null:this.regExp;}return this.expr.getMarkRegExp();};abego.TiddlerQuery.prototype.toString=function(){return (this.regExp?this.regExp:this.expr).toString();};abego.PageWiseRenderer=function(){this.firstIndexOnPage=0;};merge(abego.PageWiseRenderer.prototype,{setItems:function(_51){this.items=_51;this.setFirstIndexOnPage(0);},getMaxPagesInNavigation:function(){return 10;},getItemsCount:function(_52){return this.items?this.items.length:0;},getCurrentPageIndex:function(){return Math.floor(this.firstIndexOnPage/this.getItemsPerPage());},getLastPageIndex:function(){return Math.floor((this.getItemsCount()-1)/this.getItemsPerPage());},setFirstIndexOnPage:function(_53){this.firstIndexOnPage=Math.min(Math.max(0,_53),this.getItemsCount()-1);},getFirstIndexOnPage:function(){this.firstIndexOnPage=Math.floor(this.firstIndexOnPage/this.getItemsPerPage())*this.getItemsPerPage();return this.firstIndexOnPage;},getLastIndexOnPage:function(){return Math.min(this.getFirstIndexOnPage()+this.getItemsPerPage()-1,this.getItemsCount()-1);},onPageChanged:function(_54,_55){},renderPage:function(_56){if(_56.beginRendering){_56.beginRendering(this);}try{if(this.getItemsCount()){var _57=this.getLastIndexOnPage();var _58=-1;for(var i=this.getFirstIndexOnPage();i<=_57;i++){_58++;_56.render(this,this.items[i],i,_58);}}}finally{if(_56.endRendering){_56.endRendering(this);}}},addPageNavigation:function(_59){if(!this.getItemsCount()){return;}var _5a=this;var _5b=function(e){if(!e){var e=window.event;}abego.consumeEvent(e);var _5c=abego.toInt(this.getAttribute("page"),0);var _5d=_5a.getCurrentPageIndex();if(_5c==_5d){return;}var _5e=_5c*_5a.getItemsPerPage();_5a.setFirstIndexOnPage(_5e);_5a.onPageChanged(_5c,_5d);};var _5f;var _60=this.getCurrentPageIndex();var _61=this.getLastPageIndex();if(_60>0){_5f=createTiddlyButton(_59,"Previous","Go to previous page (Shortcut: Alt-'<')",_5b,"prev");_5f.setAttribute("page",(_60-1).toString());_5f.setAttribute("accessKey","<");}for(var i=-this.getMaxPagesInNavigation();i<this.getMaxPagesInNavigation();i++){var _62=_60+i;if(_62<0){continue;}if(_62>_61){break;}var _63=(i+_60+1).toString();var _64=_62==_60?"currentPage":"otherPage";_5f=createTiddlyButton(_59,_63,"Go to page %0".format([_63]),_5b,_64);_5f.setAttribute("page",(_62).toString());}if(_60<_61){_5f=createTiddlyButton(_59,"Next","Go to next page (Shortcut: Alt-'>')",_5b,"next");_5f.setAttribute("page",(_60+1).toString());_5f.setAttribute("accessKey",">");}}});abego.LimitedTextRenderer=function(){var _65=40;var _66=4;var _67=function(_68,_69,_6a){var n=_68.length;if(n==0){_68.push({start:_69,end:_6a});return;}var i=0;for(;i<n;i++){var _6b=_68[i];if(_6b.start<=_6a&&_69<=_6b.end){var r;var _6c=i+1;for(;_6c<n;_6c++){r=_68[_6c];if(r.start>_6a||_69>_6b.end){break;}}var _6d=_69;var _6e=_6a;for(var j=i;j<_6c;j++){r=_68[j];_6d=Math.min(_6d,r.start);_6e=Math.max(_6e,r.end);}_68.splice(i,_6c-i,{start:_6d,end:_6e});return;}if(_6b.start>_6a){break;}}_68.splice(i,0,{start:_69,end:_6a});};var _6f=function(_70){var _71=0;for(var i=0;i<_70.length;i++){var _72=_70[i];_71+=_72.end-_72.start;}return _71;};var _73=function(c){return (c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var _74=function(s,_75){if(!_73(s[_75])){return null;}for(var i=_75-1;i>=0&&_73(s[i]);i--){}var _76=i+1;var n=s.length;for(i=_75+1;i<n&&_73(s[i]);i++){}return {start:_76,end:i};};var _77=function(s,_78,_79){var _7a;if(_79){_7a=_74(s,_78);}else{if(_78<=0){return _78;}_7a=_74(s,_78-1);}if(!_7a){return _78;}if(_79){if(_7a.start>=_78-_66){return _7a.start;}if(_7a.end<=_78+_66){return _7a.end;}}else{if(_7a.end<=_78+_66){return _7a.end;}if(_7a.start>=_78-_66){return _7a.start;}}return _78;};var _7b=function(s,_7c){var _7d=[];if(_7c){var _7e=0;var n=s.length;var _7f=0;do{_7c.lastIndex=_7e;var _80=_7c.exec(s);if(_80){if(_7e<_80.index){var t=s.substring(_7e,_80.index);_7d.push({text:t});}_7d.push({text:_80[0],isMatch:true});_7e=_80.index+_80[0].length;}else{_7d.push({text:s.substr(_7e)});break;}}while(true);}else{_7d.push({text:s});}return _7d;};var _81=function(_82){var _83=0;for(var i=0;i<_82.length;i++){if(_82[i].isMatch){_83++;}}return _83;};var _84=function(s,_85,_86,_87,_88){var _89=Math.max(Math.floor(_88/(_87+1)),_65);var _8a=Math.max(_89-(_86-_85),0);var _8b=Math.min(Math.floor(_86+_8a/3),s.length);var _8c=Math.max(_8b-_89,0);_8c=_77(s,_8c,true);_8b=_77(s,_8b,false);return {start:_8c,end:_8b};};var _8d=function(_8e,s,_8f){var _90=[];var _91=_81(_8e);var pos=0;for(var i=0;i<_8e.length;i++){var t=_8e[i];var _92=t.text;if(t.isMatch){var _93=_84(s,pos,pos+_92.length,_91,_8f);_67(_90,_93.start,_93.end);}pos+=_92.length;}return _90;};var _94=function(s,_95,_96){var _97=_96-_6f(_95);while(_97>0){if(_95.length==0){_67(_95,0,_77(s,_96,false));return;}else{var _98=_95[0];var _99;var _9a;if(_98.start==0){_99=_98.end;if(_95.length>1){_9a=_95[1].start;}else{_67(_95,_99,_77(s,_99+_97,false));return;}}else{_99=0;_9a=_98.start;}var _9b=Math.min(_9a,_99+_97);_67(_95,_99,_9b);_97-=(_9b-_99);}}};var _9c=function(_9d,s,_9e,_9f,_a0){if(_9f.length==0){return;}var _a1=function(_a2,s,_a3,_a4,_a5){var t;var _a6;var pos=0;var i=0;var _a7=0;for(;i<_a3.length;i++){t=_a3[i];_a6=t.text;if(_a4<pos+_a6.length){_a7=_a4-pos;break;}pos+=_a6.length;}var _a8=_a5-_a4;for(;i<_a3.length&&_a8>0;i++){t=_a3[i];_a6=t.text.substr(_a7);_a7=0;if(_a6.length>_a8){_a6=_a6.substr(0,_a8);}if(t.isMatch){createTiddlyElement(_a2,"span",null,"marked",_a6);}else{createTiddlyText(_a2,_a6);}_a8-=_a6.length;}if(_a5<s.length){abego.createEllipsis(_a2);}};if(_9f[0].start>0){abego.createEllipsis(_9d);}var _a9=_a0;for(var i=0;i<_9f.length&&_a9>0;i++){var _aa=_9f[i];var len=Math.min(_aa.end-_aa.start,_a9);_a1(_9d,s,_9e,_aa.start,_aa.start+len);_a9-=len;}};this.render=function(_ab,s,_ac,_ad){if(s.length<_ac){_ac=s.length;}var _ae=_7b(s,_ad);var _af=_8d(_ae,s,_ac);_94(s,_af,_ac);_9c(_ab,s,_ae,_af,_ac);};};(function(){function _b0(msg){alert(msg);throw msg;};if(version.major<2||(version.major==2&&version.minor<1)){_b0("YourSearchPlugin requires TiddlyWiki 2.1 or newer.\n\nCheck the archive for YourSearch plugins\nsupporting older versions of TiddlyWiki.\n\nArchive: http://tiddlywiki.abego-software.de/archive");}abego.YourSearch={};var _b1;var _b2;var _b3=function(_b4){_b1=_b4;};var _b5=function(){return _b1?_b1:[];};var _b6=function(){return _b1?_b1.length:0;};var _b7=4;var _b8=10;var _b9=2;var _ba=function(s,re){var m=s.match(re);return m?m.length:0;};var _bb=function(_bc,_bd){var _be=_bd.getMarkRegExp();if(!_be){return 1;}var _bf=_bc.title.match(_be);var _c0=_bf?_bf.length:0;var _c1=_ba(_bc.getTags(),_be);var _c2=_bf?_bf.join("").length:0;var _c3=_bc.title.length>0?_c2/_bc.title.length:0;var _c4=_c0*_b7+_c1*_b9+_c3*_b8+1;return _c4;};var _c5=function(_c6,_c7,_c8,_c9,_ca,_cb){_b2=null;var _cc=_c6.reverseLookup("tags",_cb,false);try{var _cd=[];if(config.options.chkSearchInTitle){_cd.push("title");}if(config.options.chkSearchInText){_cd.push("text");}if(config.options.chkSearchInTags){_cd.push("tags");}_b2=new abego.TiddlerQuery(_c7,_c8,_c9,_cd,config.options.chkSearchExtendedFields);}catch(e){return [];}var _ce=_b2.filter(_cc);var _cf=abego.YourSearch.getRankFunction();for(var i=0;i<_ce.length;i++){var _d0=_ce[i];var _d1=_cf(_d0,_b2);_d0.searchRank=_d1;}if(!_ca){_ca="title";}var _d2=function(a,b){var _d3=a.searchRank-b.searchRank;if(_d3==0){if(a[_ca]==b[_ca]){return (0);}else{return (a[_ca]<b[_ca])?-1:+1;}}else{return (_d3>0)?-1:+1;}};_ce.sort(_d2);return _ce;};var _d4=80;var _d5=50;var _d6=250;var _d7=50;var _d8=25;var _d9=10;var _da="yourSearchResult";var _db="yourSearchResultItems";var _dc;var _dd;var _de;var _df;var _e0;var _e1=function(){if(version.extensions.YourSearchPlugin.styleSheetInited){return;}version.extensions.YourSearchPlugin.styleSheetInited=true;setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");};var _e2=function(){return _dd!=null&&_dd.parentNode==document.body;};var _e3=function(){if(_e2()){document.body.removeChild(_dd);}};var _e4=function(e){_e3();var _e5=this.getAttribute("tiddlyLink");if(_e5){var _e6=this.getAttribute("withHilite");var _e7=highlightHack;if(_e6&&_e6=="true"&&_b2){highlightHack=_b2.getMarkRegExp();}story.displayTiddler(this,_e5);highlightHack=_e7;}return (false);};var _e8=function(){if(!_de){return;}var _e9=_de;var _ea=findPosX(_e9);var _eb=findPosY(_e9);var _ec=_e9.offsetHeight;var _ed=_ea;var _ee=_eb+_ec;var _ef=findWindowWidth();if(_ef<_dd.offsetWidth){_dd.style.width=(_ef-100)+"px";_ef=findWindowWidth();}var _f0=_dd.offsetWidth;if(_ed+_f0>_ef){_ed=_ef-_f0-30;}if(_ed<0){_ed=0;}_dd.style.left=_ed+"px";_dd.style.top=_ee+"px";_dd.style.display="block";};var _f1=function(){if(_dd){window.scrollTo(0,ensureVisible(_dd));}if(_de){window.scrollTo(0,ensureVisible(_de));}};var _f2=function(){_e8();_f1();};var _f3;var _f4;var _f5=new abego.PageWiseRenderer();var _f6=function(_f7){this.itemHtml=store.getTiddlerText("YourSearchItemTemplate");if(!this.itemHtml){_b0("YourSearchItemTemplate not found");}this.place=document.getElementById(_db);if(!this.place){this.place=createTiddlyElement(_f7,"div",_db);}};merge(_f6.prototype,{render:function(_f8,_f9,_fa,_fb){_f3=_fb;_f4=_f9;var _fc=createTiddlyElement(this.place,"div",null,"yourSearchItem");_fc.innerHTML=this.itemHtml;applyHtmlMacros(_fc,null);refreshElements(_fc,null);},endRendering:function(_fd){_f4=null;}});var _fe=function(){if(!_dd||!_de){return;}var _ff=store.getTiddlerText("YourSearchResultTemplate");if(!_ff){_ff="<b>Tiddler YourSearchResultTemplate not found</b>";}_dd.innerHTML=_ff;applyHtmlMacros(_dd,null);refreshElements(_dd,null);var _100=new _f6(_dd);_f5.renderPage(_100);_f2();};_f5.getItemsPerPage=function(){var n=(config.options.chkPreviewText)?abego.toInt(config.options.txtItemsPerPageWithPreview,_d9):abego.toInt(config.options.txtItemsPerPage,_d8);return (n>0)?n:1;};_f5.onPageChanged=function(){_fe();};var _101=function(){if(_de==null||!config.options.chkUseYourSearch){return;}if((_de.value==_dc)&&_dc&&!_e2()){if(_dd&&(_dd.parentNode!=document.body)){document.body.appendChild(_dd);_f2();}else{abego.YourSearch.onShowResult(true);}}};var _102=function(){_e3();_dd=null;_dc=null;};var _103=function(self,e){while(e!=null){if(self==e){return true;}e=e.parentNode;}return false;};var _104=function(e){if(e.target==_de){return;}if(e.target==_df){return;}if(_dd&&_103(_dd,e.target)){return;}_e3();};var _105=function(e){if(e.keyCode==27){_e3();}};addEvent(document,"click",_104);addEvent(document,"keyup",_105);var _106=function(text,_107,_108){_dc=text;_b3(_c5(store,text,_107,_108,"title","excludeSearch"));abego.YourSearch.onShowResult();};var _109=function(_10a,_10b,_10c,_10d,_10e,_10f){_e1();_dc="";var _110=null;var _111=function(txt){if(config.options.chkUseYourSearch){_106(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}_dc=txt.value;};var _112=function(e){_111(_de);return false;};var _113=function(e){if(!e){var e=window.event;}_de=this;switch(e.keyCode){case 13:if(e.ctrlKey&&_e0&&_e2()){_e0.onclick.apply(_e0,[e]);}else{_111(this);}break;case 27:if(_e2()){_e3();}else{this.value="";clearMessage();}break;}if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){_101();}if(this.value.length<3&&_110){clearTimeout(_110);}if(this.value.length>2){if(this.value!=_dc){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_110){clearTimeout(_110);}var txt=this;_110=setTimeout(function(){_111(txt);},500);}}else{if(_110){clearTimeout(_110);}}}if(this.value.length==0){_e3();}};var _114=function(e){this.select();clearMessage();_101();};var args=_10e.parseParams("list",null,true);var _115=getFlag(args,"buttonAtRight");var _116=getParam(args,"sizeTextbox",this.sizeTextbox);var btn;if(!_115){btn=createTiddlyButton(_10a,this.label,this.prompt,_112);}var txt=createTiddlyElement(null,"input",null,"txtOptionInput searchField",null);if(_10c[0]){txt.value=_10c[0];}txt.onkeyup=_113;txt.onfocus=_114;txt.setAttribute("size",_116);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}if(_10a){_10a.appendChild(txt);}if(_115){btn=createTiddlyButton(_10a,this.label,this.prompt,_112);}_de=txt;_df=btn;};var _117=function(){_e3();var _118=_b5();var n=_118.length;if(n){var _119=[];for(var i=0;i<n;i++){_119.push(_118[i].title);}story.displayTiddlers(null,_119);}};var _11a=function(_11b,_11c,_11d,_11e){invokeMacro(_11b,"option",_11c,_11d,_11e);var elem=_11b.lastChild;var _11f=elem.onclick;elem.onclick=function(e){var _120=_11f.apply(this,arguments);_fe();return _120;};return elem;};var _121=function(s){var _122=["''","{{{","}}}","//","<<<","/***","***/"];var _123="";for(var i=0;i<_122.length;i++){if(i!=0){_123+="|";}_123+="("+_122[i].escapeRegExp()+")";}return s.replace(new RegExp(_123,"mg"),"").trim();};var _124=function(){var i=_f3;return (i>=0&&i<=9)?(i<9?(i+1):0):-1;};var _125=new abego.LimitedTextRenderer();var _126=function(_127,s,_128){_125.render(_127,s,_128,_b2.getMarkRegExp());};var _129=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_12a,_12b,_12c,_12d,_12e,tags,_12f){_129.apply(this,arguments);_102();};var _130=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_131){_130.apply(this,arguments);_102();};config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",handler:function(_132,_133,_134,_135,_136,_137){if(_134.length==0){return;}var name=_134[0];var func=config.macros.yourSearch.funcs[name];if(func){func(_132,_133,_134,_135,_136,_137);}},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return _b6()>0;},"previewText":function(){return config.options.chkPreviewText;}},funcs:{itemRange:function(_138){if(_b6()){var _139=_f5.getLastIndexOnPage();var s="%0 - %1".format([_f5.getFirstIndexOnPage()+1,_139+1]);createTiddlyText(_138,s);}},count:function(_13a){createTiddlyText(_13a,_b6().toString());},query:function(_13b){if(_b2){createTiddlyText(_13b,_b2.toString());}},version:function(_13c){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_13c,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_13d){var e=createTiddlyElement(_13d,"a");e.setAttribute("href","http://www.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">© 2005-2008 <b><font color=\"red\">abego</font></b> Software<font>";},newTiddlerButton:function(_13e){if(_b2){var r=abego.parseNewTiddlerCommandLine(_b2.getQueryText());var btn=config.macros.newTiddler.createNewTiddlerButton(_13e,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");var _13f=btn.onclick;btn.onclick=function(){_e3();_13f.apply(this,arguments);};_e0=btn;}},linkButton:function(_140,_141,_142,_143,_144,_145){if(_142<2){return;}var _146=_142[1];var text=_142<3?_146:_142[2];var _147=_142<4?text:_142[3];var _148=_142<5?null:_142[4];var btn=createTiddlyButton(_140,text,_147,_e4,null,null,_148);btn.setAttribute("tiddlyLink",_146);},closeButton:function(_149,_14a,_14b,_14c,_14d,_14e){var _14f=createTiddlyButton(_149,"close","Close the Search Results (Shortcut: ESC)",_e3);},openAllButton:function(_150,_151,_152,_153,_154,_155){var n=_b6();if(n==0){return;}var _156=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _157=createTiddlyButton(_150,_156,"Open all found tiddlers (Shortcut: Alt-O)",_117);_157.setAttribute("accessKey","O");},naviBar:function(_158,_159,_15a,_15b,_15c,_15d){_f5.addPageNavigation(_158);},"if":function(_15e,_15f,_160,_161,_162,_163){if(_160.length<2){return;}var _164=_160[1];var _165=(_164=="not");if(_165){if(_160.length<3){return;}_164=_160[2];}var test=config.macros.yourSearch.tests[_164];var _166=false;try{if(test){_166=test(_15e,_15f,_160,_161,_162,_163)!=_165;}else{_166=(!eval(_164))==_165;}}catch(ex){}if(!_166){_15e.style.display="none";}},chkPreviewText:function(_167,_168,_169,_16a,_16b,_16c){var _16d=_169.slice(1).join(" ");var elem=_11a(_167,"chkPreviewText",_16a,_16c);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem;}}};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",handler:function(_16e,_16f,_170,_171,_172,_173){var name=_170[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_16e,_16f,_170,_171,_172,_173);}},funcs:{title:function(_174,_175,_176,_177,_178,_179){if(!_f4){return;}var _17a=_124();var _17b=_17a>=0?"Open tiddler (Shortcut: Alt-%0)".format([_17a.toString()]):"Open tiddler";var btn=createTiddlyButton(_174,null,_17b,_e4,null);btn.setAttribute("tiddlyLink",_f4.title);btn.setAttribute("withHilite","true");_126(btn,_f4.title,_d4);if(_17a>=0){btn.setAttribute("accessKey",_17a.toString());}},tags:function(_17c,_17d,_17e,_17f,_180,_181){if(!_f4){return;}_126(_17c,_f4.getTags(),_d5);},text:function(_182,_183,_184,_185,_186,_187){if(!_f4){return;}_126(_182,_121(_f4.text),_d6);},field:function(_188,_189,_18a,_18b,_18c,_18d){if(!_f4){return;}var name=_18a[1];var len=_18a.length>2?abego.toInt(_18a[2],_d7):_d7;var v=store.getValue(_f4,name);if(v){_126(_188,_121(v),len);}},number:function(_18e,_18f,_190,_191,_192,_193){var _194=_124();if(_194>=0){var text="%0)".format([_194.toString()]);createTiddlyElement(_18e,"span",null,"shortcutNumber",text);}}}};var opts={chkUseYourSearch:true,chkPreviewText:true,chkSearchAsYouType:true,chkSearchInTitle:true,chkSearchInText:true,chkSearchInTags:true,chkSearchExtendedFields:true,txtItemsPerPage:_d8,txtItemsPerPageWithPreview:_d9};for(var n in opts){if(config.options[n]==undefined){config.options[n]=opts[n];}}config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]]) ([[help|YourSearch Help]])// ";config.shadowTiddlers["YourSearch Help"]="!Field Search\nWith the Field Search you can restrict your search to certain fields of a tiddler, e.g"+" only search the tags or only the titles. The general form is //fieldname//'':''//textToSearch// (e."+"g. {{{title:intro}}}). In addition one-character shortcuts are also supported for the standard field"+"s {{{title}}}, {{{text}}} and {{{tags}}}:\n|!What you want|!What you type|!Example|\n|Search ''titles "+"only''|start word with ''!''|{{{!jonny}}} (shortcut for {{{title:jonny}}})|\n|Search ''contents/text "+"only''|start word with ''%''|{{{%football}}} (shortcut for {{{text:football}}})|\n|Search ''tags only"+"''|start word with ''#''|{{{#Plugin}}} (shortcut for {{{tags:Plugin}}})|\n\nUsing this feature you may"+" also search the extended fields (\"Metadata\") introduced with TiddlyWiki 2.1, e.g. use {{{priority:1"+"}}} to find all tiddlers with the priority field set to \"1\".\n\nYou may search a word in more than one"+" field. E.g. {{{!#Plugin}}} (or {{{title:tags:Plugin}}} in the \"long form\") finds tiddlers containin"+"g \"Plugin\" either in the title or in the tags (but does not look for \"Plugin\" in the text). \n\n!Boole"+"an Search\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you "+"type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}} (or {{{jonny and jeremy}}}"+")|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must "+"not exist''|Start word with ''-''|{{{-jonny}}} (or {{{not jonny}}})|\n\n''Note:'' When you specify two"+" words, separated with a space, YourSearch finds all tiddlers that contain both words, but not neces"+"sarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need"+" to put the words into quotes. I.e. you type: {{{\"john brown\"}}}.\n\nUsing parenthesis you may change "+"the default \"left to right\" evaluation of the boolean search. E.g. {{{not (jonny or jeremy)}}} finds"+" all tiddlers that contain neither \"jonny\" nor \"jeremy. In contrast to this {{{not jonny or jeremy}}"+"} (i.e. without parenthesis) finds all tiddlers that either don't contain \"jonny\" or that contain \"j"+"eremy\".\n\n!'Exact Word' Search\nBy default a search result all matches that 'contain' the searched tex"+"t. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~Complet"+"edTask', '~TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you"+" need to prefix it with a '='. E.g. typing '=Task' will find the tiddlers that contain the word 'Tas"+"k', ignoring words that just contain 'Task' as a substring.\n\n!~CaseSensitiveSearch and ~RegExpSearch"+"\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearc"+"h. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\nIn addition you m"+"ay do a \"regular expression\" search even with the ''~RegExpSearch'' set to false by directly enterin"+"g the regular expression into the search field, framed with {{{/.../}}}. \n\nExample: {{{/m[ae][iy]er/"+"}}} will find all tiddlers that contain either \"maier\", \"mayer\", \"meier\" or \"meyer\".\n\n!~JavaScript E"+"xpression Filtering\nIf you are familiar with JavaScript programming and know some TiddlyWiki interna"+"ls you may also use JavaScript expression for the search. Just enter a JavaScript boolean expression"+" into the search field, framed with {{{ { ... } }}}. In the code refer to the variable tiddler and e"+"valuate to {{{true}}} when the given tiddler should be included in the result. \n\nExample: {{{ { tidd"+"ler.modified > new Date(\"Jul 4, 2005\")} }}} returns all tiddler modified after July 4th, 2005.\n\n!Com"+"bined Search\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Res"+"ult|\n|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its tit"+"les, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact wor"+"d). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\n\n!Access Keys\nYou are encour"+"aged to use the access keys (also called \"shortcut\" keys) for the most frequently used operations. F"+"or quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|"+"!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search in"+"put field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the pr"+"evious search result. This way you can quickly display multiple tiddlers using \"Press {{{Alt-F}}}. S"+"elect tiddler.\" sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Resul"+"t]] is already closed and the cursor is in the search input field the field's content is cleared so "+"you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second e"+"tc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the "+"'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[Your"+"Search Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the "+"{{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n\n//If some of t"+"hese shortcuts don't work for you check your browser if you have other extensions installed that alr"+"eady \"use\" these shortcuts.//";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\n|>|<<option chkUseYourSearch>> Use 'Your Search'|\n|!|<<option chkPreviewText"+">> Show Text Preview|\n|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required"+" to start search)|\n|!|Default Search Filter:<<option chkSearchInTitle>>Title ('!') <<option chk"+"SearchInText>>Text ('%') <<option chkSearchInTags>>Tags ('#') <<option chkSearchExtendedFiel"+"ds>>Extended Fields<html><br><font size=\"-2\">The fields of a tiddlers that are searched when you don"+"'t explicitly specify a filter in the search text <br>(Explictly specify fields using one or more '!"+"', '%', '#' or 'fieldname:' prefix before the word/text to find).</font></html>|\n|!|Number of items "+"on search result page: <<option txtItemsPerPage>>|\n|!|Number of items on search result page with pre"+"view text: <<option txtItemsPerPageWithPreview>>|\n";config.shadowTiddlers["YourSearchStyleSheet"]="/***\n!~YourSearchResult Stylesheet\n***/\n/*{{{*/\n.yourSearchResult {\n\tposition: absolute;\n\twidth: 800"+"px;\n\n\tpadding: 0.2em;\n\tlist-style: none;\n\tmargin: 0;\n\n\tbackground: #ffd;\n\tborder: 1px solid DarkGra"+"y;\n}\n\n/*}}}*/\n/***\n!!Summary Section\n***/\n/*{{{*/\n.yourSearchResult .summary {\n\tborder-bottom-width:"+" thin;\n\tborder-bottom-style: solid;\n\tborder-bottom-color: #999999;\n\tpadding-bottom: 4px;\n}\n\n.yourSea"+"rchRange, .yourSearchCount, .yourSearchQuery {\n\tfont-weight: bold;\n}\n\n.yourSearchResult .summary ."+"button {\n\tfont-size: 10px;\n\n\tpadding-left: 0.3em;\n\tpadding-right: 0.3em;\n}\n\n.yourSearchResult .summa"+"ry .chkBoxLabel {\n\tfont-size: 10px;\n\n\tpadding-right: 0.3em;\n}\n\n/*}}}*/\n/***\n!!Items Area\n***/\n/*{{{*"+"/\n.yourSearchResult .marked {\n\tbackground: none;\n\tfont-weight: bold;\n}\n\n.yourSearchItem {\n\tmargin-to"+"p: 2px;\n}\n\n.yourSearchNumber {\n\tcolor: #808080;\n}\n\n\n.yourSearchTags {\n\tcolor: #008000;\n}\n\n.yourSearc"+"hText {\n\tcolor: #808080;\n\tmargin-bottom: 6px;\n}\n\n/*}}}*/\n/***\n!!Footer\n***/\n/*{{{*/\n.yourSearchFoote"+"r {\n\tmargin-top: 8px;\n\tborder-top-width: thin;\n\tborder-top-style: solid;\n\tborder-top-color: #999999;"+"\n}\n\n.yourSearchFooter a:hover{\n\tbackground: none;\n\tcolor: none;\n}\n/*}}}*/\n/***\n!!Navigation Bar\n***/"+"\n/*{{{*/\n.yourSearchNaviBar a {\n\tfont-size: 16px;\n\tmargin-left: 4px;\n\tmargin-right: 4px;\n\tcolor: bla"+"ck;\n\ttext-decoration: underline;\n}\n\n.yourSearchNaviBar a:hover {\n\tbackground-color: none;\n}\n\n.yourSe"+"archNaviBar .prev {\n\tfont-weight: bold;\n\tcolor: blue;\n}\n\n.yourSearchNaviBar .currentPage {\n\tcolor: #"+"FF0000;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n.yourSearchNaviBar .next {\n\tfont-weight: bold"+";\n\tcolor: blue;\n}\n/*}}}*/\n";config.shadowTiddlers["YourSearchResultTemplate"]="<!--\n{{{\n-->\n<span macro=\"yourSearch if found\">\n<!-- The Summary Header ============================"+"================ -->\n<table class=\"summary\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">"+"<tbody>\n <tr>\n\t<td align=\"left\">\n\t\tYourSearch Result <span class=\"yourSearchRange\" macro=\"yourSearc"+"h itemRange\"></span>\n\t\t of <span class=\"yourSearchCount\" macro=\"yourSearch count\"></span>\n"+"\t\tfor <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>\n\t</td>\n\t<td class=\"yourSea"+"rchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch chkPreviewText\"></span><span class=\"chkBoxLabel"+"\">preview text</span>\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch openAllButton\"></span>\n\t\t<span macro=\"yourSearch lin"+"kButton 'YourSearch Options' options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkB"+"utton 'YourSearch Help' help 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch clo"+"seButton\"></span>\n\t</td>\n </tr>\n</tbody></table>\n\n<!-- The List of Found Tiddlers ================="+"=========================== -->\n<div id=\"yourSearchResultItems\" itemsPerPage=\"25\" itemsPerPageWithPr"+"eview=\"10\"></div>\n\n<!-- The Footer (with the Navigation) ==========================================="+"= -->\n<table class=\"yourSearchFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody"+">\n <tr>\n\t<td align=\"left\">\n\t\tResult page: <span class=\"yourSearchNaviBar\" macro=\"yourSearch naviBar"+"\"></span>\n\t</td>\n\t<td align=\"right\"><span macro=\"yourSearch version\"></span>, <span macro=\"yourSearc"+"h copyright\"></span>\n\t</td>\n </tr>\n</tbody></table>\n<!-- end of the 'tiddlers found' case ========="+"================================== -->\n</span>\n\n\n<!-- The \"No tiddlers found\" case ================="+"========================== -->\n<span macro=\"yourSearch if not found\">\n<table class=\"summary\" border="+"\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n <tr>\n\t<td align=\"left\">\n\t\tYourSearch Resu"+"lt: No tiddlers found for <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>.\n\t</td>\n\t<t"+"d class=\"yourSearchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Options'"+" options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Help' help"+" 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch closeButton\"></span>\n\t</td>\n <"+"/tr>\n</tbody></table>\n</span>\n\n\n<!--\n}}}\n-->\n";config.shadowTiddlers["YourSearchItemTemplate"]="<!--\n{{{\n-->\n<span class='yourSearchNumber' macro='foundTiddler number'></span>\n<span class='yourSea"+"rchTitle' macro='foundTiddler title'/></span> - \n<span class='yourSearchTags' macro='found"+"Tiddler field tags 50'/></span>\n<span macro=\"yourSearch if previewText\"><div class='yourSearchText' macro='fo"+"undTiddler field text 250'/></div></span>\n<!--\n}}}\n-->";config.shadowTiddlers["YourSearch"]="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";config.macros.search.handler=_109;var _195=function(){if(config.macros.search.handler!=_109){alert("Message from YourSearchPlugin:\n\n\nAnother plugin has disabled the 'Your Search' features.\n\n\nYou may "+"disable the other plugin or change the load order of \nthe plugins (by changing the names of the tidd"+"lers)\nto enable the 'Your Search' features.");}};setTimeout(_195,5000);abego.YourSearch.getStandardRankFunction=function(){return _bb;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return _f4;};abego.YourSearch.closeResult=function(){_e3();};abego.YourSearch.getFoundTiddlers=function(){return _b1;};abego.YourSearch.getQuery=function(){return _b2;};abego.YourSearch.onShowResult=function(_196){highlightHack=_b2?_b2.getMarkRegExp():null;if(!_196){_f5.setItems(_b5());}if(!_dd){_dd=createTiddlyElement(document.body,"div",_da,"yourSearchResult");}else{if(_dd.parentNode!=document.body){document.body.appendChild(_dd);}}_fe();highlightHack=null;};})();}
//%/
<html><table>
<tr><th>Тип связи</th><th>Значение</th><th>Примечание</th></tr>
<tr class="odd"><td rowspan=2 class="evn mid">Тел.<br>(phones):</td><td class="mid">+7(342)298-56-08</td><td class="remark">моб. (mobile)</td></tr>
<tr class="evn"><td class="mid">+7(342)261-91-53</td><td class="remark">дом. (home)</td></tr>
<tr class="odd"><td class="mid">Аська (ICQ):</td><td class="mid">470-208-921</td><td class="remark">запросы авторизации отключены (для уменьшения количества спама), поэтому сначала просто сообщение пишите, чтобы я вас увидел<br>(authorisation query off, so send me a simple message first)</td></tr>
<tr class="evn"><td class="mid">Скайп (Skype):</td><td class="mid">vmunt.in.skype</td><td /></tr>
<tr class="odd"><td class="mid">Jabber/XMPP:</td><td class="mid">vmunt <span class="remark">(большая собачка)</span> jabber <span class="remark">(маленькая точка)</span> ru</td><td /></tr>
<tr class="evn"><td class="mid">Почта (mail):</td><td class="mid">vmunt <span class="remark">(большая собачка)</span> мэйл <span class="remark">(маленькая точка)</span> ру</td><td /></tr>
<tr class="odd"><td class="mid">Сайт (www):</td><td class="mid">vmunt.site</td><td /></tr>
</table></html>