<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
Background: #fff
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
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:blue;}
#a {color:blue;background:url(pict/bg.jpg) top left no-repeat;}
a:hover {background:yellow;}
#a:hover {background:url(pict/tiddler_bg.jpg) top left no-repeat;}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {position:absolute; right:10px; width:18em; font-size:.9em;}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryLight]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:1px solid transparent;}
.viewer table, table.twtable {border:2px solid transparent;}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:lightblue; border:1px solid [[ColorPalette::TertiaryDark]]; color:black;}
#.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid transparent;}
.viewer td, .twtable td {border:1px solid transparent;}
.viewer td, .viewer tr {border:1px solid red;}
.viewer td, .twtable tr {border:1px solid blue;}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
* html .tiddler {height:1%;}

body {font-size:.85em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:decimal;}
ol ol ol {list-style-type:decimal;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:9em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.tuduSlider .button{ display: block; color: yellow; text-align: left;
font-weight: bold;
border-top: solid 1px #bbb;
border-left: solid 1px #bbb;
border-right: solid 1px #888;
border-bottom: solid 1px #888;
background: blue;
margin-left: -0.3em;
padding: 0 1px 1px 10px;

.tuduSlider .button:hover{
border-top: solid 1px #777;
border-left: solid 1px #777;
border-right: solid 1px #bbb;
border-bottom: solid 1px #bbb;
background: #888;
padding: 1px 0 0 11px;

.header {position:relative; color: red;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em; }
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:12.5em; text-align:center; line-height:1.4em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.3em; }

#topMenu ul { margin:0; padding:0; list-style:none; width:100%; overflow:hidden; clear:both; }
#topMenu ul li { float:left; margin:0; padding:0; }
#topMenu ul li a { height:18px; vertical-align: middle; text-decoration:none; display:block; float:left; font-size:12px;  font-weight:bold; color:[[ColorPalette::Background]]; margin:0 20px 0 0; padding:5px 8px 5px 8px }
#topMenu ul li a:hover { background-color:[[ColorPalette::MainAccentLight]]; }
#topMenu a.button { float:right; margin:0.8em 0 0 1.5em; color:[[ColorPalette::MainAccentLight]]; border-width:1;}
#topMenu a.button:hover { color:[[ColorPalette::MainAccent]]; background-color:red;}

#sidebar {position:absolute; right:0px; width:12.5em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:12.5em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:1em;}

.tiddler {padding:1em 1em 0; }

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {font-size:1.2em;}
.viewer {line-height:1.4em; padding-top:0.5em; }
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;margin-top: 0.5em; margin-bottom: 1em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox where print preview displays the noscript content */
<div class='header' role='banner' style='background: url(pict/bg.jpg) top left no-repeat'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> 
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> 
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
* [[TopMenu]]
* [[MainMenu]]
* [[DefaultTiddlers]]
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<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>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

Also see [[AdvancedOptions]]
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Author:|Simon Baird <simon.baird@gmail.com>|

  handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,

  handler: function(event,src,title) {
    if (!story.isDirty(title) && !store.tiddlerExists(title) && !store.isShadowTiddler(title))
    return false;


Name: MptwMinoga
Background: #ff9
Foreground: #000
PrimaryPale: #f2e0ba
PrimaryLight: #0f80ff
PrimaryMid: #000
PrimaryDark: #FF2e4c
SecondaryPale: #f8a
SecondaryLight: #c2beb8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
[[Ласкаво просимо!]]
|Description:|Adds a New tiddler button in the tag drop down|
|Author:|Simon Baird <simon.baird@gmail.com>|

window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
  var tag = this.getAttribute("tag");
  var title = this.getAttribute("tiddler");
  var popup = Popup.stack[Popup.stack.length-1].popup;
  wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
  return false;

|Description:|Allows conditional inclusion/exclusion in templates|
|Author:|Simon Baird <simon.baird@gmail.com>|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}

Warning: the showWhen and hideWhen macros will blindly eval paramString.
This could be used to execute harmful javascript from a tiddler.

(TODO: Make some effort to sanitize paramString. Perhaps disallow the equals sign?)

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
  window.hideWhenLastTest = test;
  if (test) {


  hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( eval(paramString), place );

  showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !eval(paramString), place );

  hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );

  showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );

  hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAny(params), place );

  showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAny(params), place );

  hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );

  showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );

  hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place );

  showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place );

  hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title == params[0], place );

  showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title != params[0], place );

  'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !window.hideWhenLastTest, place );


config.options.chkHttpReadOnly = true;
|Author|Eric Shulman|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
The extended image syntax is:
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
2011.09.03 [1.2.3] bypass addStretchHandlers() if no '+' suffix is used (i.e., not resizable)
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 3, date: new Date(2011,9,3)};
var f=config.formatters[config.formatters.findByField("name","image")];
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			img.style.width=x.trim(); img.style.height=y.trim();
			if (stretchW||stretchH) config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		if(tooltip) img.title = tooltip;

		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
					return false;
			} else
		w.nextMatch = this.lookaheadRegExp.lastIndex;

	tip: 'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size',
	dragtip: 'DRAG=stretch/shrink, '

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.statusMsg='width=%0, height=%1';
	e.onmousedown=function(ev) { var ev=ev||window.event;
		return false;
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		return false;
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		return false;
	e.onmouseout=function(ev) { var ev=ev||window.event;
		return false;
|Description:|A handy way to insert timestamps in your tiddler content|
|Author:|Simon Baird <simon.baird@gmail.com>|
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.

config.InstantTimestamp = {

  timeFormat: 'DD/0MM/YY 0hh:0mm',
  dateFormat: 'DD/0MM/YY',

  translations: [
    [/^!ts?$/img,  "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
    [/^!ds?$/img,  "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],



  excludeTags: [

  excludeTiddlers: [


TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {

  tags = tags ? tags : []; 
  tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
  var conf = config.InstantTimestamp;

  if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {

    var now = new Date();
    var trans = conf.translations;
    for (var i=0;i<trans.length;i++) {
      newBody = newBody.replace(trans[i][0], eval(trans[i][1]));

  return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);

setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");

|Description:|Intelligently limit the number of backup files you create|
|Author:|Simon Baird|
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.

var MINS  = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS  = 24 * HOURS;

if (!config.lessBackups) {
  config.lessBackups = {
    modes: [
      ["YYYY",  365*DAYS], 
      ["MMM",   31*DAYS],  
      ["ddd",   7*DAYS],   
      //["d0DD",  1*DAYS], 
      ["h0hh",  24*HOURS], 
      ["m0mm",  1*HOURS],  
      ["s0ss",  1*MINS],   

window.getSpecialBackupPath = function(backupPath) {

  var now = new Date();

  var modes = config.lessBackups.modes;

  for (var i=0;i<modes.length;i++) {

    var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,

    try {
      if (config.browser.isIE) {
        var fsobject = new ActiveXObject("Scripting.FileSystemObject")
        var fileExists  = fsobject.FileExists(specialBackupPath);
        if (fileExists) {
          var fileObject = fsobject.GetFile(specialBackupPath);
          var modDate = new Date(fileObject.DateLastModified).valueOf();
      else {
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        var fileExists = file.exists();
        if (fileExists) {
          var modDate = file.lastModifiedTime;
    catch(e) {
      return backupPath;

    var expiry = new Date(modDate + modes[i][1]);
    if (!fileExists || now > expiry)
      return specialBackupPath;

window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
  return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));

[[Стежками долі Володимира Малика]]
[[Творчість письменника]]
[[На сторожі Лубенських святинь]]
[[Любов, повага і шана]]
[[Премія імені Малика]]
[[Твори Малика у нашому шкільному житті]]
[[Використані джерела]]
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300
Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88


  mptwCollapse: {
    handler: function(place,macroName,params) {
      createTiddlyButton(place, params[0] == '+' ? '\u25AD' : '\u25AC', 'collapse/uncollapse', function(){

/* this doesn't work unless you have a modified ViewTempate */
config.shadowTiddlers["MptwCollapsePluginStyles"] = ""
  +".collapsed .uncollapsedView { display:none;       }"
  +".collapsedView              { display:none;       }"
  +".collapsed .collapsedView   { display:block;      }"
  +".tiddler.collapsed          { padding-bottom:1em; }"
  +".tiddler.collapsed .title   { font-size:100%;     }"



|Description:|Miscellaneous tweaks used by MPTW|
|Author:|Simon Baird <simon.baird@gmail.com>|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;

config.options.chkHttpReadOnly = false;  
readOnly = true;                       
showBackstage = false;                   

config.options.chkInsertTabs = false;   
config.views.wikified.defaultText = "";
config.views.editor.defaultText = "";

config.options.chkSaveBackups = true;     
config.options.txtBackupFolder = 'backup';

config.options.chkAutoSave = (window.location.protocol == "file:"); 

config.mptwVersion = "2.7.3";


if (config.options.txtTheme == '')
  config.options.txtTheme = 'MptwTheme';

config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";

config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see \[\[AdvancedOptions\]\])/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");

config.mptwDateFormat = 'DD.MM.YY';
config.mptwJournalFormat = 'Journal DD.MM.YY';

Name: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
Name: MptwMinoga
Background: #ff9
Foreground: #000
PrimaryPale: #f2e0ba
PrimaryLight: #618FA9
PrimaryMid: #000
PrimaryDark: #FF2e4c
SecondaryPale: #f8a
SecondaryLight: #c2beb8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
|Description|Mptw Theme with some rounded corners (Firefox only)|


.viewer tr.oddRow { background-color: #ffe; }
.viewer tr.evenRow { background-color: #afa; }
{ -moz-border-radius: 1em; }

.tab {
	-moz-border-radius-topleft: 0.5em;
	-moz-border-radius-topright: 0.5em;
#topMenu {
	-moz-border-radius-bottomleft: 2em;
	-moz-border-radius-bottomright: 2em;

Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Description|Mptw Theme including custom PageLayout|

http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)

<div class='header' style='background: url(pict/bg2.jpg) top left repeat'>
	<div class='headerShadow'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<!-- div id='topMenu' refresh='content' -->
<!-- tiddler='MainMenu'></div> -->
<div id="topMenu" refresh="content" tiddler="TopMenu">;</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>

<div class="uncollapsedView">

<div class="tagglyTagged" macro="tags"></div>

<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>

<div class='subtitle'>
	(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
	by <span macro='view modifier link'></span>)
	(<span macro='message views.wikified.createdPrompt'></span>
	<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)

<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
<div macro="else">
	<div class='viewer' macro='view text wikified'></div>

<div class="tagglyTagging" macro="tagglyTagging"></div>
<div class="collapsedView">
	<span class='toolbar'>
		<span macro='toolbar closeTiddler'></span>
		<span macro='mptwCollapse +'></span>
	<span class='title' macro='view title'></span>


<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span style="padding:1em;"></span>
	<span macro='toolbar closeTiddler +editTiddler deleteTiddler </span> <span macro='newHere label:"new here"'></span>
	<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
	<!--span macro='mptwCollapse -'></span-->

<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>


/* a contrasting background so I can see where one tiddler ends and the other begins */
body {background-image: url(pict/bg.jpg);
background-repeat: repeat; background-position: left; backgound-color: transparent; font-family: Helvetica;}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS', sans-serif;
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas', monospace;

/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: #cc0033;
	font-family: 'Times New Roman', sans-serif;

/* more subtle tiddler subtitle */
.subtitle {
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];

/* a little bit of extra whitespace */
.viewer {

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: blue;

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {

/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 18em 0em 17.5em; /* use the freed up space */
#topMenu br {
	display: none;
#topMenu {
	background: [[ColorPalette::PrimaryLight]];
#topMenu {
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	background: blue;
	color: yellow;
	font-size: 150%;
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: white;
	color: blue;

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
.selected .toolbar {

/* experimental. this is a little borked in IE7 with the button 
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
#sidebarOptions .sliderPanel .select br {

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	.headerShadow {
		visibility: hidden ! important;
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	.quickopentag a.button, .miniTag {
		display: none ! important;

/* get user styles specified in StyleSheet */

|Description|Mptw Theme with a reduced header to increase useful space|


<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
<div id='sidebar'>
	<div id='sidebarOptions'>
		<div refresh='content' tiddler='SideBarOptions'></div>
		<div style="margin-left:0.1em;"
			macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.

config.options.txtTheme = 'MptwRoundTheme';
config.options.txtUserName = 'Master'
config.options.chkSaveBackups = false;
config.options.chkAutoSave = false;
config.options.chkRegExpSearch = false;
config.options.chkCaseSensitiveSearch = false;
config.options.txtBackupFolder = 'backups';
config.options.chkAnimate = false;
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|Description|Quickly create new TiddlyWiki documents from your existing document, with just one click|

Use the {{{<<newDocument>>}}} macro to place a "new document" link into your sidebar/mainmenu/any tiddler (wherever you like).  Select this command to automatically create a "new.html" document containing a specific set of tagged tiddlers.  Optional parameters let you specify an alternate path/filename for the new file, or different tags to match.  You can also indicate "ask" for either parameter, which will  trigger a prompt for input when the command is selected.

{{{<<newDocument label:text prompt:text filename tag tag tag...>>}}}
{{{<<newDocument label:text prompt:text filename all>>}}}
{{{<<newDocument label:text prompt:text filename snap ID>>}}}
{{{<<newDocument label:text prompt:text filename snap here>>}}}
{{{<<newDocument label:text prompt:text nofile print ID>>}}}
{{{<<newDocument label:text prompt:text nofile print here>>}}}
* ''label:text'' defines //optional// alternative link text (replaces default "new document" display)
* ''prompt:text'' defines //optional// alternative tooltip text for 'mouseover' prompting (replaces default hard-coded tooltip text)
* ''filename'' is any local path-and-filename.  If no parameters are provided, the default is to create the file "new.html" in the current directory.  If a filename is provided without a path (i.e., there is no "/" in the input), then the current directory is also assumed.  Otherwise, this parameter is expected to contain the complete path and filename needed to write the file to your local hard disk.  If ''ask'' is used in place of the filename parameter then, when the command link is selected, a message box will be automatically displayed so you can select/enter the path and filename.
* ''tag tag tag...'' is a list of one or more space-separated tags (use quotes or {{{[[]]}}} around tags that contain spaces).  The new document will include all tiddlers that match at least one of the tags in the list.  The default is to include tiddlers tagged with <<tag includeNew>>.    The special value ''all'' may be used to match every tiddler (even those without tags).   If ''ask'' is used in place of the tags then, when the command link is selected, a message box will be automatically displayed so you can enter the desired tags at that time.
* When you use the keyword ''snap'' in place of the tags, you can generate a file containing the //rendered//  CSS-and-HTML that is currently being displayed in browser.  By default, the snapshop uses the 'contentWrapper' DOM element ID to automatically include all the TiddlyWiki elements, such as the sidebars and header, in addition to the center 'story' column containing the tiddler content.
* When you use the keyword ''print'' in place of the tags, a snapshot is generated, but the contents are not written to a file.  Instead, they are displayed in a separate browser tab/window, and the print dialog for that tab/window is automatically invoked.
* You can limit the snapshot to capture only a portion of the rendered TiddlyWiki elements by specifiying an optional alternate DOM element ID, such as "displayArea" (the entire center 'story' column) or even just a single tiddler (e.g., "tidderMyTiddlerTitle", assuming that "MyTiddlerTitle" is currently displayed).  Only the portions of the document that are contained //within// the specified DOM element will be transcribed to the resulting snapshot file.  If ''ask'' is used in place of a DOM element ID, you will be prompted to enter the ID (default is "contentWrapper") when the snapshot is being taken.  This allows you to easily enter the ID of any currently displayed tiddler to make quick snapshots of specific tiddlers.  If ''here'' is used in place of a DOM element ID, the current tiddler id is used.

Note: as of version 1.4.0 of this plugin, support for selecting tiddlers by using tag *expressions* has been replaced with simpler, more efficient "containsAny()" logic.  To create new ~TiddlyWiki documents that contain only those tiddlers selected with advanced AND/OR/NOT Boolean expressions, you can use the filtering features provided by the ExportTiddlersPlugin (see www.TiddlyTools.com/#ExportTiddlersPlugin).
equivalent to {{{<<newDocument new.htm includeNew systemTiddlers>>}}}
creates default "new.html" containing tiddlers tagged with either<<tag includeNew>>or<<tag systemTiddlers>>
try it: <<newDocument>>

{{{<<newDocument empty.html systemTiddlers>>}}}
creates "empty.html" containing only tiddlers tagged with<<tag systemTiddlers>>
//(reproduces old-style (pre 2.0.2) empty file)//
try it: <<newDocument empty.html systemTiddlers>>

{{{<<newDocument "label:create Import/Export starter" ask importexport>>}}}
save importexport tiddlers to a new file, prompts for path/file
try it: <<newDocument "label:create Import/Export starter" ask importexport>>

{{{<<newDocument ask ask>>}}}
prompts for path/file, prompts for tags to match
try it: <<newDocument ask ask>>

{{{<<newDocument ask all>>}}}
save all current TiddlyWiki contents to a new file, prompts for path/file
try it: <<newDocument ask all>>

{{{<<newDocument ask snap>>}}}
generates snapshot of currently displayed document, prompts for path/file
try it: <<newDocument ask snap>>

{{{<<newDocument ask snap here>>}}}
generates snapshot of this tiddler ONLY, prompts for path/file
try it: <<newDocument ask snap here>>

{{{<<newDocument ask print here>>}}}
prints a snapshot of this tiddler ONLY
try it: <<newDocument nofile print here>>

Import (or copy/paste) the following tiddlers into your document:
''NewDocumentPlugin'' (tagged with <<tag systemConfig>>)
!!!!!Revision History
''2007.12.04 [*.*.*]'' update for TW2.3.0: replaced deprecated core functions, regexps, and macros
''2007.03.30 [1.7.0]'' added support for "print" param as alternative for "snap".  When "print" is used, the filename is ignored and ouput is directed to another browser tab/window, where the print dialog is then automatically triggered.
''2007.03.30 [1.6.1]'' added support for "here" keyword for current tiddler elementID and "prompt:text" param for specifying tooltip text
''2007.02.12 [1.6.0]'' in onClickNewDocument(), reset HTML source 'markup'
''2006.10.23 [1.5.1]'' in onClickNewDocument(), get saved parameter value for snapID instead of using default "contentWrapper" (oops!)
''2006.10.18 [1.5.0]'' new optional param for 'snap'... specify alternative DOM element ID (default is still "contentWrapper").  Based on a suggestion from Xavier Verges.
''2006.08.03 [1.4.3]'' in promptForFilename(), for IE (WinXP only), added handling for UserAccounts.CommonDialog
''2006.07.29 [1.4.2]'' in onClickNewDocument(), okmsg display is now linked to newly created file
''2006.07.24 [1.4.1]'' in promptForFilename(), check for nsIFilePicker.returnCancel to allow nsIFilePicker.returnOK **OR** nsIFilePicker.returnReplace to be processed.
''2006.05.23 [1.4.0]'' due to very poor performance, support for tag *expressions* has been removed, in favor of a simpler "containsAny()" scan for tags.
''2006.04.09 [1.3.6]'' in onClickNewDocument, added call to convertUnicodeToUTF8() to better handle international characters.
''2006.03.15 [1.3.5]'' added nsIFilePicker() handler for selecting filename in moz-based browsers.  IE and other non-moz browsers still use simple prompt() dialog
''2006.03.15 [1.3.0]'' added "label:text" param for custom link text.  added special "all" filter parameter for "save as..." handling (writes all tiddlers to output file)
''2006.03.09 [1.2.0]'' added special "snap" filter parameter to generate and write "snapshot" files containing static HTML+CSS for currently rendered document.
''2006.02.24 [1.1.2]'' Fix incompatiblity with TW 2.0.5 by removing custom definition of getLocalPath() (which is now part of TW core)
''2006.02.03 [1.1.1]'' concatentate 'extra' params so that tag expressions don't have to be quoted.   moved all text to 'formatted' string definitions for easier translation.
''2006.02.03 [1.1.0]'' added support for tag EXPRESSIONS.  plus improved documentation and code cleanup
''2006.02.03 [1.0.0]'' Created.
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
version.extensions.newDocument = {major: 1, minor: 7, revision: 0, date: new Date(2007,3,30)};

config.macros.newDocument = {
	newlabel: "new document",
	newprompt: "Create a new TiddlyWiki 'starter' document",
	newdefault: "new.html",
	allparam: "all",
	saveaslabel: "save as...",
	saveasprompt: "Save current TiddlyWiki to a different file",
	printparam: "print",
	snapparam: "snap",
	snaplabel: "create a snapshot",
	snapprompt: "Create a 'snapshot' of the current TiddlyWiki display",
	snapdefault: "snapshot.html",
	snapID: "contentWrapper",
	snapIDprompt: "Please enter a DOM element ID for the desired content",
	snapIDerrmsg: "Unrecognized document element ID: '%0'",
	askparam: "ask",
	hereparam: "here",
	labelparam: "label:",
	promptparam: "prompt:",
	fileprompt: "Please enter a filename",
	filter: "includeNew",
	filterprompt: "Match one or more tags:\n(space-separated, use [[...]] around tags containing spaces)",
	filtererrmsg: "Error in tag filter '%0'",
	snapmsg: "Document snapshot written to %1",
	okmsg: "%0 tiddlers written to %1",
	failmsg: "An error occurred while creating %0"

config.macros.newDocument.handler = function(place,macroName,params) {

	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf("/"); if (slashpos==-1) slashpos=path.lastIndexOf("\\"); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); 

	if (params[0] && params[0].substr(0,config.macros.newDocument.labelparam.length)==config.macros.newDocument.labelparam)
		var label=params.shift().substr(config.macros.newDocument.labelparam.length)
	if (params[0] && params[0].substr(0,config.macros.newDocument.promptparam.length)==config.macros.newDocument.promptparam)
		var prompt=params.shift().substr(config.macros.newDocument.promptparam.length)
	var filename=params.shift(); if (!filename) filename=config.macros.newDocument.newdefault;
	if (params[0]==config.macros.newDocument.snapparam || params[0]==config.macros.newDocument.printparam) {
		var printmode=(params[0]==config.macros.newDocument.printparam);
		if (!label) var label=config.macros.newDocument.snaplabel;
		if (!prompt) var prompt=config.macros.newDocument.snapprompt;
		var defaultfile=config.macros.newDocument.snapdefault;
		var snapID=config.macros.newDocument.snapID;
		if (params[0]) var snapID=params.shift();
	if (params[0]==config.macros.newDocument.allparam) {
		if (!label) var label=config.macros.newDocument.saveaslabel;
		if (!prompt) var prompt=config.macros.newDocument.saveasprompt;
		var defaultfile=getLocalPath(document.location.href);
		var slashpos=defaultfile.lastIndexOf("/"); if (slashpos==-1) slashpos=defaultfile.lastIndexOf("\\");
		if (slashpos!=-1) defaultfile=defaultfile.substr(slashpos+1); 
	if (!prompt) var prompt=config.macros.newDocument.newprompt;
	if (!label) var label=config.macros.newDocument.newlabel;
	if (!defaultfile) var defaultfile=config.macros.newDocument.newdefault;

	var btn=createTiddlyButton(place,label,prompt,onClickNewDocument);

	if (!e) var e = window.event; var btn=resolveTarget(e);

	var okmsg=config.macros.newDocument.okmsg;
	var failmsg=config.macros.newDocument.failmsg;
	var count=0;
	var out="";
	if (btn.snapID) { 
		var snapID=btn.snapID;
		if (btn.snapID==config.macros.newDocument.askparam)
		if (btn.snapID==config.macros.newDocument.hereparam)
			{ var here=story.findContainingTiddler(btn); if (here) snapID=here.id; }
		if (!document.getElementById(snapID)) { 
			if (snapID) 
			e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
		var styles=document.getElementsByTagName("style");
		for(var i=0; i < styles.length; i++)
			out +="/* stylesheet from tiddler:"+styles[i].getAttribute("id")+" */\n"+styles[i].innerHTML+"\n\n";
	} else { 
		var sourcefile=getLocalPath(document.location.href);
		var source=loadFile(sourcefile);
		if(source==null) { alert(config.messages.cantSaveError); return null; }
		var posOpeningDiv=source.indexOf(startSaveArea);
		var posClosingDiv=source.lastIndexOf(endSaveArea);
		if((posOpeningDiv==-1)||(posClosingDiv==-1)) { alert(config.messages.invalidFileError.format([sourcefile])); return; }
		var match=btn.filter;
		if (match[0]==config.macros.newDocument.askparam) { 
			var newfilt=prompt(config.macros.newDocument.filterprompt,config.macros.newDocument.filter);
			if (!newfilt) return;  
		var storeAreaDivs=[];
		var tiddlers=store.getTiddlers('title');
		for (var i=0; i<tiddlers.length; i++)
			if (match[0]==config.macros.newDocument.allparam || (tiddlers[i].tags && tiddlers[i].tags.containsAny(match)) )
	if (btn.printmode) {
		var win=window.open("","_blank","");
	} else {
		var filename=btn.file;
		if (filename==config.macros.newDocument.askparam)
		if (!filename) return; 
		var slashpos=filename.lastIndexOf("/"); if (slashpos==-1) slashpos=filename.lastIndexOf("\\");
		if (slashpos==-1) filename=btn.path+filename;
		var ok=saveFile(filename,out);
		var msg=ok?okmsg.format([count,filename]):failmsg.format([filename]);
		var link=ok?"file:///"+filename.replace(/\\/g,'/'):""; 
		clearMessage(); displayMessage(msg,link);
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);

function promptForFilename(msg,path,file)
	if(window.Components) { 
		try {
			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, msg, nsIFilePicker.modeSave);
			var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
			if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
		catch(e) { alert('error during local file access: '+e.toString()) }
	else { 
		try { 
			var s = new ActiveXObject('UserAccounts.CommonDialog');
			s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
			if (s.showOpen()) var result=s.FileName;
		catch(e) { var result=prompt(msg,path+file); } 
	return result;
|Description:|Creates the new here and new journal macros|
|Author:|Simon Baird <simon.baird@gmail.com>|
merge(config.macros, {
  newHere: {
    handler: function(place,macroName,params,wikifier,paramString,tiddler) {
      wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
  newJournalHere: {
    handler: function(place,macroName,params,wikifier,paramString,tiddler) {
      wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);

|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Author:|Simon Baird <simon.baird@gmail.com>|
!!Note: I think this should be in the core

if (config.newMeansNewForJournalsToo == undefined) config.newMeansNewForJournalsToo = true;

String.prototype.getNextFreeName = function() {
  numberRegExp = / \(([0-9]+)\)$/;
  var match = numberRegExp.exec(this);
  if (match) {
  var num = parseInt(match[1]) + 1;
    return this.replace(numberRegExp," ("+num+")");
  else {
    return this + " (1)";

config.macros.newTiddler.checkForUnsaved = function(newName) {
  var r = false;
  story.forEachTiddler(function(title,element) {
    if (title == newName)
      r = true;
  return r;

config.macros.newTiddler.getName = function(newName) {
  while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
    newName = newName.getNextFreeName();
  return newName;

config.macros.newTiddler.onClickNewTiddler = function()
  var title = this.getAttribute("newTitle");
  if(this.getAttribute("isJournal") == "true") {
    title = new Date().formatString(title.trim());

  if (config.newMeansNewForJournalsToo || this.getAttribute("isJournal") != "true")
    title = config.macros.newTiddler.getName(title);

  var params = this.getAttribute("params");
  var tags = params ? params.split("|") : [];
  var focus = this.getAttribute("newFocus");
  var template = this.getAttribute("newTemplate");
  var customFields = this.getAttribute("customFields");
  if(!customFields && !store.isShadowTiddler(title))
    customFields = String.encodeHashMap(config.defaultCustomFields);
  var tiddlerElem = story.getTiddler(title);
  var text = this.getAttribute("newText");
  if(typeof text == "string")
    story.getTiddlerField(title,"text").value = text.format([title]);
  for(var t=0;t<tags.length;t++)
  return false;

<<option txtUserName>>
<<option chkSaveBackups>> Резервная копия
<<option chkAutoSave>> Автосохранение
<<option chkAnimate>> Анимация
[[Начальные настройки|GettingStarted]]
[[Расширенные настройки|AdvancedOptions]]
*[[Connecting classrooms]]
*[[E-Тwinning Plus Media Center Project]]
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Author:|Simon Baird <simon.baird@gmail.com>|
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
Date.prototype.prettyDate = function() {
  var diff = (((new Date()).getTime() - this.getTime()) / 1000);
  var day_diff = Math.floor(diff / 86400);

  if (isNaN(day_diff))      return "";
  else if (diff < 0)        return "in the future";
  else if (diff < 60)       return "just now";
  else if (diff < 120)      return "1 minute ago";
  else if (diff < 3600)     return Math.floor(diff/60) + " minutes ago";
  else if (diff < 7200)     return "1 hour ago";
  else if (diff < 86400)    return Math.floor(diff/3600) + " hours ago";
  else if (day_diff == 1)   return "Yesterday";
  else if (day_diff < 7)    return day_diff + " days ago";
  else if (day_diff < 14)   return  "a week ago";
  else if (day_diff < 31)   return Math.ceil(day_diff/7) + " weeks ago";
  else if (day_diff < 62)   return "a month ago";
  else if (day_diff < 365)  return "about " + Math.ceil(day_diff/31) + " months ago";
  else if (day_diff < 730)  return "a year ago";
  else                      return Math.ceil(day_diff/365) + " years ago";

Date.prototype.formatString_orig_mptw = Date.prototype.formatString;

Date.prototype.formatString = function(template) {
  return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());

config.mptwDateFormat = 'pppp';

|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Author:|Simon Baird <simon.baird@gmail.com>|
config.quickOpenTag = {

  dropdownChar: (document.all ? "\u25bc" : "\u25be"), 

  createTagButton: function(place,tag,excludeTiddler) {
    var splitTag = tag.split("|");
    var pretty = tag;
    if (splitTag.length == 2) {
      tag = splitTag[1];
      pretty = splitTag[0];

    var sp = createTiddlyElement(place,"span",null,"quickopentag");

    var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
    if (excludeTiddler)

  miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
    var tagged = store.getTaggedTiddlers(tiddler.title);
    if (tagged.length > 0) {
      var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
      theTag.className = "miniTag";

  allTagsHandler: function(place,macroName,params) {
    var tags = store.getTags(params[0]);
    var filter = params[1]; 
    var ul = createTiddlyElement(place,"ul");
    if(tags.length == 0)
    for(var t=0; t<tags.length; t++) {
      var title = tags[t][0];
      if (!filter || (title.match(new RegExp('^'+filter)))) {
        var info = getTiddlyLinkInfo(title);
        var theListItem =createTiddlyElement(ul,"li");
        var theLink = createTiddlyLink(theListItem,tags[t][0],true);
        var theCount = " (" + tags[t][1] + ")";
        var theDropDownBtn = createTiddlyButton(theListItem," " +

  styles: [
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
" { border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
" { margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
" /* looks better in right justified main menus */",
" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }",
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",

  init: function() {
    window.createTagButton = this.createTagButton;
    config.macros.allTags.handler = this.allTagsHandler;
    config.macros.miniTag = { handler: this.miniTagHandler };
    config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;


|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Author:|Simon Baird <simon.baird@gmail.com>|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
config.renameTags = {

  prompts: {
    rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
    remove: "Remove the tag '%0' from %1 tidder%2?"

  removeTag: function(tag,tiddlers) {
    for (var i=0;i<tiddlers.length;i++) {

  renameTag: function(oldTag,newTag,tiddlers) {
    for (var i=0;i<tiddlers.length;i++) {

  storeMethods: {

    saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

    saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created,creator) {
      if (title != newTitle) {
        var tagged = this.getTaggedTiddlers(title);
        if (tagged.length > 0) {
          if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))

          if (!this.tiddlerExists(title) && newBody == "")
            return null;
      return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created,creator);

    removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

    removeTiddler: function(title) {
      var tagged = this.getTaggedTiddlers(title);
      if (tagged.length > 0)
        if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
      return this.removeTiddler_orig_renameTags(title);


  init: function() {


|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Author:|Simon Baird <simon.baird@gmail.com>|
To use these add them to the commands in ToolbarCommands under EditToolbar,
or in the MptwTheme tiddler under EditTemplate.

  saveCloseTiddler: {
    text: 'зберегти і закрити',
    tooltip: 'Save changes to this tiddler and close it',
    handler: function(ev,src,title) {
      var closeTitle = title;
      var newTitle = story.saveTiddler(title,ev.shiftKey);
      if (newTitle)
        closeTitle = newTitle;
      return config.commands.closeTiddler.handler(ev,src,closeTitle);

  cancelCloseTiddler: {
    text: 'скасувати і закрити',
    tooltip: 'Undo changes to this tiddler and close it',
    handler: function(ev,src,title) {
      return config.commands.closeTiddler.handler(ev,src,title);


|Description:|Lets you easily switch theme and palette|
|Author:|Simon Baird <simon.baird@gmail.com>|
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware.
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette

config.macros.selectTheme = {
  label: {
    selectTheme:"select theme",
    selectPalette:"select palette"
  prompt: {
    selectTheme:"Select the current theme",
    selectPalette:"Select the current palette"
  tags: {

config.macros.selectTheme.handler = function(place,macroName)
  var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);

config.macros.selectTheme.onClick = function(ev)
  var e = ev ? ev : window.event;
  var popup = Popup.create(this);
  var mode = this.getAttribute('mode');
  var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
  if (mode == "selectPalette") {
    var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
  for(var i=0; i<tiddlers.length; i++) {
    var t = tiddlers[i].title;
    var name = store.getTiddlerSlice(t,'Name');
    var desc = store.getTiddlerSlice(t,'Description');
    var btn = createTiddlyButton(createTiddlyElement(popup,'li'), name?name:t, desc?desc:config.macros.selectTheme.label['mode'], config.macros.selectTheme.onClickTheme);
  return stopEvent(e);

config.macros.selectTheme.onClickTheme = function(ev)
  var mode = this.getAttribute('mode');
  var theme = this.getAttribute('theme');
  if (mode == 'selectTheme')
  return false;

config.macros.selectTheme.updatePalette = function(title)
  if (title != "") {
    if (title != "(default)")

config.macros.applyTheme = {
  label: "apply",
  prompt: "apply this theme or palette" 

config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
  var useTiddler = params[0] ? params[0] : tiddler.title;
  var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);

config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;

config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });

| @@font-size: 1.3em;[[Всеукраїнський конкурс створення вебсайтів "Літературна візитка краю-2021" |https://litvizytka.org.ua/2021]]@@ |
| ''[[Інтерактивна мапа конкурсу |https://www.google.com/maps/d/u/0/viewer?ll=48.54207373753519,29.34088418967883&z=6&mid=1jxvkzucI0fSs-EKklnIyGPP876MGVgpP]]'' |
| ''[[Facebook-сторінка конкурсу |https://www.facebook.com/LiteraturnaVizytkaKraiu]]'' |
| [[Бібліотека української літератури |https://www.ukrlib.com.ua/]] |
| [[Національна бібліотека України для дітей |http://www.chl.kiev.ua/]] |
| [[Володимирові Маликові – 100 років! |http://www.chl.kiev.ua/KEY/Books/ShowBook/695]] |
| [[Лубенська центральна районна бібліотека імені Володимира Малика |http://lubny-bibl-malyka.edu.poltava.ua/]] |
| [[Полтавська Обласна Універсальна Наукова бібліотека імені І. П. Котляревського |https://library.pl.ua/]] |
| [[Полтавська обласна бібліотека для юнацтва імені Олеся Гончара |http://www.libgonchar.org/]] |
| [img[pict/books.gif][https://www.ukrlib.com.ua/books/author.php?id=75]] |
|''Description''|displays search results as a simple list of matching tiddlers|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
if(!version.extensions.SimpleSearchPlugin) { 
version.extensions.SimpleSearchPlugin = { installed: true };

if(!config.extensions) { config.extensions = {}; }

config.extensions.SimpleSearchPlugin = {
	heading: "Результати пошуку",
	containerId: "searchResults",
	btnCloseLabel: "закрити",
	btnCloseTooltip: "Відмовитись від перегляду результатів пошуку",
	btnCloseId: "search_close",
	btnOpenLabel: "Відкрити всі результати",
	btnOpenTooltip: "Відкрити всі результати пошуку",
	btnOpenId: "search_open",

	displayResults: function(matches, query) {
		var el = document.getElementById(this.containerId);
		query = '"""' + query + '"""'; 
		if(el) {
		} else { //# fallback: use displayArea as parent
			var container = document.getElementById("displayArea");
			el = document.createElement("div");
			el.id = this.containerId;
			el = container.insertBefore(el, container.firstChild);
		var msg = "!" + this.heading + "\n";
		if(matches.length > 0) {
			msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\n";
			this.results = [];
			for(var i = 0 ; i < matches.length; i++) {
				msg += "* [[" + matches[i].title + "]]\n";
		} else {
			msg += "''" + config.macros.search.failureMsg.format([query]) + "''"; // XXX: do not use bold here!?
		createTiddlyButton(el, this.btnCloseLabel, this.btnCloseTooltip, config.extensions.SimpleSearchPlugin.closeResults, "button", this.btnCloseId);
		wikify(msg, el);
		if(matches.length > 0) { 
			createTiddlyButton(el, this.btnOpenLabel, this.btnOpenTooltip, config.extensions.SimpleSearchPlugin.openAll, "button", this.btnOpenId);

	closeResults: function() {
		var el = document.getElementById(config.extensions.SimpleSearchPlugin.containerId);
		config.extensions.SimpleSearchPlugin.results = null;
		highlightHack = null;

	openAll: function(ev) {
		story.displayTiddlers(null, config.extensions.SimpleSearchPlugin.results);
		return false;

config.shadowTiddlers.StyleSheetSimpleSearch = "/*{{{*/\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " {\n" +
	"\toverflow: auto;\n" +
	"\tpadding: 5px 1em 10px;\n" +
	"\tbackground-color: [[ColorPalette::TertiaryPale]];\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " h1 {\n" +
	"\tmargin-top: 0;\n" +
	"\tborder: none;\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " ul {\n" +
	"\tmargin: 0.5em;\n" +
	"\tpadding-left: 1.5em;\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " .button {\n" +
	"\tdisplay: block;\n" +
	"\tborder-color: [[ColorPalette::TertiaryDark]];\n" +
	"\tpadding: 5px;\n" +
	"\tbackground-color: [[ColorPalette::TertiaryLight]];\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " .button:hover {\n" +
	"\tborder-color: [[ColorPalette::SecondaryMid]];\n" +
	"\tbackground-color: [[ColorPalette::SecondaryLight]];\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.btnCloseId + " {\n" +
	"\tfloat: right;\n" +
	"\tmargin: -5px -1em 5px 5px;\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.btnOpenId + " {\n" +
	"\tfloat: left;\n" +
	"\tmargin-top: 5px;\n" +
	"}\n" +
store.addNotification("StyleSheetSimpleSearch", refreshStyles);

Story.prototype.search = function(text, useCaseSensitive, useRegExp) {
	highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img");
	var matches = store.search(highlightHack, null, "excludeSearch");
	var q = useRegExp ? "/" : "'";
	config.extensions.SimpleSearchPlugin.displayResults(matches, q + text + q);

TiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) {
	var candidates = this.reverseLookup("tags", excludeTag, !!match);
	var primary = [];
	var secondary = [];
	var tertiary = [];
	for(var t = 0; t < candidates.length; t++) {
		if(candidates[t].title.search(searchRegExp) != -1) {
		} else if(candidates[t].tags.join(" ").search(searchRegExp) != -1) {
		} else if(candidates[t].text.search(searchRegExp) != -1) {
	var results = primary.concat(secondary).concat(tertiary);
	if(sortField) {
		results.sort(function(a, b) {
			return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);
	return results;

|Author|Eric Shulman|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
>see [[SinglePageModePluginInfo]]
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
2010.11.30 2.9.7 use story.getTiddler()
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 1.0.0 Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 7, date: new Date(2010,11,30)};
config.paramifiers.SPM = { onstart: function(v) {
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
} };
if (config.options.chkSinglePageMode==undefined)
if (config.options.chkSinglePagePermalink==undefined)
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
if (config.options.chkTopOfPageMode==undefined)
if (config.options.chkBottomOfPageMode==undefined)
if (config.options.chkSinglePageAutoScroll==undefined)
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();

if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=story.getTiddler(title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
	else if (top)
	else if (bottom)
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
		else if (bottom)
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=story.getTiddler(title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=true;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=true;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;

|[img[pict/portret2.png][Ласкаво просимо!]]|Літературний сайт Володимира Малика|
|~| @@font-size:0.5em;// Всеукраїнський конкурс створення вебсайтів [[«Літературна візитка краю»|https://litvizytka.org.ua/2021]]//@@|
/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: url(pict/tiddler_bg.jpg) top left repeat;
	border-right: 4px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 4px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;

#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 10px;
	padding-right: 10px;
	background: green;
	color: lightyellow;
	font-size: 150%;
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: grey;
	color: white;
|Author|Eric Shulman|
|Original Author|Clint Checketts|
|Description|present a 'cloud' of tags (or links) using proportional font display|
<<cloud type action:... limit:... tag tag tag ...>>
<<cloud type action:... limit:... +TiddlerName>>
<<cloud type action:... limit:... -TiddlerName>>
<<cloud type action:... limit:... =tagvalue>>
* //type// is a keyword, one of:
** ''tags'' (default) - displays a cloud of tags, based on frequency of use
** ''links'' - displays a cloud of tiddlers, based on number of links //from// each tiddler
** ''references'' - displays a cloud of tiddlers, based on number of links //to// each tiddler
* ''action:popup'' (default) - clicking a cloud item shows a popup with links to related tiddlers<br>//or//<br> ''action:goto'' - clicking a cloud item immediately opens the tiddler corresponding to that item
* ''limit:N'' (optional) - restricts the cloud display to only show the N most popular tags/links
* ''tag tag tag...'' (or ''title title title'' if ''links''/''references'' is used)<br>shows all tags/links in the document //except// for those listed as macro parameters
* ''+TiddlerName''<br>show only tags/links read from a space-separated, bracketed list stored in a separate tiddler.
* ''-TiddlerName''<br>show all tags/links //except// those read from a space-separated, bracketed list stored in a separate tiddler.
* ''=tagvalue'' (//only if type=''tags''//)<br>shows only tags that are themselves tagged with the indicated tag value (i.e., ~TagglyTagging usage)
//note: for backward-compatibility, you can also use the macro {{{<<tagCloud ...>>}}} in place of {{{<<cloud ...>>}}}//
//all tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud systemConfig excludeMissing script>>}}}
//top 10 tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud limit:10 systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud limit:10 systemConfig excludeMissing script>>}}}
//tags listed in// [[FavoriteTags]]
{{{<<cloud +FavoriteTags>>}}}
{{groupbox{<<cloud +FavoriteTags>>}}}
//tags NOT listed in// [[FavoriteTags]]
{{{<<cloud -FavoriteTags>>}}}
{{groupbox{<<cloud -FavoriteTags>>}}}
//links to tiddlers tagged with 'package'//
{{{<<cloud action:goto =package>>}}}
{{groupbox{<<cloud action:goto =package>>}}}
//top 20 most referenced tiddlers//
{{{<<cloud references limit:20>>}}}
{{groupbox{<<cloud references limit:20>>}}}
//top 20 tiddlers that contain the most links//
{{{<<cloud links limit:20>>}}}
{{groupbox{<<cloud links limit:20>>}}}
2009.07.17 [1.7.0] added {{{-TiddlerName}}} parameter to exclude tags that are listed in the indicated tiddler
2009.02.26 [1.6.0] added {{{action:...}}} parameter to apply popup vs. goto action when clicking cloud items
2009.02.05 [1.5.0] added ability to show links or back-links (references) instead of tags and renamed macro to {{{<<cloud>>}}} to reflect more generalized usage.
2008.12.16 [1.4.2] corrected group calculation to prevent 'group=0' error
2008.12.16 [1.4.1] revised tag filtering so excluded tags don't affect calculations
2008.12.15 [1.4.0] added {{{limit:...}}} parameter to restrict the number of tags displayed to the top N most popular
2008.11.15 [1.3.0] added {{{+TiddlerName}}} parameter to include only tags that are listed in the indicated tiddler
2008.09.05 [1.2.0] added '=tagname' parameter to include only tags that are themselves tagged with the specified value (i.e., ~TagglyTagging usage)
2008.07.03 [1.1.0] added 'segments' property to macro object.  Extensive code cleanup
version.extensions.TagCloudPlugin= {major: 1, minor: 7 , revision: 0, date: new Date(2009,7,17)};
//Originally created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
//Currently maintained and enhanced by Eric Shulman
config.macros.cloud = {
	tagstip: "%1 tiddlers tagged with '%0'",
	refslabel: " (%0 references)",
	refstip: "%1 tiddlers have links to '%0'",
	linkslabel: " (%0 links)",
	linkstip: "'%0' has links to %1 other tiddlers",
	groups: 9,
	init: function() {
		config.macros.tagCloud=config.macros.cloud; // for backward-compatibility
			+'.tagCloud span {line-height: 3.5em; margin:3px;}\n'
			+'.tagCloud1{font-size: 80%;}\n'
			+'.tagCloud2{font-size: 100%;}\n'
			+'.tagCloud3{font-size: 120%;}\n'
			+'.tagCloud4{font-size: 140%;}\n'
			+'.tagCloud5{font-size: 160%;}\n'
			+'.tagCloud6{font-size: 180%;}\n'
			+'.tagCloud7{font-size: 200%;}\n'
			+'.tagCloud8{font-size: 220%;}\n'
			+'.tagCloud9{font-size: 240%;}\n'
	getLinks: function(tiddler) { // get list of links to existing tiddlers and shadows
		if (!tiddler.linksUpdated) tiddler.changed();
		var list=[]; for (var i=0; i<tiddler.links.length; i++) {
			var title=tiddler.links[i];
			if (store.isShadowTiddler(title)||store.tiddlerExists(title))
		return list;
	handler: function(place,macroName,params) {
		// unpack params
		var inc=[]; var ex=[]; var limit=0; var action='popup';
		var links=(params[0]&&params[0].toLowerCase()=='links'); if (links) params.shift();
		var refs=(params[0]&&params[0].toLowerCase()=='references'); if (refs) params.shift();
		if (params[0]&&params[0].substr(0,7).toLowerCase()=='action:')
		if (params[0]&&params[0].substr(0,6).toLowerCase()=='limit:')
		while (params.length) {
			if (params[0].substr(0,1)=='+') { // read taglist from tiddler
			} else if (params[0].substr(0,1)=='-') { // exclude taglist from tiddler
			} else if (params[0].substr(0,1)=='=') { // get tag list using tagged tags
				var tagged=store.getTaggedTiddlers(params[0].substr(1));
				for (var t=0; t<tagged.length; t++) inc.push(tagged[t].title);
			} else ex.push(params[0]); // exclude params
		// get all items, include/exclude specific items
		var items=[];
		var list=(links||refs)?store.getTiddlers('title','excludeLists'):store.getTags();
		for (var t=0; t<list.length; t++) {
			var title=(links||refs)?list[t].title:list[t][0];
			if (links)	var count=this.getLinks(list[t]).length;
			else if (refs)	var count=store.getReferringTiddlers(title).length;
			else 		var count=list[t][1];
			if ((!inc.length||inc.contains(title))&&(!ex.length||!ex.contains(title)))
				items.push({ title:title, count:count });
		if(!items.length) return;
		// sort by decending count, limit results (optional)
		while (limit && items.length>limit) items.pop();
		// find min/max and group size
		var most=items[0].count;
		var least=items[items.length-1].count;
		var groupSize=(most-least+1)/this.groups;
		// sort by title and draw the cloud of items
		var cloudWrapper = createTiddlyElement(place,'div',null,'tagCloud',null);
		for (var t=0; t<items.length; t++) {
			cloudWrapper.appendChild(document.createTextNode(' '));
			var group=Math.ceil((items[t].count-least)/groupSize)||1;
			var className='tagCloudtag tagCloud'+group;
			var tip=refs?this.refstip:links?this.linkstip:this.tagstip;
			if (action=='goto') { // TAG/LINK/REFERENCES GOTO
				var btn=createTiddlyLink(cloudWrapper,items[t].title,true,className);
			} else if (!links&&!refs) { // TAG POPUP
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,onClickTag,className);
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,
					function(ev) { var e=ev||window.event; var cmt=config.macros.cloud;
						var popup = Popup.create(this);
						var title = this.getAttribute('tiddler');
						var count = this.getAttribute('count');
						var refs  = this.getAttribute('refs')=='T';
						var links = this.getAttribute('links')=='T';
						var label = (refs?cmt.refslabel:cmt.linkslabel).format([count]);
						if (refs) {
						if (links) {
							var tiddler = store.fetchTiddler(title);
							var links=config.macros.cloud.getLinks(tiddler);
							for(var i=0;i<links.length;i++)
						e.cancelBubble=true; if(e.stopPropagation) e.stopPropagation();
						return false;
					}, className);
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Author:|Simon Baird <simon.baird@gmail.com>|
See http://mptw.tiddlyspot.com/#TagglyTagging


  parseTagExpr: function(debug) {

    if (this.trim() == "")
      return "(true)";

    var anyLogicOp = /(!|&&|\|\||\(|\))/g;
    var singleLogicOp = /^(!|&&|\|\||\(|\))$/;

    var spaced = this.
      replace(/\[\(/g," [[").
      replace(/\)\]/g,"]] ").
      replace(anyLogicOp," $1 ");

    var expr = "";

    var tokens = spaced.readBracketedList(false); 

    for (var i=0;i<tokens.length;i++)
      if (tokens[i].match(singleLogicOp))
        expr += tokens[i];
        expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); 

    if (debug)

    return '('+expr+')';


  getTiddlersByTagExpr: function(tagExpr,sortField) {

    var result = [];

    var expr = tagExpr.parseTagExpr();

    store.forEachTiddler(function(title,tiddler) {
      if (eval(expr))

      sortField = "title";

    result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});

    return result;

config.taggly = {

  lingo: {
    labels: {
      asc:        "\u2191", 
      desc:       "\u2193", 
      title:      "title",
      modified:   "modified",
      created:    "created",
      show:       "+",
      hide:       "-",
      normal:     "normal",
      group:      "group",
      commas:     "commas",
      sitemap:    "sitemap",
      numCols:    "cols\u00b1", 
      label:      "Tagged as '%0':",
      exprLabel:  "Matching tag expression '%0':",
      excerpts:   "excerpts",
      descr:      "descr",
      slices:     "slices",
      contents:   "contents",
      sliders:    "sliders",
      noexcerpts: "title only",
      noneFound:  "(none)"

    tooltips: {
      title:      "Click to sort by title",
      modified:   "Click to sort by modified date",
      created:    "Click to sort by created date",
      show:       "Click to show tagging list",
      hide:       "Click to hide tagging list",
      normal:     "Click to show a normal ungrouped list",
      group:      "Click to show list grouped by tag",
      sitemap:    "Click to show a sitemap style list",
      commas:     "Click to show a comma separated list",
      numCols:    "Click to change number of columns",
      excerpts:   "Click to show excerpts",
      descr:      "Click to show the description slice",
      slices:     "Click to show all slices",
      contents:   "Click to show entire tiddler contents",
      sliders:    "Click to show tiddler contents in sliders",
      noexcerpts: "Click to show entire title only"

    tooDeepMessage: "* //sitemap too deep...//"

  config: {
    showTaggingCounts: true,
    listOpts: {
      sortBy:     ["title","modified","created"],
      sortOrder:  ["asc","desc"],
      hideState:  ["show","hide"],
      listMode:   ["normal","group","sitemap","commas"],
      numCols:    ["1","2","3","4","5","6"],
      excerpts:   ["noexcerpts","excerpts","descr","slices","contents","sliders"]
    valuePrefix: "taggly.",
    excludeTags: ["excludeLists","excludeTagging"],
    excerptSize: 50,
    excerptMarker: "/%"+"%/",
    siteMapDepthLimit: 25

  getTagglyOpt: function(title,opt) {
    var val = store.getValue(title,this.config.valuePrefix+opt);
    return val ? val : this.config.listOpts[opt][0];

  setTagglyOpt: function(title,opt,value) {
    if (!store.tiddlerExists(title)) {
      store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");

      if (!store.getTaggedTiddlers(title).length) {

    return store.setValue(title, this.config.valuePrefix+opt, value == this.config.listOpts[opt][0] ? null : value);

  getNextValue: function(title,opt) {
    var current = this.getTagglyOpt(title,opt);
    var pos = this.config.listOpts[opt].indexOf(current);
    var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
    var newPos = (pos + 1) % limit;
    return this.config.listOpts[opt][newPos];

  toggleTagglyOpt: function(title,opt) {
    var newVal = this.getNextValue(title,opt);

  createListControl: function(place,title,type) {
    var lingo = config.taggly.lingo;
    var label;
    var tooltip;
    var onclick;

    if ((type == "title" || type == "modified" || type == "created")) {
      label = lingo.labels[type];
      tooltip = lingo.tooltips[type];

      if (this.getTagglyOpt(title,"sortBy") == type) {
        label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
        onclick = function() {
          return false;
      else {
        onclick = function() {
          return false;
    else {
      label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
      tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
      onclick = function() {
        return false;

    if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
      createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");

  makeColumns: function(orig,numCols) {
    var listSize = orig.length;
    var colSize = listSize/numCols;
    var remainder = listSize % numCols;

    var upperColsize = colSize;
    var lowerColsize = colSize;

    if (colSize != Math.floor(colSize)) {
      upperColsize = Math.floor(colSize) + 1;
      lowerColsize = Math.floor(colSize);

    var output = [];
    var c = 0;
    for (var j=0;j<numCols;j++) {
      var singleCol = [];
      var thisSize = j < remainder ? upperColsize : lowerColsize;
      for (var i=0;i<thisSize;i++)

    return output;

  drawTable: function(place,columns,theClass) {
    var newTable = createTiddlyElement(place,"table",null,theClass);
    var newTbody = createTiddlyElement(newTable,"tbody");
    var newTr = createTiddlyElement(newTbody,"tr");
    for (var j=0;j<columns.length;j++) {
      var colOutput = "";
      for (var i=0;i<columns[j].length;i++)
        colOutput += columns[j][i];
      var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); 
    return newTable;

  createTagglyList: function(place,title,isTagExpr) {
    switch(this.getTagglyOpt(title,"listMode")) {
      case "group":  return this.createTagglyListGrouped(place,title,isTagExpr); break;
      case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
      case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
      case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;

  getTaggingCount: function(title,isTagExpr) {
    if (this.config.showTaggingCounts) {
      var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
      if (tagCount > 0)
        return " ("+tagCount+")";
    return "";

  getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
    return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);

  getExcerpt: function(inTiddlerTitle,title,indent) {
    if (!indent)
      indent = 1;

    var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
    var t = store.getTiddler(title);

    if (t && displayMode == "excerpts") {
      var text = t.text.replace(/\n/," ");
      var marker = text.indexOf(this.config.excerptMarker);
      if (marker != -1) {
        return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
      else if (text.length < this.config.excerptSize) {
        return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
      else {
        return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
    else if (t && displayMode == "contents") {
      return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
    else if (t && displayMode == "sliders") {
      return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
    else if (t && displayMode == "descr") {
      var descr = store.getTiddlerSlice(title,'Description');
      return descr ? " {{excerpt{" + descr  + "}}}" : "";
    else if (t && displayMode == "slices") {
      var result = "";
      var slices = store.calcAllSlices(title);
      for (var s in slices)
        result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
      return result ? "\n{{excerpt excerptIndent{\n" + result  + "}}}" : "";
    return "";

  notHidden: function(t,inTiddler) {
    if (typeof t == "string")
      t = store.getTiddler(t);
    return (!t || !t.tags.containsAny(this.config.excludeTags) ||
        (inTiddler && this.config.excludeTags.contains(inTiddler)));

  createTagglyListNormal: function(place,title,useCommas,isTagExpr) {

    var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);

    if (this.getTagglyOpt(title,"sortOrder") == "desc")
      list = list.reverse();

    var output = [];
    var first = true;
    for (var i=0;i<list.length;i++) {
      if (this.notHidden(list[i],title)) {
        var countString = this.getTaggingCount(list[i].title);
        var excerpt = this.getExcerpt(title,list[i].title);
        if (useCommas)
          output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
          output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

        first = false;

    return this.drawTable(place,
      this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
      useCommas ? "commas" : "normal");

  createTagglyListGrouped: function(place,title,isTagExpr) {
    var sortBy = this.getTagglyOpt(title,"sortBy");
    var sortOrder = this.getTagglyOpt(title,"sortOrder");

    var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

    if (sortOrder == "desc")
      list = list.reverse();

    var leftOvers = []
    for (var i=0;i<list.length;i++)

    var allTagsHolder = {};
    for (var i=0;i<list.length;i++) {
      for (var j=0;j<list[i].tags.length;j++) {

        if (list[i].tags[j] != title) { 

          if (this.notHidden(list[i].tags[j],title)) {

            if (!allTagsHolder[list[i].tags[j]])
              allTagsHolder[list[i].tags[j]] = "";

            if (this.notHidden(list[i],title)) {
              allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
                    + this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";



    var allTags = [];
    for (var t in allTagsHolder)

    var sortHelper = function(a,b) {
      if (a == b) return 0;
      if (a < b) return -1;
      return 1;

    allTags.sort(function(a,b) {
      var tidA = store.getTiddler(a);
      var tidB = store.getTiddler(b);
      if (sortBy == "title") return sortHelper(a,b);
      else if (!tidA && !tidB) return 0;
      else if (!tidA) return -1;
      else if (!tidB) return +1;
      else return sortHelper(tidA[sortBy],tidB[sortBy]);

    var leftOverOutput = "";
    for (var i=0;i<leftOvers.length;i++)
      if (this.notHidden(leftOvers[i],title))
        leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

    var output = [];

    if (sortOrder == "desc")
    else if (leftOverOutput != "")

    for (var i=0;i<allTags.length;i++)
      if (allTagsHolder[allTags[i]] != "")
        output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

    if (sortOrder == "desc" && leftOverOutput != "")

    return this.drawTable(place,


  treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

    var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

    if (sortOrder == "desc")

    var indent = "";
    for (var j=0;j<depth;j++)
      indent += "*"

    var childOutput = "";

    if (depth > this.config.siteMapDepthLimit)
      childOutput += indent + this.lingo.tooDeepMessage + "\n";
      for (var i=0;i<list.length;i++)
        if (list[i].title != title)
          if (this.notHidden(list[i].title,this.config.inTiddler))
            childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);

    if (depth == 0)
      return childOutput;
      return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;

  createTagglyListSiteMap: function(place,title,isTagExpr) {
    this.config.inTiddler = title; 
    var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
    return this.drawTable(place,

  macros: {
    tagglyTagging: {
      handler: function (place,macroName,params,wikifier,paramString,tiddler) {
        var parsedParams = paramString.parseParams("tag",null,true);
        var refreshContainer = createTiddlyElement(place,"div");


        var tag = getParam(parsedParams,"tag");
        var expr = getParam(parsedParams,"expr");

        if (expr) {
        else {
          if (tag) {
          else {

      refresh: function(place) {
        var title = place.getAttribute("title");
        var isTagExpr = place.getAttribute("isTagExpr") == "true";
        var showEmpty = place.getAttribute("showEmpty") == "true";
        var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
        if (countFound > 0 || showEmpty) {
          var lingo = config.taggly.lingo;
          if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
                isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
            if (countFound == 0 && showEmpty)

  styles: [
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
" margin-top:0px; padding-top:0.5em; padding-left:2em;",
" margin-bottom:0px; padding-bottom:0px;",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
" border:0px; padding-left:0.3em;padding-right:0.3em;",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",

  init: function() {
    config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;



By Saq Imtiaz

config.formatters.unshift( {
  name: "inlinesliders",
  match: "\\<slider",
  lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
  handler: function(w) {
    this.lookaheadRegExp.lastIndex = w.matchStart;
    var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
    if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
      var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
      var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
      panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
      w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
   onClickSlider : function(e) {
    if(!e) var e = window.event;
    var n = this.nextSibling;
    n.style.display = (n.style.display=="none") ? "block" : "none";
    return false;

|''Description:''|TiddlyWiki russian interface plugin. Supports core up to 2.6.2|
|''Описание:''|Русификация TiddlyWiki. Поддерживает ядро до 2.6.2 включительно|
|''Version comment:''|Tested on v.2.6.0 and 2.6.1|
|''License:''|BSD open source license|
|''Idea:''|Глеб Тржемецкий (Gleb Trzhemetski), http://www.glebsite.ru|

	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>>'} });

	txtUserName: "Имя пользователя для подписывания Ваших правок",
	chkRegExpSearch: "Разрешить регулярные выражения при поиске",
	chkCaseSensitiveSearch: "Регистро-зависимый поиск",
	chkIncrementalSearch: "Последовательный поиск слово-за-словом",
	chkAnimate: "Разрешить анимацию",
	chkSaveBackups: "Сохранить старую копию при сохранении изменений",
	chkAutoSave: "Автоматическое сохранение изменений",
	chkGenerateAnRssFeed: "Генерировать RSS-ленту при сохранении изменений",
	chkSaveEmptyTemplate: "Генерировать пустой шаблон при сохранении изменений",
	chkOpenInNewWindow: "Открывать внешние ссылки в новом окне",
	chkToggleLinks: "Нажатие на ссылках для открытия заметок также и закрывает их",
	chkHttpReadOnly: "Скрывать возможности редактирования при обращении через протокол HTTP",
	chkForceMinorUpdate: "Не обновлять автора изменений и дату редактирования заметок",
	chkConfirmDelete: "Спрашивать подтверждение при удалении заметок",
	chkInsertTabs: "Использовать клавишу табуляции для вставления символа табуляции вместо перехода по полям",
	txtBackupFolder: "Имя папки для резервных копий",
	txtMaxEditRows: "Максимальное количество строк в окне редактирования",
	txtTheme: "Имя темы для использования",
	txtFileSystemCharSet: "Кодировка символов в файле TiddlyWiki для сохранения изменений (только для Firefox/Mozilla)" });

	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'"}); 

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 = ["Вс","Пн","Вт","Ср","Чт","Пт","Сб"];
config.messages.dates.daySuffixes = [
config.messages.dates.am = "утра";
config.messages.dates.pm = "дня";

	labelNoTags: "меток нет",
	labelTags: "метки: ",
	openTag: "Открыть метку '%0'",
	tooltip: "Показать заметки, помеченные как '%0'",
	openAllText: "Открыть всё",
	openAllTooltip: "Открыть все эти заметки",
	popupNone: "Нет других заметок, помеченных '%0'"});

	defaultText: "Заметка '%0' пока не создана. Создайте её двойным щелчком мышки",
	defaultModifier: "(отсутствует)",
	shadowModifier: "(встроенная служебная заметка)",
	dateFormat: "DD.0MM.YYYY",
	createdPrompt: "создана"});

	tagPrompt: "Введите метки, разделённые пробелами, в случае необходимости [[используйте двойные квадратные скобки|use double square brackets]], или добавьте существующие метки",
	defaultText: "Введите текст для '%0'"});

	text: "метки",
	tooltip: "Выберите существующую метку для добавления к этой заметке",
	popupNone: "Нет ни одной метки",
	tagTooltip: "Добавьте метку для '%0'"});

	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"}]});

	label: "Знайти",
	prompt: "Пошук по матеріалам сайту",
	accessKey: "F",
	successMsg: "Знайдено %0 заміток з текстом %1",
	failureMsg: "Не знайдено жодної замітки з текстом %0"});

	lklabel: "мітки: ",
	labelNotTag: "(нема міток)",
	tooltip: "Список заметок, помеченных как '%0'"});

	dateFormat: "DD.0MM.YYYY"});

	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 = "Заметки, которые были изменены";

	label: "закрити всі",
	prompt: "Закрыть все отображённые заметки (за исключением заметок в состоянии правки)"});

	label: "пряме посилання",
	prompt: "Создание адресной строки для открытия TiddlyWiki с текущими открытыми заметками"});

	label: "зберегти",
	prompt: "Сохранение TiddlyWiki со всеми заметками",
	accessKey: "S"});

	label: "нова замітка",
	prompt: "Создать новую заметку",
	title: "Новая заметка",
	accessKey: "N"});

	label: "новий запис",
	prompt: "Создать новую заметку с текущей датой и временем",
	accessKey: "J"});

	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'} ]}

	wizardTitle: "Управление модулями",
	step1Title: "Подключенные модули",
	step1Html: "<input type='hidden' name='markList'></input>",
	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'}

	moreLabel: "ещё",
	morePrompt: "Показать дополнительные команды",
	lessLabel: "кратко",
	lessPrompt: "Скрыть дополнительные команды",
	separator: "|" });

	label: "обновить",
	prompt: "Обновить отображение TiddlyWiki" });

	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", 
	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>", 
	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: []
	} });

	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"

	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>", 
	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'} } });


	text: "Закрити",
	tooltip: "Закрыть эту заметку"});

	text: "закрыти інші",
	tooltip: "Закрыть все другие заметки"});

	text: "редагувати",
	tooltip: "Исправить эту заметку",
	readOnlyText: "просмотр",
	readOnlyTooltip: "Просмотр исходного текста этой заметки"});

	text: "зберегти",
	tooltip: "Сохранить изменения этой заметки"});

	text: "скасувати",
	tooltip: "Отменить изменение этой заметки",
	warning: "Вы действительно уверены, что Вы хотите потерять все Ваши изменения заметки '%0'?",
	readOnlyText: "возврат",
	readOnlyTooltip: "Просмотр этой заметки в нормальном режиме"});

	text: "видалити",
	tooltip: "Удалить эту заметку",
	warning: "Вы уверены, что хотите удалить '%0'?"});

	text: "пряме посилання",
	tooltip: "Адресная строка для этой заметки"});

	text: "посилання",
	tooltip: "Показать все заметки, которые ссылаются на эту заметку",
	popupNone: "Нет ссылок"});

	text: "перехід",
	tooltip: "Переход на другую открытую заметку"});

	text: "синхронизация",
	tooltip: "Управление синхронизацией этой заметки с сервером или внешним файлом",
	currentlySyncing: "<div>Синхронизирую с помощью <span class='popupHighlight'>'%0'</span> с:</"+"div><div>хранилищем: <span class='popupHighlight'>%1</span></"+"div><div>рабочее пространство: <span class='popupHighlight'>%2</span></"+"div>", 
	notCurrentlySyncing: "Пока не синхронизировано",
	captionUnSync: "Остановить синхронизацию этой заметки",
	chooseServer: "Привести в соответствие эту заметку с другим сервером:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

	text: "поля",
	tooltip: "Отображение расширенных параметров этой заметки",
	emptyText: "У этой заметки нет расширенных параметров",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "Поле", type: 'String'},
			{name: 'Value', field: 'value', title: "Значение", type: 'String'} ],
		rowClasses: [],
		buttons: [] } });

	DefaultTiddlers: "[[GettingStarted]]",
	MainMenu: "[[GettingStarted]]",
	SiteTitle: "Моя TiddlyWiki",
	SiteSubtitle: "гипертекстовая записная книжка",
	SiteUrl: "",
	SideBarOptions: '',
	SideBarTabs: '',
	TabMore: '<<tabs txtMoreTab "нет" "Отсутствующие заметки" TabMoreMissing "потери" "Потерянные заметки" TabMoreOrphans "служебные" "Служебные заметки" TabMoreShadowed>>' });

	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: "Эта служебная заметка содержит полный вид заголовка страницы" });


|Created by|SaqImtiaz|
Provides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.

<<toggleSideBar "Toggle Sidebar">>

{{{<<toggleSideBar>>}}} <<toggleSideBar>>
additional options:
{{{<<toggleSideBar label tooltip show/hide>>}}} where:
label = custom label for the button,
tooltip = custom tooltip for the button,
show/hide = use one or the other, determines whether the sidebar is shown at first or not.
(default is to show the sidebar)

You can add it to your tiddler toolbar, your MainMenu, or where you like really.
If you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:
{{{ .HideSideBarButton {float:right;} }}}

*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour. 
*20-07-06: version 0.11
*27-04-06: version 0.1: working.


         styleHide :  "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
         styleShow : " ",
         arrow1: "«",
         arrow2: "»"

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
          var tooltip= params[1]||'toggle sidebar';
          var mode = (params[2] && params[2]=="hide")? "hide":"show";
          var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
          var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
          var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
          if (mode == "hide")

config.macros.toggleSideBar.onToggleSideBar = function(){
          var sidebar = document.getElementById("sidebar");
          var settings = config.macros.toggleSideBar.settings;
          if (sidebar.getAttribute("toggle")=='hide')
              this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
               this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);

     return false;

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");

[[Головна|Ласкаво просимо!]]
[[Про сайт]]
<<toggleSideBar 'Корисні посилання'>>

Введите текст для 'systemPalette'
# """Бірюкова Л. Теплий промінь пам’яті // Зоря Полтавщини. – 2016. – 22 берез. – С. 3. : фот."""
# """Віценя Л. Писав, "щоб виправити духовний хребет народу" : [про В. К. Малика] // Зоря Полтавщини. – 2016. –19 лютого. – С. 13. : фот."""
# """Володимир Кирилович Малик : [нарис життя і творчос-ті] // Баклай Н. Літературні постаті Лубенщини : біобібліографічні нариси. – Лубни : Лубни, 2013. – С. 47-48. : фот."""
# """Козюра І., Козюра В. Володимир Малик: життя і творчість. – Полтава:  АСМІ, 2002, - 132 с."""
# """Козюра І. Незабутній Володимир Малик : до 95-річчя віддня народження / І. Козюра, В. Козюра // Лубенщина. –2016. – 13 лют. – С. 4. : фот."""
# """Кревська Г. Верхній Вал : автору книги "Черлені щити"та "Горить свіча" : [вірш] // Вісник. – 2018. – 28 лют.(No 9). – С. 2."""
# """Малик В.К. Синя книга [Текст]: щоденник (записки про себе). 1958-1998 / В.К. Малик; [упорядники: О.В.Сиченко, Н.О.Сиченко], - 2-ге вид., без змін. – Полтава: ТОВ «АСМІ», 2011. – 308 с., іл.."""
# """Печора О. Криниця слова : [вірш, присвячений пам’яті В. К. Малика] // Печора О. А. Стежина в світ : вірші школярам і студентам. – Лубни : Інтер Парк, 2017. – С. 159."""
# https://uk.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BB%D0%B8%D0%BA_%D0%92%D0%BE%D0%BB%D0%BE%D0%B4%D0%B8%D0%BC%D0%B8%D1%80_%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BE%D0%B2%D0%B8%D1%87
# https://chl.kiev.ua/KEY/Books/ShowBook/695
# http://lubnilib.blogspot.com/
|[img[pict/contacts.png]]|37500 м. Лубни Полтавської області, вул. Монастирська, 36|
|~|(053615) 7-17-99, 63-002, 70-838|
[[Написати листа вебмайстру|mailto:a_farisey@ukr.net?subject=website]]
«Лубни, 1985 рік. Тиха вуличка Лісна, дім №1. Невелика кімната, начинена книгами. Горить простенька настільна лампа. А над столом схилився над аркушем білого паперу життям умудрений, роками посріблений муж, книжник, громадянин, і лягають на папір дивні слова про давні часи, про закованих у броню витязів. Про невідомого геніального поета, що оспівав їх, про те, як «коні іржуть за Сулою – дзвенить слава в Києві».
>Ігор Козюра, Валерій Козюра
<iframe width="320" height="240" src="https://www.youtube.com/embed/XRwsOtpTvU8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Книг Володимира Малика ніколи не забудеш, і чим більше читаєш, тим владніше входять вони у серце, у свідомість, у життя. Стають вірними друзями й мудрими вчителями.
>з учнівського твору
<html><iframe width="320" height="200" src="https://www.youtube.com/embed/o4GZxFevlM0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
Інсценізацію уривків з роману Володимира Малика "Чумацький шлях" у виконанні учасників театрального колективу "МеТа" можна переглянути у розділі [[Твори Малика у нашому шкільному житті]].
Двадцять три роки минуло з того дня коли відійшов у вічність невтомний трудівник, мудра і скромна людина, чудовий письменник. А герої його книг живуть і будуть жити  вічно, плекаючи  в душах любов до Батьківщини. Ми, лубенці, свято шануємо пам’ять Володимира Кириловича Малика.

4 грудня 1998 року центральній районній бібліотеці, активним читачем якої він був (на кінець життя письменника нараховувалось 10000 примірників книг на 14 мовах) рішенням Лубенської районної ради було присвоєно ім’я  Володимира Малика.
| [img(90%+,+)[shana/tablychka.jpg]] | [img(90%,+)[shana/vystavka.jpg]] |
| //Лубенська центральна районна бібліотека імені Володимира Малика// | //Виставка у бібліотеці// |
У 1999 році створено благодійний фонд імені письменника Володимира Малика «Слово», основною метою якого є увічнення пам’яті Майстра історичного роману, популяризація його творчості, підтримка обдарованої молоді. Голова фонду - Олександр Сиченко.
|У цьому ж році встановлено меморіальний знак біля будинку письменника за адресою: м.Лубни, вул. Лісова, 1. (Автори – полтавський скульптор Микола Миколайович Цись і лубенський архітектор Олександр Іванович Зот). | [img(90%+,+)[shana/doshka.jpg]] |
До ювілею письменника у 2001 році було створено відеофільм «Лицар слова,  добра і любові» (автори Ніна Малій та Олександр Кузьмінський).
Фрагмент із фільму:
<iframe width="320" height="200" src="https://www.youtube.com/embed/vxAQZgEZcrg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
У пам'ять про письменника  2001 року Лубенською міською радою  за пропозицією Фонду імені Володимира Малика «Слово» та редакції газети «Лубенщина» засновано Премію імені В.Малика.

Тоді само 3-й провулок вулиці Степової в м.Лубни було перейменовано на вулицю імені Володимира Малика.
| [img(100%+,+)[shana/kozyura.jpg]] |2003 року вийшла книга Валерія та Ігоря Козюр «Володимир Малик – життя і творчість»|
| [img(100%+,+)[shana/chernobr.jpg]] |Напередодні 90-річчя від дня народження письменника у 2008 році видано збірку «Чорнобривці», куди ввійшли спогади, оповідання «Маня», початок незакінченого В.Маликом одноіменного автобіографічного роману, поетична легенда «Журавлі-журавлики» та поезії молодих років письменника.|
У 2009 році, за ініціативою батьківського комітету та педагогів Лубенського закладу загальної середньої освіти №4, створено музейну кімнату Володимира Малика. Тут зберігається багато особистих речей літератора (більшість їх подарував Володимир Сиченко), деякі документи, книги різних років, світлини, листи. 
| [img(100%+,+)[shana/synja.jpg]] |У 2010 році в Полтаві видано щоденникові записи Володимира Малика «Синя книга», котрі відразу перетворився на бібліографічну рідкість.|
У 2012 році ім’я Володимира Малика було внесене до «Альманаху пошани і визнання Полтавщини. 100 видатних особистостей Полтавщини минулих століть».
| [img(100%+,+)[shana/kozyura2.jpg]] |У 2016 році вийшла присвячена 95-літтю з дня народження письменника збірка «Незабутній Володимир Малик», що містила історико-біографічні нариси про його життя і творчість краєзнавців Ігоря та Валерія Козюр, а також спогади, вибрані вірші та епіграми сина письменника Олександра Сиченка.|
У 2017 році у рамках літературно-краєзнавчого проекту «Земляки», у рамках програми CHOICE у Лубнах з’явився новий  літературно-краєзнавчий маршрут «Лубни Володимира Малика».
| [img(100%+,+)[shana/marshrut1.jpg]] | [img(100%,+)[shana/marshrut2.jpg]] |
| //Створення маршруту на карті// | //Учасники літературно-краєзнавчого маршруту// |
Мета проекту – популяризація творів Малика, ознайомлення полтавців із Лубнами – містом у якому він понад 40 років жив, працював та неодноразово згадував у своїх творах письменник.

У 2020 році світ побачило ювілейне видання «Я йшов шляхом українства», що містить листи та спогади письменника, та трикнижжя Володимира Малика «Спогади. Листи до брата і друга» (листи письменника до Петра Сиченка), упорядковані Олександр Сиченком та Ніною Іваницькою (Сиченко), видане комунальним видавництвом в м.Лубни.
| [img(100%,+)[shana/spogady.jpg]] | [img(100%,+)[shana/ukr.jpg]] |
Презентаця книг від сина Малика Олександра Сиченка в Полтавській обласній універсальній науковій бібліотеці імені І.П.Котляревського:
<iframe width="320" height="240" src="https://www.youtube.com/embed/eUp6U3oXrf8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
| [img(100%+,+)[shana/100rik.jpg]] |У серії «Письменники Полтавщини» Полтавської ОУНБ імені І.П.Котляревського вийшов [[бібліографічний покажчик|https://drive.google.com/file/d/1E9KayKe6xnCwFvfiXKQ85cN435byWrRL/view?usp=sharing]] «Володимир Кирилович Малик (1921–1998). До 100-річчя від дня народження», де репрезентуються публікації письменника та наукові, публіцистичні, художні джерела про нього і його творчість.|
Заметка 'Малик на сторожі Лубенських святинь' пока не создана. Создайте её двойным щелчком мышки
!Про письменника
;Презентація книг від сина Володимира Малика
<iframe width="320" height="240" src="https://www.youtube.com/embed/eUp6U3oXrf8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
;Виставка до 100-річчя Володимира Малика
:<html><iframe width="320" height="240" src="https://www.youtube.com/embed/Q4-1UJfUzac" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
;Урочистості з нагоди вручення літературно мистецької премії імені Володимира Малика
:<html><iframe width="320" height="240" src="https://www.youtube.com/embed/iKPlkC0d-Z8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
;Конкурс малюнків до 100 річчя Володимира Малика
:<html><iframe width="320" height="240" src="https://www.youtube.com/embed/PzTGmAY55qY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
;Таємний посол. Книга І. «Посол Урус-шайтана»
:<html><iframe width="320" height="240" src="https://www.youtube.com/embed/oaDnQD0yvyE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
;Таємний посол. Книга ІІ. «Фірман султана»
:<html><iframe width="320" height="240" src="https://www.youtube.com/embed/54bR61082zE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
;Таємний посол. Книга ІІІ. «Чорний вершник»
:<html><iframe width="320" height="240" src="https://www.youtube.com/embed/SX8Htm_0SNI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
;Таємний посол. Книга IV. «Шовковий шнурок»
:<html><iframe width="320" height="240" src="https://www.youtube.com/embed/4hFHgdm8w3U" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
Володимир Кирилович був невичерпним генератором яскравих, непересічних ідей і невтомним трударем, який з безмежним терпінням втілював свої задуми в життя.

Лубенці ставали помічниками і соратниками письменника в боротьбі за збереження природних багацтв краю, його історичних та культурних пам’яток. 

У центрі міста, на Володимирському майдані височить пам’ятник давньоруському воїну-літописцю, який передає юному отроку поему «Слово о полку Ігоревім». Малик був серед тих, хто причетний до створення цього славного монумента. Ми пізнаємо літературного героя Славуту, який ніби зійшов зі сторінок роману «Черлені щити», щоб назавжди залишитись зі своїми земляками.
| [img(50%,+)[svjat/litopysets.JPG]] |
| //Пам'ятник Літописцю// |
У дні 1000-літнього ювілею, восени 1988 року Володимир Кирилович був справді всюдисущим. На Верхньому Валу розповідав численним гостям захоплюючу історію виникнення міста-фортеці.
| [img(100%,+)[svjat/v_val.jpg]] | //Верхній Вал - давнє фото// |
| [img(100%,+)[svjat/v_val_suchast.jpg]] | //Верхній Вал - сучасне фото// |
На полі міського стадіону обговорював з режисером історичні образи та костюми дійових осіб величного театралізованого свята «Линуть віки над Сулою».

А вже через кілька годин звертався на мітингу до жителів міста з нагоди відкриття пам’ятника воїну-захисникові Русі. «Коли я вдивляюся в обличчя цього древнього воїна, то мені здається, що це сам засновник нашого міста, великий князь Володимир став на гранітному п’єдесталі. Він і почав ставити укріплені городи по Десні, Острі і по Сулі. За це йому найвища честь. А воїнам, що захищали та розбудовували Лубни, – довічна слава».
| [img(50%,+)[svjat/volodymyr.jpg]] |
| //Пам'ятник давньоруському воїну-захиснику// |
А ще були щирі спілкування з земляками на читацьких конференціях, на вулицях святкового міста, із хліборобами древнього Кснятина.

Велика заслуга Малика у спорудженні комплексу «Дзвони Всесвіту» на Кургані Скорботи, поблизу Лубен, присвяченого жертвам голодомору 1932-1933 років. Щороку, у першу суботу вересня, приходив він разом із земляками до підніжжя Зажур-гори, щоб віддати данину пам’яті мільйонів жертв штучного голодомору. Виважено і щиро говорив : «…хочу одного – щоб ніколи більше не повторилося лихо на нашій щедрій землі, що, на думку мудрих і працьовитих голландців, може прогодувати півтора мільярда людей».
| [img(50%,+)[svjat/dzvin.jpg]] |
| //Дзвін на Кургані Скорботи// |
Був у Володимира Кириловича «традиційний» маршрут до села Ісківці на батьківщину письменника та етнографа О.С.Афанасьєва-Чужбинського, де не раз бував Кобзар, щоб взяти участь у щорічних Шевченківських святах, започаткованих з його ініціативи. 
| [img(50%,+)[svjat/krynytsja.JPG]] |
| //Шевченкова криниця// |
Збулися пророчі слова Чужбинського над могилою Кобзаря: 
:Покоління поколінню 
:Об тобі розкаже, 
:І твоя, Кобзарю, слава,
:Не вмре, не поляже…
Письменник був ініціатором написання листа-звернення громадськості міста до світської і церковної влади України, у якому піднімалося питання про реставрацію Мгарського Спасо-Преображенського монастиря та повернення його в користування Українській православній церкві. А потім, коли питання було вирішене і монастир став діючим, письменник до останніх днів цікавився ходом реставраційних робіт, допомагав чим міг.
| [img(50%,+)[svjat/monastyr.jpg]] |
| //Мгарський Спасо-Преображенський монастир// |
Не був байдужим письменник до екології Лубенщини. «Окрасою Лубен» вважав Лису гору і рішуче виступив проти використання цієї унікальної природної пам’ятки Лубенщини для спортивних тренувань, а також проти перетворення її схилів на дачний кооператив. «Зусиллями багатьох людей Лису гору врятовано. Але для того щоб «замах» на гору ніколи не повторювався, варто було б оголосити Лису гору з прилеглою охоронною зоною природним та історичним заповідником Лубенщини».
| [img(100%,+)[svjat/gora_stara.jpg]] | //Лиса гора - давнє фото// |
| [img(100%,+)[svjat/gora_nova.jpg]] | //Лиса гора - сучасне фото з того ж ракурсу// |
| [img(100%,+)[svjat/gora_plan.jpg]] | //Лиса гора - Генеральний план// |
Малик разом із письменником Петром Лубенським викладав власні думки щодо оздоровлення річки Сули. Пропозиція літераторів була простою  та доступною для реалізації. Полягала в тому,  щоб насипати невелику дамбу, яка б уповільнила течію Сули, піднявши рівень води. Через  декілька років річка сама  змогла б видужати, сама  себе врегулювати. Прикро, що далеко не всі задуми  Малика втілилися в життя.
| [img(50%,+)[svjat/sula.jpg]] |
| //Річка Сула поблизу Лубен// |
У пам'ять про письменника 2001 року Лубенською міською радою за пропозицією Фонду імені Володимира Малика «Слово» та редакції газети «Лубенщина» засновано Премію імені В.Малика для відзначення письменників, літераторів, науковців, працівників освіти й культури, журналістів, митців, ділових людей, громадських та державних діячів. 

Присуджують за найкращі творчі здобутки, присвячені темі історії України та рідного краю.

Номінації: «Література і публіцистика»; «Краєзнавство і народна творчість»; «Мистецтво і монументальна скульптура».

Вручається кожного року напередодні дня народження В.Малика.

Лауреати та дипломанти премії імені В.Малика 2021 року:
<a href="premija/001.jpg" rel="iLoad|premija"><img src="premija/001.png"/></a>
<a href="premija/002.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/003.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/004.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/005.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/006.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/007.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/008.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/009.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/010.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/011.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/012.jpg" rel="iLoad|premija"><img src=""/></a>
<a href="premija/013.jpg" rel="iLoad|premija"><img src=""/></a>
[[Завантажити презентацію|https://drive.google.com/file/d/1azH4K3oIumnFF8eWZnh4J50PsywdFJ90/view?usp=sharing]]
''Сайт розроблено в рамках проведення всеукраїнського конкурсу створення вебсайтів [[«Літературна візитка краю»|https://litvizytka.org.ua/2021]].''
;Команда: учні 9-Б класу:
:Ростислав Бондаренко;
:Ярослав Кочубей;
:Анастасія Сластнікова;
:Юрій Яковенко.
| [img(50%,)[photos/team.jpg]] |
:завідуюча шкільною бібліотекою Наталія Вікторівна Панченко.
;Мета команди:
:розповісти про відомого українського письменника, лауреата літературних премій імені Лесі Українки, Григорія Сковороди та Фонду Тараса Шевченка, лубенця Володимира Кириловича Малика. Його з любов'ю називаємо "український Вальтер Скот", "козацький Дюма", "чарівник з берегів Сули".
;Творці сайту:
*дослідили життєвий шлях письменника;
*дізналися про тяжкі роки перебування його в концентраційних таборах Німеччини;
*оцінили вклад письменника в культурний розвиток Лубенщини;
*глибоко познайомилися з творчістю свого земляка, яка, відкриваючи правдиві сторінки історії України, формує національну свідомість підростаючого покоління, дарує особливу художньо-естетичну ауру.
| [img(50%,)[photos/work.jpg]] |
!Дитячі роки
Народився Володимир Кирилович Сиченко (Малик) 21 лютого 1921 року в селі Новосілки Бишівського району на Київщині в селянській родині, успадкувавши від батьків-хліборобів любов до землі та праці на ній. 
| [img(100%,+)[bio/batky.jpg]] | //Батьки письменника Сиченко Мотрона Василівна, Сиченко Кирило Пилипович// |
| [img(100%,+)[bio/dytynstvo.jpg]] | //З братом Михайлом// |
| [img(100%,+)[bio/hata.jpg]] | //Хата, в якій пройшли дитячі роки письменика// |
У 1928 році Володимир пішов до школи в сусіднє селі Ясногородці. Хлопчик був відмінником у навчанні, любив читати, слухати радіо, мріяв стати письменником. У юному віці йому вдалося сконструювати детекторний приймач.

Дванадцятирічним підлітком пережив голодомор 1932–1933 років. Ті вражаючі моменти, які довелося бачити своїми очима, залишили  слід на все життя . 

«З колгоспу вивезли все. Спочатку один «план», потім – зустрічний, пізньої осені – другий зустрічний. Активісти та комсомольці ходили по хатах, «трусили» жито, пшеницю,  забирали все: і кукурудзу, і квасолю. Штирями щупали по городах ями з прихованим зерном. Під весну ставало все скрутніше. Пам’ятаю, яка радість була, коли дядя Ваня прислав з Марійської республіки посилку з сухарями. Потім мати пекла млинці з жолудів, змелених батьком у млині, з буряками та висівками. Люди тихо гинули у своїх хатах, на полях, на вулицях… Точного обліку загиблих ніхто не вів. Ховали в братських могилах". 

Назавжди залишилась у пам’яті Володимира Кириловича жахлива подія, свідком якої він став у травні 1933-го – трагічна загибель крихітної дівчинки Мані, яка стала жертвою збожеволілої від голоду матері. Майже через 60 років зміг розповісти про це письменник у болісному оповіданні «Маня» на сторінках газети «Лубенщина». 

Навчаючись у шостому класі, Володимир написав оповідання про голод. Але події, зображені у творі, переніс у Туреччину, бо своїм дитячим розумом збагнув, що писати про нашу країну небезпечно. Читав його в сільбуді, а люди слухали й плакали. Та через кілька тижнів батька викликали в сільську раду, де погрожували Соловками за неправильне виховання сина. Надовго запам’ятав хлопець батькову «науку» ремінцем. 
!Юнацькі роки, обпалені війною 
Після закінчення школи Володимир Сиченко рік навчався в Київському автотехнікумі, а з 1938 року – на філологічному факультеті Київського університету ім. Т.Г.Шевченка. Студент відвідував літературний гурток, почав складати вірші, а 1940 року відбувся  дебют, коли за сприяння відомого українського поета Андрія Малишка в журналі «Молодий більшовик» були надруковані перші твори.
| [img(50%,+)[bio/stud.jpg]] |
Незабаром розпочалася важка, багаторічна війна з фашистами. Найприкріші, найтяжчі випробування довелося пережити  Малику на початку Другої світової. У 1941 році Володимир вчився на третьому курсі філологічного факультету Київського університету. Та вже 30 червня у складі студентського батальйону юнак вирушив копати протитанкові рови в Білогородці. Вступив до народного ополчення, працював на оборонних роботах під Києвом та Харковом. Ненавчені у військовій справі, необстріляні студенти зазнали гонінь по окупованих просторах України під осінніми дощами, під розривами снарядів. Короткі, часом моторошні спогади  Малика читаються сьогодні як глибоко емоційні документи про пережите і самим письменником, і нашим народом. Ось лише кілька записів:
«Літаки йшли низько – вздовж полів. Ми вдарили коней, але дорога була запруднена підводами. Бомби, як чорні поросята, з виском летіли прямо на людей. Вибуховою хвилею нас вирвало з підводи. Мене вдарило в ноги. Злетів правий черевик. Я схопився – і тут же впав від болю. Щеміло також ліве плече. Сорочка зачервоніла від крові».

Володимир Кирилович отримав поранення в праву ногу та ліве плече. Вперше смерть пройшла поруч з майбутнім письменником. На третій день походу Володимир зрозумів, що стає тягарем для своїх товаришів, а тому сказав їм іти далі й не чекати його.

Повернення додому відібрало всі сили. Як результат – тиждень не міг піднятися з ліжка. Виходити на вулицю юнак почав лише через кілька місяців.

Улітку 1942 року німецькою жандармерією був арештований брат Михайло. Йому загрожувало вивезення на роботи до Німеччини. Мати вмовила Володимира поїхати замість молодшого брата. Старший син не міг не послухати матері. Пішов до сільського старости, і його «обміняли» на брата.

Так майбутній письменник потрапив до Німеччини, у табір, оточений колючим дротом, де пережив невимовні муки, голод, неодноразову загрозу смерті.

У місті Гота мешкали в кімнатах по 16 осіб. Відбій був о 22.00., підйом о 6.00. Годували страшною баландою, яку перші дні Володимир  не їв. Хлопець працював  на пневматичному пресі та  стругальному верстаті. За спогадами письменника: «Життя у Готі було тяжке, найтяжче, мабуть, за увесь час мого перебування в Німеччині. Працювали з семи годин ранку до 18.00. Дошкуляв голод. Я почав худнути…».

На знак протесту проти поганої баланди Володимир Кирилович оголосив голодування. Витримав десять днів без їжі. У важку хвилину допоміг німець, підгодовуючи полоненого. 

Протест не був марним: через декілька днів остарбайтерів почали годувати краще.

На третій тиждень свого перебування в Гота В.Малик написав листа додому. Через місяць отримав з Новосілок посилку вагою 250 гр. (два коржики, перекладені салом). Коли повернувся додому, дізнався, що йому було надіслано 250 таких посилок.

31 грудня 1942 року полоненого перевили на нове місце роботи. Тепер він мив паровозні колеса в депо на станції Філіпсталь (земля Гессен). Голодував і тут, але рятували вилазки на німецькі городи.

Восени 1944 року юного Сиченка  відправили в розпорядження Управління залізниці в Ерфруті. Будинок управління розбомбили, і він разом з іншими розбирав завали. Жив з товаришами у вагоні на залізничній станції. Наприкінці березня  вирішив тікати. Потягом поїхав на Схід, у бік України.

На одній із станцій його впіймав  німецький патруль. Володимир розповів легенду, що  працює пекарем у Кельні, і його направили на роботи до пекарні. А через 20 днів, 12 квітня 1945 року, місто  визволили американські війська.

Наприкінці травня 1945  Володимир  був перевезений з американської зони в радянську, у місто Мейсен. У вересні 1945   наказали всім остербайтерам пройти фільтраційну комісію. Після кількох годин допиту та намагання вибити  признання про службу в армії Власова, Володимиру Сиченку був виписаний бланк, з яким він міг повернутися додому. Спочатку всіх повезли у Краків, а потім доставили у місто Городок в Україні.
| [img(50%,+)[bio/tabor.jpg]] |
Тут виявилося, що необхідно пройти ще одну фільтраційну комісію. Але Володимир Сиченко не пішов на комісію, а власноруч на звороті свого бланка написав, що до фізичної праці не придатний. І таким чином поїхав на Київ. А з Києва через Мотовилівку дістався до Новосілок. 
<iframe width="320" height="240" src="https://www.youtube.com/embed/rf4z2iuapDg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Лише в жовтні  Володимир Кирилович повернувся до батьківського подвір’я. 

Після війни Володимир Кирилович працював у Ясногородській середній школі, закінчивши заочно університет. Одначе бажаного спокою, душевної рівноваги, які так потрібні творчій людині, не було. У 1953 році через переслідування МВС разом з дружиною та сином переїхав із Київщини в місто Лубни, де й прожив останні 45 років. 
!Край, де народилися легенди...
Наше місто Лубни, засноване 988 року, як частина міст-фортець Посульської оборонної лінії, князем Володимиром Святославовичем, дихало славною тисячолітньою історією. 

Пам’ятає древнє місто переможні битви руських воїнів проти половецьких завойовників. Це про них рядки з «Слова о полку Ігоревім»: «Коні ржуть за Сулою, Гримить слава у Києві!». Пам’ятає і останній бій поблизу Лисої гори борця за народну волю Северина Наливайка. І роки козаччини, коли лубенці брали участь у славних морських походах Самійла Кішки і Петра Сагайдачного. Та й доля останнього кошового отамана Запорізької Січі, уродженця Посульського краю Петра Калнишевського свідчить про мужність, відвагу та незламність козацького духу.

Гордо височить над Сулою Мгарський Спасо-Преображенський монастир, архітектурна пам’ятка XVIII століття, свідок багатьох історичних подій.

Володимир Кирилович відчув особливу ауру давнього міста. Не міг не відчути, адже з дитячих літ був закоханий у народні легенди, перекази, думи та пісні. 

Молодий вчитель знайомився з історичною літературою, засиджувався в архівах, виїжджав на місця, де колись жили його майбутні герої. Письменник задумав своїми творами наблизити події далекого і героїчного минулого до сучасників.

Лубенчани, поглядаючи на вікно будинку новоприбулого вчителя, що світилося серед темних ночей аж до ранку, підозріло похитували головами «Чи не чарівник, бува?…»

Першою народилась казка-легенда «Журавлі-журавлики», з якою молодий поет увійшов у літературу. А сталося це так.

Одного сонячного червневого дня 1956 року в редакцію видавництва “Молодь” зайшов стрункий чоловік і запропонував письменникові Б.Чайковському прочитати свою поему-казку “Журавлі-журавлики”. Ознайомившись з нею, Б.Чайковський з деяким сумнівом у душі дав згоду на друк цього твору. І не помилився. Уже не одне десятиліття твори Володимира Кириловича читають діти, молодь і дорослі. Адже, за словами того ж Б. Чайковського, письменник “... заворожує чудовими й чарівними мандрами з країни в країну, з епохи в епоху, примушує радіти і ридати, любити і ненавидіти, переживати як власні, знегоди й перемоги героїв».

І на обкладинці кольорової книжечки було вигадане ім’я Володимир Малик. Як виявилося, Малик – це дівоче прізвище його дружини. Коли Володимир ніс свій рукопис у видавництво, вона порадила взяти це прізвище як оберіг.
<html><iframe width="320" height="240" src="https://www.youtube.com/embed/P-Cswq1AQ8U" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
!Творчість Володимира Малика 
Згодом почали одна за одною виходити з-під його пера під цим псевдонімом казки-легенди для молодших читачів з історії українського народу: «Чарівний перстень» (1959), «Месник із лісу» (1962), «Червона троянда» (1963), «Микита Кожум’яка» (1967) «Воєвода Дмитро» (1972).

У літературному доробку письменника є відомі пригодницькі повісті для читачів середнього шкільного віку, а саме: «Чорний екватор» (1960), «Новачок» (1965), «Слід веде до моря» (1975) «Двоє над прірвою (1983)».

Найбільше Володимира Малика знають як автора історичних романів. Серед них найпопулярніші тетралогія «Таємний посол» , до якої входять романи «Посол Урус-шайтана» (1968), «Фірман султана» (1969), «Чорний вершник» (1976) і «Шовковий шнурок» (1977), романи «Князь Кий» (1982), «Чумацький шлях», «Горить свіча», «Черлені щити» (1985) та останній роман «Князь Ігор. Слово о полку Ігоревім» (1999).

У творчій спадщині В.Малика є літературно-критичний нарис «Олесь Донченко» (1971). Це видання присвячене життю та творчості земляка, одного з фундаторів української літератури для дітей Олександру Донченку, який тривалий час жив і працював у Лубнах, ім’я якого нині носить літературне об’єднання письменників Лубенщини.

Усе життя Володимир Кирилович пропрацював учителем. На запитання: «Ким би Ви хотіли бути, якби не стали письменником?», він відповідав: «Тільки вчителем -– це ж моя професія! Але з дитячих літ я мріяв про творчу роботу і, хоч трохи запізно, домігся свого…»

У житті письменник був чесною, скромною та доброю людиною. Мав міцну, дружню родину.
| [img(100%,+)[bio/simya.jpg]] | [img(100%,+)[bio/simya2.jpg]] |
| //Володимир Малик з дружиною, дітьми та онуками// | //Володимир Малик та Петро Сиченко з дружинами Галиною Леонтіївною та Лідією Андріївною// |
Дружина Ганна Леонідівна стала джерелом натхнення, надійним тилом, помічницею та порадницею. «Теща взяла на себе хатнє господарство та дітей, а дружина «тягнула» півтори лікарські ставки, щоб я працював у школі на півставки і мав більше часу для творчості» -- говорив Малик.

Син Олександр Володимирович Сиченко -- заслужений лікар України, депутат Полтавської облради кількох скликань, заступник головного лікаря Лубенської ЦМЛ із поліклінічного розділу роботи, голова благодійного фонду імені письменника Володимира Малика «Слово». Його стараннями  побачив світ щоденник батька «Синя книга», ювілейні видання: «Незабутній Володимир Малик» та «Я йшов шляхом українства».

Донька Лариса Володимирівна Безродна -– лікар, кандидат медичних наук, старший науковий співробітник Національного наукового центру «Інститут кардіології ім.Академіка Н.Д.Стражеска» Академії АМН України.

Багатьом початківцям Володимир Кирилович допомагав порадами, вивів на широкий літературний шлях.
| [img(100%,+)[bio/pysmennyky.jpg]] | //Тиждень української літератури на Полтавщині// |
Десятки років, він, разом з Петром Лубенським, керував літературним об’єднанням при редакції місцевої газети «Лубенщина». За цей час літоб’днання дало путівку в життя великій кількості письменників, журналістів. В.К.Малик, як дбайливий батько, піклувався про всіх, хто мав  талант. І недаремно чимало молодих письменників називають його «літературним батьком».

Твори Малика користуються винятковою популярність. Про це говорять листи шанувальників творчості нашого земляка – людей різного віку і різних професій, написані від щирого серця. Вони допомагають краще зрозуміти величне значення творчості  письменника для розбудови вільної, незалежної і суверенної Української держави.

//«Володимире Кириловичу! Напередодні Вашого дня народження, прийміть наші найщиріші побажання Вам: міцного здоров’я, творчої наснаги, щастя і гарного настрою у  наш важкий час. І хоч зараз нелегко і школі, і суспільству, але Ваші мудрі книги допомагають молоді усвідомити, що ніколи не було легко тим, хто жив по-совісти. Але всі герої Ваших книг люди по-своєму щасливі, бо залюблені у рідну землю".// (з листа  вчительки української мови та літератури Карлівської середньої школи №3 Костяницької О.М.)

Володимир Кирилович листувався з багатьма учнями з Полтавщини.  Дбав про виховання майбутніх патріотів незалежної України. «…справжній патріотизм прищеплюється, він входить у наше серце з краєвидами та запахами рідної землі, звуками рідної мови та народних пісень, з танцями, звичаями, повір’ями».
| [img(70%,+)[bio/zustr.jpg]] | //Вечір-зустріч у школі №1 (1995)// |
Письменник застерігав юне покоління від бездуховності, неробства, втрати почуття гідності.
<iframe width="320" height="240" src="https://www.youtube.com/embed/11bhWajZgYM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
Усе своє життя письменник прожив гідно, у великих творчих та плідних трудах. Багато його творів перекладено іноземними мовами. За романи історико-патріотичної тематики, зокрема «Посол Урус-шайтана», «Шовковий шнурок» та «Князь Кий» В.Малик був удостоєний літературної премії Лесі Українки 1983 року.

Помер письменник 31 серпня 1998 року в м. Лубни.

Біля будинку письменника встановлений меморіальний знак.

На могилі Володимира Кириловича Малика (Сиченка) у 2000 році силами родини письменника встановлено пам’ятник. (Автор – відомий скульптор, заслужений художник України Микола Наумович Обезюк).
| [img(100%,+)[bio/pamjatyk.jpg]] | //Біля могили письменника// |
Інсценізація уривків з роману Володимира Малика "Чумацький шлях" у виконанні учасників театрального колективу "МеТа" Дениса Мусієнка, Валентини Чеверди, Ігоря Алєксєєва, Дмитра Бабака, Марії Губської та Анастасії Пруднікової:
<html><iframe width="320" height="200" src="https://www.youtube.com/embed/o4GZxFevlM0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
<html><iframe width="320" height="200" src="https://www.youtube.com/embed/Lyu8jps8Ywo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
<html><iframe width="320" height="200" src="https://www.youtube.com/embed/aH-ujgAaXUA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
<html><iframe width="320" height="200" src="https://www.youtube.com/embed/ovOreHAqPdY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
Уривок з поеми Володимира Малика "Воєвода Дмитро" читає учень 9-Б класу Данило Овчаренко на місцевому радіо в рамках проєкту "Цикл передач до століття Володимира Малика"
<iframe width="320" height="200" src="https://www.youtube.com/embed/RV5Y9W2TRs0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Уривок з роману Володимира Малика "Чумацький шлях" виконує учитель Лубенської спеціалізованої школи №6 Інна Левченко на місцевому радіо в рамках проєкту "Цикл передач до століття Володимира Малика"
<iframe width="320" height="200" src="https://www.youtube.com/embed/TkbxQZIYccw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Уривок з поеми-легенди "Журавлі-журавлики" читає учениця 4-А класу Лубенської спеціалізованої школи №6 Вероніка Ясечук
<iframe width="320" height="200" src="https://www.youtube.com/embed/0BPsdznOuYg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Творча робота учениці 9-Б класу Софії Міщенко [["Той, хто перевершив Дюма й закохав у Історію України мільйони..."|https://drive.google.com/file/d/1q5u09HZLT79m95EOhqHW9XbOassCMjLL/view?usp=sharing]]
Працюючи над своїми творами, письменник не шкодував ні часу, ні сил, щоб надати кожному з них досконалої форми. Була у Малика заповітна мрія – «писати так, щоб читач, узявши до рук книжку, не відривався від неї до кінця». Як досягнути цього? Писати енергійно, лаконічно, без нагромадження епітетів. «Менше прийменників – більше іменників та дієслів! Дія і дія – ось мій девіз!»

Усі твори письменника – це блискучі зразки історичних  героїко-пригодницьких романів, де ми, читачі, знаходимося в  постійній напрузі, й історична дійсність сприймається  не з авторських ремарок, а з розмов державних діячів, з дій і роздумів героїв.

Твір мистецтва, підкреслював Малик, має відзначатися не тільки досконалістю форми, ще повинен бути щирим і правдивим, спонукати до роздумів, кликати юного читача в захоплюючий світ історичного пошуку, до чистих джерел рідної історії.

Володимир Кирилович звертався до історії різних країн і різних епох. Та все ж його найбільше хвилювала сива давнина рідної України.
| [img(100%+,+)[knygy/kyj.jpg]] |[[Князь Кий|https://www.ukrlib.com.ua/books/printit.php?tid=10374]]. Роман, написаний до 1500-річчя заснування Києва, переносить читача у сиву давнину, у вир складних історичних подій, коли після роздроблення гуннської держави Аттіли в середині V ст. її спадкоємці, ворогуючи між собою, намагалися знову підкорити східнослов'янські племена. За цей роман у 1983 році Малику було присуджено літературну перемію ім. Лесі Українки.<br><br>Легендарний Кий -- ще молодий хлопець, якому виповнився лиш 21 рік, зумів відстояти честь і гордість України, а головне -- захистити жителів від кочовиків-завойовників. Завдячуючи своєму розуму та розробленій тактиці, Кий об'єднав різні споріднені слов'янські племена та заклав основи могутньої держави.<br><br>Цікава і захоплююча в романі тема віри людей в богів. Не в одного Бога, а в силу-силенну богів: Перуна, Велеса, Дажбога, Ярила, Сварога, Хорса, Стрибога. Вірили, що в лісах живуть русалки і мавки, а на печі живе домовик. Боги ці були зрозумілі давнім слов'янам, а ті, що прийшли на зміну їм -- християнські, лише похмуро дивилися з ікон.<br><br>Історизми та архаїзми письменник використовує для відтворення колориту епохи. Це надає можливість читачеві  ще більше проникнути в тогочасні події, яскравіше уявити картини життя героїв.|
|[img(100%,+)[knygy/igor.jpg]] |[[Князь Ігор. Слово о полку Ігоревім|https://www.ukrlib.com.ua/books/printit.php?tid=10373]]. Гостросюжетний історичний роман про похід князя Ігоря на половців 1185 року. Вивченню документів, пов’язаних з подіями кінця XII століття, письменник присвятив майже двадцять років. Він глибоко вник у все те, що відбувалося, простежив життя князів, дослідив значення кожного незрозумілого виразу в «Слові..» і навіть проїхав автомобілем тим шляхом, яким князь Ігор з військом вісім століть тому, ішов у похід на половців -- від Новгород-Сіверського в Чернігівській області до Слав’янська на Донеччині. Малик здійснив вісімнадцять власних перекладів «Слова о полку Ігоревім», що дало змогу знайти відповіді на цілу низку питань. І остаточний варіант перекладу  вже не був безіменним. Автор «Слова..» -- князь Володимир Галицький.<br><br>Роман заворожує цікавими історичними фактами, непербачуваністю подій, колоритом описаної епохи.<br><br>Герої потрапляють у самий вир трагічних подій, де на них чекають і тяготи походу, і криваві сутички з ворогом, полон і втеча з нього. Прагнення жити вільно на своїх землях ще більша зміцнило всіх героїв роману -- від князів до простих людей.|
|[img(100%+,+)[knygy/cherl.jpg]] |[[Черлені щити|https://www.ukrlib.com.ua/books/printit.php?tid=940]]. Київська Русь почала підупадати, роздрібнюватись на окремі князівства, які ворогували між собою, вели братовбивчі війни за території сусідів. Давньоруська держава втратила свою колишню могутність. Саме тому на останню чверть ХІІ ст. припадає збільшення нападів половецьких ханів на Русь. Провина частково лягає на самих князів, які запрошували ворогів руського народу для зведення рахунків з суперниками.<br><br>Незгоди між князями, майже безперервні уособиці все глибше проникали у її межі, неодноразово загрожуючи навіть Києву. Руський народ вимагав від князів, щоб вони припинили свої чвари і об’єдналися для боротьби проти половців.<br>23 квітня 1185 р. князь Ігор виступив у похід. Разом з ним пішли також його сини Володимир, що княжив у Путивлі, і племінник Святослав Ольгович. По дорозі до них приєднався і четвертий учасник походу — брат Ігоря Всеволод, князь Трубчевський.<br><br>Спочатку вони одержали перемогу над половцями, потім половці здобули перемогу і ринули на Русь, князь Ігор потрапив в полон.<br><br>Читач має нагоду познайомитися з усіма князами тогочасної Київської Русі та з літописцем, який написав «Слово о полку Ігоревім».|
|>|Тетралогію В.Малика ''“Таємний посол”'' склали такі романи: “Посол Урус-шайтана”, “Фірман султана”, “Чорний вершник” та ”Шовковий шнурок”.<br><br>Задум цього твору виник у В.Малика під впливом відомої картини російського художника І.Рєпіна “Запорожці пишуть листа турецькому султанові”. Художник зобразив лише мить із життя цих мужніх захисників своєї землі. А Володимир Кирилович хотів показати, як вони жили, сіяли й збирали хліб, займались ремеслами, кохали, воювали зі своїми ворогами, страждали в неволі, гинули у війнах.<br><br>Спершу Малик написав сценарій до кінофільму «Іван Сірко». Та коли роботу не прийняли, директор кіностудії ім. Довженка порадив: «Не сумуйте, ви – прозаїк. Напишіть на цьому матеріалі роман».<br><br>Повернувшись у Лубни, Володимир Кирилович засів писати роман про знаменитого кошового. Однак не вдавалось. «В чому справа? А в тому, зрозумів я, що мій головний герой Іван Сірко занадто старий для романного героя». А тим часом Маликові з Києва, Харкова, Москви та Ленінграда приходила виписана  ним через міжбібліотечний абонемент наукова література. І в одній з книг він вичитав, що в 1675 році кошовий Іван Сірко, дізнавшись, що турецький султан готує похід на Україну, послав туди молодого, але освіченого козака, що добре володів турецькою мовою, розвідником, по запорозькому «таємним послом».<br><br>«Оце мій герой» -- подумав я. Сірка пущу по периферії роману, а Арсена Звенигору поставлю в центрі розповіді (так я його назвав, бо розвідників і тоді засекречували)».<br><br>В основу творів покладено реальні події російсько-турецької війни 1677-1778 років, а також наступного періоду аж до підписання Бахчисарайського мирного договору 1681 року. Ця війна ще відома під назвою Чигиринських походів.|
|[img(100%,+)[knygy/posol.jpg]] |[[Посол Урус-Шайтана|https://www.ukrlib.com.ua/books/printit.php?tid=943]]. Перша книга тетралогії розповідає про події 1676 року від Різдва Христового. Змальовується Запорізька Січ. Кошовий отаман Іван Сірко посилає головного героя, молодого козака Арсена Звенигору з подвійною таємною місією до Болгарії. Він повинен викупити з неволі брата Сірка Нестора і розвідати, чи правдиві чутки про підготовлюване вторгнення турків в Україну. Головний герой тетралогії – молодий козак-розвідник Арсен Звенигора сміливий, розумний та добре освічений юнак. Під час виконання місії Арсен потрапляє в полон замість того, щоб пробиратися таємними стежками під Варну.<br><br>За цю книгу письменник удостоєний премії ім. Лесі Українки. Її можна назвати провідником по історії України того періоду. |
|[img(100%,+)[knygy/firman.jpg]] |[[Фірман султана|https://www.ukrlib.com.ua/books/printit.php?tid=941 ]]. Друга книга тетралогії розповідає, як козак Війська Запорізького і його друзі втекли з рабства на турецькій галері. До їх рук потрапляє фірман (указ) султана Магомета Четвертого про загарбницький похід на Україну. Тепер Арсен знає про те, що його рідну Україну очікує нова турецька навала на чолі з візиром Кара-Мустафою. Він усіма силами намагається швидше потрапити додому, щоб попередити про небезпеку кошового отамана Сірка та гетьмана Самойловича. На шляху до України Арсену допомагають його знання турецької мови, побуту та звичаїв ворогів, вправне володіння зброєю, уміння знаходити вихід зі складних ситуацій. Оскільки Україна на той час уже була в складі Росії, Сірко відразу відправив цей документ в Москву, де він зберігається і досі в архівах Посольського приказу.<br><br>Так стали відомі військові наміри Порти (Туреччини). Українські та російські війська змусили турків під Чигирином відмовитись від планів завоювання України. Але, перш ніж це сталося, головному героєві довелось пережити рабство на турецьких галерах, жахливі допити, зраду земляків. Завдяки авторській майстерності, ми разом з друзями Арсена -- донським козаком Романом Воїновим, російським стрільцем Кузьмою Рожковим, поляком Мартином Спихальським, воєводою болгарських гайдуків Младеном, стаємо учасниками виснажливих та небезпечних пригод. |
|[img(100%,+)[knygy/vershnyk.jpg]] |[[Чорний вершник|https://www.ukrlib.com.ua/books/printit.php?tid=10375]]. У третій частині тетралогії Арсен Звенигора нарешті повертається додому, проте війна знову змушує його відправлятися в похід. Кривава боротьба українського народу проти турецько-татарських загарбників у другій половині ~XVII століття продовжується. Адже рідна земля витоптана ординцями, села і міста зруйновані, спалені дощенту, а народ вбитий у кривавих побоїщах та погнаний у турецьку неволю.<br>У пригодах йому допомагатимуть персонажі попередніх книг — росіянин Роман Воїнов, поляк Мартин Спихальський, болгарський воєвода Младен і його син Ненко. Крім цього, важливу роль у сюжеті відіграє Семен Гурко. |
|[img(100%,+)[knygy/shnurok.jpg]] |[[Шовковий шнурок|https://www.ukrlib.com.ua/books/printit.php?tid=10376&page=40]]. Назва останньої частини тетралогії відсилає до турецького звичаю, за яким посадовцю, що завинив, султан надсилав шовковий шнурок. Така «посилка» означала смертний вирок.<br><br>У центрі уваги роману знову Арсен Звенигора, який продовжує боротьбу проти ворогів рідної України. У вирі війни зникла кохана дівчина Арсена — Златка. Пошуки у Криму та в інших частинах України не дали результатів. Але через деякий час стало відомо, що Златка потрапила в Стамбул, в гарем великого візира Кара-Мустафи. І Арсен разом із Ненком поїхали її визволяти, заприсягшись врятувати дівчину з полону або загинути у бою з ворогом.<br><br>Поряд із вигаданими героями в тетралогії діє багато відомих історичних осіб. Серед них кошовий отаман Іван Сірко, гетьман Юрій Хмельницький, ватажок повстанців Семен Палій, австрійський імператор Леопольд, польський король Ян Собеський.<br><br>Дуже яскраво, колоритно змальовує автор Запорізьку Січ, багатих та бідних козаків, їх побут, дозвілля, військову доблесть. Також автор не обминув увагою і допомогу запорожських козаків у обороні міста Відня влітку 1683 року від османського війська. За книгу «Шовковий шнурок» автор удостоєний премії імені Лесі Українки (1983 р) |
|[img(100%,+)[knygy/svicha.jpg]] |[[Горить свіча|https://www.ukrlib.com.ua/books/printit.php?tid=944]]. Історичний роман про навалу монголо-татарна українські землі, зокрема про падіння Києва. За цей роман у 1992 році Малика було нагороджено міжнародною премією Григорія Сковороди.<br><br>«Горить свіча» виник із думки, що Батиєва навала -- то найстрашніше лихоліття, що випало на долю України. Вона тривала аж до 1763 року, отже тривала більше як півтисячі років!. Скільки нашого люду знищено, скільки крові нашої пролито! З цього –- і мій роман» -- говорив письменник.<br><br>1240 року під Київ приходять полки монголів із братом Батия Менгу-ханом. Монголи хочуть взяти Київ без втрат, і тому висилають делегацію послів із рабом-русичем Добринею в ролі перекладача. Назустріч послам вийшов сам князь Михайло Всеволодович. Монголи брехали киянам, ніби-то вони їх не чіпатимуть, але Добриня переклав, що це хитрість монголів, якою вони захопили багато міст. Князь відмовляється впустити монголів до Києва, і за наказом Менгуа посли вбили п'ятьох полонених. Кияни у відповідь повбивали монгольських послів. Добриня отримав свободу, влаштувався до боярина Дмитра та вподобав його дочку Янку. Наступного дня монголи готували напад на місто, а князь тим часом утік із Києва з рідними, призначивши Дмитра воєводою. |
|[img(100%,+)[knygy/shlyah.jpg]] |[[Чумацький шлях|https://www.ukrlib.com.ua/books/printit.php?tid=10378]]. У романі В.Малик відтворив цікаве явище в історії українського народу - чумацтво. Головний герой твору Івась Бондар, залишає в Лубнах кохану дівчину Катрю і разом зі своїм хазяїном Хуржиком та чумацькою валкою їде в Крим по сіль. Ніколи не гадалося йому, через які незвичайні, смертельно небезпечні пригоди доведеться пройти. Тут і зустріч з Потьомкіним та Катериною Другою, і татарський полон, і втеча з нього, вступ до війська чорноморських козаків й участь у складі цього війська у війні 1786-1791 років проти Туреччини.<br><br>Перегортаючи сторінки роману, читач ніби сам крокує курними шляхами неспокійного XVIII століття від древніх Лубен до самого Криму, а ввечері захоплено слухає розповідь колишнього запорожця, бувалого чумака про Солоницьку трагедію 1596 року. І оживають героїчні сторінки історії України:<br><br>Полтавська трагедія 1709 року, розгром у 1775 Запорізької Січі. Постають постаті Северина Наливайка, Богдана Хмельницького, Івана Мазепи, Петра Калнишевського.<br><br>І захоплює палке, вірне кохання простої дівчини Катрі.|
|[img(100%,+)[knygy/zhur.jpg]] |[[Журавлі-журавлики|https://www.ukrlib.com.ua/books/printit.php?tid=10379]]. Легенда розповідає про ті давні часи, коли на нашу рідну землю здійснювали свої спустошливі набіги турецькі орди. Під час одного з таких набігів захопили вони в полон маленьку дівчинку Наталочку. Добре, чуйне серце мала ця дитина. Ще вдома, в рідній оселі зворушливо доглядала пораненого журавлика. А коли поневірялась в турецькому полоні, зуміла випустити на волю своїх земляків. Вдячний журавлик Павлик не забув Наталиного добра. Повертаючись разом з ключем на рідну землю, врятував маленьку україночку з чужоземного ярма.|
|[img(100%,+)[knygy/dvoe.jpg]] |[[Двоє над прірвою|https://www.ukrlib.com.ua/books/printit.php?tid=10372]]. Під час повітряного бою в роки війни з фашистами молодого радянського льотчика-винищувача Володю Булатовича збив німецький “месершміт”. Того, що довелось героєві повісті пережити після цієї події, вистачило б не на одне життя. Без документів, майже без одягу та харчів, молодий лейтенант опинився в окупованому німцями Києві. Потім потрапляв до німецьких таборів смерті в Німеччині та Польщі. Та, маючи нескорену силу духу, будучи людиною грамотною та гордою, продовжував боротись з фашистами на своїй і на чужій землі, вчасно підставляв своє плече слабшому, завжди умів дати правильну оцінку ворогові, залишався вірним своїм принципам і почуттям.<br><br>Повість написана в типовій “маликовській” манері: непередбачуваний сюжет, швидка зміна подій, часті діалоги, героїзм та патріотизм головних персонажів “не відпускають” читача до останної сторінки.|
/%<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>%/
<<tabs txtMoreTab "Missing" "Missing tiddlers" TabMoreMissing "Orphans" "Orphaned tiddlers" TabMoreOrphans "Shadowed" "Shadowed tiddlers" TabMoreShadowed>>