PageRenderTime 68ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 2ms

/fancybox.html

https://github.com/pmario/tw.FancyBoxPlugin
HTML | 11772 lines | 10528 code | 1235 blank | 9 comment | 0 complexity | c44cc56437b15b0f38227dbf36502abb MD5 | raw file
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <script id="versionArea" type="text/javascript">
  5. //<![CDATA[
  6. var version = {title: "TiddlyWiki", major: 2, minor: 6, revision: 2, date: new Date("Jan 6, 2011"), extensions: {}};
  7. //]]>
  8. </script>
  9. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  10. <meta name="copyright" content="
  11. TiddlyWiki created by Jeremy Ruston, (jeremy [at] osmosoft [dot] com)
  12. Copyright (c) Jeremy Ruston 2004-2007
  13. Copyright (c) UnaMesa Association 2007-2011
  14. Redistribution and use in source and binary forms, with or without modification,
  15. are permitted provided that the following conditions are met:
  16. Redistributions of source code must retain the above copyright notice, this
  17. list of conditions and the following disclaimer.
  18. Redistributions in binary form must reproduce the above copyright notice, this
  19. list of conditions and the following disclaimer in the documentation and/or other
  20. materials provided with the distribution.
  21. Neither the name of the UnaMesa Association nor the names of its contributors may be
  22. used to endorse or promote products derived from this software without specific
  23. prior written permission.
  24. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY
  25. EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  26. OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  27. SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  28. INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
  29. TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  30. BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  31. CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  32. ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  33. DAMAGE.
  34. " />
  35. <!--PRE-HEAD-START-->
  36. <!--{{{-->
  37. <link rel="shortcut icon" href="/recipes/fancybox_public/tiddlers/favicon.ico" />
  38. <link href="/bags/fancybox_public/tiddlers.atom" rel="alternate"
  39. type="application/atom+xml" title="fancybox's public feed" />
  40. <!--}}}-->
  41. <!--PRE-HEAD-END-->
  42. <title> fancybox - a TiddlySpace </title>
  43. <style id="styleArea" type="text/css">
  44. #saveTest {display:none;}
  45. #messageArea {display:none;}
  46. #copyright {display:none;}
  47. #storeArea {display:none;}
  48. #storeArea div {padding:0.5em; margin:1em 0em 0em 0em; border-color:#fff #666 #444 #ddd; border-style:solid; border-width:2px; overflow:auto;}
  49. #shadowArea {display:none;}
  50. #javascriptWarning {width:100%; text-align:center; font-weight:bold; background-color:#dd1100; color:#fff; padding:1em 0em;}
  51. </style>
  52. <!--POST-HEAD-START-->
  53. <!--POST-HEAD-END-->
  54. </head>
  55. <body onload="main();" onunload="if(window.unload) unload();">
  56. <!--PRE-BODY-START-->
  57. <!--PRE-BODY-END-->
  58. <div id="copyright">
  59. Welcome to TiddlyWiki created by Jeremy Ruston; Copyright &copy; 2004-2007 Jeremy Ruston, Copyright &copy; 2007-2011 UnaMesa Association
  60. </div>
  61. <noscript>
  62. <div id="javascriptWarning">
  63. This page requires JavaScript to function properly.<br /><br />
  64. If you do not use JavaScript you may still <a href="http://fancybox.tiddlyspace.com/recipes/fancybox_private/tiddlers">browse
  65. the content of this wiki</a>.
  66. </div>
  67. </noscript>
  68. <div id="saveTest"></div>
  69. <div id="backstageCloak"></div>
  70. <div id="backstageButton"></div>
  71. <div id="backstageArea"><div id="backstageToolbar"></div></div>
  72. <div id="backstage">
  73. <div id="backstagePanel"></div>
  74. </div>
  75. <div id="contentWrapper"></div>
  76. <div id="contentStash"></div>
  77. <div id="shadowArea">
  78. <div title="MarkupPreHead">
  79. <pre>&lt;!--{{{--&gt;
  80. &lt;link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' /&gt;
  81. &lt;!--}}}--&gt;
  82. </pre>
  83. </div>
  84. <div title="ColorPalette">
  85. <pre>Background: #fff
  86. Foreground: #000
  87. PrimaryPale: #8cf
  88. PrimaryLight: #18f
  89. PrimaryMid: #04b
  90. PrimaryDark: #014
  91. SecondaryPale: #ffc
  92. SecondaryLight: #fe8
  93. SecondaryMid: #db4
  94. SecondaryDark: #841
  95. TertiaryPale: #eee
  96. TertiaryLight: #ccc
  97. TertiaryMid: #999
  98. TertiaryDark: #666
  99. Error: #f88
  100. </pre>
  101. </div>
  102. <div title="StyleSheetColors">
  103. <pre>/*{{{*/
  104. body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
  105. a {color:[[ColorPalette::PrimaryMid]];}
  106. a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
  107. a img {border:0;}
  108. h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
  109. h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
  110. h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
  111. .button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
  112. .button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
  113. .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
  114. .header {background:[[ColorPalette::PrimaryMid]];}
  115. .headerShadow {color:[[ColorPalette::Foreground]];}
  116. .headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
  117. .headerForeground {color:[[ColorPalette::Background]];}
  118. .headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
  119. .tabSelected{color:[[ColorPalette::PrimaryDark]];
  120. background:[[ColorPalette::TertiaryPale]];
  121. border-left:1px solid [[ColorPalette::TertiaryLight]];
  122. border-top:1px solid [[ColorPalette::TertiaryLight]];
  123. border-right:1px solid [[ColorPalette::TertiaryLight]];
  124. }
  125. .tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
  126. .tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
  127. .tabContents .button {border:0;}
  128. #sidebar {}
  129. #sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
  130. #sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
  131. #sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
  132. #sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
  133. #sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
  134. .wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
  135. .wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
  136. .wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
  137. .wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
  138. border:1px solid [[ColorPalette::PrimaryMid]];}
  139. .wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
  140. .wizardFooter {background:[[ColorPalette::PrimaryPale]];}
  141. .wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
  142. .wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
  143. border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
  144. .wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
  145. .wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
  146. border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
  147. .wizard .notChanged {background:transparent;}
  148. .wizard .changedLocally {background:#80ff80;}
  149. .wizard .changedServer {background:#8080ff;}
  150. .wizard .changedBoth {background:#ff8080;}
  151. .wizard .notFound {background:#ffff80;}
  152. .wizard .putToServer {background:#ff80ff;}
  153. .wizard .gotFromServer {background:#80ffff;}
  154. #messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
  155. #messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
  156. .popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
  157. .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]];}
  158. .popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
  159. .popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
  160. .popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
  161. .popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
  162. .popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
  163. .popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
  164. .listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
  165. .tiddler .defaultCommand {font-weight:bold;}
  166. .shadow .title {color:[[ColorPalette::TertiaryDark]];}
  167. .title {color:[[ColorPalette::SecondaryDark]];}
  168. .subtitle {color:[[ColorPalette::TertiaryDark]];}
  169. .toolbar {color:[[ColorPalette::PrimaryMid]];}
  170. .toolbar a {color:[[ColorPalette::TertiaryLight]];}
  171. .selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
  172. .selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
  173. .tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
  174. .selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
  175. .tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
  176. .tagging .button, .tagged .button {border:none;}
  177. .footer {color:[[ColorPalette::TertiaryLight]];}
  178. .selected .footer {color:[[ColorPalette::TertiaryMid]];}
  179. .sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
  180. .sparktick {background:[[ColorPalette::PrimaryDark]];}
  181. .error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
  182. .warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
  183. .lowlight {background:[[ColorPalette::TertiaryLight]];}
  184. .zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
  185. .imageLink, #displayArea .imageLink {background:transparent;}
  186. .annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
  187. .viewer .listTitle {list-style-type:none; margin-left:-2em;}
  188. .viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
  189. .viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
  190. .viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
  191. .viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
  192. .viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
  193. .viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
  194. .viewer code {color:[[ColorPalette::SecondaryDark]];}
  195. .viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
  196. .highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
  197. .editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
  198. .editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
  199. .editorFooter {color:[[ColorPalette::TertiaryMid]];}
  200. .readOnly {background:[[ColorPalette::TertiaryPale]];}
  201. #backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
  202. #backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
  203. #backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
  204. #backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
  205. #backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
  206. #backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
  207. #backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
  208. .backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
  209. .backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
  210. #backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
  211. /*}}}*/</pre>
  212. </div>
  213. <div title="StyleSheetLayout">
  214. <pre>/*{{{*/
  215. * html .tiddler {height:1%;}
  216. body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}
  217. h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
  218. h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
  219. h4,h5,h6 {margin-top:1em;}
  220. h1 {font-size:1.35em;}
  221. h2 {font-size:1.25em;}
  222. h3 {font-size:1.1em;}
  223. h4 {font-size:1em;}
  224. h5 {font-size:.9em;}
  225. hr {height:1px;}
  226. a {text-decoration:none;}
  227. dt {font-weight:bold;}
  228. ol {list-style-type:decimal;}
  229. ol ol {list-style-type:lower-alpha;}
  230. ol ol ol {list-style-type:lower-roman;}
  231. ol ol ol ol {list-style-type:decimal;}
  232. ol ol ol ol ol {list-style-type:lower-alpha;}
  233. ol ol ol ol ol ol {list-style-type:lower-roman;}
  234. ol ol ol ol ol ol ol {list-style-type:decimal;}
  235. .txtOptionInput {width:11em;}
  236. #contentWrapper .chkOptionInput {border:0;}
  237. .externalLink {text-decoration:underline;}
  238. .indent {margin-left:3em;}
  239. .outdent {margin-left:3em; text-indent:-3em;}
  240. code.escaped {white-space:nowrap;}
  241. .tiddlyLinkExisting {font-weight:bold;}
  242. .tiddlyLinkNonExisting {font-style:italic;}
  243. /* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
  244. a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
  245. #mainMenu .tiddlyLinkExisting,
  246. #mainMenu .tiddlyLinkNonExisting,
  247. #sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
  248. #sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
  249. .header {position:relative;}
  250. .header a:hover {background:transparent;}
  251. .headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
  252. .headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}
  253. .siteTitle {font-size:3em;}
  254. .siteSubtitle {font-size:1.2em;}
  255. #mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
  256. #sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
  257. #sidebarOptions {padding-top:0.3em;}
  258. #sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
  259. #sidebarOptions input {margin:0.4em 0.5em;}
  260. #sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
  261. #sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
  262. #sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
  263. #sidebarTabs .tabContents {width:15em; overflow:hidden;}
  264. .wizard {padding:0.1em 1em 0 2em;}
  265. .wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
  266. .wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
  267. .wizardStep {padding:1em 1em 1em 1em;}
  268. .wizard .button {margin:0.5em 0 0; font-size:1.2em;}
  269. .wizardFooter {padding:0.8em 0.4em 0.8em 0;}
  270. .wizardFooter .status {padding:0 0.4em; margin-left:1em;}
  271. .wizard .button {padding:0.1em 0.2em;}
  272. #messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
  273. .messageToolbar {display:block; text-align:right; padding:0.2em;}
  274. #messageArea a {text-decoration:underline;}
  275. .tiddlerPopupButton {padding:0.2em;}
  276. .popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}
  277. .popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
  278. .popup .popupMessage {padding:0.4em;}
  279. .popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
  280. .popup li.disabled {padding:0.4em;}
  281. .popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
  282. .listBreak {font-size:1px; line-height:1px;}
  283. .listBreak div {margin:2px 0;}
  284. .tabset {padding:1em 0 0 0.5em;}
  285. .tab {margin:0 0 0 0.25em; padding:2px;}
  286. .tabContents {padding:0.5em;}
  287. .tabContents ul, .tabContents ol {margin:0; padding:0;}
  288. .txtMainTab .tabContents li {list-style:none;}
  289. .tabContents li.listLink { margin-left:.75em;}
  290. #contentWrapper {display:block;}
  291. #splashScreen {display:none;}
  292. #displayArea {margin:1em 17em 0 14em;}
  293. .toolbar {text-align:right; font-size:.9em;}
  294. .tiddler {padding:1em 1em 0;}
  295. .missing .viewer,.missing .title {font-style:italic;}
  296. .title {font-size:1.6em; font-weight:bold;}
  297. .missing .subtitle {display:none;}
  298. .subtitle {font-size:1.1em;}
  299. .tiddler .button {padding:0.2em 0.4em;}
  300. .tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
  301. .isTag .tagging {display:block;}
  302. .tagged {margin:0.5em; float:right;}
  303. .tagging, .tagged {font-size:0.9em; padding:0.25em;}
  304. .tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
  305. .tagClear {clear:both;}
  306. .footer {font-size:.9em;}
  307. .footer li {display:inline;}
  308. .annotation {padding:0.5em; margin:0.5em;}
  309. * html .viewer pre {width:99%; padding:0 0 1em 0;}
  310. .viewer {line-height:1.4em; padding-top:0.5em;}
  311. .viewer .button {margin:0 0.25em; padding:0 0.25em;}
  312. .viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
  313. .viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}
  314. .viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
  315. .viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
  316. table.listView {font-size:0.85em; margin:0.8em 1.0em;}
  317. table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}
  318. .viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
  319. .viewer code {font-size:1.2em; line-height:1.4em;}
  320. .editor {font-size:1.1em;}
  321. .editor input, .editor textarea {display:block; width:100%; font:inherit;}
  322. .editorFooter {padding:0.25em 0; font-size:.9em;}
  323. .editorFooter .button {padding-top:0px; padding-bottom:0px;}
  324. .fieldsetFix {border:0; padding:0; margin:1px 0px;}
  325. .sparkline {line-height:1em;}
  326. .sparktick {outline:0;}
  327. .zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
  328. .zoomer div {padding:1em;}
  329. * html #backstage {width:99%;}
  330. * html #backstageArea {width:99%;}
  331. #backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
  332. #backstageToolbar {position:relative;}
  333. #backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
  334. #backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
  335. #backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
  336. #backstage {position:relative; width:100%; z-index:50;}
  337. #backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
  338. .backstagePanelFooter {padding-top:0.2em; float:right;}
  339. .backstagePanelFooter a {padding:0.2em 0.4em;}
  340. #backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}
  341. .whenBackstage {display:none;}
  342. .backstageVisible .whenBackstage {display:block;}
  343. /*}}}*/
  344. </pre>
  345. </div>
  346. <div title="StyleSheetLocale">
  347. <pre>/***
  348. StyleSheet for use when a translation requires any css style changes.
  349. This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
  350. ***/
  351. /*{{{*/
  352. body {font-size:0.8em;}
  353. #sidebarOptions {font-size:1.05em;}
  354. #sidebarOptions a {font-style:normal;}
  355. #sidebarOptions .sliderPanel {font-size:0.95em;}
  356. .subtitle {font-size:0.8em;}
  357. .viewer table.listView {font-size:0.95em;}
  358. /*}}}*/</pre>
  359. </div>
  360. <div title="StyleSheetPrint">
  361. <pre>/*{{{*/
  362. @media print {
  363. #mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
  364. #displayArea {margin: 1em 1em 0em;}
  365. noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
  366. }
  367. /*}}}*/</pre>
  368. </div>
  369. <div title="PageTemplate">
  370. <pre>&lt;!--{{{--&gt;
  371. &lt;div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'&gt;
  372. &lt;div class='headerShadow'&gt;
  373. &lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;&amp;nbsp;
  374. &lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;
  375. &lt;/div&gt;
  376. &lt;div class='headerForeground'&gt;
  377. &lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;&amp;nbsp;
  378. &lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;
  379. &lt;/div&gt;
  380. &lt;/div&gt;
  381. &lt;div id='mainMenu' refresh='content' tiddler='MainMenu'&gt;&lt;/div&gt;
  382. &lt;div id='sidebar'&gt;
  383. &lt;div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'&gt;&lt;/div&gt;
  384. &lt;div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'&gt;&lt;/div&gt;
  385. &lt;/div&gt;
  386. &lt;div id='displayArea'&gt;
  387. &lt;div id='messageArea'&gt;&lt;/div&gt;
  388. &lt;div id='tiddlerDisplay'&gt;&lt;/div&gt;
  389. &lt;/div&gt;
  390. &lt;!--}}}--&gt;</pre>
  391. </div>
  392. <div title="ViewTemplate">
  393. <pre>&lt;!--{{{--&gt;
  394. &lt;div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'&gt;&lt;/div&gt;
  395. &lt;div class='title' macro='view title'&gt;&lt;/div&gt;
  396. &lt;div class='subtitle'&gt;&lt;span macro='view modifier link'&gt;&lt;/span&gt;, &lt;span macro='view modified date'&gt;&lt;/span&gt; (&lt;span macro='message views.wikified.createdPrompt'&gt;&lt;/span&gt; &lt;span macro='view created date'&gt;&lt;/span&gt;)&lt;/div&gt;
  397. &lt;div class='tagging' macro='tagging'&gt;&lt;/div&gt;
  398. &lt;div class='tagged' macro='tags'&gt;&lt;/div&gt;
  399. &lt;div class='viewer' macro='view text wikified'&gt;&lt;/div&gt;
  400. &lt;div class='tagClear'&gt;&lt;/div&gt;
  401. &lt;!--}}}--&gt;</pre>
  402. </div>
  403. <div title="EditTemplate">
  404. <pre>&lt;!--{{{--&gt;
  405. &lt;div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'&gt;&lt;/div&gt;
  406. &lt;div class='title' macro='view title'&gt;&lt;/div&gt;
  407. &lt;div class='editor' macro='edit title'&gt;&lt;/div&gt;
  408. &lt;div macro='annotations'&gt;&lt;/div&gt;
  409. &lt;div class='editor' macro='edit text'&gt;&lt;/div&gt;
  410. &lt;div class='editor' macro='edit tags'&gt;&lt;/div&gt;&lt;div class='editorFooter'&gt;&lt;span macro='message views.editor.tagPrompt'&gt;&lt;/span&gt;&lt;span macro='tagChooser excludeLists'&gt;&lt;/span&gt;&lt;/div&gt;
  411. &lt;!--}}}--&gt;</pre>
  412. </div>
  413. <div title="GettingStarted">
  414. <pre>To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
  415. * [[SiteTitle]] &amp; [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
  416. * [[MainMenu]]: The menu (usually on the left)
  417. * [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
  418. You'll also need to enter your username for signing your edits: &lt;&lt;option txtUserName&gt;&gt;</pre>
  419. </div>
  420. <div title="OptionsPanel">
  421. <pre>These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser
  422. Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])
  423. &lt;&lt;option txtUserName&gt;&gt;
  424. &lt;&lt;option chkSaveBackups&gt;&gt; [[SaveBackups]]
  425. &lt;&lt;option chkAutoSave&gt;&gt; [[AutoSave]]
  426. &lt;&lt;option chkRegExpSearch&gt;&gt; [[RegExpSearch]]
  427. &lt;&lt;option chkCaseSensitiveSearch&gt;&gt; [[CaseSensitiveSearch]]
  428. &lt;&lt;option chkAnimate&gt;&gt; [[EnableAnimations]]
  429. ----
  430. Also see [[AdvancedOptions]]</pre>
  431. </div>
  432. <div title="ImportTiddlers">
  433. <pre>&lt;&lt;importTiddlers&gt;&gt;</pre>
  434. </div>
  435. </div>
  436. <!--POST-SHADOWAREA-->
  437. <div id="storeArea">
  438. <div title="01.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222351" tags="attachment panorama reference thumb" server.title="01.jpg" server.page.revision="255486" server.etag="&quot;fancybox_public/01.jpg/255486;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="17273cb2721d12e442843de46ba5b6c2174ffe22" changecount="8" info="Some Info text\snSecond Line" label="San Benedicto Island" slide="01.jpg">
  439. <pre>!labelX
  440. The label is stored in the tiddler custom field
  441. !usage
  442. {{{[img[01.jpg]]}}}
  443. [img[01.jpg]]
  444. !notes
  445. attached by FileDropPlugin
  446. !type
  447. image/jpg
  448. !file
  449. ./thumbs/01.jpg
  450. !url
  451. http://fancybox-thumbs.tiddlyspace.com/01.jpg
  452. !link
  453. [[San Benedicto Island|http://fancybox-pics.tiddlyspace.com/01.jpg]]
  454. !end
  455. </pre>
  456. </div>
  457. <div title="02.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222327" tags="attachment thumb" server.title="02.jpg" server.page.revision="261782" server.etag="&quot;fancybox_public/02.jpg/261782;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="c38208842cc7c77ea197cb30d787609c12cf1fdf">
  458. <pre>!label
  459. !usage
  460. {{{[img[02.jpg]]}}}
  461. [img[02.jpg]]
  462. !notes
  463. attached by FileDropPlugin
  464. !type
  465. image/jpg
  466. !file
  467. ./thumbs/02.jpg
  468. !url
  469. http://fancybox-thumbs.tiddlyspace.com/02.jpg
  470. !link
  471. [[02.jpg|http://fancybox-pics.tiddlyspace.com/02.jpg]]
  472. !end
  473. </pre>
  474. </div>
  475. <div title="03.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222328" tags="attachment thumb" server.title="03.jpg" server.page.revision="261783" server.etag="&quot;fancybox_public/03.jpg/261783;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="114722c51943e6de8dffa6aaa207bea8dcba2fe6">
  476. <pre>!label
  477. !usage
  478. {{{[img[03.jpg]]}}}
  479. [img[03.jpg]]
  480. !notes
  481. attached by FileDropPlugin
  482. !type
  483. image/jpg
  484. !file
  485. ./thumbs/03.jpg
  486. !url
  487. http://fancybox-thumbs.tiddlyspace.com/03.jpg
  488. !link
  489. [[03.jpg|http://fancybox-pics.tiddlyspace.com/03.jpg]]
  490. !end
  491. </pre>
  492. </div>
  493. <div title="04.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222328" tags="attachment thumb" server.title="04.jpg" server.page.revision="261784" server.etag="&quot;fancybox_public/04.jpg/261784;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="fe52207214bf881c18e5425c1d281b3798764276">
  494. <pre>!label
  495. !usage
  496. {{{[img[04.jpg]]}}}
  497. [img[04.jpg]]
  498. !notes
  499. attached by FileDropPlugin
  500. !type
  501. image/jpg
  502. !file
  503. ./thumbs/04.jpg
  504. !url
  505. http://fancybox-thumbs.tiddlyspace.com/04.jpg
  506. !link
  507. [[04.jpg|http://fancybox-pics.tiddlyspace.com/04.jpg]]
  508. !end
  509. </pre>
  510. </div>
  511. <div title="05.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222329" tags="attachment thumb" server.title="05.jpg" server.page.revision="261785" server.etag="&quot;fancybox_public/05.jpg/261785;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="71399b52d14b062055505beb353c421d3b9af2cf">
  512. <pre>!label
  513. !usage
  514. {{{[img[05.jpg]]}}}
  515. [img[05.jpg]]
  516. !notes
  517. attached by FileDropPlugin
  518. !type
  519. image/jpg
  520. !file
  521. ./thumbs/05.jpg
  522. !url
  523. http://fancybox-thumbs.tiddlyspace.com/05.jpg
  524. !link
  525. [[05.jpg|http://fancybox-pics.tiddlyspace.com/05.jpg]]
  526. !end
  527. </pre>
  528. </div>
  529. <div title="05slide.jpg" creator="pmario" modifier="pmario" created="201102111153" modified="201102111153" tags="attachment" server.title="05slide.jpg" server.page.revision="249043" server.etag="&quot;fancybox_public/05slide.jpg/249043;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="6bb4fbcbfea4e535239f91d6038294fa4a4c77b4">
  530. <pre>!usage
  531. {{{[img[05slide.jpg]]}}}
  532. [img[05slide.jpg]]
  533. !notes
  534. !type
  535. image/jpg
  536. !file
  537. ./pics/05.jpg
  538. !url
  539. http://fancybox-pics.tiddlyspace.com/05.jpg
  540. !link
  541. [[05slide.jpg|http://fancybox-pics.tiddlyspace.com/05.jpg]]
  542. !end
  543. </pre>
  544. </div>
  545. <div title="06.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222326" tags="attachment panorama reference thumb" server.title="06.jpg" server.page.revision="261786" server.etag="&quot;fancybox_public/06.jpg/261786;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="936f3c107efe4211f749cea78277d188924517c4">
  546. <pre>!label
  547. The Lobster
  548. !usage
  549. {{{[img[06.jpg]]}}}
  550. [img[06.jpg]]
  551. !slide
  552. 06slide.jpg
  553. !notes
  554. attached by FileDropPlugin
  555. !type
  556. image/jpg
  557. !file
  558. ./thumbs/06.jpg
  559. !url
  560. http://fancybox-thumbs.tiddlyspace.com/06.jpg
  561. !link
  562. [[06.jpg|http://fancybox-pics.tiddlyspace.com/06.jpg]]
  563. !end
  564. </pre>
  565. </div>
  566. <div title="06slide.jpg" creator="pmario" modifier="pmario" created="201102072057" modified="201102072057" tags="attachment" server.title="06slide.jpg" server.page.revision="245583" server.etag="&quot;fancybox_public/06slide.jpg/245583;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="54a809f8cd6950b3dfe827224b296a65e621ac67">
  567. <pre>!usage
  568. {{{[img[06slide.jpg]]}}}
  569. [img[06slide.jpg]]
  570. !notes
  571. attached by FileDropPlugin
  572. !type
  573. image/jpg
  574. !file
  575. ./pics/06.jpg
  576. !url
  577. http://fancybox-pics.tiddlyspace.com/06.jpg
  578. !link
  579. [[Lobster|http://fancybox-pics.tiddlyspace.com/06.jpg]]
  580. !end
  581. </pre>
  582. </div>
  583. <div title="07.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222326" tags="attachment manual thumb" server.title="07.jpg" server.page.revision="261787" server.etag="&quot;fancybox_public/07.jpg/261787;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="9d4f058ac8294b3d62d79da43cc07fd5c252ca71">
  584. <pre>!label
  585. Strobe Fish
  586. !usage
  587. {{{[img[07.jpg]]}}}
  588. [img[07.jpg]]
  589. !notes
  590. attached by FileDropPlugin
  591. !type
  592. image/jpg
  593. !file
  594. ./thumbs/07.jpg
  595. !url
  596. http://fancybox-thumbs.tiddlyspace.com/07.jpg
  597. !link
  598. [[07.jpg|http://fancybox-pics.tiddlyspace.com/07.jpg]]
  599. !end
  600. </pre>
  601. </div>
  602. <div title="08.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222326" tags="attachment manual thumb" server.title="08.jpg" server.page.revision="261788" server.etag="&quot;fancybox_public/08.jpg/261788;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="97b7f0c527be5112fabee71f8a607c24cd8a42e7">
  603. <pre>!label
  604. Octopus
  605. !usage
  606. {{{[img[08.jpg]]}}}
  607. [img[08.jpg]]
  608. !notes
  609. attached by FileDropPlugin
  610. !type
  611. image/jpg
  612. !file
  613. ./thumbs/08.jpg
  614. !url
  615. http://fancybox-thumbs.tiddlyspace.com/08.jpg
  616. !link
  617. [[08.jpg|http://fancybox-pics.tiddlyspace.com/08.jpg]]
  618. !end
  619. </pre>
  620. </div>
  621. <div title="09.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222328" tags="attachment thumb" server.title="09.jpg" server.page.revision="261789" server.etag="&quot;fancybox_public/09.jpg/261789;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="7b64b98add773c98e3c83be1c7f1c0542d1da27e">
  622. <pre>!label
  623. !usage
  624. {{{[img[09.jpg]]}}}
  625. [img[09.jpg]]
  626. !notes
  627. attached by FileDropPlugin
  628. !type
  629. image/jpg
  630. !file
  631. ./thumbs/09.jpg
  632. !url
  633. http://fancybox-thumbs.tiddlyspace.com/09.jpg
  634. !link
  635. [[09.jpg|http://fancybox-pics.tiddlyspace.com/09.jpg]]
  636. !end
  637. </pre>
  638. </div>
  639. <div title="10.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222328" tags="attachment thumb" server.title="10.jpg" server.page.revision="261790" server.etag="&quot;fancybox_public/10.jpg/261790;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="27616138348a3409888b6b586e3c93fedb147d24">
  640. <pre>!label
  641. !usage
  642. {{{[img[10.jpg]]}}}
  643. [img[10.jpg]]
  644. !notes
  645. attached by FileDropPlugin
  646. !type
  647. image/jpg
  648. !file
  649. ./thumbs/10.jpg
  650. !url
  651. http://fancybox-thumbs.tiddlyspace.com/10.jpg
  652. !link
  653. [[10.jpg|http://fancybox-pics.tiddlyspace.com/10.jpg]]
  654. !end
  655. </pre>
  656. </div>
  657. <div title="11.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222326" tags="attachment panorama thumb" server.title="11.jpg" server.page.revision="261791" server.etag="&quot;fancybox_public/11.jpg/261791;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="8c638bf7799466856b4265001b2c49320177d2b1">
  658. <pre>!label
  659. San Benedicto Island Sunset
  660. !usage
  661. {{{[img[11.jpg]]}}}
  662. [img[11.jpg]]
  663. !notes
  664. attached by FileDropPlugin
  665. !type
  666. image/jpg
  667. !file
  668. ./thumbs/11.jpg
  669. !url
  670. http://fancybox-thumbs.tiddlyspace.com/11.jpg
  671. !link
  672. [[11.jpg|http://fancybox-pics.tiddlyspace.com/11.jpg]]
  673. !end
  674. </pre>
  675. </div>
  676. <div title="12.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222328" tags="attachment thumb" server.title="12.jpg" server.page.revision="261792" server.etag="&quot;fancybox_public/12.jpg/261792;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="becf503db0e0ef6469ceffdd65882abe556a9774">
  677. <pre>!label
  678. !usage
  679. {{{[img[12.jpg]]}}}
  680. [img[12.jpg]]
  681. !notes
  682. attached by FileDropPlugin
  683. !type
  684. image/jpg
  685. !file
  686. ./thumbs/12.jpg
  687. !url
  688. http://fancybox-thumbs.tiddlyspace.com/12.jpg
  689. !link
  690. [[12.jpg|http://fancybox-pics.tiddlyspace.com/12.jpg]]
  691. !end
  692. </pre>
  693. </div>
  694. <div title="13.jpg" creator="pmario" modifier="pmario" created="201101271327" modified="201102222329" tags="attachment thumb" server.title="13.jpg" server.page.revision="261793" server.etag="&quot;fancybox_public/13.jpg/261793;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="1a98a0fcc4cd3767496c5b7bc0c098bb6df44c29">
  695. <pre>!label
  696. !usage
  697. {{{[img[13.jpg]]}}}
  698. [img[13.jpg]]
  699. !notes
  700. attached by FileDropPlugin
  701. !type
  702. image/jpg
  703. !file
  704. ./thumbs/13.jpg
  705. !url
  706. http://fancybox-thumbs.tiddlyspace.com/13.jpg
  707. !link
  708. [[13.jpg|http://fancybox-pics.tiddlyspace.com/13.jpg]]
  709. !end
  710. </pre>
  711. </div>
  712. <div title="@news" creator="fancybox" modifier="fancybox" created="201101211613" modified="201101211613" tags="list" server.title="@news" server.page.revision="47550" server.etag="&quot;fancybox_public/%40news/47550;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="661a1b3592e66afa62d728501c6c5895ffaf8ccb">
  713. <pre>Have fun with @FanxyBox </pre>
  714. </div>
  715. <div title="About" creator="pmario" modifier="pmario" created="201102131915" modified="201102211548" tags="mainMenu topMenu" server.title="About" server.page.revision="261794" server.etag="&quot;fancybox_public/About/261794;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.topmenu="0000" _hash="84c40df5d775847664e5a678690d0460f81ad328">
  716. <pre>!Info
  717. FancyBox site adds FancyBoxPlugin@fancybox for easy usage with TW. It includes the ~FancyBox library from fancybox.net. Have fun!
  718. /%===== Do not use these examples. Look at [[Examples]] instead !%/&lt;&lt;tiddler DifferentTransitions&gt;&gt;&lt;&lt;tiddler DifferentTitles&gt;&gt;
  719. &lt;&lt;tiddler ImageGallery&gt;&gt;
  720. &lt;&lt;tiddler ManualCalls&gt;&gt;
  721. !~HowToo's
  722. See [[HowToo's]] for detailed information!</pre>
  723. </div>
  724. <div title="AttachFileMIMETypes" creator="pmario" modifier="pmario" created="201102072259" modified="201102072259" server.title="AttachFileMIMETypes" server.page.revision="245734" server.etag="&quot;fancybox_private/AttachFileMIMETypes/245734;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="634022a843b6e8cfdb474d292238853292f720cf">
  725. <pre>text/plain
  726. .txt .text .js .vbs .asp .cgi .pl
  727. ----
  728. text/html
  729. .htm .html .hta .htx .mht
  730. ----
  731. text/comma-separated-values
  732. .csv
  733. ----
  734. text/javascript
  735. .js
  736. ----
  737. text/css
  738. .css
  739. ----
  740. text/xml
  741. .xml .xsl .xslt
  742. ----
  743. image/gif
  744. .gif
  745. ----
  746. image/jpeg
  747. .jpg .jpe .jpeg
  748. ----
  749. image/png
  750. .png
  751. ----
  752. image/bmp
  753. .bmp
  754. ----
  755. image/tiff
  756. .tif .tiff
  757. ----
  758. audio/basic
  759. .au .snd
  760. ----
  761. audio/wav
  762. .wav
  763. ----
  764. audio/x-pn-realaudio
  765. .ra .rm .ram
  766. ----
  767. audio/x-midi
  768. .mid .midi
  769. ----
  770. audio/mp3
  771. .mp3
  772. ----
  773. audio/m3u
  774. .m3u
  775. ----
  776. video/x-ms-asf
  777. .asf
  778. ----
  779. video/avi
  780. .avi
  781. ----
  782. video/mpeg
  783. .mpg .mpeg
  784. ----
  785. video/quicktime
  786. .qt .mov .qtvr
  787. ----
  788. application/pdf
  789. .pdf
  790. ----
  791. application/rtf
  792. .rtf
  793. ----
  794. application/postscript
  795. .ai .eps .ps
  796. ----
  797. application/wordperfect
  798. .wpd
  799. ----
  800. application/mswrite
  801. .wri
  802. ----
  803. application/msexcel
  804. .xls .xls3 .xls4 .xls5 .xlw
  805. ----
  806. application/msword
  807. .doc
  808. ----
  809. application/mspowerpoint
  810. .ppt .pps
  811. ----
  812. application/x-director
  813. .swa
  814. ----
  815. application/x-shockwave-flash
  816. .swf
  817. ----
  818. application/x-zip-compressed
  819. .zip
  820. ----
  821. application/x-gzip
  822. .gz
  823. ----
  824. application/x-rar-compressed
  825. .rar
  826. ----
  827. application/octet-stream
  828. .com .exe .dll .ocx
  829. ----
  830. application/java-archive
  831. .jar</pre>
  832. </div>
  833. <div title="AttachFilePlugin" creator="pmario" modifier="pmario" created="201102072259" modified="201102072259" tags="systemConfig" server.title="AttachFilePlugin" server.page.revision="245735" server.etag="&quot;fancybox_private/AttachFilePlugin/245735;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="9078408df7f276d0b62e4aeea5a4b3fb172d17c6">
  834. <pre>/***
  835. |Name|AttachFilePlugin|
  836. |Source|http://www.TiddlyTools.com/#AttachFilePlugin|
  837. |Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
  838. |Version|4.0.0|
  839. |Author|Eric Shulman|
  840. |License|http://www.TiddlyTools.com/#LegalStatements|
  841. |~CoreVersion|2.1|
  842. |Type|plugin|
  843. |Requires|AttachFilePluginFormatters, AttachFileMIMETypes|
  844. |Description|Store binary files as base64-encoded tiddlers with fallback links for separate local and/or remote file storage|
  845. Store or link binary files (such as jpg, gif, pdf or even mp3) within your TiddlyWiki document and then use them as images or links from within your tiddler content.
  846. &gt; Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/&quot;pretty&quot; links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
  847. !!!!!Documentation
  848. &gt;see [[AttachFilePluginInfo]]
  849. !!!!!Inline interface (live)
  850. &gt;see [[AttachFile]] (shadow tiddler)
  851. &gt;&lt;&lt;tiddler AttachFile&gt;&gt;
  852. !!!!!Revisions
  853. &lt;&lt;&lt;
  854. 2009.06.04 [4.0.0] changed attachment storage format to use //sections// instead of embedded substring markers.
  855. |please see [[AttachFilePluginInfo]] for additional revision details|
  856. 2005.07.20 [1.0.0] Initial Release
  857. &lt;&lt;&lt;
  858. !!!!!Code
  859. ***/
  860. // // version
  861. //{{{
  862. version.extensions.AttachFilePlugin= {major: 4, minor: 0, revision: 0, date: new Date(2009,6,4)};
  863. // shadow tiddler
  864. config.shadowTiddlers.AttachFile=&quot;&lt;&lt;attach inline&gt;&gt;&quot;;
  865. // add 'attach' backstage task (insert before built-in 'importTask')
  866. if (config.tasks) { // for TW2.2b or above
  867. config.tasks.attachTask = {
  868. text: &quot;attach&quot;,
  869. tooltip: &quot;Attach a binary file as a tiddler&quot;,
  870. content: &quot;&lt;&lt;attach inline&gt;&gt;&quot;
  871. }
  872. config.backstageTasks.splice(config.backstageTasks.indexOf(&quot;importTask&quot;),0,&quot;attachTask&quot;);
  873. }
  874. config.macros.attach = {
  875. // // lingo
  876. //{{{
  877. label: &quot;attach file&quot;,
  878. tooltip: &quot;Attach a file to this document&quot;,
  879. linkTooltip: &quot;Attachment: &quot;,
  880. typeList: &quot;AttachFileMIMETypes&quot;,
  881. titlePrompt: &quot; enter tiddler title...&quot;,
  882. MIMEPrompt: &quot;&lt;option value=''&gt;select MIME type...&lt;/option&gt;&lt;option value='editlist'&gt;[edit list...]&lt;/option&gt;&quot;,
  883. localPrompt: &quot; enter local path/filename...&quot;,
  884. URLPrompt: &quot; enter remote URL...&quot;,
  885. tiddlerErr: &quot;Please enter a tiddler title&quot;,
  886. sourceErr: &quot;Please enter a source path/filename&quot;,
  887. storageErr: &quot;Please select a storage method: embedded, local or remote&quot;,
  888. MIMEErr: &quot;Unrecognized file format. Please select a MIME type&quot;,
  889. localErr: &quot;Please enter a local path/filename&quot;,
  890. URLErr: &quot;Please enter a remote URL&quot;,
  891. fileErr: &quot;Invalid path/file or file not found&quot;,
  892. tiddlerFormat: '!usage\n{{{%0}}}\n%0\n!notes\n%1\n!type\n%2\n!file\n%3\n!url\n%4\n!data\n%5\n',
  893. //}}}
  894. // // macro definition
  895. //{{{
  896. handler:
  897. function(place,macroName,params) {
  898. if (params &amp;&amp; !params[0])
  899. { createTiddlyButton(place,this.label,this.tooltip,this.toggleAttachPanel); return; }
  900. var id=params.shift();
  901. this.createAttachPanel(place,id+&quot;_attachPanel&quot;,params);
  902. document.getElementById(id+&quot;_attachPanel&quot;).style.position=&quot;static&quot;;
  903. document.getElementById(id+&quot;_attachPanel&quot;).style.display=&quot;block&quot;;
  904. },
  905. //}}}
  906. //{{{
  907. createAttachPanel:
  908. function(place,panel_id,params) {
  909. if (!panel_id || !panel_id.length) var panel_id=&quot;_attachPanel&quot;;
  910. // remove existing panel (if any)
  911. var panel=document.getElementById(panel_id); if (panel) panel.parentNode.removeChild(panel);
  912. // set styles for this panel
  913. setStylesheet(this.css,&quot;attachPanel&quot;);
  914. // create new panel
  915. var title=&quot;&quot;; if (params &amp;&amp; params[0]) title=params.shift();
  916. var types=this.MIMEPrompt+this.formatListOptions(store.getTiddlerText(this.typeList)); // get MIME types
  917. panel=createTiddlyElement(place,&quot;span&quot;,panel_id,&quot;attachPanel&quot;,null);
  918. var html=this.html.replace(/%id%/g,panel_id);
  919. html=html.replace(/%title%/g,title);
  920. html=html.replace(/%disabled%/g,title.length?&quot;disabled&quot;:&quot;&quot;);
  921. html=html.replace(/%IEdisabled%/g,config.browser.isIE?&quot;disabled&quot;:&quot;&quot;);
  922. html=html.replace(/%types%/g,types);
  923. panel.innerHTML=html;
  924. if (config.browser.isGecko) { // FF3 FIXUP
  925. document.getElementById(&quot;attachSource&quot;).style.display=&quot;none&quot;;
  926. document.getElementById(&quot;attachFixPanel&quot;).style.display=&quot;block&quot;;
  927. }
  928. return panel;
  929. },
  930. //}}}
  931. //{{{
  932. toggleAttachPanel:
  933. function (e) {
  934. if (!e) var e = window.event;
  935. var parent=resolveTarget(e).parentNode;
  936. var panel = document.getElementById(&quot;_attachPanel&quot;);
  937. if (panel==undefined || panel.parentNode!=parent)
  938. panel=config.macros.attach.createAttachPanel(parent,&quot;_attachPanel&quot;);
  939. var isOpen = panel.style.display==&quot;block&quot;;
  940. if(config.options.chkAnimate)
  941. anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,&quot;none&quot;));
  942. else
  943. panel.style.display = isOpen ? &quot;none&quot; : &quot;block&quot; ;
  944. e.cancelBubble = true;
  945. if (e.stopPropagation) e.stopPropagation();
  946. return(false);
  947. },
  948. //}}}
  949. //{{{
  950. formatListOptions:
  951. function(text) {
  952. if (!text || !text.trim().length) return &quot;&quot;;
  953. // get MIME list content from text
  954. var parts=text.split(&quot;\n----\n&quot;);
  955. var out=&quot;&quot;;
  956. for (var p=0; p&lt;parts.length; p++) {
  957. var lines=parts[p].split(&quot;\n&quot;);
  958. var label=lines.shift(); // 1st line=display text
  959. var value=lines.shift(); // 2nd line=item value
  960. out +='&lt;option value=&quot;%1&quot;&gt;%0&lt;/option&gt;'.format([label,value]);
  961. }
  962. return out;
  963. },
  964. //}}}
  965. // // interface definition
  966. //{{{
  967. css:
  968. &quot;.attachPanel { display: none; position:absolute; z-index:10; width:35em; right:105%; top:0em;\
  969. background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
  970. border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
  971. padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em; text-align:left }\
  972. .attachPanel form { display:inline;border:0;padding:0;margin:0; }\
  973. .attachPanel select { width:99%;margin:0px;font-size:8pt;line-height:110%;}\
  974. .attachPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
  975. .attachPanel textarea { width:98%;margin:0px;height:2em;font-size:8pt;line-height:110%}\
  976. .attachPanel table { width:100%;border:0;margin:0;padding:0;color:inherit; }\
  977. .attachPanel tbody, .attachPanel tr, .attachPanel td { border:0;margin:0;padding:0;color:#000; }\
  978. .attachPanel .box { border:1px solid black; padding:.3em; margin:.3em 0px; background:#f8f8f8; \
  979. -moz-border-radius:5px;-webkit-border-radius:5px; }\
  980. .attachPanel .chk { width:auto;border:0; }\
  981. .attachPanel .btn { width:auto; }\
  982. .attachPanel .btn2 { width:49%; }\
  983. &quot;,
  984. //}}}
  985. //{{{
  986. html:
  987. '&lt;form&gt;\
  988. attach from source file\
  989. &lt;input type=&quot;file&quot; id=&quot;attachSource&quot; name=&quot;source&quot; size=&quot;56&quot;\
  990. onChange=&quot;config.macros.attach.onChangeSource(this)&quot;&gt;\
  991. &lt;div id=&quot;attachFixPanel&quot; style=&quot;display:none&quot;&gt;&lt;!-- FF3 FIXUP --&gt;\
  992. &lt;input type=&quot;text&quot; id=&quot;attachFixSource&quot; style=&quot;width:90%&quot;\
  993. title=&quot;Enter a path/file to attach&quot;\
  994. onChange=&quot;config.macros.attach.onChangeSource(this);&quot;&gt;\
  995. &lt;input type=&quot;button&quot; style=&quot;width:7%&quot; value=&quot;...&quot;\
  996. title=&quot;Enter a path/file to attach&quot;\
  997. onClick=&quot;config.macros.attach.askForFilename(document.getElementById(\'attachFixSource\'));&quot;&gt;\
  998. &lt;/div&gt;&lt;!--end FF3 FIXUP--&gt;\
  999. &lt;div class=&quot;box&quot;&gt;\
  1000. &lt;table style=&quot;border:0&quot;&gt;&lt;tr style=&quot;border:0&quot;&gt;&lt;td style=&quot;border:0;text-align:right;width:1%;white-space:nowrap&quot;&gt;\
  1001. embed data &lt;input type=checkbox class=chk name=&quot;useData&quot; %IEdisabled% \
  1002. onclick=&quot;if (!this.form.MIMEType.value.length)\
  1003. this.form.MIMEType.selectedIndex=this.checked?1:0; &quot;&gt;&amp;nbsp;\
  1004. &lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;\
  1005. &lt;select size=1 name=&quot;MIMEType&quot; \
  1006. onchange=&quot;this.title=this.value; if (this.value==\'editlist\')\
  1007. { this.selectedIndex=this.form.useData.checked?1:0; story.displayTiddler(null,config.macros.attach.typeList,2); return; }&quot;&gt;\
  1008. &lt;option value=&quot;&quot;&gt;&lt;/option&gt;\
  1009. %types%\
  1010. &lt;/select&gt;\
  1011. &lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border:0&quot;&gt;&lt;td style=&quot;border:0;text-align:right;width:1%;white-space:nowrap&quot;&gt;\
  1012. local link &lt;input type=checkbox class=chk name=&quot;useLocal&quot;\
  1013. onclick=&quot;this.form.local.value=this.form.local.defaultValue=this.checked?config.macros.attach.localPrompt:\'\';&quot;&gt;&amp;nbsp;\
  1014. &lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;\
  1015. &lt;input type=text name=&quot;local&quot; size=15 autocomplete=off value=&quot;&quot;\
  1016. onchange=&quot;this.form.useLocal.checked=this.value.length&quot; \
  1017. onkeyup=&quot;this.form.useLocal.checked=this.value.length&quot; \
  1018. onfocus=&quot;if (!this.value.length) this.value=config.macros.attach.localPrompt; this.select()&quot;&gt;\
  1019. &lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;border:0&quot;&gt;&lt;td style=&quot;border:0;text-align:right;width:1%;white-space:nowrap&quot;&gt;\
  1020. remote link &lt;input type=checkbox class=chk name=&quot;useURL&quot;\
  1021. onclick=&quot;this.form.URL.value=this.form.URL.defaultValue=this.checked?config.macros.attach.URLPrompt:\'\';\&quot;&gt;&amp;nbsp;\
  1022. &lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;\
  1023. &lt;input type=text name=&quot;URL&quot; size=15 autocomplete=off value=&quot;&quot;\
  1024. onfocus=&quot;if (!this.value.length) this.value=config.macros.attach.URLPrompt; this.select()&quot;\
  1025. onchange=&quot;this.form.useURL.checked=this.value.length;&quot;\
  1026. onkeyup=&quot;this.form.useURL.checked=this.value.length;&quot;&gt;\
  1027. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;\
  1028. &lt;/div&gt;\
  1029. &lt;table style=&quot;border:0&quot;&gt;&lt;tr style=&quot;border:0&quot;&gt;&lt;td style=&quot;border:0;text-align:right;vertical-align:top;width:1%;white-space:nowrap&quot;&gt;\
  1030. notes&amp;nbsp;\
  1031. &lt;/td&gt;&lt;td style=&quot;border:0&quot; colspan=2&gt;\
  1032. &lt;textarea name=&quot;notes&quot; style=&quot;width:98%;height:3.5em;margin-bottom:2px&quot;&gt;&lt;/textarea&gt;\
  1033. &lt;/td&gt;&lt;tr style=&quot;border:0&quot;&gt;&lt;td style=&quot;border:0;text-align:right;width:1%;white-space:nowrap&quot;&gt;\
  1034. attach as&amp;nbsp;\
  1035. &lt;/td&gt;&lt;td style=&quot;border:0&quot; colspan=2&gt;\
  1036. &lt;input type=text name=&quot;tiddlertitle&quot; size=15 autocomplete=off value=&quot;%title%&quot;\
  1037. onkeyup=&quot;if (!this.value.length) { this.value=config.macros.attach.titlePrompt; this.select(); }&quot;\
  1038. onfocus=&quot;if (!this.value.length) this.value=config.macros.attach.titlePrompt; this.select()&quot; %disabled%&gt;\
  1039. &lt;/td&gt;&lt;/tr&gt;&lt;/tr&gt;&lt;tr style=&quot;border:0&quot;&gt;&lt;td style=&quot;border:0;text-align:right;width:1%;white-space:nowrap&quot;&gt;\
  1040. add tags&amp;nbsp;\
  1041. &lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;\
  1042. &lt;input type=text name=&quot;tags&quot; size=15 autocomplete=off value=&quot;&quot; onfocus=&quot;this.select()&quot;&gt;\
  1043. &lt;/td&gt;&lt;td style=&quot;width:40%;text-align:right;border:0&quot;&gt;\
  1044. &lt;input type=button class=btn2 value=&quot;attach&quot;\
  1045. onclick=&quot;config.macros.attach.onClickAttach(this)&quot;&gt;&lt;!--\
  1046. --&gt;&lt;input type=button class=btn2 value=&quot;close&quot;\
  1047. onclick=&quot;var panel=document.getElementById(\'%id%\'); if (panel) panel.parentNode.removeChild(panel);&quot;&gt;\
  1048. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;\
  1049. &lt;/form&gt;',
  1050. //}}}
  1051. // // control processing
  1052. //{{{
  1053. onChangeSource:
  1054. function(here) {
  1055. var form=here.form;
  1056. var list=form.MIMEType;
  1057. var theFilename = here.value;
  1058. var theExtension = theFilename.substr(theFilename.lastIndexOf('.')).toLowerCase();
  1059. // if theFilename is in current document folder, remove path prefix and use relative reference
  1060. var h=document.location.href; folder=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf(&quot;/&quot;)+1)));
  1061. if (theFilename.substr(0,folder.length)==folder) theFilename='./'+theFilename.substr(folder.length);
  1062. else theFilename='file:///'+theFilename; // otherwise, use absolute reference
  1063. theFilename=theFilename.replace(/\\/g,&quot;/&quot;); // fixup: change \ to /
  1064. form.useLocal.checked = true;
  1065. form.local.value = theFilename;
  1066. form.useData.checked = !form.useData.disabled;
  1067. list.selectedIndex=1;
  1068. for (var i=0; i&lt;list.options.length; i++) // find matching MIME type
  1069. if (list.options[i].value.indexOf(theExtension)!=-1) { list.selectedIndex = i; break; }
  1070. if (!form.tiddlertitle.disabled)
  1071. form.tiddlertitle.value=theFilename.substr(theFilename.lastIndexOf('/')+1); // get tiddlername from filename
  1072. },
  1073. //}}}
  1074. //{{{
  1075. onClickAttach:
  1076. function (here) {
  1077. clearMessage();
  1078. // get input values
  1079. var form=here.form;
  1080. var src=form.source; if (config.browser.isGecko) src=document.getElementById(&quot;attachFixSource&quot;);
  1081. src=src.value!=src.defaultValue?src.value:&quot;&quot;;
  1082. var when=(new Date()).formatString(config.macros.timeline.dateFormat);
  1083. var title=form.tiddlertitle.value;
  1084. var local = form.local.value!=form.local.defaultValue?form.local.value:&quot;&quot;;
  1085. var url = form.URL.value!=form.URL.defaultValue?form.URL.value:&quot;&quot;;
  1086. var notes = form.notes.value;
  1087. var tags = &quot;attachment excludeMissing &quot;+form.tags.value;
  1088. var useData=form.useData.checked;
  1089. var useLocal=form.useLocal.checked;
  1090. var useURL=form.useURL.checked;
  1091. var mimetype = form.MIMEType.value.length?form.MIMEType.options[form.MIMEType.selectedIndex].text:&quot;&quot;;
  1092. // validate checkboxes and get filename
  1093. if (useData) {
  1094. if (src.length) { if (!theLocation) var theLocation=src; }
  1095. else { alert(this.sourceErr); src.focus(); return false; }
  1096. }
  1097. if (useLocal) {
  1098. if (local.length) { if (!theLocation) var theLocation = local; }
  1099. else { alert(this.localErr); form.local.focus(); return false; }
  1100. }
  1101. if (useURL) {
  1102. if (url.length) { if (!theLocation) var theLocation = url; }
  1103. else { alert(this.URLErr); form.URL.focus(); return false; }
  1104. }
  1105. if (!(useData||useLocal||useURL))
  1106. { form.useData.focus(); alert(this.storageErr); return false; }
  1107. if (!theLocation)
  1108. { src.focus(); alert(this.sourceErr); return false; }
  1109. if (!title || !title.trim().length || title==this.titlePrompt)
  1110. { form.tiddlertitle.focus(); alert(this.tiddlerErr); return false; }
  1111. // if not already selected, determine MIME type based on filename extension (if any)
  1112. if (useData &amp;&amp; !mimetype.length &amp;&amp; theLocation.lastIndexOf('.')!=-1) {
  1113. var theExt = theLocation.substr(theLocation.lastIndexOf('.')).toLowerCase();
  1114. var theList=form.MIMEType;
  1115. for (var i=0; i&lt;theList.options.length; i++)
  1116. if (theList.options[i].value.indexOf(theExt)!=-1)
  1117. { var mimetype=theList.options[i].text; theList.selectedIndex=i; break; }
  1118. }
  1119. // attach the file
  1120. return this.createAttachmentTiddler(src, when, notes, tags, title,
  1121. useData, useLocal, useURL, local, url, mimetype);
  1122. },
  1123. getMIMEType:
  1124. function(src,def) {
  1125. var ext = src.substr(src.lastIndexOf('.')).toLowerCase();
  1126. var list=store.getTiddlerText(this.typeList);
  1127. if (!list || !list.trim().length) return def;
  1128. // get MIME list content from tiddler
  1129. var parts=list.split(&quot;\n----\n&quot;);
  1130. for (var p=0; p&lt;parts.length; p++) {
  1131. var lines=parts[p].split(&quot;\n&quot;);
  1132. var mime=lines.shift(); // 1st line=MIME type
  1133. var match=lines.shift(); // 2nd line=matching extensions
  1134. if (match.indexOf(ext)!=-1) return mime;
  1135. }
  1136. return def;
  1137. },
  1138. createAttachmentTiddler:
  1139. function (src, when, notes, tags, title, useData, useLocal, useURL, local, url, mimetype, noshow) {
  1140. if (useData) { // encode the data
  1141. if (!mimetype.length) {
  1142. alert(this.MIMEErr);
  1143. form.MIMEType.selectedIndex=1; form.MIMEType.focus();
  1144. return false;
  1145. }
  1146. var d = this.readFile(src); if (!d) { return false; }
  1147. displayMessage('encoding '+src);
  1148. var encoded = this.encodeBase64(d);
  1149. displayMessage('file size='+d.length+' bytes, encoded size='+encoded.length+' bytes');
  1150. }
  1151. var usage=(mimetype.substr(0,5)==&quot;image&quot;?'[img[%0]]':'[[%0|%0]]').format([title]);
  1152. var theText=this.tiddlerFormat.format([
  1153. usage, notes.length?notes:'//none//', mimetype,
  1154. useLocal?local.replace(/\\/g,'/'):'', useURL?url:'',
  1155. useData?('data:'+mimetype+';base64,'+encoded):'' ]);
  1156. store.saveTiddler(title,title,theText,config.options.txtUserName,new Date(),tags);
  1157. var panel=document.getElementById(&quot;attachPanel&quot;); if (panel) panel.style.display=&quot;none&quot;;
  1158. if (!noshow) { story.displayTiddler(null,title); story.refreshTiddler(title,null,true); }
  1159. displayMessage('attached &quot;'+title+'&quot;');
  1160. return true;
  1161. },
  1162. //}}}
  1163. // // base64 conversion
  1164. //{{{
  1165. encodeBase64:
  1166. function (d) {
  1167. if (!d) return null;
  1168. // encode as base64
  1169. var keyStr = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=&quot;;
  1170. var out=&quot;&quot;;
  1171. var chr1,chr2,chr3=&quot;&quot;;
  1172. var enc1,enc2,enc3,enc4=&quot;&quot;;
  1173. for (var count=0,i=0; i&lt;d.length; ) {
  1174. chr1=d.charCodeAt(i++);
  1175. chr2=d.charCodeAt(i++);
  1176. chr3=d.charCodeAt(i++);
  1177. enc1=chr1 &gt;&gt; 2;
  1178. enc2=((chr1 &amp; 3) &lt;&lt; 4) | (chr2 &gt;&gt; 4);
  1179. enc3=((chr2 &amp; 15) &lt;&lt; 2) | (chr3 &gt;&gt; 6);
  1180. enc4=chr3 &amp; 63;
  1181. if (isNaN(chr2)) enc3=enc4=64;
  1182. else if (isNaN(chr3)) enc4=64;
  1183. out+=keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);
  1184. chr1=chr2=chr3=enc1=enc2=enc3=enc4=&quot;&quot;;
  1185. }
  1186. return out;
  1187. },
  1188. decodeBase64: function(input) {
  1189. var out=&quot;&quot;;
  1190. var chr1,chr2,chr3;
  1191. var enc1,enc2,enc3,enc4;
  1192. var i = 0;
  1193. // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
  1194. input=input.replace(/[^A-Za-z0-9\+\/\=]/g, &quot;&quot;);
  1195. do {
  1196. enc1=keyStr.indexOf(input.charAt(i++));
  1197. enc2=keyStr.indexOf(input.charAt(i++));
  1198. enc3=keyStr.indexOf(input.charAt(i++));
  1199. enc4=keyStr.indexOf(input.charAt(i++));
  1200. chr1=(enc1 &lt;&lt; 2) | (enc2 &gt;&gt; 4);
  1201. chr2=((enc2 &amp; 15) &lt;&lt; 4) | (enc3 &gt;&gt; 2);
  1202. chr3=((enc3 &amp; 3) &lt;&lt; 6) | enc4;
  1203. out=out+String.fromCharCode(chr1);
  1204. if (enc3!=64) out=out+String.fromCharCode(chr2);
  1205. if (enc4!=64) out=out+String.fromCharCode(chr3);
  1206. } while (i&lt;input.length);
  1207. return out;
  1208. },
  1209. //}}}
  1210. // // I/O functions
  1211. //{{{
  1212. readFile: // read local BINARY file data
  1213. function(filePath) {
  1214. if(!window.Components) { return null; }
  1215. try { netscape.security.PrivilegeManager.enablePrivilege(&quot;UniversalXPConnect&quot;); }
  1216. catch(e) { alert(&quot;access denied: &quot;+filePath); return null; }
  1217. var file = Components.classes[&quot;@mozilla.org/file/local;1&quot;].createInstance(Components.interfaces.nsILocalFile);
  1218. try { file.initWithPath(filePath); } catch(e) { alert(&quot;cannot read file - invalid path: &quot;+filePath); return null; }
  1219. if (!file.exists()) { alert(&quot;cannot read file - not found: &quot;+filePath); return null; }
  1220. var inputStream = Components.classes[&quot;@mozilla.org/network/file-input-stream;1&quot;].createInstance(Components.interfaces.nsIFileInputStream);
  1221. inputStream.init(file, 0x01, 00004, null);
  1222. var bInputStream = Components.classes[&quot;@mozilla.org/binaryinputstream;1&quot;].createInstance(Components.interfaces.nsIBinaryInputStream);
  1223. bInputStream.setInputStream(inputStream);
  1224. return(bInputStream.readBytes(inputStream.available()));
  1225. },
  1226. //}}}
  1227. //{{{
  1228. writeFile:
  1229. function(filepath,data) {
  1230. // TBD: decode base64 and write BINARY data to specified local path/filename
  1231. return(false);
  1232. },
  1233. //}}}
  1234. //{{{
  1235. askForFilename: // for FF3 fixup
  1236. function(target) {
  1237. var msg=config.messages.selectFile;
  1238. if (target &amp;&amp; target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
  1239. // get local path for current document
  1240. var path=getLocalPath(document.location.href);
  1241. var p=path.lastIndexOf(&quot;/&quot;); if (p==-1) p=path.lastIndexOf(&quot;\\&quot;); // Unix or Windows
  1242. if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
  1243. var file=&quot;&quot;
  1244. var result=window.mozAskForFilename(msg,path,file,true); // FF3 FIXUP ONLY
  1245. if (target &amp;&amp; result.length) // set target field and trigger handling
  1246. { target.value=result; target.onchange(); }
  1247. return result;
  1248. }
  1249. };
  1250. //}}}
  1251. //{{{
  1252. if (window.mozAskForFilename===undefined) { // also defined by CoreTweaks (for ticket #604)
  1253. window.mozAskForFilename=function(msg,path,file,mustExist) {
  1254. if(!window.Components) return false;
  1255. try {
  1256. netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
  1257. var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
  1258. var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
  1259. picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
  1260. var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
  1261. thispath.initWithPath(path);
  1262. picker.displayDirectory=thispath;
  1263. picker.defaultExtension='';
  1264. picker.defaultString=file;
  1265. picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
  1266. if (picker.show()!=nsIFilePicker.returnCancel)
  1267. var result=picker.file.persistentDescriptor;
  1268. }
  1269. catch(ex) { displayMessage(ex.toString()); }
  1270. return result;
  1271. }
  1272. }
  1273. //}}}</pre>
  1274. </div>
  1275. <div title="AttachFilePluginFormatters" creator="fancybox" modifier="pmario" created="201101211613" modified="201101261415" tags="systemConfig" server.title="AttachFilePluginFormatters" server.page.revision="173302" server.etag="&quot;fancybox_public/AttachFilePluginFormatters/173302;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="315fcc4a02e8fc87f4302d794d78b7ec92654677">
  1276. <pre>/***
  1277. |Name|AttachFilePluginFormatters|
  1278. |Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
  1279. |Version|4.0.1|
  1280. |Author|Eric Shulman|
  1281. |License|http://www.TiddlyTools.com/#LegalStatements|
  1282. |~CoreVersion|2.1.3|
  1283. |Type|plugin|
  1284. |Description|run-time library for displaying attachment tiddlers|
  1285. Runtime processing for //rendering// attachment tiddlers created by [[AttachFilePlugin]]. Attachment tiddlers are tagged with&lt;&lt;tag attachment&gt;&gt;and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that has been stored directly as base64 text-encoded data or can be loaded from external files stored on a local filesystem or remote web server. Note: after creating new attachment tiddlers, you can remove [[AttachFilePlugin]], as long as you retain //this// tiddler (so that images can be rendered later on).
  1286. !!!!!Formatters
  1287. &lt;&lt;&lt;
  1288. This plugin extends the behavior of the following TiddlyWiki core &quot;wikify()&quot; formatters:
  1289. * embedded images: {{{[img[tooltip|image]]}}}
  1290. * linked embedded images: {{{[img[tooltip|image][link]]}}}
  1291. * external/&quot;pretty&quot; links: {{{[[label|link]]}}}
  1292. ''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''
  1293. &lt;&lt;&lt;
  1294. !!!!!Revisions
  1295. &lt;&lt;&lt;
  1296. 2009.10.10 [4.0.1] in fileExists(), check for IE to avoid hanging Chrome during startup
  1297. 2009.06.04 [4.0.0] changed attachment storage format to use //sections// instead of embedded substring markers.
  1298. 2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
  1299. 2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
  1300. 2007.10.29 [3.7.0] more code reduction: removed upload handling from AttachFilePlugin (saves ~7K!)
  1301. 2007.10.28 [3.6.0] removed duplicate formatter code from AttachFilePlugin (saves ~10K!) and updated documentation accordingly. This plugin ([[AttachFilePluginFormatters]]) is now //''required''// in order to display attached images/binary files within tiddler content.
  1302. 2006.05.20 [3.4.0] through 2007.03.01 [3.5.3] sync with AttachFilePlugin
  1303. 2006.05.13 [3.2.0] created from AttachFilePlugin v3.2.0
  1304. &lt;&lt;&lt;
  1305. !!!!!Code
  1306. ***/
  1307. // // version
  1308. //{{{
  1309. version.extensions.AttachFilePluginFormatters= {major: 4, minor: 0, revision: 1, date: new Date(2009,10,10)};
  1310. //}}}
  1311. //{{{
  1312. if (config.macros.attach==undefined) config.macros.attach= { };
  1313. //}}}
  1314. //{{{
  1315. if (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {
  1316. var tiddler = store.getTiddler(title);
  1317. if (tiddler==undefined || tiddler.tags==undefined) return false;
  1318. return (tiddler.tags.indexOf(&quot;attachment&quot;)!=-1);
  1319. }
  1320. //}}}
  1321. //{{{
  1322. // test for local file existence - returns true/false without visible error display
  1323. if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(f) {
  1324. if(window.Components) { // MOZ
  1325. try { netscape.security.PrivilegeManager.enablePrivilege(&quot;UniversalXPConnect&quot;); }
  1326. catch(e) { return false; } // security access denied
  1327. var file = Components.classes[&quot;@mozilla.org/file/local;1&quot;].createInstance(Components.interfaces.nsILocalFile);
  1328. try { file.initWithPath(f); }
  1329. catch(e) { return false; } // invalid directory
  1330. return file.exists();
  1331. }
  1332. else if (config.browser.isIE) { // IE
  1333. var fso = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
  1334. return fso.FileExists(f);
  1335. }
  1336. else return true; // other browsers: assume file exists
  1337. }
  1338. //}}}
  1339. //{{{
  1340. if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {
  1341. // extract embedded data, local and remote links (if any)
  1342. var text=store.getTiddlerText(title,'');
  1343. var embedded=store.getTiddlerText(title+'##data','').trim();
  1344. var locallink=store.getTiddlerText(title+'##file','').trim();
  1345. var remotelink=store.getTiddlerText(title+'##url','').trim();
  1346. // backward-compatibility for older attachments (pre 4.0.0)
  1347. var startmarker=&quot;---BEGIN_DATA---\n&quot;;
  1348. var endmarker=&quot;\n---END_DATA---&quot;;
  1349. var pos=0; var endpos=0;
  1350. if ((pos=text.indexOf(startmarker))!=-1 &amp;&amp; (endpos=text.indexOf(endmarker))!=-1)
  1351. embedded=&quot;data:&quot;+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
  1352. if ((pos=text.indexOf(&quot;/%LOCAL_LINK%/&quot;))!=-1)
  1353. locallink=text.substring(text.indexOf(&quot;|&quot;,pos)+1,text.indexOf(&quot;]]&quot;,pos));
  1354. if ((pos=text.indexOf(&quot;/%REMOTE_LINK%/&quot;))!=-1)
  1355. remotelink=text.substring(text.indexOf(&quot;|&quot;,pos)+1,text.indexOf(&quot;]]&quot;,pos));
  1356. // if there is a data: URI defined (not supported by IE)
  1357. if (embedded.length &amp;&amp; !config.browser.isIE) return embedded;
  1358. // document is being served remotely... use remote URL (if any) (avoids security alert)
  1359. if (remotelink.length &amp;&amp; document.location.protocol!=&quot;file:&quot;)
  1360. return remotelink;
  1361. // local link only... return link without checking file existence (avoids security alert)
  1362. if (locallink.length &amp;&amp; !remotelink.length)
  1363. return locallink;
  1364. // local link, check for file exist... use local link if found
  1365. if (locallink.length) {
  1366. locallink=locallink.replace(/^\.[\/\\]/,''); // strip leading './' or '.\' (if any)
  1367. if (this.fileExists(getLocalPath(locallink))) return locallink;
  1368. // maybe local link is relative... add path from current document and try again
  1369. var pathPrefix=document.location.href; // get current document path and trim off filename
  1370. var slashpos=pathPrefix.lastIndexOf(&quot;/&quot;); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf(&quot;\\&quot;);
  1371. if (slashpos!=-1 &amp;&amp; slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
  1372. if (this.fileExists(getLocalPath(pathPrefix+locallink))) return locallink;
  1373. }
  1374. // no embedded data, no local (or not found), fallback to remote URL (if any)
  1375. if (remotelink.length) return remotelink;
  1376. // attachment URL doesn't resolve, just return input as is
  1377. return title;
  1378. }
  1379. //}}}
  1380. //{{{
  1381. if (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {
  1382. if (this.initialized) return;
  1383. // find the formatter for &quot;image&quot; and replace the handler
  1384. for (var i=0; i&lt;config.formatters.length &amp;&amp; config.formatters[i].name!=&quot;image&quot;; i++);
  1385. if (i&lt;config.formatters.length) config.formatters[i].handler=function(w) {
  1386. this.lookaheadRegExp.lastIndex = w.matchStart;
  1387. var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
  1388. if(lookaheadMatch &amp;&amp; lookaheadMatch.index == w.matchStart) // Simple bracketted link
  1389. {
  1390. var e = w.output;
  1391. if(lookaheadMatch[5])
  1392. {
  1393. var link = lookaheadMatch[5];
  1394. // ELS -------------
  1395. var external=config.formatterHelpers.isExternalLink(link);
  1396. if (external)
  1397. {
  1398. if (config.macros.attach.isAttachment(link))
  1399. {
  1400. e = createExternalLink(w.output,link);
  1401. e.href=config.macros.attach.getAttachment(link);
  1402. e.title = config.macros.attach.linkTooltip + link;
  1403. }
  1404. else
  1405. e = createExternalLink(w.output,link);
  1406. }
  1407. else
  1408. e = createTiddlyLink(w.output,link,false,null,w.isStatic);
  1409. // ELS -------------
  1410. addClass(e,&quot;imageLink&quot;);
  1411. }
  1412. var img = createTiddlyElement(e,&quot;img&quot;);
  1413. if(lookaheadMatch[1])
  1414. img.align = &quot;left&quot;;
  1415. else if(lookaheadMatch[2])
  1416. img.align = &quot;right&quot;;
  1417. if(lookaheadMatch[3])
  1418. img.title = lookaheadMatch[3];
  1419. img.src = lookaheadMatch[4];
  1420. // ELS -------------
  1421. if (config.macros.attach.isAttachment(lookaheadMatch[4]))
  1422. img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
  1423. // ELS -------------
  1424. w.nextMatch = this.lookaheadRegExp.lastIndex;
  1425. }
  1426. }
  1427. //}}}
  1428. //{{{
  1429. // find the formatter for &quot;prettyLink&quot; and replace the handler
  1430. for (var i=0; i&lt;config.formatters.length &amp;&amp; config.formatters[i].name!=&quot;prettyLink&quot;; i++);
  1431. if (i&lt;config.formatters.length) {
  1432. config.formatters[i].handler=function(w) {
  1433. this.lookaheadRegExp.lastIndex = w.matchStart;
  1434. var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
  1435. if(lookaheadMatch &amp;&amp; lookaheadMatch.index == w.matchStart) {
  1436. var e;
  1437. var text = lookaheadMatch[1];
  1438. if(lookaheadMatch[3]) {
  1439. // Pretty bracketted link
  1440. var link = lookaheadMatch[3];
  1441. if (config.macros.attach.isAttachment(link)) {
  1442. e = createExternalLink(w.output,link);
  1443. e.href=config.macros.attach.getAttachment(link);
  1444. e.title=config.macros.attach.linkTooltip+link;
  1445. }
  1446. else e = (!lookaheadMatch[2] &amp;&amp; config.formatterHelpers.isExternalLink(link))
  1447. ? createExternalLink(w.output,link)
  1448. : createTiddlyLink(w.output,link,false,null,w.isStatic);
  1449. } else {
  1450. e = createTiddlyLink(w.output,text,false,null,w.isStatic);
  1451. }
  1452. createTiddlyText(e,text);
  1453. w.nextMatch = this.lookaheadRegExp.lastIndex;
  1454. }
  1455. }
  1456. } // if &quot;prettyLink&quot; formatter found
  1457. this.initialized=true;
  1458. }
  1459. //}}}
  1460. //{{{
  1461. config.macros.attach.init_formatters(); // load time init
  1462. //}}}
  1463. //{{{
  1464. if (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {
  1465. TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;
  1466. TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {
  1467. return config.macros.attach.isAttachment(title)?
  1468. config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText.apply(this,arguments);
  1469. }
  1470. }
  1471. //}}}</pre>
  1472. </div>
  1473. <div title="Automatic" creator="pmario" modifier="pmario" created="201008061923" modified="201011081330" tags="excludeLists systemPalette" server.title="Automatic" server.page.revision="107040" server.etag="&quot;neui-em_public/Automatic/107040;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="8d1b740254a4a1d74f79824d1175ebfeea75eaf2">
  1474. <pre>/*{{{*/
  1475. Name:Automatic
  1476. Background: #e5f0e5
  1477. Foreground: #0e190f
  1478. PrimaryPale: #fcfdfc
  1479. PrimaryLight: #accfae
  1480. PrimaryMid: #4A6C4A
  1481. PrimaryDark: #000000
  1482. SecondaryPale: #fdfcfc
  1483. SecondaryLight: #cfacac
  1484. SecondaryMid: #a15d5c
  1485. SecondaryDark: #000000
  1486. TertiaryPale: #fcfcfd
  1487. TertiaryLight: #afaccf
  1488. TertiaryMid: #615ca1
  1489. TertiaryDark: #000000
  1490. /*}}}*/</pre>
  1491. </div>
  1492. <div title="Backstage" creator="osmosoft" modifier="osmosoft" created="201102181424" modified="201102181424" tags="excludeLists excludeMissing excludeSearch" server.title="Backstage" server.page.revision="257473" server.etag="&quot;tiddlyspace/Backstage/257473;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/tiddlyspace" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="tiddlyspace" server.permissions="read" server.content-type="" _hash="b6ad083e2212cc2964a85891daac144647f3b296">
  1493. <pre>!UserUnplugged
  1494. &lt;&lt;TiddlySpaceLogin&gt;&gt;
  1495. !SpaceUnplugged
  1496. {{unpluggedSpaceTab{
  1497. {{wizard{
  1498. &lt;&lt;image unsyncedIcon width:48&gt;&gt; &lt;&lt;message messages.syncExplanation&gt;&gt;
  1499. }}}
  1500. {{wizard syncKey{
  1501. {{keyHeading{
  1502. Key}}}
  1503. {{changedServer keyItem{&lt;&lt;message macros.sync.syncStatusList.changedServer.text&gt;&gt;}}} {{changedBoth keyItem{&lt;&lt;message macros.sync.syncStatusList.changedBoth.text&gt;&gt;}}} {{changedLocally keyItem{&lt;&lt;message macros.sync.syncStatusList.changedLocally.text&gt;&gt;}}} {{notFound keyItem{&lt;&lt;message macros.sync.syncStatusList.notFound.text&gt;&gt;}}}
  1504. }}}
  1505. &lt;&lt;sync&gt;&gt;
  1506. !User
  1507. {{textRight{
  1508. &lt;&lt;TiddlySpaceLogout&gt;&gt;
  1509. &lt;&lt;tabs txtUserTab
  1510. &quot;Your Identities&quot; &quot;Manage your identities&quot; [[Backstage##Identities]]
  1511. &quot;Your Spaces&quot; &quot;Maintain your spaces and create new ones&quot; [[Backstage##UserSpaces]]
  1512. &quot;Your Password&quot; &quot;Change your password&quot; [[Backstage##Password]]
  1513. &gt;&gt;
  1514. }}}
  1515. !Menu
  1516. {{tiddlyspaceMenu{
  1517. &lt;&lt;message messages.memberStatus&gt;&gt; &lt;&lt;homeLink&gt;&gt;
  1518. {{unsyncedList{&lt;&lt;message messages.syncListHeading&gt;&gt; &lt;&lt;list filter [is[unsynced]]&gt;&gt;}}}
  1519. &lt;&lt;tabs txtTiddlySpaceTab
  1520. search &quot;search across TiddlySpace&quot; Backstage##Search
  1521. help &quot;quick access to useful space resources&quot; Backstage##Resources
  1522. &gt;&gt;
  1523. running TiddlySpace@glossary version &lt;&lt;message extensions.tiddlyweb.status.tiddlyspace_version&gt;&gt;
  1524. }}}
  1525. !Resources
  1526. [[blog|@@blog]]
  1527. [[documentation|@@docs]]
  1528. [[featured spaces|@@featured]]
  1529. !Search
  1530. &lt;&lt;tsSearch&gt;&gt;
  1531. !Space
  1532. &lt;&lt;followSpace&gt;&gt;
  1533. &lt;&lt;tabs txtSpaceTab
  1534. members Members Backstage##SpaceMembers
  1535. includes &quot;include spaces&quot; Backstage##SpaceInclusions
  1536. tiddlers &quot;tiddlers control panel&quot; Backstage##Tiddlers
  1537. plugins &quot;Manage installed plugins&quot; PluginManager
  1538. batch &quot;Perform batch operations on public/private tiddlers&quot; Backstage##BatchOps
  1539. options &quot;TiddlyWiki options&quot; Backstage##Options
  1540. tweaks &quot;Tweak the appearance and behaviour of TiddlyWiki&quot; AdvancedOptions
  1541. import &quot;Import tiddlers from a TiddlyWiki&quot; Backstage##FileImport
  1542. export &quot;Export this TiddlySpace for offline use&quot; Backstage##Export
  1543. &gt;&gt;
  1544. !FileImport
  1545. &lt;&lt;fileImport&gt;&gt;
  1546. !Export
  1547. You can download this TiddlySpace as an offline TiddlyWiki:
  1548. {{chunkyButton{&lt;&lt;exportSpace&gt;&gt;}}}
  1549. !Identities
  1550. You can associate your account with multiple identities. If you have an open id for example you could log into TiddlySpace with that as well as a TiddlySpace user account.
  1551. &lt;&lt;TiddlySpaceIdentities add&gt;&gt;
  1552. {{inlineList{
  1553. &lt;&lt;TiddlySpaceIdentities list&gt;&gt;
  1554. }}}
  1555. {{backstageClear{}}}
  1556. !Login
  1557. &lt;&lt;tabs txtLoginTab
  1558. &quot;TiddlySpace Username&quot; &quot;Login via a TiddlySpace username and password&quot; Backstage##UserUnplugged
  1559. &quot;OpenID&quot; &quot;Login via an OpenID&quot; Backstage##TabOpenID
  1560. &quot;Register&quot; &quot;Register a TiddlySpace account&quot; Backstage##TabRegister
  1561. &gt;&gt;
  1562. !TabOpenID
  1563. &lt;&lt;TiddlySpaceLogin openid&gt;&gt;
  1564. !TabRegister
  1565. &lt;&lt;TiddlySpaceRegister&gt;&gt;
  1566. !Options
  1567. upload a &lt;&lt;message messages.privacySetting&gt;&gt; file:
  1568. &lt;&lt;binaryUpload&gt;&gt;
  1569. &lt;&lt;search&gt;&gt;&lt;&lt;closeAll&gt;&gt;&lt;&lt;permaview&gt;&gt;&lt;&lt;newTiddler&gt;&gt;&lt;&lt;newJournal &quot;DD MMM YYYY&quot; &quot;journal&quot;&gt;&gt;&lt;&lt;saveChanges&gt;&gt;&lt;&lt;slider chkSliderOptionsPanel OptionsPanel &quot;options »&quot; &quot;Change TiddlyWiki advanced options&quot;&gt;&gt;
  1570. !Password
  1571. &lt;&lt;TiddlySpaceChangePassword&gt;&gt;
  1572. !SpaceInclusions
  1573. This space includes the public tiddlers from the following spaces:
  1574. &lt;&lt;TiddlySpaceInclusion list&gt;&gt;
  1575. &lt;&lt;TiddlySpaceInclusion passive&gt;&gt;
  1576. !SpaceMembers
  1577. The following people are members of the space ''&lt;&lt;message extensions.tiddlyspace.currentSpace.name&gt;&gt;''. Only members have access to the private tiddlers in a space.
  1578. &lt;&lt;TiddlySpaceMembers list&gt;&gt;
  1579. &lt;&lt;TiddlySpaceMembers add&gt;&gt;
  1580. !Tiddlers
  1581. &lt;&lt;tabs
  1582. txtMainTab
  1583. &quot;Recent&quot; &quot;Recently edited tiddlers&quot; TabTimeline
  1584. &quot;All&quot; &quot;All tiddlers&quot; TabAll
  1585. &quot;Public&quot; &quot;All public tiddlers&quot; [[TiddlySpaceTabs##Public]]
  1586. &quot;Private&quot; &quot;All private tiddlers&quot; [[TiddlySpaceTabs##Private]]
  1587. &quot;Tags&quot; &quot;All tags&quot; TabTags
  1588. &quot;Spaces&quot; &quot;Tiddlers grouped by space&quot; [[TiddlySpaceTabs##Spaces]]
  1589. &quot;Missing&quot; &quot;Missing tiddlers&quot; TabMoreMissing
  1590. &quot;Orphans&quot; &quot;Orphaned tiddlers&quot; TabMoreOrphans
  1591. &quot;Shadows&quot; &quot;Shadowed tiddlers&quot; TabMoreShadowed
  1592. &gt;&gt;
  1593. !BatchOps
  1594. &lt;&lt;tabs
  1595. txtPublisherTab
  1596. &quot;Private&quot; &quot;Move tiddlers from private to public&quot; Backstage##BatchPrivate
  1597. &quot;Public&quot; &quot;Move tiddlers from public to private&quot; Backstage##BatchPublic
  1598. &gt;&gt;
  1599. !BatchPrivate
  1600. &lt;&lt;TiddlySpacePublisher type:private&gt;&gt;
  1601. !BatchPublic
  1602. &lt;&lt;TiddlySpacePublisher type:public&gt;&gt;
  1603. !UserSpaces
  1604. &lt;&lt;TiddlySpaceSpaces add&gt;&gt;
  1605. You are currently a member of the following spaces.
  1606. {{inlineList{
  1607. &lt;&lt;TiddlySpaceSpaces list&gt;&gt;
  1608. }}}
  1609. {{backstageClear{}}}</pre>
  1610. </div>
  1611. <div title="BinaryTiddlersPlugin" creator="FND" modifier="FND" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="BinaryTiddlersPlugin" server.page.revision="257447" server.etag="&quot;system/BinaryTiddlersPlugin/257447;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system" server.permissions="read" server.content-type="text/javascript" _hash="fb178a76f84a9fb609c4ad3061ec0ab6537f290d">
  1612. <pre>/***
  1613. |''Name''|BinaryTiddlersPlugin|
  1614. |''Description''|renders base64-encoded binary tiddlers as images or links|
  1615. |''Author''|FND|
  1616. |''Version''|0.3.0|
  1617. |''Status''|@@beta@@|
  1618. |''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/BinaryTiddlersPlugin.js|
  1619. |''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
  1620. |''CoreVersion''|2.5|
  1621. !Code
  1622. ***/
  1623. //{{{
  1624. (function($) {
  1625. var ctfield = &quot;server.content-type&quot;;
  1626. var plugin = config.extensions.BinaryTiddlersPlugin = {
  1627. isWikiText: function(tiddler) {
  1628. var ctype = tiddler.fields[ctfield];
  1629. if(ctype) {
  1630. return !this.isBinary(tiddler) &amp;&amp; !this.isTextual(ctype);
  1631. } else {
  1632. return true;
  1633. }
  1634. },
  1635. // NB: pseudo-binaries are considered non-binary here
  1636. isBinary: function(tiddler) {
  1637. var ctype = tiddler.fields[ctfield];
  1638. return ctype ? !this.isTextual(ctype) : false;
  1639. },
  1640. isTextual: function(ctype) {
  1641. return ctype.indexOf(&quot;text/&quot;) == 0 || this.endsWith(ctype, &quot;+xml&quot;);
  1642. },
  1643. endsWith: function(str, suffix) {
  1644. return str.length &gt;= suffix.length &amp;&amp;
  1645. str.substr(str.length - suffix.length) == suffix;
  1646. }
  1647. };
  1648. // hijack text viewer to add special handling for binary tiddlers
  1649. var _view = config.macros.view.views.wikified;
  1650. config.macros.view.views.wikified = function(value, place, params, wikifier,
  1651. paramString, tiddler) {
  1652. var ctype = tiddler.fields[&quot;server.content-type&quot;];
  1653. if(params[0] == &quot;text&quot; &amp;&amp; ctype &amp;&amp; !tiddler.tags.contains(&quot;systemConfig&quot;)) {
  1654. var el;
  1655. if(plugin.isBinary(tiddler)) {
  1656. var uri = &quot;data:%0;base64,%1&quot;.format([ctype, tiddler.text]); // TODO: fallback for legacy browsers
  1657. if(ctype.indexOf(&quot;image/&quot;) == 0) {
  1658. el = $(&quot;&lt;img /&gt;&quot;).attr(&quot;alt&quot;, tiddler.title).attr(&quot;src&quot;, uri);
  1659. } else {
  1660. el = $(&quot;&lt;a /&gt;&quot;).attr(&quot;href&quot;, uri).text(tiddler.title);
  1661. }
  1662. } else {
  1663. el = $(&quot;&lt;pre /&gt;&quot;).text(tiddler.text);
  1664. }
  1665. el.appendTo(place);
  1666. } else {
  1667. _view.apply(this, arguments);
  1668. }
  1669. };
  1670. // hijack edit macro to disable editing of binary tiddlers' body
  1671. var _editHandler = config.macros.edit.handler;
  1672. config.macros.edit.handler = function(place, macroName, params, wikifier,
  1673. paramString, tiddler) {
  1674. if(params[0] == &quot;text&quot; &amp;&amp; plugin.isBinary(tiddler)) {
  1675. return false;
  1676. } else {
  1677. _editHandler.apply(this, arguments);
  1678. }
  1679. };
  1680. // hijack autoLinkWikiWords to ignore binary tiddlers
  1681. var _autoLink = Tiddler.prototype.autoLinkWikiWords;
  1682. Tiddler.prototype.autoLinkWikiWords = function() {
  1683. return plugin.isWikiText(this) ? _autoLink.apply(this, arguments) : false;
  1684. };
  1685. })(jQuery);
  1686. //}}}</pre>
  1687. </div>
  1688. <div title="BinaryUpload" creator="pmario" modifier="pmario" created="201009282106" modified="201009282108" tags="excludeLists" server.title="BinaryUpload" server.page.revision="107042" server.etag="&quot;neui-em_public/BinaryUpload/107042;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="99645e55d5d5d43ad416e0db7779188e8e0329cf">
  1689. <pre>&lt;&lt;binaryUpload edit:title&gt;&gt;
  1690. Learn more at: BinaryUploadPlugin</pre>
  1691. </div>
  1692. <div title="BinaryUploadPlugin" creator="osmosoft" modifier="osmosoft" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="BinaryUploadPlugin" server.page.revision="257433" server.etag="&quot;system-plugins_public/BinaryUploadPlugin/257433;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-plugins_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-plugins_public" server.permissions="read" server.content-type="text/javascript" _hash="e6a01dab653fcd8fe406a2a6332e09d0ca4e3fa0">
  1693. <pre>/***
  1694. |''Name''|BinaryUploadPlugin|
  1695. |''Version''|0.3.15|
  1696. |''Author''|Ben Gillies and Jon Robson|
  1697. |''Type''|plugin|
  1698. |''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/BinaryUploadPlugin.js|
  1699. |''Description''|Upload a binary file to TiddlyWeb|
  1700. |''CoreVersion''|2.6.1|
  1701. |''Requires''|TiddlySpaceConfig TiddlyWebConfig|
  1702. !Usage
  1703. {{{
  1704. &lt;&lt;binaryUpload bag:&lt;name&gt; edit:tags edit:title tags:&lt;default tags&gt; title:&lt;title&gt; &gt;&gt;
  1705. }}}
  1706. * {{{bag:&lt;name&gt;}}}: optional; if left out, the file will be saved to the current workspace
  1707. * {{{edit:tags}}}: specifies that you want to tag the file being uploaded
  1708. * {{{edit:title}}}: specifies that you want to set the title to something other than the filename
  1709. * {{{tags:&lt;default tags&gt;}}}: specifies a default set of tags to apply to the file (requires {{{edit:tags}}} to be set)
  1710. * {{{title:&lt;title&gt;}}}: predefines the title of the binary tiddler
  1711. !Requires
  1712. TiddlyWeb
  1713. tiddlywebplugins.form
  1714. !Code
  1715. ***/
  1716. //{{{
  1717. (function($) {
  1718. var tiddlyspace = config.extensions.tiddlyspace;
  1719. var macro = config.macros.binaryUpload = {
  1720. locale: {
  1721. titleDefaultValue: &quot;Please enter a title...&quot;,
  1722. tagsDefaultValue: &quot;Please enter some tags...&quot;,
  1723. titlePrefix: &quot;title: &quot;,
  1724. tagsPrefix: &quot;tags: &quot;,
  1725. loadSuccess: 'Tiddler %0 successfully uploaded',
  1726. loadError: &quot;An error occurred when uploading the tiddler %0&quot;,
  1727. uploadInProgress: &quot;Please wait while the file is uploaded...&quot;,
  1728. membersOnly: &quot;Only members can upload.&quot;
  1729. },
  1730. renderInputFields: function(container, options) {
  1731. var locale = macro.locale;
  1732. var editableFields = options.edit;
  1733. var includeFields = {
  1734. tags: editableFields &amp;&amp; editableFields.contains(&quot;tags&quot;) ? true : false,
  1735. title: editableFields &amp;&amp; editableFields.contains(&quot;title&quot;) ? true : false
  1736. };
  1737. var fields = [&quot;title&quot;, &quot;tags&quot;];
  1738. for(var i = 0; i &lt; fields.length; i++) {
  1739. var fieldName = fields[i];
  1740. var userDefault = options[fieldName];
  1741. var defaultValue = userDefault ? userDefault[0] : false;
  1742. if(includeFields[fieldName] || defaultValue) {
  1743. var localeDefault = locale[&quot;%0DefaultValue&quot;.format(fieldName)];
  1744. var className = defaultValue ? &quot;userInput&quot; : &quot;userInput notEdited&quot;;
  1745. var inputEl;
  1746. var val = defaultValue || localeDefault || &quot;&quot;;
  1747. var iContainer = $(&quot;&lt;div /&gt;&quot;).addClass(&quot;binaryUpload%0&quot;.format(fieldName)).
  1748. appendTo(container);
  1749. if(defaultValue &amp;&amp; !includeFields[fieldName]) {
  1750. var label = locale[&quot;%0Prefix&quot;.format(fieldName)];
  1751. $(&quot;&lt;span /&gt;&quot;).text(label).appendTo(iContainer);
  1752. $(&quot;&lt;span /&gt;&quot;).addClass(&quot;disabledInput&quot;).text(val).appendTo(iContainer);
  1753. inputEl = $(&quot;&lt;input /&gt;&quot;).attr(&quot;type&quot;, &quot;hidden&quot;);
  1754. } else {
  1755. inputEl = $(&quot;&lt;input /&gt;&quot;).attr(&quot;type&quot;, &quot;text&quot;);
  1756. }
  1757. inputEl.attr(&quot;name&quot;, fieldName).
  1758. addClass(&quot;%0Edit&quot;.format(fieldName)).
  1759. val(val).addClass(className).appendTo(iContainer);
  1760. }
  1761. }
  1762. },
  1763. getTiddlerName: function(fileName) {
  1764. var fStart = fileName.lastIndexOf(&quot;\\&quot;);
  1765. var fStart2 = fileName.lastIndexOf(&quot;/&quot;);
  1766. fStart = fStart &lt; fStart2 ? fStart2 : fStart;
  1767. fileName = fileName.substr(fStart+1);
  1768. return fileName;
  1769. },
  1770. errorHandler: function(fileName) {
  1771. displayMessage(&quot;upload of file %0 failed&quot;.format(fileName));
  1772. },
  1773. uploadFile: function(place, baseURL, workspace, options) {
  1774. var pleaseWait = $(&quot;.uploadProgress&quot;, place);
  1775. var iframeName = options.target;
  1776. var form = $(&quot;form&quot;, place);
  1777. var existingVal = $(&quot;input[name=title]&quot;, form).val();
  1778. var fileName = existingVal || $('input:file', form).val();
  1779. if(!fileName) {
  1780. return false; // the user hasn't selected a file yet
  1781. }
  1782. fileName = macro.getTiddlerName(fileName);
  1783. $(&quot;input[name=title]&quot;, place).val(fileName);
  1784. // we need to go somewhere afterwards to ensure the onload event triggers
  1785. var redirectTo = &quot;/%0/tiddlers.txt?select=title:%1&quot;.
  1786. format(workspace, fileName);
  1787. var token = tiddlyspace ? tiddlyspace.getCSRFToken() : &quot;&quot;;
  1788. var action = &quot;%0?csrf_token=%1&amp;redirect=%2&quot;
  1789. .format(baseURL, token, redirectTo);
  1790. form[0].action = action; // dont use jquery to work with ie
  1791. form[0].target = iframeName;
  1792. // do not refactor following line... won't work in IE6 otherwise
  1793. $(place).append($('&lt;iframe name=&quot;' + iframeName + '&quot; id=&quot;' + iframeName + '&quot;/&gt;').css('display','none'));
  1794. macro.iFrameLoader(iframeName, function() {
  1795. var content = document.getElementById(iframeName).contentWindow.document.documentElement;
  1796. if($(content).text().indexOf(fileName) &gt; -1) {
  1797. options.callback(place, fileName, workspace, baseURL);
  1798. } else {
  1799. macro.errorHandler(fileName);
  1800. }
  1801. form.show(1000);
  1802. pleaseWait.hide(1000);
  1803. });
  1804. form.hide(1000);
  1805. pleaseWait.show(1000);
  1806. return true;
  1807. },
  1808. createUploadForm: function(place, options) {
  1809. var locale = macro.locale;
  1810. if(readOnly) {
  1811. $('&lt;div class=&quot;annotation&quot; /&gt;').text(locale.membersOnly).
  1812. appendTo(place);
  1813. return;
  1814. }
  1815. var bag = options.bag;
  1816. options.callback = options.callback ? options.callback :
  1817. function(place, fileName, workspace, baseurl) {
  1818. macro.displayFile(place, fileName, workspace);
  1819. displayMessage(locale.loadSuccess.format(fileName));
  1820. $(&quot;input[type=text]&quot;, place).val(&quot;&quot;);
  1821. };
  1822. var defaults = config.defaultCustomFields;
  1823. place = $(&quot;&lt;div /&gt;&quot;).addClass(&quot;container&quot;).appendTo(place)[0];
  1824. var workspace = bag ? &quot;bags/%0&quot;.format(bag) : config.defaultCustomFields[&quot;server.workspace&quot;];
  1825. var baseURL = defaults[&quot;server.host&quot;];
  1826. baseURL += (baseURL[baseURL.length - 1] !== &quot;/&quot;) ? &quot;/&quot; : &quot;&quot;;
  1827. baseURL = &quot;%0%1/tiddlers&quot;.format(baseURL, workspace);
  1828. //create the upload form, complete with invisible iframe
  1829. var iframeName = &quot;binaryUploadiframe%0&quot;.format(Math.random());
  1830. // do not refactor following line of code to work in IE6.
  1831. var form = $('&lt;form action=&quot;%0&quot; method=&quot;POST&quot; enctype=&quot;multipart/form-data&quot; /&gt;'.
  1832. format(baseURL)).addClass(&quot;binaryUploadForm&quot;).
  1833. attr(&quot;method&quot;, &quot;POST&quot;).attr(&quot;enctype&quot;, &quot;multipart/form-data&quot;).appendTo(place)[0];
  1834. macro.renderInputFields(form, options);
  1835. $(form).
  1836. append('&lt;div class=&quot;binaryUploadFile&quot;&gt;&lt;input type=&quot;file&quot; name=&quot;file&quot; /&gt;&lt;/div&gt;').
  1837. append('&lt;div class=&quot;binaryUploadSubmit&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;Upload&quot; /&gt;&lt;/div&gt;').
  1838. submit(function(ev) {
  1839. this.target = iframeName;
  1840. options.target = iframeName;
  1841. macro.uploadFile(place, baseURL, workspace, options);
  1842. });
  1843. $('&lt;div /&gt;').addClass(&quot;uploadProgress&quot;).text(locale.uploadInProgress).hide().appendTo(place);
  1844. $(&quot;input[name=file]&quot;, place).change(function(ev) {
  1845. var target = $(ev.target);
  1846. var fileName = target.val();
  1847. var title = $(&quot;input[type=text][name=title]&quot;, place);
  1848. if(!title.val()) {
  1849. title.val(fileName);
  1850. }
  1851. });
  1852. },
  1853. handler: function(place, macroName, params, wikifier, paramString, tiddler) {
  1854. params = paramString.parseParams(null, null, true);
  1855. macro.createUploadForm(place, params[0]);
  1856. },
  1857. iFrameLoader: function(iframeName, callback) {
  1858. var iframe = document.getElementById(iframeName); //jQuery doesn't seem to want to do this!?
  1859. var locale = macro.locale;
  1860. $(&quot;.userInput&quot;).addClass(&quot;notEdited&quot;); // reset editing
  1861. var finishedLoading = function() {
  1862. callback();
  1863. };
  1864. var iFrameLoadHandler = function() {
  1865. finishedLoading.apply();
  1866. return;
  1867. };
  1868. iframe.onload = iFrameLoadHandler;
  1869. //IE
  1870. completeReadyStateChanges = 0;
  1871. iframe.onreadystatechange = function() {
  1872. if (++(completeReadyStateChanges) == 3) {
  1873. iFrameLoadHandler();
  1874. }
  1875. };
  1876. },
  1877. displayFile: function(place, title, workspace) {
  1878. var adaptor = store.getTiddlers()[0].getAdaptor();
  1879. var context = {
  1880. workspace: workspace,
  1881. host: config.defaultCustomFields['server.host']
  1882. };
  1883. adaptor.getTiddler(title, context, null, function(context) {
  1884. if(context.status) {
  1885. store.addTiddler(context.tiddler);
  1886. story.displayTiddler(place, title);
  1887. var image = config.macros.image;
  1888. if(image &amp;&amp; image.refreshImage) {
  1889. image.refreshImage(&quot;/%0/tiddlers/%1&quot;.format(workspace, title));
  1890. image.refreshImage(title);
  1891. image.refreshImage(&quot;/%0&quot;.format(title));
  1892. image.refreshImage(&quot;%0/%1/tiddlers/%2&quot;.format(config.extensions.tiddlyweb.host, workspace, title));
  1893. }
  1894. } else {
  1895. displayMessage(macro.locale.loadError.format(title));
  1896. }
  1897. });
  1898. }
  1899. };
  1900. if(tiddlyspace) {
  1901. config.macros.binaryUploadPublic = {
  1902. handler: function(place, macroName, params, wikifier, paramString, tiddler) {
  1903. var options = paramString.parseParams(null, null, true)[0];
  1904. var bag = tiddlyspace.getCurrentBag(&quot;public&quot;);
  1905. options.bag = bag;
  1906. macro.createUploadForm(place, options);
  1907. }
  1908. };
  1909. config.messages.privacySetting = config.options.chkPrivateMode ?
  1910. &quot;private&quot; : &quot;public&quot;;
  1911. config.macros.binaryUpload.defaultWorkspace = tiddlyspace.
  1912. getCurrentWorkspace(config.messages.privacySetting);
  1913. }
  1914. })(jQuery);
  1915. //}}}</pre>
  1916. </div>
  1917. <div title="CSideBarTabs" creator="pmario" modifier="pmario" created="201008061923" modified="201009282130" tags="excludeLists" server.title="CSideBarTabs" server.page.revision="107056" server.etag="&quot;neui-em_public/CSideBarTabs/107056;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" revision.text="" _hash="9b16ef156953eb5ac75a1132c2c9b87150489146">
  1918. <pre>&lt;&lt;tiddler SideBarTabs&gt;&gt;
  1919. /%
  1920. *Renaming this tiddler, will make the right sidebar invisible.
  1921. *Using this tiddler with the theme, makes it possible to keep the original SideBarTabs tiddler.
  1922. !!!old content
  1923. &lt;&lt;tiddler SidebarButtons&gt;&gt;
  1924. &lt;&lt;slider chkSliderSideBarTabs SideBarTabs &quot;Index »&quot; &quot;display the timeline&quot;&gt;&gt;
  1925. %/</pre>
  1926. </div>
  1927. <div title="CSidebarOptions" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists" server.title="CSidebarOptions" server.page.revision="107058" server.etag="&quot;neui-em_public/CSidebarOptions/107058;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="5df8176c6db1d12bb775584228ad916db46298e0">
  1928. <pre>&lt;&lt;slider chkSliderOptionsPanel OptionsPanel &quot;Options »&quot; &quot;display the options panel&quot;&gt;&gt;</pre>
  1929. </div>
  1930. <div title="CSidebarTools" creator="pmario" modifier="pmario" created="201009181848" modified="201009282132" tags="excludeLists hide" server.title="CSidebarTools" server.page.revision="107067" server.etag="&quot;neui-em_public/CSidebarTools/107067;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="1a95384f6922582486736cfc64fa9bece392ceba">
  1931. <pre>&lt;&lt;tiddler SidebarTools&gt;&gt;/%
  1932. If you prefere a Tools slider, use the line below
  1933. &lt;&lt;slider chkSliderToolsPanel SidebarTools &quot;Tools »&quot; &quot;new, save, ...&quot;&gt;&gt;
  1934. %/</pre>
  1935. </div>
  1936. <div title="CTagBox" creator="pmario" modifier="pmario" created="201009061254" modified="201012201644" tags="addon excludeLists" server.title="CTagBox" server.page.revision="107493" server.etag="&quot;neui-tagsearch_public/CTagBox/107493;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-tagsearch_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-tagsearch_public" server.permissions="read, write, create, delete" server.content-type="" _hash="c88eae9dda7d51ef81e61a41e475b21b50898587">
  1937. <pre>{{tagSearch{&lt;&lt;tagsearch label:'edit tags'&gt;&gt;}}}</pre>
  1938. </div>
  1939. <div title="ColorPalette" creator="fancybox" modifier="fancybox" created="201101181525" modified="201101211613" tags="excludeLists excludeSearch" server.title="ColorPalette" server.page.revision="47560" server.etag="&quot;fancybox_public/ColorPalette/47560;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="f8ab9a39a816a5549f388cf1f48e9f4b3abaccd6">
  1940. <pre>/*{{{*/
  1941. Background: #e3eaf2
  1942. Foreground: #0c141b
  1943. PrimaryPale: #ffffff
  1944. PrimaryLight: #adc3d9
  1945. PrimaryMid: #5b87b3
  1946. PrimaryDark: #0a0f15
  1947. SecondaryPale: #ffffff
  1948. SecondaryLight: #bed9ad
  1949. SecondaryMid: #7eb35b
  1950. SecondaryDark: #0e150a
  1951. TertiaryPale: #ffffff
  1952. TertiaryLight: #d9adc7
  1953. TertiaryMid: #b35b90
  1954. TertiaryDark: #150a11
  1955. Error: #f88
  1956. ColorPaletteParameters: HSL([210|66], [0.36509835156374804],[0.06232365550379004|1])
  1957. /*}}}*/</pre>
  1958. </div>
  1959. <div title="CoralFish.jpg" creator="pmario" modifier="pmario" created="201102072057" modified="201102111136" tags="attachment flikr flikrSlide" server.title="CoralFish.jpg" server.page.revision="249008" server.etag="&quot;fancybox_public/CoralFish.jpg/249008;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="7d37b690997b62edfbee5e86207cbe6107807a6c">
  1960. <pre>!slide
  1961. CoralFishSlide.jpg
  1962. !usage
  1963. {{{[img[CoralFish.jpg]]}}}
  1964. [img[CoralFish.jpg]]
  1965. !notes
  1966. !type
  1967. image/jpg
  1968. !file
  1969. ./thumbs/5098/5421258927_8fe35503cc_t.jpg
  1970. !url
  1971. http://farm6.static.flickr.com/5098/5421258927_8fe35503cc_t.jpg
  1972. !link
  1973. [[CoralFish|http://farm6.static.flickr.com/5098/5421258927_8fe35503cc_t.jpg]]
  1974. !end
  1975. </pre>
  1976. </div>
  1977. <div title="CoralFishSlide.jpg" creator="pmario" modifier="pmario" created="201102072057" modified="201102072138" tags="attachment flikr" server.title="CoralFishSlide.jpg" server.page.revision="245638" server.etag="&quot;fancybox_public/CoralFishSlide.jpg/245638;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="7ea0292c928e28c2d1729eee7253a1266470e4e0">
  1978. <pre>!usage
  1979. {{{[img[CoralFishSlide.jpg]]}}}
  1980. [img[CoralFishSlide.jpg]]
  1981. !notes
  1982. !type
  1983. image/jpg
  1984. !file
  1985. ./thumbs/5098/5421258927_8fe35503cc_b.jpg
  1986. !url
  1987. http://farm6.static.flickr.com/5098/5421258927_8fe35503cc_b.jpg
  1988. !link
  1989. [[CoralFish|http://farm6.static.flickr.com/5098/5421258927_8fe35503cc_b.jpg]]
  1990. !end
  1991. </pre>
  1992. </div>
  1993. <div title="DefaultTiddlers" creator="pmario" modifier="pmario" created="201008061923" modified="201009181658" tags="excludeLists" server.title="DefaultTiddlers" server.page.revision="107079" server.etag="&quot;neui-em_public/DefaultTiddlers/107079;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="ff104d449420c166858787134d7183c5a0993955">
  1994. <pre>[tag[default]]</pre>
  1995. </div>
  1996. <div title="DiaShowConfig" creator="pmario" modifier="pmario" created="201102111348" modified="201102111348" server.title="DiaShowConfig" server.page.revision="251110" server.etag="&quot;fancybox_public/DiaShowConfig/251110;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="718508b83b9ff102a05a258739eed48cb33d2399">
  1997. <pre>see: [[About]]</pre>
  1998. </div>
  1999. <div title="DiaShowTest" creator="pmario" modifier="pmario" created="201102111349" modified="201102111349" server.title="DiaShowTest" server.page.revision="251112" server.etag="&quot;fancybox_public/DiaShowTest/251112;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="1df53ee1de99de6d8ae803a4b7bd95c625a2cbba">
  2000. <pre>See: [[About]]</pre>
  2001. </div>
  2002. <div title="DiffFormatter" creator="FND" modifier="FND" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="DiffFormatter" server.page.revision="257448" server.etag="&quot;system/DiffFormatter/257448;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system" server.permissions="read" server.content-type="text/javascript" _hash="2232cd0549946d29c475cec846de3378177301ae">
  2003. <pre>/***
  2004. |''Name''|DiffFormatter|
  2005. |''Description''|highlighting of text comparisons|
  2006. |''Author''|FND|
  2007. |''Version''|0.9.0|
  2008. |''Status''|beta|
  2009. |''Source''|http://svn.tiddlywiki.org/Trunk/contributors/FND/formatters/DiffFormatter.js|
  2010. |''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/|
  2011. |''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
  2012. |''Keywords''|formatting|
  2013. !Description
  2014. Highlights changes in a unified [[diff|http://en.wikipedia.org/wiki/Diff#Unified_format]].
  2015. !Notes
  2016. Based on Martin Budden's [[DiffFormatterPlugin|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/formatters/DiffFormatterPlugin.js]].
  2017. !Usage
  2018. The formatter is applied to blocks wrapped in &lt;html&gt;&lt;code&gt;{{{diff{..}}}&lt;/code&gt;&lt;/html&gt; within tiddlers tagged with &quot;diff&quot;.
  2019. !Revision History
  2020. !!v0.9 (2010-04-07)
  2021. * initial release; fork of DiffFormatterPlugin
  2022. !StyleSheet
  2023. .diff { white-space: pre; font-family: monospace; }
  2024. .diff ins, .diff del { display: block; text-decoration: none; }
  2025. .diff ins { background-color: #dfd; }
  2026. .diff del { background-color: #fdd; }
  2027. .diff .highlight { background-color: [[ColorPalette::SecondaryPale]]; }
  2028. !Code
  2029. ***/
  2030. //{{{
  2031. (function() {
  2032. config.shadowTiddlers.StyleSheetDiffFormatter = store.getTiddlerText(tiddler.title + &quot;##StyleSheet&quot;);
  2033. store.addNotification(&quot;StyleSheetDiffFormatter&quot;, refreshStyles);
  2034. var formatters = [{
  2035. name: &quot;diffWrapper&quot;,
  2036. match: &quot;^\\{\\{diff\\{\n&quot;, // XXX: suboptimal
  2037. termRegExp: /(.*\}\}\})$/mg,
  2038. handler: function(w) {
  2039. var el = createTiddlyElement(w.output, &quot;div&quot;, null, &quot;diff&quot;);
  2040. w.subWikifyTerm(el, this.termRegExp);
  2041. }
  2042. }, {
  2043. name: &quot;diffRange&quot;,
  2044. match: &quot;^(?:@@|[+\\-]{3}) &quot;,
  2045. lookaheadRegExp: /^(?:@@|[+\-]{3}) .*\n/mg,
  2046. handler: function(w) {
  2047. createTiddlyElement(w.output, &quot;div&quot;, null, &quot;highlight&quot;).
  2048. innerHTML = &quot;&amp;#8230;&quot;;
  2049. this.lookaheadRegExp.lastIndex = w.matchStart;
  2050. var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
  2051. if(lookaheadMatch &amp;&amp; lookaheadMatch.index == w.matchStart) {
  2052. w.nextMatch = this.lookaheadRegExp.lastIndex;
  2053. }
  2054. }
  2055. }, {
  2056. name: &quot;diffAdded&quot;,
  2057. match: &quot;^\\+&quot;,
  2058. termRegExp: /(\n)/mg,
  2059. handler: function(w) {
  2060. var el = createTiddlyElement(w.output, &quot;ins&quot;, null, &quot;added&quot;);
  2061. w.subWikifyTerm(el, this.termRegExp);
  2062. }
  2063. }, {
  2064. name: &quot;diffRemoved&quot;,
  2065. match: &quot;^-&quot;,
  2066. termRegExp: /(\n)/mg,
  2067. handler: function(w) {
  2068. var el = createTiddlyElement(w.output, &quot;del&quot;, null, &quot;removed&quot;);
  2069. w.subWikifyTerm(el, this.termRegExp);
  2070. }
  2071. }
  2072. ];
  2073. config.parsers.diffFormatter = new Formatter(formatters);
  2074. config.parsers.diffFormatter.format = &quot;diff&quot;;
  2075. config.parsers.diffFormatter.formatTag = &quot;diff&quot;;
  2076. })();
  2077. //}}}</pre>
  2078. </div>
  2079. <div title="DifferentTitles" creator="pmario" modifier="pmario" created="201102131915" modified="201102131915" tags="excludeLists excludeSearch" server.title="DifferentTitles" server.page.revision="253382" server.etag="&quot;fancybox_public/DifferentTitles/253382;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="188633fcdd2e8461f3280182a5414758cb06aa65">
  2080. <pre>&lt;html&gt;&lt;style&gt;.imgStack {display:inline;}&lt;/style&gt;&lt;/html&gt;
  2081. !!!Different title positions - 'outside', 'inside' and 'over'
  2082. &lt;&lt;fancyBox 04.jpg label:&quot;Foto session with manta&quot; defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;DifferentTitles##Outside&quot;&gt;&gt;&lt;&lt;fancyBox 08.jpg label:&quot;Find me!&quot; defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;DifferentTitles##Inside&quot;&gt;&gt;&lt;&lt;fancyBox 09.jpg label:&quot;Found you!&quot; defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;DifferentTitles##Over&quot;&gt;&gt;
  2083. /%
  2084. !Outside
  2085. !Inside
  2086. titlePosition: inside
  2087. !Over
  2088. titlePosition: over
  2089. %/</pre>
  2090. </div>
  2091. <div title="DifferentTransitions" creator="pmario" modifier="pmario" created="201102131915" modified="201102221826" tags="excludeLists excludeSearch" server.title="DifferentTransitions" server.page.revision="261795" server.etag="&quot;fancybox_public/DifferentTransitions/261795;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="561db2c3f10ad4834371cac38ff5193521b3d98e">
  2092. <pre>&lt;html&gt;&lt;style&gt;.imgStack {display:inline;}&lt;/style&gt;&lt;/html&gt;
  2093. !!!Different animations - 'fade', 'elastic' and 'none'
  2094. &lt;&lt;fancyBox 02.jpg defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;DifferentTransitions##Fade&quot;&gt;&gt;&lt;&lt;fancyBox 03.jpg defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;DifferentTransitions##Elastic&quot;&gt;&gt;&lt;&lt;fancyBox 07.jpg defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;DifferentTransitions##None&quot;&gt;&gt;
  2095. /%
  2096. !Fade
  2097. titleShow: false
  2098. speedIn: 1000
  2099. speedOut: 1000
  2100. !Elastic
  2101. titleShow: false
  2102. transitionIn: elastic
  2103. transitionOut: elastic
  2104. easingIn: easeOutBack
  2105. easingOut: easeInBack
  2106. speedIn: 1000
  2107. speedOut: 1000
  2108. !None
  2109. titleShow: false
  2110. transitionIn: none
  2111. transitionOut: none
  2112. %/</pre>
  2113. </div>
  2114. <div title="DirectoryConfig" creator="pmario" modifier="pmario" created="201102111153" modified="201102111153" server.title="DirectoryConfig" server.page.revision="249044" server.etag="&quot;fancybox_public/DirectoryConfig/249044;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" deleted="true" _hash="0bd2451e6f4cc6dc1f25d3335f3c46fb24146ba5">
  2115. <pre>!Defaults
  2116. {{{
  2117. thumbHost: http://fancybox-thumbs.tiddlyspace.com/
  2118. picHost: http://fancybox-pics.tiddlyspace.com/
  2119. }}}
  2120. !Offline
  2121. {{{
  2122. thumbHost: ./thumbs/
  2123. picHost: ./pics/
  2124. }}}
  2125. </pre>
  2126. </div>
  2127. <div title="EditTemplate" creator="osmosoft" modifier="osmosoft" created="201102181425" modified="201102181425" tags="excludeLists excludeSearch" server.title="EditTemplate" server.page.revision="257502" server.etag="&quot;system-theme_public/EditTemplate/257502;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-theme_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-theme_public" server.permissions="read" server.content-type="" _hash="bb2ebcb9880f563a789711fbbbec5d3bfcb1b248">
  2128. <pre>&lt;!--{{{--&gt;
  2129. &lt;div class='toolbar'
  2130. macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'&gt;
  2131. &lt;/div&gt;
  2132. &lt;div class='heading editorHeading'&gt;
  2133. &lt;div class='editor title' macro='edit title'&gt;&lt;/div&gt;
  2134. &lt;div class='tagClear'&gt;&lt;/div&gt;
  2135. &lt;/div&gt;
  2136. &lt;div class='annotationsBox' macro='annotations'&gt;
  2137. &lt;div class='editSpaceSiteIcon'
  2138. macro='tiddlerOrigin height:16 width:16 label:no interactive:no'&gt;
  2139. &lt;/div&gt;
  2140. &lt;div class=&quot;privacyEdit&quot; macro='setPrivacy label:no interactive:no'&gt;&lt;/div&gt;
  2141. &lt;div class='tagClear'&gt;&lt;/div&gt;
  2142. &lt;/div&gt;
  2143. &lt;div class='editor' macro='edit text'&gt;&lt;/div&gt;
  2144. &lt;div class='editorFooter'&gt;
  2145. &lt;div class='tagTitle'&gt;tags&lt;/div&gt;
  2146. &lt;div class='editor' macro='edit tags'&gt;&lt;/div&gt;
  2147. &lt;div class='tagAnnotation'&gt;
  2148. &lt;span macro='message views.editor.tagPrompt'&gt;&lt;/span&gt;
  2149. &lt;span macro='tagChooser excludeLists'&gt;&lt;/span&gt;
  2150. &lt;/div&gt;
  2151. &lt;/div&gt;
  2152. &lt;!--}}}--&gt;</pre>
  2153. </div>
  2154. <div title="EmasticSystem" creator="pmario" modifier="pmario" created="201008061923" modified="201011042041" tags="EmasticSystem FreeStyle excludeLists" server.title="EmasticSystem" server.page.revision="107086" server.etag="&quot;neui-em_public/EmasticSystem/107086;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" taggly.listmode="commas" _hash="2da0f856de248dd1443585c6d250f195849f10c3">
  2155. <pre>/***
  2156. !EmasticPercent
  2157. ***/
  2158. /*{{{*/
  2159. .dp5, .dp10,.dp15,.dp20,.dp25,.dp30,.dp33,.dp35,.dp40,.dp45,.dp50,
  2160. .dp55,.dp60,.dp65,.dp67,.dp70,.dp75,.dp80,.dp85,.dp90,.dp95,.dp100
  2161. {float:left; display: inline; }
  2162. .dp5{width:5%;}
  2163. .dp10{width:10%;*width:9.9%;} .dp15{width:15%;*width:14.9%;} .dp20 {width:20%;*width:19.9%;}
  2164. .dp25{width:25%;*width:24.9%;} .dp30{width:30%;*width:29.9%;} .dp33 {width:33.33%;*width:33.3%;}
  2165. .dp35{width:35%;*width:34.9%;} .dp40{width:40%;*width:39.9%;} .dp45 {width:45%;*width:44.9%;}
  2166. .dp50{width:50%;*width:49.9%;} .dp55{width:55%;*width:54.9%;} .dp60 {width:60%;*width:59.9%;}
  2167. .dp65{width:65%;*width:64.9%;} .dp67{width:66.67%;*width:66.6%;} .dp70 {width:70%;*width:69.9%;}
  2168. .dp75{width:75%;*width:74.9%;} .dp80{width:80%;*width:79.9%;} .dp85 {width:85%;*width:84.9%;}
  2169. .dp90{width:90%;*width:89.9%;} .dp95{width:95%;*width:94.9%;} .dp100{width:100%;*width:99.9%;}
  2170. /*}}}*/
  2171. /***
  2172. !EmasticGrid
  2173. ***/
  2174. /*{{{*/
  2175. .main { width:70em;margin:0 auto;text-align:left; }
  2176. .clear {clear:both;}
  2177. .dl1,.dl2,.dl5,.dl10,.dl15,.dl20,.dl25,.dl30,.dl35,.dl40,.dl45,.dl50,.dl55,.dl60,.dl65,.dl70,.dl75
  2178. {float:left; display: inline; }
  2179. .dr1,.dr2,.dr5,.dr10,.dr15,.dr20,.dr25,.dr30,.dr35,.dr40,.dr45,.dr50,.dr55,.dr60,.dr65,.dr70,.dr75
  2180. {float:right; display: inline; }
  2181. .dl1, .dr1 {width:1em;} .dl2, .dr2 {width:2em;} .dl5, .dr5 {width:5em;}
  2182. .dl10, .dr10{width:10em;} .dl15, .dr15{width:15em;} .dl20, .dr20{width:20em;}
  2183. .dl25, .dr25{width:25em;} .dl30, .dr30{width:30em;} .dl35, .dr35{width:35em;}
  2184. .dl40, .dr40{width:40em;} .dl45, .dr45{width:45em;} .dl50, .dr50{width:50em;}
  2185. .dl55, .dr55{width:55em;} .dl60, .dr60{width:60em;} .dl65, .dr65{width:65em;}
  2186. .dl70, .dr70{width:70em;} .dl75, .dr75{width:75em;}
  2187. .ml1 {margin-left:1em;} .ml2 {margin-left:2em;} .ml3 {margin-left:3em;} .ml4 {margin-left:4em;}
  2188. .ml5 {margin-left:5em;} .ml10{margin-left:10em;} .ml15{margin-left:15em;}
  2189. .ml20{margin-left:20em;} .ml25{margin-left:25em;} .ml30{margin-left:30em;}
  2190. .ml35{margin-left:35em;} .ml40{margin-left:40em;} .ml45{margin-left:45em;}
  2191. .ml50{margin-left:50em;} .ml55{margin-left:55em;} .ml60{margin-left:60em;}
  2192. .ml65{margin-left:65em;} .ml70{margin-left:70em;} .ml75{margin-left:75em;}
  2193. .mr5 {margin-right:5em;} .mr10{margin-right:10em;} .mr15{margin-right:15em;}
  2194. .mr20{margin-right:20em;} .mr25{margin-right:25em;} .mr30{margin-right:30em;}
  2195. .mr35{margin-right:35em;} .mr40{margin-right:40em;} .mr45{margin-right:45em;}
  2196. .mr50{margin-right:50em;} .mr55{margin-right:55em;} .mr60{margin-right:60em;}
  2197. .mr65{margin-right:65em;} .mr70{margin-right:70em;} .mr75{margin-right:75em;}
  2198. .mt1{margin-top:1em;} .mt2{margin-top:2em;} .mt3{margin-top:3em;} .mt4{margin-top:4em;}
  2199. .mt5{margin-top:5em;} .mt10{margin-top:10em;}
  2200. .mt20{margin-top:20em;} .mt30{margin-top:30em;} .mt40{margin-top:40em;}
  2201. .mt50{margin-top:50em;}
  2202. .fluid {width:auto; float:none;}
  2203. .hp{width:100%; float:left; }
  2204. .clearfix, .main{ display:block;}
  2205. .clearfix:after, .main:after {
  2206. visibility: hidden;
  2207. display: block;
  2208. font-size: 0;
  2209. content: &quot; &quot;;
  2210. clear: both;
  2211. height: 0;
  2212. }
  2213. /* IE5/MAC hack \*/
  2214. * html .clearfix{ display: inline; height: 1px;}
  2215. /* close */
  2216. /*}}}*/
  2217. /***
  2218. !EmasticAbsolut
  2219. ***/
  2220. /*{{{*/
  2221. .main{position:relative;}
  2222. .lf0,.lf5,.lf10,.lf15,.lf20,.lf25,.lf30,.lf35,.lf40,.lf45,.lf50,.lf55,.lf60,.lf65,.lf70,.lf75,.lf80,.lf85,.lfn5,.lfn10,.lfn15,.lfn20,.lfn25,.lfn30,
  2223. .tp0,.tp5,.tp10,.tp15,.tp20,.tp25,.tp30,.tp35,.tp40,.tp45,.tp50,
  2224. .bt0,.bt5,.bt10,.bt15,.bt20,.bt25,.bt30,.bt35,.bt40,.bt45,.bt50,
  2225. .rtn5,.rtn10,.rtn20,.rtn30{position:absolute;}
  2226. .lf0{left:0em;} .lf5{left:5em;} .lf10{left:10em;} .lf15{left:15em;} .lf20{left:20em;}
  2227. .lf25{left:25em;} .lf30{left:30em;} .lf35{left:35em;} .lf40{left:40em;} .lf45{left:45em;}
  2228. .lf50{left:50em;} .lf55{left:55em;} .lf60{left:60em;} .lf65{left:65em;} .lf70{left:70em;}
  2229. .lf75{left:75em;} .lf80{left:80em;} .lf85{left:85em;} .lfn5{left:-5em;} .lfn10{left:-10em;}
  2230. .lfn15{left:-15em;} .lfn20{left:-20em;} .lfn25{left:-25em;} .lfn30{left:-30em;}
  2231. .rtn5 {right:-5em;} .rtn10{right:-10em;} .rtn15{right:-15em;} .rtn20{right:-20em;}
  2232. .rtn25{right:-25em;} .rtn30{right:-30em;}
  2233. .tp0 {top:0em;} .tp5{top:5em;} .tp10{top:10em;} .tp15{top:15em;} .tp20{top:20em;} .tp25{top:25em;}
  2234. .tp30{top:30em;} .tp35{top:35em;} .tp40{top:40em;} .tp45{top:45em;} .tp50{top:50em;}
  2235. .bt0{bottom:0em;} .bt5{bottom:0em;} .bt10{bottom:10em;} .bt15{bottom:15em;} .bt20{bottom:20em;}
  2236. .bt25{bottom:25em;} .bt30{bottom:30em;} .bt35{bottom:35em;} .bt40{bottom:40em;} .bt45{bottom:45em;}
  2237. .bt50{bottom:50em;}
  2238. .zi1{ z-index:1;} .zi2{ z-index:2;} .zi3{ z-index:3;} .zi4{ z-index:4;} .zi5{ z-index:5;}
  2239. /*}}}*/
  2240. /***
  2241. !EmasticGadgets
  2242. ***/
  2243. /*{{{*/
  2244. /* CSS Document */
  2245. .rc {-moz-border-radius: 10px; -webkit-border-radius: 10px; border:1px solid #fff; }
  2246. .fr {border:1px solid #ccc; padding:0.25em;}
  2247. .byline {
  2248. font-family: &quot;Lucida Grande&quot;, Tahoma;
  2249. font-size: 0.865em;
  2250. font-weight: lighter;
  2251. font-variant: normal;
  2252. text-transform: uppercase;
  2253. color: #666666;
  2254. letter-spacing: 0.4em;
  2255. display: block;
  2256. margin-bottom: 1.734em;
  2257. padding:0em 0em 0em 1em;
  2258. }
  2259. .and {font-family: Baskerville, &quot;Goudy Old Style&quot;, &quot;Palatino&quot;, &quot;Book Antiqua&quot;, serif;
  2260. font-style: italic;
  2261. color: #777;
  2262. }
  2263. .tc {text-align:center;}
  2264. .tr {text-align:right;}
  2265. .tl {text-align:left;}
  2266. .b {font-weight:bold;}
  2267. .pl1{padding-left:1em;}
  2268. .pl2{padding-left:2em;}
  2269. .pl3{padding-left:3em;}
  2270. .ppl2{padding-left:1.8%;}
  2271. .ppl3{padding-left:3.13%;}
  2272. .ppl5{padding-left:4.8%;}
  2273. .water{color:#5582d1;}
  2274. .earth{color:#4e3e2c;}
  2275. .air{color:#f1fff7;}
  2276. .fire{ color:#ff8a19;}
  2277. /* drinks food */
  2278. .wine{color:#4a040a;}
  2279. .beer{color:#F0C030;}
  2280. .caffe{color:#473523;}
  2281. .caffe-cream{color:#b68d3d;}
  2282. .espresso{color:#2c1901;}
  2283. .caramel{color:#ab671f;}
  2284. .chocolate{color:#290200;}
  2285. .black-pepper{color:#444334;}
  2286. .pepper-lite{color:#8d8a72;}
  2287. .lipstick{color:#c20c0c;}
  2288. .oldbook{font-family:&quot;Book Antiqua&quot;,&quot;Warnock Pro&quot;,&quot;Goudy Old Style&quot;,&quot;Palatino&quot;,Georgia,serif;}
  2289. .note{font-family:Georgia, &quot;Times New Roman&quot;, Times, serif; font-style:italic; font-size:0.9em; margin:0.1em; color:#333;}
  2290. .mono{font-family:&quot;Courier New&quot;, Courier, monospace;}
  2291. /*}}}*/
  2292. /***
  2293. !EmasticFreeStyle
  2294. ***/
  2295. /*{{{*/
  2296. .dpfr{float:right;}
  2297. /*}}}*/
  2298. </pre>
  2299. </div>
  2300. <div title="ErrorHandler" creator="jon" modifier="jon" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="ErrorHandler" server.page.revision="257478" server.etag="&quot;tiddlyspace/ErrorHandler/257478;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/tiddlyspace" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="tiddlyspace" server.permissions="read" server.content-type="text/javascript" _hash="0e66098b519d5e27cbba0afcd8ba4cea883bfa67">
  2301. <pre>/***
  2302. |''Name''|ErrorHandlerPlugin|
  2303. |''Version''|0.4.2|
  2304. |''Author''|Jon Robson|
  2305. |''Description''|Localised tiddler save errors including edit conflict resolution.|
  2306. |''CoreVersion''|2.6.1|
  2307. |''Requires''|TiddlySpaceConfig|
  2308. ***/
  2309. //{{{
  2310. (function($) {
  2311. var tiddlyspace = config.extensions.tiddlyspace;
  2312. var currentSpace = tiddlyspace.currentSpace.name;
  2313. tiddlyspace.getLocalTitle = function(title, workspace, suffix) {
  2314. var endsWith = config.extensions.BinaryTiddlersPlugin.endsWith;
  2315. if(!suffix) {
  2316. var isPublic = endsWith(workspace, &quot;_public&quot;);
  2317. suffix = tiddlyspace.resolveSpaceName(workspace);
  2318. if(currentSpace == suffix) {
  2319. suffix = isPublic ? &quot;public&quot; : &quot;private&quot;;
  2320. } else {
  2321. suffix = &quot;@%0&quot;.format(suffix);
  2322. }
  2323. }
  2324. return &quot;%0 *(%1)*&quot;.format(title, suffix);
  2325. };
  2326. var sssp = config.extensions.ServerSideSavingPlugin;
  2327. var msgs = config.messages.editConflict = {
  2328. loading: &quot;Loading..&quot;,
  2329. resolve: &quot;[[Edit Conflict]]@glossary: this tiddler may have been changed by someone else.&quot;,
  2330. reviewDiff: &quot;review (recommended)&quot;,
  2331. reviewDiffTooltip: &quot;review changes made to this tiddler&quot;,
  2332. reviewDiffError: &quot;error retrieving revision.&quot;,
  2333. save: &quot;overwrite&quot;,
  2334. saveTooltip: &quot;make this revision the top revision of this tiddler&quot;,
  2335. discard: &quot;cancel&quot;,
  2336. discardTooltip: &quot;undo changes to this tiddler and get most recent version&quot;,
  2337. diffTitle: &quot;%0&quot;,
  2338. diffFieldTitle: &quot;%0 - fields&quot;,
  2339. diffTextTitle: &quot;%0 - text&quot;,
  2340. updating: &quot;updating your version...&quot;,
  2341. diffHeader: [&quot;Review the changes that have been made whilst you were editing this tiddler. &quot;,
  2342. &quot;Fold relevant changes back into your version.\n&quot;,
  2343. &quot;{{removed{Red}}} highlight shows content removed. &quot;,
  2344. &quot;{{added{Green}}} highlight shows content added.\n&quot;].join(&quot;&quot;),
  2345. diffTextHeader: &quot;View changes in text&quot;,
  2346. diffFieldsHeader: &quot;View changes in fields&quot;
  2347. };
  2348. var plugin = config.extensions.errorHandler = {
  2349. diffTags: [&quot;excludeLists&quot;, &quot;excludeMissing&quot;, &quot;excludeSearch&quot;],
  2350. displayMessage: function(message, tiddler, context) {
  2351. var desc = context &amp;&amp; context.httpStatus ? context.statusText :
  2352. sssp.locale.connectionError;
  2353. var reportArea = plugin.reportError(tiddler.title);
  2354. var msg = $(&quot;&lt;div /&gt;&quot;).appendTo(reportArea);
  2355. if(message == &quot;saveConflict&quot;) {
  2356. wikify(msgs.resolve, msg[0]);
  2357. var choiceArea = $(&quot;&lt;div /&gt;&quot;).appendTo(reportArea)[0];
  2358. plugin.editConflictHandler(choiceArea, tiddler);
  2359. } else {
  2360. msg.text(sssp.locale[message].format(tiddler.title, desc));
  2361. }
  2362. },
  2363. editConflictHandler: function(container, tiddler) {
  2364. var title = tiddler.title;
  2365. var myrev = tiddler.fields[&quot;server.page.revision&quot;];
  2366. // note user now needs to edit, fix problem and save.
  2367. // TODO: make sure this gets reset in save callback
  2368. store.getTiddler(title).fields[&quot;server.page.revision&quot;] = &quot;false&quot;;
  2369. var diffBtn = createTiddlyButton(container, msgs.reviewDiff, msgs.reviewDiffTooltip, function(ev) {
  2370. var title = $(ev.target).data(&quot;title&quot;);
  2371. plugin.displayDiff(ev.target, store.getTiddler(title), myrev);
  2372. });
  2373. var saveBtn = createTiddlyButton(container, msgs.save, msgs.saveTooltip, function(ev) {
  2374. var title = $(ev.target).data(&quot;title&quot;);
  2375. var tid = store.saveTiddler(store.getTiddler(title));
  2376. autoSaveChanges(null, [tid]);
  2377. });
  2378. var ignoreBtn = createTiddlyButton(container, msgs.discard, msgs.discardTooltip, function(ev) {
  2379. var title = $(ev.target).text(msgs.updating).data(&quot;title&quot;);
  2380. plugin.resetToServerVersion(store.getTiddler(title));
  2381. });
  2382. $([diffBtn, ignoreBtn, saveBtn]).data(&quot;title&quot;, title);
  2383. },
  2384. getDiffTiddlerTexts: function(diffText) {
  2385. var chunks = diffText.split(&quot;\n \n&quot;);
  2386. if(chunks.length &lt; 2) {
  2387. return [chunks[0], &quot;&quot;];
  2388. } else {
  2389. var diffFieldsText = &quot;{{diff{\n%0\n}}}&quot;.format(chunks[0]);
  2390. diffText = '{{diff{\n%0\n}}}'.format(chunks.splice(1, chunks.length).join(&quot;\n&quot;));
  2391. return [diffText, diffFieldsText];
  2392. }
  2393. },
  2394. makeDiffTiddler: function(title, diff) {
  2395. var newTiddler = new Tiddler(title);
  2396. var tags = plugin.diffTags;
  2397. newTiddler.text = msgs.loading;
  2398. newTiddler.fields.doNotSave = true;
  2399. newTiddler.tags = diff ? tags.concat([&quot;diff&quot;]) : tags;
  2400. newTiddler = store.saveTiddler(newTiddler);
  2401. $.extend(store.getTiddler(title).fields,
  2402. config.defaultCustomFields); // allow option to save it
  2403. return newTiddler;
  2404. },
  2405. displayDiff: function(src, tiddler, latestRevision) {
  2406. var adaptor = tiddler.getAdaptor();
  2407. var title = tiddler.title;
  2408. var ts = new Date().formatString(&quot;0hh:0mm:0ss&quot;);
  2409. var suffix = &quot;edit conflict %0&quot;.format(ts);
  2410. var diffTitle = tiddlyspace.getLocalTitle(msgs.diffTitle.format(title), &quot;&quot;, suffix);
  2411. var diffTextTitle = tiddlyspace.getLocalTitle(msgs.diffTextTitle.format(title), &quot;&quot;, suffix);
  2412. var diffFieldsTitle = tiddlyspace.getLocalTitle(msgs.diffFieldTitle.format(title), &quot;&quot;, suffix);
  2413. plugin.makeDiffTiddler(diffTextTitle, true);
  2414. plugin.makeDiffTiddler(diffFieldsTitle, true);
  2415. var newTiddler = plugin.makeDiffTiddler(diffTitle, false);
  2416. newTiddler.text = ['%0\n&lt;&lt;slider chkViewDiffText &quot;%1&quot; &quot;%2&quot;&gt;&gt;\n',
  2417. '&lt;&lt;slider chkViewDiffField &quot;%3&quot; &quot;%4&quot;&gt;&gt;'].join(&quot;&quot;).
  2418. format(msgs.diffHeader, diffTextTitle, msgs.diffTextHeader,
  2419. diffFieldsTitle, msgs.diffFieldsHeader);
  2420. store.saveTiddler(newTiddler);
  2421. var callback = function(r) {
  2422. var text = plugin.getDiffTiddlerTexts(r);
  2423. store.getTiddler(diffTextTitle).text = text[0];
  2424. store.getTiddler(diffFieldsTitle).text = text[1];
  2425. story.refreshTiddler(diffTitle, null, true);
  2426. };
  2427. var workspace = &quot;bags/%0&quot;.format(tiddler.fields[&quot;server.bag&quot;]);
  2428. ajaxReq({
  2429. type: &quot;get&quot;,
  2430. dataType: &quot;text&quot;,
  2431. url: &quot;/diff?rev1=%0/%1/%2&amp;rev2=%0/%1&quot;.format(workspace, title, latestRevision),
  2432. success: callback,
  2433. error: function() {
  2434. displayMessage(msgs.reviewDiffError);
  2435. }
  2436. });
  2437. story.displayTiddler(src, diffTitle);
  2438. },
  2439. resetToServerVersion: function(tiddler) {
  2440. var adaptor = tiddler.getAdaptor();
  2441. var ctx = {
  2442. host: tiddler.fields[&quot;server.host&quot;],
  2443. workspace: &quot;bags/&quot; + tiddler.fields[&quot;server.bag&quot;]
  2444. };
  2445. adaptor.getTiddler(tiddler.title, ctx, null, function(context) {
  2446. store.saveTiddler(context.tiddler);
  2447. story.refreshTiddler(tiddler.title);
  2448. store.setDirty(false);
  2449. });
  2450. },
  2451. reportError: function(title) {
  2452. var el = story.getTiddler(title);
  2453. if(!el) {
  2454. el = story.displayTiddler(null, title);
  2455. }
  2456. return $(&quot;&lt;div /&gt;&quot;).addClass(&quot;error annotation&quot;).prependTo(el)[0];
  2457. }
  2458. };
  2459. sssp.reportFailure = function(message, tiddler, context) {
  2460. config.options.chkViewDiffText = config.options.chkViewDiffText === undefined ?
  2461. true : config.options.chkViewDiffText;
  2462. config.options.chkViewDiffFields = config.options.chkViewDiffFields || false;
  2463. plugin.displayMessage(message, tiddler, context);
  2464. };
  2465. })(jQuery);
  2466. //}}}</pre>
  2467. </div>
  2468. <div title="Example_AdvancedTitles_1" creator="pmario" modifier="pmario" created="201102072057" modified="201102111136" tags="advanced example" server.title="Example_AdvancedTitles_1" server.page.revision="249010" server.etag="&quot;fancybox_public/Example_AdvancedTitles_1/249010;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.advanced="0000" _hash="69b002d5f72b13fc2c5d134bc24fef5454cff24b">
  2469. <pre>!Important
  2470. This example only works, if FancyBoxPluginAddOns are installed!
  2471. Docu: FancyBoxPluginAddOns
  2472. !Defaults
  2473. {{{
  2474. titlePosition: over
  2475. onComplete: showTitleOnHover
  2476. titleFormat: titleFormatSpecial
  2477. }}}
  2478. !!!!!!end
  2479. {{{
  2480. &lt;&lt;tiddler Pictures&gt;&gt;
  2481. &lt;&lt;fancyBox defaults:&quot;##Defaults&quot;&gt;&gt;
  2482. }}}
  2483. &lt;&lt;tiddler Pictures&gt;&gt;
  2484. &lt;&lt;fancyBox defaults:&quot;##Defaults&quot;&gt;&gt;
  2485. </pre>
  2486. </div>
  2487. <div title="Example_AdvancedTitles_2" creator="pmario" modifier="pmario" created="201102072057" modified="201102111136" tags="advanced example" server.title="Example_AdvancedTitles_2" server.page.revision="249012" server.etag="&quot;fancybox_public/Example_AdvancedTitles_2/249012;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.advanced="0001" _hash="44ca66aee539a9548d25f053ba313d210c37ca2f">
  2488. <pre>!Important
  2489. This example only works, if FancyBoxPluginAddOns are installed!
  2490. Docu: FancyBoxPluginAddOns
  2491. !~StyleSheet
  2492. {{{
  2493. #tip7-title { text-align: left; }
  2494. #tip7-title b { display: block; margin-right: 80px; }
  2495. #tip7-title span { float: right; }
  2496. }}}
  2497. !Defaults
  2498. ''If the close image is an attachment, thumbHost parameter is __not__ needed!''
  2499. {{{
  2500. thumbHost: http://fancybox-thumbs.tiddlyspace.com/
  2501. }}}
  2502. !Offline
  2503. {{{
  2504. thumbHost: ./thumbs/
  2505. }}}
  2506. !Fancy
  2507. {{{
  2508. showCloseButton: false
  2509. titlePosition: inside
  2510. titleFormat: titleFormatTip7
  2511. }}}
  2512. !!!!!!end
  2513. {{{
  2514. &lt;&lt;tiddler Pictures&gt;&gt;
  2515. &lt;&lt;fancyBox defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2516. }}}
  2517. &lt;&lt;tiddler Pictures&gt;&gt;
  2518. &lt;&lt;fancyBox defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2519. </pre>
  2520. </div>
  2521. <div title="Example_AttachmentReference" creator="pmario" modifier="pmario" created="201102072057" modified="201102261024" tags="example simple" server.title="Example_AttachmentReference" server.page.revision="261796" server.etag="&quot;fancybox_public/Example_AttachmentReference/261796;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="89996dd7fad694541d3dfce5c6ae782b2f08e168" changecount="1">
  2522. <pre>!!Info
  2523. &lt;&lt;&lt;
  2524. If AttachFilePluginFormatters is installed, the thumb needs to contain a {{{!slide}}} section see: ''06.jpg'', to reference the &quot;big&quot; picture. Click the sliders to see the tiddler content. This configuration will work online and offline. Using the fallback mechanism, built in by ~AttachFilePluginFormatters.
  2525. &lt;&lt;&lt;
  2526. !!Important
  2527. &lt;&lt;&lt;
  2528. If you use attached pictures, they must be tagged ''attachment'', otherwise ~AttachFilePluginFormatters will not list them!
  2529. &lt;&lt;&lt;
  2530. !!!Usage
  2531. &lt;&lt;&lt;
  2532. {{{
  2533. &lt;&lt;fancyBox tag:reference&gt;&gt;
  2534. }}}
  2535. ''tag'' .. Fancybox tag parameter will list all tiddlers tagged: reference. Fancybox creates a thumblist.
  2536. If a slide reference is missing, like in 01.jpg here you'll get a title &quot;Slide reference in [[01.jpg]] is missing&quot; and the thumbnail will be used.
  2537. &lt;&lt;&lt;
  2538. &lt;&lt;fancyBox tag:reference&gt;&gt; Hover the pictures and you'll see the difference.
  2539. {{dp33{&lt;&lt;slider chk01 01.jpg &quot;01.jpg code ...&quot; &quot;01.jpg code ...&quot; &gt;&gt;}}}{{dp33{&lt;&lt;slider chk06 06.jpg &quot;06.jpg code ...&quot; &quot;06.jpg code ...&quot; &gt;&gt;}}}{{dp33{&lt;&lt;slider chk06slide 06slide.jpg &quot;06slide.jpg code ...&quot; &quot;06slide.jpg code ...&quot; &gt;&gt;}}}
  2540. </pre>
  2541. </div>
  2542. <div title="Example_AutomaticSlideShow" creator="pmario" modifier="pmario" created="201102111153" modified="201102111156" tags="advanced example" server.title="Example_AutomaticSlideShow" server.page.revision="249050" server.etag="&quot;fancybox_public/Example_AutomaticSlideShow/249050;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.advanced="0002" _hash="49ca532f7376ea4a53600a252f3dcf13867c025c">
  2543. <pre>!Important
  2544. This example only works, if FancyBoxPluginAddOns are installed!
  2545. Docu: FancyBoxPluginAddOns
  2546. !~StyleSheet
  2547. {{{
  2548. #tip7-title { text-align: left; overflow: auto; }
  2549. #tip7-title b { display: block; margin-right: 80px; }
  2550. #tip7-title span { float: right; text-align: right; }
  2551. }}}
  2552. !Defaults
  2553. {{{
  2554. thumbHost: http://fancybox-thumbs.tiddlyspace.com/
  2555. showCloseButton: false
  2556. titlePosition: inside
  2557. cyclic: true
  2558. titleFormat: automaticSlideShow_title
  2559. onComplete: automaticSlideShow_onComplete
  2560. onClosed: automaticSlideShow_onClosed
  2561. slideShowInterval: 3000
  2562. slideShowAutostart: false
  2563. }}}
  2564. !!!!!!end
  2565. {{{
  2566. &lt;&lt;tiddler Pictures&gt;&gt;
  2567. &lt;&lt;fancyBox defaults:&quot;##Defaults&quot;&gt;&gt;
  2568. }}}
  2569. &lt;&lt;tiddler Pictures&gt;&gt;
  2570. &lt;&lt;fancyBox defaults:&quot;##Defaults&quot;&gt;&gt;
  2571. </pre>
  2572. </div>
  2573. <div title="Example_DirectPicture" creator="pmario" modifier="pmario" created="201102111141" modified="201102161347" tags="example medium" server.title="Example_DirectPicture" server.page.revision="255508" server.etag="&quot;fancybox_public/Example_DirectPicture/255508;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.medium="0004" _hash="dc26c1520ec7bdac06b5b6c57374c69092f07011">
  2574. <pre>!FancyOver
  2575. {{{
  2576. titlePosition: over
  2577. showCloseButton: false
  2578. // Toggle close button. false / true
  2579. }}}
  2580. !FancyInside
  2581. {{{
  2582. titlePosition: inside
  2583. padding: 5
  2584. }}}
  2585. !!!!!!end
  2586. !!Usage
  2587. &lt;&lt;&lt;
  2588. {{{
  2589. &lt;&lt;fancyBox picName label:&quot;Label with spaces&quot; ... &gt;&gt;
  2590. }}}
  2591. eg:
  2592. {{{
  2593. &lt;&lt;fancyBox 05.jpg label:Manta defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;##FancyOver&quot;&gt;&gt;
  2594. }}}
  2595. &gt;''picName'' .. fancyBox can handle direct picture input. This mode is meant for testing purpose only!
  2596. &gt;''label:'' .. every picture needs it own label.
  2597. &gt;link to: [[DirectoryConfig]]
  2598. &lt;&lt;&lt;
  2599. &lt;&lt;fancyBox 05.jpg label:Manta defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;##FancyOver&quot;&gt;&gt;
  2600. &lt;&lt;&lt;
  2601. {{{
  2602. &lt;&lt;fancyBox 05.jpg 06.jpg label:&quot;Manta&quot; label:&quot;Jam Jam&quot; defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;##FancyInside&quot;&gt;&gt;
  2603. }}}
  2604. &gt;fancyBox can handle several input pictures.
  2605. &gt;If you want to have several labels they have to be specified like: ''{{{label:&quot;label1&quot; label:&quot;label2&quot; ... }}}''
  2606. &lt;&lt;&lt;
  2607. &lt;&lt;fancyBox 05.jpg 06.jpg label:&quot;Manta&quot; label:&quot;Jam Jam&quot; defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;##FancyInside&quot;&gt;&gt;
  2608. </pre>
  2609. </div>
  2610. <div title="Example_FadeInOut" creator="pmario" modifier="pmario" created="201102072057" modified="201102221910" tags="example medium" server.title="Example_FadeInOut" server.page.revision="261797" server.etag="&quot;fancybox_public/Example_FadeInOut/261797;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.medium="0000" _hash="8d3d81de1542978b8e3cc65ee2716d2af32d8fc2">
  2611. <pre>!Fancy
  2612. {{{
  2613. transitionIn: elastic
  2614. transitionOut: elastic
  2615. speedIn: 1000
  2616. speedOut: 1000
  2617. centerOnScroll: true
  2618. titlePosition: over
  2619. }}}
  2620. !!!!!!end
  2621. !!Usage
  2622. &lt;&lt;&lt;
  2623. Just to show some nice transitions. Nothing special here :)
  2624. {{{
  2625. &lt;&lt;tiddler Pictures&gt;&gt;
  2626. &lt;&lt;fancyBox fancy:&quot;##Fancy&quot;&gt;&gt;
  2627. }}}
  2628. &lt;&lt;&lt;
  2629. &lt;&lt;tiddler Pictures&gt;&gt;
  2630. &lt;&lt;fancyBox fancy:&quot;##Fancy&quot;&gt;&gt;
  2631. </pre>
  2632. </div>
  2633. <div title="Example_FancyBoxPicture" creator="pmario" modifier="pmario" created="201101261756" modified="201102111136" tags="example simple" server.title="Example_FancyBoxPicture" server.page.revision="249015" server.etag="&quot;fancybox_public/Example_FancyBoxPicture/249015;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="9c71a358e53a9c6bc15825f319b11f5b172dedb2" sort.simple="0001">
  2634. <pre>!!Info
  2635. &lt;&lt;&lt;
  2636. If the macro is called with {{{mode:picture}}} parameter, fancyBox creates a single picture link, per picture found in the tiddler. See: ''Links that can be used by fancyBox plugin'' below. Link to: [[Pictures]]
  2637. &lt;&lt;&lt;
  2638. !!!Usage
  2639. &lt;&lt;&lt;
  2640. {{{
  2641. &lt;&lt;tiddler Pictures&gt;&gt;
  2642. &lt;&lt;fancyBox mode:picture&gt;&gt;
  2643. }}}
  2644. &lt;&lt;&lt;
  2645. &lt;&lt;tiddler Pictures&gt;&gt;
  2646. &lt;&lt;fancyBox mode:picture&gt;&gt;
  2647. </pre>
  2648. </div>
  2649. <div title="Example_FancyBoxSlides" creator="pmario" modifier="pmario" created="201101261756" modified="201102111136" tags="example simple" server.title="Example_FancyBoxSlides" server.page.revision="249016" server.etag="&quot;fancybox_public/Example_FancyBoxSlides/249016;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="4199fafe4c23e5f8dde89d7126094baf09919568" sort.simple="0000">
  2650. <pre>!!Info
  2651. &lt;&lt;&lt;
  2652. If the macro is called without any parameters, fancyBox creates a slideshow, with all pictures found in the tiddler. See: ''Links that can be used by fancyBox plugin'' below. Link to: [[Pictures]]
  2653. &lt;&lt;&lt;
  2654. !!!Usage
  2655. &lt;&lt;&lt;
  2656. {{{
  2657. &lt;&lt;tiddler Pictures&gt;&gt;
  2658. &lt;&lt;fancyBox&gt;&gt;
  2659. }}}
  2660. &lt;&lt;&lt;
  2661. &lt;&lt;tiddler Pictures&gt;&gt;
  2662. &lt;&lt;fancyBox&gt;&gt;
  2663. </pre>
  2664. </div>
  2665. <div title="Example_FlikrStatic" creator="pmario" modifier="pmario" created="201102072057" modified="201102161347" tags="example medium" server.title="Example_FlikrStatic" server.page.revision="255507" server.etag="&quot;fancybox_public/Example_FlikrStatic/255507;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.medium="0006" _hash="be5c114403a7a160bf143bd89817c12891941e11">
  2666. <pre>/%
  2667. http://farm6.static.flickr.com/5259/5421866042_f2df6080d2_t.jpg
  2668. http://farm6.static.flickr.com/5259/5421866042_f2df6080d2_b.jpg
  2669. {{{
  2670. http://farm6.static.flickr.com/5098/5421258927_8fe35503cc_t.jpg
  2671. http://farm6.static.flickr.com/5098/5421258927_8fe35503cc_b.jpg
  2672. thumb http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_t.jpg
  2673. small http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_m.jpg
  2674. medium http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b.jpg
  2675. medium 640x480 http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_z.jpg
  2676. large http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_b.jpg
  2677. }}}
  2678. %/
  2679. !Defaults
  2680. {{{
  2681. titlePosition: over
  2682. }}}
  2683. !Fancy
  2684. {{{
  2685. titlePosition: inside
  2686. padding: 5
  2687. }}}
  2688. !!!!!!end
  2689. {{{
  2690. &lt;&lt;fancyBox tag:flikrSlide fancy:##Fancy&gt;&gt;
  2691. }}}
  2692. &lt;&lt;fancyBox tag:flikrSlide fancy:##Fancy&gt;&gt;
  2693. {{{
  2694. &lt;&lt;list filter [tag[flikr]]&gt;&gt;
  2695. }}}
  2696. &lt;&lt;list filter [tag[flikr]]&gt;&gt;
  2697. </pre>
  2698. </div>
  2699. <div title="Example_Iframe" creator="pmario" modifier="pmario" created="201102111335" modified="201102111335" tags="advanced example" server.title="Example_Iframe" server.page.revision="251100" server.etag="&quot;fancybox_public/Example_Iframe/251100;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="9c6b93b0d6a32619e698f513e131abe22469f428">
  2700. <pre>!Iframe
  2701. {{{
  2702. width: 75%
  2703. height: 75%
  2704. autoScale: false
  2705. transitionIn: none
  2706. transitionOut: none
  2707. type: iframe
  2708. }}}
  2709. !!!!!!end
  2710. {{{
  2711. &lt;&lt;fancyBox &quot;Stack.png&quot; label:&quot;Open an iframe&quot; href:&quot;http://www.google.com&quot; defaults:&quot;Example_Iframe##Iframe&quot;&gt;&gt;
  2712. }}}
  2713. &lt;&lt;fancyBox &quot;Stack.png&quot; label:&quot;Open an iframe&quot; href:&quot;http://www.google.com&quot; defaults:&quot;Example_Iframe##Iframe&quot;&gt;&gt;
  2714. </pre>
  2715. </div>
  2716. <div title="Example_ImageMacro" creator="fancybox" modifier="pmario" created="201101211613" modified="201102161347" tags="example medium" server.title="Example_ImageMacro" server.page.revision="255512" server.etag="&quot;fancybox_public/Example_ImageMacro/255512;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.medium="0007" _hash="388ae6ca23be66dbb051470a570937e893428fd2">
  2717. <pre>!!Usage
  2718. &lt;&lt;&lt;
  2719. {{{
  2720. &lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/01.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/01.jpg&quot; alt:&quot;San Benedicto Island&quot;&gt;&gt;
  2721. &lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/02.jpg&quot;&gt;&gt; Not contained in slideshow, because it has no link!
  2722. &lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/03.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/03.jpg&quot;&gt;&gt;
  2723. &lt;&lt;fancyBox&gt;&gt;
  2724. }}}
  2725. &gt;Image macro description see: http://macros.tiddlyspace.com
  2726. &lt;&lt;&lt;
  2727. &lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/01.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/01.jpg&quot; alt:&quot;San Benedicto Island&quot;&gt;&gt;
  2728. &lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/02.jpg&quot; &gt;&gt; Not contained in slideshow, because it has no link!
  2729. &lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/03.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/03.jpg&quot;&gt;&gt;
  2730. &lt;&lt;fancyBox&gt;&gt;</pre>
  2731. </div>
  2732. <div title="Example_ImageMacroSelector" creator="pmario" modifier="pmario" created="201101310759" modified="201102111136" tags="example testing" server.title="Example_ImageMacroSelector" server.page.revision="249018" server.etag="&quot;fancybox_public/Example_ImageMacroSelector/249018;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.advanced="0004" _hash="2f4a39880ac866b9a5e6eaee801a71bced5ecbfa">
  2733. <pre>!Important
  2734. *@@These functions are meant for testing purpose only!!@@
  2735. *@@Don't use this function for production. Most of the time, a manually calculated selector is wrong!@@
  2736. //{{{
  2737. {{wrapper1{&lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/01.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/01.jpg&quot; alt:&quot;San Benedicto Island&quot;&gt;&gt;}}}
  2738. &lt;&lt;fancyBox selector:&quot;.wrapper1 a.image&quot; title:&quot;San Benedicto Island x&quot;&gt;&gt;
  2739. //}}}
  2740. {{wrapper1{&lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/01.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/01.jpg&quot; alt:&quot;San Benedicto Island&quot;&gt;&gt;}}}
  2741. &lt;&lt;fancyBox selector:&quot;.wrapper1 a.image&quot; title:&quot;San Benedicto Island x&quot;&gt;&gt;
  2742. //{{{
  2743. {{wrapper2{&lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/01.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/01.jpg&quot;&gt;&gt;}}}
  2744. &lt;&lt;fancyBox selector:&quot;.wrapper2 a.image&quot; title:&quot;San Benedicto Island - test overwrite href&quot; href:&quot;http://fancybox-pics.tiddlyspace.com/11.jpg&quot;&gt;&gt;
  2745. //}}}
  2746. * clicking the picture will show 11.jpg instead of 01.jpg
  2747. {{wrapper2{&lt;&lt;image &quot;http://fancybox-thumbs.tiddlyspace.com/01.jpg&quot; link:&quot;http://fancybox-pics.tiddlyspace.com/01.jpg&quot;&gt;&gt;}}}
  2748. &lt;&lt;fancyBox selector:&quot;.wrapper2 a.image&quot; title:&quot;San Benedicto Island - test overwrite href&quot; href:&quot;http://fancybox-pics.tiddlyspace.com/11.jpg&quot;&gt;&gt;
  2749. </pre>
  2750. </div>
  2751. <div title="Example_RoundaboutAndFancy" creator="pmario" modifier="pmario" created="201102210011" modified="201102261534" tags="example medium" server.title="Example_RoundaboutAndFancy" server.page.revision="260288" server.etag="&quot;fancybox_public/Example_RoundaboutAndFancy/260288;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="c9ee5b2ab3de120edd9023295fb14df1e43ae702" changecount="2">
  2752. <pre>&lt;html&gt;&lt;style&gt; .imgStack img {width: 9em; height: 6em; padding:2px;}&lt;/style&gt;&lt;/html&gt;
  2753. !SlideShow One
  2754. *Use the mouse wheel
  2755. *Click a picture to open
  2756. *Click the picture to close
  2757. *Don't forget to include the RoundaboutStyleSheet into your StyleSheet!
  2758. &lt;&lt;fancyBox tag:thumb mode:picture defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;##Fancy&quot; labelSection:label&gt;&gt;
  2759. &lt;&lt;roundabout selector:'.imgStack' childSelector:'span' defaults:'##Roundabout'&gt;&gt;
  2760. !Usage
  2761. &lt;&lt;&lt;
  2762. {{{
  2763. &lt;html&gt;&lt;style&gt; .imgStack img {width: 9em; height: 6em; padding:2px;}&lt;/style&gt;&lt;/html&gt;
  2764. !SlideShow One
  2765. &lt;&lt;fancyBox tag:thumb mode:picture defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2766. &lt;&lt;roundabout selector:'.imgStack' childSelector:'span' defaults:'##Roundabout'&gt;&gt;
  2767. }}}
  2768. &lt;&lt;&lt;
  2769. !Roundabout
  2770. {{{
  2771. minOpacity: 0.2
  2772. minScale: 0.2
  2773. duration: 2500
  2774. reflect: true
  2775. tilt: -6
  2776. mousewheel: mousewheelAddOn
  2777. mouseSpeed: 1
  2778. // mouseSpeed is a modifier, +/- .. controles the direction; 0.2 -&gt; 5 makes sense
  2779. }}}
  2780. !Fancy
  2781. {{{
  2782. hideOnContentClick: true
  2783. overlayShow: false
  2784. speedIn: 600
  2785. showCloseButton: false
  2786. opacity: true
  2787. // When true, transparency of content is changed for elastic transitions
  2788. titlePosition: over
  2789. // The position of title. Can be set to 'outside', 'inside' or 'over'
  2790. transitionIn: elastic
  2791. transitionOut: elastic
  2792. // The transition type. Can be set to 'elastic', 'fade' or 'none'
  2793. }}}
  2794. </pre>
  2795. </div>
  2796. <div title="Example_Selector" creator="fancybox" modifier="pmario" created="201101211613" modified="201102111136" tags="example testing" server.title="Example_Selector" server.page.revision="249019" server.etag="&quot;fancybox_public/Example_Selector/249019;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.advanced="0005" _hash="25f4e614dac3f9c37aeec4d492452b35f0deda66">
  2797. <pre>!Important
  2798. *@@These functions are meant for testing purpose only!!@@
  2799. *@@Don't use this function for production. Most of the time, a manually calculated selector is wrong!@@
  2800. {{{
  2801. &lt;&lt;tiddler Pictures&gt;&gt;
  2802. &lt;&lt;fancyBox selector:&quot;a.imageLink&quot;&gt;&gt;
  2803. }}}
  2804. &lt;&lt;tiddler Pictures&gt;&gt;
  2805. &lt;&lt;fancyBox selector:&quot;a.imageLink&quot;&gt;&gt;
  2806. </pre>
  2807. </div>
  2808. <div title="Example_SlideShowConfig" creator="pmario" modifier="pmario" created="201101261756" modified="201102221954" tags="example medium" server.title="Example_SlideShowConfig" server.page.revision="261798" server.etag="&quot;fancybox_public/Example_SlideShowConfig/261798;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.medium="0001" _hash="4c0c429b118adfea8c58c58eb82441dabc148f11">
  2809. <pre>!!Usage
  2810. &lt;&lt;&lt;
  2811. {{{
  2812. &lt;&lt;fancyBox button:&quot;click me&quot; tag:manual index:1 fancy:&quot;SlideShowConfig##Fancy&quot; defaults:&quot;SlideShowConfig##Default&quot;&gt;&gt;
  2813. }}}
  2814. ''button'' .. specifies a text for the button. If clicked it starts a slideshow.
  2815. ''tag'' .. use all tiddlers tagged &quot;manual&quot;
  2816. ''defaults:'' .. get the default parameters [[SlideShowConfig]]
  2817. ''index:'' .. Slide show start index
  2818. &lt;&lt;&lt;
  2819. &lt;&lt;fancyBox button:&quot;click me&quot; tag:manual index:1 fancy:&quot;SlideShowConfig##Fancy&quot; defaults:&quot;SlideShowConfig##Default&quot; &gt;&gt;
  2820. &lt;&lt;&lt;
  2821. //{{{
  2822. {{trImageBackground{&lt;&lt;fancyBox imageButton:&quot;[img[Mexico|Stack.png]]&quot; tag:manual fancy:&quot;SlideShowConfig##Fancy&quot; defaults:&quot;SlideShowConfig##Default&quot;&gt;&gt;}}}
  2823. //}}}
  2824. ''imageButton'' .. Uses a button instead of text only.
  2825. &lt;&lt;&lt;
  2826. {{trImageBackground{&lt;&lt;fancyBox imageButton:&quot;[img[Mexico|Stack.png]]&quot; tag:manual fancy:&quot;SlideShowConfig##Fancy&quot; defaults:&quot;SlideShowConfig##Default&quot;&gt;&gt;}}}
  2827. </pre>
  2828. </div>
  2829. <div title="Example_ThumblistSlideShow" creator="pmario" modifier="pmario" created="201101251454" modified="201102161347" tags="example medium" server.title="Example_ThumblistSlideShow" server.page.revision="255513" server.etag="&quot;fancybox_public/Example_ThumblistSlideShow/255513;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.medium="0003" _hash="a6cd1a3c904ee3c851f0c0e4fa81775c4009696d">
  2830. <pre>!Defaults
  2831. {{{
  2832. thumbHost: http://fancybox-thumbs.tiddlyspace.com/
  2833. picHost: http://fancybox-pics.tiddlyspace.com/
  2834. }}}
  2835. If you don't use ~AttachFilePluginFormatters, fancybox can also handle online/offline behaviour. Two additional parameters are needed.
  2836. *{{{thumbHost}}} .. link. must end with ''/''
  2837. *{{{picHost}}} .. link. must end with ''/''
  2838. !Offline
  2839. {{{
  2840. thumbHost: ./thumbs/
  2841. picHost: ./pics/
  2842. }}}
  2843. If there is an Offline section, it will be automatically used, if the brwser URL starts with ''&quot;file:&quot;''. If there is no ''Offline'' section, ''Defaults'' section will be used.
  2844. !Fancy
  2845. {{{
  2846. opacity: true
  2847. // When true, transparency of content is changed for elastic transitions
  2848. titlePosition: over
  2849. // The position of title. Can be set to 'outside', 'inside' or 'over'
  2850. transitionIn: elastic
  2851. transitionOut: elastic
  2852. // The transition type. Can be set to 'elastic', 'fade' or 'none'
  2853. }}}
  2854. !!!!!!end of section
  2855. !!Usage
  2856. &lt;&lt;&lt;
  2857. {{{
  2858. !SlideShow One
  2859. &lt;&lt;fancyBox tag:thumb defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2860. !SlideShow Two
  2861. &lt;&lt;fancyBox tag:panorama defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2862. }}}
  2863. &gt;''defaults:'' .. is used to point to thumbs and pictures directory. The format is: {{{&quot;TiddlerName##SectionName&quot;}}} or only {{{&quot;##SectionName&quot;}}}. If no ~TiddlerName is specified, the plugin assumes, that the section is within the containing tiddler. It can be a hidden section like: {{{/% hidden %/}}}.
  2864. &gt;''fancy:'' .. is used to sepcify fancyBox parameters. A list of all parameters can be found at: [[Template.Config]]. Copy/Paste them into your configuration tiddler.
  2865. &lt;&lt;&lt;
  2866. !SlideShow One
  2867. &lt;&lt;fancyBox tag:thumb defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2868. !SlideShow Two
  2869. &lt;&lt;fancyBox tag:panorama defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2870. </pre>
  2871. </div>
  2872. <div title="Example_ThumblistSlideShow II" creator="pmario" modifier="pmario" created="201102082345" modified="201102140108" tags="advanced example" server.title="Example_ThumblistSlideShow II" server.page.revision="253613" server.etag="&quot;fancybox_public/Example_ThumblistSlideShow%20II/253613;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="3f3520ee1cb38d261a013b95efa9b57bcef4a5c1">
  2873. <pre>@@If ~AttachFilePluginFormatters is installed, and the pictures contain the needed URL and file information, no thumbHost and picHost parameters are needed.
  2874. At the moment, only the lobster picture has the appropriate {{{!slide}}} section parameter, to work propperly.@@
  2875. !Defaults
  2876. {{{
  2877. }}}
  2878. !Offline
  2879. If there is an Offline section, it will be used, if the brwser URL starts with ''&quot;file:&quot;''. If there is no ''Offline'' section, ''Defaults'' section will be used.
  2880. {{{
  2881. }}}
  2882. !Fancy
  2883. {{{
  2884. opacity: true
  2885. // When true, transparency of content is changed for elastic transitions
  2886. titlePosition: over
  2887. // The position of title. Can be set to 'outside', 'inside' or 'over'
  2888. transitionIn: elastic
  2889. transitionOut: elastic
  2890. // The transition type. Can be set to 'elastic', 'fade' or 'none'
  2891. }}}
  2892. !!!!!!end
  2893. {{{
  2894. !SlideShow One
  2895. &lt;&lt;fancyBox tag:thumb defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2896. !SlideShow Two
  2897. &lt;&lt;fancyBox tag:panorama defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2898. }}}
  2899. !SlideShow One
  2900. &lt;&lt;fancyBox tag:thumb defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2901. !SlideShow Two
  2902. &lt;&lt;fancyBox tag:panorama defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  2903. </pre>
  2904. </div>
  2905. <div title="Example_TitleHandling" creator="pmario" modifier="pmario" created="201102161346" modified="201102222330" tags="example medium" server.title="Example_TitleHandling" server.page.revision="261799" server.etag="&quot;fancybox_public/Example_TitleHandling/261799;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.medium="0002" _hash="d49456915eedda914c6dc49066ed19a7eadf725e">
  2906. <pre>!Fancy
  2907. {{{
  2908. labelSection: label
  2909. infoSection: info
  2910. }}}
  2911. !Usage
  2912. &lt;&lt;&lt;
  2913. {{{
  2914. &lt;&lt;fancyBox tag:panorama labelSection:label infoSection:notes defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2915. }}}
  2916. ''labelSection'' .. references the a section in the picture tiddler, that contains the title, to be used for a slideshow. See: [[01.jpg]], [[06.jpg]], [[11.jpg]], for there ''title'' section.
  2917. ''infoSection'' .. references some additional information, that can be used for a slideshow. The &quot;titleFormat&quot; parameter has to be set, and an AddOn that uses it has to be made
  2918. {{{
  2919. &lt;&lt;fancyBox tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2920. }}}
  2921. ''fancy'' .. label-, infoSection can also be set with a fancy section parameter.
  2922. {{{
  2923. &lt;&lt;fancyBox imageButton:[img[ClickMe|Stack.png]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2924. }}}
  2925. ''imageButton'' .. references a button, that must exist as an image to be used to activate the show.
  2926. {{trImageBackground{&lt;&lt;fancyBox imageButton:[img[ClickMe|Stack.png]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;}}}
  2927. !!!~WebKit/Mozilla only!
  2928. {{{
  2929. &lt;&lt;fancyBox imageStack:[img[ClickMe|06.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2930. }}}
  2931. ''imageStack'' .. similar to imageButton, but uses any picture that can be used for shows. Styling is set by [[StackImgStyleSheet]]. If the browser doesn't support CSS3 &quot;transform&quot;, imageButton is activated by the plugin, as a fallback mechanism. The following buttons should look similar to the above imageButton.
  2932. &lt;&lt;&lt;
  2933. &lt;&lt;fancyBox imageStack:[img[ClickMe|03.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2934. &lt;&lt;fancyBox imageStack:[img[ClickMe|06.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2935. </pre>
  2936. </div>
  2937. <div title="Example_TitleHandling [draft]" creator="pmario" modifier="pmario" created="201102161428" modified="201102222332" tags="example medium" server.title="Example_TitleHandling [draft]" server.page.revision="255600" server.etag="&quot;fancybox_private/Example_TitleHandling%20%5Bdraft%5D/255600;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" publish.name="Example_TitleHandling" sort.medium="0002" _hash="1dc8d30f22b7542977d381d798873dc80af7b8ed">
  2938. <pre>!Fancy
  2939. {{{
  2940. labelSection: label
  2941. infoSection: info
  2942. }}}
  2943. !Usage
  2944. &lt;&lt;&lt;
  2945. {{{
  2946. &lt;&lt;fancyBox tag:panorama labelSection:label infoSection:notes defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2947. or
  2948. &lt;&lt;fancyBox tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2949. or
  2950. &lt;&lt;fancyBox imageButton:[img[ClickMe|06.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2951. or WebKit/Mozilla only!
  2952. &lt;&lt;fancyBox imageStack:[img[ClickMe|06.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2953. }}}
  2954. &lt;&lt;&lt;
  2955. &lt;&lt;fancyBox imageStack:[img[ClickMe|06.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;&lt;&lt;fancyBox imageStack:[img[ClickMe|03.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt;
  2956. |&lt;&lt;fancyBox imageStack:[img[ClickMe|06.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt; |
  2957. | Caption |c
  2958. | Caption |c
  2959. |&lt;&lt;fancyBox imageStack:[img[ClickMe|03.jpg]] tag:panorama fancy:##Fancy defaults:&quot;DirectoryConfig##Defaults&quot;&gt;&gt; |</pre>
  2960. </div>
  2961. <div title="Example_Various" creator="pmario" modifier="pmario" created="201102091339" modified="201102091433" tags="advanced example" server.title="Example_Various" server.page.revision="247221" server.etag="&quot;fancybox_private/Example_Various/247221;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="e39a0af3e8e8837812ccc3d56a0eddd230b48492">
  2962. <pre>The library seems to have a problem here.
  2963. &lt;html&gt;
  2964. &lt;style&gt;
  2965. #inline1, #inline2 {
  2966. display: none;
  2967. }
  2968. &lt;/style&gt;
  2969. &lt;div id=&quot;inline1&quot;&gt;
  2970. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis mi eu elit tempor facilisis id et neque. Nulla sit amet sem sapien. Vestibulum imperdiet porta ante ac ornare. Nulla et lorem eu nibh adipiscing ultricies nec at lacus. Cras laoreet ultricies sem, at blandit mi eleifend aliquam. Nunc enim ipsum, vehicula non pretium varius, cursus ac tortor. Vivamus fringilla congue laoreet. Quisque ultrices sodales orci, quis rhoncus justo auctor in. Phasellus dui eros, bibendum eu feugiat ornare, faucibus eu mi. Nunc aliquet tempus sem, id aliquam diam varius ac. Maecenas nisl nunc, molestie vitae eleifend vel, iaculis sed magna. Aenean tempus lacus vitae orci posuere porttitor eget non felis. Donec lectus elit, aliquam nec eleifend sit amet, vestibulum sed nunc.
  2971. &lt;/div&gt;
  2972. &lt;div id=&quot;inline2&quot;&gt;
  2973. Lorem ipsum dolor sit amet, consectetur adipiscing elit. &amp;nbsp;&amp;nbsp; &lt;a href=&quot;javascript:;&quot; onclick=&quot;jQuery.fancybox.close();&quot;&gt;Close&lt;/a&gt;
  2974. &lt;/div&gt;
  2975. &lt;ul&gt;
  2976. &lt;li&gt;&lt;a id=&quot;various1&quot; href=&quot;#inline1&quot; title=&quot;Lorem ipsum dolor sit amet&quot;&gt;Inline - auto detect width / height&lt;/a&gt;&lt;/li&gt;
  2977. &lt;li&gt;&lt;a id=&quot;various2&quot; href=&quot;#inline2&quot;&gt;Inline - modal window&lt;/a&gt;&lt;/li&gt;
  2978. &lt;li&gt;&lt;a id=&quot;various5&quot; href=&quot;http://www.google.ca&quot;&gt;Iframe (75% width and height)&lt;/a&gt;&lt;/li&gt;
  2979. &lt;/ul&gt;
  2980. &lt;/html&gt;
  2981. !Inline1
  2982. titlePosition: inside
  2983. transitionIn: none
  2984. transitionOut: none
  2985. !Inline2
  2986. modal: true
  2987. !Iframe
  2988. width: 75%
  2989. height: 75%
  2990. autoScale: false
  2991. transitionIn: none
  2992. transitionOut: none
  2993. type: iframe
  2994. !!!!!!end
  2995. {{{
  2996. &lt;&lt;fancyBox selector:'#various1' defaults:'##Inline1'&gt;&gt;
  2997. &lt;&lt;fancyBox selector:'#various2' defaults:'##Inline2'&gt;&gt;
  2998. &lt;&lt;fancyBox selector:'#various2' defaults:'##Inline2'&gt;&gt;
  2999. }}}
  3000. &lt;&lt;fancyBox selector:'#various1' defaults:'##Inline1'&gt;&gt;
  3001. &lt;&lt;fancyBox selector:'#various2' defaults:'##Inline2'&gt;&gt;
  3002. &lt;&lt;fancyBox selector:'#various5' defaults:'##Iframe'&gt;&gt;
  3003. </pre>
  3004. </div>
  3005. <div title="Example_YouTube" creator="pmario" modifier="pmario" created="201102072057" modified="201102161347" tags="example medium" server.title="Example_YouTube" server.page.revision="255509" server.etag="&quot;fancybox_public/Example_YouTube/255509;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.advanced="0002" sort.medium="0005" _hash="6141d4ba0b3ace913d4fa60f73a897c29948707e">
  3006. <pre>!Defaults
  3007. {{{
  3008. padding: 0
  3009. autoScale: true
  3010. transitionIn: none
  3011. transitionOut: none
  3012. title: Test YouTube
  3013. width: 700
  3014. height: 425
  3015. type: swf
  3016. swf: {&quot;wmode&quot;:&quot;transparent&quot;, &quot;allowfullscreen&quot;:&quot;true&quot;}
  3017. }}}
  3018. !Fancy
  3019. If the link below contains {{{&amp;fs=1}}} and {{{&quot;allowfullscreen&quot;:&quot;true&quot;}}} the fullscreenmode can be activated
  3020. {{{
  3021. href: http://www.youtube.com/watch?v=jTaovgc4V5w&amp;fs=1
  3022. or
  3023. // href http://www.youtube.com/v/jTaovgc4V5w&amp;fs=1
  3024. }}}
  3025. !!!!!!end
  3026. !!Usage
  3027. &lt;&lt;&lt;
  3028. {{{
  3029. &lt;&lt;fancyBox &quot;youtube.thumb&quot; label:test defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  3030. }}}
  3031. Similar to: Example_DirectPicture, but the ''Defaults'' settings are important.
  3032. &lt;&lt;&lt;
  3033. &lt;&lt;fancyBox &quot;youtube.thumb&quot; label:test defaults:&quot;##Defaults&quot; fancy:&quot;##Fancy&quot;&gt;&gt;
  3034. </pre>
  3035. </div>
  3036. <div title="ExternalScripts" creator="pmario" modifier="GUEST" created="201102072303" modified="201103151347" server.title="ExternalScripts" server.page.revision="249023" server.etag="&quot;fancybox_private/ExternalScripts/249023;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="b7932138a5245d7ac2ca15910486bc48cb1bd959" changecount="1">
  3037. <pre>fancyBoxPlugin.js
  3038. fancyBoxPluginAddOn.js
  3039. test.js</pre>
  3040. </div>
  3041. <div title="FAQ's" creator="pmario" modifier="pmario" created="201102162342" modified="201102222332" tags="mainMenu topMenu" server.title="FAQ's" server.page.revision="259649" server.etag="&quot;fancybox_public/FAQ's/259649;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="6b46d402865e0f15a74fac5d3e2ab82a3e546a9b">
  3042. <pre>!!!!Why didn't you include AttachFilePluginFormatters plugin?
  3043. *Because, FancyBoxPlugin can work without it.
  3044. *But if AttachFilePluginFormatters is installed, it will be used to handle &lt;&lt;tag attachment&gt;&gt; pictures.
  3045. !!!!What are named parameters / params?
  3046. *eg: {{{&lt;&lt;fancyBox 01.jpg tag:panorama ...&gt;&gt;}}}
  3047. ** tag:panorama .. name:value .. tag is the name, panorama is tha value. value can be any tag name that you use in your TW.
  3048. ***named parameters can be in any order.
  3049. **01.jpg .. is a unnamed parameter
  3050. ***unnamed parameters must be orderd like specified.
  3051. !!!!If I have thumbnails only. How do I specify the picture store.
  3052. *{{{thumbHost}}} and {{{picHost}}} parameters are used to define the paths.
  3053. *see: [[Example_SlideShowConfig]]
  3054. !!!!Does FancyBoxPlugin work with AttachFilePluginFormatters
  3055. *yes
  3056. *If the thumbs and pictures are properly defined, facyBox plugin can use this information
  3057. *''file'', ''url'' and ''slide'' sections are used to find the picture content
  3058. *See: [[Example_AttachmentReference]] for more info.
  3059. *''title'' and ''info'' are optional and can be freely defined with ''labelSection'' parameter
  3060. !!!!It works, but there are no titles
  3061. *Check if you defined &quot;labelSection&quot; similar to [[Example_TitleHandling]] Fancy section!
  3062. *Check if there is a title section, that you referenced like above, at the picture.
  3063. !!!!It works in online mode, but it won't in offline mode
  3064. *Check you {{{thumbHost}}} and {{{picHost}}} settings.
  3065. *see: [[DirectoryConfig]] as an example.
  3066. *fancyBox plugin uses it like: {{{&lt;&lt;fancyBoy ... default:&quot;DirectoryConfig##Defaults&quot; ...&gt;&gt;}}}
  3067. **You should ''not'' use {{{&quot;default: DirectoryConfig##Offline&quot;}}}. ''It will not work, propperly!''
  3068. </pre>
  3069. </div>
  3070. <div title="FancyBox Modes" creator="pmario" modifier="pmario" created="201102072057" modified="201102072057" server.title="FancyBox Modes" server.page.revision="245599" server.etag="&quot;fancybox_public/FancyBox%20Modes/245599;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="590c4d48af5224651ffe6b651c97d2e80faad89a">
  3071. <pre>!!!!mode
  3072. *slide (default)
  3073. *picture
  3074. *button
  3075. </pre>
  3076. </div>
  3077. <div title="FancyBox named params" creator="fancybox" modifier="pmario" created="201101211613" modified="201101211623" server.title="FancyBox named params" server.page.revision="47580" server.etag="&quot;fancybox_public/FancyBox%20named%20params/47580;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="6eb34b122058e6e83a2b386ff2588d42386bedf1">
  3078. <pre>!!!This are named params for {{{fancyBox}}} macro
  3079. {{{
  3080. type Forces content type. Can be set to 'image', 'ajax', 'iframe', 'swf' or 'inline'
  3081. href Forces content source
  3082. title Forces title
  3083. content Forces content (can be any html data)
  3084. orig Sets object whos position and dimensions will be used by 'elastic' transition
  3085. index Custom start index of manually created gallery (since 1.3.1)
  3086. }}}</pre>
  3087. </div>
  3088. <div title="FancyBoxParamTest" creator="pmario" modifier="pmario" created="201102072317" modified="201102072317" server.title="FancyBoxParamTest" server.page.revision="245748" server.etag="&quot;fancybox_private/FancyBoxParamTest/245748;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="dcab912ff6444dd4ef2fc7334b6b5941c3f02445">
  3089. <pre>{{{
  3090. &lt;&lt;fancyBox type:image href:'http://fancybox.tiddlyspace.com/01.jpg' title:'hugo' orig:null index:1 content:'nix'&gt;&gt;
  3091. &lt;&lt;fancyBox defaults:FancyBoxConfig title:gurke&gt;&gt;
  3092. &lt;&lt;fancyBox defaults:FancyBoxConfigXX&gt;&gt; .. doesn't exis
  3093. }}}
  3094. &lt;&lt;fancyBox type:image href:'http://fancybox.tiddlyspace.com/01.jpg' title:'hugo' orig:null index:1 content:'nix'&gt;&gt;
  3095. &lt;&lt;fancyBox defaults:FancyBoxConfig title:gurke&gt;&gt;
  3096. &lt;&lt;fancyBox defaults:FancyBoxConfigXX&gt;&gt; .. doesn't exis</pre>
  3097. </div>
  3098. <div title="FancyBoxPlugin" creator="pmario" modifier="pmario" created="201101211553" modified="201102211547" tags="excludeLists excludeSearch excludeMissing" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="2580d133a264fcf798e5b289083613a1e00fd51f" changecount="1" deleted="true">
  3099. <pre>This tiddler has been deleted.</pre>
  3100. </div>
  3101. <div title="FancyBoxPluginAddOns" creator="pmario" modifier="pmario" created="201102111143" modified="201102211548" tags="excludeLists excludeSearch excludeMissing" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="42d85ba15ea9b5d50d788ae728ecc4aa5d473532" changecount="1" deleted="true">
  3102. <pre>This tiddler has been deleted.</pre>
  3103. </div>
  3104. <div title="FancyBoxStyleSheet" creator="pmario" modifier="pmario" created="201101211534" modified="201101211534" server.title="FancyBoxStyleSheet" server.page.revision="47474" server.etag="&quot;fancybox-plugin_public/FancyBoxStyleSheet/47474;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox-plugin_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox-plugin_public" server.permissions="read, write, create, delete" server.content-type="" _hash="355a92a2af4476235b2ef1e64f7edbd135e5817e">
  3105. <pre>/*{{{*/
  3106. /*
  3107. * FancyBox - jQuery Plugin
  3108. * Simple and fancy lightbox alternative
  3109. *
  3110. * Examples and documentation at: http://fancybox.net
  3111. *
  3112. * Copyright (c) 2008 - 2010 Janis Skarnelis
  3113. * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
  3114. *
  3115. * Version: 1.3.4 (11/11/2010)
  3116. * Requires: jQuery v1.3+
  3117. *
  3118. * Dual licensed under the MIT and GPL licenses:
  3119. * http://www.opensource.org/licenses/mit-license.php
  3120. * http://www.gnu.org/licenses/gpl.html
  3121. */
  3122. #fancybox-loading {
  3123. position: fixed;
  3124. top: 50%;
  3125. left: 50%;
  3126. width: 40px;
  3127. height: 40px;
  3128. margin-top: -20px;
  3129. margin-left: -20px;
  3130. cursor: pointer;
  3131. overflow: hidden;
  3132. z-index: 1104;
  3133. display: none;
  3134. }
  3135. #fancybox-loading div {
  3136. position: absolute;
  3137. top: 0;
  3138. left: 0;
  3139. width: 40px;
  3140. height: 480px;
  3141. background-image: url([[fancybox.png##data]]);
  3142. }
  3143. #fancybox-overlay {
  3144. position: absolute;
  3145. top: 0;
  3146. left: 0;
  3147. width: 100%;
  3148. z-index: 1100;
  3149. display: none;
  3150. }
  3151. #fancybox-tmp {
  3152. padding: 0;
  3153. margin: 0;
  3154. border: 0;
  3155. overflow: auto;
  3156. display: none;
  3157. }
  3158. #fancybox-wrap {
  3159. position: absolute;
  3160. top: 0;
  3161. left: 0;
  3162. padding: 20px;
  3163. z-index: 1101;
  3164. outline: none;
  3165. display: none;
  3166. }
  3167. #fancybox-outer {
  3168. position: relative;
  3169. width: 100%;
  3170. height: 100%;
  3171. background: #fff;
  3172. }
  3173. #fancybox-content {
  3174. width: 0;
  3175. height: 0;
  3176. padding: 0;
  3177. outline: none;
  3178. position: relative;
  3179. overflow: hidden;
  3180. z-index: 1102;
  3181. border: 0px solid #fff;
  3182. }
  3183. #fancybox-hide-sel-frame {
  3184. position: absolute;
  3185. top: 0;
  3186. left: 0;
  3187. width: 100%;
  3188. height: 100%;
  3189. background: transparent;
  3190. z-index: 1101;
  3191. }
  3192. #fancybox-close {
  3193. position: absolute;
  3194. top: -15px;
  3195. right: -15px;
  3196. width: 30px;
  3197. height: 30px;
  3198. background: transparent url([[fancybox.png##data]]) -40px 0px;
  3199. cursor: pointer;
  3200. z-index: 1103;
  3201. display: none;
  3202. }
  3203. #fancybox-error {
  3204. color: #444;
  3205. font: normal 12px/20px Arial;
  3206. padding: 14px;
  3207. margin: 0;
  3208. }
  3209. #fancybox-img {
  3210. width: 100%;
  3211. height: 100%;
  3212. padding: 0;
  3213. margin: 0;
  3214. border: none;
  3215. outline: none;
  3216. line-height: 0;
  3217. vertical-align: top;
  3218. }
  3219. #fancybox-frame {
  3220. width: 100%;
  3221. height: 100%;
  3222. border: none;
  3223. display: block;
  3224. }
  3225. #fancybox-left, #fancybox-right {
  3226. position: absolute;
  3227. bottom: 0px;
  3228. height: 100%;
  3229. width: 35%;
  3230. cursor: pointer;
  3231. outline: none;
  3232. background: transparent url([[blank.gif##data]]);
  3233. z-index: 1102;
  3234. display: none;
  3235. }
  3236. #fancybox-left {
  3237. left: 0px;
  3238. }
  3239. #fancybox-right {
  3240. right: 0px;
  3241. }
  3242. #fancybox-left-ico, #fancybox-right-ico {
  3243. position: absolute;
  3244. top: 50%;
  3245. left: -9999px;
  3246. width: 30px;
  3247. height: 30px;
  3248. margin-top: -15px;
  3249. cursor: pointer;
  3250. z-index: 1102;
  3251. display: block;
  3252. }
  3253. #fancybox-left-ico {
  3254. background-image: url([[fancybox.png##data]]);
  3255. background-position: -40px -30px;
  3256. }
  3257. #fancybox-right-ico {
  3258. background-image: url([[fancybox.png##data]]);
  3259. background-position: -40px -60px;
  3260. }
  3261. #fancybox-left:hover, #fancybox-right:hover {
  3262. visibility: visible; /* IE6 */
  3263. }
  3264. #fancybox-left:hover span {
  3265. left: 20px;
  3266. }
  3267. #fancybox-right:hover span {
  3268. left: auto;
  3269. right: 20px;
  3270. }
  3271. .fancybox-bg {
  3272. position: absolute;
  3273. padding: 0;
  3274. margin: 0;
  3275. border: 0;
  3276. width: 20px;
  3277. height: 20px;
  3278. z-index: 1001;
  3279. }
  3280. #fancybox-bg-n {
  3281. top: -20px;
  3282. left: 0;
  3283. width: 100%;
  3284. background-image: url([[fancybox-x.png##data]]);
  3285. }
  3286. #fancybox-bg-ne {
  3287. top: -20px;
  3288. right: -20px;
  3289. background-image: url([[fancybox.png##data]]);
  3290. background-position: -40px -162px;
  3291. }
  3292. #fancybox-bg-e {
  3293. top: 0;
  3294. right: -20px;
  3295. height: 100%;
  3296. background-image: url([[fancybox-y.png##data]]);
  3297. background-position: -20px 0px;
  3298. }
  3299. #fancybox-bg-se {
  3300. bottom: -20px;
  3301. right: -20px;
  3302. background-image: url([[fancybox.png##data]]);
  3303. background-position: -40px -182px;
  3304. }
  3305. #fancybox-bg-s {
  3306. bottom: -20px;
  3307. left: 0;
  3308. width: 100%;
  3309. background-image: url([[fancybox-x.png##data]]);
  3310. background-position: 0px -20px;
  3311. }
  3312. #fancybox-bg-sw {
  3313. bottom: -20px;
  3314. left: -20px;
  3315. background-image: url([[fancybox.png##data]]);
  3316. background-position: -40px -142px;
  3317. }
  3318. #fancybox-bg-w {
  3319. top: 0;
  3320. left: -20px;
  3321. height: 100%;
  3322. background-image: url([[fancybox-y.png##data]]);
  3323. }
  3324. #fancybox-bg-nw {
  3325. top: -20px;
  3326. left: -20px;
  3327. background-image: url([[fancybox.png##data]]);
  3328. background-position: -40px -122px;
  3329. }
  3330. #fancybox-title {
  3331. font-family: Helvetica;
  3332. font-size: 12px;
  3333. z-index: 1102;
  3334. }
  3335. .fancybox-title-inside {
  3336. padding-bottom: 10px;
  3337. text-align: center;
  3338. color: #333;
  3339. background: #fff;
  3340. position: relative;
  3341. }
  3342. .fancybox-title-outside {
  3343. padding-top: 10px;
  3344. color: #fff;
  3345. }
  3346. .fancybox-title-over {
  3347. position: absolute;
  3348. bottom: 0;
  3349. left: 0;
  3350. color: #FFF;
  3351. text-align: left;
  3352. }
  3353. #fancybox-title-over {
  3354. padding: 10px;
  3355. background-image: url([[fancy_title_over.png##data]]);
  3356. display: block;
  3357. }
  3358. .fancybox-title-float {
  3359. position: absolute;
  3360. left: 0;
  3361. bottom: -20px;
  3362. height: 32px;
  3363. }
  3364. #fancybox-title-float-wrap {
  3365. border: none;
  3366. border-collapse: collapse;
  3367. width: auto;
  3368. }
  3369. #fancybox-title-float-wrap td {
  3370. border: none;
  3371. white-space: nowrap;
  3372. }
  3373. #fancybox-title-float-left {
  3374. padding: 0 0 0 15px;
  3375. background: url([[fancybox.png##data]]) -40px -90px no-repeat;
  3376. }
  3377. #fancybox-title-float-main {
  3378. color: #FFF;
  3379. line-height: 29px;
  3380. font-weight: bold;
  3381. padding: 0 0 3px 0;
  3382. background: url([[fancybox-x.png##data]]) 0px -40px;
  3383. }
  3384. #fancybox-title-float-right {
  3385. padding: 0 0 0 15px;
  3386. background: url([[fancybox.png##data]]) -55px -90px no-repeat;
  3387. }
  3388. /* IE6 */
  3389. .fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
  3390. .fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
  3391. .fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
  3392. .fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', izingMethod='scale'); zoom: 1; }
  3393. .fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
  3394. .fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
  3395. .fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
  3396. .fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
  3397. height: expression(this.parentNode.clientHeight + &quot;px&quot;);
  3398. }
  3399. #fancybox-loading.fancybox-ie6 {
  3400. position: absolute; margin-top: 0;
  3401. top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
  3402. }
  3403. #fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
  3404. /* IE6, IE7, IE8 */
  3405. .fancybox-ie .fancybox-bg { background: transparent !important; }
  3406. .fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
  3407. .fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
  3408. .fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
  3409. .fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
  3410. .fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
  3411. .fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
  3412. .fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
  3413. .fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
  3414. /*}}}*/</pre>
  3415. </div>
  3416. <div title="FieldsEditorPlugin" modifier="pmario" created="201102211748" tags="systemConfig" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com" server.workspace="bags/fancybox_private" server.bag="fancybox_private" server.page.revision="261800" server.etag="&quot;fancybox_private/FieldsEditorPlugin/261800;679c808ea83728c9f0922e0ac831727f87829617&quot;">
  3417. <pre>/***
  3418. |''Name:''|FieldsEditorPlugin|
  3419. |''Description:''|//create//, //edit//, //view// and //delete// commands in toolbar &lt;&lt;toolbar fields&gt;&gt;.|
  3420. |''Version:''|1.0.2|
  3421. |''Date:''|Dec 21,2007|
  3422. |''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
  3423. |''Author:''|Pascal Collin|
  3424. |''License:''|[[BSD open source license|License]]|
  3425. |''~CoreVersion:''|2.2.0|
  3426. |''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
  3427. !Demo:
  3428. On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], see [[FieldEditor example]]
  3429. !Installation:
  3430. *import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
  3431. *save and reload
  3432. *optionnaly : add the following css text in your StyleSheet : {{{#popup tr.fieldTableRow td {padding:1px 3px 1px 3px;}}}
  3433. !Code
  3434. ***/
  3435. //{{{
  3436. config.commands.fields.handlePopup = function(popup,title) {
  3437. var tiddler = store.fetchTiddler(title);
  3438. if(!tiddler)
  3439. return;
  3440. var fields = {};
  3441. store.forEachField(tiddler,function(tiddler,fieldName,value) {fields[fieldName] = value;},true);
  3442. var items = [];
  3443. for(var t in fields) {
  3444. var editCommand = &quot;&lt;&lt;untiddledCall editFieldDialog &quot;+escape(title)+&quot; &quot;+escape(t)+&quot;&gt;&gt;&quot;;
  3445. var deleteCommand = &quot;&lt;&lt;untiddledCall deleteField &quot;+escape(title)+&quot; &quot;+escape(t)+&quot;&gt;&gt;&quot;;
  3446. var renameCommand = &quot;&lt;&lt;untiddledCall renameField &quot;+escape(title)+&quot; &quot;+escape(t)+&quot;&gt;&gt;&quot;;
  3447. items.push({field: t,value: fields[t], actions: editCommand+renameCommand+deleteCommand});
  3448. }
  3449. items.sort(function(a,b) {return a.field &lt; b.field ? -1 : (a.field == b.field ? 0 : +1);});
  3450. var createNewCommand = &quot;&lt;&lt;untiddledCall createField &quot;+escape(title)+&quot;&gt;&gt;&quot;;
  3451. items.push({field : &quot;&quot;, value : &quot;&quot;, actions:createNewCommand });
  3452. if(items.length &gt; 0)
  3453. ListView.create(popup,items,this.listViewTemplate);
  3454. else
  3455. createTiddlyElement(popup,&quot;div&quot;,null,null,this.emptyText);
  3456. }
  3457. config.commands.fields.listViewTemplate = {
  3458. columns: [
  3459. {name: 'Field', field: 'field', title: &quot;Field&quot;, type: 'String'},
  3460. {name: 'Actions', field: 'actions', title: &quot;Actions&quot;, type: 'WikiText'},
  3461. {name: 'Value', field: 'value', title: &quot;Value&quot;, type: 'WikiText'}
  3462. ],
  3463. rowClasses: [
  3464. {className: 'fieldTableRow', field: 'actions'}
  3465. ],
  3466. buttons: [ //can't use button for selected then delete, because click on checkbox will hide the popup
  3467. ]
  3468. }
  3469. config.macros.untiddledCall = { // when called from listview, tiddler is unset, so we need to pass tiddler as parameter
  3470. handler : function(place,macroName,params,wikifier,paramString) {
  3471. var macroName = params.shift();
  3472. if (macroName) var macro = config.macros[macroName];
  3473. var title = params.shift();
  3474. if (title) var tiddler = store.getTiddler(unescape(title));
  3475. if (macro) macro.handler(place,macroName,params,wikifier,paramString,tiddler);
  3476. }
  3477. }
  3478. config.macros.deleteField = {
  3479. handler : function(place,macroName,params,wikifier,paramString,tiddler) {
  3480. if(!readOnly &amp;&amp; params[0]) {
  3481. fieldName = unescape(params[0]);
  3482. var btn = createTiddlyButton(place,&quot;delete&quot;, &quot;delete &quot;+fieldName,this.onClickDeleteField);
  3483. btn.setAttribute(&quot;title&quot;,tiddler.title);
  3484. btn.setAttribute(&quot;fieldName&quot;, fieldName);
  3485. }
  3486. },
  3487. onClickDeleteField : function() {
  3488. var title=this.getAttribute(&quot;title&quot;);
  3489. var fieldName=this.getAttribute(&quot;fieldName&quot;);
  3490. var tiddler = store.getTiddler(title);
  3491. if (tiddler &amp;&amp; fieldName &amp;&amp; confirm(&quot;delete field &quot; + fieldName+&quot; from &quot; + title +&quot; tiddler ?&quot;)) {
  3492. delete tiddler.fields[fieldName];
  3493. store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
  3494. story.refreshTiddler(title,&quot;ViewTemplate&quot;,true);
  3495. }
  3496. return false;
  3497. }
  3498. }
  3499. config.macros.createField = {
  3500. handler : function(place,macroName,params,wikifier,paramString,tiddler) {
  3501. if(!readOnly) {
  3502. var btn = createTiddlyButton(place,&quot;create new&quot;, &quot;create a new field&quot;,this.onClickCreateField);
  3503. btn.setAttribute(&quot;title&quot;,tiddler.title);
  3504. }
  3505. },
  3506. onClickCreateField : function() {
  3507. var title=this.getAttribute(&quot;title&quot;);
  3508. var tiddler = store.getTiddler(title);
  3509. if (tiddler) {
  3510. var fieldName = prompt(&quot;Field name&quot;,&quot;&quot;);
  3511. if (store.getValue(tiddler,fieldName)) {
  3512. window.alert(&quot;This field already exists.&quot;);
  3513. }
  3514. else if (fieldName) {
  3515. var v = prompt(&quot;Field value&quot;,&quot;&quot;);
  3516. tiddler.fields[fieldName]=v;
  3517. store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
  3518. story.refreshTiddler(title,&quot;ViewTemplate&quot;,true);
  3519. }
  3520. }
  3521. return false;
  3522. }
  3523. }
  3524. config.macros.editFieldDialog = {
  3525. handler : function(place,macroName,params,wikifier,paramString,tiddler) {
  3526. if(!readOnly &amp;&amp; params[0]) {
  3527. fieldName = unescape(params[0]);
  3528. var btn = createTiddlyButton(place,&quot;edit&quot;, &quot;edit this field&quot;,this.onClickEditFieldDialog);
  3529. btn.setAttribute(&quot;title&quot;,tiddler.title);
  3530. btn.setAttribute(&quot;fieldName&quot;, fieldName);
  3531. }
  3532. },
  3533. onClickEditFieldDialog : function() {
  3534. var title=this.getAttribute(&quot;title&quot;);
  3535. var tiddler = store.getTiddler(title);
  3536. var fieldName=this.getAttribute(&quot;fieldName&quot;);
  3537. if (tiddler &amp;&amp; fieldName) {
  3538. var value = tiddler.fields[fieldName];
  3539. value = value ? value : &quot;&quot;;
  3540. var lines = value.match(/\n/mg);
  3541. lines = lines ? true : false;
  3542. if (!lines || confirm(&quot;This field contains more than one line. Only the first line will be kept if you edit it here. Proceed ?&quot;)) {
  3543. var v = prompt(&quot;Field value&quot;,value);
  3544. tiddler.fields[fieldName]=v;
  3545. store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
  3546. story.refreshTiddler(title,&quot;ViewTemplate&quot;,true);
  3547. }
  3548. }
  3549. return false;
  3550. }
  3551. }
  3552. config.macros.renameField = {
  3553. handler : function(place,macroName,params,wikifier,paramString,tiddler) {
  3554. if(!readOnly &amp;&amp; params[0]) {
  3555. fieldName = unescape(params[0]);
  3556. var btn = createTiddlyButton(place,&quot;rename&quot;, &quot;rename &quot;+fieldName,this.onClickRenameField);
  3557. btn.setAttribute(&quot;title&quot;,tiddler.title);
  3558. btn.setAttribute(&quot;fieldName&quot;, fieldName);
  3559. }
  3560. },
  3561. onClickRenameField : function() {
  3562. var title=this.getAttribute(&quot;title&quot;);
  3563. var fieldName=this.getAttribute(&quot;fieldName&quot;);
  3564. var tiddler = store.getTiddler(title);
  3565. if (tiddler &amp;&amp; fieldName) {
  3566. var newName = prompt(&quot;Rename &quot; + fieldName + &quot; as ?&quot;, fieldName);
  3567. if (newName) {
  3568. tiddler.fields[newName]=tiddler.fields[fieldName];
  3569. delete tiddler.fields[fieldName];
  3570. store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
  3571. story.refreshTiddler(title,&quot;ViewTemplate&quot;,true);
  3572. }
  3573. }
  3574. return false;
  3575. }
  3576. }
  3577. config.shadowTiddlers.StyleSheetFieldsEditor = &quot;/*{{{*/\n&quot;;
  3578. config.shadowTiddlers.StyleSheetFieldsEditor += &quot;.fieldTableRow td {padding : 1px 3px}\n&quot;;
  3579. config.shadowTiddlers.StyleSheetFieldsEditor += &quot;.fieldTableRow .button {border:0; padding : 0 0.2em}\n&quot;;
  3580. config.shadowTiddlers.StyleSheetFieldsEditor +=&quot;/*}}}*/&quot;;
  3581. store.addNotification(&quot;StyleSheetFieldsEditor&quot;, refreshStyles);
  3582. //}}}</pre>
  3583. </div>
  3584. <div title="FileDropPlugin" creator="pmario" modifier="pmario" created="201102072317" modified="201102072317" tags="systemConfig" server.title="FileDropPlugin" server.page.revision="245747" server.etag="&quot;fancybox_private/FileDropPlugin/245747;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="7b67be54a0fcece0cf8f1752ff6b5acc54d002dd">
  3585. <pre>/***
  3586. |Name|FileDropPlugin|
  3587. |Source|http://www.TiddlyTools.com/#FileDropPlugin|
  3588. |Version|2.1.4 MP|
  3589. |Author|BradleyMeck and Eric Shulman|
  3590. |License|http://www.TiddlyTools.com/#LegalStatements|
  3591. |~CoreVersion|2.1|
  3592. |Type|plugin|
  3593. |Description|drag-and-drop files/directories to create tiddlers|
  3594. ''requires FireFox or another Mozilla-compatible browser.''
  3595. !!!!!Important
  3596. *PMario
  3597. *added TS default fields to make it save the tiddlers.
  3598. !!!!!Usage
  3599. &lt;&lt;&lt;
  3600. This plugin automatically creates tiddlers from files that are dropped onto an open TiddlyWiki document. You can drop multiple selected files and/or folders to create many tiddlers at once. New tiddler titles are created using the filename of each dropped file (i.e., omitting the path). If a title is already in use, you are prompted to enter a new title for that file. If you drop a folder, you will be asked if you want to create a simple 'directory list' of files in a single tiddler or create one tiddler for each file in that folder.
  3601. By default, it is assumed that all dropped files contain text. However, if [[AttachFilePlugin]], [[AttachFilePluginFormatters]] and [[AttachFileMIMETypes]] are installed, then you can drop ''//binary data files//'' as well as text files. If the MIME type of a dropped file is not &quot;text/plain&quot;, then AttachFilePlugin is used to create an 'attachment' tiddler, rather than creating a simple text tiddler.
  3602. When creating text tiddlers, you can embed a //link// to the original external file at the top of the new tiddler, in addition to (or instead of) the text content itself. The format for this link (see Configuration, below) uses embedded ''//replacement markers//'' that allow you to generate a variety of wiki-formatted output, where:
  3603. *%0 = filename (without path)
  3604. *%1 = local &quot;&quot;&quot;file://...&quot;&quot;&quot; URL
  3605. *%2 = local path and filename (OS-native format)
  3606. *%3 = relative path (if subdirectory of current document directory)
  3607. *%4 = file size
  3608. *%5 = file date
  3609. *%6 = current date
  3610. *%7 = current ~TiddlyWiki username
  3611. *\n = newline
  3612. By default, the link format uses the filename (%0) and local URL (%1), enclosed within a //hidden section// syntax, like this:
  3613. {{{
  3614. /%
  3615. !link
  3616. [[%0|%1]]
  3617. !end
  3618. %/
  3619. }}}
  3620. This permits the link to be embedded along with the text content, without changing the appearance of that content when the tiddler is viewed. To display the link in your tiddler content, use:
  3621. {{{
  3622. &lt;&lt;tiddler TiddlerName##link&gt;&gt;
  3623. }}}
  3624. &lt;&lt;&lt;
  3625. !!!!!Configuration
  3626. &lt;&lt;&lt;
  3627. __FileDropPlugin options:__
  3628. &lt;&lt;option chkFileDropContent&gt;&gt;Copy file content into tiddlers if smaller than: &lt;&lt;option txtFileDropDataLimit&gt;&gt; bytes
  3629. &amp;nbsp; //(note: excess text content will be truncated, oversized binary files will skipped, 0=no limit)//
  3630. &lt;&lt;option chkFileDropLink&gt;&gt;Generate external links to files, using this format:{{editor{&lt;html&gt;&lt;nowiki&gt;&lt;textarea rows=&quot;4&quot; onchange=&quot;
  3631. config.macros.option.propagateOption('txtFileDropLinkFormat','value',this.value.escapeLineBreaks(),'input');
  3632. &quot;&gt;&lt;/textarea&gt;&lt;/html&gt;&lt;&lt;tiddler {{
  3633. var ta=place.lastChild.getElementsByTagName('textarea')[0];
  3634. var v=config.options.txtFileDropLinkFormat.unescapeLineBreaks();
  3635. ta.value=v;
  3636. &quot;&quot;;}}&gt;&gt;}}}&lt;&lt;option chkFileDropTrimFilename&gt;&gt;Omit file extensions from tiddler titles
  3637. &lt;&lt;option chkFileDropDisplay&gt;&gt;Automatically display newly created tiddlers
  3638. Tag newly created tiddlers with: &lt;&lt;option txtFileDropTags&gt;&gt;
  3639. __FileDropPlugin+AttachFilePlugin options:__ //(binary file data as encoded 'base64' text)//
  3640. &lt;&lt;option chkFileDropAttachLocalLink&gt;&gt; attachment includes reference to local path/filename
  3641. &gt;Note: if the plugin does not seem to work, enter ''about:config'' in the Firefox address bar, and make sure that {{{signed.applets.codebase_principal_support}}} is set to ''true''
  3642. &lt;&lt;&lt;
  3643. !!!!!Examples (custom handler functions)
  3644. &lt;&lt;&lt;
  3645. Adds a single file with confirmation and prompting for title:
  3646. {{{
  3647. config.macros.fileDrop.addEventListener('application/x-moz-file',
  3648. function(nsiFile) {
  3649. var msg='You have dropped the file:\n'
  3650. +nsiFile.path+'\n'
  3651. +'onto the page, it will be imported as a tiddler. Is that ok?'
  3652. if(confirm(msg)) {
  3653. var fields=merge({}, config.defaultCustomFields); // no metadata at the moment
  3654. var newDate = new Date();
  3655. var title = prompt('what would you like to name the tiddler?');
  3656. store.saveTiddler(title,title,loadFile(nsiFile.path),config.options.txtUserName,newDate,fields);
  3657. }
  3658. return true;
  3659. });
  3660. }}}
  3661. Adds a single file without confirmation, using path/filename as tiddler title:
  3662. {{{
  3663. config.macros.fileDrop.addEventListener('application/x-moz-file',
  3664. function(nsiFile) {
  3665. var fields=merge({}, config.defaultCustomFields); // no metadata at the moment
  3666. var newDate = new Date();
  3667. store.saveTiddler(nsiFile.path,nsiFile.path,loadFile(nsiFile.path),config.options.txtUserName,newDate,fields);
  3668. story.displayTiddler(null,nsiFile.path)
  3669. return true;
  3670. });
  3671. }}}
  3672. &lt;&lt;&lt;
  3673. !!!!!Revisions
  3674. &lt;&lt;&lt;
  3675. 2010.03.06 2.1.4 added event listener for 'dragover' (for FireFox 3.6+)
  3676. 2009.10.10 2.1.3 fixed IE code error
  3677. 2009.10.08 2.1.2 fixed chkFileDropContent bypass handling for binary attachments
  3678. 2009.10.07 2.1.0 added chkFileDropContent and chkFileDropLink/txtFileDropLinkFormat
  3679. 2009.08.19 2.0.0 fixed event listener registration for FireFox 3.5+. Also, merged with FileDropPluginConfig, with code cleanup/reduction
  3680. 2008.08.11 1.5.1 added chkFileDropAttachLocalLink option to allow suppression of local path/file link
  3681. 2007.xx.xx *.*.* add suspend/resume of notifications to improve performance when multiple files are handled
  3682. 2007.01.01 0.9.9 extensions for AttachFilePlugin
  3683. 2006.11.04 0.1.1 initial release by Bradley Meck
  3684. &lt;&lt;&lt;
  3685. !!!!!Code
  3686. ***/
  3687. //{{{
  3688. version.extensions.FileDropPlugin={major:2, minor:1, revision:4, date: new Date(2010,3,6)};
  3689. config.macros.fileDrop = {
  3690. customDropHandlers: [],
  3691. addEventListener: function(paramflavor,func,inFront) {
  3692. var obj={}; obj.flavor=paramflavor; obj.handler=func;
  3693. if (!inFront) this.customDropHandlers.push(obj);
  3694. else this.customDropHandlers.shift(obj);
  3695. },
  3696. dragDropHandler: function(evt) {
  3697. netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
  3698. var dragService = Components.classes['@mozilla.org/widget/dragservice;1'].getService(Components.interfaces.nsIDragService);
  3699. var dragSession = dragService.getCurrentSession();
  3700. var transferObject = Components.classes['@mozilla.org/widget/transferable;1'].createInstance();
  3701. transferObject = transferObject.QueryInterface(Components.interfaces.nsITransferable);
  3702. transferObject.addDataFlavor('application/x-moz-file');
  3703. var numItems = dragSession.numDropItems;
  3704. if (numItems&gt;1) {
  3705. clearMessage();
  3706. displayMessage('Reading '+numItems+' files...');
  3707. store.suspendNotifications();
  3708. }
  3709. for (var i = 0; i &lt; numItems; i++) {
  3710. dragSession.getData(transferObject, i);
  3711. var dataObj = {};
  3712. var dropSizeObj = {};
  3713. for(var ind=0; ind&lt;config.macros.fileDrop.customDropHandlers.length; ind++) {
  3714. var item = config.macros.fileDrop.customDropHandlers[ind];
  3715. if(dragSession.isDataFlavorSupported(item.flavor)) {
  3716. transferObject.getTransferData(item.flavor, dataObj, dropSizeObj);
  3717. var droppedFile = dataObj.value.QueryInterface(Components.interfaces.nsIFile);
  3718. var result = item.handler.call(item,droppedFile);
  3719. evt.stopPropagation();
  3720. evt.preventDefault();
  3721. if (result) break;
  3722. }
  3723. }
  3724. }
  3725. if (numItems&gt;1) {
  3726. store.resumeNotifications();
  3727. store.notifyAll();
  3728. displayMessage(numItems+' files have been processed');
  3729. }
  3730. }
  3731. }
  3732. //}}}
  3733. /***
  3734. !!!!!window event handlers
  3735. ***/
  3736. //{{{
  3737. if(!window.event) {
  3738. window.addEventListener('dragdrop', // FireFox3.1-
  3739. config.macros.fileDrop.dragDropHandler, true);
  3740. window.addEventListener('drop', // FireFox3.5+
  3741. config.macros.fileDrop.dragDropHandler, true);
  3742. window.addEventListener('dragover', // FireFox3.6+
  3743. function(e){e.stopPropagation();e.preventDefault();}, true);
  3744. }
  3745. //}}}
  3746. /***
  3747. !!!!!handler for files, directories and binary attachments (see [[AttachFilePlugin]])
  3748. ***/
  3749. //{{{
  3750. var defaults={
  3751. chkFileDropDisplay: true,
  3752. chkFileDropTrimFilename: false,
  3753. chkFileDropContent: true,
  3754. chkFileDropLink: true,
  3755. txtFileDropLinkFormat: '/%\\n!link\\n[[%0|%1]]\\n!end\\n%/',
  3756. txtFileDropDataLimit: '32768',
  3757. chkFileDropAttachLocalLink: true,
  3758. txtFileDropTags: ''
  3759. };
  3760. for (var id in defaults) if (config.options[id]===undefined)
  3761. config.options[id]=defaults[id];
  3762. config.macros.fileDrop.addEventListener('application/x-moz-file',function(nsiFile) {
  3763. var co=config.options; // abbrev
  3764. var header='Index of %0\n^^(as of %1)^^\n|!filename| !size | !modified |\n';
  3765. var item='|[[%0|%1]]| %2|%3|\n';
  3766. var footer='Total of %0 bytes in %1 files\n';
  3767. var now=new Date();
  3768. var files=[nsiFile];
  3769. if (nsiFile.isDirectory()) {
  3770. var folder=nsiFile.directoryEntries;
  3771. var files=[];
  3772. while (folder.hasMoreElements()) {
  3773. var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
  3774. if (f instanceof Components.interfaces.nsILocalFile &amp;&amp; !f.isDirectory()) files.push(f);
  3775. }
  3776. var msg=nsiFile.path.replace(/\\/g,'/')+'\n\n';
  3777. msg+='contains '+files.length+' files... ';
  3778. msg+='select OK to attach all files or CANCEL to create a list...';
  3779. if (!confirm(msg)) { // create a list in a tiddler
  3780. var title=nsiFile.leafName; // tiddler name is last directory name in path
  3781. while (title &amp;&amp; title.length &amp;&amp; store.tiddlerExists(title)) {
  3782. if (confirm(config.messages.overwriteWarning.format([title]))) break;
  3783. title=prompt('Enter a new tiddler title',nsiFile.path.replace(/\\/g,'/'));
  3784. }
  3785. if (!title || !title.length) return true; // cancelled
  3786. var text=header.format([nsiFile.path.replace(/\\/g,'/'),now.toLocaleString()]);
  3787. var total=0;
  3788. for (var i=0; i&lt;files.length; i++) { var f=files[i];
  3789. var name=f.leafName;
  3790. if (co.chkFileDropTrimFilename)
  3791. { var p=name.split('.'); if (p.length&gt;1) p.pop(); name=p.join('.'); }
  3792. var path='file:///'+f.path.replace(/\\/g,'/');
  3793. var size=f.fileSize; total+=size;
  3794. var when=new Date(f.lastModifiedTime).formatString('YYYY.0MM.0DD 0hh:0mm:0ss');
  3795. text+=item.format([name,path,size,when]);
  3796. }
  3797. text+=footer.format([total,files.length]);
  3798. var newtags=co.txtFileDropTags?co.txtFileDropTags.readBracketedList():[];
  3799. var fields=merge({}, config.defaultCustomFields); // no metadata at the moment
  3800. store.saveTiddler(null,title,text,co.txtUserName,now,newtags,fields);
  3801. if (co.chkFileDropDisplay) story.displayTiddler(null,title);
  3802. return true;
  3803. }
  3804. }
  3805. if (files.length&gt;1) store.suspendNotifications();
  3806. for (i=0; i&lt;files.length; i++) {
  3807. var file=files[i];
  3808. if (file.isDirectory()) continue; // skip over nested directories
  3809. var type='text/plain';
  3810. var title=file.leafName; // tiddler name is file name
  3811. if (co.chkFileDropTrimFilename)
  3812. { var p=title.split('.'); if (p.length&gt;1) p.pop(); title=p.join('.'); }
  3813. var name=file.leafName;
  3814. var path=file.path;
  3815. var url='file:///'+path.replace(/\\/g,'/');
  3816. var size=file.fileSize;
  3817. var when=new Date(file.lastModifiedTime);
  3818. var now=new Date();
  3819. var who=config.options.txtUserName;
  3820. var h=document.location.href;
  3821. var cwd=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf('/')+1)));
  3822. var relpath=path.startsWith(cwd)?'./'+path.substr(cwd.length):path;
  3823. while (title &amp;&amp; title.length &amp;&amp; store.tiddlerExists(title)) {
  3824. if (confirm(config.messages.overwriteWarning.format([title]))) break;
  3825. title=prompt('Enter a new tiddler title',path.replace(/\\/g,'/'));
  3826. }
  3827. if (!title || !title.length) continue; // cancelled
  3828. if (config.macros.attach) {
  3829. type=config.macros.attach.getMIMEType(name,'');
  3830. if (!type.length)
  3831. type=prompt('Unknown file type. Enter a MIME type','text/plain');
  3832. if (!type||!type.length) continue; // cancelled
  3833. }
  3834. var newtags=co.txtFileDropTags?co.txtFileDropTags.readBracketedList():[];
  3835. if (type=='text/plain' || !co.chkFileDropContent) {
  3836. var txt=''; var fmt=co.txtFileDropLinkFormat.unescapeLineBreaks();
  3837. if (co.chkFileDropLink) txt+=fmt.format([name,url,path,relpath,size,when,now,who]);
  3838. if (co.chkFileDropContent) {
  3839. var out=loadFile(path); var lim=co.txtFileDropDataLimit;
  3840. txt+=co.txtFileDropDataLimit?out.substr(0,lim):out;
  3841. if (size&gt;lim) txt+='\n----\nfilesize ('+size+')'
  3842. +' is larger than FileDrop limit ('+lim+')...\n'
  3843. +'additional content has been omitted';
  3844. }
  3845. var fields=merge({}, config.defaultCustomFields); // no metadata at the moment
  3846. store.saveTiddler(null,title,txt,co.txtUserName,now,newtags,fields);
  3847. } else {
  3848. var embed=co.chkFileDropContent
  3849. &amp;&amp; (!co.txtFileDropDataLimit||size&lt;co.txtFileDropDataLimit);
  3850. newtags.push('attachment'); newtags.push('excludeMissing');
  3851. config.macros.attach.createAttachmentTiddler(path,
  3852. now.formatString(config.macros.timeline.dateFormat),
  3853. 'attached by FileDropPlugin', newtags, title,
  3854. embed, co.chkFileDropAttachLocalLink, false,
  3855. relpath, '', type,!co.chkFileDropDisplay);
  3856. }
  3857. if (co.chkFileDropDisplay) story.displayTiddler(null,title);
  3858. }
  3859. if (files.length&gt;1) { store.resumeNotifications(); store.notifyAll(); }
  3860. return true;
  3861. })
  3862. //}}}</pre>
  3863. </div>
  3864. <div title="FileDropPluginCreator" creator="pmario" modifier="pmario" created="201101271327" modified="201102072152" server.title="FileDropPluginCreator" server.page.revision="245659" server.etag="&quot;fancybox_public/FileDropPluginCreator/245659;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="37c61006a69d7e2fd488475389c1b818261ece45">
  3865. <pre>!Importatnt
  3866. *Don't forget the &quot;attachment&quot; tag!
  3867. !Creator
  3868. //{{{
  3869. !usage
  3870. {{{[img[%0]]}}}
  3871. [img[%0]]
  3872. !slide
  3873. !notes
  3874. attached by FileDropPlugin
  3875. !type
  3876. image/jpg
  3877. !file
  3878. ./thumbs/%0
  3879. !url
  3880. http://fancybox-thumbs.tiddlyspace.com/%0
  3881. !link
  3882. [[%0|http://fancybox-pics.tiddlyspace.com/%0]]
  3883. !!!!!end
  3884. //}}}</pre>
  3885. </div>
  3886. <div title="FollowTiddlersBlackList" creator="osmosoft" modifier="osmosoft" created="201102181424" modified="201102181424" tags="excludeLists excludeMissing excludeSearch" server.title="FollowTiddlersBlackList" server.page.revision="257480" server.etag="&quot;tiddlyspace/FollowTiddlersBlackList/257480;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/tiddlyspace" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="tiddlyspace" server.permissions="read" server.content-type="" _hash="6fc8ab230a904a71d63a42d97dccd8e135c1ed1c">
  3887. <pre>ColorPalette
  3888. StyleSheet
  3889. SiteSubtitle
  3890. GettingStarted
  3891. SiteTitle
  3892. MainMenu
  3893. SiteIcon
  3894. DefaultTiddlers
  3895. ViewTemplate
  3896. PageTemplate
  3897. SideBarOptions
  3898. EditTemplate
  3899. SiteInfo
  3900. SideBarTabs
  3901. ToolbarCommands</pre>
  3902. </div>
  3903. <div title="FollowTiddlersButtonPlugin" creator="pmario" modifier="pmario" created="201012062209" modified="201012070910" tags="excludeLists systemConfig" server.title="FollowTiddlersButtonPlugin" server.page.revision="107090" server.etag="&quot;neui-em_public/FollowTiddlersButtonPlugin/107090;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="8bf5f2104dd27dae9105c4835b8b5fc95b7e4db7">
  3904. <pre>/***
  3905. |''Name:''|FollowTiddlersButtonPlugin|
  3906. |''Description:''|Wraps followTiddlers macro into a button, which needs to be clicked to activate it.|
  3907. |''Author:''|Mario Pietsch|
  3908. |''Source:''||
  3909. |''Version:''|0.1.0|
  3910. |''Status:''|beta|
  3911. |''Date:''|2010.12.06|
  3912. |''Requires:''|TiddlySpaceFollowingPlugin|
  3913. |''License:''|BSD|
  3914. |''~CoreVersion:''||
  3915. Click the [?] button, to get {{{&lt;&lt;followTiddlers&gt;&gt;}}} macro activated.
  3916. !!!!Use
  3917. &lt;&lt;&lt;
  3918. {{{
  3919. &lt;&lt;followTiddlersButton&gt;&gt; instead of &lt;&lt;followTiddlers&gt;&gt;
  3920. }}}
  3921. &lt;&lt;&lt;
  3922. !!!!ViewTemplate
  3923. &lt;&lt;&lt;
  3924. {{{
  3925. &lt;div class='followPlaceHolder' macro='followTiddlersButton'&gt;
  3926. &lt;span macro=&quot;view title replyLink&quot;&gt;&lt;/span&gt;
  3927. &lt;/div&gt;
  3928. }}}
  3929. &lt;&lt;&lt;
  3930. ***/
  3931. /*{{{*/
  3932. version.extensions.TiddlySpaceHacks = {major: 0, minor: 1, revision: 0, date: new Date(2010,12,06)};
  3933. (function ($) {
  3934. var ftb;
  3935. config.macros.followTiddlersButton = ftb = {
  3936. // should be done for easy localisation
  3937. locale: {
  3938. lblButton: '?',
  3939. txtButton: 'Find other spaces, that contain a tiddler with the same title',
  3940. },
  3941. handler: function(place, macroName, params, wikifier, paramString, tiddler){
  3942. if (!config.macros.followTiddlers) return false;
  3943. var btn = null;
  3944. // createTiddlyButton(parent, text, tooltip, action, className, id, accessKey, attribs)
  3945. btn = createTiddlyButton(place, ftb.locale.lblButton, ftb.locale.txtButton, ftb.onClick, 'followButton');
  3946. // passing all arguments to the function
  3947. $(btn).data('data', arguments);
  3948. },
  3949. onClick: function() {
  3950. var a = $(this).data(&quot;data&quot;);
  3951. if (a) {
  3952. config.macros.followTiddlers.handler.apply(config.macros.followTiddlers, a);
  3953. $(this).remove();
  3954. }
  3955. return false;
  3956. }
  3957. }; // end of hello world
  3958. }) (jQuery);
  3959. /*}}}*/
  3960. </pre>
  3961. </div>
  3962. <div title="FontPalette" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists" server.title="FontPalette" server.page.revision="107092" server.etag="&quot;neui-em_public/FontPalette/107092;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="5eb189de697f4d6c1e7d47bec211a41c33ae635c">
  3963. <pre>|uiDefault|Verdana,Arial,sans-serif|
  3964. |uiEditor|Verdana,Arial,sans-serif|
  3965. |twDefault|Arial, 'Linux Biolinum O', helvetica|
  3966. |twEditor|Inconsolata|
  3967. |twTitle|'Trebuchet MS' sans-serif|
  3968. |twHeader|'Trebuchet MS' sans-serif|
  3969. |navDefault|Inconsolata|</pre>
  3970. </div>
  3971. <div title="FreeStyle" creator="pmario" modifier="pmario" created="201008061923" modified="201009181704" tags="excludeLists" server.title="FreeStyle" server.page.revision="107094" server.etag="&quot;neui-em_public/FreeStyle/107094;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" taggly.listmode="0" _hash="a268da48e13a1d7dc6116ffd5c6bb064d688d52b">
  3972. <pre>Learn more at: http://freestyle.tiddlyspot.com/
  3973. Source for this layout is not published yet.</pre>
  3974. </div>
  3975. <div title="GettingStarted" creator="fancybox" modifier="fancybox" created="201101211613" modified="201101211613" tags="excludeLists excludeSearch" server.title="GettingStarted" server.page.revision="47583" server.etag="&quot;fancybox_public/GettingStarted/47583;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="7bcb267061e0c7648089c17877be47256ee5e512">
  3976. <pre>&lt;&lt;binaryUpload edit:title&gt;&gt;</pre>
  3977. </div>
  3978. <div title="GotoPlugin" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists systemConfig" server.title="GotoPlugin" server.page.revision="107114" server.etag="&quot;neui-em_public/GotoPlugin/107114;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="2e50d5bab33d6df9f0ea9a83115b5dfaab44313b">
  3979. <pre>/***
  3980. |Name|GotoPlugin|
  3981. |Source|http://www.TiddlyTools.com/#GotoPlugin|
  3982. |Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
  3983. |Version|1.9.2|
  3984. |Author|Eric Shulman|
  3985. |License|http://www.TiddlyTools.com/#LegalStatements|
  3986. |~CoreVersion|2.1|
  3987. |Type|plugin|
  3988. |Description|view any tiddler by entering it's title - displays list of possible matches|
  3989. ''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press escape to close the listbox to resume typing. When the listbox is not displayed, pressing //escape// clears the current input.
  3990. !!!Documentation
  3991. &gt;see [[GotoPluginInfo]]
  3992. !!!Configuration
  3993. &lt;&lt;&lt;
  3994. *Match titles only after {{twochar{&lt;&lt;option txtIncrementalSearchMin&gt;&gt;}}} or more characters are entered.&lt;br&gt;Use down-arrow to start matching with shorter input. //Note: This option value is also set/used by [[SearchOptionsPlugin]]//.
  3995. *To set the maximum height of the listbox, you can create a tiddler tagged with &lt;&lt;tag systemConfig&gt;&gt;, containing:
  3996. //{{{
  3997. config.macros.gotoTiddler.listMaxSize=10; // change this number
  3998. //}}}
  3999. &lt;&lt;&lt;
  4000. !!!Revisions
  4001. &lt;&lt;&lt;
  4002. 2009.05.22 [1.9.2] use reverseLookup() for IncludePlugin
  4003. |please see [[GotoPluginInfo]] for additional revision details|
  4004. 2006.05.05 [0.0.0] started
  4005. &lt;&lt;&lt;
  4006. !!!Code
  4007. ***/
  4008. //{{{
  4009. version.extensions.GotoPlugin= {major: 1, minor: 9, revision: 2, date: new Date(2009,5,22)};
  4010. // automatically tweak shadow SideBarOptions to add &lt;&lt;gotoTiddler&gt;&gt; macro above &lt;&lt;search&gt;&gt;
  4011. config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/&lt;&lt;search&gt;&gt;/,&quot;{{button{goto}}}\n&lt;&lt;gotoTiddler&gt;&gt;&lt;&lt;search&gt;&gt;&quot;);
  4012. if (config.options.txtIncrementalSearchMin===undefined) config.options.txtIncrementalSearchMin=3;
  4013. config.macros.gotoTiddler= {
  4014. listMaxSize: 10,
  4015. listHeading: 'Found %0 matching title%1...',
  4016. searchItem: &quot;Search for '%0'...&quot;,
  4017. handler:
  4018. function(place,macroName,params,wikifier,paramString,tiddler) {
  4019. var quiet =params.contains(&quot;quiet&quot;);
  4020. var showlist =params.contains(&quot;showlist&quot;);
  4021. var search =params.contains(&quot;search&quot;);
  4022. params = paramString.parseParams(&quot;anon&quot;,null,true,false,false);
  4023. var instyle =getParam(params,&quot;inputstyle&quot;,&quot;&quot;);
  4024. var liststyle =getParam(params,&quot;liststyle&quot;,&quot;&quot;);
  4025. var filter =getParam(params,&quot;filter&quot;,&quot;&quot;);
  4026. var html=this.html;
  4027. var keyevent=window.event?&quot;onkeydown&quot;:&quot;onkeypress&quot;; // IE event fixup for ESC handling
  4028. html=html.replace(/%keyevent%/g,keyevent);
  4029. html=html.replace(/%search%/g,search);
  4030. html=html.replace(/%quiet%/g,quiet);
  4031. html=html.replace(/%showlist%/g,showlist);
  4032. html=html.replace(/%display%/g,showlist?'block':'none');
  4033. html=html.replace(/%position%/g,showlist?'static':'absolute');
  4034. html=html.replace(/%instyle%/g,instyle);
  4035. html=html.replace(/%liststyle%/g,liststyle);
  4036. html=html.replace(/%filter%/g,filter);
  4037. if (config.browser.isIE) html=this.IEtableFixup.format([html]);
  4038. var span=createTiddlyElement(place,'span');
  4039. span.innerHTML=html; var form=span.getElementsByTagName(&quot;form&quot;)[0];
  4040. if (showlist) this.fillList(form.list,'',filter,search,0);
  4041. },
  4042. html:
  4043. '&lt;form onsubmit=&quot;return false&quot; style=&quot;display:inline;margin:0;padding:0&quot;&gt;\
  4044. &lt;input name=gotoTiddler type=text autocomplete=&quot;off&quot; accesskey=&quot;G&quot; style=&quot;%instyle%&quot;\
  4045. title=&quot;Enter title text... ENTER=goto, SHIFT-ENTER=search for text, DOWN=select from list&quot;\
  4046. onfocus=&quot;this.select(); this.setAttribute(\'accesskey\',\'G\');&quot;\
  4047. %keyevent%=&quot;return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list,%search%,%showlist%);&quot;\
  4048. onkeyup=&quot;return config.macros.gotoTiddler.inputKeyHandler(event,this,%quiet%,%search%,%showlist%);&quot;&gt;\
  4049. &lt;select name=list style=&quot;display:%display%;position:%position%;%liststyle%&quot;\
  4050. onchange=&quot;if (!this.selectedIndex) this.selectedIndex=1;&quot;\
  4051. onblur=&quot;this.style.display=%showlist%?\'block\':\'none\';&quot;\
  4052. %keyevent%=&quot;return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler,%showlist%);&quot;\
  4053. onclick=&quot;return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this,%showlist%);&quot;&gt;\
  4054. &lt;/select&gt;&lt;input name=&quot;filter&quot; type=&quot;hidden&quot; value=&quot;%filter%&quot;&gt;\
  4055. &lt;/form&gt;',
  4056. IEtableFixup:
  4057. &quot;&lt;table style='width:100%;display:inline;padding:0;margin:0;border:0;'&gt;\
  4058. &lt;tr style='padding:0;margin:0;border:0;'&gt;&lt;td style='padding:0;margin:0;border:0;'&gt;\
  4059. %0&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&quot;,
  4060. getItems:
  4061. function(list,val,filter) {
  4062. if (!list.cache || !list.cache.length || val.length&lt;=config.options.txtIncrementalSearchMin) {
  4063. // starting new search, fetch and cache list of tiddlers/shadows/tags
  4064. list.cache=new Array();
  4065. if (filter.length) {
  4066. var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
  4067. var tiddlers=store.sortTiddlers(fn.apply(store,[filter]),'title');
  4068. } else
  4069. var tiddlers=store.reverseLookup('tags','excludeLists');
  4070. for(var t=0; t&lt;tiddlers.length; t++) list.cache.push(tiddlers[t].title);
  4071. if (!filter.length) {
  4072. for (var t in config.shadowTiddlers) list.cache.pushUnique(t);
  4073. var tags=store.getTags();
  4074. for(var t=0; t&lt;tags.length; t++) list.cache.pushUnique(tags[t][0]);
  4075. }
  4076. }
  4077. var found = [];
  4078. var match=val.toLowerCase();
  4079. for(var i=0; i&lt;list.cache.length; i++)
  4080. if (list.cache[i].toLowerCase().indexOf(match)!=-1) found.push(list.cache[i]);
  4081. return found;
  4082. },
  4083. getItemSuffix:
  4084. function(t) {
  4085. if (store.tiddlerExists(t)) return &quot;&quot;; // tiddler
  4086. if (store.isShadowTiddler(t)) return &quot; (shadow)&quot;; // shadow
  4087. return &quot; (tag)&quot;; // tag
  4088. },
  4089. fillList:
  4090. function(list,val,filter,search,key) {
  4091. if (list.style.display==&quot;none&quot;) return; // not visible... do nothing!
  4092. var indent='\xa0\xa0\xa0';
  4093. var found = this.getItems(list,val,filter); // find matching items...
  4094. found.sort(); // alpha by title
  4095. while (list.length &gt; 0) list.options[0]=null; // clear list
  4096. var hdr=this.listHeading.format([found.length,found.length==1?&quot;&quot;:&quot;s&quot;]);
  4097. list.options[0]=new Option(hdr,&quot;&quot;,false,false);
  4098. for (var t=0; t&lt;found.length; t++) list.options[list.length]=
  4099. new Option(indent+found[t]+this.getItemSuffix(found[t]),found[t],false,false);
  4100. if (search)
  4101. list.options[list.length]=new Option(this.searchItem.format([val]),&quot;*&quot;,false,false);
  4102. list.size=(list.length&lt;this.listMaxSize?list.length:this.listMaxSize); // resize list...
  4103. list.selectedIndex=key==38?list.length-1:key==40?1:0;
  4104. },
  4105. keyProcessed:
  4106. function(ev) { // utility function
  4107. ev.cancelBubble=true; // IE4+
  4108. try{event.keyCode=0;}catch(e){}; // IE5
  4109. if (window.event) ev.returnValue=false; // IE6
  4110. if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
  4111. if (ev.stopPropagation) ev.stopPropagation(); // all
  4112. return false;
  4113. },
  4114. inputEscKeyHandler:
  4115. function(event,here,list,search,showlist) {
  4116. if (event.keyCode==27) {
  4117. if (showlist) { // clear input, reset list
  4118. here.value=here.defaultValue;
  4119. this.fillList(list,'',here.form.filter.value,search,0);
  4120. }
  4121. else if (list.style.display==&quot;none&quot;) // clear input
  4122. here.value=here.defaultValue;
  4123. else list.style.display=&quot;none&quot;; // hide list
  4124. return this.keyProcessed(event);
  4125. }
  4126. return true; // key bubbles up
  4127. },
  4128. inputKeyHandler:
  4129. function(event,here,quiet,search,showlist) {
  4130. var key=event.keyCode;
  4131. var list=here.form.list;
  4132. var filter=here.form.filter;
  4133. // non-printing chars bubble up, except for a few:
  4134. if (key&lt;48) switch(key) {
  4135. // backspace=8, enter=13, space=32, up=38, down=40, delete=46
  4136. case 8: case 13: case 32: case 38: case 40: case 46: break; default: return true;
  4137. }
  4138. // blank input... if down/enter... fall through (list all)... else, and hide or reset list
  4139. if (!here.value.length &amp;&amp; !(key==40 || key==13)) {
  4140. if (showlist) this.fillList(here.form.list,'',here.form.filter.value,search,0);
  4141. else list.style.display=&quot;none&quot;;
  4142. return this.keyProcessed(event);
  4143. }
  4144. // hide list if quiet, or below input minimum (and not showlist)
  4145. list.style.display=(!showlist&amp;&amp;(quiet||here.value.length&lt;config.options.txtIncrementalSearchMin))?'none':'block';
  4146. // non-blank input... enter=show/create tiddler, SHIFT-enter=search for text
  4147. if (key==13 &amp;&amp; here.value.length) return this.processItem(event.shiftKey?'*':here.value,here,list,showlist);
  4148. // up or down key, or enter with blank input... shows and moves to list...
  4149. if (key==38 || key==40 || key==13) { list.style.display=&quot;block&quot;; list.focus(); }
  4150. this.fillList(list,here.value,filter.value,search,key);
  4151. return true; // key bubbles up
  4152. },
  4153. selectKeyHandler:
  4154. function(event,list,editfield,showlist) {
  4155. if (event.keyCode==27) // escape... hide list, move to edit field
  4156. { editfield.focus(); list.style.display=showlist?'block':'none'; return this.keyProcessed(event); }
  4157. if (event.keyCode==13 &amp;&amp; list.value.length) // enter... view selected item
  4158. { this.processItem(list.value,editfield,list,showlist); return this.keyProcessed(event); }
  4159. return true; // key bubbles up
  4160. },
  4161. processItem:
  4162. function(title,here,list,showlist) {
  4163. if (!title.length) return;
  4164. list.style.display=showlist?'block':'none';
  4165. if (title==&quot;*&quot;) { story.search(here.value); return false; } // do full-text search
  4166. if (!showlist) here.value=title;
  4167. story.displayTiddler(null,title); // show selected tiddler
  4168. return false;
  4169. }
  4170. }
  4171. //}}}</pre>
  4172. </div>
  4173. <div title="GroupByPlugin" creator="jon" modifier="jon" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="GroupByPlugin" server.page.revision="257434" server.etag="&quot;system-plugins_public/GroupByPlugin/257434;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-plugins_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-plugins_public" server.permissions="read" server.content-type="text/javascript" _hash="3d12e70f13f35b1da38bce7880fbff35c9d9fd88">
  4174. <pre>/***
  4175. |''Name''|GroupByPlugin|
  4176. |''Description''|Mimics allTags macro to provide ways of creating lists grouping tiddlers by any field|
  4177. |''Version''|0.5.7|
  4178. |''Author''|Jon Robson|
  4179. |''Status''|beta|
  4180. !Usage
  4181. {{{&lt;&lt;groupBy tags&gt;&gt;}}}
  4182. mimics allTags macro
  4183. {{{&lt;&lt;groupBy server.bag&gt;&gt;}}}
  4184. groups by the server.bag field (this version contains TiddlySpace specific code for turning a bag into a space name)
  4185. {{{groupBy modified dateFormat:&quot;YYYY&quot;}}}
  4186. group tiddlers by year.
  4187. {{{&lt;&lt;groupBy tags exclude:excludeLists exclude:systemConfig&gt;&gt;}}}
  4188. group tiddlers by tag but exclude the tags with values excludeLists and systemConfig
  4189. Within that group you can also exclude things by filter
  4190. {{{groupBy modifier filter:[tag[film]]}}}
  4191. will group tiddlers tagged with film by modifier.
  4192. ***/
  4193. //{{{
  4194. (function($) {
  4195. var taglocale = config.views.wikified.tag;
  4196. var macro = config.macros.groupBy = {
  4197. locale: {
  4198. tooltip: &quot;all tiddlers in group %0&quot;,
  4199. noTiddlers: &quot;no tiddlers&quot;,
  4200. openAllText: taglocale.openAllText,
  4201. openAllTooltip: taglocale.openAllTooltip,
  4202. openTiddler: &quot;open tiddler with title %0&quot;
  4203. },
  4204. morpher: {
  4205. // TODO: note currently the following 2 morphers are TiddlySpace specific and probably should be in separate plugin
  4206. &quot;server.workspace&quot;: function(value, options) {
  4207. return macro.morpher[&quot;server.bag&quot;](value.replace(&quot;bags/&quot;, &quot;&quot;).replace(&quot;recipes/&quot;, &quot;&quot;));
  4208. },
  4209. &quot;server.bag&quot;: function(value, options) {
  4210. if(typeof(value) !== &quot;string&quot;) {
  4211. return false;
  4212. } else if(value.indexOf(&quot;_public&quot;) === -1 &amp;&amp; value.indexOf(&quot;_private&quot;) === -1) {
  4213. value = &quot;*%0&quot;.format(value); // add star for non-space bags.
  4214. }
  4215. return value.replace(&quot;_public&quot;, &quot;&quot;).replace(&quot;_private&quot;, &quot;&quot;);
  4216. },
  4217. created: function(value, options) {
  4218. return value.formatString(options.dateFormat || &quot;DD MMM YYYY&quot;);
  4219. },
  4220. modified: function(value, options) {
  4221. return macro.morpher.created(value, options);
  4222. }
  4223. },
  4224. handler: function(place, macroName, params, wikifier, paramString) {
  4225. var field = params[0] || &quot;server.workspace&quot;;
  4226. var dateFormat = params[1] || &quot;DD MMM YYYY&quot;;
  4227. var container = $(&quot;&lt;div /&gt;&quot;).attr(&quot;macroName&quot;, macroName).addClass(&quot;groupBy&quot;).
  4228. attr(&quot;refresh&quot;, &quot;macro&quot;).attr(&quot;fieldName&quot;, field).
  4229. attr(&quot;paramString&quot;, paramString).
  4230. attr(&quot;dateFormat&quot;, dateFormat).appendTo(place)[0];
  4231. macro.refresh(container);
  4232. },
  4233. isTypeArray: function(value) {
  4234. var valueType = typeof value;
  4235. if(valueType === &quot;object&quot; &amp;&amp; typeof value.length === &quot;number&quot; &amp;&amp;
  4236. !(value.propertyIsEnumerable(&quot;length&quot;)) &amp;&amp;
  4237. typeof value.splice === &quot;function&quot;) { //is Array
  4238. return true;
  4239. } else {
  4240. return false;
  4241. }
  4242. },
  4243. _onClickGroup: function(ev, options) {
  4244. var i, target = ev.target, locale = macro.locale;
  4245. var tiddlers = $(target).closest(&quot;.templateContainer&quot;).data(&quot;tiddlers&quot;);
  4246. var popup = $(Popup.create(target)).addClass(&quot;taggedTiddlerList&quot;)[0];
  4247. var value = $(target).attr(&quot;value&quot;);
  4248. var openAll = createTiddlyButton($(&quot;&lt;li /&gt;&quot;).appendTo(popup)[0],
  4249. locale.openAllText.format(value), locale.openAllTooltip,
  4250. function(ev) {
  4251. for(i = 0; i &lt; tiddlers.length; i++) {
  4252. story.displayTiddler(ev.target, tiddlers[i].title);
  4253. }
  4254. });
  4255. var listBreak = $(&quot;&lt;li /&gt;&quot;).addClass(&quot;listBreak&quot;).html(&quot;&lt;div /&gt;&quot;).appendTo(popup);
  4256. for(i = 0; i &lt; tiddlers.length; i++) {
  4257. var item = $(&quot;&lt;li /&gt;&quot;).appendTo(popup)[0];
  4258. var template = store.getTiddlerText(options.template) || macro.template;
  4259. wikify(template, item, null, tiddlers[i]);
  4260. }
  4261. listBreak.clone().appendTo(popup);
  4262. $(createTiddlyLink($(&quot;&lt;li /&gt;&quot;).appendTo(popup)[0], value, false)).
  4263. text(locale.openTiddler.format(value));
  4264. Popup.show();
  4265. ev.stopPropagation();
  4266. return false;
  4267. },
  4268. _refresh: function(container, tiddlers, options) {
  4269. var totalGroups = 0, locale = macro.locale, i, j;
  4270. var excludeValues = options.exclude;
  4271. var values = {}, value_ids = [];
  4272. var field = options.field;
  4273. var morpher = macro.morpher[field] || function(value) {
  4274. return value;
  4275. };
  4276. for(i = 0; i &lt; tiddlers.length; i++) {
  4277. var tiddler = tiddlers[i];
  4278. var value = tiddler[field] || tiddler.fields[field];
  4279. value = macro.isTypeArray(value) ? value : [ value ];
  4280. for(j = 0; j &lt; value.length; j++) {
  4281. var v = morpher(value[j], options);
  4282. if(v &amp;&amp; excludeValues.indexOf(v) === -1) {
  4283. totalGroups += 1;
  4284. if(!values[v]) {
  4285. values[v] = [];
  4286. }
  4287. values[v].push(tiddler);
  4288. value_ids.pushUnique(v);
  4289. }
  4290. }
  4291. }
  4292. var ul = $(&quot;&lt;ul /&gt;&quot;).appendTo(container)[0];
  4293. if(totalGroups === 0) {
  4294. $(&quot;&lt;li /&gt;&quot;).addClass(&quot;listTitle&quot;).text(locale.noTiddlers);
  4295. }
  4296. value_ids = value_ids.sort();
  4297. var groupTemplate = store.getTiddlerText(options.groupTemplate);
  4298. var onClick = function(ev) {
  4299. macro._onClickGroup(ev, options);
  4300. };
  4301. for(i = 0; i &lt; value_ids.length; i++) {
  4302. var title = value_ids[i];
  4303. var info = getTiddlyLinkInfo(title);
  4304. tiddlers = values[title];
  4305. var btn = createTiddlyButton($(&quot;&lt;li /&gt;&quot;).appendTo(ul)[0],
  4306. &quot;%0 (%1)&quot;.format(title, tiddlers.length), locale.tooltip.format(title), null, info.classes);
  4307. if(groupTemplate) {
  4308. $(btn).empty();
  4309. wikify(groupTemplate, btn, null, tiddlers[0]);
  4310. }
  4311. $(btn).click(onClick).attr(&quot;value&quot;, title).attr(&quot;refresh&quot;, &quot;link&quot;).attr(&quot;tiddlyLink&quot;, title);
  4312. $(btn).addClass(&quot;templateContainer&quot;).data(&quot;tiddlers&quot;, tiddlers);
  4313. }
  4314. },
  4315. refresh: function(container) {
  4316. container = $(container).empty();
  4317. var paramString = container.attr(&quot;paramString&quot;);
  4318. var args = paramString.parseParams(&quot;name&quot;, null, true, false, true)[0];
  4319. var options = { field: container.attr(&quot;fieldName&quot;), dateFormat: container.attr(&quot;dateFormat&quot;), exclude: args.exclude || [],
  4320. template: args.template ? args.template[0] : false, groupTemplate: args.groupTemplate ? args.groupTemplate[0] : false };
  4321. var tiddlers = args.filter ? store.filterTiddlers(args.filter[0]) : store.getTiddlers(&quot;title&quot;);
  4322. macro._refresh(container, tiddlers, options);
  4323. },
  4324. template: &quot;&lt;&lt;view title link&gt;&gt;&quot;
  4325. };
  4326. }(jQuery));
  4327. //}}}</pre>
  4328. </div>
  4329. <div title="HandlingPictures" creator="pmario" modifier="pmario" created="201102072057" modified="201102082152" tags="mainMenu" server.title="HandlingPictures" server.page.revision="246715" server.etag="&quot;fancybox_public/HandlingPictures/246715;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="3da297d08675802fc85bf79f29dd5f90fc41281d">
  4330. <pre>I identified 6 different more ore less usefull ways how I would want to manage pictures with TW/TS.
  4331. !Directories (offline)
  4332. *The html file and all pictures are in one directory.
  4333. **fancybox.html
  4334. **01thumb.jpg .. the thumbnail
  4335. **01.jpg .. the picture
  4336. I personally don't like this, because the thumbnails, have to have different names, than the slideshow pictures. On the other hand, there is easy file handling, and no thinking about subdirectory names and so on, is needed.
  4337. *Pictures and thumbs in different directories
  4338. **fancybox.html
  4339. **/thumbs/01.jpg .. the thumbnail
  4340. **/pics/01.jpg .. the picture
  4341. I prefere this type of structure. May be, because I am used to it :)
  4342. !TiddlyWiki / TiddlySpace (online)
  4343. *fancybox.html
  4344. *Binary tiddlers (TS)
  4345. **Includes eg: 01.jpg .. the thumb
  4346. **Needs to references the slideshow picture with a hardcoded prettylink
  4347. **Can't handle offline very well, because the hardcoded slide picture can't be accessed if offline
  4348. **The html file gets very big, because pictures are included. Even if only the thumbs are included.
  4349. **The only advantage, that I found is: http://fancybox-pics.tiddlyspace.com/01.jpg renders a picture.
  4350. For me, using/storing pictures, along with the html file, only makes sense, if a pic is less than 0-5kByte. But in this case, for me there is no need to have ~FancyBoxPlugin, because the pictures are to small.
  4351. !TiddlyWiki / AttachFilePlugin (online)
  4352. *fancybox.html
  4353. **Includes 01.jpg .. the thumb by reference
  4354. **Includes 01slide.jpg .. the picture by reference
  4355. **Handles online / offline very well because of {{{URL}}} and {{{file}}} sections
  4356. **Disadvantage: http://fancybox.tiddlyspace.com/01.jpg doesn't render a picture but a tiddler.
  4357. Using ~AttachFilePluginFormatters is one of the most flexible ways to handle picture/file references. If the plugin is installed, ~FancyBoxPlugin tries to use it whenever possible.
  4358. !Picasa (online)
  4359. Picasa seems to leave the picture name intact. It automatically creates different obfuscated subdirectories for different picture resolutions.
  4360. Similar to Flikr.
  4361. !Flikr
  4362. Flikr obfuscates path and the picture name. I wouldn't want to handle slideshows without ~AttachFilePluginFormatters and propper tiddler names for thumbs and pics.
  4363. You can define {{{[img[PrettyLink|http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_t.jpg][http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_b.jpg]]}}} by hand.
  4364. [img[PrettyLink|http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_t.jpg][http://farm6.static.flickr.com/5096/5421865716_41cf6bbb6b_b.jpg]]&lt;&lt;fancyBox&gt;&gt; FancyBoxPlugin can handle this. But configuration is really painfull. </pre>
  4365. </div>
  4366. <div title="HideWhenPlugin" creator="pmario" modifier="pmario" created="201009181808" modified="201009181808" tags="excludeLists systemConfig" server.title="HideWhenPlugin" server.page.revision="107116" server.etag="&quot;neui-em_public/HideWhenPlugin/107116;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="eeeef41ec5197dbd5ea780bf4ed80df827d5bf23">
  4367. <pre>/***
  4368. |Name:|HideWhenPlugin|
  4369. |Description:|Allows conditional inclusion/exclusion in templates|
  4370. |Version:|3.1 ($Rev: 3919 $)|
  4371. |Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
  4372. |Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
  4373. |Author:|Simon Baird &lt;simon.baird@gmail.com&gt;|
  4374. |License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
  4375. For use in ViewTemplate and EditTemplate. Example usage:
  4376. {{{&lt;div macro=&quot;showWhenTagged Task&quot;&gt;[[TaskToolbar]]&lt;/div&gt;}}}
  4377. {{{&lt;div macro=&quot;showWhen tiddler.modifier == 'BartSimpson'&quot;&gt;&lt;img src=&quot;bart.gif&quot;/&gt;&lt;/div&gt;}}}
  4378. ***/
  4379. //{{{
  4380. window.hideWhenLastTest = false;
  4381. window.removeElementWhen = function(test,place) {
  4382. window.hideWhenLastTest = test;
  4383. if (test) {
  4384. removeChildren(place);
  4385. place.parentNode.removeChild(place);
  4386. }
  4387. };
  4388. merge(config.macros,{
  4389. hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  4390. removeElementWhen( eval(paramString), place);
  4391. }},
  4392. showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  4393. removeElementWhen( !eval(paramString), place);
  4394. }},
  4395. hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
  4396. removeElementWhen( tiddler.tags.containsAll(params), place);
  4397. }},
  4398. showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
  4399. removeElementWhen( !tiddler.tags.containsAll(params), place);
  4400. }},
  4401. hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
  4402. removeElementWhen( tiddler.tags.containsAny(params), place);
  4403. }},
  4404. showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
  4405. removeElementWhen( !tiddler.tags.containsAny(params), place);
  4406. }},
  4407. hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
  4408. removeElementWhen( tiddler.tags.containsAll(params), place);
  4409. }},
  4410. showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
  4411. removeElementWhen( !tiddler.tags.containsAll(params), place);
  4412. }},
  4413. hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  4414. removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
  4415. }},
  4416. showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  4417. removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
  4418. }},
  4419. hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  4420. removeElementWhen( tiddler.title == params[0], place);
  4421. }},
  4422. showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  4423. removeElementWhen( tiddler.title != params[0], place);
  4424. }},
  4425. 'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  4426. removeElementWhen( !window.hideWhenLastTest, place);
  4427. }}
  4428. });
  4429. //}}}
  4430. </pre>
  4431. </div>
  4432. <div title="HowToo's" creator="pmario" modifier="pmario" created="201102111145" modified="201102221846" tags="excludeLists mainMenu topMenu" server.title="HowToo's" server.page.revision="261801" server.etag="&quot;fancybox_public/HowToo's/261801;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.topmenu="0001" _hash="bcdf41544e82d2a279568009689eaf731640300e">
  4433. <pre>!SiteInfo
  4434. &lt;&lt;tiddler SiteInfo&gt;&gt;
  4435. !Important
  4436. @@This plugin is BETA. It is subject to changings, without any notification, so use with care!
  4437. Feedback is very welcome! Use [[Google dicussion group|http://groups.google.com/group/tiddlywiki?hl=en]] for feedback.@@
  4438. !The Plugin
  4439. See: FancyBoxPlugin
  4440. !Simple Examples
  4441. &lt;&lt;xList xCase &quot;sort.&quot; &quot;.&quot; &quot;[tag[simple]]&quot;&gt;&gt;
  4442. !Medium Examples
  4443. &lt;&lt;xList xCase &quot;sort.&quot; &quot;.&quot; &quot;[tag[medium]]&quot;&gt;&gt;
  4444. !Advanced Examples
  4445. &lt;&lt;xList xCase &quot;sort.&quot; &quot;.&quot; &quot;[tag[advanced]]&quot;&gt;&gt;
  4446. </pre>
  4447. </div>
  4448. <div title="ImageGallery" creator="pmario" modifier="pmario" created="201102131915" modified="201102131915" tags="excludeLists excludeSearch" server.title="ImageGallery" server.page.revision="253385" server.etag="&quot;fancybox_public/ImageGallery/253385;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="a25eef3cd215cbba2356b1726821b8006a44a914">
  4449. <pre>!!!Image gallery (ps, try using mouse scroll wheel)
  4450. &lt;&lt;fancyBox 01.jpg 13.jpg 11.jpg label:&quot;San Benedicto Island&quot; label:&quot;Cool Cave&quot; label:Sunset defaults:&quot;DirectoryConfig##Defaults&quot; fancy:&quot;ImageGallery##Fancy&quot;&gt;&gt;
  4451. /%
  4452. !Fancy
  4453. {{{
  4454. opacity: true
  4455. // When true, transparency of content is changed for elastic transitions
  4456. titlePosition: over
  4457. // The position of title. Can be set to 'outside', 'inside' or 'over'
  4458. transitionIn: elastic
  4459. transitionOut: elastic
  4460. // The transition type. Can be set to 'elastic', 'fade' or 'none'
  4461. }}}
  4462. %/</pre>
  4463. </div>
  4464. <div title="ImageMacroPlugin" creator="jon" modifier="jon" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="ImageMacroPlugin" server.page.revision="257481" server.etag="&quot;tiddlyspace/ImageMacroPlugin/257481;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/tiddlyspace" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="tiddlyspace" server.permissions="read" server.content-type="text/javascript" _hash="7ac98c809c2ebbd539043f0f67fa3fed2cb296a6">
  4465. <pre>/***
  4466. |''Name''|ImageMacroPlugin|
  4467. |''Version''|0.9.31|
  4468. |''Description''|Allows the rendering of svg images in a TiddlyWiki|
  4469. |''Author''|Osmosoft|
  4470. |''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
  4471. |''Notes''|Currently only works in modern browsers (not IE)|
  4472. |''Requires''|BinaryTiddlersPlugin|
  4473. !Usage
  4474. {{{&lt;&lt;image SVG&gt;&gt;}}} will render the text of the tiddler with title SVG as an SVG image (but not in ie where it will fail silently)
  4475. !!Parameters
  4476. width/height: specify width/height parameters
  4477. link: make the image link to a given location
  4478. tiddlyLink: link to a tiddler
  4479. !Notes
  4480. Binary tiddlers in TiddlyWeb when passed through the wikifier will be shown as images.
  4481. eg. {{{&lt;&lt;view text wikified&gt;&gt;}}} on a binary tiddler will show the image.
  4482. {{{&lt;&lt;view fieldname image&gt;&gt;}}}
  4483. will render the value of the tiddler field 'fieldname' as an image. This field can contain a tid
  4484. {{{&lt;&lt;image SiteIcon&gt;&gt;}}}
  4485. will create an image tag where the tiddler has content type beginning image and not ending +xml
  4486. will attempt to create svg object in other scenarios
  4487. {{{&lt;&lt;image /photos/x.jpg&gt;&gt;}}}
  4488. will create an image tag with src /photos/x.jpg as long as there is not a tiddler called /photos/x.jpg in
  4489. which case it will render that tiddler as an image. Note for the case of svg files it will attempt to render as an svg if possible via the image
  4490. tag. It doesn't embed the svg in the dom for security reasons as svg code can contain javascript.
  4491. !Code
  4492. ***/
  4493. //{{{
  4494. (function($) {
  4495. var macro = config.macros.image = {
  4496. shim: &quot;/bags/common/tiddlers/shim&quot;,
  4497. ieVersion: config.browser.isIE ? parseInt(config.browser.ieVersion[1], 10) : false,
  4498. svgns: &quot;http://www.w3.org/2000/svg&quot;,
  4499. xlinkns: &quot;http://www.w3.org/1999/xlink&quot;,
  4500. svgAvailable: document.implementation.hasFeature(&quot;http://www.w3.org/TR/SVG11/feature#BasicStructure&quot;, &quot;1.1&quot;),
  4501. _fixPrefix: 1,
  4502. _external_cache: {},
  4503. _image_tag_cache: {},
  4504. _image_dimensions: {},
  4505. locale: {
  4506. badImage: &quot;This image cannot be displayed.&quot;
  4507. },
  4508. handler: function(place, macroName, params, wikifier, paramString, tiddler){
  4509. var imageSource = params[0];
  4510. // collect named arguments
  4511. var args = macro.getArguments(paramString, params);
  4512. this.renderImage(place, imageSource, args);
  4513. },
  4514. init: function() {
  4515. var startupImages = store.getTaggedTiddlers(&quot;systemImage&quot;);
  4516. var place = $(&quot;&lt;div /&gt;&quot;).attr(&quot;id&quot;, &quot;systemImageArea&quot;).appendTo(&quot;body&quot;).hide()[0];
  4517. for(var i = 0; i &lt; startupImages.length; i++) {
  4518. var image = startupImages[i];
  4519. macro.renderImage(place, image.title, { idPrefix: &quot;&quot; });
  4520. }
  4521. var data = new Image();
  4522. data.onload = function() {
  4523. macro.supportsDataUris = this.width != 1 || this.height != 1 ? false : true;
  4524. };
  4525. data.onerror = data.onload;
  4526. data.src = &quot;data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==&quot;;
  4527. },
  4528. refreshImage: function(src) {
  4529. var elements = macro._image_tag_cache[src] ? macro._image_tag_cache[src] : [];
  4530. if(macro._image_dimensions[src]) {
  4531. macro._image_dimensions[src] = false;
  4532. }
  4533. for(var i = 0; i &lt; elements.length; i++) {
  4534. var el = $(elements[i]);
  4535. var newSrc = &quot;%0?nocache=%1&quot;.format(src, Math.random());
  4536. el.attr(&quot;src&quot;, newSrc); // force reload
  4537. }
  4538. },
  4539. isBinaryImageType: function(contentType) {
  4540. return (contentType &amp;&amp; contentType.indexOf(&quot;image&quot;) === 0 &amp;&amp;
  4541. contentType.indexOf(&quot;+xml&quot;) != contentType.length - 4) ? true : false;
  4542. },
  4543. isImageTiddler: function(tiddler) {
  4544. return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
  4545. },
  4546. isSVGTiddler: function(tiddler) {
  4547. var type = tiddler ? tiddler.fields['server.content-type'] : false;
  4548. return type == &quot;image/svg+xml&quot;;
  4549. },
  4550. isBinaryImageTiddler: function(tiddler) {
  4551. return macro.isBinaryImageType(tiddler.fields['server.content-type']);
  4552. },
  4553. renderImage: function(place, imageSource, options) {
  4554. var imageTiddler = store.getTiddler(imageSource);
  4555. var container;
  4556. var classes = [&quot;image&quot;];
  4557. if(options.link) {
  4558. classes = classes.concat([&quot;imageLink&quot;, &quot;externalLink&quot;]);
  4559. container = $(&quot;&lt;a /&gt;&quot;).attr(&quot;href&quot;, options.link).appendTo(place)[0];
  4560. } else if(options.tiddlyLink) {
  4561. classes.push(&quot;imageLink&quot;);
  4562. container = createTiddlyLink(place, options.tiddlyLink, false);
  4563. } else {
  4564. container = $(&quot;&lt;span /&gt;&quot;).appendTo(place)[0];
  4565. }
  4566. $(container).addClass(classes.join(&quot; &quot;));
  4567. options = options ? options : {};
  4568. if(imageTiddler &amp;&amp; macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
  4569. return macro._renderBinaryImageTiddler(container, imageTiddler, options);
  4570. } else if(imageTiddler){ // handle the case where we have a tiddler
  4571. return macro._renderSVGTiddler(container, imageTiddler, options);
  4572. } else { // we have a string representing a url
  4573. return macro._renderBinaryImageUrl(container, imageSource, options);
  4574. }
  4575. },
  4576. _renderAlternateText: function(container, options) {
  4577. var img;
  4578. var src = options.src || &quot;&quot;;
  4579. if(options.width &amp;&amp; options.height) {
  4580. img = $(&quot;&lt;img /&gt;&quot;).attr(&quot;src&quot;, src).addClass(&quot;svgImageText&quot;).attr(&quot;width&quot;, options.width).
  4581. attr(&quot;height&quot;, options.height).appendTo(container);
  4582. }
  4583. var alt = options.alt;
  4584. if(img &amp;&amp; alt) {
  4585. img.attr(&quot;alt&quot;, alt).attr(&quot;title&quot;, alt);
  4586. } else if(alt) {
  4587. $(container).addClass(&quot;svgImageText&quot;).text(alt);
  4588. }
  4589. macro._image_tag_cache[src] = img;
  4590. },
  4591. _renderSVGTiddler: function(place, tiddler, options) {
  4592. if(!options) {
  4593. options = {};
  4594. }
  4595. merge(options, { tiddler: tiddler, fix: true});
  4596. if(macro.svgAvailable) {
  4597. this._importSVG(place, options); // display the svg
  4598. } else if(options.altImage) {
  4599. var image = options.altImage;
  4600. delete options.altImage;
  4601. this._renderBinaryImageUrl(place, image, options);
  4602. } else {
  4603. this._renderAlternateText(place, options); // instead of showing the image show the alternate text.
  4604. }
  4605. },
  4606. _renderBinaryImageTiddler: function(place, tiddler, options) {
  4607. var resourceURI;
  4608. var fields = tiddler.fields;
  4609. if(fields[&quot;server.type&quot;] == &quot;tiddlyweb&quot;) { // construct an accurate url for the resource
  4610. resourceURI = &quot;%0/%1/tiddlers/%2&quot;.format(config.defaultCustomFields[&quot;server.host&quot;],
  4611. fields[&quot;server.workspace&quot;], fields[&quot;server.title&quot;]);
  4612. } else { // guess the url for the resource
  4613. resourceURI = tiddler.title;
  4614. }
  4615. var ctype = fields[&quot;server.content-type&quot;] || tiddler.type;
  4616. var text = tiddler.text;
  4617. if(macro.supportsDataUris &amp;&amp; ctype &amp;&amp; text.indexOf(&quot;&lt;html&quot;) == -1) {
  4618. var uri = &quot;data:%0;base64,%1&quot;.format(ctype, text);
  4619. options.src = resourceURI;
  4620. return macro._renderBinaryImageUrl(place, uri, options);
  4621. } else if(options.src) {
  4622. return macro._renderBinaryImageUrl(place, options.src, options);
  4623. } else {
  4624. return macro._renderBinaryImageUrl(place, resourceURI, options);
  4625. }
  4626. },
  4627. _renderImageTag: function(container, src, width, height, options) {
  4628. var img;
  4629. img = $(&quot;&lt;img /&gt;&quot;).appendTo(container);
  4630. if(height) {
  4631. img.attr(&quot;height&quot;, height);
  4632. }
  4633. if(width) {
  4634. img.attr(&quot;width&quot;, width);
  4635. }
  4636. if(macro.ieVersion &amp;&amp; macro.ieVersion &lt; 7 &amp;&amp; macro.shim &amp;&amp; options.ie6png) {
  4637. $(img).css({width: userW, height: userH,
  4638. filter: &quot;progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%0', sizingMethod='scale')&quot;.format(src)
  4639. }).attr(&quot;src&quot;, macro.shim);
  4640. } else {
  4641. img.attr(&quot;src&quot;, src);
  4642. }
  4643. if(!macro._image_tag_cache[options.srcUrl]) {
  4644. macro._image_tag_cache[options.srcUrl] = [];
  4645. }
  4646. img = $(img).addClass(options.imageClass)[0];
  4647. macro._image_tag_cache[options.srcUrl].push(img);
  4648. return img;
  4649. },
  4650. _getDimensions: function(realDimensions, reqDimensions, preserve) {
  4651. var w = realDimensions.width;
  4652. var h = realDimensions.height;
  4653. var reqh = reqDimensions.height;
  4654. var reqw = reqDimensions.width;
  4655. var finalw = w, finalh = h;
  4656. var ratiow = reqw / w, ratioh = reqh / h;
  4657. var scaledw = ratioh * w;
  4658. var scaledh = ratiow * h;
  4659. if(!reqw &amp;&amp; reqh) {
  4660. finalw = scaledw;
  4661. finalh = reqh;
  4662. } else if(reqw &amp;&amp; !reqh) {
  4663. finalw = reqw;
  4664. finalh = scaledh;
  4665. } else if(reqh &amp;&amp; reqw) {
  4666. var preserveWidth = w &gt; h ? true : false;
  4667. if(preserve) {
  4668. if(preserveWidth &amp;&amp; scaledh &lt; reqh) {
  4669. finalh = scaledh;
  4670. finalw = reqw;
  4671. } else {
  4672. finalh = reqh;
  4673. finalw = scaledw;
  4674. }
  4675. } else {
  4676. finalw = reqw;
  4677. finalh = reqh;
  4678. }
  4679. }
  4680. return { width: parseInt(finalw, 10), height: parseInt(finalh, 10) };
  4681. },
  4682. _renderBinaryImageUrl: function(container, src, options) {
  4683. var srcUrl = options.src ? options.src : src;
  4684. srcUrl = srcUrl.indexOf(&quot;/&quot;) === -1 ? &quot;/%0&quot;.format(srcUrl) : srcUrl; // for IE.
  4685. var image_dimensions = macro._image_dimensions[srcUrl];
  4686. var image = new Image(); // due to weird scaling issues where you use just a width or just a height
  4687. var createImageTag = function(dimensions, error) {
  4688. if(error) {
  4689. var altImage = options.altImage;
  4690. if(altImage) {
  4691. delete options.altImage;
  4692. macro._renderBinaryImageUrl(container, altImage, options);
  4693. } else {
  4694. options.src = src;
  4695. macro._renderAlternateText(container, options);
  4696. }
  4697. } else {
  4698. var dim = macro._getDimensions(dimensions, {
  4699. width: options.width, height: options.height }, options.preserveAspectRatio);
  4700. options.srcUrl = srcUrl;
  4701. macro._renderImageTag(container, src, dim.width, dim.height, options);
  4702. }
  4703. };
  4704. if(!image_dimensions) {
  4705. image.onload = function() {
  4706. var dimensions = { width: image.width, height: image.height};
  4707. macro._image_dimensions[srcUrl] = dimensions;
  4708. createImageTag(dimensions);
  4709. };
  4710. image.onerror = function() {
  4711. createImageTag(null, true);
  4712. };
  4713. image.src = src;
  4714. } else {
  4715. createImageTag(image_dimensions);
  4716. }
  4717. },
  4718. _generateIdPrefix: function(){
  4719. return &quot;twsvgfix_&quot; + (this._fixPrefix++).toString() + &quot;_&quot;;
  4720. },
  4721. _fixSVG: function(childNodes, idPrefix) {
  4722. var urlPattern = /url\(\#([^\)]*)\)*/ig;
  4723. var fixes = [
  4724. { attr: &quot;id&quot;, pattern: /^(.*)$/ig },
  4725. { attr: &quot;href&quot;, namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
  4726. ];
  4727. var url_fixes = [&quot;filter&quot;, &quot;fill&quot;, &quot;mask&quot;, &quot;stroke&quot;, &quot;style&quot;];
  4728. for(var i = 0; i &lt; url_fixes.length; i++) {
  4729. fixes.push({ attr: url_fixes[i], pattern: urlPattern });
  4730. }
  4731. for(var t = 0; t &lt; childNodes.length; t++) {
  4732. var node = childNodes[t];
  4733. for(var a = 0; a &lt; fixes.length; a++) {
  4734. var fix = fixes[a];
  4735. var attr = fix.attr;
  4736. var ns = fix.namespace || &quot;&quot;;
  4737. if(node.hasAttributeNS &amp;&amp; node.hasAttributeNS(ns, attr)) {
  4738. var v = node.getAttributeNS(ns, attr);
  4739. fix.pattern.lastIndex = 0;
  4740. var match = fix.pattern.exec(v);
  4741. if(match) {
  4742. // Make sure replacement string doesn't contain any single dollar signs
  4743. var toReplace = match[1];
  4744. if(toReplace.indexOf(idPrefix) !== 0 &amp;&amp; toReplace.indexOf(&quot;twglobal_&quot;) !== 0) {
  4745. var replacement = (idPrefix + toReplace).replace(&quot;$&quot;, &quot;$$$$&quot;);
  4746. v = v.replace(match[1], replacement);
  4747. }
  4748. node.setAttributeNS(ns, attr,v);
  4749. }
  4750. }
  4751. }
  4752. var children = node.childNodes;
  4753. if(children.length &gt; 0) {
  4754. this._fixSVG(children, idPrefix);
  4755. }
  4756. }
  4757. },
  4758. _importSVG: function(place, options){
  4759. options = options ? options : {};
  4760. var svgDoc, tiddlerText = options.tiddler.text;
  4761. if (window.DOMParser) {
  4762. svgDoc = new DOMParser().parseFromString(tiddlerText, &quot;application/xml&quot;).documentElement;
  4763. var idPrefix = options.idPrefix || this._generateIdPrefix();
  4764. this._fixSVG([svgDoc], idPrefix);
  4765. var el = document.importNode(svgDoc, true);
  4766. var svgHolder = document.createElementNS(macro.svgns,&quot;svg&quot;);
  4767. var width = options.width;
  4768. var height = options.height;
  4769. if(width || height) {
  4770. if(width &amp;&amp; height) { // set view box of containing svg element based on the svg viewbox and width and height.
  4771. var viewBox = el.getAttribute(&quot;viewBox&quot;);
  4772. var topLeft = &quot;0 0&quot;;
  4773. if(viewBox) {
  4774. topLeft = viewBox.replace(/([0-9]*) +([0-9]*) +([0-9]*) +([0-9]*) */gi,&quot;$1 $2&quot;);
  4775. }
  4776. svgHolder.setAttributeNS(macro.svgns, &quot;viewBox&quot;, &quot;0 0 %0 %1&quot;.format(width, height));
  4777. } else {
  4778. if(!width) {
  4779. width = el.getAttribute(&quot;width&quot;);
  4780. }
  4781. if(!height) {
  4782. height = el.getAttribute(&quot;height&quot;);
  4783. }
  4784. }
  4785. svgHolder.setAttribute(&quot;width&quot;, width);
  4786. svgHolder.setAttribute(&quot;height&quot;, height);
  4787. el.setAttribute(&quot;width&quot;, &quot;100%&quot;);
  4788. el.setAttribute(&quot;height&quot;, &quot;100%&quot;);
  4789. svgHolder.setAttribute(&quot;class&quot;, &quot;svgImage svgIcon %0&quot;.format(options.imageClass || &quot;&quot;));
  4790. svgHolder.appendChild(el);
  4791. place.appendChild(svgHolder);
  4792. }
  4793. else {
  4794. var existing = el.className ? el.className.baseVal : &quot;&quot;;
  4795. el.setAttribute(&quot;class&quot;,&quot;svgImage %0&quot;.format(existing));
  4796. place.appendChild(el);
  4797. }
  4798. // if a tiddler attribute is set this is read as a link
  4799. $(&quot;[tiddler], [tiddlyLink]&quot;, place).attr(&quot;refresh&quot;, &quot;link&quot;).click(function(ev) {
  4800. var tiddler = $(ev.target).attr(&quot;tiddlyLink&quot;);
  4801. if(tiddler) {
  4802. story.displayTiddler(ev.target, tiddler);
  4803. }
  4804. });
  4805. }
  4806. },
  4807. getArguments: function(paramString, params) {
  4808. var args = paramString.parseParams(&quot;name&quot;, null, true, false, true)[0];
  4809. var options = {};
  4810. for(var id in args) {
  4811. if(true) {
  4812. var p = args[id];
  4813. if(id == &quot;def&quot;) {
  4814. options[id] = p;
  4815. } else {
  4816. options[id] = p[0];
  4817. }
  4818. }
  4819. }
  4820. var width = isNaN(params[1]) ? false : parseInt(params[1], 10);
  4821. var height = isNaN(params[2]) ? false : parseInt(params[2], 10);
  4822. options.width = macro.lookupArgument(options, &quot;width&quot;, width);
  4823. options.height = macro.lookupArgument(options, &quot;height&quot;, height);
  4824. options.preserveAspectRatio = args.preserveAspectRatio &amp;&amp;
  4825. args.preserveAspectRatio[0] == &quot;yes&quot; ? true : false;
  4826. options.tiddlyLink = macro.lookupArgument(options, &quot;tiddlyLink&quot;, false);
  4827. options.link = macro.lookupArgument(options, &quot;link&quot;, false);
  4828. return options;
  4829. },
  4830. lookupArgument: function(args, id, ifEmpty) {
  4831. return args[id] ? args[id] : ifEmpty;
  4832. }
  4833. };
  4834. // update views
  4835. var _oldwikifiedview = config.macros.view.views.wikified;
  4836. // update wikifier to check tiddler type before rendering
  4837. merge(config.macros.view.views, {
  4838. wikified: function(value, place, params, wikifier, paramString, tiddler) {
  4839. if(macro.isImageTiddler(tiddler) &amp;&amp; params[0] == &quot;text&quot;) {
  4840. var newplace = $(&quot;&lt;div /&gt;&quot;).addClass(&quot;wikifiedImage&quot;).appendTo(place)[0];
  4841. macro.renderImage(newplace, tiddler.title, { alt: macro.locale.badImage });
  4842. } else {
  4843. _oldwikifiedview.apply(this, arguments);
  4844. }
  4845. },
  4846. image: function(value, place, params, wikifier, paramString, tiddler) {
  4847. // a field can point to another tiddler whereas text is the current tiddler.
  4848. var title = params[0] == &quot;text&quot; ? tiddler.title : value;
  4849. paramString = '&quot;%0&quot; %1'.format(title, params.splice(2).join(&quot; &quot;))
  4850. invokeMacro(place, &quot;image&quot;, paramString, null, tiddler);
  4851. }
  4852. });
  4853. config.shadowTiddlers.StyleSheetImageMacro = [&quot;.wikifiedImage svg, .wikifiedImage .image { width: 80%; }&quot;,
  4854. &quot;.svgImageText { background-color:[[ColorPalette::Error]]; color:#ddd; display: inline-block; }&quot;,
  4855. &quot;span.svgImageText { display: inline-block; overflow-hidden; }&quot;
  4856. ].join(&quot;&quot;);
  4857. store.addNotification(&quot;StyleSheetImageMacro&quot;, refreshStyles);
  4858. })(jQuery);
  4859. //}}}</pre>
  4860. </div>
  4861. <div title="InlineJavascriptPlugin" creator="fancybox" modifier="fancybox" created="201101211613" modified="201101211613" tags="systemConfig" server.title="InlineJavascriptPlugin" server.page.revision="47596" server.etag="&quot;fancybox_public/InlineJavascriptPlugin/47596;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="e6eb7b04f212984224b56844ab61a2a0ca1c981e">
  4862. <pre>/***
  4863. |Name|InlineJavascriptPlugin|
  4864. |Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
  4865. |Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
  4866. |Version|1.9.6|
  4867. |Author|Eric Shulman|
  4868. |License|http://www.TiddlyTools.com/#LegalStatements|
  4869. |~CoreVersion|2.1|
  4870. |Type|plugin|
  4871. |Description|Insert Javascript executable code directly into your tiddler content.|
  4872. ''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
  4873. !!!!!Documentation
  4874. &gt;see [[InlineJavascriptPluginInfo]]
  4875. !!!!!Revisions
  4876. &lt;&lt;&lt;
  4877. 2010.12.15 1.9.6 allow (but ignore) type=&quot;...&quot; syntax
  4878. |please see [[InlineJavascriptPluginInfo]] for additional revision details|
  4879. 2005.11.08 1.0.0 initial release
  4880. &lt;&lt;&lt;
  4881. !!!!!Code
  4882. ***/
  4883. //{{{
  4884. version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 6, date: new Date(2010,12,15)};
  4885. config.formatters.push( {
  4886. name: &quot;inlineJavascript&quot;,
  4887. match: &quot;\\&lt;script&quot;,
  4888. lookahead: &quot;\\&lt;script(?: type=\\\&quot;[^\\\&quot;]*\\\&quot;)?(?: src=\\\&quot;([^\\\&quot;]*)\\\&quot;)?(?: label=\\\&quot;([^\\\&quot;]*)\\\&quot;)?(?: title=\\\&quot;([^\\\&quot;]*)\\\&quot;)?(?: key=\\\&quot;([^\\\&quot;]*)\\\&quot;)?( show)?\\&gt;((?:.|\\n)*?)\\&lt;/script\\&gt;&quot;,
  4889. handler: function(w) {
  4890. var lookaheadRegExp = new RegExp(this.lookahead,&quot;mg&quot;);
  4891. lookaheadRegExp.lastIndex = w.matchStart;
  4892. var lookaheadMatch = lookaheadRegExp.exec(w.source)
  4893. if(lookaheadMatch &amp;&amp; lookaheadMatch.index == w.matchStart) {
  4894. var src=lookaheadMatch[1];
  4895. var label=lookaheadMatch[2];
  4896. var tip=lookaheadMatch[3];
  4897. var key=lookaheadMatch[4];
  4898. var show=lookaheadMatch[5];
  4899. var code=lookaheadMatch[6];
  4900. if (src) { // external script library
  4901. var script = document.createElement(&quot;script&quot;); script.src = src;
  4902. document.body.appendChild(script); document.body.removeChild(script);
  4903. }
  4904. if (code) { // inline code
  4905. if (show) // display source in tiddler
  4906. wikify(&quot;{{{\n&quot;+lookaheadMatch[0]+&quot;\n}}}\n&quot;,w.output);
  4907. if (label) { // create 'onclick' command link
  4908. var link=createTiddlyElement(w.output,&quot;a&quot;,null,&quot;tiddlyLinkExisting&quot;,wikifyPlainText(label));
  4909. var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
  4910. link.code=&quot;function _out(place,tiddler){&quot;+fixup+&quot;\n};_out(this,this.tiddler);&quot;
  4911. link.tiddler=w.tiddler;
  4912. link.onclick=function(){
  4913. this.bufferedHTML=&quot;&quot;;
  4914. try{ var r=eval(this.code);
  4915. if(this.bufferedHTML.length || (typeof(r)===&quot;string&quot;)&amp;&amp;r.length)
  4916. var s=this.parentNode.insertBefore(document.createElement(&quot;span&quot;),this.nextSibling);
  4917. if(this.bufferedHTML.length)
  4918. s.innerHTML=this.bufferedHTML;
  4919. if((typeof(r)===&quot;string&quot;)&amp;&amp;r.length) {
  4920. wikify(r,s,null,this.tiddler);
  4921. return false;
  4922. } else return r!==undefined?r:false;
  4923. } catch(e){alert(e.description||e.toString());return false;}
  4924. };
  4925. link.setAttribute(&quot;title&quot;,tip||&quot;&quot;);
  4926. var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
  4927. URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
  4928. URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
  4929. link.setAttribute(&quot;href&quot;,URIcode);
  4930. link.style.cursor=&quot;pointer&quot;;
  4931. if (key) link.accessKey=key.substr(0,1); // single character only
  4932. }
  4933. else { // run script immediately
  4934. var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
  4935. var c=&quot;function _out(place,tiddler){&quot;+fixup+&quot;\n};_out(w.output,w.tiddler);&quot;;
  4936. try { var out=eval(c); }
  4937. catch(e) { out=e.description?e.description:e.toString(); }
  4938. if (out &amp;&amp; out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
  4939. }
  4940. }
  4941. w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
  4942. }
  4943. }
  4944. } )
  4945. //}}}
  4946. // // Backward-compatibility for TW2.1.x and earlier
  4947. //{{{
  4948. if (typeof(wikifyPlainText)==&quot;undefined&quot;) window.wikifyPlainText=function(text,limit,tiddler) {
  4949. if(limit &gt; 0) text = text.substr(0,limit);
  4950. var wikifier = new Wikifier(text,formatter,null,tiddler);
  4951. return wikifier.wikifyPlain();
  4952. }
  4953. //}}}
  4954. // // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
  4955. //{{{
  4956. if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
  4957. //}}}</pre>
  4958. </div>
  4959. <div title="LazyTiddlersPlugin" creator="cdent" modifier="cdent" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="LazyTiddlersPlugin" server.page.revision="257449" server.etag="&quot;system/LazyTiddlersPlugin/257449;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system" server.permissions="read" server.content-type="text/javascript" _hash="ff4cbdc610912a4d414585fec3b272c9ab02fafb">
  4960. <pre>/***
  4961. |''Requires''|TiddlyWebConfig|
  4962. ***/
  4963. //{{{
  4964. (function($) {
  4965. var callback = function(context, userParams) {
  4966. if(!context.status) {
  4967. return; // XXX: oughta do something
  4968. }
  4969. var tiddler = context.tiddler;
  4970. var dirty = store.isDirty();
  4971. store.setDirty(false);
  4972. store.saveTiddler(tiddler.title, tiddler.title, tiddler.text,
  4973. tiddler.modifier, tiddler.modified, tiddler.tgags, tiddler.fields,
  4974. true, tiddler.created, tiddler.creator);
  4975. store.setDirty(dirty);
  4976. };
  4977. try {
  4978. var tiddler = store.getTiddler('LazyTiddlers');
  4979. var adaptor = tiddler.getAdaptor();
  4980. var tiddlers = tiddler.text.split(&quot;\n&quot;);
  4981. var host = adaptor.fullHostName(tiddler.fields[&quot;server.host&quot;]);
  4982. $.each(tiddlers, function(i, tiddler) {
  4983. var tiddler_info = tiddler.split(&quot;:&quot;);
  4984. var bag = tiddler_info.shift();
  4985. var title = tiddler_info.join(&quot;:&quot;);
  4986. var context = {workspace: &quot;bags/&quot; + bag, host: host};
  4987. adaptor.getTiddler(title, context, null, callback);
  4988. });
  4989. } catch(err) {} // Unable to get LazyTiddlers, don't do anything
  4990. })(jQuery);
  4991. //}}}</pre>
  4992. </div>
  4993. <div title="LessBackupsPlugin" creator="pmario" modifier="pmario" created="201102072057" modified="201102072057" tags="systemConfig" server.title="LessBackupsPlugin" server.page.revision="245605" server.etag="&quot;fancybox_public/LessBackupsPlugin/245605;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="4284d5f1f0babbb7b452b404d8d478ad426d7f8f">
  4994. <pre>/***
  4995. |Name:|LessBackupsPlugin|
  4996. |Description:|Intelligently limit the number of backup files you create|
  4997. |Version:|3.0.1 ($Rev: 2320 $)|
  4998. |Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
  4999. |Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
  5000. |Author:|Simon Baird|
  5001. |Email:|simon.baird@gmail.com|
  5002. |License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
  5003. !!Description
  5004. 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
  5005. !!Notes
  5006. Works in IE and Firefox only. Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
  5007. ***/
  5008. //{{{
  5009. var MINS = 60 * 1000;
  5010. var HOURS = 60 * MINS;
  5011. var DAYS = 24 * HOURS;
  5012. if (!config.lessBackups) {
  5013. config.lessBackups = {
  5014. // comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
  5015. modes: [
  5016. [&quot;YYYY&quot;, 365*DAYS], // one per year for ever
  5017. [&quot;MMM&quot;, 31*DAYS], // one per month
  5018. [&quot;ddd&quot;, 7*DAYS], // one per weekday
  5019. //[&quot;d0DD&quot;, 1*DAYS], // one per day of month
  5020. [&quot;h0hh&quot;, 24*HOURS], // one per hour
  5021. [&quot;m0mm&quot;, 1*HOURS], // one per minute
  5022. [&quot;s0ss&quot;, 1*MINS], // one per second
  5023. [&quot;latest&quot;,0] // always keep last version. (leave this).
  5024. ]
  5025. };
  5026. }
  5027. window.getSpecialBackupPath = function(backupPath) {
  5028. var now = new Date();
  5029. var modes = config.lessBackups.modes;
  5030. for (var i=0;i&lt;modes.length;i++) {
  5031. // the filename we will try
  5032. var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
  5033. '$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')
  5034. // open the file
  5035. try {
  5036. if (config.browser.isIE) {
  5037. var fsobject = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;)
  5038. var fileExists = fsobject.FileExists(specialBackupPath);
  5039. if (fileExists) {
  5040. var fileObject = fsobject.GetFile(specialBackupPath);
  5041. var modDate = new Date(fileObject.DateLastModified).valueOf();
  5042. }
  5043. }
  5044. else {
  5045. netscape.security.PrivilegeManager.enablePrivilege(&quot;UniversalXPConnect&quot;);
  5046. var file = Components.classes[&quot;@mozilla.org/file/local;1&quot;].createInstance(Components.interfaces.nsILocalFile);
  5047. file.initWithPath(specialBackupPath);
  5048. var fileExists = file.exists();
  5049. if (fileExists) {
  5050. var modDate = file.lastModifiedTime;
  5051. }
  5052. }
  5053. }
  5054. catch(e) {
  5055. // give up
  5056. return backupPath;
  5057. }
  5058. // expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
  5059. // June file on disk that's more than an month old then it must be stale so overwrite
  5060. // note that &quot;latest&quot; should be always written because the expiration period is zero (see above)
  5061. var expiry = new Date(modDate + modes[i][1]);
  5062. if (!fileExists || now &gt; expiry)
  5063. return specialBackupPath;
  5064. }
  5065. }
  5066. // hijack the core function
  5067. window.getBackupPath_mptw_orig = window.getBackupPath;
  5068. window.getBackupPath = function(localPath) {
  5069. return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
  5070. }
  5071. //}}}
  5072. </pre>
  5073. </div>
  5074. <div title="LightBlue" creator="pmario" modifier="pmario" created="201011081321" modified="201011081322" tags="excludeLists systemPalette" server.title="LightBlue" server.page.revision="107118" server.etag="&quot;neui-em_public/LightBlue/107118;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="f8ab9a39a816a5549f388cf1f48e9f4b3abaccd6">
  5075. <pre>/*{{{*/
  5076. Background: #e3eaf2
  5077. Foreground: #0c141b
  5078. PrimaryPale: #ffffff
  5079. PrimaryLight: #adc3d9
  5080. PrimaryMid: #5b87b3
  5081. PrimaryDark: #0a0f15
  5082. SecondaryPale: #ffffff
  5083. SecondaryLight: #bed9ad
  5084. SecondaryMid: #7eb35b
  5085. SecondaryDark: #0e150a
  5086. TertiaryPale: #ffffff
  5087. TertiaryLight: #d9adc7
  5088. TertiaryMid: #b35b90
  5089. TertiaryDark: #150a11
  5090. Error: #f88
  5091. ColorPaletteParameters: HSL([210|66], [0.36509835156374804],[0.06232365550379004|1])
  5092. /*}}}*/</pre>
  5093. </div>
  5094. <div title="Like" creator="pmario" modifier="pmario" created="201011042131" modified="201011042131" tags="TopMenu" server.title="Like" server.page.revision="107119" server.etag="&quot;neui-em_public/Like/107119;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="9dcd4d4405f667f5980e4e9d8259ae3289ee79a1">
  5095. <pre>!You like the ~Neui-em stuff?
  5096. #Create a tiddler named &quot;~@neui-em&quot;
  5097. #Tag this tiddler &quot;like&quot;
  5098. !!Who likes Neui-em theme
  5099. &lt;&lt;tsScan @neui-em tag:like fat:y template:&quot;Like##like&quot;&gt;&gt;
  5100. !Important
  5101. This tiddler should contain the activity macro which is part of the @following space.
  5102. If you want to use it, you need to go to backstage and include it.
  5103. /%
  5104. !like
  5105. &lt;&lt;image http://$1.tiddlyspace.com/bags/$1_public/tiddlers/SiteIcon 24 24&gt;&gt; @$1 likes FreeStyle suff :)
  5106. &lt;&lt;&lt;
  5107. &lt;&lt;view text text&gt;&gt;
  5108. &lt;&lt;&lt;
  5109. !end
  5110. %/</pre>
  5111. </div>
  5112. <div title="MainMenu" creator="pmario" modifier="pmario" created="201008061923" modified="201010181655" server.title="MainMenu" server.page.revision="107126" server.etag="&quot;neui-em_public/MainMenu/107126;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="2605c5887329b618d8cc0329c20c5c09cbcbf79e">
  5113. <pre>{{noBullets{&lt;&lt;xList xCase &quot;sort.&quot; &quot;.&quot; &quot;[tag[mainMenu]]&quot;&gt;&gt;}}}/%
  5114. see the descriptions about the above at: http://apm-plugins.tiddlyspot.com/#StylingPackage.
  5115. have fun!
  5116. -m
  5117. %/</pre>
  5118. </div>
  5119. <div title="ManualCalls" creator="pmario" modifier="pmario" created="201102131915" modified="201102261446" tags="excludeLists excludeSearch" server.title="ManualCalls" server.page.revision="256016" server.etag="&quot;fancybox_public/ManualCalls/256016;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="18e75fce2a4ff0f58c1b3c407798397f8d720bac" changecount="2">
  5120. <pre>!!!Manual Calls Button
  5121. &lt;&lt;fancyBox button:&quot;click me&quot; tag:manual index:1 fancy:&quot;SlideShowConfig##Fancy&quot; defaults:&quot;SlideShowConfig##Default&quot;&gt;&gt;
  5122. !!!Manual Call Picture Button
  5123. {{trImageBackground{&lt;&lt;fancyBox imageButton:&quot;[img[Mexico|Stack.png]]&quot; tag:manual fancy:&quot;SlideShowConfig##Fancy&quot; defaults:&quot;SlideShowConfig##Default&quot;&gt;&gt;}}}
  5124. </pre>
  5125. </div>
  5126. <div title="MarkupPostBody" creator="pmario" modifier="pmario" created="201102072300" modified="201102072300" server.title="MarkupPostBody" server.page.revision="245737" server.etag="&quot;fancybox_private/MarkupPostBody/245737;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="d7048b5083b0669942cb6ea5671feedda643d5ef">
  5127. <pre>&lt;script src=&quot;loadExternal.js&quot; language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; </pre>
  5128. </div>
  5129. <div title="MarkupPreHead" creator="fancybox" modifier="fancybox" created="201101181525" modified="201101181525" tags="excludeLists" server.title="MarkupPreHead" server.page.revision="47597" server.etag="&quot;fancybox_public/MarkupPreHead/47597;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="7343fa2de738e73e77a54c4c21604b5ad6829e46">
  5130. <pre>&lt;!--{{{--&gt;
  5131. &lt;link rel=&quot;shortcut icon&quot; href=&quot;/recipes/fancybox_public/tiddlers/favicon.ico&quot; /&gt;
  5132. &lt;link href=&quot;/bags/fancybox_public/tiddlers.atom&quot; rel=&quot;alternate&quot;
  5133. type=&quot;application/atom+xml&quot; title=&quot;fancybox's public feed&quot; /&gt;
  5134. &lt;!--}}}--&gt;</pre>
  5135. </div>
  5136. <div title="MpBlue" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists" server.title="MpBlue" server.page.revision="107132" server.etag="&quot;neui-em_public/MpBlue/107132;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="7241d8ff222af90a09db28bdf237d359c4160da4">
  5137. <pre>/*{{{*/
  5138. Name: MpBlue
  5139. Background: #ffd
  5140. Foreground: #000
  5141. PrimaryPale: #ccd
  5142. PrimaryLight: #57c
  5143. PrimaryMid: #114
  5144. PrimaryDark: #012
  5145. SecondaryPale: #ffc
  5146. SecondaryLight: #fe8
  5147. SecondaryMid: #db4
  5148. SecondaryDark: #841
  5149. TertiaryPale: #eee
  5150. TertiaryLight: #ccc
  5151. TertiaryMid: #999
  5152. TertiaryDark: #666
  5153. Error: #f88
  5154. /*{{{*/
  5155. </pre>
  5156. </div>
  5157. <div title="MpGreen" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists systemPalette" server.title="MpGreen" server.page.revision="107134" server.etag="&quot;neui-em_public/MpGreen/107134;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="4249b76cbe1802993e4115ccdf050317177cf966">
  5158. <pre>/*{{{*/
  5159. Name: MpGreen
  5160. Background: #cec
  5161. Foreground: #000
  5162. PrimaryPale: #9b9
  5163. PrimaryLight: #385
  5164. PrimaryMid: #031
  5165. PrimaryDark: #020
  5166. SecondaryPale: #ffc
  5167. SecondaryLight: #fe8
  5168. SecondaryMid: #db4
  5169. SecondaryDark: #841
  5170. TertiaryPale: #eee
  5171. TertiaryLight: #ccc
  5172. TertiaryMid: #999
  5173. TertiaryDark: #666
  5174. Error: #f88
  5175. /*}}}*/</pre>
  5176. </div>
  5177. <div title="NEW: FancyBoxPlugin" creator="fancybox" modifier="fancybox" created="201101281540" modified="201102210959" tags="@news" server.title="NEW: FancyBoxPlugin" server.page.revision="260298" server.etag="&quot;fancybox_public/NEW%3A%20FancyBoxPlugin/260298;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="a861a5be944bcf7767d4fad05b58e3b828a29800">
  5178. <pre>*@fancybox site adds FancyBoxPlugin@fancybox for easy usage with TW. It includes the FancyBox library from http://fancybox.net. Have fun!
  5179. *Feel free to test it. See Examples at: http://fancybox.tiddlyspace.com/#About.
  5180. *Feedback is very welcome at: [[TiddlyWiki group|http://groups.google.com/group/tiddlywiki?hl=en]]</pre>
  5181. </div>
  5182. <div title="NeUIemRevisionTemplate" creator="pmario" modifier="pmario" created="201008061923" modified="201009292024" tags="excludeLists" server.title="NeUIemRevisionTemplate" server.page.revision="107138" server.etag="&quot;neui-em_public/NeUIemRevisionTemplate/107138;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="bbf66944a0b653b95a8b8e39deb1d02b53fcac7a">
  5183. <pre>&lt;!--{{{--&gt;
  5184. &lt;div macro='slideRevision'&gt;&lt;/div&gt;
  5185. [[NeUIemTheme##ViewTemplate]]
  5186. &lt;!--}}}--&gt;
  5187. </pre>
  5188. </div>
  5189. <div title="NeUIemTheme" creator="pmario" modifier="pmario" created="201008111759" modified="201102211032" tags="systemTheme" server.title="NeUIemTheme" server.page.revision="260331" server.etag="&quot;neui-em_public/NeUIemTheme/260331;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" publish.name="NeUIemTheme" _hash="4772f3b144eed9f1408457a6b1937d5e745fa9a9">
  5190. <pre>|''Name:''|[[NeUIemTheme]]|
  5191. |''Description:''|Your description here!|
  5192. |''Generator:''|[[TW FreeStyle|http://FreeStyle.tiddlyspace.com]]|
  5193. |''Gen.Description:''|Automatically generated from: tsNeUIemProject|
  5194. |''PageTemplate:''|##PageTemplate|
  5195. |''ViewTemplate:''|##ViewTemplate|
  5196. |''EditTemplate:''|##EditTemplate|
  5197. |''RevisionTemplate:''|NeUIemTheme##RevisionTemplate|
  5198. |''StyleSheet:''|##StyleSheet|
  5199. |''UsedClones:''|StyleSheetHeaderMp StyleSheetMenuBarMp StyleSheetSideBarMp StyleSheetTiddlerMp StyleSheetTiddlySpaceMp StyleSheet_neui-em EmasticSystem NeuiemZzConfig:zzConfig TerminateStyleSheet:StyleSheet CSideBarTabs CSidebarOptions CSidebarTools NeuiemSidebarTools:SidebarTools TopMenu SideBarOptions OptionsPanel [[sidebarSearch]] FontPalette ToolbarCommands GettingStarted NeUIemTheme01 NeUIemTheme02 NeUIemTheme03 NeUIemTheme04 |
  5200. !Important
  5201. If any of the obove clones is missing, the theme may not work.
  5202. !PageTemplate
  5203. &lt;!--{{{--&gt;
  5204. &lt;!-- tsRowTitle --&gt;
  5205. &lt;div class='dp100 header clearfix'&gt;
  5206. &lt;!-- tsColTitle --&gt;
  5207. &lt;div class='dp80'&gt;
  5208. &lt;!-- BoxTsHeader --&gt;
  5209. &lt;div class='box headerForeground'&gt;
  5210. &lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;&amp;nbsp;
  5211. &lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;
  5212. &lt;/div&gt;
  5213. &lt;/div&gt;
  5214. &lt;!-- tsColSearch --&gt;
  5215. &lt;div class='dp20'&gt;
  5216. &lt;!-- tsBoxGoto --&gt;
  5217. &lt;div id='sidebarSearch' class='box searchForeground'&gt;
  5218. &lt;div refresh='content' tiddler='sidebarSearch'&gt;&lt;/div&gt;
  5219. &lt;/div&gt;
  5220. &lt;/div&gt;
  5221. &lt;/div&gt; &lt;!-- row --&gt;
  5222. &lt;!-- tsRowMenuBar --&gt;
  5223. &lt;div id='menuBar' class='dp100 clearfix'&gt;
  5224. &lt;!-- tsColTopMenue --&gt;
  5225. &lt;div class='dp60'&gt;
  5226. &lt;!-- tsBoxTopMenue --&gt;
  5227. &lt;!-- horizontal TopMenu --&gt;
  5228. &lt;div class='box topMenu clearfix' refresh='content' tiddler='TopMenu'&gt;&lt;/div&gt;
  5229. &lt;/div&gt;
  5230. &lt;!-- tsColThemeSwitcher --&gt;
  5231. &lt;div class='dp40'&gt;
  5232. &lt;!-- tsBoxThemeSwitcher --&gt;
  5233. &lt;div id='sidebarOptions' class='dpfr' refresh='content' tiddler='SideBarOptions'&gt;&lt;/div&gt;
  5234. &lt;/div&gt;
  5235. &lt;/div&gt; &lt;!-- row --&gt;
  5236. &lt;!-- tsRowBody --&gt;
  5237. &lt;div class='dp100 clearfix row'&gt;
  5238. &lt;!-- tsColSidebar --&gt;
  5239. &lt;div id='sidebar' class='dp15 dpfr' style='width:15%; position:relative;'&gt;
  5240. &lt;!-- tsBoxSidebarTools --&gt;
  5241. &lt;div id='sidebarTools' class='box' refresh='content' force='true' tiddler='CSidebarTools'&gt;&lt;/div&gt;
  5242. &lt;!-- tsBoxSidebarTabs --&gt;
  5243. &lt;div id='sidebarTabs' class='box' refresh='content' force='true' tiddler='CSideBarTabs'&gt;&lt;/div&gt;
  5244. &lt;/div&gt;
  5245. &lt;!-- tsColMainMenu --&gt;
  5246. &lt;div class='dp15'&gt;
  5247. &lt;!-- tsBoxMainMenu --&gt;
  5248. &lt;!-- original MainMenu menu --&gt;
  5249. &lt;div id='mainMenu' refresh='content' tiddler='MainMenu'&gt;&lt;/div&gt;
  5250. &lt;/div&gt;
  5251. &lt;!-- tsColDisplayArea --&gt;
  5252. &lt;div id='displayArea' class='dp70'&gt;
  5253. &lt;!-- tsBoxMessageArea --&gt;
  5254. &lt;div id='messageArea' class='box'&gt;&lt;/div&gt;
  5255. &lt;!-- tsBoxBreadCrumbs --&gt;
  5256. &lt;div id='breadCrumbs' class='breadCrumbs box'&gt;&lt;/div&gt;
  5257. &lt;!-- tsBoxTiddlersBar --&gt;
  5258. &lt;div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'&gt;&lt;/div&gt;
  5259. &lt;!-- tsBoxTiddlerDisplay --&gt;
  5260. &lt;div id='tiddlerDisplay' class='box'&gt;&lt;/div&gt;
  5261. &lt;/div&gt;
  5262. &lt;/div&gt; &lt;!-- row --&gt;
  5263. &lt;!--}}}--&gt;
  5264. !ViewTemplate
  5265. &lt;!--{{{--&gt;
  5266. &lt;!-- tsVT_NEUIem --&gt;
  5267. &lt;div class='dp100 clearfix'&gt;
  5268. &lt;!-- tsVT_toolbar --&gt;
  5269. &lt;div class='dp100'&gt;
  5270. &lt;!-- tsBoxVT_FollowPlaceHolder --&gt;
  5271. &lt;div class='followPlaceHolder' macro='followTiddlersButton'&gt;
  5272. &lt;span macro=&quot;view title replyLink&quot;&gt;&lt;/span&gt;
  5273. &lt;/div&gt;
  5274. &lt;!-- tsBoxVT_Toolbar --&gt;
  5275. &lt;div class='box toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes'&gt;&lt;/div&gt;
  5276. &lt;/div&gt;
  5277. &lt;!-- tsVT_leftCol --&gt;
  5278. &lt;div class='dp10'&gt;
  5279. &lt;!-- tsBoxVT_SiteIcon --&gt;
  5280. &lt;div class='box spaceSiteIcon' macro='tiddlerOrigin label:yes height:48 width:48'&gt;&lt;/div&gt;
  5281. &lt;!-- BoxVT_Calender --&gt;
  5282. &lt;div class='box calendar' macro='viewRevisions page:5'&gt;
  5283. &lt;div class='month' macro='view modified date mmm'&gt;&lt;/div&gt;
  5284. &lt;div class='date' macro='view modified date 0DD'&gt;&lt;/div&gt;
  5285. &lt;!-- div class='time' macro='view modified date 0hh:0mm'&gt;&lt;/div --&gt;
  5286. &lt;/div&gt;
  5287. &lt;!-- BoxVTts_tagged --&gt;
  5288. &lt;div class='box tagged' macro='tags'&gt;&lt;/div&gt;
  5289. &lt;div class='box' macro='tiddler CTagBox'&gt;&lt;/div&gt;
  5290. &lt;/div&gt;
  5291. &lt;!-- tsViewTemplate --&gt;
  5292. &lt;div class='dp90'&gt;
  5293. &lt;!-- tsBox_ModifierIcon --&gt;
  5294. &lt;div class='box modifierIcon dpfr'
  5295. macro='view modifier SiteIcon label:yes height:30 width:30 labelPrefix:&quot;modified by &quot;'&gt;
  5296. &lt;/div&gt;
  5297. &lt;!-- tsBoxVT_Title --&gt;
  5298. &lt;div class='titleContainer'&gt;
  5299. &lt;div class='box title' macro='view title'&gt;&lt;/div&gt;
  5300. &lt;/div&gt;
  5301. &lt;!-- tsBox_concertina --&gt;
  5302. &lt;div class='box concertina clear'&gt;&lt;/div&gt;
  5303. &lt;!-- tsBoxVT_Body --&gt;
  5304. &lt;div class='box content'&gt;
  5305. &lt;div class='viewer' macro='view text wikified'&gt;&lt;/div&gt;
  5306. &lt;/div&gt;
  5307. &lt;!-- tsBoxVT_TagglyTaggingFooter --&gt;
  5308. &lt;div class=&quot;box tagglyTagging&quot; macro=&quot;tagglyTagging&quot;&gt;&lt;/div&gt;
  5309. &lt;!-- tsBox_StoryGlue --&gt;
  5310. &lt;div class='box storyGlue' macro='storyGlue fsStory ACTIVESTORY'&gt;&lt;/div&gt;
  5311. &lt;/div&gt;
  5312. &lt;/div&gt; &lt;!-- row --&gt;
  5313. &lt;!--}}}--&gt;
  5314. !EditTemplate
  5315. &lt;!--{{{--&gt;
  5316. &lt;!-- tsET_NEUIem --&gt;
  5317. &lt;div class='dp100 clearfix'&gt;
  5318. &lt;!-- tsEditTemplate --&gt;
  5319. &lt;div class='dp100'&gt;
  5320. &lt;!-- BoxET_tsEditToolbar --&gt;
  5321. &lt;div class='box dpfr toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'&gt;&lt;/div&gt;
  5322. &lt;!-- BoxET_tsSetPrivate --&gt;
  5323. &lt;div class=&quot;box dpfr privacyEdit&quot; macro='setPrivacy label:no interactive:yes'&gt;&lt;/div&gt;
  5324. &lt;div class='box dpfr editSpaceSiteIcon' macro='tiddlerOrigin height:25 width:25 label:no interactive:no'&gt;&lt;/div&gt;
  5325. &lt;!-- BoxET_tsTitle --&gt;
  5326. &lt;div class='box title' macro='view title'&gt;&lt;/div&gt;
  5327. &lt;!-- BoxET_tsEditTitle --&gt;
  5328. &lt;div class='box editor' macro='edit title'&gt;&lt;/div&gt;
  5329. &lt;div macro='annotations'&gt;&lt;/div&gt;
  5330. &lt;!-- BoxET_tsEditBody --&gt;
  5331. &lt;div class='box editor' macro='edit text'&gt;&lt;/div&gt;
  5332. &lt;!-- BoxET_tsTagging --&gt;
  5333. &lt;div class='box save editor' macro='edit tags'&gt;&lt;/div&gt;
  5334. &lt;!-- BoxET_tsEditFooter --&gt;
  5335. &lt;div class='box editorFooter'&gt;&lt;span macro='message views.editor.tagPrompt'&gt;&lt;/span&gt;&lt;span macro='tagChooser excludeLists'&gt;&lt;/span&gt;&lt;/div&gt;
  5336. &lt;/div&gt;
  5337. &lt;/div&gt; &lt;!-- row --&gt;
  5338. &lt;!--}}}--&gt;
  5339. !RevisionTemplate
  5340. &lt;!--{{{--&gt;
  5341. &lt;!-- tsRT_NEUIem --&gt;
  5342. &lt;div macro='slideRevision'&gt;&lt;/div&gt;
  5343. &lt;div class='dp100 clearfix'&gt;
  5344. &lt;!-- tsRT_toolbar --&gt;
  5345. &lt;div class='dp100'&gt;
  5346. &lt;!-- tsBoxVT_FollowPlaceHolder --&gt;
  5347. &lt;div class='followPlaceHolder' macro='followTiddlers'&gt;
  5348. &lt;span macro=&quot;view title replyLink&quot;&gt;&lt;/span&gt;
  5349. &lt;/div&gt;
  5350. &lt;!-- tsBoxRT_Toolbar --&gt;
  5351. &lt;div class='box toolbar' macro='toolbar [[ToolbarCommands::RevisionToolbar]] icons:yes'&gt;&lt;/div&gt;
  5352. &lt;/div&gt;
  5353. &lt;!-- tsVT_leftCol --&gt;
  5354. &lt;div class='dp10'&gt;
  5355. &lt;!-- tsBoxVT_SiteIcon --&gt;
  5356. &lt;div class='box spaceSiteIcon' macro='tiddlerOrigin label:yes height:48 width:48'&gt;&lt;/div&gt;
  5357. &lt;!-- BoxVT_Calender --&gt;
  5358. &lt;div class='box calendar' macro='viewRevisions page:5'&gt;
  5359. &lt;div class='month' macro='view modified date mmm'&gt;&lt;/div&gt;
  5360. &lt;div class='date' macro='view modified date 0DD'&gt;&lt;/div&gt;
  5361. &lt;!-- div class='time' macro='view modified date 0hh:0mm'&gt;&lt;/div --&gt;
  5362. &lt;/div&gt;
  5363. &lt;!-- BoxVTts_tagged --&gt;
  5364. &lt;div class='box tagged' macro='tags'&gt;&lt;/div&gt;
  5365. &lt;div class='box' macro='tiddler CTagBox'&gt;&lt;/div&gt;
  5366. &lt;/div&gt;
  5367. &lt;!-- tsViewTemplate --&gt;
  5368. &lt;div class='dp90'&gt;
  5369. &lt;!-- tsBox_ModifierIcon --&gt;
  5370. &lt;div class='box modifierIcon dpfr'
  5371. macro='view modifier SiteIcon label:yes height:30 width:30 labelPrefix:&quot;modified by &quot;'&gt;
  5372. &lt;/div&gt;
  5373. &lt;!-- tsBoxVT_Title --&gt;
  5374. &lt;div class='titleContainer'&gt;
  5375. &lt;div class='box title' macro='view title'&gt;&lt;/div&gt;
  5376. &lt;/div&gt;
  5377. &lt;!-- tsBox_concertina --&gt;
  5378. &lt;div class='box concertina clear'&gt;&lt;/div&gt;
  5379. &lt;!-- tsBoxVT_Body --&gt;
  5380. &lt;div class='box content'&gt;
  5381. &lt;div class='viewer' macro='view text wikified'&gt;&lt;/div&gt;
  5382. &lt;/div&gt;
  5383. &lt;!-- tsBoxVT_TagglyTaggingFooter --&gt;
  5384. &lt;div class=&quot;box tagglyTagging&quot; macro=&quot;tagglyTagging&quot;&gt;&lt;/div&gt;
  5385. &lt;!-- tsBox_StoryGlue --&gt;
  5386. &lt;div class='box storyGlue' macro='storyGlue fsStory ACTIVESTORY'&gt;&lt;/div&gt;
  5387. &lt;/div&gt;
  5388. &lt;/div&gt; &lt;!-- row --&gt;
  5389. &lt;!--}}}--&gt;
  5390. !StyleSheet
  5391. /*{{{*/
  5392. Version: 1.0 - 2010.08.12
  5393. /*****************************************************/
  5394. /*-- some simple rules to change the global layout --*/
  5395. /*-- margin should not be uses for row, col, box --*/
  5396. /*-- margin is used to adjust special elements --*/
  5397. /*-- The layout doesn't allow padding-left/right or margin-left/right ! for rows and cols --*/
  5398. .row {
  5399. margin: 0;
  5400. padding: 0;
  5401. margin-top: 0.5em;
  5402. }
  5403. /*-- The layout doesn't allow padding-left/right or margin-left/right ! for rows and cols --*/
  5404. /*-- col is not assigned to layout yet --*/
  5405. .col {
  5406. margin: 0;
  5407. padding: 0;
  5408. }
  5409. /*-- if you want more space between 2 columns use box 2nd and 4th parameter. --*/
  5410. /*-- boxes must have padding-bottom: 0; !! --*/
  5411. .box {
  5412. margin: 0;
  5413. padding: 0.5em 0.5em 0 0.5em;
  5414. }
  5415. /* general stuff */
  5416. .noBullets ul {
  5417. list-style:none;
  5418. }
  5419. .noNumbers ol {
  5420. list-style:none;
  5421. }
  5422. .noBr br {
  5423. display: none;
  5424. }
  5425. /* prefer monospace for editing */
  5426. .editor textarea, .editor input {
  5427. font-size: 90%;
  5428. font-family: [[FontPalette::twEditor]], 'Courier New', monospace;
  5429. background-color:[[ColorPalette::TertiaryPale]];
  5430. }
  5431. /*-- emastic System --*/
  5432. [[EmasticSystem]]
  5433. /*-- theme specific stuff --*/
  5434. [[StyleSheet_neui-em]]
  5435. /*-- call the standard StyleSheet --*/
  5436. [[StyleSheet]]
  5437. /*}}}*/</pre>
  5438. </div>
  5439. <div title="NeUIemTheme01" creator="pmario" modifier="pmario" created="201008181742" modified="201011101903" tags="systemTheme" server.title="NeUIemTheme01" server.page.revision="107169" server.etag="&quot;neui-em_public/NeUIemTheme01/107169;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="89e4b6f66d5c92d7f3602b22e5409c435bd4f4f7">
  5440. <pre>|''Name:''|[[NeUIemTheme01]]|
  5441. |''Description:''|Changes the right sidebar|
  5442. |''Generator:''|[[TW FreeStyle|http://FreeStyle.tiddlyspot.com]]|
  5443. |''Gen.Description:''|Handcrafted by @pmario|
  5444. |''PageTemplate:''|NeUIemTheme##PageTemplate|
  5445. |''ViewTemplate:''|NeUIemTheme##ViewTemplate|
  5446. |''EditTemplate:''|NeUIemTheme##EditTemplate|
  5447. |''RevisionTemplate:''|NeUIemTheme##RevisionTemplate|
  5448. |''StyleSheet:''|##StyleSheet|
  5449. !StyleSheet
  5450. /*{{{*/
  5451. [[NeUIemTheme##StyleSheet]]
  5452. #sidebarTabs .tabset{
  5453. float: left;
  5454. width: 1em;
  5455. padding: 0;
  5456. }
  5457. #sidebarTabs .tabset:hover{
  5458. width: auto;
  5459. }
  5460. #sidebarTabs .tabset .tab{
  5461. overflow: hidden;
  5462. display: block;
  5463. }
  5464. /*}}}*/</pre>
  5465. </div>
  5466. <div title="NeUIemTheme02" creator="pmario" modifier="pmario" created="201008181756" modified="201011101903" tags="systemTheme" server.title="NeUIemTheme02" server.page.revision="107172" server.etag="&quot;neui-em_public/NeUIemTheme02/107172;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="d2d750a5ffff7cf875b0ec308c896ebf400c9712">
  5467. <pre>|''Name:''|[[NeUIemTheme02]]|
  5468. |''Description:''|Changes the right sidebar|
  5469. |''Generator:''|[[TW FreeStyle|http://FreeStyle.tiddlyspot.com]]|
  5470. |''Gen.Description:''|Handcrafted by @pmario|
  5471. |''PageTemplate:''|NeUIemTheme##PageTemplate|
  5472. |''ViewTemplate:''|NeUIemTheme##ViewTemplate|
  5473. |''EditTemplate:''|NeUIemTheme##EditTemplate|
  5474. |''RevisionTemplate:''|NeUIemTheme##RevisionTemplate|
  5475. |''StyleSheet:''|##StyleSheet|
  5476. !StyleSheet
  5477. /*{{{*/
  5478. [[NeUIemTheme##StyleSheet]]
  5479. #sidebarTabs .tabset{
  5480. float: left;
  5481. width: 1em;
  5482. padding: 0;
  5483. }
  5484. #sidebarTabs .tabset:hover{
  5485. width: auto;
  5486. position:absolute;
  5487. right: 86%;
  5488. padding-right: 8%;
  5489. z-index: 10;
  5490. }
  5491. #sidebarTabs .tabset .tab{
  5492. overflow: hidden;
  5493. display: block;
  5494. }
  5495. /*}}}*/</pre>
  5496. </div>
  5497. <div title="NeUIemTheme03" creator="pmario" modifier="pmario" created="201008181830" modified="201011101903" tags="systemTheme" server.title="NeUIemTheme03" server.page.revision="107176" server.etag="&quot;neui-em_public/NeUIemTheme03/107176;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="66dcdd2b1bfb88c644defcedf13271c49186165c">
  5498. <pre>|''Name:''|[[NeUIemTheme03]]|
  5499. |''Description:''|Changes the right sidebar|
  5500. |''Generator:''|[[TW FreeStyle|http://FreeStyle.tiddlyspot.com]]|
  5501. |''Gen.Description:''|Handcrafted by @pmario|
  5502. |''PageTemplate:''|NeUIemTheme##PageTemplate|
  5503. |''ViewTemplate:''|NeUIemTheme##ViewTemplate|
  5504. |''EditTemplate:''|NeUIemTheme##EditTemplate|
  5505. |''RevisionTemplate:''|NeUIemTheme##RevisionTemplate|
  5506. |''StyleSheet:''|##StyleSheet|
  5507. !StyleSheet
  5508. /*{{{*/
  5509. [[NeUIemTheme##StyleSheet]]
  5510. #sidebarTabs .tabset{
  5511. float: right;
  5512. width: 1em;
  5513. padding: 0;
  5514. }
  5515. #sidebarTabs .tabset:hover{
  5516. width: auto;
  5517. }
  5518. #sidebarTabs .tabset .tab{
  5519. overflow: hidden;
  5520. display: block;
  5521. }
  5522. /*}}}*/</pre>
  5523. </div>
  5524. <div title="NeUIemTheme04" creator="pmario" modifier="pmario" created="201010081252" modified="201011101902" tags="systemTheme" server.title="NeUIemTheme04" server.page.revision="107182" server.etag="&quot;neui-em_public/NeUIemTheme04/107182;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="d2cde24049a784857475fd236d4a454c6dc9019b">
  5525. <pre>|''Name:''|[[NeUIemTheme04]]|
  5526. |''Description:''|Play with the toolbar visibility|
  5527. |''Generator:''|[[TW FreeStyle|http://FreeStyle.tiddlyspot.com]]|
  5528. |''Gen.Description:''|Handcrafted by @pmario|
  5529. |''PageTemplate:''|NeUIemTheme##PageTemplate|
  5530. |''ViewTemplate:''|NeUIemTheme##ViewTemplate|
  5531. |''EditTemplate:''|NeUIemTheme##EditTemplate|
  5532. |''RevisionTemplate:''|NeUIemTheme##RevisionTemplate|
  5533. |''StyleSheet:''|##StyleSheet|
  5534. !StyleSheet
  5535. /*{{{*/
  5536. [[NeUIemTheme03##StyleSheet]]
  5537. /* Play with the toolbar visibility */
  5538. .toolbar {
  5539. visibility: hidden;
  5540. /* opacity: 0.2; */
  5541. }
  5542. .selected .toolbar {
  5543. visibility: visible;
  5544. /* opacity: 1; */
  5545. }
  5546. /*}}}*/</pre>
  5547. </div>
  5548. <div title="NeuiEmTagSearchAddOn" creator="pmario" modifier="pmario" created="201009082211" modified="201010111803" tags="addon excludeLists systemConfig" server.title="NeuiEmTagSearchAddOn" server.page.revision="107499" server.etag="&quot;neui-tagsearch_public/NeuiEmTagSearchAddOn/107499;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-tagsearch_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-tagsearch_public" server.permissions="read, write, create, delete" server.content-type="" _hash="15feedd731174944ba9f2726ff5564735d21fec3">
  5549. <pre>//{{{
  5550. config.shadowTiddlers[&quot;StyleSheetTagSearchNeuiEm&quot;]=&quot;/*{{{*/\n&quot;+
  5551. &quot;.tagSearch .button {\n&quot;+
  5552. &quot; -webkit-border-radius: 0px 15px 15px 0px;\n&quot;+
  5553. &quot; -moz-border-radius: 0px 15px 15px 0px;\n&quot;+
  5554. &quot; background-color: white;\n&quot;+
  5555. &quot; border: 2px 2px 2px 0 solid #ccc;\n&quot;+
  5556. &quot; display: block;\n&quot;+
  5557. &quot; margin: 0 0.2em 0.2em -0.9em;\n&quot;+
  5558. &quot; padding: 0 0.4em;\n&quot;+
  5559. &quot; font-size: 0.9em;\n&quot;+
  5560. &quot;}\n&quot;+
  5561. &quot;/*}}}*/&quot;;
  5562. store.addNotification(&quot;StyleSheetTagSearchNeuiEm&quot;,refreshStyles);
  5563. //}}}</pre>
  5564. </div>
  5565. <div title="New Tiddler" modifier="pmario" created="201103151348" modified="201103151600" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com" server.workspace="bags/fancybox_private" server.bag="fancybox_private" changecount="8">
  5566. <pre>&lt;&lt;manyParams&gt;&gt;
  5567. &lt;&lt;manyParams button:&quot;click me!&quot; tooltip:&quot;some tooltip text&quot;&gt;&gt;
  5568. ''Be aware of the boolParam type !!!''
  5569. {{{
  5570. &lt;&lt;manyParams boolParam:false anyParam1:&quot;parameter 1&quot;&gt;&gt;
  5571. }}}
  5572. &lt;&lt;manyParams boolParam:false anyParam1:&quot;parameter 1&quot;&gt;&gt;
  5573. </pre>
  5574. </div>
  5575. <div title="News" creator="fancybox" modifier="pmario" created="201101211613" modified="201102132033" tags="mainMenu topMenu" server.title="News" server.page.revision="253474" server.etag="&quot;fancybox_public/News/253474;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" sort.topmenu="0002" _hash="f15ce0d1c68c27bdccf90444e261e8f199b216d7">
  5576. <pre>!FancyBox News
  5577. &lt;&lt;tsScan fancybox tag:@news searchField:&quot;modifier&quot; template:&quot;SearchTemplate&quot;&gt;&gt;
  5578. !PMario's News
  5579. &lt;&lt;tsScan pmario tag:@news searchField:&quot;modifier&quot; template:&quot;SearchTemplate&quot;&gt;&gt;</pre>
  5580. </div>
  5581. <div title="OptionsPanel" creator="pmario" modifier="pmario" created="201008061923" modified="201011042046" tags="excludeLists" server.title="OptionsPanel" server.page.revision="107199" server.etag="&quot;neui-em_public/OptionsPanel/107199;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="5b45d13480ff0cc4e1556b680e6e52b68abe85a6">
  5582. <pre>Active user name: &lt;&lt;option txtUserName&gt;&gt;
  5583. These options for customising [[TiddlyWiki]] are saved in your browser
  5584. select theme: &lt;&lt;selectTheme&gt;&gt;
  5585. select palette: &lt;&lt;selectPalette&gt;&gt;
  5586. &lt;&lt;option chkSaveBackups&gt;&gt; [[SaveBackups]]
  5587. &lt;&lt;option chkAutoSave&gt;&gt; [[AutoSave]]
  5588. &lt;&lt;option chkRegExpSearch&gt;&gt; [[RegExpSearch]]
  5589. &lt;&lt;option chkCaseSensitiveSearch&gt;&gt; [[CaseSensitiveSearch]]
  5590. &lt;&lt;option chkAnimate&gt;&gt; [[EnableAnimations]]
  5591. ----
  5592. Also see [[AdvancedOptions]]</pre>
  5593. </div>
  5594. <div title="PageTemplate" creator="osmosoft" modifier="osmosoft" created="201102181425" modified="201102181425" tags="excludeLists excludeSearch" server.title="PageTemplate" server.page.revision="257503" server.etag="&quot;system-theme_public/PageTemplate/257503;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-theme_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-theme_public" server.permissions="read" server.content-type="" _hash="f7d57de5937a110a2d275d11eebcd4557fc34f25">
  5595. <pre>&lt;!--{{{--&gt;
  5596. &lt;div class='header'&gt;
  5597. &lt;div id='sidebarSearch'&gt;
  5598. &lt;span macro='search'&gt;&lt;/span&gt;
  5599. &lt;/div&gt;
  5600. &lt;div class='headerForeground'&gt;
  5601. &lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;
  5602. &lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;
  5603. &lt;/div&gt;
  5604. &lt;div class='clearFloat'&gt;&lt;/div&gt;
  5605. &lt;/div&gt;
  5606. &lt;div id='menuBar'&gt;
  5607. &lt;div id='mainMenu' refresh='content' tiddler='MainMenu'&gt;&lt;/div&gt;
  5608. &lt;div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'&gt;&lt;/div&gt;
  5609. &lt;/div&gt;
  5610. &lt;div id='displayArea'&gt;
  5611. &lt;div id='messageArea'&gt;&lt;/div&gt;
  5612. &lt;div id='tiddlerDisplay'&gt;&lt;/div&gt;
  5613. &lt;div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'&gt;&lt;/div&gt;
  5614. &lt;/div&gt;
  5615. &lt;!--}}}--&gt;</pre>
  5616. </div>
  5617. <div title="PaletteViewMacro" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists systemConfig" server.title="PaletteViewMacro" server.page.revision="107203" server.etag="&quot;neui-em_public/PaletteViewMacro/107203;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="22ccb19ee6279cb8ee4047efe5e4ccba03dd3f1d">
  5618. <pre>/***
  5619. |''Name''|PaletteViewMacro|
  5620. |''Version''|0.2|
  5621. |''Author''|FND|
  5622. |''Source''|[[FND's DevPad|http://devpad.tiddlyspot.com/#PaletteViewMacro]]|
  5623. |''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
  5624. |''~CoreVersion''|2.1|
  5625. |''Type''|macro|
  5626. |''Requires''|N/A|
  5627. |''Overrides''|N/A|
  5628. |''Description''|Displays color palettes.|
  5629. !Notes
  5630. There is also [[ViewPalettePlugin|http://simon.tiddlyspot.com/#ViewPalettePlugin]], which currently does not work with TiddlyWiki v2.2 though.
  5631. !Usage
  5632. {{{
  5633. &lt;&lt;paletteView [tiddler name]&gt;&gt;
  5634. }}}
  5635. !!Example
  5636. &lt;&lt;paletteView [[ColorPalette]]&gt;&gt;
  5637. !Revision History
  5638. !!v0.1 (2007-11-18)
  5639. * initial release
  5640. !!v0.2 (2007-11-20)
  5641. * limited processing to slices containing [[actual color values|http://www.w3.org/TR/CSS21/syndata.html#color-units]]
  5642. * changed fallback value to the tiddler the macro is called from (instead of using [[ColorPalette]])
  5643. !To Do
  5644. * selection list for all available palettes (tag-based)
  5645. * parameter for custom table class
  5646. * customizable column order
  5647. * documentation (e.g. using from within [[ViewTemplate]])
  5648. !Code
  5649. ***/
  5650. //{{{
  5651. config.macros.paletteView = {};
  5652. config.macros.paletteView.handler = function(place, macroName, params, wikifier, paramString, tiddler) {
  5653. var title = params[0] || tiddler.title;
  5654. //var palettes = store.getTaggedTiddlers(params[0]); // DEBUG: yet to be implemented
  5655. var colors = store.calcAllSlices(title);
  5656. var labels = [];
  5657. for(var c in colors) {
  5658. if(this.isColor(colors[c])) {
  5659. labels.push(c);
  5660. }
  5661. }
  5662. if(labels.length &gt; 0) {
  5663. var output = &quot;|!Sample|!Value|!Name|h\n&quot;;
  5664. for(var i = 0; i &lt; labels.length; i++) {
  5665. output += &quot;|padding:0 4em;background-color:&quot; + colors[labels[i]] + &quot;;&amp;nbsp;|&quot;
  5666. + &quot;{{{&quot; + colors[labels[i]] + &quot;}}}|&quot;
  5667. + &quot;[[&quot; + labels[i] + &quot;|&quot; + title + &quot;]]|\n&quot;;
  5668. }
  5669. wikify(output, place);
  5670. }
  5671. };
  5672. config.macros.paletteView.isColor = function(s) {
  5673. var colors = [&quot;Black&quot;, &quot;Green&quot;, &quot;Silver&quot;, &quot;Lime&quot;, &quot;Gray&quot;, &quot;Olive&quot;, &quot;White&quot;, &quot;Yellow&quot;,
  5674. &quot;Maroon&quot;, &quot;Navy&quot;, &quot;Red&quot;, &quot;Blue&quot;, &quot;Purple&quot;, &quot;Teal&quot;, &quot;Fuchsia&quot;, &quot;Aqua&quot;, &quot;Orange&quot;];
  5675. var match = s.match(/^#[0-9A-F]{3}$|^#[0-9A-F]{6}$|^RGB\([\d,\s]{5,}\)$/i);
  5676. if(match) return true;
  5677. if(colors.contains(s)) return true;
  5678. return false;
  5679. };
  5680. //}}}</pre>
  5681. </div>
  5682. <div title="PicasaThumbs" creator="pmario" modifier="pmario" created="201102082147" modified="201102082352" server.title="PicasaThumbs" server.page.revision="246805" server.etag="&quot;fancybox_private/PicasaThumbs/246805;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="766df8751937406d316ac336045aff761b42411d">
  5683. <pre>{{{
  5684. https://lh6.googleusercontent.com/_UkSbXgMhEcQ/TVG6suPu2QI/AAAAAAAAACM/zRAb12LJ0wk/s144/01.jpg
  5685. https://lh6.googleusercontent.com/_UkSbXgMhEcQ/TVG6shei6XI/AAAAAAAAACQ/VtHqdhtKSrM/s144/02.jpg
  5686. https://lh6.googleusercontent.com/_UkSbXgMhEcQ/TVG6srCm14I/AAAAAAAAACU/2JhGZEKjttQ/s144/03.jpg
  5687. https://lh4.googleusercontent.com/_UkSbXgMhEcQ/TVG6s6sLXQI/AAAAAAAAACY/DsM97xRXn-M/s144/04.jpg
  5688. https://lh4.googleusercontent.com/_UkSbXgMhEcQ/TVG6sz_bwLI/AAAAAAAAACc/oC0xVt_S9Hc/s144/05.jpg
  5689. https://lh4.googleusercontent.com/_UkSbXgMhEcQ/TVG63VfJ7nI/AAAAAAAAACg/Z-eHUqI7TYA/s144/06.jpg
  5690. https://lh3.googleusercontent.com/_UkSbXgMhEcQ/TVG63W8IQWI/AAAAAAAAACk/GZ2rmsCbkdw/s144/07.jpg
  5691. https://lh3.googleusercontent.com/_UkSbXgMhEcQ/TVG63t4nwXI/AAAAAAAAACo/ZYr1CTyXjIg/s144/08.jpg
  5692. https://lh5.googleusercontent.com/_UkSbXgMhEcQ/TVG63obJxZI/AAAAAAAAACs/wuG7ODwx1AE/s144/09.jpg
  5693. https://lh6.googleusercontent.com/_UkSbXgMhEcQ/TVG637LBekI/AAAAAAAAACw/hBI74d5PCM8/s144/10.jpg
  5694. https://lh3.googleusercontent.com/_UkSbXgMhEcQ/TVG69QdoLrI/AAAAAAAAAC0/zCq0VKDIWh0/s144/11.jpg
  5695. https://lh5.googleusercontent.com/_UkSbXgMhEcQ/TVG69v_tDOI/AAAAAAAAAC4/1Gw0X9t67fg/s144/12.jpg
  5696. https://lh5.googleusercontent.com/_UkSbXgMhEcQ/TVG69peBiCI/AAAAAAAAAC8/YXWnZl8ycKc/s144/13.jpg
  5697. }}}
  5698. https://picasaweb.google.com/data/feed/base/user/PMarioJo/albumid/5571439290287818385?alt=json&amp;hl=de
  5699. https://picasaweb.google.com/data/feed/base/user/PMarioJo?alt=json</pre>
  5700. </div>
  5701. <div title="Pictures" creator="fancybox" modifier="pmario" created="201101211613" modified="201102111136" server.title="Pictures" server.page.revision="249025" server.etag="&quot;fancybox_public/Pictures/249025;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="6fe095dd50ffbd1958a318da00245be96376c75c">
  5702. <pre>[&lt;img[San Benedicto|01.jpg][http://fancybox-pics.tiddlyspace.com/01.jpg]] If the picture link, is a pretty link, the tooltip title will be taken by fancyBox macro. The shark piture has no prettylink. So there will be no slide show title. It is a galapagos shark.
  5703. [&lt;img[Where is the shark?|02.jpg][http://fancybox-pics.tiddlyspace.com/02.jpg]] Where is the shark
  5704. [&gt;img[03.jpg][http://fancybox-pics.tiddlyspace.com/03.jpg]]
  5705. &lt;br&gt;&lt;br&gt;
  5706. !!!Links that can be used by {{{fancyBox}}} plugin
  5707. &lt;&lt;&lt;
  5708. {{{
  5709. [img[San Benedicto|01.jpg][http://fancybox-pics.tiddlyspace.com/01.jpg]] Lorem ipsum dolor sit amet,
  5710. [&lt;img[Where is the shark?|02.jpg][http://fancybox-pics.tiddlyspace.com/02.jpg]] Sed condimentum posuere consequat.
  5711. [&gt;img[03.jpg][http://fancybox-pics.tiddlyspace.com/03.jpg]] Donec nec risus non justo
  5712. }}}
  5713. &lt;&lt;&lt;</pre>
  5714. </div>
  5715. <div title="PicturesFancy Description" creator="pmario" modifier="pmario" created="201102072300" modified="201102072300" server.title="PicturesFancy Description" server.page.revision="245738" server.etag="&quot;fancybox_private/PicturesFancy%20Description/245738;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="b8f35f8a2861a23f00b265a31569d8657c15521e">
  5716. <pre>!OLD
  5717. !!!Simple usage
  5718. If you have an existing text, that contains TW image links like {{{[img[03.jpg][http://fancybox-pics.tiddlyspace.com/03.jpg]]}}} just create a new tiddler and transclude the existing one:
  5719. {{{
  5720. &lt;&lt;tiddler tiddlerName 'className'&gt;&gt;
  5721. &lt;&lt;tiddler Picture03 'fancy'&gt;&gt;
  5722. &lt;&lt;fancyBox selector:'.fancy a'&gt;&gt;
  5723. }}}
  5724. &lt;&lt;tiddler Picture03 'fancy'&gt;&gt;
  5725. &lt;&lt;fancyBox selector:'.fancy a'&gt;&gt;
  5726. some text
  5727. !!!Force Title
  5728. {{{
  5729. &lt;&lt;tiddler Picture03 'fancy1'&gt;&gt;
  5730. &lt;&lt;fancyBox selector:'.fancy1 a' title:'Galapagos Shark'&gt;&gt;
  5731. }}}
  5732. &lt;&lt;tiddler Picture03 'fancy1'&gt;&gt;
  5733. &lt;&lt;fancyBox selector:'.fancy1 a' title:'Galapagos Shark'&gt;&gt;
  5734. some text
  5735. </pre>
  5736. </div>
  5737. <div title="Publisher" creator="pmario" modifier="pmario" created="201009181720" modified="201009181720" server.title="Publisher" server.page.revision="107204" server.etag="&quot;neui-em_public/Publisher/107204;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="fa879ce3306b6c1d67b31bcbcd0e33279861fc24">
  5738. <pre>&lt;&lt;TiddlySpacePublisher&gt;&gt;</pre>
  5739. </div>
  5740. <div title="QuickOpenTagPlugin" creator="pmario" modifier="pmario" created="201008070948" modified="201009181705" tags="excludeLists systemConfig" server.title="QuickOpenTagPlugin" server.page.revision="107209" server.etag="&quot;neui-em_public/QuickOpenTagPlugin/107209;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="2b852671be499cf3d4e8a1b10eb6e91666f9fb90">
  5741. <pre>/***
  5742. |Name:|QuickOpenTagPlugin|
  5743. |Description:|Changes tag links to make it easier to open tags as tiddlers|
  5744. |Version:|3.0.1 ($Rev: 3861 $)|
  5745. |Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
  5746. |Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
  5747. |Author:|Simon Baird &lt;simon.baird@gmail.com&gt;|
  5748. |License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
  5749. ***/
  5750. //{{{
  5751. config.quickOpenTag = {
  5752. dropdownChar: (document.all ? &quot;\u25bc&quot; : &quot;\u25be&quot;), // the little one doesn't work in IE?
  5753. createTagButton: function(place,tag,excludeTiddler) {
  5754. // little hack so we can do this: &lt;&lt;tag PrettyTagName|RealTagName&gt;&gt;
  5755. var splitTag = tag.split(&quot;|&quot;);
  5756. var pretty = tag;
  5757. if (splitTag.length == 2) {
  5758. tag = splitTag[1];
  5759. pretty = splitTag[0];
  5760. }
  5761. var sp = createTiddlyElement(place,&quot;span&quot;,null,&quot;quickopentag&quot;);
  5762. createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
  5763. var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
  5764. config.views.wikified.tag.tooltip.format([tag]),onClickTag);
  5765. theTag.setAttribute(&quot;tag&quot;,tag);
  5766. if (excludeTiddler)
  5767. theTag.setAttribute(&quot;tiddler&quot;,excludeTiddler);
  5768. return(theTag);
  5769. },
  5770. miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
  5771. var tagged = store.getTaggedTiddlers(tiddler.title);
  5772. if (tagged.length &gt; 0) {
  5773. var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
  5774. config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
  5775. theTag.setAttribute(&quot;tag&quot;,tiddler.title);
  5776. theTag.className = &quot;miniTag&quot;;
  5777. }
  5778. },
  5779. allTagsHandler: function(place,macroName,params) {
  5780. var tags = store.getTags(params[0]);
  5781. var filter = params[1]; // new feature
  5782. var ul = createTiddlyElement(place,&quot;ul&quot;);
  5783. if(tags.length == 0)
  5784. createTiddlyElement(ul,&quot;li&quot;,null,&quot;listTitle&quot;,this.noTags);
  5785. for(var t=0; t&lt;tags.length; t++) {
  5786. var title = tags[t][0];
  5787. if (!filter || (title.match(new RegExp('^'+filter)))) {
  5788. var info = getTiddlyLinkInfo(title);
  5789. var theListItem =createTiddlyElement(ul,&quot;li&quot;);
  5790. var theLink = createTiddlyLink(theListItem,tags[t][0],true);
  5791. var theCount = &quot; (&quot; + tags[t][1] + &quot;)&quot;;
  5792. theLink.appendChild(document.createTextNode(theCount));
  5793. var theDropDownBtn = createTiddlyButton(theListItem,&quot; &quot; +
  5794. config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
  5795. theDropDownBtn.setAttribute(&quot;tag&quot;,tags[t][0]);
  5796. }
  5797. }
  5798. },
  5799. // todo fix these up a bit
  5800. styles: [
  5801. &quot;/*{{{*/&quot;,
  5802. &quot;/* created by QuickOpenTagPlugin */&quot;,
  5803. &quot;.tagglyTagged .quickopentag, .tagged .quickopentag &quot;,
  5804. &quot; { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }&quot;,
  5805. &quot;.quickopentag .tiddlyLink { padding:2px; padding-left:3px; }&quot;,
  5806. &quot;.quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}&quot;,
  5807. &quot;/* extra specificity to make it work right */&quot;,
  5808. &quot;#displayArea .viewer .quickopentag a.button, &quot;,
  5809. &quot;#displayArea .viewer .quickopentag a.tiddyLink, &quot;,
  5810. &quot;#mainMenu .quickopentag a.tiddyLink, &quot;,
  5811. &quot;#mainMenu .quickopentag a.tiddyLink &quot;,
  5812. &quot; { border:0px solid black; }&quot;,
  5813. &quot;#displayArea .viewer .quickopentag a.button, &quot;,
  5814. &quot;#mainMenu .quickopentag a.button &quot;,
  5815. &quot; { margin-left:0px; padding-left:2px; }&quot;,
  5816. &quot;#displayArea .viewer .quickopentag a.tiddlyLink, &quot;,
  5817. &quot;#mainMenu .quickopentag a.tiddlyLink &quot;,
  5818. &quot; { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }&quot;,
  5819. &quot;a.miniTag {font-size:150%;} &quot;,
  5820. &quot;#mainMenu .quickopentag a.button &quot;,
  5821. &quot; /* looks better in right justified main menus */&quot;,
  5822. &quot; { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }&quot;,
  5823. &quot;#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }&quot;,
  5824. &quot;#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }&quot;,
  5825. &quot;#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }&quot;,
  5826. &quot;/*}}}*/&quot;,
  5827. &quot;&quot;].join(&quot;\n&quot;),
  5828. init: function() {
  5829. // we fully replace these builtins. can't hijack them easily
  5830. window.createTagButton = this.createTagButton;
  5831. config.macros.allTags.handler = this.allTagsHandler;
  5832. config.macros.miniTag = { handler: this.miniTagHandler };
  5833. config.shadowTiddlers[&quot;QuickOpenTagStyles&quot;] = this.styles;
  5834. store.addNotification(&quot;QuickOpenTagStyles&quot;,refreshStyles);
  5835. }
  5836. }
  5837. config.quickOpenTag.init();
  5838. //}}}
  5839. </pre>
  5840. </div>
  5841. <div title="QuickOpenTagStyles" creator="pmario" modifier="pmario" created="201008070948" modified="201008210934" tags="excludeLists" server.title="QuickOpenTagStyles" server.page.revision="107213" server.etag="&quot;neui-em_public/QuickOpenTagStyles/107213;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="8efc2e70297c11efc244173996cf5932ffaa0932">
  5842. <pre>/*{{{*/
  5843. /* created by QuickOpenTagPlugin */
  5844. #sidebarTabs .tabContents a.button { display:inline;}
  5845. .tagglyTagged .quickopentag, .tagged .quickopentag
  5846. { border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }
  5847. .quickopentag .tiddlyLink { padding:2px; padding-left:3px; display:inline; }
  5848. .quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px; display:inline;}
  5849. /* extra specificity to make it work right */
  5850. #displayArea .viewer .quickopentag a.button,
  5851. #displayArea .viewer .quickopentag a.tiddyLink,
  5852. #mainMenu .quickopentag a.tiddyLink,
  5853. #mainMenu .quickopentag a.tiddyLink
  5854. { border:0px solid black; display:inline;}
  5855. #displayArea .viewer .quickopentag a.button,
  5856. #mainMenu .quickopentag a.button
  5857. { margin-left:0px; padding-left:2px; display:inline;}
  5858. #displayArea .viewer .quickopentag a.tiddlyLink,
  5859. #mainMenu .quickopentag a.tiddlyLink
  5860. { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }
  5861. a.miniTag {font-size:150%;}
  5862. #mainMenu .quickopentag a.button
  5863. /* looks better in right justified main menus */
  5864. { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; display:inline;}
  5865. #topMenu .quickopentag { padding:0px; margin:0px; border:0px; }
  5866. #topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }
  5867. #topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; display:inline; }
  5868. /*}}}*/
  5869. </pre>
  5870. </div>
  5871. <div title="RandomColorPalettePlugin" creator="jon" modifier="jon" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="RandomColorPalettePlugin" server.page.revision="257435" server.etag="&quot;system-plugins_public/RandomColorPalettePlugin/257435;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-plugins_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-plugins_public" server.permissions="read" server.content-type="text/javascript" _hash="f0a278b902e87f89a6b816ccf9321ce3bace133d">
  5872. <pre>/***
  5873. |''Name''|RandomColorPalettePlugin|
  5874. |''Description''|Adds a random color palette to TiddlyWiki|
  5875. |''Author''|Jon Robson|
  5876. |''Version''|1.2.8|
  5877. |''Status''|stable|
  5878. |''Source''|http://svn.tiddlywiki.org/Trunk/contributors/JonRobson/plugins/RandomColorPalettePlugin/RandomColorPalettePlugin.js|
  5879. |''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
  5880. !Usage
  5881. {{{
  5882. &lt;&lt;RandomColorPalette&gt;&gt;
  5883. Sets and saves a random color palette on execution
  5884. &lt;&lt;RandomColorPaletteButton&gt;&gt;
  5885. Creates a button, which when clicked will change the color palette
  5886. }}}
  5887. !Parameters
  5888. rgb: yes
  5889. By default the ColorPalette is defined in hex. You can output the colours as rgb by simply including this parameter.
  5890. hue:[0,360]
  5891. Seeds the randomiser with this hue.
  5892. saturation:[0,1]
  5893. Seeds the randomiser with a given saturation
  5894. lightness:[0,1]
  5895. Seeds the randomiser with a value for the lightest color tone (0 being darkest, 1 being lightest).
  5896. darkest:[0,1]
  5897. Seeds the randomiser with a value for the darkest color tone (0 being darkest, 1 being lightest).
  5898. huevariance: [0,90]
  5899. Given a certain hue, specify the angle from the secondary colour to which the secondary and tertiary colours should be determined.
  5900. Note parameters can be discovered by viewing the ColorPaletteParameter slice within the generated ColorPalette.
  5901. !Code
  5902. ***/
  5903. //{{{
  5904. (function($){
  5905. RGB.prototype.toRGBString = function() {
  5906. return &quot;rgb(%0,%1,%2)&quot;.format([parseInt(this.r * 255, 10),
  5907. parseInt(this.g * 255, 10), parseInt(this.b * 255, 10)])
  5908. }
  5909. function HSL_TO_RGB(h, s, l){ // h (hue) between 0 and 360, s (saturation) &amp; l (lightness) between 0 and 1
  5910. var c;
  5911. if(l &lt;= 0.5) {
  5912. c = 2 * l * s;
  5913. } else {
  5914. c = ( 2 - (2 * l)) * s;
  5915. }
  5916. var h1 = h / 60;
  5917. var x = c * (1 - Math.abs((h1 % 2) - 1));
  5918. var r, g, b;
  5919. if(typeof(h) == 'undefined') {
  5920. r = 0;
  5921. g = 0;
  5922. b = 0;
  5923. } else if(0 &lt;= h1 &amp;&amp; h1 &lt; 1) {
  5924. r = c;
  5925. g = x;
  5926. b = 0;
  5927. } else if(1 &lt;= h1 &amp;&amp; h1 &lt; 2) {
  5928. r = x;
  5929. g = c;
  5930. b = 0;
  5931. } else if(2 &lt;= h1 &amp;&amp; h1 &lt; 3) {
  5932. r = 0;
  5933. g = c;
  5934. b = x;
  5935. }
  5936. else if(3 &lt;= h1 &amp;&amp; h1 &lt; 4) {
  5937. r = 0;
  5938. g = x;
  5939. b = c;
  5940. } else if(4 &lt;= h1 &amp;&amp; h1 &lt; 5) {
  5941. r = x;
  5942. g = 0;
  5943. b = c;
  5944. } else if(5 &lt;= h1 &amp;&amp; h1 &lt; 6) {
  5945. r = c;
  5946. g = 0;
  5947. b = x;
  5948. }
  5949. m = l - (0.5 * c);
  5950. r += m;
  5951. g += m;
  5952. b += m;
  5953. return new RGB(r, g, b);
  5954. }
  5955. var macro = config.macros.RandomColorPalette = {
  5956. messagesOn: false,
  5957. changedPaletteText: &quot;We have assigned you a random theme by adjusting the [[ColorPalette]] tiddler.\nDon't like it? Click &lt;&lt;RandomColorPalette&gt;&gt; for another one.&quot;,
  5958. handler: function(place, macroName, params, wikifier, paramString, tiddler) {
  5959. paramString = paramString || &quot;&quot;;
  5960. var options = paramString.parseParams(&quot;name&quot;, null, true, false, true)[0];
  5961. macro.generatePalette(options, true);
  5962. },
  5963. generateRandomNumber: function(min, max, info) {
  5964. var num = (Math.random() * 1);
  5965. if(!info) {
  5966. info = { attempts:0 };
  5967. }
  5968. info.attempts += 1;
  5969. var good = true;
  5970. if(min == max) return max;
  5971. if(min &amp;&amp; num &lt; min) {
  5972. good = false;
  5973. } else if(max &amp;&amp; num &gt; max) {
  5974. good = false;
  5975. }
  5976. if(!good) {
  5977. if(info.attempts &lt; 5) {
  5978. return macro.generateRandomNumber(min, max, info);
  5979. } else {
  5980. if(max) {
  5981. return max;
  5982. } else if(min) {
  5983. return min;
  5984. } else {
  5985. return 1;
  5986. }
  5987. }
  5988. }
  5989. return num;
  5990. },
  5991. getExistingPalette: function(asJSON) {
  5992. var title = &quot;ColorPalette&quot;;
  5993. var tiddlerText;
  5994. if(store.tiddlerExists(title)) {
  5995. tiddlerText = store.getTiddlerText(title);
  5996. } else if(store.isShadowTiddler(title)){
  5997. tiddlerText = config.shadowTiddlers[title];
  5998. }
  5999. if(asJSON) {
  6000. var json = {};
  6001. if(tiddlerText) {
  6002. var lines = tiddlerText.split(&quot;\n&quot;);
  6003. for(var i = 0; i &lt; lines.length; i++) {
  6004. var definition = lines[i].split(&quot;:&quot;);
  6005. if(definition.length == 2) {
  6006. var name = definition[0].trim();
  6007. var value = definition[1].trim();
  6008. json[name] = value;
  6009. }
  6010. }
  6011. }
  6012. return json;
  6013. } else {
  6014. return tiddlerText;
  6015. }
  6016. },
  6017. generatePalette: function(options, save) {
  6018. var outputRGB = options.rgb &amp;&amp; options.rgb[0];
  6019. var palette = macro.getExistingPalette(true);
  6020. var hue = options.hue ? parseInt(options.hue[0]) : Math.floor(Math.random() * 359);
  6021. var saturation = options.saturation ? parseFloat(options.saturation[0]) : macro.generateRandomNumber(0.3, 0.7);
  6022. var dark = options.darkest ? parseFloat(options.darkest[0]) : macro.generateRandomNumber(0, 0.1);
  6023. var pale = options.lightness ? parseFloat(options.lightness[0]) : macro.generateRandomNumber(0.6 + dark, 1);
  6024. var lightness_values = {Dark:dark, Mid:pale - ( ( pale - dark ) / 2 ),
  6025. Light:pale - ( ( pale - dark ) / 4 ), Pale:pale};
  6026. var opposite_hue = (hue + 180) % 360;
  6027. var seed = options.huevariance ? options.huevariance[0] : Math.floor((85 * Math.random()) + 5); // we want it to be at least 5 degrees
  6028. var huetwo = (opposite_hue + seed) % 360;
  6029. var huethree = (opposite_hue - seed) % 360;
  6030. if(huetwo &lt; 0) {
  6031. huetwo = 360 + huetwo;
  6032. }
  6033. if(huethree &lt; 0) {
  6034. huethree = 360 + huethree;
  6035. }
  6036. for(var j in lightness_values) {
  6037. if(true) {
  6038. palette[&quot;Primary&quot; + j] = HSL_TO_RGB(hue, saturation, lightness_values[j]);
  6039. palette[&quot;Secondary&quot; + j] = HSL_TO_RGB(huetwo, saturation, lightness_values[j]);
  6040. palette[&quot;Tertiary&quot; + j] = HSL_TO_RGB(huethree, saturation, lightness_values[j]);
  6041. }
  6042. }
  6043. palette.Background = HSL_TO_RGB(hue, saturation, 0.92);
  6044. palette.Foreground = HSL_TO_RGB(hue, saturation, 0.08);
  6045. palette.ColorPaletteParameters = [&quot;HSL([&quot;, hue, &quot;|&quot;, seed, &quot;], [&quot;, saturation, &quot;],&quot;,
  6046. &quot;[&quot;, dark, &quot;|&quot;, pale, &quot;])&quot;].join(&quot;&quot;);
  6047. // construct new ColorPalette
  6048. var text = [&quot;/*{{{*/\n&quot;];
  6049. var colorcode;
  6050. for(var id in palette) {
  6051. if(true) {
  6052. var color = palette[id];
  6053. if(outputRGB) {
  6054. colorcode = color.toRGBString();
  6055. } else {
  6056. colorcode = color.toString();
  6057. }
  6058. text.push(&quot;%0: %1\n&quot;.format([id, colorcode]));
  6059. }
  6060. }
  6061. text.push(&quot;/*}}}*/&quot;);
  6062. text = text.join(&quot;&quot;);
  6063. if(save) {
  6064. macro.saveColorPalette(text);
  6065. }
  6066. return text;
  6067. },
  6068. saveColorPalette: function(text) {
  6069. var tid = store.getTiddler(&quot;ColorPalette&quot;);
  6070. if(!tid) {
  6071. tid = new Tiddler(&quot;ColorPalette&quot;);
  6072. tid.fields = merge({}, config.defaultCustomFields);
  6073. tid.modifier = &quot;RandomColorPalette Macro&quot;;
  6074. } // TODO: detect that the ColorPalette in the space comes from outside recipe
  6075. tid.fields[&quot;server.page.revision&quot;] = &quot;false&quot;; // edit conflicts dont matter
  6076. // save the color palette in tid
  6077. tid = store.saveTiddler(tid.title, tid.title, text, tid.modifier, tid.modified,
  6078. tid.tags, tid.fields, false, tid.created, tid.creator);
  6079. // an interval is used to cope with users clicking on the palette button quickly.
  6080. if(macro._nextSave) {
  6081. window.clearTimeout(macro._nextSave);
  6082. }
  6083. macro._nextSave = window.setTimeout(function() {
  6084. autoSaveChanges(null, [tid]);
  6085. }, 2000);
  6086. // temporary workaround for IE.
  6087. $.twStylesheet.remove({ id: &quot;StyleSheetColors&quot; });
  6088. $.twStylesheet.remove({ id: &quot;StyleSheet&quot; });
  6089. refreshAll();
  6090. macro.reportChange();
  6091. return tid;
  6092. },
  6093. reportChange: function() {
  6094. if(macro.messagesOn) { // only display message once..
  6095. var msgPlace = getMessageDiv();
  6096. if(!$(&quot;.changedPalette&quot;, msgPlace)[0]) {
  6097. var tempPlace = document.createElement(&quot;div&quot;);
  6098. wikify(&quot;{{changedPalette{&quot; + macro.changedPaletteText + &quot;}}}&quot;, tempPlace);
  6099. msgPlace.appendChild(tempPlace);
  6100. }
  6101. }
  6102. }
  6103. };
  6104. config.macros.RandomColorPaletteButton = {
  6105. text: &quot;New ColorPalette&quot;,
  6106. tooltip: &quot;Generate a random colour scheme for your TiddlyWiki&quot;,
  6107. handler: function(place, macroName, params, wikifier, paramString, tiddler) {
  6108. var btnHandler = function(ev) {
  6109. macro.handler(place, macroName, params, wikifier, paramString, tiddler);
  6110. return false;
  6111. };
  6112. createTiddlyButton(place, this.text, this.tooltip, btnHandler);
  6113. }
  6114. };
  6115. })(jQuery);
  6116. //}}}</pre>
  6117. </div>
  6118. <div title="RenameTagsPlugin" creator="pmario" modifier="pmario" created="201008070948" modified="201009181705" tags="excludeLists systemConfig" server.title="RenameTagsPlugin" server.page.revision="107217" server.etag="&quot;neui-em_public/RenameTagsPlugin/107217;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="3e3bab167400dc5d10f601d3a5717aeccd2d8aa4">
  6119. <pre>/***
  6120. |Name:|RenameTagsPlugin|
  6121. |Description:|Allows you to easily rename or delete tags across multiple tiddlers|
  6122. |Version:|3.0 ($Rev: 5501 $)|
  6123. |Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
  6124. |Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
  6125. |Author:|Simon Baird &lt;simon.baird@gmail.com&gt;|
  6126. |License|http://mptw.tiddlyspot.com/#TheBSDLicense|
  6127. Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
  6128. ***/
  6129. //{{{
  6130. config.renameTags = {
  6131. prompts: {
  6132. rename: &quot;Rename the tag '%0' to '%1' in %2 tidder%3?&quot;,
  6133. remove: &quot;Remove the tag '%0' from %1 tidder%2?&quot;
  6134. },
  6135. removeTag: function(tag,tiddlers) {
  6136. store.suspendNotifications();
  6137. for (var i=0;i&lt;tiddlers.length;i++) {
  6138. store.setTiddlerTag(tiddlers[i].title,false,tag);
  6139. }
  6140. store.resumeNotifications();
  6141. store.notifyAll();
  6142. },
  6143. renameTag: function(oldTag,newTag,tiddlers) {
  6144. store.suspendNotifications();
  6145. for (var i=0;i&lt;tiddlers.length;i++) {
  6146. store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
  6147. store.setTiddlerTag(tiddlers[i].title,true,newTag); // add new
  6148. }
  6149. store.resumeNotifications();
  6150. store.notifyAll();
  6151. },
  6152. storeMethods: {
  6153. saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,
  6154. saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
  6155. if (title != newTitle) {
  6156. var tagged = this.getTaggedTiddlers(title);
  6157. if (tagged.length &gt; 0) {
  6158. // then we are renaming a tag
  6159. if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length&gt;1?&quot;s&quot;:&quot;&quot;])))
  6160. config.renameTags.renameTag(title,newTitle,tagged);
  6161. if (!this.tiddlerExists(title) &amp;&amp; newBody == &quot;&quot;)
  6162. // dont create unwanted tiddler
  6163. return null;
  6164. }
  6165. }
  6166. return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
  6167. },
  6168. removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,
  6169. removeTiddler: function(title) {
  6170. var tagged = this.getTaggedTiddlers(title);
  6171. if (tagged.length &gt; 0)
  6172. if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length&gt;1?&quot;s&quot;:&quot;&quot;])))
  6173. config.renameTags.removeTag(title,tagged);
  6174. return this.removeTiddler_orig_renameTags(title);
  6175. }
  6176. },
  6177. init: function() {
  6178. merge(TiddlyWiki.prototype,this.storeMethods);
  6179. }
  6180. }
  6181. config.renameTags.init();
  6182. //}}}
  6183. </pre>
  6184. </div>
  6185. <div title="RevisionTemplate" creator="osmosoft" modifier="osmosoft" created="201102181425" modified="201102181425" tags="excludeLists excludeMissing excludeSearch" server.title="RevisionTemplate" server.page.revision="257504" server.etag="&quot;system-theme_public/RevisionTemplate/257504;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-theme_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-theme_public" server.permissions="read" server.content-type="" _hash="b182c10523c4d9fe3f622b1529b70d43f5150701">
  6186. <pre>&lt;!--{{{--&gt;
  6187. &lt;div macro='slideRevision'&gt;&lt;/div&gt;
  6188. &lt;div class='heading'&gt;
  6189. &lt;span class=&quot;titleBar&quot;&gt;
  6190. &lt;div class='title' macro='view title text'&gt;&lt;/div&gt;
  6191. &lt;/span&gt;
  6192. &lt;span class='modifierIcon'
  6193. macro='view modifier SiteIcon label:no height:48 width:48 preserveAspectRatio:yes'&gt;
  6194. &lt;/span&gt;
  6195. &lt;div class='toolbar'
  6196. macro='toolbar [[ToolbarCommands::RevisionToolbar]] icons:yes height:48 width:48 more:popup'&gt;
  6197. &lt;/div&gt;
  6198. &lt;div class='tagClear'&gt;&lt;/div&gt;
  6199. &lt;/div&gt;
  6200. &lt;div class='content'&gt;
  6201. &lt;div class='viewer' macro='view text wikified'&gt;&lt;/div&gt;
  6202. &lt;/div&gt;
  6203. &lt;div class='tagInfo'&gt;
  6204. &lt;div class='tidTags' macro='tags'&gt;&lt;/div&gt;
  6205. &lt;div class='tagging' macro='tagging'&gt;&lt;/div&gt;
  6206. &lt;/div&gt;
  6207. &lt;!--}}}--&gt;</pre>
  6208. </div>
  6209. <div title="RevisionsCommandPlugin" creator="FND" modifier="FND" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="RevisionsCommandPlugin" server.page.revision="257450" server.etag="&quot;system/RevisionsCommandPlugin/257450;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system" server.permissions="read" server.content-type="text/javascript" _hash="d36d2c8a7f8dd9a59dd54e772114a415b2c22979">
  6210. <pre>/***
  6211. |''Name''|RevisionsCommandPlugin|
  6212. |''Description''|provides access to tiddler revisions|
  6213. |''Author''|FND|
  6214. |''Contributors''|Martin Budden|
  6215. |''Version''|0.3.3|
  6216. |''Status''|@@beta@@|
  6217. |''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/RevisionsCommandPlugin.js|
  6218. |''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/plugins/|
  6219. |''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
  6220. |''CoreVersion''|2.6.0|
  6221. |''Keywords''|serverSide|
  6222. !Usage
  6223. Extend [[ToolbarCommands]] with {{{revisions}}}.
  6224. !Revision History
  6225. !!v0.1 (2009-07-23)
  6226. * initial release (renamed from experimental ServerCommandsPlugin)
  6227. !!v0.2 (2010-03-04)
  6228. * suppressed wikification in diff view
  6229. !!v0.3 (2010-04-07)
  6230. * restored wikification in diff view
  6231. * added link to side-by-side diff view
  6232. !To Do
  6233. * strip server.* fields from revision tiddlers
  6234. * resolve naming conflicts
  6235. * i18n, l10n
  6236. * code sanitizing
  6237. * documentation
  6238. !Code
  6239. ***/
  6240. //{{{
  6241. (function($) {
  6242. jQuery.twStylesheet(&quot;.diff { white-space: pre, font-family: monospace }&quot;,
  6243. { id: &quot;diff&quot; });
  6244. var cmd = config.commands.revisions = {
  6245. type: &quot;popup&quot;,
  6246. hideShadow: true,
  6247. text: &quot;revisions&quot;,
  6248. tooltip: &quot;display tiddler revisions&quot;,
  6249. revTooltip: &quot;&quot;, // TODO: populate dynamically?
  6250. loadLabel: &quot;loading...&quot;,
  6251. loadTooltip: &quot;loading revision list&quot;,
  6252. selectLabel: &quot;select&quot;,
  6253. selectTooltip: &quot;select revision for comparison&quot;,
  6254. selectedLabel: &quot;selected&quot;,
  6255. compareLabel: &quot;compare&quot;,
  6256. linkLabel: &quot;side-by-side view&quot;,
  6257. revSuffix: &quot; [rev. #%0]&quot;,
  6258. diffSuffix: &quot; [diff: #%0 #%1]&quot;,
  6259. dateFormat: &quot;YYYY-0MM-0DD 0hh:0mm&quot;,
  6260. listError: &quot;revisions could not be retrieved&quot;,
  6261. handlePopup: function(popup, title) {
  6262. title = this.stripSuffix(&quot;rev&quot;, title);
  6263. title = this.stripSuffix(&quot;diff&quot;, title);
  6264. var tiddler = store.getTiddler(title);
  6265. var type = _getField(&quot;server.type&quot;, tiddler);
  6266. var adaptor = new config.adaptors[type]();
  6267. var limit = null; // TODO: customizable
  6268. var context = {
  6269. host: _getField(&quot;server.host&quot;, tiddler),
  6270. workspace: _getField(&quot;server.workspace&quot;, tiddler)
  6271. };
  6272. var loading = createTiddlyButton(popup, cmd.loadLabel, cmd.loadTooltip);
  6273. var params = { popup: popup, loading: loading, origin: title };
  6274. adaptor.getTiddlerRevisionList(title, limit, context, params, this.displayRevisions);
  6275. },
  6276. displayRevisions: function(context, userParams) {
  6277. removeNode(userParams.loading);
  6278. if(context.status) {
  6279. var callback = function(ev) {
  6280. var e = ev || window.event;
  6281. var revision = resolveTarget(e).getAttribute(&quot;revision&quot;);
  6282. context.adaptor.getTiddlerRevision(tiddler.title, revision, context,
  6283. userParams, cmd.displayTiddlerRevision);
  6284. };
  6285. var table = createTiddlyElement(userParams.popup, &quot;table&quot;);
  6286. for(var i = 0; i &lt; context.revisions.length; i++) {
  6287. var tiddler = context.revisions[i];
  6288. var row = createTiddlyElement(table, &quot;tr&quot;);
  6289. var timestamp = tiddler.modified.formatString(cmd.dateFormat);
  6290. var revision = tiddler.fields[&quot;server.page.revision&quot;];
  6291. var cell = createTiddlyElement(row, &quot;td&quot;);
  6292. createTiddlyButton(cell, timestamp, cmd.revTooltip, callback, null,
  6293. null, null, { revision: revision });
  6294. cell = createTiddlyElement(row, &quot;td&quot;, null, null, tiddler.modifier);
  6295. cell = createTiddlyElement(row, &quot;td&quot;);
  6296. createTiddlyButton(cell, cmd.selectLabel, cmd.selectTooltip,
  6297. cmd.revisionSelected, null, null, null,
  6298. { index:i, revision: revision, col: 2 });
  6299. cmd.context = context; // XXX: unsafe (singleton)!?
  6300. }
  6301. } else {
  6302. $(&quot;&lt;li /&gt;&quot;).text(cmd.listError).appendTo(userParams.popup);
  6303. }
  6304. },
  6305. revisionSelected: function(ev) {
  6306. var e = ev || window.event;
  6307. e.cancelBubble = true;
  6308. if(e.stopPropagation) {
  6309. e.stopPropagation();
  6310. }
  6311. var n = resolveTarget(e);
  6312. var index = n.getAttribute(&quot;index&quot;);
  6313. var col = n.getAttribute(&quot;col&quot;);
  6314. while(!index || !col) {
  6315. n = n.parentNode;
  6316. index = n.getAttribute(&quot;index&quot;);
  6317. col = n.getAttribute(&quot;col&quot;);
  6318. }
  6319. cmd.revision = n.getAttribute(&quot;revision&quot;);
  6320. var table = n.parentNode.parentNode.parentNode;
  6321. var rows = table.childNodes;
  6322. for(var i = 0; i &lt; rows.length; i++) {
  6323. var c = rows[i].childNodes[col].firstChild;
  6324. if(i == index) {
  6325. if(c.textContent) {
  6326. c.textContent = cmd.selectedLabel;
  6327. } else {
  6328. c.text = cmd.selectedLabel;
  6329. }
  6330. } else {
  6331. if(c.textContent) {
  6332. c.textContent = cmd.compareLabel;
  6333. } else {
  6334. c.text = cmd.compareLabel;
  6335. }
  6336. c.onclick = cmd.compareSelected;
  6337. }
  6338. }
  6339. },
  6340. compareSelected: function(ev) {
  6341. var e = ev || window.event;
  6342. var n = resolveTarget(e);
  6343. var context = cmd.context;
  6344. context.rev1 = n.getAttribute(&quot;revision&quot;);
  6345. context.rev2 = cmd.revision;
  6346. context.tiddler = context.revisions[n.getAttribute(&quot;index&quot;)];
  6347. context.format = &quot;unified&quot;;
  6348. context.adaptor.getTiddlerDiff(context.tiddler.title, context,
  6349. context.userParams, cmd.displayTiddlerDiffs);
  6350. },
  6351. displayTiddlerDiffs: function(context, userParams) {
  6352. var tiddler = context.tiddler;
  6353. tiddler.title += cmd.diffSuffix.format([context.rev1, context.rev2]);
  6354. tiddler.text = &quot;{{diff{\n&quot; + context.diff + &quot;\n}}}&quot;;
  6355. tiddler.tags = [&quot;diff&quot;];
  6356. tiddler.fields.doNotSave = &quot;true&quot;; // XXX: correct?
  6357. if(!store.getTiddler(tiddler.title)) {
  6358. store.addTiddler(tiddler);
  6359. }
  6360. var src = story.getTiddler(userParams.origin);
  6361. var tiddlerEl = story.displayTiddler(src, tiddler);
  6362. var uri = context.uri.replace(&quot;format=unified&quot;, &quot;format=horizontal&quot;);
  6363. var link = $('&lt;a target=&quot;_blank&quot; /&gt;').attr(&quot;href&quot;, uri).text(cmd.linkLabel);
  6364. $(&quot;.viewer&quot;, tiddlerEl).prepend(link);
  6365. },
  6366. displayTiddlerRevision: function(context, userParams) {
  6367. var tiddler = context.tiddler;
  6368. tiddler.title += cmd.revSuffix.format([tiddler.fields[&quot;server.page.revision&quot;]]);
  6369. tiddler.fields.doNotSave = &quot;true&quot;; // XXX: correct?
  6370. if(!store.getTiddler(tiddler.title)) {
  6371. store.addTiddler(tiddler);
  6372. }
  6373. var src = story.getTiddler(userParams.origin);
  6374. story.displayTiddler(src, tiddler);
  6375. },
  6376. stripSuffix: function(type, title) {
  6377. var str = cmd[type + &quot;Suffix&quot;];
  6378. var i = str.indexOf(&quot;%0&quot;);
  6379. i = title.indexOf(str.substr(0, i));
  6380. if(i != -1) {
  6381. title = title.substr(0, i);
  6382. }
  6383. return title;
  6384. }
  6385. };
  6386. var _getField = function(name, tiddler) {
  6387. return tiddler.fields[name] || config.defaultCustomFields[name];
  6388. };
  6389. })(jQuery);
  6390. //}}}</pre>
  6391. </div>
  6392. <div title="RoundaboutPlugin" creator="pmario" modifier="pmario" created="201102201726" modified="201102210040" tags="systemConfig" server.title="RoundaboutPlugin" server.page.revision="260087" server.etag="&quot;roundabout-plugin_public/RoundaboutPlugin/260087;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/roundabout-plugin_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="roundabout-plugin_public" server.permissions="read, write, create, delete" server.content-type="" _hash="67415f8be2f7c34d393a4cb4db6630ffcb60dfdd">
  6393. <pre>/***
  6394. |''Name''|RoundaboutPlugin|
  6395. |''Description''|Wraps the jQuery.roundabout() function into a TiddlyWiki friendly macro|
  6396. |''Author''|PMario|
  6397. |''Version''|0.1.2|
  6398. |''Status''|''beta''|
  6399. |''Source''|http://roundabout-plugin.tiddlyspace.com/|
  6400. |''License''|CC-by-nc-sa|
  6401. |''CoreVersion''|2.5.0|
  6402. |''Keywords''|roundabout navigation UI |
  6403. ***/
  6404. //{{{
  6405. version.extensions.Roundabout = {
  6406. major: 0,
  6407. minor: 1,
  6408. revision: 2,
  6409. date: new Date(2011, 2, 20)
  6410. };
  6411. (function ($) {
  6412. var me;
  6413. config.macros.roundabout = me = {
  6414. // should be done for easy localisation
  6415. locale: {
  6416. },
  6417. // 'mousewheel' has its special handling, because it needs to be bound to outer element. See below.
  6418. possibleAddOns: ['focus', 'blur', 'click', 'mouseover', 'mouseout'],
  6419. holderAddOns: ['mousewheel'],
  6420. calcTextSlices: function (text) {
  6421. var slices = {};
  6422. var helper = {
  6423. 'true': true,
  6424. 'false': false,
  6425. 'null': null
  6426. };
  6427. store.slicesRE.lastIndex = 0;
  6428. var m = store.slicesRE.exec(text);
  6429. while (m) {
  6430. if (m[2]) {
  6431. if (isNaN(m[3])) {
  6432. slices[m[2]] = (m[3] in helper) ? helper[m[3]] : m[3];
  6433. }
  6434. else {
  6435. slices[m[2]] = parseFloat(m[3]);
  6436. }
  6437. } else {
  6438. if (isNaN(m[6])) {
  6439. slices[m[5]] = (m[6] in helper) ? helper[m[6]] : m[6];
  6440. }
  6441. else {
  6442. slices[m[5]] = parseFloat(m[6]);
  6443. }
  6444. }
  6445. m = store.slicesRE.exec(text);
  6446. }
  6447. return slices;
  6448. },
  6449. rdSettings: function (cName) {
  6450. var settings = {};
  6451. var text;
  6452. var title = cName;
  6453. var section = null;
  6454. var pos = title.indexOf(config.textPrimitives.sectionSeparator);
  6455. if (pos != -1) {
  6456. section = title.substr(pos + config.textPrimitives.sectionSeparator.length);
  6457. title = title.substr(0, pos);
  6458. }
  6459. cName = (title) ? cName : tiddler.title + cName;
  6460. title = (title) ? title : tiddler.title;
  6461. if (store.tiddlerExists(title)) {
  6462. // console.log({'cName':cName, 'text':text});
  6463. text = store.getTiddlerText(cName);
  6464. settings = me.calcTextSlices(text);
  6465. // console.log({'settings':settings});
  6466. }
  6467. var cmra = config.macros.roundabout.addOns;
  6468. var p = me.possibleAddOns;
  6469. var x;
  6470. for (var i = 0, im = p.length; i&lt;im; i += 1) {
  6471. x = settings[p[i]];
  6472. if (x) {
  6473. settings[p[i]] = (cmra &amp;&amp; cmra[x]) ? cmra[x] : null;
  6474. }
  6475. }
  6476. p = me.holderAddOns;
  6477. for (i = 0, im = p.length; i&lt;im; i += 1) {
  6478. x = settings[p[i]];
  6479. if (x) {
  6480. settings[p[i]] = (cmra &amp;&amp; cmra[x]) ? cmra[x] : null;
  6481. }
  6482. }
  6483. // console.log('settings: ', settings, 'x:', x);
  6484. return settings;
  6485. },
  6486. // &lt;&lt;roundabout selector:'.moveIt' childSelector:'li' defaults:##Defaults&gt;&gt;
  6487. handler: function (place, macroName, params, wikifier, paramString, tiddler) {
  6488. params = paramString.parseParams(null, null, true);
  6489. var conf = {}; // everything, that comes from roundabout library
  6490. var configId = getParam(params, 'defaults', undefined);
  6491. if (configId) {
  6492. conf = me.rdSettings(configId);
  6493. }
  6494. conf.childSelector = getParam(params, 'childSelector', 'li');
  6495. conf.selector = getParam(params, 'selector', 'ul');
  6496. // console.log({'conf':conf});
  6497. var p = me.possibleAddOns;
  6498. for (var i = 0; i&lt;p.length; i += 1) {
  6499. if (conf[p[i]]) {
  6500. $(conf.selector + ' ' + conf.childSelector)[p[i]](conf[p[i]]);
  6501. }
  6502. }
  6503. // init mousewheel, if there. add data section to be used by futur AddOns.
  6504. if (conf.mousewheel) {
  6505. $(conf.selector).roundabout(conf).bind('mousewheel', conf.mousewheel).data('conf',conf);
  6506. }
  6507. else {
  6508. $(conf.selector).roundabout(conf).data('conf',conf);
  6509. }
  6510. } // handler
  6511. };
  6512. })(jQuery);
  6513. //}}}
  6514. </pre>
  6515. </div>
  6516. <div title="RoundaboutPluginAddOns" creator="pmario" modifier="pmario" created="201102201731" modified="201102201934" tags="systemConfig" server.title="RoundaboutPluginAddOns" server.page.revision="259616" server.etag="&quot;roundabout-plugin_public/RoundaboutPluginAddOns/259616;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/roundabout-plugin_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="roundabout-plugin_public" server.permissions="read, write, create, delete" server.content-type="" _hash="25716e157e43567175957b3658ab5caff44c669a">
  6517. <pre>/***
  6518. |''Name''|RoundaboutPluginAddOns|
  6519. |''Description''|Add ons for RoundaboutPlugin|
  6520. |''Author''|PMario|
  6521. |''Version''|0.1.1|
  6522. |''Status''|''beta''|
  6523. |''Source''|http://roundabout-plugin.tiddlyspace.com/|
  6524. |''License''|CC-by-nc-sa|
  6525. |''CoreVersion''|2.5.0|
  6526. |''Keywords''|roundabout navigation UI |
  6527. ***/
  6528. //{{{
  6529. version.extensions.RoundaboutAddOns = {
  6530. major: 0,
  6531. minor: 1,
  6532. revision: 1,
  6533. date: new Date(2011, 2, 20)
  6534. };
  6535. (function ($) {
  6536. config.macros.roundabout.addOns = {
  6537. focusAddOn: function (e) {
  6538. displayMessage('focus event fired at -&gt; ' + $(this).text());
  6539. // console.log('focus: ', '$this: ', $(this));
  6540. },
  6541. blurAddOn: function (e) {
  6542. displayMessage('blur event fired at -&gt; ' + $(this).text());
  6543. // console.log('blur: ', '$this: ', $(this));
  6544. },
  6545. clickAddOn: function (e) {
  6546. displayMessage('click event fired at -&gt; ' + $(this).text());
  6547. // console.log('click: ', '$this: ', $(this));
  6548. },
  6549. mouseoverAddOn: function (e) {
  6550. displayMessage('mouseover -&gt; ' + $(this).text());
  6551. // console.log('mouseOver: ', '$this: ', $(this));
  6552. },
  6553. mouseoutAddOn: function (e) {
  6554. displayMessage('mouseout -&gt; ' + $(this).text());
  6555. // console.log('mouseOut: ', '$this: ', $(this));
  6556. },
  6557. mousewheelAddOn: function (e, delta) {
  6558. var conf = $(this).data('conf');
  6559. var mouseSpeedModifier = (conf &amp;&amp; conf.mouseSpeed) ? conf.mouseSpeed : 0;
  6560. e.preventDefault();
  6561. delta = delta * mouseSpeedModifier;
  6562. if (delta !== 0) $(this).roundabout_adjustBearing(delta);
  6563. // console.log('mouseWheel: ', 'e: ', e, 'delta: ', delta);
  6564. // if you return false, it prevents the event from bubbling.
  6565. // Which causes the wheel to stop if a block is hovered.
  6566. //return false;
  6567. }
  6568. };
  6569. })(jQuery);
  6570. //}}}</pre>
  6571. </div>
  6572. <div title="RoundaboutStyleSheet" creator="pmario" modifier="pmario" created="201102202359" modified="201102202359" server.title="RoundaboutStyleSheet" server.page.revision="260047" server.etag="&quot;roundabout-plugin_public/RoundaboutStyleSheet/260047;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/roundabout-plugin_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="roundabout-plugin_public" server.permissions="read, write, create, delete" server.content-type="" _hash="85042f64f10c7a591e7ef647bcb853dbb0cdb1ab">
  6573. <pre>/*{{{*/
  6574. .roundabout-holder {
  6575. list-style: none;
  6576. width: 80%;
  6577. margin: 2% auto;
  6578. height: 10em;
  6579. display: block;
  6580. }
  6581. /* movable item is deactivated at the moment */
  6582. .Xroundabout-moveable-item {
  6583. width: 15em;
  6584. height: 5em;
  6585. background: lightgray;
  6586. cursor: pointer;
  6587. }
  6588. .roundabout-in-focus {
  6589. cursor: auto;
  6590. }
  6591. #filler {
  6592. text-align: center;
  6593. height: 1em;
  6594. }
  6595. /*}}}*/</pre>
  6596. </div>
  6597. <div title="SearchOptionsPlugin" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists systemConfig" server.title="SearchOptionsPlugin" server.page.revision="107219" server.etag="&quot;neui-em_public/SearchOptionsPlugin/107219;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="86ceebed1ec3249d7dddc3bb14d4865ceebed82f">
  6598. <pre>/***
  6599. |Name|SearchOptionsPlugin|
  6600. |Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
  6601. |Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
  6602. |Version|3.0.7|
  6603. |Author|Eric Shulman|
  6604. |License|http://www.TiddlyTools.com/#LegalStatements|
  6605. |~CoreVersion|2.1|
  6606. |Type|plugin|
  6607. |Description|extend core search function with additional user-configurable options|
  6608. Adds extra options to core search function including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddlers'' instead of immediately displaying all matches. This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
  6609. !!!!!Documentation
  6610. &gt;see [[SearchOptionsPluginInfo]]
  6611. !!!!!Configuration
  6612. &lt;&lt;&lt;
  6613. Search in:
  6614. &lt;&lt;option chkSearchTitles&gt;&gt; titles &lt;&lt;option chkSearchText&gt;&gt; text &lt;&lt;option chkSearchTags&gt;&gt; tags &lt;&lt;option chkSearchFields&gt;&gt; fields &lt;&lt;option chkSearchShadows&gt;&gt; shadows
  6615. &lt;&lt;option chkSearchHighlight&gt;&gt; Highlight matching text in displayed tiddlers
  6616. &lt;&lt;option chkSearchList&gt;&gt; Show list of matches
  6617. &lt;&lt;option chkSearchListTiddler&gt;&gt; Write list to [[SearchResults]] tiddler
  6618. &lt;&lt;option chkSearchTitlesFirst&gt;&gt; Show title matches first
  6619. &lt;&lt;option chkSearchByDate&gt;&gt; Sort matching tiddlers by modification date (most recent first)
  6620. &lt;&lt;option chkSearchResultsOptions&gt;&gt; Include {{{options...}}} slider in &quot;search again&quot; form
  6621. &lt;&lt;option chkIncrementalSearch&gt;&gt; Incremental key-by-key search: {{twochar{&lt;&lt;option txtIncrementalSearchMin&gt;&gt;}}} or more characters, {{threechar{&lt;&lt;option txtIncrementalSearchDelay&gt;&gt;}}} msec delay
  6622. &lt;&lt;option chkSearchOpenTiddlers&gt;&gt; Search only in tiddlers that are currently displayed
  6623. &lt;&lt;option chkSearchExcludeTags&gt;&gt; Exclude tiddlers tagged with: &lt;&lt;option txtSearchExcludeTags&gt;&gt;
  6624. &lt;&lt;&lt;
  6625. !!!!!Revisions
  6626. &lt;&lt;&lt;
  6627. 2010.05.03 3.0.8 added chkSearchResultsOptions to allow/omit the &quot;options...&quot; slider from the &quot;search again&quot; form
  6628. |please see [[SearchOptionsPluginInfo]] for additional revision details|
  6629. 2005.10.18 1.0.0 Initial Release
  6630. &lt;&lt;&lt;
  6631. !!!!!Code
  6632. ***/
  6633. //{{{
  6634. version.extensions.SearchOptionsPlugin= {major: 3, minor: 0, revision: 8, date: new Date(2010,5,3)};
  6635. var defaults={
  6636. chkSearchTitles: true,
  6637. chkSearchText: true,
  6638. chkSearchTags: true,
  6639. chkSearchFields: true,
  6640. chkSearchTitlesFirst: true,
  6641. chkSearchList: true,
  6642. chkSearchHighlight: true,
  6643. chkSearchListTiddler: false,
  6644. chkSearchByDate: false,
  6645. chkIncrementalSearch: true,
  6646. chkSearchShadows: true,
  6647. chkSearchOpenTiddlers: false,
  6648. chkSearchResultsOptions:true,
  6649. chkSearchExcludeTags: true,
  6650. txtSearchExcludeTags: 'excludeSearch',
  6651. txtIncrementalSearchDelay: 500,
  6652. txtIncrementalSearchMin: 3
  6653. }; for (var id in defaults) if (config.options[id]===undefined)
  6654. config.options[id]=defaults[id];
  6655. if (config.macros.search.reportTitle==undefined)
  6656. config.macros.search.reportTitle=&quot;SearchResults&quot;; // note: not a cookie!
  6657. config.macros.search.label+=&quot;\xa0&quot;; // a little bit of space just because it looks better
  6658. //}}}
  6659. // // searchLink: {{{[search[text to find]] OR [search[text to display|text to find]]}}}
  6660. //{{{
  6661. config.formatters.push( {
  6662. name: &quot;searchLink&quot;,
  6663. match: &quot;\\[search\\[&quot;,
  6664. lookaheadRegExp: /\[search\[(.*?)(?:\|(.*?))?\]\]/mg,
  6665. prompt: &quot;search for: '%0'&quot;,
  6666. handler: function(w)
  6667. {
  6668. this.lookaheadRegExp.lastIndex = w.matchStart;
  6669. var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
  6670. if(lookaheadMatch &amp;&amp; lookaheadMatch.index == w.matchStart) {
  6671. var label=lookaheadMatch[1];
  6672. var text=lookaheadMatch[2]||label;
  6673. var prompt=this.prompt.format([text]);
  6674. var btn=createTiddlyButton(w.output,label,prompt,
  6675. function(){story.search(this.getAttribute(&quot;searchText&quot;))},&quot;searchLink&quot;);
  6676. btn.setAttribute(&quot;searchText&quot;,text);
  6677. w.nextMatch = this.lookaheadRegExp.lastIndex;
  6678. }
  6679. }
  6680. });
  6681. //}}}
  6682. // // incremental search uses option settings instead of hard-coded delay and minimum input values
  6683. //{{{
  6684. var fn=config.macros.search.onKeyPress;
  6685. fn=fn.toString().replace(/500/g, &quot;config.options.txtIncrementalSearchDelay||500&quot;);
  6686. fn=fn.toString().replace(/&gt; 2/g, &quot;&gt;=(config.options.txtIncrementalSearchMin||3)&quot;);
  6687. eval(&quot;config.macros.search.onKeyPress=&quot;+fn);
  6688. //}}}
  6689. // // REPLACE story.search() for option to &quot;show search results in a list&quot;
  6690. //{{{
  6691. Story.prototype.search = function(text,useCaseSensitive,useRegExp)
  6692. {
  6693. var co=config.options; // abbrev
  6694. var re=new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? &quot;mg&quot; : &quot;img&quot;);
  6695. if (config.options.chkSearchHighlight) highlightHack=re;
  6696. var matches = store.search(re,co.chkSearchByDate?&quot;modified&quot;:&quot;title&quot;,&quot;&quot;);
  6697. if (co.chkSearchByDate) matches=matches.reverse(); // most recent first
  6698. var q = useRegExp ? &quot;/&quot; : &quot;'&quot;;
  6699. clearMessage();
  6700. if (!matches.length) {
  6701. if (co.chkSearchListTiddler) discardSearchResults();
  6702. displayMessage(config.macros.search.failureMsg.format([q+text+q]));
  6703. } else {
  6704. if (co.chkSearchList||co.chkSearchListTiddler)
  6705. reportSearchResults(text,matches);
  6706. else {
  6707. var titles = []; for(var t=0; t&lt;matches.length; t++) titles.push(matches[t].title);
  6708. this.closeAllTiddlers(); story.displayTiddlers(null,titles);
  6709. displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
  6710. }
  6711. }
  6712. highlightHack = null;
  6713. }
  6714. //}}}
  6715. // // REPLACE store.search() for enhanced searching/sorting options
  6716. //{{{
  6717. TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag,match)
  6718. {
  6719. var co=config.options; // abbrev
  6720. var tids = this.reverseLookup(&quot;tags&quot;,excludeTag,!!match,sortField);
  6721. var opened=[]; story.forEachTiddler(function(tid,elem){opened.push(tid);});
  6722. // eliminate tiddlers tagged with excluded tags
  6723. if (co.chkSearchExcludeTags&amp;&amp;co.txtSearchExcludeTags.length) {
  6724. var ex=co.txtSearchExcludeTags.readBracketedList();
  6725. var temp=[]; for(var t=tids.length-1; t&gt;=0; t--)
  6726. if (!tids[t].tags.containsAny(ex)) temp.push(tids[t]);
  6727. tids=temp;
  6728. }
  6729. // scan for matching titles first...
  6730. var results = [];
  6731. if (co.chkSearchTitles) {
  6732. for(var t=0; t&lt;tids.length; t++) {
  6733. if (co.chkSearchOpenTiddlers &amp;&amp; !opened.contains(tids[t].title)) continue;
  6734. if(tids[t].title.search(searchRegExp)!=-1) results.push(tids[t]);
  6735. }
  6736. if (co.chkSearchShadows)
  6737. for (var t in config.shadowTiddlers) {
  6738. if (co.chkSearchOpenTiddlers &amp;&amp; !opened.contains(t)) continue;
  6739. if ((t.search(searchRegExp)!=-1) &amp;&amp; !store.tiddlerExists(t))
  6740. results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
  6741. }
  6742. }
  6743. // then scan for matching text, tags, or field data
  6744. for(var t=0; t&lt;tids.length; t++) {
  6745. if (co.chkSearchOpenTiddlers &amp;&amp; !opened.contains(tids[t].title)) continue;
  6746. if (co.chkSearchText &amp;&amp; tids[t].text.search(searchRegExp)!=-1)
  6747. results.pushUnique(tids[t]);
  6748. if (co.chkSearchTags &amp;&amp; tids[t].tags.join(&quot; &quot;).search(searchRegExp)!=-1)
  6749. results.pushUnique(tids[t]);
  6750. if (co.chkSearchFields &amp;&amp; store.forEachField!=undefined)
  6751. store.forEachField(tids[t],
  6752. function(tid,field,val) {
  6753. if (val.search(searchRegExp)!=-1) results.pushUnique(tids[t]);
  6754. },
  6755. true); // extended fields only
  6756. }
  6757. // then check for matching text in shadows
  6758. if (co.chkSearchShadows)
  6759. for (var t in config.shadowTiddlers) {
  6760. if (co.chkSearchOpenTiddlers &amp;&amp; !opened.contains(t)) continue;
  6761. if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) &amp;&amp; !store.tiddlerExists(t))
  6762. results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
  6763. }
  6764. // if not 'titles first', or sorting by modification date,
  6765. // re-sort results to so titles, text, tag and field matches are mixed together
  6766. if(!sortField) sortField = &quot;title&quot;;
  6767. var bySortField=function(a,b){
  6768. if(a[sortField]==b[sortField])return(0);else return(a[sortField]&lt;b[sortField])?-1:+1;
  6769. }
  6770. if (!co.chkSearchTitlesFirst || co.chkSearchByDate) results.sort(bySortField);
  6771. return results;
  6772. }
  6773. //}}}
  6774. // // HIJACK core {{{&lt;&lt;search&gt;&gt;}}} macro to add &quot;report&quot; and &quot;simple inline&quot; output
  6775. //{{{
  6776. config.macros.search.SOP_handler=config.macros.search.handler;
  6777. config.macros.search.handler = function(place,macroName,params)
  6778. {
  6779. // if &quot;report&quot;, use SearchOptionsPlugin report generator for inline output
  6780. if (params[1]&amp;&amp;params[1].substr(0,6)==&quot;report&quot;) {
  6781. var keyword=params[0];
  6782. var options=params[1].split(&quot;=&quot;)[1]; // split &quot;report=option+option+...&quot;
  6783. var heading=params[2]?params[2].unescapeLineBreaks():&quot;&quot;;
  6784. var matches=store.search(new RegExp(keyword.escapeRegExp(),&quot;img&quot;),&quot;title&quot;,&quot;excludeSearch&quot;);
  6785. if (matches.length) wikify(heading+window.formatSearchResults(keyword,matches,options),place);
  6786. } else if (params[1]) {
  6787. var keyword=params[0];
  6788. var heading=params[1]?params[1].unescapeLineBreaks():&quot;&quot;;
  6789. var seperator=params[2]?params[2].unescapeLineBreaks():&quot;, &quot;;
  6790. var matches=store.search(new RegExp(keyword.escapeRegExp(),&quot;img&quot;),&quot;title&quot;,&quot;excludeSearch&quot;);
  6791. if (matches.length) {
  6792. var out=[];
  6793. for (var m=0; m&lt;matches.length; m++) out.push(&quot;[[&quot;+matches[m].title+&quot;]]&quot;);
  6794. wikify(heading+out.join(seperator),place);
  6795. }
  6796. } else
  6797. config.macros.search.SOP_handler.apply(this,arguments);
  6798. };
  6799. //}}}
  6800. // // SearchResults panel handling
  6801. //{{{
  6802. setStylesheet(&quot;.searchResults { padding:1em 1em 0 1em; }&quot;,&quot;searchResults&quot;); // matches std tiddler padding
  6803. config.macros.search.createPanel=function(text,matches,body) {
  6804. function getByClass(e,c) { var d=e.getElementsByTagName(&quot;div&quot;);
  6805. for (var i=0;i&lt;d.length;i++) if (hasClass(d[i],c)) return d[i]; }
  6806. var panel=createTiddlyElement(null,&quot;div&quot;,&quot;searchPanel&quot;,&quot;searchPanel&quot;);
  6807. this.renderPanel(panel,text,matches,body);
  6808. var oldpanel=document.getElementById(&quot;searchPanel&quot;);
  6809. if (!oldpanel) { // insert new panel just above tiddlers
  6810. var da=document.getElementById(&quot;displayArea&quot;);
  6811. da.insertBefore(panel,da.firstChild);
  6812. } else { // if panel exists
  6813. var oldwrap=getByClass(oldpanel,&quot;searchResults&quot;);
  6814. var newwrap=getByClass(panel,&quot;searchResults&quot;);
  6815. // if no prior content, just insert new content
  6816. if (!oldwrap) oldpanel.insertBefore(newwrap,null);
  6817. else { // swap search results content but leave containing panel intact
  6818. oldwrap.style.display='block'; // unfold wrapper if needed
  6819. var i=oldwrap.getElementsByTagName(&quot;input&quot;)[0]; // get input field
  6820. if (i) { var pos=this.getCursorPos(i); i.onblur=null; } // get cursor pos, ignore blur
  6821. oldpanel.replaceChild(newwrap,oldwrap);
  6822. panel=oldpanel; // use existing panel
  6823. }
  6824. }
  6825. this.showPanel(true,pos);
  6826. return panel;
  6827. }
  6828. config.macros.search.renderPanel=function(panel,text,matches,body) {
  6829. var wrap=createTiddlyElement(panel,&quot;div&quot;,null,&quot;searchResults&quot;);
  6830. wrap.onmouseover = function(e){ addClass(this,&quot;selected&quot;); }
  6831. wrap.onmouseout = function(e){ removeClass(this,&quot;selected&quot;); }
  6832. // create toolbar: &quot;open all&quot;, &quot;fold/unfold&quot;, &quot;close&quot;
  6833. var tb=createTiddlyElement(wrap,&quot;div&quot;,null,&quot;toolbar&quot;);
  6834. var b=createTiddlyButton(tb, &quot;open all&quot;, &quot;open all matching tiddlers&quot;, function() {
  6835. story.displayTiddlers(null,this.getAttribute(&quot;list&quot;).readBracketedList()); return false; },&quot;button&quot;);
  6836. var list=&quot;&quot;; for(var t=0;t&lt;matches.length;t++) list+='[['+matches[t].title+']] ';
  6837. b.setAttribute(&quot;list&quot;,list);
  6838. var b=createTiddlyButton(tb, &quot;fold&quot;, &quot;toggle display of search results&quot;, function() {
  6839. config.macros.search.foldPanel(this); return false; },&quot;button&quot;);
  6840. var b=createTiddlyButton(tb, &quot;close&quot;, &quot;dismiss search results&quot;, function() {
  6841. config.macros.search.showPanel(false); return false; },&quot;button&quot;);
  6842. createTiddlyText(createTiddlyElement(wrap,&quot;div&quot;,null,&quot;title&quot;),&quot;Search for: &quot;+text); // title
  6843. wikify(body,createTiddlyElement(wrap,&quot;div&quot;,null,&quot;viewer&quot;)); // report
  6844. return panel;
  6845. }
  6846. config.macros.search.showPanel=function(show,pos) {
  6847. var panel=document.getElementById(&quot;searchPanel&quot;);
  6848. var i=panel.getElementsByTagName(&quot;input&quot;)[0];
  6849. i.onfocus=show?function(){config.macros.search.stayFocused(true);}:null;
  6850. i.onblur=show?function(){config.macros.search.stayFocused(false);}:null;
  6851. if (show &amp;&amp; panel.style.display==&quot;block&quot;) { // if shown, grab focus, restore cursor
  6852. if (i&amp;&amp;this.stayFocused()) { i.focus(); this.setCursorPos(i,pos); }
  6853. return;
  6854. }
  6855. if(!config.options.chkAnimate) {
  6856. panel.style.display=show?&quot;block&quot;:&quot;none&quot;;
  6857. if (!show) { removeChildren(panel); config.macros.search.stayFocused(false); }
  6858. } else {
  6859. var s=new Slider(panel,show,false,show?&quot;none&quot;:&quot;children&quot;);
  6860. s.callback=function(e,p){e.style.overflow=&quot;visible&quot;;}
  6861. anim.startAnimating(s);
  6862. }
  6863. return panel;
  6864. }
  6865. config.macros.search.foldPanel=function(button) {
  6866. var d=document.getElementById(&quot;searchPanel&quot;).getElementsByTagName(&quot;div&quot;);
  6867. for (var i=0;i&lt;d.length;i++) if (hasClass(d[i],&quot;viewer&quot;)) var v=d[i]; if (!v) return;
  6868. var show=v.style.display==&quot;none&quot;;
  6869. if(!config.options.chkAnimate)
  6870. v.style.display=show?&quot;block&quot;:&quot;none&quot;;
  6871. else {
  6872. var s=new Slider(v,show,false,&quot;none&quot;);
  6873. s.callback=function(e,p){e.style.overflow=&quot;visible&quot;;}
  6874. anim.startAnimating(s);
  6875. }
  6876. button.innerHTML=show?&quot;fold&quot;:&quot;unfold&quot;;
  6877. return false;
  6878. }
  6879. config.macros.search.stayFocused=function(keep) { // TRUE/FALSE=set value, no args=get value
  6880. if (keep===undefined) return this.keepReportInFocus;
  6881. this.keepReportInFocus=keep;
  6882. return keep
  6883. }
  6884. config.macros.search.getCursorPos=function(i) {
  6885. var s=0; var e=0; if (!i) return { start:s, end:e };
  6886. try {
  6887. if (i.setSelectionRange) // FF
  6888. { s=i.selectionStart; e=i.selectionEnd; }
  6889. if (document.selection &amp;&amp; document.selection.createRange) { // IE
  6890. var r=document.selection.createRange().duplicate();
  6891. var len=r.text.length; s=0-r.moveStart('character',-100000); e=s+len;
  6892. }
  6893. }catch(e){};
  6894. return { start:s, end:e };
  6895. }
  6896. config.macros.search.setCursorPos=function(i,pos) {
  6897. if (!i||!pos) return; var s=pos.start; var e=pos.end;
  6898. if (i.setSelectionRange) //FF
  6899. i.setSelectionRange(s,e);
  6900. if (i.createTextRange) // IE
  6901. { var r=i.createTextRange(); r.collapse(true); r.moveStart(&quot;character&quot;,s); r.select(); }
  6902. }
  6903. //}}}
  6904. // // SearchResults report generation
  6905. // note: these functions are defined globally, so they can be more easily redefined to customize report formats//
  6906. //{{{
  6907. if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
  6908. {
  6909. var cms=config.macros.search; // abbrev
  6910. var body=window.formatSearchResults(text,matches);
  6911. if (!config.options.chkSearchListTiddler) // show #searchResults panel
  6912. window.scrollTo(0,ensureVisible(cms.createPanel(text,matches,body)));
  6913. else { // write [[SearchResults]] tiddler
  6914. var title=cms.reportTitle;
  6915. var who=config.options.txtUserName;
  6916. var when=new Date();
  6917. var tags=&quot;excludeLists excludeSearch temporary&quot;;
  6918. var tid=store.getTiddler(title); if (!tid) tid=new Tiddler();
  6919. tid.set(title,body,who,when,tags);
  6920. store.addTiddler(tid);
  6921. story.closeTiddler(title);
  6922. story.displayTiddler(null,title);
  6923. }
  6924. }
  6925. if (!window.formatSearchResults) window.formatSearchResults=function(text,matches,opt)
  6926. {
  6927. var body='';
  6928. var title=config.macros.search.reportTitle
  6929. var q = config.options.chkRegExpSearch ? &quot;/&quot; : &quot;'&quot;;
  6930. if (!opt) var opt=&quot;all&quot;;
  6931. var parts=opt.split(&quot;+&quot;);
  6932. for (var i=0; i&lt;parts.length; i++) { var p=parts[i].toLowerCase();
  6933. if (p==&quot;again&quot;||p==&quot;all&quot;) body+=window.formatSearchResults_again(text,matches);
  6934. if (p==&quot;summary&quot;||p==&quot;all&quot;) body+=window.formatSearchResults_summary(text,matches);
  6935. if (p==&quot;list&quot;||p==&quot;all&quot;) body+=window.formatSearchResults_list(text,matches);
  6936. if (p==&quot;buttons&quot;||p==&quot;all&quot;) body+=window.formatSearchResults_buttons(text,matches);
  6937. }
  6938. return body;
  6939. }
  6940. if (!window.formatSearchResults_again) window.formatSearchResults_again=function(text,matches)
  6941. {
  6942. var title=config.macros.search.reportTitle
  6943. var body='';
  6944. // search again
  6945. body+='{{span{&lt;&lt;search &quot;'+text.replace(/&quot;/g,'&amp;#x22;')+'&quot;&gt;&gt; /%\n';
  6946. body+='%/&lt;html&gt;&lt;input type=&quot;button&quot; value=&quot;search again&quot;';
  6947. body+=' onclick=&quot;var t=this.parentNode.parentNode.getElementsByTagName(\'input\')[0];';
  6948. body+=' config.macros.search.doSearch(t); return false;&quot;&gt;';
  6949. if (!config.options.chkSearchResultsOptions) { // omit &quot;options...&quot;
  6950. body+='&lt;/html&gt;}}}\n\n';
  6951. return body;
  6952. }
  6953. body+=' &lt;a href=&quot;javascript:;&quot; onclick=&quot;';
  6954. body+=' var e=this.parentNode.nextSibling;';
  6955. body+=' var show=e.style.display!=\'block\';';
  6956. body+=' if(!config.options.chkAnimate) e.style.display=show?\'block\':\'none\';';
  6957. body+=' else anim.startAnimating(new Slider(e,show,false,\'none\'));';
  6958. body+=' return false;&quot;&gt;options...&lt;/a&gt;';
  6959. body+='&lt;/html&gt;@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%\n';
  6960. body+=' %/&lt;&lt;option chkSearchTitles&gt;&gt;titles /%\n';
  6961. body+=' %/&lt;&lt;option chkSearchText&gt;&gt;text /%\n';
  6962. body+=' %/&lt;&lt;option chkSearchTags&gt;&gt;tags /%\n';
  6963. body+=' %/&lt;&lt;option chkSearchFields&gt;&gt;fields /%\n';
  6964. body+=' %/&lt;&lt;option chkSearchShadows&gt;&gt;shadows\n';
  6965. body+=' &lt;&lt;option chkCaseSensitiveSearch&gt;&gt;case-sensitive /%\n';
  6966. body+=' %/&lt;&lt;option chkRegExpSearch&gt;&gt;text patterns /%\n';
  6967. body+=' %/&lt;&lt;option chkSearchByDate&gt;&gt;sorted by date\n';
  6968. body+=' &lt;&lt;option chkSearchHighlight&gt;&gt; highlight matching text in displayed tiddlers\n';
  6969. body+=' &lt;&lt;option chkIncrementalSearch&gt;&gt;incremental key-by-key search: /%\n';
  6970. body+=' %/{{twochar{&lt;&lt;option txtIncrementalSearchMin&gt;&gt;}}} or more characters, /%\n';
  6971. body+=' %/{{threechar{&lt;&lt;option txtIncrementalSearchDelay&gt;&gt;}}} msec delay\n';
  6972. body+=' &lt;&lt;option chkSearchOpenTiddlers&gt;&gt; search only in tiddlers that are currently displayed\n';
  6973. body+=' &lt;&lt;option chkSearchExcludeTags&gt;&gt;exclude tiddlers tagged with:\n';
  6974. body+=' {{editor{&lt;&lt;option txtSearchExcludeTags&gt;&gt;}}}/%\n';
  6975. body+='%/@@}}}\n\n';
  6976. return body;
  6977. }
  6978. if (!window.formatSearchResults_summary) window.formatSearchResults_summary=function(text,matches)
  6979. {
  6980. // summary: nn tiddlers found matching '...', options used
  6981. var body='';
  6982. var co=config.options; // abbrev
  6983. var title=config.macros.search.reportTitle
  6984. var q = co.chkRegExpSearch ? &quot;/&quot; : &quot;'&quot;;
  6985. body+=&quot;''&quot;+config.macros.search.successMsg.format([matches.length,q+&quot;{{{&quot;+text+&quot;}}}&quot;+q])+&quot;''\n&quot;;
  6986. var opts=[];
  6987. if (co.chkSearchTitles) opts.push(&quot;titles&quot;);
  6988. if (co.chkSearchText) opts.push(&quot;text&quot;);
  6989. if (co.chkSearchTags) opts.push(&quot;tags&quot;);
  6990. if (co.chkSearchFields) opts.push(&quot;fields&quot;);
  6991. if (co.chkSearchShadows) opts.push(&quot;shadows&quot;);
  6992. if (co.chkSearchOpenTiddlers) body+=&quot;^^//search limited to displayed tiddlers only//^^\n&quot;;
  6993. body+=&quot;~~&amp;nbsp; searched in &quot;+opts.join(&quot; + &quot;)+&quot;~~\n&quot;;
  6994. body+=(co.chkCaseSensitiveSearch||co.chkRegExpSearch?&quot;^^&amp;nbsp; using &quot;:&quot;&quot;)
  6995. +(co.chkCaseSensitiveSearch?&quot;case-sensitive &quot;:&quot;&quot;)
  6996. +(co.chkRegExpSearch?&quot;pattern &quot;:&quot;&quot;)
  6997. +(co.chkCaseSensitiveSearch||co.chkRegExpSearch?&quot;matching^^\n&quot;:&quot;&quot;);
  6998. return body;
  6999. }
  7000. if (!window.formatSearchResults_list) window.formatSearchResults_list=function(text,matches)
  7001. {
  7002. // bullet list of links to matching tiddlers
  7003. var body='';
  7004. var co=config.options; // abbrev
  7005. var pattern=co.chkRegExpSearch?text:text.escapeRegExp();
  7006. var sensitive=co.chkCaseSensitiveSearch?&quot;mg&quot;:&quot;img&quot;;
  7007. var link='{{tiddlyLinkExisting{&lt;html&gt;&lt;nowiki&gt;&lt;a href=&quot;javascript:;&quot; onclick=&quot;'
  7008. +'if(config.options.chkSearchHighlight)'
  7009. +' highlightHack=new RegExp(\x27'+pattern+'\x27.escapeRegExp(),\x27'+sensitive+'\x27);'
  7010. +'story.displayTiddler(null,\x27%0\x27);'
  7011. +'highlightHack = null; return false;'
  7012. +'&quot; title=&quot;%2&quot;&gt;%1&lt;/a&gt;&lt;/html&gt;}}}';
  7013. for(var t=0;t&lt;matches.length;t++) {
  7014. body+=&quot;* &quot;;
  7015. if (co.chkSearchByDate)
  7016. body+=matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+&quot; &quot;;
  7017. var title=matches[t].title;
  7018. var fixup=title.replace(/'/g,&quot;\\x27&quot;).replace(/&quot;/g,&quot;\\x22&quot;);
  7019. var tid=store.getTiddler(title);
  7020. var tip=tid?tid.getSubtitle():''; tip=tip.replace(/&quot;/g,&quot;&amp;quot;&quot;);
  7021. body+=link.format([fixup,title,tip])+'\n';
  7022. }
  7023. return body;
  7024. }
  7025. if (!window.formatSearchResults_buttons) window.formatSearchResults_buttons=function(text,matches)
  7026. {
  7027. // embed buttons only if writing SearchResults to tiddler
  7028. if (!config.options.chkSearchListTiddler) return &quot;&quot;;
  7029. // &quot;open all&quot; button
  7030. var title=config.macros.search.reportTitle;
  7031. var body=&quot;&quot;;
  7032. body+=&quot;@@diplay:block;&lt;html&gt;&lt;input type=\&quot;button\&quot; href=\&quot;javascript:;\&quot; &quot;
  7033. +&quot;onclick=\&quot;story.displayTiddlers(null,[&quot;;
  7034. for(var t=0;t&lt;matches.length;t++)
  7035. body+=&quot;'&quot;+matches[t].title.replace(/\'/mg,&quot;\\'&quot;)+&quot;'&quot;+((t&lt;matches.length-1)?&quot;, &quot;:&quot;&quot;);
  7036. body+=&quot;],1);\&quot; accesskey=\&quot;O\&quot; value=\&quot;open all matching tiddlers\&quot;&gt;&lt;/html&gt; &quot;;
  7037. // &quot;discard SearchResults&quot; button
  7038. body+=&quot;&lt;html&gt;&lt;input type=\&quot;button\&quot; href=\&quot;javascript:;\&quot; &quot;
  7039. +&quot;onclick=\&quot;discardSearchResults()\&quot; value=\&quot;discard &quot;+title+&quot;\&quot;&gt;&lt;/html&gt;&quot;;
  7040. body+=&quot;@@\n&quot;;
  7041. return body;
  7042. }
  7043. if (!window.discardSearchResults) window.discardSearchResults=function()
  7044. {
  7045. // remove the tiddler
  7046. story.closeTiddler(config.macros.search.reportTitle);
  7047. store.deleteTiddler(config.macros.search.reportTitle);
  7048. store.notify(config.macros.search.reportTitle,true);
  7049. }
  7050. //}}}</pre>
  7051. </div>
  7052. <div title="SelectThemePluginMP" creator="pmario" modifier="pmario" created="201011042045" modified="201011081325" tags="excludeLists systemConfig" server.title="SelectThemePluginMP" server.page.revision="107222" server.etag="&quot;neui-em_public/SelectThemePluginMP/107222;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="5c4d62628a8adec980fc31b4c993e49e28db40ca">
  7053. <pre>/***
  7054. |Name:|SelectThemePluginMP|
  7055. |Description:|Lets you easily switch theme and palette|
  7056. |Version:|1.0.1 ($Rev: 3646 $) MP 02|
  7057. |Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
  7058. |OriginalSource:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
  7059. |OriginalAuthor:|Simon Baird &lt;simon.baird@gmail.com&gt;|
  7060. |License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
  7061. |Author:|Mario Pietsch|
  7062. !Notes
  7063. * Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
  7064. * Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
  7065. * Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware.
  7066. *MP Added the label to applyTheme macro.
  7067. *Made selectPalette tiddlySpace ready.
  7068. !Usage
  7069. * {{{&lt;&lt;selectTheme&gt;&gt;}}} makes a dropdown selector
  7070. * {{{&lt;&lt;selectPalette&gt;&gt;}}} makes a dropdown selector
  7071. * {{{&lt;&lt;applyTheme&gt;&gt;}}} applies the current tiddler as a theme
  7072. * {{{&lt;&lt;applyPalette&gt;&gt;}}} applies the current tiddler as a palette
  7073. * {{{&lt;&lt;applyTheme TiddlerName&gt;&gt;}}} applies TiddlerName as a theme
  7074. * {{{&lt;&lt;applyPalette TiddlerName&gt;&gt;}}} applies TiddlerName as a palette
  7075. * {{{&lt;&lt;applyTheme TiddlerName label&gt;&gt;}}} applies TiddlerName as a theme and uses costumized button label
  7076. * {{{&lt;&lt;applyTheme {{tiddler.title}} label&gt;&gt;}}} applies actual tiddler as a theme and uses costumized button label
  7077. ***/
  7078. //{{{
  7079. config.macros.selectTheme = {
  7080. label: {
  7081. selectTheme:&quot;select theme&quot;,
  7082. selectPalette:&quot;select palette&quot;
  7083. },
  7084. prompt: {
  7085. selectTheme:&quot;Select the current theme&quot;,
  7086. selectPalette:&quot;Select the current palette&quot;
  7087. },
  7088. tags: {
  7089. selectTheme:'systemTheme',
  7090. selectPalette:'systemPalette'
  7091. }
  7092. };
  7093. config.macros.selectTheme.handler = function(place,macroName)
  7094. {
  7095. var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
  7096. // want to handle palettes and themes with same code. use mode attribute to distinguish
  7097. btn.setAttribute('mode',macroName);
  7098. };
  7099. config.macros.selectTheme.onClick = function(ev)
  7100. {
  7101. var e = ev ? ev : window.event;
  7102. var popup = Popup.create(this);
  7103. var mode = this.getAttribute('mode');
  7104. var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
  7105. // for default
  7106. if (mode == &quot;selectPalette&quot;) {
  7107. var btn = createTiddlyButton(createTiddlyElement(popup,'li'),&quot;(default)&quot;,&quot;default color palette&quot;,config.macros.selectTheme.onClickTheme);
  7108. btn.setAttribute('theme',&quot;(default)&quot;);
  7109. btn.setAttribute('mode',mode);
  7110. }
  7111. for(var i=0; i&lt;tiddlers.length; i++) {
  7112. var t = tiddlers[i].title;
  7113. var name = store.getTiddlerSlice(t,'Name');
  7114. var desc = store.getTiddlerSlice(t,'Description');
  7115. var btn = createTiddlyButton(createTiddlyElement(popup,'li'), name?name:t, desc?desc:config.macros.selectTheme.label['mode'], config.macros.selectTheme.onClickTheme);
  7116. btn.setAttribute('theme',t);
  7117. btn.setAttribute('mode',mode);
  7118. }
  7119. Popup.show();
  7120. return stopEvent(e);
  7121. };
  7122. config.macros.selectTheme.onClickTheme = function(ev)
  7123. {
  7124. var mode = this.getAttribute('mode');
  7125. var theme = this.getAttribute('theme');
  7126. if (mode == 'selectTheme')
  7127. story.switchTheme(theme);
  7128. else // selectPalette
  7129. config.macros.selectTheme.updatePalette(theme);
  7130. return false;
  7131. };
  7132. config.macros.selectTheme.updatePalette = function(title)
  7133. {
  7134. var tiddlyspace = config.extensions.tiddlyspace;
  7135. if (title != &quot;&quot;) {
  7136. if (title != &quot;(default)&quot;) {
  7137. var tiddler = store.getTiddler('ColorPalette');
  7138. tiddler.fields[&quot;server.workspace&quot;] = &quot;bags/%0_private&quot;.format([tiddlyspace.currentSpace.name]);
  7139. tiddler.fields[&quot;server.page.revision&quot;] = &quot;false&quot;;
  7140. // tiddler.fields[&quot;server.permissions&quot;] = &quot;read, write, create&quot;; // no delete
  7141. delete tiddler.fields[&quot;server.title&quot;];
  7142. delete tiddler.fields[&quot;server.etag&quot;];
  7143. // special handling for pseudo-shadow tiddlers
  7144. if(tiddlyspace.coreBags.contains(tiddler.fields[&quot;server.bag&quot;])) {
  7145. tiddler.tags.remove(&quot;excludeLists&quot;);
  7146. }
  7147. store.saveTiddler(&quot;ColorPalette&quot;,&quot;ColorPalette&quot;, store.getTiddlerText(title),
  7148. config.options.txtUserName,undefined,tiddler.tags, tiddler.fields);
  7149. }
  7150. refreshAll();
  7151. if(config.options.chkAutoSave)
  7152. saveChanges(true);
  7153. }
  7154. };
  7155. config.macros.applyTheme = {
  7156. label: &quot;apply&quot;,
  7157. prompt: &quot;apply this theme or palette: &quot; // i'm lazy
  7158. };
  7159. config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
  7160. var label = params[1] ? params[1] : this.label;
  7161. var useTiddler = params[0] ? params[0] : tiddler.title;
  7162. var btn = createTiddlyButton(place,label,this.prompt+useTiddler,config.macros.selectTheme.onClickTheme);
  7163. btn.setAttribute('theme',useTiddler);
  7164. btn.setAttribute('mode',macroName==&quot;applyTheme&quot;?&quot;selectTheme&quot;:&quot;selectPalette&quot;); // a bit untidy here
  7165. }
  7166. config.macros.selectPalette = config.macros.selectTheme;
  7167. config.macros.applyPalette = config.macros.applyTheme;
  7168. config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  7169. createTiddlyButton(place,&quot;refresh&quot;,&quot;refresh layout and styles&quot;,function() { refreshAll(); });
  7170. }};
  7171. //}}}</pre>
  7172. </div>
  7173. <div title="ServerSideSavingPlugin" creator="FND" modifier="FND" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch systemConfig" server.title="ServerSideSavingPlugin" server.page.revision="257451" server.etag="&quot;system/ServerSideSavingPlugin/257451;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system" server.permissions="read" server.content-type="text/javascript" _hash="d72cde071d926d9c66939444817d7e8621d24d9c">
  7174. <pre>/***
  7175. |''Name''|ServerSideSavingPlugin|
  7176. |''Description''|server-side saving|
  7177. |''Author''|FND|
  7178. |''Version''|0.6.5|
  7179. |''Status''|stable|
  7180. |''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/ServerSideSavingPlugin.js|
  7181. |''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
  7182. |''CoreVersion''|2.5.3|
  7183. |''Keywords''|serverSide|
  7184. !Notes
  7185. This plugin relies on a dedicated adaptor to be present.
  7186. The specific nature of this plugin depends on the respective server.
  7187. !Revision History
  7188. !!v0.1 (2008-11-24)
  7189. * initial release
  7190. !!v0.2 (2008-12-01)
  7191. * added support for local saving
  7192. !!v0.3 (2008-12-03)
  7193. * added Save to Web macro for manual synchronization
  7194. !!v0.4 (2009-01-15)
  7195. * removed ServerConfig dependency by detecting server type from the respective tiddlers
  7196. !!v0.5 (2009-08-25)
  7197. * raised CoreVersion to 2.5.3 to take advantage of core fixes
  7198. !!v0.6 (2010-04-21)
  7199. * added notification about cross-domain restrictions to ImportTiddlers
  7200. !To Do
  7201. * conflict detection/resolution
  7202. * rename to ServerLinkPlugin?
  7203. * document deletion/renaming convention
  7204. !Code
  7205. ***/
  7206. //{{{
  7207. (function($) {
  7208. readOnly = false; //# enable editing over HTTP
  7209. var plugin = config.extensions.ServerSideSavingPlugin = {};
  7210. plugin.locale = {
  7211. saved: &quot;%0 saved successfully&quot;,
  7212. saveError: &quot;Error saving %0: %1&quot;,
  7213. saveConflict: &quot;Error saving %0: edit conflict&quot;,
  7214. deleted: &quot;Removed %0&quot;,
  7215. deleteError: &quot;Error removing %0: %1&quot;,
  7216. deleteLocalError: &quot;Error removing %0 locally&quot;,
  7217. removedNotice: &quot;This tiddler has been deleted.&quot;,
  7218. connectionError: &quot;connection could not be established&quot;,
  7219. hostError: &quot;Unable to import from this location due to cross-domain restrictions.&quot;
  7220. };
  7221. plugin.sync = function(tiddlers) {
  7222. tiddlers = tiddlers &amp;&amp; tiddlers[0] ? tiddlers : store.getTiddlers();
  7223. $.each(tiddlers, function(i, tiddler) {
  7224. var changecount = parseInt(tiddler.fields.changecount, 10);
  7225. if(tiddler.fields.deleted === &quot;true&quot; &amp;&amp; changecount === 1) {
  7226. plugin.removeTiddler(tiddler);
  7227. } else if(tiddler.isTouched() &amp;&amp; !tiddler.doNotSave() &amp;&amp;
  7228. tiddler.getServerType() &amp;&amp; tiddler.fields[&quot;server.host&quot;]) { // XXX: server.host could be empty string
  7229. delete tiddler.fields.deleted;
  7230. plugin.saveTiddler(tiddler);
  7231. }
  7232. });
  7233. };
  7234. plugin.saveTiddler = function(tiddler) {
  7235. try {
  7236. var adaptor = this.getTiddlerServerAdaptor(tiddler);
  7237. } catch(ex) {
  7238. return false;
  7239. }
  7240. var context = {
  7241. tiddler: tiddler,
  7242. changecount: tiddler.fields.changecount,
  7243. workspace: tiddler.fields[&quot;server.workspace&quot;]
  7244. };
  7245. var serverTitle = tiddler.fields[&quot;server.title&quot;]; // indicates renames
  7246. if(!serverTitle) {
  7247. tiddler.fields[&quot;server.title&quot;] = tiddler.title;
  7248. } else if(tiddler.title != serverTitle) {
  7249. return adaptor.moveTiddler({ title: serverTitle },
  7250. { title: tiddler.title }, context, null, this.saveTiddlerCallback);
  7251. }
  7252. var req = adaptor.putTiddler(tiddler, context, {}, this.saveTiddlerCallback);
  7253. return req ? tiddler : false;
  7254. };
  7255. plugin.saveTiddlerCallback = function(context, userParams) {
  7256. var tiddler = context.tiddler;
  7257. if(context.status) {
  7258. if(tiddler.fields.changecount == context.changecount) { //# check for changes since save was triggered
  7259. tiddler.clearChangeCount();
  7260. } else if(tiddler.fields.changecount &gt; 0) {
  7261. tiddler.fields.changecount -= context.changecount;
  7262. }
  7263. plugin.reportSuccess(&quot;saved&quot;, tiddler);
  7264. store.setDirty(false);
  7265. } else {
  7266. if(context.httpStatus == 412) {
  7267. plugin.reportFailure(&quot;saveConflict&quot;, tiddler);
  7268. } else {
  7269. plugin.reportFailure(&quot;saveError&quot;, tiddler, context);
  7270. }
  7271. }
  7272. };
  7273. plugin.removeTiddler = function(tiddler) {
  7274. try {
  7275. var adaptor = this.getTiddlerServerAdaptor(tiddler);
  7276. } catch(ex) {
  7277. return false;
  7278. }
  7279. var context = {
  7280. host: tiddler.fields[&quot;server.host&quot;],
  7281. workspace: tiddler.fields[&quot;server.workspace&quot;],
  7282. tiddler: tiddler
  7283. };
  7284. var req = adaptor.deleteTiddler(tiddler, context, {}, this.removeTiddlerCallback);
  7285. return req ? tiddler : false;
  7286. };
  7287. plugin.removeTiddlerCallback = function(context, userParams) {
  7288. var tiddler = context.tiddler;
  7289. if(context.status) {
  7290. if(tiddler.fields.deleted === &quot;true&quot;) {
  7291. store.deleteTiddler(tiddler.title);
  7292. } else {
  7293. plugin.reportFailure(&quot;deleteLocalError&quot;, tiddler);
  7294. }
  7295. plugin.reportSuccess(&quot;deleted&quot;, tiddler);
  7296. store.setDirty(false);
  7297. } else {
  7298. plugin.reportFailure(&quot;deleteError&quot;, tiddler, context);
  7299. }
  7300. };
  7301. plugin.getTiddlerServerAdaptor = function(tiddler) { // XXX: rename?
  7302. var type = tiddler.fields[&quot;server.type&quot;] || config.defaultCustomFields[&quot;server.type&quot;];
  7303. return new config.adaptors[type]();
  7304. };
  7305. plugin.reportSuccess = function(msg, tiddler) {
  7306. displayMessage(plugin.locale[msg].format([tiddler.title]));
  7307. };
  7308. plugin.reportFailure = function(msg, tiddler, context) {
  7309. var desc = (context &amp;&amp; context.httpStatus) ? context.statusText :
  7310. plugin.locale.connectionError;
  7311. displayMessage(plugin.locale[msg].format([tiddler.title, desc]));
  7312. };
  7313. config.macros.saveToWeb = { // XXX: hijack existing sync macro?
  7314. locale: { // TODO: merge with plugin.locale?
  7315. btnLabel: &quot;save to web&quot;,
  7316. btnTooltip: &quot;synchronize changes&quot;,
  7317. btnAccessKey: null
  7318. },
  7319. handler: function(place, macroName, params, wikifier, paramString, tiddler) {
  7320. createTiddlyButton(place, this.locale.btnLabel, this.locale.btnTooltip,
  7321. plugin.sync, null, null, this.locale.btnAccessKey);
  7322. }
  7323. };
  7324. // hijack saveChanges to trigger remote saving
  7325. var _saveChanges = saveChanges;
  7326. saveChanges = function(onlyIfDirty, tiddlers) {
  7327. if(window.location.protocol == &quot;file:&quot;) {
  7328. _saveChanges.apply(this, arguments);
  7329. } else {
  7330. plugin.sync(tiddlers);
  7331. }
  7332. };
  7333. // override removeTiddler to flag tiddler as deleted -- XXX: use hijack to preserve compatibility?
  7334. TiddlyWiki.prototype.removeTiddler = function(title) { // XXX: should override deleteTiddler instance method?
  7335. var tiddler = this.fetchTiddler(title);
  7336. if(tiddler) {
  7337. tiddler.tags = [&quot;excludeLists&quot;, &quot;excludeSearch&quot;, &quot;excludeMissing&quot;];
  7338. tiddler.text = plugin.locale.removedNotice;
  7339. tiddler.fields.deleted = &quot;true&quot;; // XXX: rename to removed/tiddlerRemoved?
  7340. tiddler.fields.changecount = &quot;1&quot;;
  7341. this.notify(title, true);
  7342. this.setDirty(true);
  7343. }
  7344. };
  7345. // hijack ImportTiddlers wizard to handle cross-domain restrictions
  7346. var _onOpen = config.macros.importTiddlers.onOpen;
  7347. config.macros.importTiddlers.onOpen = function(ev) {
  7348. var btn = $(resolveTarget(ev));
  7349. var url = btn.closest(&quot;.wizard&quot;).find(&quot;input[name=txtPath]&quot;).val();
  7350. if(window.location.protocol != &quot;file:&quot; &amp;&amp; url.indexOf(&quot;://&quot;) != -1) {
  7351. var host = url.split(&quot;/&quot;)[2];
  7352. var macro = config.macros.importTiddlers;
  7353. if(host != window.location.host) {
  7354. btn.text(macro.cancelLabel).attr(&quot;title&quot;, macro.cancelPrompt);
  7355. btn[0].onclick = macro.onCancel;
  7356. $('&lt;span class=&quot;status&quot; /&gt;').text(plugin.locale.hostError).insertAfter(btn);
  7357. return false;
  7358. }
  7359. }
  7360. return _onOpen.apply(this, arguments);
  7361. };
  7362. })(jQuery);
  7363. //}}}</pre>
  7364. </div>
  7365. <div title="SideBarOptions" creator="pmario" modifier="pmario" created="201008061923" modified="201010071025" tags="excludeLists" server.title="SideBarOptions" server.page.revision="107237" server.etag="&quot;neui-em_public/SideBarOptions/107237;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" revision.text="" _hash="7d8765daef6b7cbcccebee953eff2be8ca6f8e96">
  7366. <pre>&lt;&lt;tiddler ToggleLeftSidebarEm##show with: {{config.options.chkShowLeftSidebar?'◄':'►'}}{{config.options.chkShowRightSidebar?'hide':'show'}}&gt;&gt;&lt;&lt;tiddler ToggleRightSidebarEm##show with: {{config.options.chkShowRightSidebar?'►':'◄'}}{{config.options.chkShowRightSidebar?'hide':'show'}}&gt;&gt;&lt;&lt;slider chkSliderOptionsPanel OptionsPanel &quot;»&quot; &quot;display the options panel&quot;&gt;&gt;</pre>
  7367. </div>
  7368. <div title="SideBarTabs" creator="osmosoft" modifier="osmosoft" created="201102181425" modified="201102181425" tags="excludeLists excludeMissing excludeSearch" server.title="SideBarTabs" server.page.revision="257506" server.etag="&quot;system-theme_public/SideBarTabs/257506;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-theme_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-theme_public" server.permissions="read" server.content-type="" _hash="6b74609cea4ddb529f42d3331e63b7775376af47">
  7369. <pre>&lt;&lt;tiddler Backstage##Tiddlers&gt;&gt;</pre>
  7370. </div>
  7371. <div title="SidebarButtons" creator="pmario" modifier="pmario" created="201009282016" modified="201010071647" tags="excludeLists" server.title="SidebarButtons" server.page.revision="107241" server.etag="&quot;neui-em_public/SidebarButtons/107241;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="7cea3f127443d6bcc8af551ed0219bd53123b5c0">
  7372. <pre>&lt;&lt;image tfgNewTiddler.svg&gt;&gt;&lt;&lt;image tfgNewJournal.svg&gt;&gt;&lt;&lt;image tfgSaveToWeb.svg&gt;&gt;&lt;&lt;image tfgPermaview.svg&gt;&gt;&lt;&lt;image tfgCloseAll.svg&gt;&gt;</pre>
  7373. </div>
  7374. <div title="SidebarTools" creator="pmario" modifier="pmario" created="201008061923" modified="201009282127" tags="excludeLists" server.title="SidebarTools" server.page.revision="107249" server.etag="&quot;neui-em_public/SidebarTools/107249;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="ed1ab0f713529043df9da9a136d4c98d2bfb46d2">
  7375. <pre>&lt;&lt;tiddler SidebarButtons&gt;&gt;
  7376. /%&lt;&lt;closeAll&gt;&gt;
  7377. &lt;&lt;permaview&gt;&gt;
  7378. &lt;&lt;newTiddler&gt;&gt;
  7379. &lt;&lt;newJournal 'YYYY, DD MMM'&gt;&gt;
  7380. %/</pre>
  7381. </div>
  7382. <div title="SiteIcon" creator="fancybox" modifier="fancybox" created="201101181525" modified="201101181525" server.title="SiteIcon" server.page.revision="47609" server.etag="&quot;fancybox_public/SiteIcon/47609;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="image/png" _hash="6bfdc1360e03ce167156dda85b01f908c4cf0f75">
  7383. <pre>iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAKGWlDQ1BJQ0MgUHJvZmlsZQAAeAHVlmdUFMkWx6t7ciLNMGQYcs4ZJOckOYrKMOQwwpARFZHFFVAUERFQlrBEBVclyBoQUQyIgALmHWQRUNbFgKiovB54x93zzttv78u7fW7Vr++tvlVdVR/+AJA+MpOSEmABABLZqRwfJ1tGUHAIA/cIoAEWEIAeUGWyUpJsvLzcwT/ahwkA8ZL3NHm1/nHYf08IRkSmsACAvJB0eEQKKxHhcwgbsJI4qQjPITySkZqEMNyDMI2DLBDhIR5HrzOXx+Hr/H5tjJ+PHQAoPAB4MpPJiQaAREPijHRWNFKHZICwDjsilo1wBMKWrBgm0pMaENZITNzG4xGEVcL/Vif6b8xkhn+vyWRGf+f1f0G+RCa2j01JSmBmrb38L5vEhDRkv9aMt+vkSLa/L9KLIi4J7IEDcEceBnJyxkAH8UDgCLxSIzOR/wbAbltSFic2OiaVYYOcVKQGw4XN0tJg6Ono6vDS/zfGu6Pri313d+3uQaK84/93LFkLANNG5Pz7/oqFPQeg6w4A9IG/YgrXAeDfD0BPMyuNk75eD83rMIAI+AENiAFpIA9UgCaym0bAHFgju+sKPIEfCAZbAAvEgETAARkgB+wGBaAIHARHQCWoAfWgGZwCZ0A3uACugOvgNhgB4+Ax4IIZ8Aosgg9gBYIgHESBqJAYJAMpQuqQHmQCWUIOkDvkAwVDYVA0xIbSoBxoD1QElUKVUC3UAv0CnYeuQDehUeghNAXNQ2+hzzAKJsM0WApWgrVhE9gGdoP94M1wNJwMZ8P58AG4Aq6DT8Jd8BX4NjwOc+FX8BIKoEgoOkoWpYkyQdmhPFEhqCgUB7UTVYgqR9Wh2lG9qEHUPRQXtYD6hMaiqWgGWhNtjnZG+6NZ6GT0TnQxuhLdjO5CD6DvoafQi+hvGApGEqOOMcO4YIIw0ZgMTAGmHNOI6cRcw4xjZjAfsFgsHauMNcY6Y4Oxcdjt2GLscWwHtg87ip3GLuFwODGcOs4C54lj4lJxBbhjuJO4y7gx3AzuI56El8Hr4R3xIXg2Pg9fjm/FX8KP4WfxKwQBgiLBjOBJiCBkEUoIDYRewl3CDGGFKEhUJloQ/YhxxN3ECmI78RrxCfEdiUSSI5mSvEmxpFxSBek06QZpivSJLERWI9uRQ8lp5APkJnIf+SH5HYVCUaJYU0IoqZQDlBbKVcozykc+Kp8WnwtfBN8uviq+Lr4xvtf8BH5Ffhv+LfzZ/OX8Z/nv8i8IEASUBOwEmAI7BaoEzgtMCiwJUgV1BT0FEwWLBVsFbwrOCeGElIQchCKE8oXqha4KTVNRVHmqHZVF3UNtoF6jztCwNGWaCy2OVkQ7RRumLQoLCRsIBwhnClcJXxTm0lF0JboLPYFeQj9Dn6B/FpESsRGJFNkn0i4yJrIsKiFqLRopWijaITou+lmMIeYgFi92SKxb7Kk4WlxN3Fs8Q/yE+DXxBQmahLkES6JQ4ozEI0lYUk3SR3K7ZL3kkOSSlLSUk1SS1DGpq1IL0nRpa+k46TLpS9LzMlQZS5lYmTKZyzIvGcIMG0YCo4IxwFiUlZR1lk2TrZUdll2RU5bzl8uT65B7Kk+UN5GPki+T75dfVJBR8FDIUWhTeKRIUDRRjFE8qjiouKykrBSotFepW2lOWVTZRTlbuU35iQpFxUolWaVO5b4qVtVENV71uOqIGqxmqBajVqV2Vx1WN1KPVT+uPqqB0TDVYGvUaUxqkjVtNNM12zSntOha7lp5Wt1ar7UVtEO0D2kPan/TMdRJ0GnQeawrpOuqm6fbq/tWT02PpVeld1+fou+ov0u/R/+NgbpBpMEJgweGVEMPw72G/YZfjYyNOEbtRvPGCsZhxtXGkyY0Ey+TYpMbphhTW9NdphdMP5kZmaWanTH701zTPN681Xxug/KGyA0NG6Yt5CyYFrUWXEuGZZjlT5ZcK1krplWd1XNreesI60brWRtVmzibkzavbXVsObadtst2ZnY77PrsUfZO9oX2ww5CDv4OlQ7PHOUcox3bHBedDJ22O/U5Y5zdnA85T7pIubBcWlwWXY1dd7gOuJHdfN0q3Z67q7lz3Hs9YA9Xj8MeTzYqbmRv7PYEni6ehz2feil7JXv96o319vKu8n7ho+uT4zPoS/Xd6tvq+8HP1q/E77G/in+af38Af0BoQEvAcqB9YGkgN0g7aEfQ7WDx4NjgnhBcSEBIY8jSJodNRzbNhBqGFoRObFbenLn55hbxLQlbLm7l38rcejYMExYY1hr2henJrGMuhbuEV4cvsuxYR1mvIqwjyiLmIy0iSyNnoyyiSqPmoi2iD0fPx1jFlMcsxNrFVsa+iXOOq4lbjveMb4pfTQhM6EjEJ4YlnmcLsePZA9ukt2VuG01STypI4iabJR9JXuS4cRpToJTNKT2pNEQMDKWppP2QNpVumV6V/jEjIONspmAmO3MoSy1rX9ZstmP2z9vR21nb+3Nkc3bnTO2w2VG7E9oZvrN/l/yu/F0zuU65zbuJu+N338nTySvNe78ncE9vvlR+bv70D04/tBXwFXAKJvea7635Ef1j7I/D+/T3Hdv3rTCi8FaRTlF50ZdiVvGt/br7K/avHog6MFxiVHLiIPYg++DEIatDzaWCpdml04c9DneVMcoKy94f2XrkZrlBec1R4tG0o9wK94qeYwrHDh77UhlTOV5lW9VRLVm9r3r5eMTxsRPWJ9prpGqKaj7/FPvTg1qn2q46pbryemx9ev2LhoCGwZ9Nfm5pFG8savzaxG7iNvs0D7QYt7S0SraWtMFtaW3zJ0NPjpyyP9XTrtle20HvKDoNTqedfvlL2C8TZ9zO9J81Odt+TvFcdSe1s7AL6srqWuyO6eb2BPeMnnc9399r3tv5q9avTRdkL1RdFL5Ycol4Kf/S6uXsy0t9SX0LV6KvTPdv7X98Nejq/QHvgeFrbtduXHe8fnXQZvDyDYsbF26a3Tx/y+RW922j211DhkOddwzvdA4bDXfdNb7bM2I60ju6YfTSmNXYlXv2967fd7l/e3zj+OiE/8SDydBJ7oOIB3MPEx6+eZT+aOVx7hPMk8KnAk/Ln0k+q/tN9bcOrhH34pT91NBz3+ePp1nTr35P+f3LTP4LyovyWZnZljm9uQvzjvMjLze9nHmV9GploeAPwT+qX6u8Pven9Z9Di0GLM284b1bfFr8Te9f03uB9/5LX0rMPiR9Wlgs/in1s/mTyafBz4OfZlYwvuC8VX1W/9n5z+/ZkNXF1NYnJYa5pARTSwlFRALxtAoASDAAV0YTEvnUNuTYCWte9CPOUGM959h+8rjPXMkYA1PcB4GcNgDvSV+UCoIQwP+I8+euHzKev/92RCM9SovT11gAiiyPSpG919e0qALgwAL4Or66uVKyufi1HtM57AC5vXNeuvNECJxHZTDXQ1fHtTz+Uy4v83f4Fdn68jYPl0OgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAvYSURBVGgFvVppc1zFFb2zaEbrSLZsy5aR7dgEsGXHG8QpliQ4gSK42KtSCcW35CekUimSjykqlUql8gPib+RTQpE4EAhQApvFFhgwSQXbgI2tXUKyrNFoNKPZcs7td997MxptJqHFTHffvufec7tv9+s3JlKpVMQrkeHy+NNRkadEIjsiEml0co5H8LGaTbQjlIWKLwvp6bD1rYbQ1109viLlnEj0ikj52S3RrmdohegIAxjID+yMx5LPRSORAyrlmPmz2oLw+4RXFwTtrP6f8aBwrljKP7Etue0yA4gMF0c/iEj0gKOzDMNqvujV060nWwT0BPV068kW47Ei57bGtxyKXCkM/TJWif46SBOPFzHhzKFdlrDM74QH0K6nW0/2JfGlSPlXkcH88HnYvs0ymn6sTVpLlbDeUu2lsJQvhQnLV4G/EC1XyjuoWMZeIJjF2uGa7XCfetSnjMXGwm2TsbZPGBNum+7a8JUdcQAaK5UycTgcHJlwOyxzcv1eUjebXZCLF0ZkaOiazKazUobpeDwqm7raZU/vTbJ5cwc9LYmndRbza7WTUq6jNt4Y+Tx7NWDtaUVwRIaB1reaauG2B1PSp9/+RAoLJRMtqr9xYJvs3ddTF2/KtbatbzX1rB0le4vA2uHlpIx9FpObzPRZT0zMyFsnLyxLnjb+dW5ARkevV9ly1h2PsG3qW5/tev7jnGk7WKhszyfLJpOxH27rRseX6mHg3TOXkC7UEGluTcqBg9s1bZLJmMzO5uVs/2WZGJ/R8f7Tn8mxhw5KvCGq+C/jP8oA6FZnGW2SMCL+zFOmTEEYbR/jtScn05KemVdy8YaY3Ht0j2zbvkGSyTgmJCptbY1yz3dvlabmhOpk5/IyMjKtfnxbtH8D/jWAcrmEIEiy7MihVhlrlTk5Zabjxl0wk1OzSoxfW7o7pKU1sQgfi0URVKevN4WglbySvnH/OIVAjma9GXbLybTyWr6cWrwqcIzf7LFUqvKes+x0FuMbGxsUwa9CgRudVpytG/Ufd6nhqNCwM+cZVQcIBcPIFhQetwF9021qcqlBjWvXMm5m2anBc8xKIwJ1voOpcIhQUDX4ev6RQvQDKmz4HydTPMfIXseq5Q4n2Kxt9K1lcnxWhgavVekTPzkxK4MDkHulqyvl+YWAPnzf9OVkVi/nH6eQl0LEeMbrVhwMFsqpeLLGprjsumWTXPpkQuX971yWqVsyuh+wh2ViLC0Xz4/5Drp71knHuibsE6wobJpfq9fiP/Lx9EXFMR0Cfmx57Dzz1rMUcroBolgsSt8rF2Quk6/r34Q8mb73wB49ocIzcmP+YeGDyY8qyShyOODifBljq41BbZ9yT5bPFeTc+4MyOuzOe4NY3bmxVQ7dsQ2nVNJErl7Gptn2AZ5uoVyQmYVZiU/OT0kylpBUQ0ri0Zjq+fNPZRSmp8Wn+IrT8IZ1jDoNiZjctneLTH6RqTqZ1AggX9vViWdBg9tTYFaLVz18Lee/BEeZYkayxazy0idxrpSXfOkLaY43S1tDW0CWx4+yD92N9J7E3PUOWrBgPHQ6m87JO6cuLSZPZtA7++6AHEaze2t7XbwFpBuakBr/88V5SRcyOL1wBHv+43h8YUYcgUxhTuYWspJKtmowkcAiKbjCgFDMiWuLpEH+zKnLks8XdTyGG2ipyGM3VHAavY8gKrf3SHcPb6WueCa1Q+ucDC0YoJ9caV4yhawUSgtKnJNKOfWi7trgrgo8FcpSkuncjIzOjcm13DRWZkHPaz6BeW7zj21OqWtXMPPzcrqG/JG7dygH+2pNeXmPID54b0CGB6d9PG3Rtj0XWBfLRZnJz8jY/LhMzYNHMef8K4/APx5kWA72EQ5wWhgZRZlSRmYXMpKIxqW5oVmakGIxnosotgJMmzNvXZFCnk9WEc78N+/crsekCrwvBtQPvUwapxT8fPjeoN6Ftva0+35JPI90zmK2cyX8CIHir4jHj1mlQq+K61msmjaCWpUNWpGFUgGGr8u0zEgDNnoiltSNP58uyYdnRvycJ/k7QH5dZ5MfIE2zJLDBj9yFIN4Ogjjbf0XS2U7ZvL1VV7pQRorAuUv9wD9lbsKshgRKnHDdxOpBvwjiUmoM+uVyzYyVEQw/Bbk8lpG/PHsO5MvS3tYiKdw4H3xkr0RbCpLGauAnGpm8jgsb/hYKRUnjyONq7zzYKn/782XcRq9LJpuTvn6RBx7eLb37t6jvlfwbVwsIKeTlj66LXeKYQiDtHZc6A6Hx8bFZee5PH0lu3m3YzHxW7n/8Zkl0lDRv6YTE3//4U/Mn9+V2qDQSi8jRh3ci+I8QgBt++cR5ze/e/V2cfxUu55+2yQlrINESNy6vyfopY/OUpOS1w3W4/eoLF33yyca4PPbkXtm0uUWvBmG8o+e+w/hEY0wef3KfbNjU4qv0vfSJHsNhfBhT3Xaci6WieO8DiBcJxf1gtbv3B32V8wSAzg8ev03acKqQ/KM/2isbu1p8XBjvs0MjjGc72RTTwDcAG8WqHHtiNx5ycd/Ocv7NFtdBL3N0pDc+3ccUU+AqngxuUQN5Wyohjz7ZKwvI9Y1dzVDFn20c7iwWr3IdBsBURVE59FHrBPy4V6Ym5kRPIw7W4Ov5pxGqcbPrKaQ7Grb54GJ0VYVaKCo2FMim2pOqyxVZFu8ZIxHfK/DEEJtIRPFQS+meW4t/w8eZW0pAGbojTGfJ8Wawvl/jb7WO4WtZvAUAP4azelX4FfzrMRrMOpMBzOkB//kFs6UpAgGHwNjvU2dFPHQ4204X32vFh/Rr/eMu5Mg66h55dUVH+JAwUP64dpE2HOQ4i5pg6AH+zBuDbsz7Hh1Oy+Zu9+bG/bASXmGr8B8vldwVoMobOkbYahuv7Zvcaq7GO31DcvHfUybS+uXnPpP7H9slm7qbHfmq0cUd82O1adT2+eOupgBr/WCpScI+nF0bM5nVTIswnvvpzVcGqsjziGQpFMryz+cvyfiI99IPH7X4G/HvngNeEEoMjKtJBQGRIHX8gLhOXr+EK8bJlwbks/PTNlmy89YOOfbDXcJ3ZpYignjl+c9lbITXCtgN4W1SKFuLf12BqpmomVWY81cj7NAwdFbAXef1F6/KlU+DV8mv966TO+/rlo4NSVwzdiAI97bHIF796xUZH+aLSbDqPuk1+o9yDxDMWh/XobaOwSAf2fyYjmEYRD5fkNdfGJChz4Nf527Zt07u+E6XSxHotLbjRf6RbVVBvHbiqqaT2TLbYS46toJ//DqNOYaS1eG2ySy1LF20VvJFeeMFvMQPzvlps/vgejl8zya3amYbaZZan5Cjj/RUBdF3YkC+GOO/IdyYf+LwRuZtRKuxAj5RPDF1aUNETJ+vjq//fVAmRtyPuoxg7+3rZf+RziXxqY6E3PvwTXoPon6xUHE2RufwXLEDYXX+XTojAJ1dzJATkLC3IirzjMG4roYXHK/RfSeGZGrcvTWRzP5vdcqew+tXxLd1NMi9D22tCuLki8O6Em7iVvZvGUCuuE673C96e0D3QR2Z5ih0uBdO/WNYrk8GP2AduKtTbt6X0j20Ep7jLe0x+faxzQjCvZ5yJU6+OKI/iq0GTx37MIUybhWCpbMTQX925Epg5i2VONu7D3dI1PmWQ/d0ys7dbarjZtBSweHMtuFNhytx94NBELsPdeiqUG85/4bXulTORH5/6g9n8OZ1BNcNzV3eU5AvrqDJxxCVVU6p1x69msXPJhW5aRdeSrxhX28VeOcAvyVdL8jkSE527uEkmCFvdBn/TqPSj9uoHI9K+Yhd570BVC4QvQa7ng7RCYPq6mlETHyxhlN81opXO8DziG1NtSAleD+ywhlY3j/xYHKcmMhv+373GuqjekskIQrx8cygQ2MEhORGnjJv/CvFi/T9/OjPvs9TqFJYyD9VqpT7eERqZDqjzOHgVOJK6BjCUHlI1/bIV4UHlz5yBo+K/t8qmETOYuSZV3/zU/xY95NKpNyL624r5Sy8+nL+g1VxfTcWrJRboWBMwf8jPLZ2Bm9s/4G540/f94s/kjzt/xfbZ3bQjAJ2DAAAAABJRU5ErkJggg==</pre>
  7384. </div>
  7385. <div title="SiteInfo" creator="fancybox" modifier="fancybox" created="201101211613" modified="201102120022" tags="presentation" server.title="SiteInfo" server.page.revision="251902" server.etag="&quot;fancybox_public/SiteInfo/251902;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="17ebd37b58c160e18f70fc59a2f403f53dfb4c1e">
  7386. <pre>@fancybox site adds FancyBoxPlugin@fancybox for easy usage with TW. It includes the FancyBox library from http://fancybox.net. Have fun!</pre>
  7387. </div>
  7388. <div title="SiteSubtitle" creator="fancybox" modifier="fancybox" created="201101181525" modified="201101181525" tags="excludeLists excludeSearch" server.title="SiteSubtitle" server.page.revision="47611" server.etag="&quot;fancybox_public/SiteSubtitle/47611;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="037a796b07f748584d280b286c6bd88ed85090cc">
  7389. <pre>a TiddlySpace</pre>
  7390. </div>
  7391. <div title="SiteTitle" creator="fancybox" modifier="fancybox" created="201101181525" modified="201101181525" tags="excludeLists excludeSearch" server.title="SiteTitle" server.page.revision="47612" server.etag="&quot;fancybox_public/SiteTitle/47612;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="9d9d467c1282d7649a887a5354d025af342b2fdb">
  7392. <pre>fancybox</pre>
  7393. </div>
  7394. <div title="SlideShowConfig" creator="fancybox" modifier="pmario" created="201101211613" modified="201102222329" server.title="SlideShowConfig" server.page.revision="261802" server.etag="&quot;fancybox_public/SlideShowConfig/261802;679c808ea83728c9f0922e0ac831727f87829617&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="726c99a4f1a2e5b9874e90a5fba0737f14760837">
  7395. <pre>!Fancy
  7396. {{{
  7397. labelSection: label
  7398. padding: 0
  7399. // no visible border
  7400. transitionIn: none
  7401. transitionOut: none
  7402. type: image
  7403. changeFade: 0
  7404. }}}
  7405. !Default
  7406. {{{
  7407. // === FancyBoxPlugin specific parameters
  7408. thumbHost: http://fancybox-thumbs.tiddlyspace.com/
  7409. // prefix if thumbs are loaded from other space
  7410. picHost: http://fancybox-pics.tiddlyspace.com/
  7411. // picture prefix last / is important !!!
  7412. }}}
  7413. !Offline
  7414. {{{
  7415. thumbHost: ./thumbs/
  7416. picHost: ./pics/
  7417. }}}</pre>
  7418. </div>
  7419. <div title="SlideShowPanorama" creator="pmario" modifier="pmario" created="201102072134" modified="201102072134" server.title="SlideShowPanorama" server.page.revision="245627" server.etag="&quot;fancybox_private/SlideShowPanorama/245627;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="676acd17968eb95df4840e1eee0e99a1f754a02d">
  7420. <pre>{{{
  7421. &lt;&lt;tiddler SlideShowTemplate with:panorama &quot;fancy-thumbs&quot;&gt;&gt;
  7422. }}}
  7423. &lt;&lt;tiddler SlideShowTemplate with:panorama &quot;fancy-thumbs&quot;&gt;&gt;
  7424. </pre>
  7425. </div>
  7426. <div title="SlideShowTemplate" creator="pmario" modifier="pmario" created="201102072134" modified="201102072134" server.title="SlideShowTemplate" server.page.revision="245630" server.etag="&quot;fancybox_private/SlideShowTemplate/245630;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="8c5cdffd3ecb5c405d52edf65389fb0ddd1e0fa7">
  7427. <pre>&lt;html&gt;
  7428. &lt;style&gt;
  7429. .fancy-thumbs {
  7430. margin: .2em;
  7431. }
  7432. &lt;/style&gt;
  7433. &lt;/html&gt;
  7434. &lt;script&gt;
  7435. var list = store.getTaggedTiddlers(&quot;$1&quot;);
  7436. var out = '';
  7437. for (var i=0; i &lt; list.length; i += 1) {
  7438. jQuery('&lt;span class=&quot;$2&quot;&gt;&lt;a rel=&quot;$1&quot; href=%0%1 title=&quot;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;%1&quot; /&gt;&lt;/a&gt;&lt;/span&gt;'.format(['http://fancybox-pics.tiddlyspace.com/', list[i].title] )).appendTo(place)[0];
  7439. }
  7440. &lt;/script&gt;
  7441. &lt;&lt;fancyBox selector:&quot;.$2 a&quot; defaults:SlideShowDefaults&gt;&gt;
  7442. </pre>
  7443. </div>
  7444. <div title="SlideShowTemplateInfo" creator="pmario" modifier="pmario" created="201102072133" modified="201102072133" server.title="SlideShowTemplateInfo" server.page.revision="245626" server.etag="&quot;fancybox_private/SlideShowTemplateInfo/245626;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="44bf9229482d4aed01fc77b21a268d5894081d26">
  7445. <pre>!Info
  7446. This template is only used for easy experimenting. It will be assimilated into the FancyBoxPlugin, when I know what makes sense.
  7447. {{{
  7448. &lt;html&gt;
  7449. &lt;style&gt;
  7450. .fancy-thumbs {
  7451. margin: .2em;
  7452. }
  7453. &lt;/style&gt;
  7454. &lt;/html&gt;
  7455. &lt;script&gt;
  7456. var list = store.getTaggedTiddlers(&quot;$1&quot;);
  7457. var out = '';
  7458. for (var i=0; i &lt; list.length; i += 1) {
  7459. jQuery('&lt;span class=&quot;$2&quot;&gt;&lt;a rel=&quot;$1&quot; href=%0%1 title=&quot;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;%1&quot; /&gt;&lt;/a&gt;&lt;/span&gt;'.format(['http://fancybox-pics.tiddlyspace.com/', list[i].title] )).appendTo(place)[0];
  7460. }
  7461. &lt;/script&gt;
  7462. &lt;&lt;fancyBox selector:&quot;.$2 a&quot; defaults:SlideShowDefaults&gt;&gt;
  7463. }}}</pre>
  7464. </div>
  7465. <div title="SlideShowTest (old)" creator="pmario" modifier="pmario" created="201102072134" modified="201102072134" server.title="SlideShowTest (old)" server.page.revision="245629" server.etag="&quot;fancybox_private/SlideShowTest%20(old)/245629;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_private" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_private" server.permissions="read, write, create, delete" server.content-type="" _hash="b73d0ddba65d3bd96217193d479221bb01c6cc31">
  7466. <pre>{{{
  7467. &lt;&lt;tiddler SlideShowTemplate with:thumb &quot;fancy-thumbs&quot;&gt;&gt;
  7468. }}}
  7469. &lt;&lt;tiddler SlideShowTemplate with:thumb &quot;fancy-thumbs&quot;&gt;&gt;
  7470. </pre>
  7471. </div>
  7472. <div title="Stack.png" creator="pmario" modifier="pmario" created="201101311023" modified="201101311023" tags="attachment" server.title="Stack.png" server.page.revision="227365" server.etag="&quot;fancybox_public/Stack.png/227365;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="b4b35ba77f77c81e5d80289033a63396da593162">
  7473. <pre>!title
  7474. !usage
  7475. {{{[img[Stack.png]]}}}
  7476. [img[Stack.png]]
  7477. !notes
  7478. attached by FileDropPlugin
  7479. !type
  7480. image/jpg
  7481. !file
  7482. ./thumbs/Stack.png
  7483. !url
  7484. http://fancybox-thumbs.tiddlyspace.com/Stack.png
  7485. !link
  7486. [[Stack.png|http://fancybox-pics.tiddlyspace.com/Stack.png]]
  7487. !!!!!end
  7488. </pre>
  7489. </div>
  7490. <div title="StackImgStyleSheet" creator="pmario" modifier="pmario" created="201102161421" modified="201102161542" server.title="StackImgStyleSheet" server.page.revision="255647" server.etag="&quot;fancybox_public/StackImgStyleSheet/255647;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="2255491364ae155a341bae2b6129e3f09c782e1a">
  7491. <pre>/*{{{*/
  7492. /*== Only available at Mozilla based and WebKit browsers ==*/
  7493. .stackLeft {
  7494. box-shadow: 0 0 5px black;
  7495. background: white;
  7496. -moz-box-shadow: 0 0 5px black;
  7497. -moz-transform: rotate(-5deg);
  7498. -webkit-transform: rotate(-5deg);
  7499. -webkit-box-shadow: 0 0 5px black;
  7500. width: -moz-fit-content;
  7501. width: intrinsic;
  7502. }
  7503. .stackRight {
  7504. box-shadow: 0 0 5px black;
  7505. background: white;
  7506. -moz-box-shadow: 0 0 5px black;
  7507. -moz-transform: rotate(12deg);
  7508. -webkit-transform: rotate(12deg);
  7509. -webkit-box-shadow: 0 0 5px black;
  7510. }
  7511. .stackNormal {
  7512. box-shadow: 0 0 5px black;
  7513. background: white;
  7514. -moz-box-shadow: 0 0 5px black;
  7515. -moz-transform: rotate(-7deg);
  7516. -webkit-transform: rotate(-7deg);
  7517. -webkit-box-shadow: 0 0 5px black;
  7518. }
  7519. .stackNormal img {
  7520. padding: 5px 5px 2px 5px;
  7521. }
  7522. /*}}}*/
  7523. </pre>
  7524. </div>
  7525. <div title="StoryGlueMacro" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="PresentationPackage excludeLists systemConfig" server.title="StoryGlueMacro" server.page.revision="107273" server.etag="&quot;neui-em_public/StoryGlueMacro/107273;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="67714582b1f134a4020b09545b2e1ff20f0ce6dd">
  7526. <pre>/***
  7527. |''Name:''|StoryGlueMacro|
  7528. |''Description:''|Makes SelectStoryMacro and NavigationMacro work together|
  7529. |''Author:''|Mario Pietsch|
  7530. |''Source:''|http://a-pm.tiddlyspot.com|
  7531. |''Version:''|0.5.2|
  7532. |''Status:''|beta|
  7533. |''Date:''|2010.02.06|
  7534. |''Requires:''|SelectStoryMacro, NavigationMacro|
  7535. |''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
  7536. |''~CoreVersion:''|2.2.2|
  7537. !!!!!Usage:
  7538. &lt;&lt;&lt;
  7539. Add the macro to the ViewTemplate, specifying the tag eg:&quot;story&quot; and a cookie: eg:&quot;ACTIVESTORY&quot; to navigate between the possible stories.
  7540. Find the line:
  7541. {{{
  7542. &lt;div class='viewer' macro='view text wikified'&gt;&lt;/div&gt;
  7543. }}}
  7544. ''and add the following line below:''
  7545. {{{
  7546. &lt;div class='viewer' macro='storyGlue story ACTIVESTORY&lt;/div&gt;
  7547. }}}
  7548. If you are allready using &quot;navigation&quot; macro. Replace &quot;navigation&quot; macro because it is called by StoryGlueMacro to handle navigation.
  7549. Don't delete it comment it !!
  7550. &lt;&lt;&lt;
  7551. !!!!!Parameter
  7552. &lt;&lt;&lt;
  7553. General Format:
  7554. {{{
  7555. &lt;div class='viewer' macro='storyGlue storyTag COOKIENAME&lt;/div&gt;
  7556. }}}
  7557. storyTag: The macro searches all tiddlers tagged: &quot;storyTag&quot;
  7558. &gt;If the tiddler is found in one or more stories. &quot;selectStory&quot; macro is activated instead of &quot;navigation&quot; macro to switch to a new story if you want.
  7559. &gt;If it doesn't find a matching story nothing is displayed.
  7560. COOKIENAME is last part of an txtSelectStory option cookie, that storyGlue will look at.
  7561. &gt;The cookie is used, to store the name of the actual story, that will be used for navigating.
  7562. &gt;The cookie can be manipulated also by SelectStoryMacro if the same name is used.
  7563. &gt;Bee carefull if you use a different name. Look at my examples!
  7564. &gt;If you don't use SelectStoryMacro you will need a little program somewhere in your init functions.
  7565. &gt;{{{config.options.txtSelectStoryCOOKIENAME = &quot;yourTiddlerThatContainsAStoryAndIsTaggedWithXXXX&quot;;}}}
  7566. &gt;Better have a look at [[zzMptwUserConfigPlugin]]
  7567. The option: {{{&lt;&lt;option txtSelectStoryACTIVESTORY&gt;&gt;}}}: ''&lt;&lt;varDisplay {{config.options.txtSelectStoryACTIVESTORY}}&gt;&gt;''
  7568. contains the active story, that is used in [[a-pm presentation manager|http://a-pm.tiddlyspot.com]].
  7569. If you click a tiddler, which is not part of the active story, but of any tiddler tagged: &quot;story&quot;, storyGlue will activate the SelectStoryMarcro. SelectStoryMacro will display all stories found in a different color (default: blue). If you click on of the small sqares, it will activate this story, which can be used for navigatin now.
  7570. The SelectStoryMacro can also work stand alone. See [[SelectStoryMacro]] for more details.
  7571. &lt;&lt;&lt;
  7572. !!!!!Attention
  7573. &lt;&lt;&lt;
  7574. There is no limit using different cookie names. ''But be warned: If you get confused. It is not my fault :)''
  7575. If your cookie name is eg: MYSTORY the option which contains the active story will be: {{{&lt;&lt;option txtSelectStoryMYSTORY&gt;&gt;}}}
  7576. It is always: txtSelectStory + yourCookieName.
  7577. In viewTemplate call it with:
  7578. {{{
  7579. &lt;div class='viewer' macro='storyGlue story MYSTORY&lt;/div&gt;
  7580. }}}
  7581. &lt;&lt;&lt;
  7582. !!!!!Example:
  7583. &lt;&lt;&lt;
  7584. [[Demo|Story1]]
  7585. &lt;&lt;&lt;
  7586. !!!!!Revision History
  7587. &lt;&lt;&lt;
  7588. *Version: 0.5.1 - 2010.01.30
  7589. **commented the displayMessage if an empty story is selected from SelectStoryMacro
  7590. &lt;&lt;&lt;
  7591. ***/
  7592. /*{{{*/
  7593. //
  7594. //!BEGIN-PLUGIN-CODE
  7595. if(!version.extensions.StoryGluePlugin) { //# ensure that the plugin is only installed once
  7596. version.extensions.StoryGluePlugin = { installed: true };
  7597. if(!config.extensions) { config.extensions = {}; } //# obsolete from v2.4.2
  7598. config.macros.storyGlue= {
  7599. defineStoryMsg: &quot;~StoryGlue: option name is not defined!\n&quot;+
  7600. &quot;Read the Documentation!\n&quot; +
  7601. &quot;Check your ~ViewTemplate!\n&quot; +
  7602. &quot;Check: config.options.&quot;,
  7603. handler: function(place, macroName, params, wikifier, paramString, tiddler){
  7604. if (!config.macros.navigation)
  7605. return false;
  7606. if (!config.macros.selectStory)
  7607. return false;
  7608. if (config.options.chkDisableStoryGlue== undefined)
  7609. config.options.chkDisableStoryGlue= false;
  7610. var sets = store.getTaggedTiddlers(params[0]); // get tiddlers tagged eg:'story'
  7611. var optId = config.macros.selectStory.optPreTxt + params[1]; // get the last part of the cookie name
  7612. var txtArray = [];
  7613. for (var i = 0; i &lt; sets.length; i++) {
  7614. txtArray.push(sets[i].title);
  7615. }
  7616. var navIndex = txtArray.indexOf(config.options[optId]);
  7617. if (navIndex == -1) {
  7618. // console.log(this.defineStoryMsg+optId);
  7619. return false; // can only be if option is undefined or different pc / cookie
  7620. }
  7621. var tiddlers = store.getTiddlerText(sets[navIndex].title).readBracketedList(); // read tiddlers in active story
  7622. var tidIndex = tiddlers.indexOf(tiddler.title);
  7623. // storyline ok .. use navigation macro
  7624. if (tidIndex != -1) {
  7625. var p = &quot;tiddlers:{{store.getTiddlerText('&quot; + sets[navIndex].title + &quot;').readBracketedList()}}&quot;;
  7626. invokeMacro(place, 'navigation', p, wikifier, tiddler);
  7627. return false;
  7628. }
  7629. if (config.options.chkDisableStoryGlue)
  7630. return false;
  7631. if (this.debug) console.log('not disabled:', tiddlers);
  7632. if (tidIndex == -1) {
  7633. // search other stories for this tiddler.
  7634. var text = params[1]+' '+'tiddlers: [[';
  7635. var found = false;
  7636. for (var i=0; i&lt;txtArray.length; i++) { //!!!!!!! better search needed !
  7637. tiddlers = store.getTiddlerText(txtArray[i]).readBracketedList(); // read tiddlers in active story
  7638. tidIndex = tiddlers.indexOf(tiddler.title);
  7639. if (tidIndex != -1) {
  7640. found = true;
  7641. text = text + '&quot;' + txtArray[i] + '&quot; ';
  7642. } // if tidIndex ..
  7643. } // for i &lt; txtArray.len ..
  7644. text = text+']]';
  7645. // console.log( 'text: ' + text);
  7646. // console.log( 'found: ' + found);
  7647. // var text = params[1]+&quot; &quot;+ &quot;tiddlers: {{ var array = store.filterTiddlers('[tag[&quot; + params[0] +
  7648. // &quot;]]');var text = ''; for (var i=0; i&lt;array.length; i++)&quot;+
  7649. // &quot;{text = text + '[[' + array[i].title + ']]';};}}&quot;; // be carefull evaluated string !!!
  7650. if (found) invokeMacro(place, 'selectStory', text, wikifier, tiddler);
  7651. } // handler
  7652. } // config macro
  7653. }
  7654. } //# end of &quot;install only once&quot;
  7655. /*}}}*/</pre>
  7656. </div>
  7657. <div title="StyleSheet" creator="fancybox" modifier="pmario" created="201101211613" modified="201102210003" server.title="StyleSheet" server.page.revision="260053" server.etag="&quot;fancybox_public/StyleSheet/260053;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="1a29a57b1be95a51aaa5eb6a486c427172b90921">
  7658. <pre>/*{{{*/
  7659. [[FancyBoxStyleSheet]]
  7660. [[StackImgStyleSheet]]
  7661. [[RoundaboutStyleSheet]]
  7662. #tip7-title { text-align: left; overflow: auto; }
  7663. #tip7-title b { display: block; margin-right: 80px; }
  7664. #tip7-title span { float: right; text-align: right; }
  7665. .twfb-list {
  7666. margin: .2em;
  7667. }
  7668. a img{
  7669. padding: 5px;
  7670. background: white;
  7671. }
  7672. .trImageBackground a img{
  7673. padding: none;
  7674. background: none;
  7675. }
  7676. /*}}}*/</pre>
  7677. </div>
  7678. <div title="StyleSheetBackstage" creator="osmosoft" modifier="osmosoft" created="201102181424" modified="201102181424" tags="excludeLists excludeSearch" server.title="StyleSheetBackstage" server.page.revision="257488" server.etag="&quot;tiddlyspace/StyleSheetBackstage/257488;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/tiddlyspace" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="tiddlyspace" server.permissions="read" server.content-type="" _hash="423f785fa9fb447324730eb435cc35f9c3620417">
  7679. <pre>/*{{{*/
  7680. .publicLightText {
  7681. color: #C0E5FC;
  7682. }
  7683. .privateLightText {
  7684. color: #E2C1D6;
  7685. }
  7686. .tiddler .error.annotation .button{
  7687. display: inline-block;
  7688. }
  7689. #backstageArea #backstageToolbar a.task_tiddlyspace {
  7690. margin: 0px auto auto -75px;
  7691. font-weight: bold;
  7692. width: 150px;
  7693. line-height:24px;
  7694. font-size: 1.2em;
  7695. padding: 0;
  7696. top: 0;
  7697. position: absolute;
  7698. left: 50%;
  7699. }
  7700. .task_tiddlyspace .image,
  7701. .task_tiddlyspace .svgIcon {
  7702. margin-top: -2px;
  7703. display: inline;
  7704. }
  7705. .task_tiddlyspace .svgIconText {
  7706. display: none;
  7707. }
  7708. .task_tiddlyspace .logoText {
  7709. position: absolute;
  7710. top: 0px;
  7711. margin-left: 5px;
  7712. }
  7713. #backstageArea {
  7714. z-index: 49;
  7715. color: white;
  7716. background-color: black;
  7717. background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #222),color-stop(0.5, #333),color-stop(1, #555));
  7718. background: -moz-linear-gradient(center bottom,#222 0%, #333 50%, #555 100%);
  7719. /* For Internet Explorer 5.5 - 7 */
  7720. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222);
  7721. /* For Internet Explorer 8 */
  7722. -ms-filter: &quot;progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222)&quot;;
  7723. height: 24px;
  7724. padding: 0;
  7725. border-bottom: solid 1px black;
  7726. }
  7727. .backstageBackground {
  7728. fill: black;
  7729. }
  7730. #backstageButton {
  7731. overflow: hidden;
  7732. }
  7733. #backstageButton #backstageShow,
  7734. #backstageButton #backstageHide {
  7735. margin: 0px;
  7736. padding: 0px;
  7737. }
  7738. #backstageButton #backstageShow:hover,
  7739. #backstageButton #backstageHide:hover {
  7740. background: none;
  7741. color: none;
  7742. }
  7743. #backstageShow {
  7744. margin-right: -3px;
  7745. margin-top: -3px;
  7746. }
  7747. #backstageShow .svgIcon {
  7748. left: 8px;
  7749. position: relative;
  7750. top: -5px;
  7751. }
  7752. #messageArea {
  7753. top: 50px;
  7754. }
  7755. #backstageToolbar {
  7756. position: relative;
  7757. }
  7758. #backstageArea a {
  7759. padding: 0px;
  7760. margin-left: 0px;
  7761. color: white;
  7762. background: none;
  7763. }
  7764. #backstageArea a:hover {
  7765. background-color: white;
  7766. }
  7767. #backstage .tabContents ol,
  7768. #backstage .tabContents ul {
  7769. padding: auto;
  7770. }
  7771. #backstageButton a {
  7772. margin: 0;
  7773. }
  7774. .backstagePanelBody,
  7775. .backstagePanelBody .tabContents ul {
  7776. padding: 5px;
  7777. margin: 5px;
  7778. }
  7779. #backstage #backstagePanel {
  7780. margin-left: 5%;
  7781. padding: 0em;
  7782. margin-right: 5%;
  7783. }
  7784. #backstageToolbar a {
  7785. position: relative;
  7786. }
  7787. #backstageArea a.backstageSelTab,
  7788. #backstageToolbar .backstageTask {
  7789. line-height: 24px;
  7790. color: #767676;
  7791. }
  7792. .backstageTask .externalImage,
  7793. .backstageTask .image {
  7794. display: inline;
  7795. }
  7796. .backstageTask .txtUserName,
  7797. .backstageTask .spaceName {
  7798. color: #fff;
  7799. }
  7800. .backstageSelTab .txtUserName,
  7801. .backstageSelTab .spaceName,
  7802. a:hover .txtUserName,
  7803. a:hover .spaceName {
  7804. color: #000;
  7805. }
  7806. .spaceSiteIcon {
  7807. margin-right: 10px;
  7808. }
  7809. .userSiteIcon {
  7810. margin-left: 10px;
  7811. }
  7812. #backstageToolbar .task_space {
  7813. position: absolute;
  7814. top: 0px;
  7815. left: 0%;
  7816. }
  7817. #backstageToolbar .task_user,
  7818. #backstageToolbar .task_login {
  7819. display: block;
  7820. position: absolute;
  7821. top: 0px;
  7822. right: 5%;
  7823. }
  7824. #backstageToolbar .task_login img {
  7825. position: relative;
  7826. display: inline;
  7827. }
  7828. #backstageToolbar .task_login img,
  7829. #backstageToolbar .task_user img {
  7830. float: right;
  7831. }
  7832. #backstageToolbar .task_space .svgIcon {
  7833. float: left;
  7834. position: relative;
  7835. z-index: 2;
  7836. }
  7837. #backstageToolbar a span {
  7838. z-index: 2;
  7839. }
  7840. #backstageToolbar .spaceSiteIcon {
  7841. float: left;
  7842. }
  7843. a.backstageTask {
  7844. display: block;
  7845. }
  7846. #backstageToolbar a span.txtUserName,
  7847. #backstageToolbar a .txtUserName span {
  7848. display: inline;
  7849. float: none;
  7850. }
  7851. #backstage .deleteButton {
  7852. margin-left: 0.3em;
  7853. font-weight: bold;
  7854. color: red;
  7855. font-size: 1.6em;
  7856. }
  7857. #backstage .deleteButton:hover {
  7858. background: none;
  7859. }
  7860. #backstageArea .siteIcon {
  7861. display: inline;
  7862. }
  7863. #backstagePanel .TiddlySpaceLogin {
  7864. display: inline;
  7865. }
  7866. .backstagePanelBody .tabContents .button {
  7867. display: block;
  7868. }
  7869. .backstagePanelBody .tab {
  7870. margin: 0 0 0 0.6em;
  7871. padding: 0.4em 0.5em 1px 0.5em;
  7872. }
  7873. #backstage .tabContents{
  7874. padding: 1.5em;
  7875. }
  7876. #backstage .wizard {
  7877. border: 0px;
  7878. }
  7879. #backstage .txtSpaceTab li {
  7880. border: 1px solid #ddd;
  7881. background: #eee;
  7882. list-style: none;
  7883. margin: 0.5em;
  7884. padding: 0.5em;
  7885. width: 80%;
  7886. }
  7887. #backstage .txtSpaceTab li.annotation {
  7888. border: 2px solid [[ColorPalette::SecondaryMid]];
  7889. }
  7890. #backstage div li.listLink {
  7891. border: 0px;
  7892. width: 78%;
  7893. font-size: 0.7em;
  7894. }
  7895. #backstage div li.listTitle {
  7896. font-weight: bold;
  7897. text-decoration: underline;
  7898. font-size: 1em;
  7899. background: #ccc;
  7900. width: 100%;
  7901. }
  7902. #backstage div.txtSpaceTab li .deleteButton {
  7903. float: right;
  7904. }
  7905. #backstage fieldset {
  7906. border: solid 1px [[ColorPalette::Background]];
  7907. }
  7908. #backstage .viewer table,#backstage table.twtable {
  7909. border: 0px;
  7910. }
  7911. #backstageToolbar img {
  7912. padding: 0;
  7913. }
  7914. #backstage .wizard,
  7915. #backstage .wizardFooter {
  7916. background: none;
  7917. }
  7918. .viewer td, .viewer tr, .twtable td, .twtable tr {
  7919. border: 1px solid #eee;
  7920. }
  7921. #backstage .inlineList ul li {
  7922. background-color: [[ColorPalette::Background]];
  7923. border: solid 1px [[ColorPalette::TertiaryMid]];
  7924. display: block;
  7925. float: left;
  7926. list-style: none;
  7927. margin-right: 1em;
  7928. padding: 0.5em;
  7929. }
  7930. .backstageClear, .inlineList form {
  7931. clear: both;
  7932. display: block;
  7933. margin-top: 3em;
  7934. }
  7935. .tiddlyspaceMenu {
  7936. text-align: center;
  7937. }
  7938. span.chunkyButton {
  7939. display: block;
  7940. padding: 0;
  7941. margin: 0;
  7942. border: solid 2px #000;
  7943. }
  7944. span.chunkyButton a.button, span.chunkyButton a:active.button {
  7945. white-space: nowrap;
  7946. font-weight: bold;
  7947. font-size: 1.8em;
  7948. color: #fff;
  7949. background-color: #04b;
  7950. text-align: center;
  7951. padding: 1em 3em;
  7952. margin: 0;
  7953. border-style: none;
  7954. border-top: solid 1px #fff;
  7955. display: block;
  7956. }
  7957. .chunkyButton {
  7958. width: 18em;
  7959. }
  7960. span.chunkyButton a.button:hover {
  7961. background-color: #014;
  7962. border-style: none;
  7963. color: #fff;
  7964. border-top: solid 1px #8cf;
  7965. }
  7966. a.baskstageTask.task_login,
  7967. a.baskstageTask.task_user {
  7968. _width: 200px;
  7969. _text-align: right;
  7970. }
  7971. #backstageArea #backstageToolbar .task_login img,
  7972. #backstageArea #backstageToolbar .task_user img {
  7973. _display: inline;
  7974. _float: none;
  7975. }
  7976. #backstage .unpluggedSpaceTab .wizard,
  7977. .unpluggedSpaceTab .wizard {
  7978. background: white;
  7979. border: 2px solid #CCC;
  7980. padding: 5px;
  7981. }
  7982. .syncKey .keyItem {
  7983. border: 1px solid black;
  7984. display: inline-block;
  7985. margin: 0.2em;
  7986. padding: 0.1em 0.1em 0.1em 0.1em;
  7987. }
  7988. .keyHeading {
  7989. font-size: 2em;
  7990. font-weight: bold;
  7991. margin: 0.4em 0em -0.2em;
  7992. }
  7993. .unpluggedSpaceTab .putToServer,
  7994. .unpluggedSpaceTab .notChanged {
  7995. display: none;
  7996. }
  7997. .tiddlyspaceMenu ul {
  7998. margin: 0;
  7999. padding: 0;
  8000. }
  8001. .tiddlyspaceMenu ul li {
  8002. list-style: none;
  8003. }
  8004. .unsyncedChanges .unsyncedList {
  8005. display: block;
  8006. }
  8007. .unsyncedList {
  8008. display: none;
  8009. }
  8010. /* TODO: This is a presentational fix for a data problem that
  8011. ought to go away with sync refactorings. See:
  8012. https://github.com/TiddlySpace/tiddlyspace/pull/536#commitcomment-216317
  8013. */
  8014. .notFound td .externalLink {
  8015. display: none;
  8016. }
  8017. /*}}}*/</pre>
  8018. </div>
  8019. <div title="StyleSheetHeaderMp" creator="pmario" modifier="pmario" created="201008061923" modified="201012280948" tags="excludeLists" server.title="StyleSheetHeaderMp" server.page.revision="107280" server.etag="&quot;neui-em_public/StyleSheetHeaderMp/107280;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="d45db206eeb8f23a3cc0b3f74b9a339f644fb671">
  8020. <pre>/*{{{*/
  8021. .headerForeground {
  8022. position: relative;
  8023. text-align: right;
  8024. }
  8025. .header {
  8026. width: 100%; /* for ie */
  8027. }
  8028. #contentWrapper {
  8029. position: relative;
  8030. padding-top: 1px;
  8031. top: -1px;
  8032. }
  8033. .header {
  8034. position: relative;
  8035. background-color: [[ColorPalette::PrimaryLight]];
  8036. }
  8037. .siteTitle {
  8038. display: block;
  8039. }
  8040. /*}}}*/</pre>
  8041. </div>
  8042. <div title="StyleSheetMediaPrint" creator="pmario" modifier="pmario" created="201008111759" modified="201009181705" server.title="StyleSheetMediaPrint" server.page.revision="107282" server.etag="&quot;neui-em_public/StyleSheetMediaPrint/107282;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="8a6b652b9b73b1242f11a0c95048f48da64135da">
  8043. <pre>/*{{{*/
  8044. /* make it print a little cleaner */
  8045. /* FireFox only prints one page. Google Chrome works. */
  8046. @media print {
  8047. /* basic setting */
  8048. #displayArea {
  8049. font:11px/120% Arial, serif;
  8050. background-color: white !important;
  8051. background-image: none !important;
  8052. color:black;
  8053. width: 95%;
  8054. }
  8055. #sidebarSearch,
  8056. .clear,
  8057. .topMenu,
  8058. .quickopentag a.button,
  8059. .miniTag,
  8060. .noPrint,
  8061. .tagglyTagging {
  8062. display: none ! important;
  8063. }
  8064. /* not sure if we need all the importants */
  8065. .tiddler {
  8066. -moz-box-shadow: none;
  8067. -web-box-shadow: none;
  8068. boder:none ! important;
  8069. border-style: none ! important;
  8070. margin:0px ! important;
  8071. padding:0px ! important;
  8072. padding-bottom:2em ! important;
  8073. display:inline;
  8074. }
  8075. .headerShadow {
  8076. visibility: hidden ! important;
  8077. }
  8078. .tagglyTagged .quickopentag, .tagged .quickopentag {
  8079. /* border-style: none ! important; */
  8080. }
  8081. .siteIcon,
  8082. .spaceSiteIcon {
  8083. display: none ! important;
  8084. }
  8085. }
  8086. /*}}}*/
  8087. </pre>
  8088. </div>
  8089. <div title="StyleSheetMenuBarMp" creator="pmario" modifier="pmario" created="201008171536" modified="201008181527" tags="excludeLists" server.title="StyleSheetMenuBarMp" server.page.revision="107284" server.etag="&quot;neui-em_public/StyleSheetMenuBarMp/107284;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="4cfa78a00509def7bff45f02e58f4c0e43e43a0e">
  8090. <pre>/*{{{*/
  8091. #menuBar {
  8092. position: relative;
  8093. background-color: [[ColorPalette::PrimaryMid]];
  8094. min-height: 1em;
  8095. overflow: hidden;
  8096. font-size: 1.1em;
  8097. /* if you have a light bar border would be fine */
  8098. /*
  8099. border-top: 1px solid [[ColorPalette::PrimaryDark]];
  8100. border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
  8101. */
  8102. width: 100%; /* for ie 6 */
  8103. }
  8104. /* horizontal main menu stuff */
  8105. .topMenu, .topMenu a{
  8106. padding-top: 0.2em;
  8107. padding-bottom: 0.2em;
  8108. }
  8109. .topMenu ul,
  8110. .topMenu ol {
  8111. list-style:none;
  8112. padding:0;
  8113. margin: 0;
  8114. }
  8115. .topMenu li {
  8116. float: left;
  8117. }
  8118. #mainMenu {
  8119. width:auto; /*-- new in emastic --*/
  8120. position:relative; /*-- new in emastic --*/
  8121. text-align:right;
  8122. font-size:1.1em;
  8123. padding: 0.5em 0.5em 0; /* same as box */
  8124. }
  8125. #mainMenu a {
  8126. padding: 0.2em 0.2em;
  8127. }
  8128. #mainMenu a:hover {
  8129. background-color: [[ColorPalette::PrimaryMid]];
  8130. color: [[ColorPalette::Background]]
  8131. }
  8132. #sidebarOptions {
  8133. color: [[ColorPalette::PrimaryDark]];
  8134. }
  8135. #sidebarOptions {
  8136. min-height: 1em;
  8137. }
  8138. #sidebarOptions .button, #sidebarOptions .tiddlyLink, #sidebarOptions a,
  8139. .topMenu .button, .topMenu .tiddlyLink, .topMenu a {
  8140. margin-left: 0.5em;
  8141. margin-right: 0.5em;
  8142. padding-left: 3px;
  8143. padding-right: 3px;
  8144. color: [[ColorPalette::PrimaryPale]];
  8145. border: none;
  8146. display: inline;
  8147. }
  8148. #sidebarOptions .button:hover, #sidebarOptions .tiddlyLink:hover,
  8149. .topMenu .button:hover, .topMenu .tiddlyLink:hover {
  8150. color: [[ColorPalette::PrimaryDark]];
  8151. background: [[ColorPalette::PrimaryPale]];
  8152. }
  8153. /*}}}*/</pre>
  8154. </div>
  8155. <div title="StyleSheetSideBarMp" creator="pmario" modifier="pmario" created="201008111134" modified="201008210933" tags="excludeLists" server.title="StyleSheetSideBarMp" server.page.revision="107292" server.etag="&quot;neui-em_public/StyleSheetSideBarMp/107292;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="eccd82935e5e57294086d55ce5ff8b75a7a9ac6f">
  8156. <pre>/*{{{*/
  8157. #sidebar .wizard table {
  8158. margin: 0px;
  8159. }
  8160. #sidebarSearch {
  8161. margin: 0.2em 1em 0;
  8162. position: relative;
  8163. }
  8164. #sidebarSearch .txtOptionInput {
  8165. width: 100%;
  8166. margin-top: 5px;
  8167. }
  8168. #sidebarSearch .searchButton {
  8169. padding: 0.2em;
  8170. color: [[ColorPalette::Background]];
  8171. }
  8172. /* the borders look wrong with the body background */
  8173. #sidebar .button {
  8174. border-style: none;
  8175. }
  8176. /*-- new vor FreeStyle --*/
  8177. .tabContents {
  8178. overflow: auto;
  8179. }
  8180. #sidebarTabs {
  8181. }
  8182. #sidebarTabs .tabContents{
  8183. width: auto;
  8184. }
  8185. #sidebarTabs .sliderpanel a{
  8186. display: inline;
  8187. }
  8188. #sidebarTabs a.button,
  8189. #sidebarTools a.button {
  8190. margin:0 0.2em;
  8191. padding:0.2em 0.3em;
  8192. display:block;
  8193. }
  8194. .sidebarBox { /*-- new for FreeStyle --*/
  8195. padding-top: 0.3em;
  8196. }
  8197. /***
  8198. This fixes a problem with the tabs slider
  8199. ***/
  8200. #sidebarTabs .button {
  8201. margin:0em 0.2em;
  8202. padding:0.2em 0.3em;
  8203. display:block;
  8204. }
  8205. #sidebarTools .sliderpanel,
  8206. #sidebarOptions .sliderpanel {
  8207. margin: 0 0.5em;
  8208. }
  8209. /* remove fixed size from inputs eg: search and password in sidebar */
  8210. .txtOptionInput, .pasOptionInput {
  8211. width: 90%;
  8212. }
  8213. /* adjust spacing for the above */
  8214. #sidebarOptions .input {
  8215. margin: 0.4em 5%;
  8216. }
  8217. /*}}}*/</pre>
  8218. </div>
  8219. <div title="StyleSheetTiddler" creator="osmosoft" modifier="osmosoft" created="201102181425" modified="201102181425" tags="excludeLists excludeSearch" server.title="StyleSheetTiddler" server.page.revision="257509" server.etag="&quot;system-theme_public/StyleSheetTiddler/257509;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-theme_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-theme_public" server.permissions="read" server.content-type="" _hash="1a28a9b1acf2996cdfbb522f52f0e56353d9f883">
  8220. <pre>/*{{{*/
  8221. .tiddler .originButton div {
  8222. display: inline-block;
  8223. }
  8224. .tiddler .spaceSiteIcon .siteIcon {
  8225. _display: inline; /* IE doesn't like inline-block */
  8226. }
  8227. .tiddler .originButton {
  8228. display: block;
  8229. }
  8230. .selected .tagging,
  8231. .selected .tagging:hover {
  8232. border: none;
  8233. background: none;
  8234. }
  8235. .tagging {
  8236. float: none;
  8237. background: none;
  8238. border: none;
  8239. }
  8240. .tagging li.listTitle {
  8241. margin-left: 0px;
  8242. }
  8243. .tagging li {
  8244. margin: 0 8px;
  8245. }
  8246. .tagging .tiddlyLink {
  8247. -webkit-border-radius: 3px;
  8248. -moz-border-radius: 3px;
  8249. -o-border-radius: 3px;
  8250. border-radius: 3px;
  8251. padding: 1px 2px;
  8252. line-height: 1.2em;
  8253. }
  8254. /* for following */
  8255. #popup .siteIcon {
  8256. float: left;
  8257. height: 25px;
  8258. }
  8259. .content {
  8260. width: 100%; /* IE */
  8261. font-size: 0.9em;
  8262. }
  8263. .editorHeading {
  8264. height: 48px;
  8265. }
  8266. .heading {
  8267. left: 0;
  8268. margin-bottom: 40px;
  8269. position: relative;
  8270. top: 32px;
  8271. }
  8272. .followButton a {
  8273. display: block;
  8274. margin-top: -20px;
  8275. }
  8276. .tiddler .followPlaceHolder {
  8277. display: block;
  8278. position: absolute;
  8279. top: 16px;
  8280. right: 64px;
  8281. _right: 138px; // add width of modifierIcon
  8282. }
  8283. .tiddler .followButton {
  8284. position: relative;
  8285. height: 24px;
  8286. text-align: left;
  8287. color: #fff;
  8288. background: [[ColorPalette::PrimaryMid]];
  8289. padding: 10px 0px 0px 10px;
  8290. width: 38px;
  8291. margin: -16px -8px 24px 0;
  8292. }
  8293. /* creates the larger triangle */
  8294. .followButton:before {
  8295. content: &quot;\00a0&quot;;
  8296. display: block; /* reduce the damage in FF3.0 */
  8297. position: relative;
  8298. bottom: -20px;
  8299. right: 0;
  8300. width: 0;
  8301. height: 0;
  8302. border-width: 0 0 20px 20px;
  8303. border-style: solid;
  8304. border-color: transparent [[ColorPalette::PrimaryMid]];
  8305. }
  8306. .toolbar svg {
  8307. height: 16px;
  8308. width: 16px;
  8309. }
  8310. .toolbar svg .glyph {
  8311. fill: #ccc;
  8312. }
  8313. .toolbar a:hover .glyph {
  8314. fill: black;
  8315. }
  8316. .toolbar a:active .glyph {
  8317. fill: [[ColorPalette::Background]];
  8318. }
  8319. .originButton,
  8320. .followPlaceHolder,
  8321. .tiddler .subtitle {
  8322. cursor: pointer;
  8323. }
  8324. .editSpaceSiteIcon .originButton {
  8325. cursor: auto;
  8326. }
  8327. .tiddler .subtitle:hover {
  8328. font-weight: bold;
  8329. background: none;
  8330. }
  8331. .originButton img,
  8332. .originButton svg {
  8333. margin-left: 0px;
  8334. }
  8335. .modifierIcon {
  8336. position: absolute;
  8337. width: 74px;
  8338. top: 0px;
  8339. right: 0px;
  8340. _right: 74px; /* in IE6 positioning works incorrectly so use -width instead */
  8341. text-align: right;
  8342. }
  8343. .modifierIcon img,
  8344. .modifierIcon svg {
  8345. margin-right: 8px;
  8346. }
  8347. .tiddler .viewer {
  8348. padding-bottom: 16px;
  8349. margin: 0 0 0 56px;
  8350. line-height: 1.4em;
  8351. }
  8352. .viewer pre {
  8353. margin-left: 0;
  8354. }
  8355. .siteIcon .label {
  8356. color: [[ColorPalette::TertiaryDark]];
  8357. }
  8358. .tiddler .spaceSiteIcon {
  8359. float: left;
  8360. margin-right: 0;
  8361. margin-top: 0;
  8362. position: relative;
  8363. display: block;
  8364. }
  8365. .tiddler .titleBar {
  8366. display: block;
  8367. margin-right: 136px;
  8368. margin-left: 56px;
  8369. }
  8370. .followButton a {
  8371. color: [[ColorPalette::Background]];
  8372. }
  8373. .tiddler {
  8374. position: relative;
  8375. padding: 0;
  8376. margin-bottom: 3em;
  8377. border-top: 3px solid [[ColorPalette::PrimaryMid]];
  8378. background: #fff;
  8379. }
  8380. .tiddler .editor {
  8381. padding: 0px 8px;
  8382. }
  8383. .tiddler .heading .title {
  8384. position: relative;
  8385. display: block;
  8386. word-wrap: break-word;
  8387. font-size: 32px;
  8388. line-height: 32px;
  8389. }
  8390. .tiddler .heading .editor.title {
  8391. font-size: 1.7em;
  8392. line-height: normal;
  8393. }
  8394. .tiddler .headingClear {
  8395. clear: both;
  8396. }
  8397. .tiddler .subtitle {
  8398. font-style: italic;
  8399. font-size: 0.9em;
  8400. color: #a6a59e;
  8401. margin-top: 0;
  8402. }
  8403. .toolbar {
  8404. position: absolute;
  8405. padding: 0;
  8406. top: 8px;
  8407. right: -8px;
  8408. }
  8409. .toolbar .moreCommand.highlight {
  8410. background: none;
  8411. }
  8412. .tiddler .toolbar .button {
  8413. border: none;
  8414. display: inline;
  8415. padding: 0px;
  8416. margin-right: 16px;
  8417. }
  8418. .tiddler .toolbar a:hover {
  8419. background: none;
  8420. }
  8421. .tiddler .tagged .listTitle {
  8422. display: none;
  8423. }
  8424. .revButton {
  8425. float: right;
  8426. }
  8427. /*! EditTemplate specific*/
  8428. .tiddler .privacySettings {
  8429. text-align: center;
  8430. }
  8431. .tiddler .privacySettings .originButton {
  8432. display: inline;
  8433. }
  8434. .editSpaceSiteIcon, .privacyEdit {
  8435. float: left;
  8436. }
  8437. .editSpaceSiteIcon svg,
  8438. .editSpaceSiteIcon img,
  8439. .editSpaceSiteIcon .roundelLabel {
  8440. float: left;
  8441. }
  8442. .tagTitle {
  8443. position: absolute;
  8444. text-align: center;
  8445. width: 48px;
  8446. top: 0px;
  8447. left: -56px;
  8448. }
  8449. .editSpaceSiteIcon .originButton img,
  8450. .editSpaceSiteIcon .originButton svg {
  8451. height: 16px;
  8452. margin-left: 24px;
  8453. margin-right: 32px;
  8454. width: 16px;
  8455. }
  8456. .tagAnnotation {
  8457. margin-top: 8px;
  8458. padding-bottom: 8px;
  8459. }
  8460. .annotationsBox {
  8461. margin-top: 8px;
  8462. }
  8463. .editorFooter {
  8464. position: relative;
  8465. padding: 0;
  8466. margin-top: 16px;
  8467. margin-left: 64px;
  8468. }
  8469. .tiddler .editorFooter .editor {
  8470. padding-left: 0px;
  8471. }
  8472. .heading .editor input {
  8473. width: 100%;
  8474. font-size: 1.5em;
  8475. }
  8476. .spaceSiteIcon .externalImage .image a:hover,
  8477. .modifierIcon .externalImage .image a:hover {
  8478. background: none;
  8479. }
  8480. div.toolbar {
  8481. visibility:hidden;
  8482. right:-16px;
  8483. }
  8484. .selected div.toolbar {
  8485. visibility: visible;
  8486. }
  8487. .followButton a:hover {
  8488. background: [[ColorPalette::PrimaryMid]];
  8489. text-decoration: underline;
  8490. }
  8491. a.image:hover {
  8492. background: transparent;
  8493. }
  8494. @media all and (max-device-width: 480px) {
  8495. div.toolbar {
  8496. visibility:visible;
  8497. }
  8498. }
  8499. @media only screen and (device-width: 768px) {
  8500. div.toolbar {
  8501. visibility:visible;
  8502. }
  8503. }
  8504. @media all and (max-width: 960px) {
  8505. .tiddler .titleBar {
  8506. margin-left: 36px;
  8507. margin-right: 80px;
  8508. }
  8509. .tiddler .heading {
  8510. margin-bottom: 48px;
  8511. }
  8512. .tiddler .heading .title {
  8513. font-size: 32px;
  8514. line-height: 32px;
  8515. }
  8516. .tiddler .modifierIcon img,
  8517. .tiddler .modifierIcon svg,
  8518. .tiddler .spaceSiteIcon .originButton img,
  8519. .originButton svg {
  8520. width: 32px;
  8521. height: 32px;
  8522. margin-left: 0px;
  8523. margin-right: 0px;
  8524. }
  8525. .tiddler .followPlaceHolder {
  8526. right: 48px;
  8527. }
  8528. .tiddler .followButton {
  8529. width: 24px;
  8530. }
  8531. .tiddler .viewer {
  8532. margin: 0px 0px 0px 36px;
  8533. padding-top: 0;
  8534. }
  8535. br {
  8536. line-height: 0.5em;
  8537. }
  8538. }
  8539. /*}}}*/</pre>
  8540. </div>
  8541. <div title="StyleSheetTiddlerMp" creator="pmario" modifier="pmario" created="201102210005" modified="201102210005" tags="excludeLists" server.title="StyleSheetTiddlerMp" server.page.revision="260058" server.etag="&quot;fancybox_public/StyleSheetTiddlerMp/260058;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="1d757e3835b4119e24f6ed7b817a586ef2510109">
  8542. <pre>/*{{{*/
  8543. /* fix grayout from original tw. */
  8544. .selected .tagging,
  8545. .selected .tagged,
  8546. .selected .tagging:hover,
  8547. .selected .tagged:hover {
  8548. background: none;
  8549. border: none;
  8550. }
  8551. .tagging, .tagged {
  8552. background: none;
  8553. border: none;
  8554. padding: 0.5em 0 0 0.5em;
  8555. }
  8556. .tagging {
  8557. float: none;
  8558. }
  8559. /** nächste zeile wirkt nicht ??? */
  8560. .tagging ul {
  8561. margin: 0.25em 0 0 0.3em;
  8562. }
  8563. .tagging li {
  8564. display: inline;
  8565. float: left;
  8566. }
  8567. .tagging .tiddlyLink {
  8568. -webkit-border-radius: 5px 5px 5px 5px;
  8569. -moz-border-radius: 5px 5px 5px 5px;
  8570. background-color: white;
  8571. display: block;
  8572. margin: 0 0.2em 0.2em;
  8573. padding: 0.8em;
  8574. }
  8575. /* nui */
  8576. .tagged {
  8577. float: none;
  8578. margin-top: 1em;
  8579. }
  8580. .tagged .quickopentag {
  8581. -webkit-border-radius: 0px 15px 15px 0px;
  8582. -moz-border-radius: 0px 15px 15px 0px;
  8583. background-color: white;
  8584. border: 2px 2px 2px 0 solid #ccc;
  8585. display: block;
  8586. margin: 0 0.2em 0.2em -1.1em;
  8587. padding: 0 0.4em;
  8588. font-size: 0.9em;
  8589. }
  8590. .tagged a.button,
  8591. .tagged a.tiddlyLink {
  8592. border: none;
  8593. display: inline;
  8594. font-size: 0.9em;
  8595. word-wrap: break-word;
  8596. }
  8597. .tagged a:hover {
  8598. font-weight: bold;
  8599. background: white;
  8600. color: [[ColorPalette::PrimaryDark]];
  8601. }
  8602. /* for following nui */
  8603. #popup .siteIcon {
  8604. height: 25px;
  8605. }
  8606. #popup {
  8607. background-color: [[ColorPalette::TertiaryPale]];
  8608. }
  8609. .confirmationPopup, .followList {
  8610. font-size: 0.7em;
  8611. padding: 1em;
  8612. border: solid 1px #000;
  8613. }
  8614. .followList .listTitle {
  8615. text-decoration: underline;
  8616. }
  8617. #popup .followTiddlersList a {
  8618. display: inline;
  8619. padding: 0;
  8620. }
  8621. #popup li.listTitle {
  8622. border-bottom: 1px solid #000;
  8623. font-weight: bold;
  8624. margin-bottom: 10px;
  8625. }
  8626. #popup.followList {
  8627. margin-left: 50px;
  8628. margin-top: -30px;
  8629. }
  8630. .followTiddlersList .label {
  8631. display: block;
  8632. left: 10px;
  8633. top: 0px;
  8634. line-height: 16px;
  8635. position: relative;
  8636. }
  8637. #popup .followTiddlersList .siteIcon{
  8638. height: auto;
  8639. }
  8640. #popup .followTiddlersList li{
  8641. clear: both;
  8642. display: block;
  8643. height: 48px;
  8644. margin-bottom: 8px;
  8645. position: relative;
  8646. }
  8647. #popup .followTiddlersList a{
  8648. display: inline;
  8649. }
  8650. .heading {
  8651. left: 0;
  8652. margin-bottom: 3em;
  8653. position: relative;
  8654. top: 3em;
  8655. position: relative;
  8656. }
  8657. .followButton a:hover {
  8658. background: none;
  8659. color: black;
  8660. }
  8661. .followPlaceHolder {
  8662. position: absolute;
  8663. left: 0.5em;
  8664. top: 0.5em;
  8665. }
  8666. .followButton {
  8667. cursor: pointer;
  8668. -webkit-border-radius: 0.3em;
  8669. -moz-border-radius: 0.3em;
  8670. background: none repeat scroll 0 0 #CCCCCC;
  8671. color: red;
  8672. min-width: 2em;
  8673. height: 1em;
  8674. text-align: center;
  8675. padding: 0.4em;
  8676. float: left;
  8677. }
  8678. .replyLink {
  8679. margin-left: 1em;
  8680. font-size: 80%;
  8681. opacity: 0.3;
  8682. }
  8683. .selected .replyLink {
  8684. opacity: 1;
  8685. }
  8686. .calendar {
  8687. margin-top: 1em;
  8688. cursor: pointer;
  8689. /* if calendar is to wide, enable next line */
  8690. /* margin: 1em 1.5em; */
  8691. }
  8692. .calendar:hover {
  8693. opacity: 0.8;
  8694. }
  8695. .calendar .month {
  8696. color: [[ColorPalette::PrimaryPale]];
  8697. font-size: 1.2em;
  8698. border-left: solid 1px black;
  8699. border-right: solid 1px black;
  8700. border-top: solid 1px black;
  8701. text-align: center;
  8702. padding: 2px;
  8703. }
  8704. .calendar .date {
  8705. color: [[ColorPalette::PrimaryDark]];
  8706. font-size: 1.2em;
  8707. font-weight: bold;
  8708. text-align: center;
  8709. border: solid 1px black;
  8710. }
  8711. .calendar .time {
  8712. font-size: 0.7em;
  8713. border-left: solid 1px black;
  8714. border-right: solid 1px black;
  8715. border-bottom: solid 1px black;
  8716. text-align: center;
  8717. }
  8718. .toolbar svg {
  8719. height: 20pt;
  8720. width: 20pt;
  8721. }
  8722. .toolbar svg .glyph{
  8723. fill: #ccc;
  8724. }
  8725. .toolbar a:hover .glyph{
  8726. fill: #111;
  8727. }
  8728. .toolbar .command_savePublicTiddler .glyph {
  8729. fill: #C0E5FC;
  8730. }
  8731. .originButton,
  8732. .modifierIcon .label {
  8733. color: [[ColorPalette::TertiaryDark]];
  8734. font-size: 0.8em;
  8735. text-align: center;
  8736. display: block;
  8737. }
  8738. .modifierIcon {
  8739. background: [[ColorPalette::PrimaryLight]];
  8740. margin-right: 1em;
  8741. }
  8742. .tiddler {
  8743. overflow: hidden; /* clear floats */
  8744. }
  8745. .tiddler .viewer {
  8746. margin: 0;
  8747. line-height: normal;
  8748. padding-top: 0;
  8749. }
  8750. .tiddler .title {
  8751. font-size: 1.7em;
  8752. display: block;
  8753. margin-bottom: 0.4em;
  8754. border-bottom: 0.05em solid [[ColorPalette: :PrimaryDark]];
  8755. padding-top: 0;
  8756. word-wrap: break-word;
  8757. }
  8758. .spaceIcon img {
  8759. height: 30px;
  8760. }
  8761. .siteIcon .label {
  8762. color: [[ColorPalette: :TertiaryDark]];
  8763. }
  8764. .siteIcon {
  8765. text-align: center;
  8766. }
  8767. .tiddler .spaceSiteIcon {
  8768. margin: 0;
  8769. cursor: pointer;
  8770. }
  8771. .followButton a {
  8772. color: red;
  8773. }
  8774. .tiddler {
  8775. position: relative;
  8776. /* -moz-box-shadow: 2px 2px 8px black; */
  8777. /* -webkit-box-shadow: 2px 2px 8px black; */
  8778. /* filter: progid: DXImageTransform.Microsoft.Shadow(color='#000000', Direction=135, Strength=3); */
  8779. /* box-shadow: 2px 2px 8px black; */
  8780. border: 1px solid gray;
  8781. background: [[ColorPalette::PrimaryLight]];
  8782. margin-bottom: 2em;
  8783. padding: 0;
  8784. }
  8785. .tiddler .subtitle {
  8786. font-size: 0.8em;
  8787. margin-top: 0.2em;
  8788. }
  8789. .external .spaceSiteIcon a:hover {
  8790. background-color: #8BD69E;
  8791. }
  8792. .privateNotPublic .spaceSiteIcon a:hover,
  8793. .private .spaceSiteIcon a:hover {
  8794. background-color: #DE85B3;
  8795. }
  8796. .privateAndPublic .spaceSiteIcon a:hover,
  8797. .public .spaceSiteIcon a:hover {
  8798. background-color: #BBE7FD;
  8799. }
  8800. .tiddler .toolbar .button {
  8801. border: none;
  8802. display: inline-block;
  8803. }
  8804. /*-- reset the button effect --*/
  8805. .tiddler .toolbar a:hover {
  8806. background: none;
  8807. border: none;
  8808. }
  8809. /**
  8810. .tiddler .button.command_closeTiddler {
  8811. float: right;
  8812. }
  8813. **/
  8814. .tiddler .tagged .listTitle {
  8815. display: none;
  8816. }
  8817. .revButton {
  8818. float: right;
  8819. }
  8820. /*}}}*/</pre>
  8821. </div>
  8822. <div title="StyleSheetTiddlerMp_" creator="pmario" modifier="pmario" created="201009061256" modified="201009082159" tags="excludeLists" server.title="StyleSheetTiddlerMp_" server.page.revision="107508" server.etag="&quot;neui-tagsearch_public/StyleSheetTiddlerMp_/107508;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-tagsearch_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-tagsearch_public" server.permissions="read, write, create, delete" server.content-type="" _hash="1c5bd5472423f27927f2944909f9d8a92f05c9cc">
  8823. <pre>/*{{{*/
  8824. /* new nui */
  8825. .concertina {
  8826. overflow: hidden;
  8827. display: none;
  8828. height: 0;
  8829. background-color: white;
  8830. }
  8831. .concertina br {
  8832. display: none;
  8833. }
  8834. .concertinaOn .concertina {
  8835. display: auto;
  8836. height: auto;
  8837. border-bottom: 1px solid [[ColorPalette: :PrimaryDark]];
  8838. overflow: auto;
  8839. }
  8840. .concertina .publishButton {
  8841. border-radius: 1em;
  8842. -webkit-border-radius: 15px;
  8843. -moz-border-radius: 15px;
  8844. background-color: white;
  8845. border: 1px solid black;
  8846. display: block;
  8847. padding: 0.3em;
  8848. text-align: center;
  8849. width: 12em;
  8850. }
  8851. .privateNotPublic .concertina,
  8852. .private .concertina {
  8853. background: -webkit-gradient(linear,left bottom,left top,color-stop(0.05,#DE85B3),color-stop(0.5,#eee),color-stop(1, #fff));
  8854. background: -moz-linear-gradient(top center , #fff 5%, #eee 20%, #DE85B3 100%);
  8855. /* For Internet Explorer 5.5 - 7 */
  8856. filter: &quot;progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffDE85B3)&quot;;
  8857. /* For Internet Explorer 8 */
  8858. -ms-filter: &quot;progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffDE85B3)&quot;;
  8859. }
  8860. .public .concertina,
  8861. .privateAndPublic .concertina {
  8862. background: -webkit-gradient(linear,left bottom,left top,color-stop(0.05, #BBE7FD),color-stop(0.5,#eee),color-stop(1, #fff));
  8863. background: -moz-linear-gradient(top center , #fff 5%, #eee 20%, #BBE7FD 100%);
  8864. /* For Internet Explorer 5.5 - 7 */
  8865. filter: &quot;progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffBBE7FD)&quot;;
  8866. /* For Internet Explorer 8 */
  8867. -ms-filter: &quot;progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffBBE7FD)&quot;;
  8868. }
  8869. .external .concertina {
  8870. background-color: white;
  8871. background: -webkit-gradient(linear,left bottom,left top,color-stop(0.05, #8BD69E),color-stop(0.5,#eee),color-stop(1, #fff));
  8872. background: -moz-linear-gradient(top center , #fff 5%, #eee 20%, #8BD69E 100%);
  8873. /* For Internet Explorer 5.5 - 7 */
  8874. filter: &quot;progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ff8BD69E)&quot;;
  8875. /* For Internet Explorer 8 */
  8876. -ms-filter: &quot;progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ff8BD69E)&quot;;
  8877. }
  8878. /* fix grayout from original tw. */
  8879. .selected .tagging,
  8880. .selected .tagged,
  8881. .selected .tagging:hover,
  8882. .selected .tagged:hover {
  8883. background: none;
  8884. border: none;
  8885. }
  8886. .tagging, .tagged {
  8887. background: none;
  8888. border: none;
  8889. padding: 0.5em 0 0 0.5em;
  8890. }
  8891. .tagging {
  8892. float: none;
  8893. }
  8894. /** nächste zeile wirkt nicht ??? */
  8895. .tagging ul {
  8896. margin: 0.25em 0 0 0.3em;
  8897. }
  8898. .tagging li {
  8899. display: inline;
  8900. float: left;
  8901. }
  8902. .tagging .tiddlyLink {
  8903. -webkit-border-radius: 5px 5px 5px 5px;
  8904. -moz-border-radius: 5px 5px 5px 5px;
  8905. background-color: white;
  8906. display: block;
  8907. margin: 0 0.2em 0.2em;
  8908. padding: 0.8em;
  8909. }
  8910. /* nui */
  8911. .tagged {
  8912. float: none;
  8913. margin-top: 1em;
  8914. }
  8915. .tagged .quickopentag {
  8916. -webkit-border-radius: 0px 15px 15px 0px;
  8917. -moz-border-radius: 0px 15px 15px 0px;
  8918. background-color: white;
  8919. border: 2px 2px 2px 0 solid #ccc;
  8920. display: block;
  8921. margin: 0 0.2em 0.2em -1.1em;
  8922. padding: 0 0.4em;
  8923. font-size: 0.9em;
  8924. }
  8925. #tagsearchDrop {
  8926. -webkit-border-radius: 0px 15px 15px 0px;
  8927. -moz-border-radius: 0px 15px 15px 0px;
  8928. background-color: white;
  8929. border: 2px 2px 2px 0 solid #ccc;
  8930. display: block;
  8931. margin: 0 0.2em 0.2em -0.9em;
  8932. padding: 0 0.4em;
  8933. font-size: 0.9em;
  8934. }
  8935. .tagged a.button,
  8936. .tagged a.tiddlyLink {
  8937. border: none;
  8938. display: inline;
  8939. font-size: 0.9em;
  8940. word-wrap: break-word;
  8941. }
  8942. .tagged a:hover {
  8943. font-weight: bold;
  8944. background: white;
  8945. color: [[ColorPalette::PrimaryDark]];
  8946. }
  8947. /* for following nui */
  8948. #popup .siteIcon {
  8949. height: 25px;
  8950. }
  8951. .content {
  8952. }
  8953. .content .left {
  8954. position: relative;
  8955. }
  8956. .heading {
  8957. left: 0;
  8958. margin-bottom: 3em;
  8959. position: relative;
  8960. top: 3em;
  8961. position: relative;
  8962. }
  8963. .followButton a:hover {
  8964. background: none;
  8965. color: black;
  8966. }
  8967. .followPlaceHolder {
  8968. position: absolute;
  8969. left: 0.5em;
  8970. top: 0.5em;
  8971. }
  8972. .followButton {
  8973. cursor: pointer;
  8974. -webkit-border-radius: 0.3em;
  8975. -moz-border-radius: 0.3em;
  8976. background: none repeat scroll 0 0 #CCCCCC;
  8977. color: red;
  8978. min-width: 2em;
  8979. height: 1em;
  8980. text-align: center;
  8981. padding: 0.4em;
  8982. }
  8983. .followButton:before {
  8984. content: &quot;\00a0&quot;;
  8985. display: block; /* reduce the damage in FF3.0 */
  8986. position: absolute;
  8987. bottom: -0.2em;
  8988. left: 0.1em;
  8989. width: 0;
  8990. height: 0;
  8991. border-width: 0.5em 0.2em 0 0.6em;
  8992. border-style: solid;
  8993. border-color: #ccc transparent;
  8994. }
  8995. .calendar {
  8996. margin-top: 1em;
  8997. cursor: pointer;
  8998. /* if calendar is to wide, enable next line */
  8999. /* margin: 1em 1.5em; */
  9000. }
  9001. .calendar:hover {
  9002. opacity: 0.8;
  9003. }
  9004. .calendar .month {
  9005. color: [[ColorPalette::PrimaryPale]];
  9006. font-size: 1.2em;
  9007. border-left: solid 1px black;
  9008. border-right: solid 1px black;
  9009. border-top: solid 1px black;
  9010. text-align: center;
  9011. padding: 2px;
  9012. }
  9013. .calendar .date {
  9014. color: [[ColorPalette::PrimaryDark]];
  9015. font-size: 1.2em;
  9016. font-weight: bold;
  9017. text-align: center;
  9018. border: solid 1px black;
  9019. }
  9020. .calendar .time {
  9021. font-size: 0.7em;
  9022. border-left: solid 1px black;
  9023. border-right: solid 1px black;
  9024. border-bottom: solid 1px black;
  9025. text-align: center;
  9026. }
  9027. .toolbar svg {
  9028. height: 25px;
  9029. width: 25px;
  9030. }
  9031. .toolbar svg .glyph{
  9032. fill: #ccc;
  9033. }
  9034. .toolbar a:hover .glyph{
  9035. fill: #111;
  9036. }
  9037. .toolbar .command_savePublicTiddler .glyph {
  9038. fill: #C0E5FC;
  9039. }
  9040. /* next 3 needed to use ViewTemplate also as RevisionsTemplate */
  9041. .invisible {
  9042. display: none;
  9043. }
  9044. .viewRevision .toolbar {
  9045. display: none;
  9046. }
  9047. .viewRevision .invisible {
  9048. display: block;
  9049. }
  9050. .originButton,
  9051. .modifierIcon .label {
  9052. color: [[ColorPalette::TertiaryDark]];
  9053. font-size: 0.8em;
  9054. text-align: center;
  9055. display: block;
  9056. }
  9057. .modifierIcon {
  9058. background: [[ColorPalette::PrimaryLight]];
  9059. margin-right: 1em;
  9060. }
  9061. .tiddler {
  9062. overflow: auto; /* clear floats */
  9063. }
  9064. .tiddler .viewer {
  9065. margin: 0;
  9066. line-height: normal;
  9067. padding-top: 0;
  9068. }
  9069. .tiddler .title {
  9070. font-size: 1.7em;
  9071. display: block;
  9072. margin-bottom: 0.4em;
  9073. border-bottom: 0.05em solid [[ColorPalette: :PrimaryDark]];
  9074. padding-top: 0;
  9075. word-wrap: break-word;
  9076. }
  9077. .spaceIcon img {
  9078. height: 30px;
  9079. }
  9080. .siteIcon .label {
  9081. color: [[ColorPalette: :TertiaryDark]];
  9082. }
  9083. .siteIcon {
  9084. text-align: center;
  9085. }
  9086. .siteIcon img {
  9087. height: 30px;
  9088. width: 30px;
  9089. }
  9090. .tiddler .spaceSiteIcon {
  9091. margin: 0;
  9092. cursor: pointer;
  9093. }
  9094. .followButton a {
  9095. color: red;
  9096. }
  9097. .tiddler {
  9098. position: relative;
  9099. -moz-box-shadow: 2px 2px 8px black;
  9100. -webkit-box-shadow: 2px 2px 8px black;
  9101. filter: progid: DXImageTransform.Microsoft.Shadow(color='#000000', Direction=135, Strength=3);
  9102. box-shadow: 2px 2px 8px black;
  9103. background-color: [[ColorPalette::PrimaryLight]];
  9104. margin-bottom: 2em;
  9105. padding: 0;
  9106. }
  9107. .tiddler .subtitle {
  9108. font-size: 0.8em;
  9109. margin-top: 0.2em;
  9110. }
  9111. .external .spaceSiteIcon a:hover {
  9112. background-color: #8BD69E;
  9113. }
  9114. .privateNotPublic .spaceSiteIcon a:hover,
  9115. .private .spaceSiteIcon a:hover {
  9116. background-color: #DE85B3;
  9117. }
  9118. .privateAndPublic .spaceSiteIcon a:hover,
  9119. .public .spaceSiteIcon a:hover {
  9120. background-color: #BBE7FD;
  9121. }
  9122. .tiddler .toolbar .button {
  9123. border: none;
  9124. display: inline-block;
  9125. }
  9126. /*-- reset the button effect --*/
  9127. .tiddler .toolbar a:hover {
  9128. background: none;
  9129. border: none;
  9130. }
  9131. /**
  9132. .tiddler .button.command_closeTiddler {
  9133. float: right;
  9134. }
  9135. **/
  9136. .tiddler .tagged .listTitle {
  9137. display: none;
  9138. }
  9139. .revButton {
  9140. float: right;
  9141. }
  9142. /*}}}*/</pre>
  9143. </div>
  9144. <div title="StyleSheetTiddlySpace" creator="osmosoft" modifier="osmosoft" created="201102181425" modified="201102181425" tags="excludeLists excludeSearch" server.title="StyleSheetTiddlySpace" server.page.revision="257510" server.etag="&quot;system-theme_public/StyleSheetTiddlySpace/257510;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/system-theme_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="system-theme_public" server.permissions="read" server.content-type="" _hash="3150bd9a2cb78777f61a7b6f6539c5fa646fd7ac">
  9145. <pre>/*{{{*/
  9146. body {
  9147. font-size: 1em;
  9148. font-family: helvetica, arial, sans-serif;
  9149. background-color: #fff;
  9150. color: [[ColorPalette::Foreground]];
  9151. }
  9152. body ul { margin: 0; }
  9153. #popup {
  9154. background-color: [[ColorPalette::TertiaryPale]];
  9155. }
  9156. #popup.confirmationPopup, .followList {
  9157. font-size: 0.8em;
  9158. padding: 1em;
  9159. border: solid 1px [[ColorPalette::SecondaryMid]];
  9160. background-color: [[ColorPalette::SecondaryPale]];
  9161. }
  9162. .followList .listTitle {
  9163. text-decoration: underline;
  9164. }
  9165. #popup .followTiddlersList a {
  9166. display: inline;
  9167. padding: 0;
  9168. }
  9169. #popup li a {
  9170. color: [[ColorPalette::PrimaryMid]];
  9171. font-weight: bold;
  9172. }
  9173. #popup li a:hover {
  9174. color: [[ColorPalette::PrimaryPale]];
  9175. background: [[ColorPalette::PrimaryMid]];
  9176. }
  9177. #popup li.listTitle {
  9178. border-bottom: 1px solid #000;
  9179. font-weight: bold;
  9180. margin-bottom: 10px;
  9181. }
  9182. #popup.followList {
  9183. margin-left: 50px;
  9184. margin-top: -30px;
  9185. }
  9186. .followTiddlersList .label {
  9187. display: block;
  9188. left: 10px;
  9189. top: 0px;
  9190. line-height: 16px;
  9191. position: relative;
  9192. }
  9193. #popup .followTiddlersList .siteIcon{
  9194. height: auto;
  9195. }
  9196. #popup .followTiddlersList li{
  9197. clear: both;
  9198. display: block;
  9199. height: 48px;
  9200. margin-bottom: 8px;
  9201. position: relative;
  9202. }
  9203. #popup .followTiddlersList a{
  9204. display: inline;
  9205. }
  9206. #displayArea {
  9207. margin: 0;
  9208. top: 0px;
  9209. left: 0px;
  9210. width: 100%;
  9211. position: relative;
  9212. }
  9213. .revisionCloak {
  9214. position: absolute;
  9215. position: fixed !important;
  9216. height: 100%;
  9217. width: 100%;
  9218. top: 0;
  9219. left: 0;
  9220. border: 0;
  9221. margin: 0;
  9222. padding: 0;
  9223. opacity: 0.5;
  9224. filter: alpha(opacity=50);
  9225. background-color: #000;
  9226. }
  9227. /* *** Header *** */
  9228. .header {
  9229. position: relative;
  9230. background-color: [[ColorPalette::PrimaryMid]];
  9231. _width: 100%; /* ie 6 demands */
  9232. }
  9233. .headerForeground {
  9234. background-color: [[ColorPalette::PrimaryMid]];
  9235. float: left;
  9236. margin: 24px 16px 0px 72px;
  9237. padding: 0;
  9238. position: relative;
  9239. top: 0;
  9240. _width: 70%; /*ie6: needed for the background to actually be transparent*/
  9241. _background-color: transparent; /*ie6: needed to show the search box*/
  9242. }
  9243. .clearFloat {
  9244. clear: both;
  9245. }
  9246. #contentWrapper {
  9247. position: relative;
  9248. padding-top: 1px;
  9249. top: -1px;
  9250. }
  9251. #tiddlerDisplay {
  9252. _position: relative; /* ie 6*/
  9253. }
  9254. .siteTitle {
  9255. clear: both;
  9256. display: block;
  9257. font-size: 32px;
  9258. font-weight: bold;
  9259. line-height: 32px;
  9260. }
  9261. .siteSubtitle {
  9262. display: block;
  9263. font-size: 14px;
  9264. height: 16px;
  9265. margin-bottom: 8px;
  9266. }
  9267. #sidebarSearch {
  9268. padding: 0;
  9269. position: absolute;
  9270. right: 80px;
  9271. top: 8px;
  9272. width: 176px;
  9273. }
  9274. #sidebarSearch .txtOptionInput {
  9275. width: 100%;
  9276. margin-top: 5px;
  9277. _color: #bbb; /* ie6 danger */
  9278. }
  9279. #sidebarSearch .txtOptionInput:focus {
  9280. color: #000;
  9281. }
  9282. #sidebarSearch .searchButton {
  9283. display: none;
  9284. }
  9285. /* *** Menu Bar *** */
  9286. #mainMenu {
  9287. position: static;
  9288. text-align: left;
  9289. margin-left: 72px;
  9290. float: left;
  9291. width: auto;
  9292. padding: 0;
  9293. font-size: 1em;
  9294. line-height: normal;
  9295. }
  9296. #mainMenu a {
  9297. color: #fff;
  9298. padding: 8px;
  9299. font-size: 0.9em;
  9300. margin-right: 16px;
  9301. }
  9302. #mainMenu a:hover {
  9303. background-color: [[ColorPalette::PrimaryMid]];
  9304. color: [[ColorPalette::Background]]
  9305. }
  9306. #sidebarOptions {
  9307. margin-right: 72px;
  9308. float: right;
  9309. font-size: 1.1em;
  9310. line-height: 1.6em;
  9311. min-height: 1em;
  9312. padding-top: 0;
  9313. }
  9314. #sidebarOptions a {
  9315. margin-right: 8px;
  9316. }
  9317. .confirmationPopup .button,
  9318. #sidebarOptions .button {
  9319. cursor: pointer;
  9320. line-height: 1.4em;
  9321. text-align: center;
  9322. margin-right: 8px;
  9323. margin-left:-2px;
  9324. }
  9325. .confirmationPopup .button {
  9326. font-size: 0.9em;
  9327. padding: 2px;
  9328. }
  9329. #sidebarOptions .button {
  9330. font-size: 0.7em;
  9331. float: left;
  9332. width: 80px;
  9333. padding: 0px;
  9334. color: #fff;
  9335. }
  9336. .confirmationPopup a.button,
  9337. #sidebarOptions a {
  9338. border: none;
  9339. margin: 0 0.2em;
  9340. padding: 0.6em 0.25em;
  9341. display: inline;
  9342. color: #666;
  9343. }
  9344. .confirmationPopup a.button:hover,
  9345. #sidebarOptions a:hover {
  9346. color: #000;
  9347. }
  9348. .confirmationPopup a.button:active,
  9349. #sidebarOptions a:active {
  9350. border: solid 1px [[ColorPalette::PrimaryMid]];
  9351. background-color: #fff;
  9352. background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
  9353. background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
  9354. }
  9355. /* *** Sidebar *** */
  9356. #sidebar .wizard table {
  9357. margin: 0px;
  9358. }
  9359. .tabContents .listTitle:first-child {
  9360. margin-top: 0px;
  9361. }
  9362. #menuBar {
  9363. background: [[ColorPalette::PrimaryLight]];
  9364. left: 0;
  9365. right: 0;
  9366. position: relative;
  9367. margin: 0;
  9368. padding: 0.5em 0 0.5em 0;
  9369. min-height: 1em;
  9370. overflow: hidden;
  9371. _width: 100%; /* for ie 6 */
  9372. }
  9373. #sidebarOptions a.button:hover {
  9374. color: [[ColorPalette::PrimaryPale]];
  9375. background: [[ColorPalette::PrimaryMid]];
  9376. }
  9377. #tiddlerDisplay, #searchResults {
  9378. margin: 16px 448px 0 72px;
  9379. }
  9380. #sidebarTabs {
  9381. position: absolute;
  9382. right: 72px;
  9383. width: 352px;
  9384. top: 0;
  9385. }
  9386. #sidebarTabs .tabsetWrapper .tabset {
  9387. width: 87px;
  9388. border-top: 1px solid [[ColorPalette::PrimaryPale]];
  9389. border-left: 1px solid [[ColorPalette::PrimaryPale]];
  9390. border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
  9391. height: auto;
  9392. float: left;
  9393. word-wrap: break-word;
  9394. top: 0;
  9395. padding: 0;
  9396. }
  9397. #sidebarTabs .tabsetWrapper .tabContents {
  9398. background-color: [[ColorPalette::PrimaryPale]];
  9399. border: 3px solid [[ColorPalette::PrimaryMid]];
  9400. width: 242px;
  9401. _width: 238px;
  9402. left: -3px;
  9403. _left: -5px;
  9404. position: relative;
  9405. min-height: 34em;
  9406. padding: 8px;
  9407. font-size: 0.8em;
  9408. }
  9409. /* ---- Side style --- */
  9410. #sidebarTabs .tabsetWrapper .tabset .tab {
  9411. font-size: 0.9em;
  9412. padding: 0.7em 8px 0.5em;
  9413. color: #fff;
  9414. background: [[ColorPalette::PrimaryLight]];
  9415. border: none;
  9416. line-height: 16px;
  9417. position: relative;
  9418. display: block;
  9419. margin: 0;
  9420. }
  9421. #sidebarTabs .tabsetWrapper .tabset .tabSelected {
  9422. color: [[ColorPalette::PrimaryMid]];
  9423. background: [[ColorPalette::PrimaryPale]];
  9424. border-top: 3px solid [[ColorPalette::PrimaryMid]];
  9425. border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
  9426. border-left: 3px solid [[ColorPalette::PrimaryMid]];
  9427. z-index: 10;
  9428. margin-top: -1px;
  9429. font-weight: bold;
  9430. }
  9431. #sidebarTabs .tabContents li {
  9432. border: none;
  9433. margin-left: 0;
  9434. word-wrap: break-word;
  9435. }
  9436. .tabContents .timeline {
  9437. background: [[ColorPalette::PrimaryPale]];
  9438. margin-bottom: 8px;
  9439. }
  9440. #sidebarTabs .timeline li.listTitle {
  9441. color: #132E43;
  9442. margin-left: 8px 0;
  9443. padding: 0.3em 0.11em;
  9444. font-size: 1em;
  9445. border-bottom: none;
  9446. }
  9447. #sidebarTabs .tabContents li a {
  9448. display: block;
  9449. text-align: left;
  9450. margin: 0 0 1px 0;
  9451. padding: 0.3em 1em;
  9452. background: [[ColorPalette::PrimaryPale]];
  9453. }
  9454. #sidebarTabs .tabsetWrapper .tabset a:hover,
  9455. #sidebarTabs .tabContents li a:hover {
  9456. color: [[ColorPalette::PrimaryPale]];
  9457. background: [[ColorPalette::PrimaryMid]];
  9458. }
  9459. /* Activity Stream */
  9460. #sidebarTabs .tabContents .activityStream .feedItem a {
  9461. display: inline-block;
  9462. padding: 0;
  9463. background: none;
  9464. }
  9465. /* ---- Tagging box --- */
  9466. .tagInfo {
  9467. border: 1px solid #cccccc;
  9468. padding: 10px 15px;
  9469. -moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
  9470. box-shadow: 0 2px 2px rgba(0,0,0,0.2);
  9471. color: [[ColorPalette::TertiaryMid]];
  9472. background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
  9473. background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
  9474. margin-top: 1em;
  9475. font-size: 13px;
  9476. margin: 0 0 0 56px;
  9477. }
  9478. .tagInfo ul {
  9479. list-style: none;
  9480. padding-left: 2.2em;
  9481. }
  9482. .tagInfo ul li {
  9483. display: inline;
  9484. }
  9485. .tagInfo ul li.listTitle,
  9486. .tagInfo .tagging ul li.listTitle {
  9487. color: [[ColorPalette::PrimaryMid]];
  9488. font-size: 13px;
  9489. }
  9490. .tagInfo ul li a {
  9491. border: none;
  9492. }
  9493. .tagInfo .tagging ul li {
  9494. float: none;
  9495. display: inline-block;
  9496. }
  9497. .tagInfo .tagging {
  9498. padding: 0;
  9499. }
  9500. .viewRevision .toolbar {
  9501. right: 48px;
  9502. top: 8px;
  9503. }
  9504. .viewRevision .modifierIcon img,
  9505. .viewRevision .modifierIcon svg {
  9506. margin-right: 8px;
  9507. }
  9508. .viewRevision .toolbar svg {
  9509. width: 32px;
  9510. height: 32px;
  9511. }
  9512. /* --- IE hacks from lattice --- */
  9513. /* ie hacks */
  9514. * html #menuBar {
  9515. margin-bottom: 8px;
  9516. }
  9517. .toolbar .svgIconText {
  9518. *display: inline;
  9519. }
  9520. div.tiddler .toolbar a {
  9521. cursor: pointer;
  9522. float: left\9;
  9523. display: inline\9;
  9524. }
  9525. * html .toolbar {
  9526. right: 8px;
  9527. }
  9528. * html .followButton a {
  9529. margin-top: 0px;
  9530. margin-right: 8px;
  9531. }
  9532. * html #tiddlerDisplay {
  9533. margin-top: 0px;
  9534. }
  9535. /* for printing purposes */
  9536. @media print {
  9537. #mainMenu,
  9538. #sidebar,
  9539. #messageArea,
  9540. .toolbar,
  9541. .followPlaceHolder,
  9542. #backstageButton,
  9543. #backstageArea,
  9544. #sidebarTabs,
  9545. #sidebarSearch .txtOptionInput,
  9546. #sidebarOptions {
  9547. display: none !important;
  9548. }
  9549. #displayArea {
  9550. margin: 1em 1em 0em;
  9551. }
  9552. noscript {
  9553. display:none; /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
  9554. }
  9555. #tiddlerDisplay {
  9556. margin: 16px 16px;
  9557. }
  9558. }
  9559. @media all and (max-width: 960px){
  9560. #tiddlerDisplay,
  9561. #searchResults {
  9562. margin: 16px 366px 0 16px;
  9563. }
  9564. #mainMenu {
  9565. margin-left: 16px;
  9566. }
  9567. .headerForeground {
  9568. margin-left: 16px;
  9569. }
  9570. #sidebarSearch {
  9571. right: 16px;
  9572. }
  9573. #sidebarOptions {
  9574. margin-right: 16px;
  9575. }
  9576. #sidebarTabs {
  9577. right: 16px;
  9578. width: 326px;
  9579. }
  9580. #sidebarTabs .tabsetWrapper .tabset {
  9581. font-size: 0.9em;
  9582. width: 77px;
  9583. }
  9584. #sidebarTabs .tabsetWrapper .tabContents {
  9585. width: 226px;
  9586. _width: 222px;
  9587. }
  9588. #sidebarTabs .tabContents li a {
  9589. font-size: 0.9em;
  9590. }
  9591. }
  9592. /*}}}*/
  9593. [[StyleSheetTiddler]]</pre>
  9594. </div>
  9595. <div title="StyleSheetTiddlySpaceMp" creator="pmario" modifier="pmario" created="201008061923" modified="201008171536" tags="excludeLists" server.title="StyleSheetTiddlySpaceMp" server.page.revision="107310" server.etag="&quot;neui-em_public/StyleSheetTiddlySpaceMp/107310;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="b01f13dfe3b05f0427ecaf4dc24cf1b54fc29b7b">
  9596. <pre>/*{{{*/
  9597. body {
  9598. font-size: 1.0em;
  9599. font-family: helvetica, arial, sans-serif;
  9600. background-color: [[ColorPalette::Background]];
  9601. }
  9602. #displayArea {
  9603. float: left; /*-- new for emastic --*/
  9604. padding: 0; /*-- new for emastic --*/
  9605. margin: 0; /*-- new for emastic --*/
  9606. }
  9607. #tiddlerDisplay {
  9608. /* margin: 1em 0.5em;*/
  9609. }
  9610. .public {
  9611. border-color: #C7EAFF;
  9612. }
  9613. .private {
  9614. border-color: #FFCAE9;
  9615. }
  9616. .revisionCloak {
  9617. position: absolute;
  9618. position: fixed !important;
  9619. height: 100%;
  9620. width: 100%;
  9621. top: 0;
  9622. left: 0;
  9623. border: 0;
  9624. margin: 0;
  9625. padding: 0;
  9626. opacity: 0.5;
  9627. filter: alpha(opacity=50);
  9628. background-color: black;
  9629. }
  9630. /* fixing h1-h6 margin-top if it is first child */
  9631. h1:first-child, h2:first-child, h3:first-child,
  9632. h4:first-child, h5:first-child, h6:first-child,
  9633. ol:first-child, ul:first-child {
  9634. margin-top: .3em;
  9635. }
  9636. [[StyleSheetHeaderMp]]
  9637. [[StyleSheetMenuBarMp]]
  9638. [[StyleSheetSideBarMp]]
  9639. [[StyleSheetTiddlerMp]]
  9640. [[StyleSheetBackstagePanels]]
  9641. /*}}}*/</pre>
  9642. </div>
  9643. <div title="StyleSheet_neui-em" creator="pmario" modifier="pmario" created="201008072118" modified="201009181705" tags="excludeLists" server.title="StyleSheet_neui-em" server.page.revision="107316" server.etag="&quot;neui-em_public/StyleSheet_neui-em/107316;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" revision.text="" _hash="c0616be55f19f0672dce90d9b1bf71cacbe0e131">
  9644. <pre>/*{{{*/
  9645. [[StyleSheetTiddlySpaceMp]]
  9646. [[StyleSheetMediaPrint]]
  9647. /*}}}*/</pre>
  9648. </div>
  9649. <div title="SvgEvent_Animations" creator="pmario" modifier="pmario" created="201007271654" modified="201009181606" tags="excludeLists fxPlugins systemConfig" server.title="SvgEvent_Animations" server.page.revision="53373" server.etag="&quot;fxplugins_public/SvgEvent_Animations/53373;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fxplugins_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fxplugins_public" server.permissions="read, write, create, delete" server.content-type="" _hash="2bf258e34766357a751fc0702010e03ca92abb46">
  9650. <pre>/***
  9651. |''Name''|SvgEvent_Animations|
  9652. |''Description''|contains the global TW jQuery custom events.|
  9653. |''Author''|Mario Pietsch|
  9654. |''Version''|0.2.2|
  9655. |''Status''|''stable''|
  9656. |''Source''|http://fxplugins.tiddlyspace.com|
  9657. |''CoreVersion''|2.6|
  9658. |''Documentation''|[[SvgEvent_Info]]|
  9659. |''Keywords''|svg, events, animation, commands|
  9660. !Important
  9661. !Known issues
  9662. !History
  9663. *V 0.2.2
  9664. **Status: stable
  9665. **[[SvgEvent_Info]] has more info now.
  9666. *V 0.2.1
  9667. **cTglBg searches from parent() now
  9668. *V 0.2.0
  9669. **SvgEventzPlugin is not needed anymore
  9670. **New event names
  9671. !Code
  9672. ***/
  9673. /*{{{*/
  9674. if(!version.extensions.SvgEvent_Animations) { //# ensure that the plugin is only installed once
  9675. version.extensions.SvgEvent_Animations= { installed: true };
  9676. (function($) {
  9677. // if you add components here a
  9678. var eventTypes = [&quot;cTglOpacity&quot;, &quot;cTglBg&quot;, &quot;cBigger&quot;, &quot;cResize&quot;, &quot;cSmaller&quot;, &quot;cmd99&quot;];
  9679. animations = {
  9680. // IMPORTANT: if you add commands here, don't forget to add them at &quot;var eventTypes&quot; too!
  9681. //trialUpdate
  9682. cTglOpacity: function(e, trial) {
  9683. if (! trial.comp.animations) return false;
  9684. var val = trial.elem.getAttribute('opacity');
  9685. val = (val == 0.8) ? 1:0.8;
  9686. trial.elem.setAttribute('opacity', val);
  9687. },
  9688. cTglBg: function(e, trial) {
  9689. if (! trial.comp.animations) return false;
  9690. var elem = jQuery(trial.elem).parent().find('.showOnHover');
  9691. var val = elem.attr('opacity');
  9692. var old = (elem.attr('oldopacity')) ? elem.attr('oldopacity') : val;
  9693. val = (val == old) ? 1:old;
  9694. elem.attr('opacity', val);
  9695. elem.attr('oldopacity', old);
  9696. },
  9697. //trialFullSize hover, mouse in
  9698. cBigger: function(e, trial) {
  9699. if (! trial.comp.animations) return false;
  9700. trial.elem.setAttribute('height','35pt');
  9701. trial.elem.setAttribute('width','35pt');
  9702. },
  9703. //mouse up = mouse out = resize
  9704. cResize: function(e, trial) {
  9705. if (! trial.comp.animations) return false;
  9706. trial.elem.setAttribute('height','29pt');
  9707. trial.elem.setAttribute('width','29pt');
  9708. },
  9709. //clicked mouse down
  9710. cSmaller: function(e, trial) {
  9711. if (! trial.comp.animations) return false;
  9712. trial.elem.setAttribute('height','27pt');
  9713. },
  9714. };
  9715. var components = [animations];
  9716. $.each(components, function(i,component) {
  9717. $.each(eventTypes, function(j,eventType) {
  9718. var handler = component[eventType];
  9719. if (handler) $(document).bind(eventType, handler);
  9720. });
  9721. });
  9722. })(jQuery);
  9723. } //# end of &quot;install only once&quot;
  9724. /*}}}*/</pre>
  9725. </div>
  9726. <div title="SvgEvent_Info" creator="pmario" modifier="pmario" created="201007271654" modified="201009181559" tags="fxPlugins" server.title="SvgEvent_Info" server.page.revision="53377" server.etag="&quot;fxplugins_public/SvgEvent_Info/53377;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fxplugins_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fxplugins_public" server.permissions="read, write, create, delete" server.content-type="" _hash="cdb450f67b105d84818e419f19a8a9e9819a5b8d">
  9727. <pre>/***
  9728. |''Name''|SvgEvent_Info|
  9729. |''Description''|connects .svg mouse events with global TW jQuery custom events.|
  9730. |''Author''|Mario Pietsch|
  9731. |''Version''|0.2.0|
  9732. |''Source''|http://fxplugins.tiddlyspace.com|
  9733. |''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
  9734. |''CoreVersion''|2.6|
  9735. |''Keywords''|svg, events, animation, commands|
  9736. !Idea
  9737. http://softwareas.com/automagic-event-registration
  9738. !The plugin structure
  9739. # [[SvgEvent_Animations]] .. animation componets
  9740. # [[SvgEvent_Menue]] .. menue / toolbar command components
  9741. !Needed inside an .svg tiddler
  9742. *eg: [[tfgNewTiddler.svg]]
  9743. *onclick(): {{{onclick=&quot;jQuery(document).trigger('cmd3', {elem:this, comp:{menue:1}})&quot;}}}
  9744. **Click the icon, will trigger cmd3 in SvgEvent_Menue
  9745. *onmousedown: {{{onmousedown=&quot;jQuery(document).trigger('cmd4', {elem:this, comp:{animations:1}})&quot;}}}
  9746. *onmouseup: {{{onmouseup=&quot;jQuery(document).trigger('cmd3', {elem:this, comp:{animations:1}})&quot;}}}
  9747. **onmousedown, onmouseup are activating the corresponding commands in SvgEvent_Animations
  9748. !Known issues
  9749. !Elements tagged {{{fxPlugins}}}
  9750. &lt;&lt;list filter [tag[fxPlugins]]&gt;&gt;
  9751. </pre>
  9752. </div>
  9753. <div title="SvgEvent_InitStyleSheet" creator="pmario" modifier="pmario" created="201012271651" modified="201012271758" tags="excludeLists fxPlugins systemConfig" server.title="SvgEvent_InitStyleSheet" server.page.revision="53381" server.etag="&quot;fxplugins_public/SvgEvent_InitStyleSheet/53381;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fxplugins_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fxplugins_public" server.permissions="read, write, create, delete" server.content-type="" _hash="2a87053c287ca3f942680adc57ecdac0908ac90f">
  9754. <pre>//{{{
  9755. config.shadowTiddlers[&quot;StyleSheetSvgIcons&quot;]=&quot;/*{{{*/\n&quot;+
  9756. &quot;/*replace FG with BG if you want to toggle the BackGround insted of the ForeGround */\n&quot;+
  9757. &quot;.showFG {\n&quot;+
  9758. &quot; opacity: 0;\n&quot;+
  9759. &quot;}\n\n&quot;+
  9760. &quot;svg:hover .showFG {\n&quot;+
  9761. &quot; opacity: 1;\n&quot;+
  9762. &quot;}\n&quot;+
  9763. &quot;/*}}}*/&quot;;
  9764. store.addNotification(&quot;StyleSheetSvgIcons&quot;,refreshStyles);
  9765. //}}}
  9766. </pre>
  9767. </div>
  9768. <div title="SvgEvent_Menue" creator="pmario" modifier="pmario" created="201007271654" modified="201009181605" tags="excludeLists fxPlugins systemConfig" server.title="SvgEvent_Menue" server.page.revision="53389" server.etag="&quot;fxplugins_public/SvgEvent_Menue/53389;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fxplugins_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fxplugins_public" server.permissions="read, write, create, delete" server.content-type="" _hash="a7000abea1d958c284df1bae4bd8acc2b1a37c79">
  9769. <pre>/***
  9770. |''Name''|SvgEvent_Menue|
  9771. |''Description''|contains the global TW jQuery custom events.|
  9772. |''Author''|Mario Pietsch|
  9773. |''Version''|0.2.1|
  9774. |''Status''|''stable''|
  9775. |''Source''|http://fxplugins.tiddlyspace.com|
  9776. |''CoreVersion''|2.6|
  9777. |''Documentation''|[[SvgEvent_Info]]|
  9778. |''Keywords''|svg, events, animation, commands|
  9779. !Important
  9780. !Known issues
  9781. !History
  9782. *V 0.2.1
  9783. **stable
  9784. **[[SvgEvent_Info]] has more info now
  9785. *Version: 0.2.0
  9786. **changed function names. They are not ugly anymore :)
  9787. **SvgEventzPlugin is not needed anymore!
  9788. *Version: 0.1.0
  9789. **initial release
  9790. !Code
  9791. ***/
  9792. /*{{{*/
  9793. if(!version.extensions.SvgEvent_Menue) { //# ensure that the plugin is only installed once
  9794. version.extensions.SvgEvent_Menue= { installed: true };
  9795. (function($) {
  9796. var eventTypes = [&quot;cCloseAll&quot;, &quot;cPermaview&quot;, &quot;cNewTiddler&quot;, &quot;cNewJournal&quot;, &quot;cSaveChanges&quot;, &quot;cReadDoc&quot;, &quot;cmd99&quot;];
  9797. menue= {
  9798. // if you add event types here. Also go to the end and adjust &quot;var eventTypes&quot; accordingly.
  9799. //menueCloseAll
  9800. cCloseAll: function(e, trial) {
  9801. if (! trial.comp.menue) return false;
  9802. story.closeAllTiddlers();
  9803. return false;
  9804. },
  9805. //menuePermaview
  9806. cPermaview: function(e, trial) {
  9807. if (! trial.comp.menue) return false;
  9808. story.permaView();
  9809. return false;
  9810. },
  9811. //menueNewTiddler
  9812. cNewTiddler: function(e, trial) {
  9813. if (! trial.comp.menue) return false;
  9814. // trigger readOnly
  9815. if (readOnly) {$(document).trigger('cmd99', trial); return false;}
  9816. var title = 'New Tiddler';
  9817. story.displayTiddler(null, title);
  9818. config.commands.editTiddler.handler(null, null, title);
  9819. return false;
  9820. },
  9821. //menueNewJournal
  9822. cNewJournal: function(e, trial) {
  9823. if (! trial.comp.menue) return false;
  9824. // trigger readOnly
  9825. if (readOnly) {$(document).trigger('cmd99', trial); return false;}
  9826. var title = config.macros.timeline.dateFormat;
  9827. title = new Date().formatString(title.trim());
  9828. story.displayTiddler(null, title);
  9829. config.commands.editTiddler.handler(null, null, title);
  9830. return false;
  9831. },
  9832. // menueSaveChanges
  9833. cSaveChanges: function(e, trial) {
  9834. if (! trial.comp.menue) return false;
  9835. // trigger readOnly
  9836. if (readOnly) {$(document).trigger('cmd99', trial); return false;}
  9837. saveChanges();
  9838. return false;
  9839. },
  9840. cReadDoc: function(e, trial) {
  9841. if (! trial.comp.menue) return false;
  9842. var rdDocMsg= &quot;Read the documentation!&quot;;
  9843. displayMessage(rdDocMsg);
  9844. return false;
  9845. },
  9846. cmd99: function(e, trial) {
  9847. var rdOnlyMsg= &quot;System is readOnly!&quot;;
  9848. if (! trial.comp.menue) return false;
  9849. displayMessage(rdOnlyMsg);
  9850. trial.elem.setAttribute('opacity', 0.3);
  9851. return false;
  9852. }
  9853. }; // menue
  9854. // if you add components here a
  9855. var components = [menue];
  9856. $.each(components, function(i,component) {
  9857. $.each(eventTypes, function(j,eventType) {
  9858. var handler = component[eventType];
  9859. if (handler) $(document).bind(eventType, handler);
  9860. });
  9861. });
  9862. })(jQuery);
  9863. } //# end of &quot;install only once&quot;
  9864. /*}}}*/</pre>
  9865. </div>
  9866. <div title="SystemSettings" creator="fancybox" modifier="fancybox" created="201101211613" modified="201101211613" tags="excludeLists" server.title="SystemSettings" server.page.revision="47614" server.etag="&quot;fancybox_public/SystemSettings/47614;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="55689bfb37f9bd9538b00b734dfef13625f20aff">
  9867. <pre>chkPrivateMode: true</pre>
  9868. </div>
  9869. <div title="TWDefaultTheme" creator="pmario" modifier="pmario" created="201008061923" modified="201011121427" tags="systemTheme" server.title="TWDefaultTheme" server.page.revision="107330" server.etag="&quot;neui-em_public/TWDefaultTheme/107330;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="b117017fffbda8a65092ae21e7281b6880d8f623">
  9870. <pre>|''Name:''|[[TWDefaultTheme]]|
  9871. |''Description:''|Your description here!|
  9872. |''Generator:''|[[TW FreeStyle|http://FreeStyle.tiddlyspot.com]]|
  9873. |''Gen.Description:''|Automatically generated from: TWDefaultThemeProject|
  9874. |''PageTemplate:''|PageTemplate|
  9875. |''ViewTemplate:''|ViewTemplate|
  9876. |''EditTemplate:''|EditTemplate|
  9877. |''RevisionTemplate:''|RevisionTemplate|
  9878. |''StyleSheet:''|##StyleSheet|
  9879. !StyleSheet
  9880. /*{{{*/
  9881. /* horizontal main menu stuff if created by list */
  9882. .noBullets a{
  9883. padding-top: 0.2em;
  9884. padding-bottom: 0.2em;
  9885. }
  9886. .noBullets ul,
  9887. .noBullets ol {
  9888. list-style:none;
  9889. padding:0;
  9890. margin: 0;
  9891. }
  9892. .noBullets li {
  9893. float: left;
  9894. }
  9895. [[StyleSheetTiddlySpace]]
  9896. /*}}}*/</pre>
  9897. </div>
  9898. <div title="TagSearchPlugin" creator="tobibeer" modifier="tobibeer" created="201009071451" modified="201010241139" tags="excludeLists systemConfig" server.title="TagSearchPlugin" server.page.revision="149388" server.etag="&quot;tagsearchplugin_public/TagSearchPlugin/149388;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/tagsearchplugin_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="tagsearchplugin_public" server.permissions="read" server.content-type="" _hash="78068874a20e165f7d1c8d6cdf0c4d2760b41de6">
  9899. <pre>/***
  9900. |''Name:''|TagSearchPlugin|
  9901. |''Description:''|Provides a drop down listing current tags and others to be set. Based on [[x-tagger|http://tbgtd.tiddlyspot.com/#x-tagger]] which in turn was once based on [[TaggerPlugin|http://tw.lewcid.org/#TaggerPlugin]].|
  9902. |''Author:''|[[Tobias Beer]]|
  9903. |''Version:''|1.2.0 (2010-10-10)|
  9904. |''Documentation:''|http://tagsearch.tiddlyspot.com|
  9905. |''Source:''|http://tagsearch.tiddlyspot.com/#TagSearchPlugin|
  9906. |''~TiddlyWiki:''|Version 2.5 or better|
  9907. /%***/
  9908. (function(e){config.macros.tagsearch={cfg:{defaultSource:&quot;&quot;,defaultMore:&quot;&quot;,defaultMode:1,keepModified:false,sidebarOffset:20,newAtSingle:30,newAt:18,excludeTagged:&quot;&quot;,toolbar:&quot;&quot;,label:&quot;tags&quot;,options:&quot;Options&quot;,more:&quot;More...&quot;,tooltip:&quot;Manage tiddler tags&quot;,notags:&quot;no tags set...&quot;,aretags:&quot;Current tags&quot;,addTag:&quot;Add tag...&quot;,addTags:&quot;Set tag...&quot;,txtEdit:&quot;~ edit categories...&quot;,txtEditTip:&quot;edit tiddler with GTD tag categories used by x-tagger&quot;,txtNew:&quot;~ add another tag&quot;,txtRemove:&quot;remove tag %0&quot;,txtAdd:&quot;set tag %0&quot;,txtFor:&quot;To be tagged... &quot;,txtCtrl:&quot; (hold SHIFT to just add it or CTRL to replace in category)&quot;,promptNew:&quot;Enter new tag:&quot;,modeAsk:&quot;Do you want to remove existing tags from category '%0'?\nCancel simply adds tag '%1'.&quot;},handler:function(k,g,i,l,h,n){var m=this.cfg,j=story.findContainingTiddler(k),f=h.parseParams(&quot;tagman&quot;,null,true);e(createTiddlyButton(k,getParam(f,&quot;label&quot;,m.label),getParam(f,&quot;tooltip&quot;,m.tooltip),this.click,&quot;button&quot;)).attr({id:this.newId(&quot;btntgs&quot;),tid:(j?j.getAttribute(&quot;tiddler&quot;):&quot;&quot;)}).data({pa:i,p:f})},click:function(O){var k,G,S,R,K=[],w=true,W,V,U,M,A,Y,T,D,N,L,J=[],C,f,H,aa=O||window.event,X=e(this),F=X.attr(&quot;popup&quot;),B=window.event?&quot;keydown&quot;:&quot;keypress&quot;,I=config.macros.tagsearch,ab=I.cfg,u=X.data(&quot;pa&quot;),Q=X.data(&quot;p&quot;),h=u.contains(&quot;toolbar&quot;),v=getParam(Q,&quot;source&quot;,ab.defaultSource),q=getParam(Q,&quot;more&quot;,ab.defaultMore),Z=!u.contains(&quot;nosearch&quot;),z=!u.contains(&quot;notags&quot;),E=!u.contains(&quot;nomore&quot;),n=getParam(Q,&quot;goto&quot;,&quot;&quot;),o=parseInt(getParam(Q,&quot;mode&quot;)),g=getParam(Q,&quot;tiddler&quot;,&quot;&quot;),r=g?g:X.attr(&quot;tid&quot;),ac=(getParam(Q,&quot;exclude&quot;,&quot;&quot;)+&quot; &quot;+ab.excludeTagged).readBracketedList(),y=nu=v?ab.newAt:ab.newAtSingle,P=store.getTiddler(r);if(!r){return}o=isNaN(o)?ab.defaultMode:o;ac.map(function(i){K.pushUnique(i)});for(W=0;W&lt;ac.length;W++){store.getTaggedTiddlers(ac[W]).map(function(i){K.pushUnique(i.title)})}if(v&amp;&amp;!store.getTiddlerText(v)){return false}if(F){D=e(&quot;#&quot;+F)[0];e(D).empty()}if(!D){M=true;F=I.newId(&quot;tgspop&quot;);D=Popup.create(this);e(D).addClass(&quot;tgs&quot;).attr({id:F}).data({btn:X,tiddler:r,source:v,mode:o}).click(I.noBubble);X.attr(&quot;popup&quot;,F)}if(v){C=store.getTiddlerText(v).readBracketedList();for(L=0;L&lt;C.length;L++){if(!K.contains(C[L])){H=store.getTaggedTiddlers(C[L]);J.push(&quot;TAG:&quot;+C[L]);for(N=0;N&lt;H.length;N++){if(!K.contains(H[N].title)){J.push(H[N].title)}}}}}else{J=store.getTags()}G=P?P.tags.sort():[];Y=function(j,i){return createTiddlyElement(createTiddlyElement(j,&quot;li&quot;,null,null),&quot;ol&quot;,null,i?i:null)};A=function(j,x,i,p){var m,l;m=createTiddlyElement(createTiddlyElement(j,&quot;li&quot;),&quot;span&quot;,null,null);l=e(createTiddlyButton(m,x,p.format([&quot;'&quot;+i+&quot;'&quot;]),I.setTag,&quot;button toggleButton&quot;,null));l.data({tiddler:r,tag:i,source:v,mode:o});insertSpacer(m);createTagButton(m,i)};S=Y(D,&quot;tgside&quot;);if(config.macros.gotoTiddler&amp;&amp;Z){R=Y(S);if(g){U=createTiddlyElement(R,&quot;li&quot;,null,&quot;addto&quot;,&quot;&quot;);wikify(&quot;{{title{&quot;+ab.txtFor+&quot;}}}&lt;&lt;tag [[&quot;+r+&quot;]]&gt;&gt;&quot;,U);R=Y(S)}createTiddlyElement(R,&quot;li&quot;,null,&quot;title&quot;,ab.addTag);wikify(&quot;&lt;&lt;gotoTiddler &quot;+n+&quot; &gt;&gt;&quot;,R);e(&quot;input&quot;,D).bind(B,I.noBubble).data(&quot;notify&quot;,config.macros.tagsearch.notify).focus()}R=Y(S);createTiddlyElement(R,&quot;li&quot;,null,&quot;title&quot;,ab.aretags);if(G.length==0){wikify(&quot;{{notags{&quot;+ab.notags+&quot;}}}&quot;,R)}else{for(L=0;L&lt;G.length;L++){A(R,&quot;[X]&quot;,G[L],ab.txtRemove)}}if(z){for(W=0;W&lt;J.length;W++){nu++;f=v?J[W]:J[W][0];if(f.indexOf(&quot;TAG:&quot;)==0){f=f.substr(4);if(nu&gt;y){nu=0;S=Y(D)}R=Y(S);nu++;createTiddlyLink(createTiddlyElement(R,&quot;li&quot;,null,null),f,f,&quot;title&quot;)}else{if(!G.contains(f)&amp;&amp;!K.contains(f)){if(!v&amp;&amp;nu&gt;y||v&amp;&amp;nu&gt;ab.newAtSingle){nu=0;S=Y(D);R=Y(S);if(w){createTiddlyElement(createTiddlyElement(R,&quot;li&quot;,null,null),&quot;li&quot;,null,&quot;title&quot;,ab.addTags);w=false}}A(R,&quot;[&quot;+String.fromCharCode(160,160,160)+&quot;]&quot;,f,ab.txtAdd+(v?ab.txtCtrl:&quot;&quot;))}}}}if(E){S=Y(D,&quot;tgside&quot;);R=Y(S);createTiddlyElement(R,&quot;li&quot;,null,&quot;title&quot;,ab.options,null);createTiddlyButton(createTiddlyElement(R,&quot;li&quot;),ab.txtNew,null,I.setTag,&quot;tsopt&quot;,null,null,{tiddler:r});if(v){createTiddlyButton(createTiddlyElement(R,&quot;li&quot;),ab.txtEdit,ab.txtEditTip,onClickTiddlerLink,&quot;tsopt&quot;,null,null,{tiddlyLink:v.split(&quot;##&quot;)[0]})}w=true;if(q){T=store.getTiddlerText(q).readBracketedList();if(T.length&gt;0){for(W=0;W&lt;T.length;W++){f=T[W];if(f.indexOf(&quot;TAG:&quot;)==0){f=f.substr(4,f.length-4);R=Y(S);createTiddlyLink(createTiddlyElement(R,&quot;li&quot;,null,null),f,f,&quot;title&quot;);k=store.getTaggedTiddlers(f);for(V=0;V&lt;k.length;V++){f=k[V].title;if(!G.contains(f)&amp;&amp;!K.contains(f)){A(R,&quot;[&quot;+String.fromCharCode(160,160)+&quot;]&quot;,f,ab.txtAdd)}}}else{if(w){R=Y(S);createTiddlyElement(R,&quot;li&quot;,null,&quot;title&quot;,ab.more);w=false}if(!G.contains(f)&amp;&amp;!K.contains(f)){A(R,&quot;[&quot;+String.fromCharCode(160,160)+&quot;]&quot;,f,ab.txtAdd)}}}}}}if(M){Popup.show(D,false);if(h){N=document.getElementById(&quot;sidebarTabs&quot;);D.style.left=&quot;&quot;;D.style.right=(ab.sidebarOffset+(N?N.offsetWidth:0))+&quot;px&quot;}}return I.noBubble(aa)},setTag:function(w){var q,j,z,l=true,n,u,s,g,v=w||window.event,k=config.macros.tagsearch,y=k.cfg,f=e(this),o=f.closest(&quot;.tgs&quot;),i=o.data(&quot;btn&quot;),A=f.data(&quot;tag&quot;),B=o.data(&quot;tiddler&quot;),h=o.data(&quot;source&quot;),r=parseInt(o.data(&quot;mode&quot;));if(!A){z=prompt(y.promptNew,&quot;&quot;);if(!z){return false}else{A=z}}tid=k.exists(B,A);if(tid){u=tid.tags;if(!u.contains(A)){if(h&amp;&amp;r&lt;2&amp;&amp;!v.shiftKey){j=store.getTiddlerText(h).readBracketedList();findTagged:for(q=0;q&lt;j.length;q++){g=j[q];s=store.getTaggedTiddlers(g).map(function(m){return m.title});if(s.contains(A)){s.splice(s.indexOf(A),1);if(!v.ctrlKey&amp;&amp;r==1&amp;&amp;u.containsAny(s)){l=confirm(y.modeAsk.format([g,A]))}if(l){for(n=0;n&lt;s.length;n++){g=s[n];if(u.contains(g)){store.setTiddlerTag(B,false,g)}}}break findTagged}}}store.setTiddlerTag(B,true,A)}else{if(!z){store.setTiddlerTag(B,false,A)}}n=store.getTiddler(B);store.saveTiddler(B,B,n.text,y.keepModified?n.modifier:config.options.txtUserName,y.keepModified?n.modified:new Date(),n.tags,n.fields)}if(config.options.chkAutoSave){autoSaveChanges()}i.click();o.find(&quot;input&quot;).focus();return k.noBubble(v)},newId:function(f){return f+Math.random().toString().substr(3)},notify:function(f,h){var j=e(h).closest(&quot;.tgs&quot;),g=e(&quot;form input&quot;,j)[0];t=config.macros.tagsearch.exists(j.data(&quot;tiddler&quot;),f);if(t&amp;&amp;!t.tags.contains(f)){store.setTiddlerTag(t.title,t,f)}j.data(&quot;btn&quot;).click();g.select()},exists:function(i,g){if(!store.getTiddler(i)){var h=merge({},config.defaultCustomFields);store.saveTiddler(i,i,&quot;&quot;,config.options.txtUserName,new Date(),g,h);return false}return store.getTiddler(i)},noBubble:function(g){var h=g||window.event,f=resolveTarget(h);if(h.keyCode==27){Popup.remove(0)}else{if(h.type!=&quot;click&quot;&amp;&amp;f.nodeName.toUpperCase()==&quot;INPUT&quot;){return true}}if(hasClass(f,&quot;tiddlyLink&quot;)){return true}Popup.remove(1);h.cancelBubble=true;try{event.keyCode=0}catch(h){}if(window.event){h.returnValue=false}if(h.preventDefault){h.preventDefault()}if(h.stopPropagation){h.stopPropagation()}return false}};config.commands.tagSearch={};var d=config.macros.toolbar;d.createCommandTAGS=d.createCommand;d.createCommand=function(f,h,g,i){if(h==&quot;tagSearch&quot;){wikify(&quot;&lt;&lt;tagsearch toolbar &quot;+config.macros.tagsearch.cfg.toolbar+&quot;&gt;&gt;&quot;,f);e(f.lastChild).attr({commandName:&quot;tagSearch&quot;,tiddler:g.title})}else{d.createCommandTAGS.apply(this,arguments)}};var b=config.macros.gotoTiddler;if(b){b.processItem=function(i,g,h,f){if(!i.length){return}h.style.display=f?&quot;block&quot;:&quot;none&quot;;if(i==&quot;*&quot;){story.search(g.value);return false}if(!f){g.value=i}var j=e(g).data(&quot;notify&quot;);if(j){j.call(this,i,g)}else{story.displayTiddler(null,i)}return false};b.IEtableFixup=&quot;%0&quot;}var c=store.getTiddlerText(&quot;ColorPalette::TertiaryMid&quot;),a=store.getTiddlerText(&quot;ColorPalette::TertiaryDark&quot;);config.shadowTiddlers.StyleSheetTagSearch=&quot;/*{{{*/\n.tgs {padding:7px !important;-moz-border-radius:5px; -webkit-border-radius:5px;border-radius:5px;}\n.tgs li a, .tgs .quickopentag .tiddlyLink {display:inline;padding:2px;clear:none;}\n.tgs li a.toggleButton {display:inline;margin-left:5px;}\n.tgs .title {margin:3px 0 0 5px;font-weight:bold;font-size:120%;color:&quot;+c+&quot;;padding:0;}\n.tgs form{display:block;float:left;clear:both;padding-left:5px !important;}\n.tgs .addto .quickopentag{display:block;clear:both;padding:5px;font-size:120%;}\n.tgs .notags, .tsopt{display:block;clear:both;margin:5px;}\n.tgs .highlight{background:&quot;+a+&quot;;}\n.tgs ol{margin:0;padding:0 0 5px 0;}\n.tgs li{display:block;float:left;padding-bottom:10px !important;}\n.tgs li span{line-height:1em;}\n.tgs li ol li{clear:both;min-width:120px;display:inline;border:1px solid transparent;}\n.tgs li ol li:hover{border:1px solid &quot;+c+&quot;;}\n.tgs li ol li ol li{padding:0 !important;}\n.tgs li ol li ol li:hover{border:1px solid transparent;}\n.tgside li ol li {min-width:150px;}.tgs .quickopentag {display:inline;}\n.tgs .quickopentag .tiddlyLink:hover {text-decoration:underline;}\n.tgs .quickopentag .button {border:0;padding:2px;font-size:1.5em;}\n/*}}}*/&quot;;store.addNotification(&quot;StyleSheetTagSearch&quot;,refreshStyles)})(jQuery);
  9909. //%/</pre>
  9910. </div>
  9911. <div title="TagglyTaggingPlugin" creator="pmario" modifier="pmario" created="201008061923" modified="201009181705" tags="excludeLists systemConfig" server.title="TagglyTaggingPlugin" server.page.revision="107334" server.etag="&quot;neui-em_public/TagglyTaggingPlugin/107334;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/neui-em_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="neui-em_public" server.permissions="read, write, create, delete" server.content-type="" _hash="d5a3d484b0efd43e1e7ba601e22b98f063081049">
  9912. <pre>/***
  9913. |Name:|TagglyTaggingPlugin|
  9914. |Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
  9915. |Version:|3.3.1 ($Rev: 9828 $)|
  9916. |Date:|$Date: 2009-06-03 21:38:41 +1000 (Wed, 03 Jun 2009) $|
  9917. |Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
  9918. |Author:|Simon Baird &lt;simon.baird@gmail.com&gt;|
  9919. |License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
  9920. !Notes
  9921. See http://mptw.tiddlyspot.com/#TagglyTagging
  9922. ***/
  9923. //{{{
  9924. merge(String.prototype,{
  9925. parseTagExpr: function(debug) {
  9926. if (this.trim() == &quot;&quot;)
  9927. return &quot;(true)&quot;;
  9928. var anyLogicOp = /(!|&amp;&amp;|\|\||\(|\))/g;
  9929. var singleLogicOp = /^(!|&amp;&amp;|\|\||\(|\))$/;
  9930. var spaced = this.
  9931. // because square brackets in templates are no good
  9932. // this means you can use [(With Spaces)] instead of [[With Spaces]]
  9933. replace(/\[\(/g,&quot; [[&quot;).
  9934. replace(/\)\]/g,&quot;]] &quot;).
  9935. // space things out so we can use readBracketedList. tricky eh?
  9936. replace(anyLogicOp,&quot; $1 &quot;);
  9937. var expr = &quot;&quot;;
  9938. var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!
  9939. for (var i=0;i&lt;tokens.length;i++)
  9940. if (tokens[i].match(singleLogicOp))
  9941. expr += tokens[i];
  9942. else
  9943. expr += &quot;tiddler.tags.contains('%0')&quot;.format([tokens[i].replace(/'/,&quot;\\'&quot;)]); // fix single quote bug. still have round bracket bug i think
  9944. if (debug)
  9945. alert(expr);
  9946. return '('+expr+')';
  9947. }
  9948. });
  9949. merge(TiddlyWiki.prototype,{
  9950. getTiddlersByTagExpr: function(tagExpr,sortField) {
  9951. var result = [];
  9952. var expr = tagExpr.parseTagExpr();
  9953. store.forEachTiddler(function(title,tiddler) {
  9954. if (eval(expr))
  9955. result.push(tiddler);
  9956. });
  9957. if(!sortField)
  9958. sortField = &quot;title&quot;;
  9959. result.sort(function(a,b) {return a[sortField] &lt; b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
  9960. return result;
  9961. }
  9962. });
  9963. config.taggly = {
  9964. // for translations
  9965. lingo: {
  9966. labels: {
  9967. asc: &quot;\u2191&quot;, // down arrow
  9968. desc: &quot;\u2193&quot;, // up arrow
  9969. title: &quot;title&quot;,
  9970. modified: &quot;modified&quot;,
  9971. created: &quot;created&quot;,
  9972. show: &quot;+&quot;,
  9973. hide: &quot;-&quot;,
  9974. normal: &quot;normal&quot;,
  9975. group: &quot;group&quot;,
  9976. commas: &quot;commas&quot;,
  9977. sitemap: &quot;sitemap&quot;,
  9978. numCols: &quot;cols\u00b1&quot;, // plus minus sign
  9979. label: &quot;Tagged as '%0':&quot;,
  9980. exprLabel: &quot;Matching tag expression '%0':&quot;,
  9981. excerpts: &quot;excerpts&quot;,
  9982. descr: &quot;descr&quot;,
  9983. slices: &quot;slices&quot;,
  9984. contents: &quot;contents&quot;,
  9985. sliders: &quot;sliders&quot;,
  9986. noexcerpts: &quot;title only&quot;,
  9987. noneFound: &quot;(none)&quot;
  9988. },
  9989. tooltips: {
  9990. title: &quot;Click to sort by title&quot;,
  9991. modified: &quot;Click to sort by modified date&quot;,
  9992. created: &quot;Click to sort by created date&quot;,
  9993. show: &quot;Click to show tagging list&quot;,
  9994. hide: &quot;Click to hide tagging list&quot;,
  9995. normal: &quot;Click to show a normal ungrouped list&quot;,
  9996. group: &quot;Click to show list grouped by tag&quot;,
  9997. sitemap: &quot;Click to show a sitemap style list&quot;,
  9998. commas: &quot;Click to show a comma separated list&quot;,
  9999. numCols: &quot;Click to change number of columns&quot;,
  10000. excerpts: &quot;Click to show excerpts&quot;,
  10001. descr: &quot;Click to show the description slice&quot;,
  10002. slices: &quot;Click to show all slices&quot;,
  10003. contents: &quot;Click to show entire tiddler contents&quot;,
  10004. sliders: &quot;Click to show tiddler contents in sliders&quot;,
  10005. noexcerpts: &quot;Click to show entire title only&quot;
  10006. },
  10007. tooDeepMessage: &quot;* //sitemap too deep...//&quot;
  10008. },
  10009. config: {
  10010. showTaggingCounts: true,
  10011. listOpts: {
  10012. // the first one will be the default
  10013. sortBy: [&quot;title&quot;,&quot;modified&quot;,&quot;created&quot;],
  10014. sortOrder: [&quot;asc&quot;,&quot;desc&quot;],
  10015. hideState: [&quot;show&quot;,&quot;hide&quot;],
  10016. listMode: [&quot;normal&quot;,&quot;group&quot;,&quot;sitemap&quot;,&quot;commas&quot;],
  10017. numCols: [&quot;1&quot;,&quot;2&quot;,&quot;3&quot;,&quot;4&quot;,&quot;5&quot;,&quot;6&quot;],
  10018. excerpts: [&quot;noexcerpts&quot;,&quot;excerpts&quot;,&quot;descr&quot;,&quot;slices&quot;,&quot;contents&quot;,&quot;sliders&quot;]
  10019. },
  10020. valuePrefix: &quot;taggly.&quot;,
  10021. excludeTags: [&quot;excludeLists&quot;,&quot;excludeTagging&quot;],
  10022. excerptSize: 50,
  10023. excerptMarker: &quot;/%&quot;+&quot;%/&quot;,
  10024. siteMapDepthLimit: 25
  10025. },
  10026. getTagglyOpt: function(title,opt) {
  10027. var val = store.getValue(title,this.config.valuePrefix+opt);
  10028. return val ? val : this.config.listOpts[opt][0];
  10029. },
  10030. setTagglyOpt: function(title,opt,value) {
  10031. // create it silently if it doesn't exist
  10032. if (!store.tiddlerExists(title)) {
  10033. store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),&quot;&quot;);
  10034. // &lt;&lt;tagglyTagging expr:&quot;...&quot;&gt;&gt; creates a tiddler to store its display settings
  10035. // Make those tiddlers less noticeable by tagging as excludeSearch and excludeLists
  10036. // Because we don't want to hide real tags, check that they aren't actually tags before doing so
  10037. // Also tag them as tagglyExpression for manageability
  10038. // (contributed by RA)
  10039. if (!store.getTaggedTiddlers(title).length) {
  10040. store.setTiddlerTag(title,true,&quot;excludeSearch&quot;);
  10041. store.setTiddlerTag(title,true,&quot;excludeLists&quot;);
  10042. store.setTiddlerTag(title,true,&quot;tagglyExpression&quot;);
  10043. }
  10044. }
  10045. // if value is default then remove it to save space
  10046. return store.setValue(title, this.config.valuePrefix+opt, value == this.config.listOpts[opt][0] ? null : value);
  10047. },
  10048. getNextValue: function(title,opt) {
  10049. var current = this.getTagglyOpt(title,opt);
  10050. var pos = this.config.listOpts[opt].indexOf(current);
  10051. // supposed to automagically don't let cols cycle up past the number of items
  10052. // currently broken in some situations, eg when using an expression
  10053. // lets fix it later when we rewrite for jquery
  10054. // the columns thing should be jquery table manipulation probably
  10055. var limit = (opt == &quot;numCols&quot; ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
  10056. var newPos = (pos + 1) % limit;
  10057. return this.config.listOpts[opt][newPos];
  10058. },
  10059. toggleTagglyOpt: function(title,opt) {
  10060. var newVal = this.getNextValue(title,opt);
  10061. this.setTagglyOpt(title,opt,newVal);
  10062. },
  10063. createListControl: function(place,title,type) {
  10064. var lingo = config.taggly.lingo;
  10065. var label;
  10066. var tooltip;
  10067. var onclick;
  10068. if ((type == &quot;title&quot; || type == &quot;modified&quot; || type == &quot;created&quot;)) {
  10069. // &quot;special&quot; controls. a little tricky. derived from sortOrder and sortBy
  10070. label = lingo.labels[type];
  10071. tooltip = lingo.tooltips[type];
  10072. if (this.getTagglyOpt(title,&quot;sortBy&quot;) == type) {
  10073. label += lingo.labels[this.getTagglyOpt(title,&quot;sortOrder&quot;)];
  10074. onclick = function() {
  10075. config.taggly.toggleTagglyOpt(title,&quot;sortOrder&quot;);
  10076. return false;
  10077. }
  10078. }
  10079. else {
  10080. onclick = function() {
  10081. config.taggly.setTagglyOpt(title,&quot;sortBy&quot;,type);
  10082. config.taggly.setTagglyOpt(title,&quot;sortOrder&quot;,config.taggly.config.listOpts.sortOrder[0]);
  10083. return false;
  10084. }
  10085. }
  10086. }
  10087. else {
  10088. // &quot;regular&quot; controls, nice and simple
  10089. label = lingo.labels[type == &quot;numCols&quot; ? type : this.getNextValue(title,type)];
  10090. tooltip = lingo.tooltips[type == &quot;numCols&quot; ? type : this.getNextValue(title,type)];
  10091. onclick = function() {
  10092. config.taggly.toggleTagglyOpt(title,type);
  10093. return false;
  10094. }
  10095. }
  10096. // hide button because commas don't have columns
  10097. if (!(this.getTagglyOpt(title,&quot;listMode&quot;) == &quot;commas&quot; &amp;&amp; type == &quot;numCols&quot;))
  10098. createTiddlyButton(place,label,tooltip,onclick,type == &quot;hideState&quot; ? &quot;hidebutton&quot; : &quot;button&quot;);
  10099. },
  10100. makeColumns: function(orig,numCols) {
  10101. var listSize = orig.length;
  10102. var colSize = listSize/numCols;
  10103. var remainder = listSize % numCols;
  10104. var upperColsize = colSize;
  10105. var lowerColsize = colSize;
  10106. if (colSize != Math.floor(colSize)) {
  10107. // it's not an exact fit so..
  10108. upperColsize = Math.floor(colSize) + 1;
  10109. lowerColsize = Math.floor(colSize);
  10110. }
  10111. var output = [];
  10112. var c = 0;
  10113. for (var j=0;j&lt;numCols;j++) {
  10114. var singleCol = [];
  10115. var thisSize = j &lt; remainder ? upperColsize : lowerColsize;
  10116. for (var i=0;i&lt;thisSize;i++)
  10117. singleCol.push(orig[c++]);
  10118. output.push(singleCol);
  10119. }
  10120. return output;
  10121. },
  10122. drawTable: function(place,columns,theClass) {
  10123. var newTable = createTiddlyElement(place,&quot;table&quot;,null,theClass);
  10124. var newTbody = createTiddlyElement(newTable,&quot;tbody&quot;);
  10125. var newTr = createTiddlyElement(newTbody,&quot;tr&quot;);
  10126. for (var j=0;j&lt;columns.length;j++) {
  10127. var colOutput = &quot;&quot;;
  10128. for (var i=0;i&lt;columns[j].length;i++)
  10129. colOutput += columns[j][i];
  10130. var newTd = createTiddlyElement(newTr,&quot;td&quot;,null,&quot;tagglyTagging&quot;); // todo should not need this class
  10131. wikify(colOutput,newTd);
  10132. }
  10133. return newTable;
  10134. },
  10135. createTagglyList: function(place,title,isTagExpr) {
  10136. switch(this.getTagglyOpt(title,&quot;listMode&quot;)) {
  10137. case &quot;group&quot;: return this.createTagglyListGrouped(place,title,isTagExpr); break;
  10138. case &quot;normal&quot;: return this.createTagglyListNormal(place,title,false,isTagExpr); break;
  10139. case &quot;commas&quot;: return this.createTagglyListNormal(place,title,true,isTagExpr); break;
  10140. case &quot;sitemap&quot;:return this.createTagglyListSiteMap(place,title,isTagExpr); break;
  10141. }
  10142. },
  10143. getTaggingCount: function(title,isTagExpr) {
  10144. // thanks to Doug Edmunds
  10145. if (this.config.showTaggingCounts) {
  10146. var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
  10147. if (tagCount &gt; 0)
  10148. return &quot; (&quot;+tagCount+&quot;)&quot;;
  10149. }
  10150. return &quot;&quot;;
  10151. },
  10152. getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
  10153. return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
  10154. },
  10155. getExcerpt: function(inTiddlerTitle,title,indent) {
  10156. if (!indent)
  10157. indent = 1;
  10158. var displayMode = this.getTagglyOpt(inTiddlerTitle,&quot;excerpts&quot;);
  10159. var t = store.getTiddler(title);
  10160. if (t &amp;&amp; displayMode == &quot;excerpts&quot;) {
  10161. var text = t.text.replace(/\n/,&quot; &quot;);
  10162. var marker = text.indexOf(this.config.excerptMarker);
  10163. if (marker != -1) {
  10164. return &quot; {{excerpt{&lt;nowiki&gt;&quot; + text.substr(0,marker) + &quot;&lt;/nowiki&gt;}}}&quot;;
  10165. }
  10166. else if (text.length &lt; this.config.excerptSize) {
  10167. return &quot; {{excerpt{&lt;nowiki&gt;&quot; + t.text + &quot;&lt;/nowiki&gt;}}}&quot;;
  10168. }
  10169. else {
  10170. return &quot; {{excerpt{&lt;nowiki&gt;&quot; + t.text.substr(0,this.config.excerptSize) + &quot;...&quot; + &quot;&lt;/nowiki&gt;}}}&quot;;
  10171. }
  10172. }
  10173. else if (t &amp;&amp; displayMode == &quot;contents&quot;) {
  10174. return &quot;\n{{contents indent&quot;+indent+&quot;{\n&quot; + t.text + &quot;\n}}}&quot;;
  10175. }
  10176. else if (t &amp;&amp; displayMode == &quot;sliders&quot;) {
  10177. return &quot;&lt;slider slide&gt;\n{{contents{\n&quot; + t.text + &quot;\n}}}\n&lt;/slider&gt;&quot;;
  10178. }
  10179. else if (t &amp;&amp; displayMode == &quot;descr&quot;) {
  10180. var descr = store.getTiddlerSlice(title,'Description');
  10181. return descr ? &quot; {{excerpt{&quot; + descr + &quot;}}}&quot; : &quot;&quot;;
  10182. }
  10183. else if (t &amp;&amp; displayMode == &quot;slices&quot;) {
  10184. var result = &quot;&quot;;
  10185. var slices = store.calcAllSlices(title);
  10186. for (var s in slices)
  10187. result += &quot;|%0|&lt;nowiki&gt;%1&lt;/nowiki&gt;|\n&quot;.format([s,slices[s]]);
  10188. return result ? &quot;\n{{excerpt excerptIndent{\n&quot; + result + &quot;}}}&quot; : &quot;&quot;;
  10189. }
  10190. return &quot;&quot;;
  10191. },
  10192. notHidden: function(t,inTiddler) {
  10193. if (typeof t == &quot;string&quot;)
  10194. t = store.getTiddler(t);
  10195. return (!t || !t.tags.containsAny(this.config.excludeTags) ||
  10196. (inTiddler &amp;&amp; this.config.excludeTags.contains(inTiddler)));
  10197. },
  10198. // this is for normal and commas mode
  10199. createTagglyListNormal: function(place,title,useCommas,isTagExpr) {
  10200. var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,&quot;sortBy&quot;),isTagExpr);
  10201. if (this.getTagglyOpt(title,&quot;sortOrder&quot;) == &quot;desc&quot;)
  10202. list = list.reverse();
  10203. var output = [];
  10204. var first = true;
  10205. for (var i=0;i&lt;list.length;i++) {
  10206. if (this.notHidden(list[i],title)) {
  10207. var countString = this.getTaggingCount(list[i].title);
  10208. var excerpt = this.getExcerpt(title,list[i].title);
  10209. if (useCommas)
  10210. output.push((first ? &quot;&quot; : &quot;, &quot;) + &quot;[[&quot; + list[i].title + &quot;]]&quot; + countString + excerpt);
  10211. else
  10212. output.push(&quot;*[[&quot; + list[i].title + &quot;]]&quot; + countString + excerpt + &quot;\n&quot;);
  10213. first = false;
  10214. }
  10215. }
  10216. return this.drawTable(place,
  10217. this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,&quot;numCols&quot;))),
  10218. useCommas ? &quot;commas&quot; : &quot;normal&quot;);
  10219. },
  10220. // this is for the &quot;grouped&quot; mode
  10221. createTagglyListGrouped: function(place,title,isTagExpr) {
  10222. var sortBy = this.getTagglyOpt(title,&quot;sortBy&quot;);
  10223. var sortOrder = this.getTagglyOpt(title,&quot;sortOrder&quot;);
  10224. var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);
  10225. if (sortOrder == &quot;desc&quot;)
  10226. list = list.reverse();
  10227. var leftOvers = []
  10228. for (var i=0;i&lt;list.length;i++)
  10229. leftOvers.push(list[i].title);
  10230. var allTagsHolder = {};
  10231. for (var i=0;i&lt;list.length;i++) {
  10232. for (var j=0;j&lt;list[i].tags.length;j++) {
  10233. if (list[i].tags[j] != title) { // not this tiddler
  10234. if (this.notHidden(list[i].tags[j],title)) {
  10235. if (!allTagsHolder[list[i].tags[j]])
  10236. allTagsHolder[list[i].tags[j]] = &quot;&quot;;
  10237. if (this.notHidden(list[i],title)) {
  10238. allTagsHolder[list[i].tags[j]] += &quot;**[[&quot;+list[i].title+&quot;]]&quot;
  10239. + this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + &quot;\n&quot;;
  10240. leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers
  10241. }
  10242. }
  10243. }
  10244. }
  10245. }
  10246. var allTags = [];
  10247. for (var t in allTagsHolder)
  10248. allTags.push(t);
  10249. var sortHelper = function(a,b) {
  10250. if (a == b) return 0;
  10251. if (a &lt; b) return -1;
  10252. return 1;
  10253. };
  10254. allTags.sort(function(a,b) {
  10255. var tidA = store.getTiddler(a);
  10256. var tidB = store.getTiddler(b);
  10257. if (sortBy == &quot;title&quot;) return sortHelper(a,b);
  10258. else if (!tidA &amp;&amp; !tidB) return 0;
  10259. else if (!tidA) return -1;
  10260. else if (!tidB) return +1;
  10261. else return sortHelper(tidA[sortBy],tidB[sortBy]);
  10262. });
  10263. var leftOverOutput = &quot;&quot;;
  10264. for (var i=0;i&lt;leftOvers.length;i++)
  10265. if (this.notHidden(leftOvers[i],title))
  10266. leftOverOutput += &quot;*[[&quot;+leftOvers[i]+&quot;]]&quot; + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + &quot;\n&quot;;
  10267. var output = [];
  10268. if (sortOrder == &quot;desc&quot;)
  10269. allTags.reverse();
  10270. else if (leftOverOutput != &quot;&quot;)
  10271. // leftovers first...
  10272. output.push(leftOverOutput);
  10273. for (var i=0;i&lt;allTags.length;i++)
  10274. if (allTagsHolder[allTags[i]] != &quot;&quot;)
  10275. output.push(&quot;*[[&quot;+allTags[i]+&quot;]]&quot; + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + &quot;\n&quot; + allTagsHolder[allTags[i]]);
  10276. if (sortOrder == &quot;desc&quot; &amp;&amp; leftOverOutput != &quot;&quot;)
  10277. // leftovers last...
  10278. output.push(leftOverOutput);
  10279. return this.drawTable(place,
  10280. this.makeColumns(output,parseInt(this.getTagglyOpt(title,&quot;numCols&quot;))),
  10281. &quot;grouped&quot;);
  10282. },
  10283. // used to build site map
  10284. treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {
  10285. var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);
  10286. if (sortOrder == &quot;desc&quot;)
  10287. list.reverse();
  10288. var indent = &quot;&quot;;
  10289. for (var j=0;j&lt;depth;j++)
  10290. indent += &quot;*&quot;
  10291. var childOutput = &quot;&quot;;
  10292. if (depth &gt; this.config.siteMapDepthLimit)
  10293. childOutput += indent + this.lingo.tooDeepMessage;
  10294. else
  10295. for (var i=0;i&lt;list.length;i++)
  10296. if (list[i].title != title)
  10297. if (this.notHidden(list[i].title,this.config.inTiddler))
  10298. childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);
  10299. if (depth == 0)
  10300. return childOutput;
  10301. else
  10302. return indent + &quot;[[&quot;+title+&quot;]]&quot; + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + &quot;\n&quot; + childOutput;
  10303. },
  10304. // this if for the site map mode
  10305. createTagglyListSiteMap: function(place,title,isTagExpr) {
  10306. this.config.inTiddler = title; // nasty. should pass it in to traverse probably
  10307. var output = this.treeTraverse(title,0,this.getTagglyOpt(title,&quot;sortBy&quot;),this.getTagglyOpt(title,&quot;sortOrder&quot;),isTagExpr);
  10308. return this.drawTable(place,
  10309. this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,&quot;numCols&quot;))), // regexp magic
  10310. &quot;sitemap&quot;
  10311. );
  10312. },
  10313. macros: {
  10314. tagglyTagging: {
  10315. handler: function (place,macroName,params,wikifier,paramString,tiddler) {
  10316. var parsedParams = paramString.parseParams(&quot;tag&quot;,null,true);
  10317. var refreshContainer = createTiddlyElement(place,&quot;div&quot;);
  10318. // do some refresh magic to make it keep the list fresh - thanks Saq
  10319. refreshContainer.setAttribute(&quot;refresh&quot;,&quot;macro&quot;);
  10320. refreshContainer.setAttribute(&quot;macroName&quot;,macroName);
  10321. var tag = getParam(parsedParams,&quot;tag&quot;);
  10322. var expr = getParam(parsedParams,&quot;expr&quot;);
  10323. if (expr) {
  10324. refreshContainer.setAttribute(&quot;isTagExpr&quot;,&quot;true&quot;);
  10325. refreshContainer.setAttribute(&quot;title&quot;,expr);
  10326. refreshContainer.setAttribute(&quot;showEmpty&quot;,&quot;true&quot;);
  10327. }
  10328. else {
  10329. refreshContainer.setAttribute(&quot;isTagExpr&quot;,&quot;false&quot;);
  10330. if (tag) {
  10331. refreshContainer.setAttribute(&quot;title&quot;,tag);
  10332. refreshContainer.setAttribute(&quot;showEmpty&quot;,&quot;true&quot;);
  10333. }
  10334. else {
  10335. refreshContainer.setAttribute(&quot;title&quot;,tiddler.title);
  10336. refreshContainer.setAttribute(&quot;showEmpty&quot;,&quot;false&quot;);
  10337. }
  10338. }
  10339. this.refresh(refreshContainer);
  10340. },
  10341. refresh: function(place) {
  10342. var title = place.getAttribute(&quot;title&quot;);
  10343. var isTagExpr = place.getAttribute(&quot;isTagExpr&quot;) == &quot;true&quot;;
  10344. var showEmpty = place.getAttribute(&quot;showEmpty&quot;) == &quot;true&quot;;
  10345. removeChildren(place);
  10346. addClass(place,&quot;tagglyTagging&quot;);
  10347. var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
  10348. if (countFound &gt; 0 || showEmpty) {
  10349. var lingo = config.taggly.lingo;
  10350. config.taggly.createListControl(place,title,&quot;hideState&quot;);
  10351. if (config.taggly.getTagglyOpt(title,&quot;hideState&quot;) == &quot;show&quot;) {
  10352. createTiddlyElement(place,&quot;span&quot;,null,&quot;tagglyLabel&quot;,
  10353. isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
  10354. config.taggly.createListControl(place,title,&quot;title&quot;);
  10355. config.taggly.createListControl(place,title,&quot;modified&quot;);
  10356. config.taggly.createListControl(place,title,&quot;created&quot;);
  10357. config.taggly.createListControl(place,title,&quot;listMode&quot;);
  10358. config.taggly.createListControl(place,title,&quot;excerpts&quot;);
  10359. config.taggly.createListControl(place,title,&quot;numCols&quot;);
  10360. config.taggly.createTagglyList(place,title,isTagExpr);
  10361. if (countFound == 0 &amp;&amp; showEmpty)
  10362. createTiddlyElement(place,&quot;div&quot;,null,&quot;tagglyNoneFound&quot;,lingo.labels.noneFound);
  10363. }
  10364. }
  10365. }
  10366. }
  10367. },
  10368. // todo fix these up a bit
  10369. styles: [
  10370. &quot;/*{{{*/&quot;,
  10371. &quot;/* created by TagglyTaggingPlugin */&quot;,
  10372. &quot;.tagglyTagging { padding-top:0.5em; }&quot;,
  10373. &quot;.tagglyTagging li.listTitle { display:none; }&quot;,
  10374. &quot;.tagglyTagging ul {&quot;,
  10375. &quot; margin-top:0px; padding-top:0.5em; padding-left:2em;&quot;,
  10376. &quot; margin-bottom:0px; padding-bottom:0px;&quot;,
  10377. &quot;}&quot;,
  10378. &quot;.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }&quot;,
  10379. &quot;.tagglyTagging table { margin:0px; padding:0px; }&quot;,
  10380. &quot;.tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }&quot;,
  10381. &quot;.tagglyTagging .button, .tagglyTagging .hidebutton {&quot;,
  10382. &quot; color:[[ColorPalette::TertiaryLight]]; font-size:90%;&quot;,
  10383. &quot; border:0px; padding-left:0.3em;padding-right:0.3em;&quot;,
  10384. &quot;}&quot;,
  10385. &quot;.tagglyTagging .button:hover, .hidebutton:hover, &quot;,
  10386. &quot;.tagglyTagging .button:active, .hidebutton:active {&quot;,
  10387. &quot; border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];&quot;,
  10388. &quot;}&quot;,
  10389. &quot;.selected .tagglyTagging .button { visibility:visible; }&quot;,
  10390. &quot;.tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }&quot;,
  10391. &quot;.selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }&quot;,
  10392. &quot;.tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }&quot;,
  10393. &quot;.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }&quot;,
  10394. &quot;.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}&quot;,
  10395. &quot;.tagglyTagging ul ul li {margin-left:0.5em; }&quot;,
  10396. &quot;.editLabel { font-size:90%; padding-top:0.5em; }&quot;,
  10397. &quot;.tagglyTagging .commas { padding-left:1.8em; }&quot;,
  10398. &quot;/* not technically tagglytagging but will put them here anyway */&quot;,
  10399. &quot;.tagglyTagged li.listTitle { display:none; }&quot;,
  10400. &quot;.tagglyTagged li { display: inline; font-size:90%; }&quot;,
  10401. &quot;.tagglyTagged ul { margin:0px; padding:0px; }&quot;,
  10402. &quot;.excerpt { color:[[ColorPalette::TertiaryDark]]; }&quot;,
  10403. &quot;.excerptIndent { margin-left:4em; }&quot;,
  10404. &quot;div.tagglyTagging table,&quot;,
  10405. &quot;div.tagglyTagging table tr,&quot;,
  10406. &quot;td.tagglyTagging&quot;,
  10407. &quot; {border-style:none!important; }&quot;,
  10408. &quot;.tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;&quot;,
  10409. &quot; margin-bottom:0.5em; }&quot;,
  10410. &quot;.tagglyTagging .indent1 { margin-left:3em; }&quot;,
  10411. &quot;.tagglyTagging .indent2 { margin-left:4em; }&quot;,
  10412. &quot;.tagglyTagging .indent3 { margin-left:5em; }&quot;,
  10413. &quot;.tagglyTagging .indent4 { margin-left:6em; }&quot;,
  10414. &quot;.tagglyTagging .indent5 { margin-left:7em; }&quot;,
  10415. &quot;.tagglyTagging .indent6 { margin-left:8em; }&quot;,
  10416. &quot;.tagglyTagging .indent7 { margin-left:9em; }&quot;,
  10417. &quot;.tagglyTagging .indent8 { margin-left:10em; }&quot;,
  10418. &quot;.tagglyTagging .indent9 { margin-left:11em; }&quot;,
  10419. &quot;.tagglyTagging .indent10 { margin-left:12em; }&quot;,
  10420. &quot;.tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }&quot;,
  10421. &quot;/*}}}*/&quot;,
  10422. &quot;&quot;].join(&quot;\n&quot;),
  10423. init: function() {
  10424. merge(config.macros,this.macros);
  10425. config.shadowTiddlers[&quot;TagglyTaggingStyles&quot;] = this.styles;
  10426. store.addNotification(&quot;TagglyTaggingStyles&quot;,refreshStyles);
  10427. }
  10428. };
  10429. config.taggly.init();
  10430. //}}}
  10431. /***
  10432. InlineSlidersPlugin
  10433. By Saq Imtiaz
  10434. http://tw.lewcid.org/sandbox/#InlineSlidersPlugin
  10435. // syntax adjusted to not clash with NestedSlidersPlugin
  10436. // added + syntax to start open instead of closed
  10437. ***/
  10438. //{{{
  10439. config.formatters.unshift( {
  10440. name: &quot;inlinesliders&quot;,
  10441. // match: &quot;\\+\\+\\+\\+|\\&lt;slider&quot;,
  10442. match: &quot;\\&lt;slider&quot;,
  10443. // lookaheadRegExp: /(?:\+\+\+\+|&lt;slider) (.*?)(?:&gt;?)\n((?:.|\n)*?)\n(?:====|&lt;\/slider&gt;)/mg,
  10444. lookaheadRegExp: /(?:&lt;slider)(\+?) (.*?)(?:&gt;)\n((?:.|\n)*?)\n(?:&lt;\/slider&gt;)/mg,
  10445. handler: function(w) {
  10446. this.lookaheadRegExp.lastIndex = w.matchStart;
  10447. var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
  10448. if(lookaheadMatch &amp;&amp; lookaheadMatch.index == w.matchStart ) {
  10449. var btn = createTiddlyButton(w.output,lookaheadMatch[2] + &quot; &quot;+&quot;\u00BB&quot;,lookaheadMatch[2],this.onClickSlider,&quot;button sliderButton&quot;);
  10450. var panel = createTiddlyElement(w.output,&quot;div&quot;,null,&quot;sliderPanel&quot;);
  10451. panel.style.display = (lookaheadMatch[1] == '+' ? &quot;block&quot; : &quot;none&quot;);
  10452. wikify(lookaheadMatch[3],panel);
  10453. w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
  10454. }
  10455. },
  10456. onClickSlider : function(e) {
  10457. if(!e) var e = window.event;
  10458. var n = this.nextSibling;
  10459. n.style.display = (n.style.display==&quot;none&quot;) ? &quot;block&quot; : &quot;none&quot;;
  10460. return false;
  10461. }
  10462. });
  10463. //}}}</pre>
  10464. </div>
  10465. <div title="Template.Config" creator="pmario" modifier="pmario" created="201102072057" modified="201102072313" tags="mainMenu template" server.title="Template.Config" server.page.revision="245746" server.etag="&quot;fancybox_public/Template.Config/245746;38557a300c7db6bf205b78f536236444a956e37a&quot;" server.workspace="bags/fancybox_public" server.type="tiddlyweb" server.host="http://fancybox.tiddlyspace.com/" server.recipe="fancybox_private" server.bag="fancybox_public" server.permissions="read, write, create, delete" server.content-type="" _hash="2501f8f1e0f0d27c2b2d9c194f074751d24e4a93">
  10466. <pre>!Info
  10467. This tiddler contains the default values, that can be changed to configure the jQuery.fancybox() library function. FancyBoxPlugin reads the values from TW slices. Every parameters needs to be a valid slice! See the [[About]] for the examples.
  10468. The structure is:
  10469. {{{
  10470. parameterName: value
  10471. // comment the above value
  10472. }}}
  10473. //{{{
  10474. padding: 10
  10475. // Space between FancyBox wrapper and content
  10476. margin: 20
  10477. // Space between viewport and FancyBox wrapper
  10478. opacity: false
  10479. // When true, transparency of content is changed for elastic transitions
  10480. modal: false
  10481. // When true, 'overlayShow' is set to 'true' and 'hideOnOverlayClick', 'hideOnContentClick', 'enableEscapeButton', 'showCloseButton' are set to 'false'
  10482. cyclic: false
  10483. // When true, galleries will be cyclic, allowing you to keep pressing next/back.
  10484. scrolling: auto
  10485. // Set the overflow CSS property to create or hide scrollbars. Can be set to 'auto', 'yes', or 'no'
  10486. width: 560
  10487. height: 340
  10488. // Width for content types 'iframe' and 'swf'. Also set for inline content if 'autoDimensions' is set to 'false'
  10489. // Height for content types 'iframe' and 'swf'. Also set for inline content if 'autoDimensions' is set to 'false'
  10490. autoScale: true
  10491. // If true, FancyBox is scaled to fit in viewport
  10492. autoDimensions: true
  10493. // For inline and ajax views, resizes the view to the element recieves. Make sure it has dimensions otherwise this will give unexpected results
  10494. centerOnScroll: false
  10495. // When true, FancyBox is centered while scrolling page
  10496. hideOnOverlayClick: true
  10497. // Toggle if clicking the overlay should close FancyBox
  10498. hideOnContentClick: false
  10499. // Toggle if clicking the content should close FancyBox
  10500. overlayShow: true
  10501. // Toggle overlay
  10502. overlayOpacity: 0.3
  10503. // Opacity of the overlay (from 0 to 1; default - 0.3)
  10504. overlayColor: #667
  10505. // Color of the overlay
  10506. titleShow: true
  10507. // Toggle title
  10508. titlePosition: outside
  10509. // The position of title. Can be set to 'outside', 'inside' or 'over'
  10510. transitionIn: fade
  10511. transitionOut: fade
  10512. // The transition type. Can be set to 'elastic', 'fade' or 'none'
  10513. speedIn: 300
  10514. speedOut: 300
  10515. // Speed of the fade and elastic transitions, in milliseconds
  10516. changeSpeed: 300
  10517. // Speed of resizing when changing gallery items, in milliseconds
  10518. changeFade: fast
  10519. // Speed of the content fading while changing gallery items
  10520. easingIn: fast
  10521. easingOut: swing
  10522. // Easing used for elastic animations
  10523. showCloseButton: true
  10524. // Toggle close button
  10525. showNavArrows: true
  10526. // Toggle navigation arrows
  10527. enableEscapeButton: true
  10528. // Toggle if pressing Esc button closes FancyBox
  10529. //}}}</pre>
  10530. </div>
  10531. <div title="Template.Config.FancyBox" creator="fancybox" modifier="pmario" created="201101211613" modified="201102072053" tags="excludeLists excludeMissing excludeSearch" server.title="Template.Config.FancyBox" server.page.revision="245574" server.etag="&quot;fancybox_public/Template.Config