http://www.icsharpcode.net/OpenSource/SD/\n\nIDE e Compilador VB.NET, C# e Boo. Interessante e prático, mas só pra Windows.
Blog ou Wiki?\n\nVou procurar manter ambos com coisas novas, afinal, são pra funções distintas.\n\n[[Supere-se!|http://supere.tiddlyspot.com/]]\nhttp://supere.tiddlyspot.com/\n\n[[Blog Binho|https://leitao.redirectme.net/?q=blog/fabio_leitao]]:\nhttps://leitao.redirectme.net/?q=blog/fabio_leitao\n{{center{{{fine{{{floatleft{[[« previous|6 September 2006]]}}}{{floatright{[[next »|08 September 2006]]}}} }}}}}}
Estou tentando configurar agora pra Português do Brasil usando o BrasilLingo que encontrei no [[Colibri|http://colibri.noads.biz/]], mas ainda não consegui aplicar\n\nFuncionou, mas infelizmente apenas para arquivo local.\n\nEle inadvertidamente atrapalha as funções do TiddlySpot como upload, por exemplo.\n\nMas vou estudar como deveria ser para testar se consigo arrumar.\n{{center{{{fine{{{floatleft{[[« previous|07 September 2006]]}}}{{floatright{[[next »|09 September 2006]]}}} }}}}}}
Ok, consegui arrumar bem o menu lateral.\n\nMostrei para o Nando hoje, mais como um preview... segunda mostro onde cheguei.\n\nEsse site está com algumas funções do [[MPTW]]. Acho que está bom.\n\nDivulguei também a [[segregação de conteúdo]] no MeuBlog.\n\nAproveitem e vejam MeuDesktopAtual.\n{{center{{{fine{{{floatleft{[[« previous|08 September 2006]]}}}{{floatright{[[next »|10 September 2006]]}}} }}}}}}
Rearrumei o site um pouco, incluindo mais informações úteis e melhorando a [[Navegaçao]].\n\nAndei lendo muito sobre TiddlyWiki e acabei esbarrando no site [[Things that suck|http://danielbaird.com/thingsthatsuck/]] do [[David Baird|http://danielbaird.com/thingsthatsuck/]], o criador do [[MPTW]] e do Tiddlyspot.\n\nO que me lembrou de visitar o [[Sysinternals]] e o blog do [[Mark|http://blogs.technet.com/markrussinovich/]].\n\nAmbos eu considero gênios... sério.\n\nDêem uma lida com calma quando tiverem tempo.\n\nPor falar em tempo, [[GTD]] é muito legal.\n\nEstava precisando incluir um HD no meu servidor Linux em casa, possivelmente como {{{/home}}}. Talvez meu site fique fora do ar algumas horas. Odeio ficar sem internet. Pra que serve computador sem internet mesmo?\n{{center{{{fine{{{floatleft{[[« previous|09 September 2006]]}}}{{floatright{[[next »|11 September 2006]]}}} }}}}}}
A saga continua:\n\nTiddlyWiki é muito legal pro que é muito bom, mas não tem como gerenciar muitplos usuários, e nem pretende. \n\nAssim como o [[Drupal]] é perfeito pro que foi desenvolvido. Se não fosse um [[CMS]] bom, não teriam sido o grande finalista no [[Packt's Open Source CMS|http://www.packtpub.com/article/final_five_announced]].\n\nMas tenho que dizer, adorei lidar com o [[Joomla]], outro finalista. Vale a pena ficar de olho.\n\n{{center{{{fine{{{floatleft{[[« previous|10 September 2006]]}}}{{floatright{[[next »|12 September 2006]]}}} }}}}}}
Ainda sobre CMS:\n\nHoje testei o [[e107]] e achei tão fácil de instalar quanto o [[Joomla]], sendo que a instalação da informações mais úteis pra te ajudar a instalar, e o site é menos burocrático. Fantástico. Alias, todos os [[finalistas|http://www.packtpub.com/article/final_five_announced]] são espetaculares.\n\nVamos ver se consigo usar o Xoomps ainda hoje.\n\n{{center{{{fine{{{floatleft{[[« previous|11 September 2006]]}}}{{floatright{[[next »|13 September 2006]]}}} }}}}}}
Hum, hoje tive que experimentar na marra um coletor de Inventário chamado [[OCS Inventory NG]].\n\nJá havia instalado uma versão bem antiga na rede do escritório, mas não era muito funcional, e vinha causando problema. Mas nesta adimito que parece que acertaram a mão. Servidor para Windows ou Linux, [[XAMPP]]. Agentes para Windows (binário) ou Linux (Perl). Muito leve, prático.. ainda não sei tirar relatórios complexos mas promete. Deixa passa rmais ums dias.\n\nDe quebra ainda dei uma olhada num software parceiro chamado [[GLPI]] de gerência de helpdesk, knowledge base, planejamentos e controles de todos os materiais de informtática. Não usaria no escritório pois já temos o [[Tasker|http://www.tasker.com.br/index.htm]], que é mais voltado para gerencia de alocação de tempo durante projetos e atendimentos.\n{{center{{{fine{{{floatleft{[[« previous|12 September 2006]]}}}{{floatright{[[next »|16 September 2006]]}}} }}}}}}
Tinha algo muito estranho com Tiddlyspot, não consegui salvar as ultimas alterações dia 13.\n\nHoje parece melhor, portanto vou escrever oque pretendia anteriormente.\n\nIe7 e Firefox2 estão aí, e na melhor das hipóteses tive resultados conflitantes, misto de amor e ódio.\n\nIe7 finalmente tem navegação por abas, e um ótimo sistema anti-pishing (até onde pude testar), mas infelizmente não funcionou em metade dos computadores que experimentei a versão final (com Genuine Windwos XP SP2)\n\nFirefox 2 parece mais rapido, muitas extençoes foram incorporadas, mas outras simplesmente não funcionam. O que achei de mais estranho foi o fato de não poder escolher o local do de salvar os downloads na configuração padão.\n\nTenho que experimentar mais ambos para sentir onde querem chegar.\n\nHoje estive num cliente para limpar a máquna dele e mais uma vez acredito que um Windows bem cuidado pode ser tão bom quanto qualquer [[OS]], mas ao mesmo tempo tenho pra mim que se fizer de qualquer maneira, não se preocupar em atualizar, scanear de quando em vez, vai tudo pra cucuia.\n\nDepois de Scanear com várias ferramentas (Savce10.1, Xoftspy4.22, Spybot1.4, Spyterminator1.5, [[Autorus|Sysinternals]]... entre outros menos importantes) tive que corrigeir em cerca de 5 horas mais de 370 contaminação, e mais de 400 danos em registro. E de mais critico, nem tinha SP2 instalado.\n\n{{center{{{fine{{{floatleft{[[« previous|30 October 2006]]}}}{{floatright{[[next »|9 March 2007]]}}} }}}}}}
Esse eu já vinha usando a algum tempo, mas apesar do [[ProgeCAD|ProgeCAD LT 2006]] não ser OpenSource, é grátis (em determinadas condições), então o custo beneficio é imbatível.\n\nÉ um CAD completo mesmo, trabalha com arquivos DWG mesmo, e pouquíssimas funções do ~AutoCAD original farão falta. \n\nE com certeza é melhor que usar uma cópia pirata do programa comercial. Em meses tive umas duas experiências do que me pareceu ser má gerência de memória, mas se resolveu fechando o arquivo e abrindo novamente.\n\nVocê pode configurar na instalação apra ter a aparência do ACAD ou do ~IntelliCAD. Eu prefiro o primeiro. E vem com uma coleção enorme de blocos Ale (CharityWare).\n\n{{center{{{fine{{{floatleft{[[« previous|13 September 2006]]}}}{{floatright{[[next »|20 September 2006]]}}} }}}}}}
Nossa, muito tempo sem escrever no blog, apesar de vir acompanhando alguns software e aumentando o OpenSource sempre que posso.\n\nEstive muito ocupado, acontece.\n\nMas finalmente tenho um comentário interessante para postar.\n\nInstalei numa [[Ubuntu]] ~JeOS uma MediaWiki no escritório para uso interno (por enquanto) e o pessoal adorou.\n\nDeu um pouco de trabalho para ajustar exatamente como queria (email, fórum, etc.) mas valeu mais a pena do que podia ter imaginado no inicio.\n\nEm tempo, [[bzr|Bazaar]] é uma maravilha e meu maior companheiro trabalhando com o etckeeper.\n{{center{{{fine{{{floatleft{[[« previous|24 May 2007]]}}}{{floatright{[[next »|23 June 2010]]}}} }}}}}}
Hoje encontrei outro jogo Flash muito viciente na Web.\n\nDepois do LineRider, hoje já um clássico, que tal sentar a porrada num ciclista com um taco de baseball pra ver até onde ele voa se estabacando?\n\nEsse é o resumo do DangerourDaveAndBrutalBob.\n\nMeu récorde pessoal é 1152,8m, e encontrei um video no YouTube com 1414,9m.\n\nE até que é relaxante de tão simples.\n{{center{{{fine{{{floatleft{[[« previous|29 March 2007]]}}}{{floatright{[[next »|24 May 2007]]}}} }}}}}}
{{center{{{fine{{{floatleft{[[« previous|24 May 2007]]}}}{{floatright{[[next »|Último]]}}} }}}}}}
Hoje partir para instalação de um servidor [[Windows 2003|OS]] ainda pode ser irritante. Não que o sistema em si seja ruim, e não é, mas pode ser desnecessariamente complicado.\n\nE olha que comecei com um disco de boot especial do meu servidor [[Dell|o que há de melhor]], que obviamente conhece tudo da máquina, inclusive pode ajustar as configurações de RAID da máquina, e já recebe as informações de rede, domínio e licença que você pretende usar. Em certo ponto ele pede pra trocar pelo disco do Windows, no meu caso foi um Enterprise Server, e segue desasistido até o fim.\n\nAjuda muito, mas uma vez //"pronto"//, partimos para a infinidade de ''updates'' e service patches, AntiVirus... Amanhã, se já tiver acabado de atualizar tudo (quem sabe?) continuo com a instalação do Exchange.\n\nNão significa que se estivesse usando Linux (como normalmente uso Ubuntu) ou outro [[OS]] não teria que atualizar tudo também. Mas, diferente dos demais, o Windows parece ficar imprestável sem as atualizações. Devia ter uma maneira menos enfadonha de obter um resultado prático.\n{{center{{{fine{{{floatleft{[[« previous|16 September 2006]]}}}{{floatright{[[next »|21 September 2006]]}}} }}}}}}
Arquivo com entradas de Setembro de 2006.
Arquivo com entradas de Outubro de 2006.
Arquivo com entradas de Novembro de 2006.
Arquivo com entradas de Março de 2007.
Arquivo com entradas de Maio de 2007
Arquivo com entradas de Novembro de 2006.
Arquivo com entradas de Junho de 2010.
Outra coisa magnifica que esbarrei sem querer. A [[Borland|http://www.borland.com]] relançou a coleção de ferramentas de programação [[Turbo|http://www.turboexplorer.com/]] para Windows, inclusive em versão gratuita, supostamente para hobistas. Mas como compiladores completos (Delphi, C++, Assembler, C# e .NET) podem gerar programas de nivel comercial facilmente.\n\nNa versão gratuita parece não ter como incluir módulos e componentes novos e não tem compilador de shell (somente na IDE), mesmo assim, vem com muita coisa legal... ou você escreve o que precisar e pronto. Assim para fazer relatórios você precisaria compilar com o [[FreeReport|http://freereport.sourceforge.net/en/]], o que sinceramente é moleza.\n\nAproveitem a oportunidade.\n\nMas para quem já tem em mente uma solução mais ''//pro//'' tem o [[Lazarus|Lazarus FreePascal]] que é bem Delphi-like, compilando para Windows, Linux, ~MacOSX, BSD e Solaris (e faz relatórios, sem o maldito BDE) ou você ainda pode experimentar o [[#Develop]] que é muito bom pra VB.NET, C# e Boo. Ambos em OpenSource.\n\nPara Linux, achei brilhante a [[Anjuta|http://www.anjuta.org]]. Uma IDE considerada por muitos melhor que as Visual da MS ou Delphi/Builder da Borland.\n\nQuer mais moleza? Mais fácil que isso? Compra o Kit5 no Shoptime e não me pertube.\n{{center{{{fine{{{floatleft{[[« previous|20 September 2006]]}}}{{floatright{[[next »|26 September 2006]]}}} }}}}}}
Tenho de tentar voltar a escrever aqui, sinto falta. Mas em minha defesa, o ano passado foi uma correria só. \n\nSaí da APPI, e acabei fundando minha própria empresa de consultoria, chamada [[WINGS|http://portal.wingscg.com:4000/]].\n\nAtualmente trabalho com aviação. Vamos tentando de tudo para ganhar a vida, quem sabe o que pode vir por aí?\n{{center{{{fine{{{floatleft{[[« previous|18 April 2009]]}}}{{floatright{[[next »|24 June 2010]]}}} }}}}}}
Google Web Tools rules !!!\n\nNão é novidade mas cada vez mais prático e mais usável.\n\nEmail, Agenda, Documentos, Planilhas, Fotos, Earth... não sei qual a melhor.\n\nAcabo de criar e publicar uma planilha pra documentar um evento com o pessoal. :)\nhttp://spreadsheets.google.com/pub?key=pQM3var7WFdc8doWCrkQ6aQ\n\nAlguém imagina o que vem por aih?\n{{center{{{fine{{{floatleft{[[« previous|18 May 2007]]}}}{{floatright{[[next »|18 April 2009]]}}} }}}}}}
Várias ferramentas de diagnóstico depois, e nenhum reparo em vista, desisti e apaguei tudo.\n\nSei que é preciso [[Paciencia]] para reinstalar tudo no computador, mas já quase sem nenhuma, até que terminei satisfeito com a reconstrução do meu.\n{{center{{{fine{{{floatleft{[[« previous|21 September 2006]]}}}{{floatright{[[next »|27 October 2006]]}}} }}}}}}
[[Ubuntu|http://www.ubuntu.com]] 6.10 Edgy acaba de ser lançado.\n\nEle veio com várias atualizações das aplicações principais ([[Firefox]] 2.0, por exemplo) e algumas mudanças no sistema em si (UpStart no lugar do System V Init).\n\nEm diversos sites li recomendações de quem havia completado o upgrade desde a versão beta sem problemas, e salvo se você precisasse do LTS (como na versão 6.06 Dapper) valeria a pena a atualização. Após um simples comando no meu bash [[Laptop|laptop bem fraquinho]]: gksu "update-manager -c" abriu uma janela no Gnome me avisando que podiamos começar o dist-upgrade.\n\nRapidamente iniciou-se o download (que durou a noite inteira).\n\nPela manhã mandei aplicar os pacotes baixados... alguns haviam sido removidos (nada de mais, apenas o que já sabia ter sido substituido) e tentei o primeiro boot.\n\nPerda total.... o micro não liga mais nem por decreto... nem chega no shell do bash... nem mostra nada... freeze up absoluto... um verdadeiro+++^[upgrade nightmare|Super explicação]Não foi só comigo. Vários.+++^7em^[sites|mais][[SlashDot|http://linux.slashdot.org/article.pl?sid=06/10/28/239258]] [[ForumUbuntu|http://www.ubuntuforums.org/showthread.php?t=285446]] === têm reportado problemas dos usários. Ao mesmo tempo que alguns não tiveram problema algum.===.\n\nAparentemente a única salvação será tentar uma instalação limpa do Edgy, e se não der certo (caso meu [[Laptop|laptop bem fraquinho]] não esteja mais na HCL) volto pro Dapper e aguardo o lançamento do 7.04.\n{{center{{{fine{{{floatleft{[[« previous|26 September 2006]]}}}{{floatright{[[next »|28 October 2006]]}}} }}}}}}\n
Cada versão do [[MSN]] a Microsoft parece conseguir deixar mais lento e pesado. Se não me engano, foi justamente por isso que deixamos de usar ICQ.\n\nCom isso em mente, mas mantendo toda a compatibilidade, Álvaro criou inicialmente para o Linux, mas já portabilizado para o Windows, um cliente leve: [[aMSN]]\n{{center{{{fine{{{floatleft{[[« previous|27 October 2006]]}}}{{floatright{[[next »|30 October 2006]]}}} }}}}}}
Terminei de atualizar e arrumar o Ubuntu Feisty 7.04, ainda beta, no meu [[laptop bem fraquinho]].\n\nExcelente, tudo funciona, inclisive a placa WiFi que nunca tinha rodado fora do Windows.\n\nAgora, nem tudo são flores... tentei atualizar o Ubuntu Dapper 6.06 LTS do escritório para Edgy 6.10 e travou em várias dependências do X.org, portanto nada feito.\n\n{{center{{{fine{{{floatleft{[[« previous|9 March 2007]]}}}{{floatright{[[next »|18 May 2007]]}}} }}}}}}
Quem nunca precisou deletar um arquivo e se arrependeu? Quem disse que ele continuava na lixeira quando voce foi procurar? Será que enviei mesmo para a lixeira?\n\nPara resolver, nada melhor que nunca perder o arquivo. Da [[Sysinternals|www.sysinternals.com]] descobri o [[Fundelete]]. Esse programa subtitui a lixeira do Windows interceptando todo o qualquer arquivo que seria deletado, por bem ou por mal, mesmo que seja um programa limpando seu proprio cache. Pode ser confuso para alguns, mas com certeza é seguro.\n\nAgora se você já perdeu o arquivo e ainda não tinha o Fundelete NÂO ESCREVA MAIS NADA NO DISCO pois pode sobreescrever o que foi deletado. Use a partir da rede, de outro disco, mesmo que de um disquete, o [[Restoration]].\n\nE quem nunca tentou deletar um arquivo pra valer só pra descobrir um freeware que consegue recuperar?\n\nPra isso tambem tem ferramentas. Tenho usado o [[Eraser]] e tem funcionado muito bem. Cuidado para não apagar sem querer pois não tem volta, nem mesmo com o [[Restoration]].\n{{center{{{fine{{{floatleft{[[« previous|28 October 2006]]}}}{{floatright{[[next »|15 November 2006]]}}} }}}}}}
OK, acredito estar ficando mais //hardcore// com a idade.\n\nNão satisfeito em manter no mesmo notebook um HD configurado para WindowsXP SP2 e outro com [[Ubuntu]] (atualmente Edgy), arrumei outro e instalei FreeBSD 6.1 (na verdade, estou experimentando a versão PC-BSD, que tem um sistema de instalacoes de pacotes bem interessante: PBI).\n\nNão tem as últimas versões de alguns programas, como [[BrOpenOffice|OpenOffice.org]], ainda, mas achei até o Adobe PhotoShop 7.0 (rodando em Wine) que instala com um duplo //click// (é comercial, precisa do serial válido para se registrar e funcionar).\n\nA configuração básica (instalção em GUI) foi muito fácil, apesar de eu pessoalmente não gostar muito de KDE (reparem que uso Ubuntu e não Kubuntu). Foi um passeio no parque para ajustar o login e atualizações criticas ou instalação de PBIs baixados so site repositório, ou mesmo configurar alguns sistemas fundamentais (como o firewall PF).\n\nAinda nada consegue ser tão fácil quanto apt-get (Debian e Ubuntu) para ajudar em instalções (dependências) e atualizações. Ainda não me entendi com os sistemas de Ports e os vários sistemas e base-de-dados de instalçoes e atualizações. Cada um parece ter uma idiocicrazia (tanto no shell quanto no GUI) e preciso experimentar e treinar mais antes de me sentir confortável.\n\nAgora, o bixo funcionando é miraculosamente leve e rápido. Muito bem documentado (FAQ, Handbook e man do FreeBSD). \n\nRecomendo aos bravos.\n{{center{{{fine{{{floatleft{[[« previous|15 November 2006]]}}}{{floatright{[[next »|29 March 2007]]}}} }}}}}}
Me chamo FabioLeitao.\n\nEu sou o mantenedor deste site baseado em TiddlyWiki <<version>>, e estou usando plugins diversos para conseguir os efeitos que você pode já ter percebido.\n\nTrabalhei na [[OnSite|http://www.onsite.com.br]] desde 1999, chegando a acumular as funções de Gerente de Projetos e Gerente de Suporte, depois na [[APPI|http://www.appi.com.br]] como Analista de Suporte interno e de clientes. Não sobrava muito tempo pra implementar tudo, mas me envolvo com coisas muito interessantes.\n\nHoje fundei minha própria empresa, [[WINGS|http://portal.wingscg.com:4000/]]. Muito mais correria que podia imaginar, mas também, tem sido muito mais ==estressante== interessante.\n\nEstudei Informática na [[UFRJ|http://www.ufrj.br]] e Telecom na [[UESA|http://www.estacio.br]], e fui certificado [[RCDD|http://www.bicsi.org/Content/Index.aspx?File=rcddoverview.htm]] da Bicsi.\n\nMoro na Tijuca, Rio de Janeiro, Brasil.
<<option chkGenerateAnRssFeed>> GenerateAnRssFeed\n<<option chkOpenInNewWindow>> OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> SaveEmptyTemplate\n<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close\n^^(override with Control or other modifier key)^^\n<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP\n<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time\n^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^\n<<option chkConfirmDelete>> ConfirmBeforeDeleting\nMaximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>\nFolder name for backup files: <<option txtBackupFolder>>\n!!!!Go to and search options:\n<<option chkRegExpSearch>> use regular expressions (text patterns)\n<<option chkCaseSensitiveSearch>> use case sensitive matching\n!!!!More options:\n*[[ReadOnly|ToggleReadOnly]] for the entire site.\n*<script label="show/hide left sidebar">\n var show=document.getElementById('mainMenu').style.display=='none';\n if (!show) {\n document.getElementById('mainMenu').style.display='none';\n var margin='1em';\n }\n else {\n document.getElementById('mainMenu').style.display='block';\n var margin=config.options.txtDisplayAreaLeftMargin?config.options.txtDisplayAreaLeftMargin:"";\n }\n place.innerHTML=(show?"&lt;&lt;&lt;":"&gt;&gt;&gt;"); // SET LINK TEXT\n place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n document.getElementById('displayArea').style.marginLeft=margin;\n config.options.chkShowLeftSidebar=show;\n saveOptionCookie('chkShowLeftSidebar');\n var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);\n return false;\n</script><script>\n if (config.options.chkShowLeftSidebar==undefined)\n config.options.chkShowLeftSidebar=true;\n if (!config.options.txtDisplayAreaLeftMargin||!config.options.txtDisplayAreaLeftMargin.length)\n config.options.txtDisplayAreaLeftMargin="12em";\n var show=config.options.chkShowLeftSidebar;\n document.getElementById('mainMenu').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginLeft=show?config.options.txtDisplayAreaLeftMargin:"1em";\n place.lastChild.innerHTML=(show?"&lt;&lt;&lt;":"&gt;&gt;&gt;"); // SET LINK TEXT\n place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n place.lastChild.style.fontWeight="normal";\n</script> Toggle sidebars presence.<script label="show/hide right sidebar">\n var show=document.getElementById('sidebar').style.display=='none';\n if (!show) {\n document.getElementById('sidebar').style.display='none';\n var margin='1em';\n }\n else {\n document.getElementById('sidebar').style.display='block';\n var margin=config.options.txtDisplayAreaRightMargin?config.options.txtDisplayAreaRightMargin:"";\n }\n place.innerHTML=(show?"&gt;&gt;&gt;":"&lt;&lt;&lt;"); // SET LINK TEXT\n place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n document.getElementById('displayArea').style.marginRight=margin;\n config.options.chkShowRightSidebar=show;\n saveOptionCookie('chkShowRightSidebar');\n var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);\n return false;\n</script><script>\n if (config.options.chkShowRightSidebar==undefined)\n config.options.chkShowRightSidebar=true;\n if (!config.options.txtDisplayAreaRightMargin||!config.options.txtDisplayAreaRightMargin.length)\n config.options.txtDisplayAreaRightMargin="17em";\n var show=config.options.chkShowRightSidebar;\n document.getElementById('sidebar').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginRight=show?config.options.txtDisplayAreaRightMargin:"1em";\n place.lastChild.innerHTML=(show?"&gt;&gt;&gt;":"&lt;&lt;&lt;"); // SET LINK TEXT\n place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n place.lastChild.style.fontWeight="normal";\n</script> \n\n
config.options.chkHttpReadOnly = false;\n
text/plain\n.txt .text .js .vbs .asp .cgi .pl\n----\ntext/html\n.htm .html .hta .htx .mht\n----\ntext/comma-separated-values\n.csv\n----\ntext/javascript\n.js\n----\ntext/css\n.css\n----\ntext/xml\n.xml .xsl .xslt\n----\nimage/gif\n.gif\n----\nimage/jpeg\n.jpg .jpe .jpeg\n----\nimage/png\n.png\n----\nimage/bmp\n.bmp\n----\nimage/tiff\n.tif .tiff\n----\naudio/basic\n.au .snd\n----\naudio/wav\n.wav\n----\naudio/x-pn-realaudio\n.ra .rm .ram\n----\naudio/x-midi\n.mid .midi\n----\naudio/mp3\n.mp3\n----\naudio/m3u\n.m3u\n----\nvideo/x-ms-asf\n.asf\n----\nvideo/avi\n.avi\n----\nvideo/mpeg\n.mpg .mpeg\n----\nvideo/quicktime\n.qt .mov .qtvr\n----\napplication/pdf\n.pdf\n----\napplication/rtf\n.rtf\n----\napplication/postscript\n.ai .eps .ps\n----\napplication/wordperfect\n.wpd\n----\napplication/mswrite\n.wri\n----\napplication/msexcel\n.xls .xls3 .xls4 .xls5 .xlw\n----\napplication/msword\n.doc\n----\napplication/mspowerpoint\n.ppt .pps\n----\napplication/x-director\n.swa\n----\napplication/x-shockwave-flash\n.swf\n----\napplication/x-zip-compressed\n.zip\n----\napplication/x-gzip\n.gz\n----\napplication/x-rar-compressed\n.rar\n----\napplication/octet-stream\n.com .exe .dll .ocx
/***\n''AttachFilePlugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#AttachFilePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nStore 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. Binary file content can be stored in three different locations:\n<<<\n#embedded in the attachment tiddler (encoded as base64)\n#on your filesystem (a 'local link' path/filename)\n#on a web server (a 'remote link' URL)\n<<<\nThe plugin creates an "attachment tiddler" for each file you attach. Regardless of where you store the binary content, your document can refer to the attachment tiddler rather than using a direct file or URL reference in your embedded image or external links, so that changing document locations will not require updating numerous tiddlers or copying files from one system to another.\n\n@@display:block;font-size:8pt;line-height:110%;Note: although you can edit an attachment tiddler, ''don't change any of the encoded content below the attachment header'', as it has been prepared for use in the rest of your document, and even changing a single character can make the attachment unusable. //If needed, you ''can'' edit the header information or even the MIME type declaration in the attachment data, but be very careful not to change any of the base64-encoded binary data.//@@\n!!!!!Inline interface (live)\n><<attach demoID>>\n!!!!!Usage\n<<<\nWhen you attach a file, a tiddler (tagged with<<tag attachment>>) is generated (using the source filename as the tiddler's title). The tiddler contains //''base64 text-encoded binary data''//, surrounded by {{{/%...%/}}} comment markers (so they are not visible when viewing the tiddler). The tiddler also includes summary details about the file: when it was attached, by whom, etc. and, if the attachment is an image file (jpg, gif, or png), the image is automatically displayed below the summary information.\n\nWith embedded data, your TW document can be completely self-contained...unfortunately, embedding just a few moderately-sized binary files using base64 text-encoding can dramatically increase the size of your document. To avoid this problem, you can create attachment tiddlers that define external local filesystem (file://) and/or remote web server (http://) 'reference' links, without embedding the binary data directly in the tiddler (i.e., uncheck "embed data" in the 'control panel').\n\nThese links provide an alternative source for the binary data: if embedded data is not found (or you are running on Internet Explorer, which does not currently support using embedded data), then the plugin tries the local filesystem reference. If a local file is not found, then the remote reference (if any) is used. This "fallback" approach also lets you 'virtualize' the external links in your document, so that you can access very large binary content such as PDFs, MP3's, and even *video* files, by using just a 'remote reference link' without embedding any data or downloading huge files to your hard disk.\n\nOf course, when you //do// download an attached file, the local copy will be used instead of accessing a remote server each time, thereby saving bandwidth and allowing you to 'go mobile' without having to edit any tiddlers to alter the link locations...\n\nLastly, though not completed (but nearly there), the plugin includes an integrated 'uploader' that will let you create a 'remote link' attachment tiddler AND transfer the local file to a remote server location in the same step!\n<<<\n!!!!!Syntax / Examples\n<<<\nTo embed attached files as images or link to them from other tiddlers, use the standard ~TiddlyWiki image syntax ({{{[img[tooltip|filename]]}}}), linked image syntax ({{{[img[tooltip|filename][tiddlername]]}}}) , or "external link" syntax ({{{[[text|URL]]}}}), replacing the filename or URL that is normally entered with the title of an attachment tiddler.\n\nembedded image data:\n>{{{[img[Meow|AttachFileSample]]}}}\n>[img[Meow|AttachFileSample]]\nembedded image data with link to larger remote image:\n>{{{[img[click for larger view|AttachFileSample][AttachFileSample2]]}}}\n>[img[click for larger view|AttachFileSample][AttachFileSample2]]\n'external' link to embedded image data:\n>{{{[[click to view attachment|AttachFileSample]]}}}\n>[[click to view attachment|AttachFileSample]]\n'external' link to remote image:\n>{{{[[click to view attachment|AttachFileSample2]]}}}\n>[[click to view attachment|AttachFileSample2]]\nregular ~TiddlyWiki links to attachment tiddlers:\n>{{{[[AttachFileSample]]}}} [[AttachFileSample]]\n>{{{[[AttachFileSample2]]}}} [[AttachFileSample2]]\n<<<\n!!!!!Defining MIME types and Server Scripts\n<<<\nWhen you select a source file, a ''[[MIME|http://en.wikipedia.org/wiki/MIME]]'' file type is automatically suggested, based on filename extension. The AttachFileMIMETypes tiddler defines the list of MIME types that will be recognized by the plugin. Each MIME type definition consists of exactly two lines of text: the official MIME type designator (e.g., "text/plain", "image/gif", etc.), and a space-separated list of file extensions associated with that type. List entries are separated by "----" (horizontal rules).\n\nTo upload files, a script must first be installed on a remote server so it can receive and store the files online. The AttachFileServerScripts tiddler defines the list of ''server scripts'' that will be available for you to select from when attaching and uploading a file. The list format is as described above for MIME types, except that the first line is simply the text that will appear in the ''server scripts'' droplist, while the second line is the fully-qualified URL for submitting files to that server (e.g., {{{http://www.xyz.com/path/to/cgi-bin/upload.cgi}}} or something similar).\n<<<\n!!!!!Known Limitations\n<<<\n* ''Internet Explorer does not support the use of //embedded// data for TW file attachments. However, you can still use the local/remote link definitions to create file attachments that are stored externally''\n## //while it is easy to read text files, reading binary files is not supported by IE's FileSystemObject (FSO) methods, and other file I/O techniques are subject to security barriers or require additional MS proprietary technologies (like ASP or VB) that make implementation more difficult.//\n## //IE does not support the data: URI scheme, and cannot render the embedded images or links. This would seem to be an insurmountable shortcoming in the browser. Let's hope it is added in the next version...//\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n* AttachFilePlugin (tagged with <<tag systemConfig>>)\n* AttachFilePluginFormatters ("distribution library") (tagged with <<tag systemConfig>>)\n* AttachFileSample and AttachFileSample2 //(sample attachment tiddler containing an image file)//\n* AttachFileMIMETypes //(defines known binary file types)//\n* AttachFileServerScripts //(remote upload server locations)//\n<<<\n!!!!!Revision History\n<<<\n''2006.07.24 [3.4.3]'' in prettyLink formatter, added check for isShadowTiddler() to fix problem where shadow links became external links.\n''2006.07.13 [3.4.2]'' in getAttachment(), fixed stripping of newlines so data: used in CSS will work\n''2006.05.21 [3.4.1]'' in getAttachment(), fixed substring() to extract data: URI (was losing last character, which broken rendering of SOME images)\n''2006.05.20 [3.4.0]'' hijack core getRecursiveTiddlerText() to support rendering attachments in stylesheets (e.g. {{{url([[AttachFileSample]])}}})\n''2006.05.20 [3.3.6]'' add "description" feature to easily include notes in attachment tiddler (you can always edit to add them later... but...)\n''2006.05.19 [3.3.5]'' add "attach as" feature to change default name for attachment tiddlers. Also, new optional param to specify tiddler name (disables editing)\n''2006.05.16 [3.3.0]'' completed XMLHttpRequest handling for GET or POST to configurable server scripts\n''2006.05.13 [3.2.0]'' added interface for ''upload'' feature. Major rewrite of code for clean object definitions. Major improvements in UI interaction and validation.\n''2006.05.09 [3.1.1]'' add wikifer support for using attachments in links from "linked image" syntax: {{{[img[tip|attachment1][attachment2]]}}}\n''2006.05.09 [3.1.0]'' lots of code changes: new options for attachments that use embedded data and/or links to external files (local or remote)\n''2006.05.03 [3.0.2]'' added {{{/%...%/}}} comments around attachment data to hide it when viewing attachment tiddler.\n''2006.02.05 [3.0.1]'' wrapped wikifier hijacks in initAttachmentFormatters() function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2005.12.27 [3.0.0]'' Update for TW2.0. Automatically add 'excludeMissing' tag to attachments\n''2005.12.16 [2.2.0]'' Dynamically create/remove attachPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.\n''2005.11.20 [2.1.0]'' added wikifier handler extensions for "image" and "prettyLink" to render tiddler attachments\n''2005.11.09 [2.0.0]'' begin port from old ELS Design plugin/adaptation hybrid based on ~TW1.2.33\n''2005.08.05 [1.1.0]'' moved CSS and HTML definitions into plugin code tiddler instead of using separate tiddlers\n''2005.07.27 [1.0.2]'' core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]'' added parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]'' Initial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // version\n//{{{\nversion.extensions.attach = {major: 3, minor: 4, revision: 3, date: new Date(2006,7,24)};\n//}}}\nconfig.macros.attach = {\n// // configuration\n//{{{\n hideUpload: false,\n//}}}\n// // lingo\n//{{{\n label: "attach file",\n tooltip: "Attach a file to this document",\n linkTooltip: "Attachment: ",\n\n scriptList: "AttachFileServerScripts",\n typeList: "AttachFileMIMETypes",\n\n titlePrompt: " enter tiddler title...",\n MIMEPrompt: "<option value=''>select MIME type...</option><option value='editlist'>[edit list...]</option>",\n localPrompt: " enter local path/filename...",\n URLPrompt: " enter remote URL...",\n scriptPrompt: "<option value=''>select server script...</option><option value='editlist'>[edit list...]</option>",\n targetPrompt: " enter remote path/filename...",\n\n tiddlerErr: "Please enter a tiddler title",\n sourceErr: "Please enter a source path/filename",\n storageErr: "Please select a storage method: embedded, local or remote",\n MIMEErr: "Unrecognized file format. Please select a MIME type",\n localErr: "Please enter a local path/filename",\n URLErr: "Please enter a remote URL",\n scriptErr: "Please select a server script",\n targetErr: "Please enter a remote target path/filename",\n notSupportedErr: "Sorry, this browser does not support embedded data.\snPlease uncheck 'embed data' and use a local and/or remote link instead.",\n\n sourceReport: "| source file|{{{%0}}}|\sn",\n nosourceReport: "| source file|//none//|\sn",\n dateReport: "| attached on|%0 by %1|\sn",\n notesReport: "| description|%0|\sn",\n dataReport: "| embedded data|[[%0|%0]] - {{{type=%1, size=%2 bytes, encoded=%3 bytes}}}|\sn",\n nodataReport: "| embedded data|//none//|\sn",\n localReport: "| local link|/%LOCAL_LINK%/[[%0|%1]]|\sn",\n nolocalReport: "| local link|//none//|\sn",\n URLReport: "| remote link|/%REMOTE_LINK%/[[%0|%0]]|\sn",\n noURLReport: "| remote link|//none//|\sn",\n\n uploadReport: "upload\sn<<<\sn__server script__\sn''%0''\sn{{{%1}}}\sn__remote path/filename__\sn{{{%2}}}\sn__transfer log__\sn%3/%RESULT%/\sn<<<\sn",\n\n imageReport: "image\sn<<<\snusage: {{{[img[tooltip|%0]] or [img[tooltip|%0][link]]}}}\sn[img[tooltip|%0]]\sn<<<\sn",\n dataBlock: "\sn/% DO NOT EDIT BELOW THIS POINT\sn---BEGIN_DATA---\sn%0;base64,\sn%1\sn---END_DATA---\sn%/",\n//}}}\n// // macro definition\n//{{{\n handler:\n function(place,macroName,params) {\n if (params && !params[0]) { createTiddlyButton(place,this.label,this.tooltip,this.toggleAttachPanel); return; }\n var id=params.shift();\n this.createAttachPanel(place,id+"_attachPanel",params);\n document.getElementById(id+"_attachPanel").style.position="static";\n document.getElementById(id+"_attachPanel").style.display="block";\n },\n//}}}\n//{{{\n createAttachPanel:\n function(place,panel_id,params) {\n if (!panel_id || !panel_id.length) var panel_id="_attachPanel";\n // remove existing panel (if any)\n var panel=document.getElementById(panel_id); if (panel) panel.parentNode.removeChild(panel);\n // set styles for this panel\n setStylesheet(this.css,"attachPanel");\n // create new panel\n var title=""; if (params && params[0]) title=params.shift();\n var types=this.MIMEPrompt+this.formatListOptions(store.getTiddlerText(this.typeList)); // get MIME types\n var scripts=this.scriptPrompt+this.formatListOptions(store.getTiddlerText(this.scriptList)); // get server scripts\n panel=createTiddlyElement(place,"span",panel_id,"attachPanel",null);\n var html=this.html.replace(/%id%/g,panel_id);\n html=html.replace(/%title%/g,title);\n html=html.replace(/%disabled%/g,title.length?"disabled":"");\n html=html.replace(/%types%/g,types);\n html=html.replace(/%scripts%/g,scripts);\n panel.innerHTML=html;\n return panel;\n },\n//}}}\n//{{{\n toggleAttachPanel:\n function (e) {\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("_attachPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=config.macros.attach.createAttachPanel(parent,"_attachPanel");\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n },\n//}}}\n//{{{\n formatListOptions:\n function(text,getparams) {\n if (!text || !text.trim().length) return "";\n // get server script list content from tiddler\n var parts=text.split("\sn----\sn");\n var out="";\n this.scriptParams=["","",""]; // first 3 list items: blank, prompt, editlist\n for (var p=0; p<parts.length; p++) {\n var lines=parts[p].split("\sn");\n var label=lines.shift(); // 1st line=display text\n var URL=lines.shift(); // 2nd line=item value\n var params=lines.join("\sn").replace(/<<<\sn/g,"").replace(/\sn<<</g,""); // extra lines=script params inside blockquotes\n this.scriptParams.push(params?params:"");\n out +='<option value="%1">%0</option>'.format([label,URL]);\n }\n return out;\n },\n//}}}\n// // interface definition\n//{{{\n css:\n ".attachPanel { display: none; position:absolute; z-index:10; width:35em; right:105%; top:0em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em; }\s\n .attachPanel form { display:inline;border:0;padding:0;margin:0; }\s\n .attachPanel select { width:99%;margin:0px;font-size:8pt;line-height:110%;}\s\n .attachPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n .attachPanel textarea { width:98%;margin:0px;height:2em;font-size:8pt;line-height:110%}\s\n .attachPanel table { width:100%;border:0;margin:0;padding:0;color:inherit; }\s\n .attachPanel tbody, .attachPanel tr, .attachPanel td { border:0;margin:0;padding:0;color:#000; }\s\n .attachPanel .box { border:1px solid black; padding:.3em; margin:.3em 0px; background:#f8f8f8; -moz-border-radius:5px; }\s\n .attachPanel .chk { width:auto;border:0; }\s\n .attachPanel .btn { width:auto; }\s\n .attachPanel .btn2 { width:49%; }\s\n ",\n//}}}\n//{{{\n html:\n '<form>\s\n attach from source file <input type="file" name="source" size=56 onChange="config.macros.attach.onChangeSource(this)">\s\n <div class="box">\s\n <table><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n embed data <input type=checkbox class=chk name="useData"\s\n onclick="if (!this.form.MIMEType.value.length)\s\n this.form.MIMEType.selectedIndex=this.checked?1:0; ">&nbsp;\s\n </td><td>\s\n <select size=1 name="MIMEType" \s\n onchange="this.title=this.value; if (this.value==\s'editlist\s')\s\n { this.selectedIndex=this.form.useData.checked?1:0; story.displayTiddler(null,config.macros.attach.typeList,2); return; }">\s\n <option value=""></option>\s\n %types%\s\n </select>\s\n </td></tr><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n local link <input type=checkbox class=chk name="useLocal"\s\n onclick="this.form.local.value=this.form.local.defaultValue=this.checked?config.macros.attach.localPrompt:\s'\s';">&nbsp;\s\n </td><td>\s\n <input type=text name="local" size=15 autocomplete=off value=""\s\n onchange="this.form.useLocal.checked=this.value.length" \s\n onkeyup="this.form.useLocal.checked=this.value.length" \s\n onfocus="if (!this.valuelength) this.value=config.macros.attach.localPrompt; this.select()">\s\n </td></tr><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n remote link <input type=checkbox class=chk name="useURL"\s\n onclick="this.form.URL.value=this.form.URL.defaultValue=this.checked?config.macros.attach.URLPrompt:\s'\s';\s\n config.macros.attach.toggleUploadControls(\s'%id%\s',this.checked);">&nbsp;\s\n </td><td>\s\n <input type=text name="URL" size=15 autocomplete=off value=""\s\n onfocus="if (!this.value.length) this.value=config.macros.attach.URLPrompt; this.select()"\s\n onchange="this.form.useURL.checked=this.value.length;\s\n config.macros.attach.toggleUploadControls(\s'%id%\s',this.value.length);"\s\n onkeyup="this.form.useURL.checked=this.value.length;\s\n config.macros.attach.toggleUploadControls(\s'%id%\s',this.value.length);">\s\n </td></tr><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n <div id="%id%_upcheck" style="display:none">\s\n upload file <input type=checkbox class=chk name="upload"\s\n onclick="this.form.uploadScript.selectedIndex=this.checked?1:0;\s\n this.form.uploadScript.title=\s'\s';\s\n this.form.uploadTarget.disabled=!this.checked;\s\n this.form.uploadTarget.value=this.form.uploadTarget.defaultValue=this.checked?config.macros.attach.targetPrompt:\s'\s';\s">&nbsp;\s\n </div>\s\n </td><td>\s\n <div id="%id%_uplist" style="display:none">\s\n <select size=1 name="uploadScript"\s\n onchange="this.title=this.value; if (this.value==\s'editlist\s')\s\n { this.selectedIndex=this.form.upload.checked?1:0; story.displayTiddler(null,config.macros.attach.scriptList,2); return; }\s\n this.form.upload.checked=this.value.length;\s\n if (!this.form.uploadTarget.value.length && this.value.length)\s\n this.form.uploadTarget.value=this.form.uploadTarget.defaultValue=config.macros.attach.targetPrompt;\s\n this.form.uploadTarget.disabled=!this.value.length;">\s\n <option value=""></option>\s\n %scripts%\s\n </select>\s\n </div>\s\n </td></tr><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n <div id="%id%_saveas" style="display:none">save as&nbsp;</div>\s\n </td><td>\s\n <input type=text name="uploadTarget" id="%id%_uptarget" size=15 autocomplete=off value="" disabled\s\n onfocus="if (!this.value.length) this.value=config.macros.attach.targetPrompt; this.select()" style="display:none">\s\n </td></tr></table>\s\n </div>\s\n <table><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n attach as&nbsp;\s\n </td><td colspan=2>\s\n <input type=text name="tiddlertitle" size=15 autocomplete=off value="%title%"\s\n onkeyup="if (!this.value.length) { this.value=config.macros.attach.titlePrompt; this.select(); }"\s\n onfocus="if (!this.value.length) this.value=config.macros.attach.titlePrompt; this.select()" %disabled%>\s\n </td></tr><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n description&nbsp;\s\n </td><td colspan=2>\s\n <input type=text name="notes" size=15 autocomplete=off>\s\n </td></tr><tr><td style="text-align:right;width:1%;white-space:nowrap">\s\n add tags&nbsp;\s\n </td><td>\s\n <input type=text name="tags" size=15 autocomplete=off value="" onfocus="this.select()">\s\n </td><td style="width:40%;text-align:right">\s\n <input type=button class=btn2 value="attach"\s\n onclick="config.macros.attach.onClickAttach(this)"><!--\s\n --><input type=button class=btn2 value="close"\s\n onclick="var panel=document.getElementById(\s'%id%\s'); if (panel) panel.parentNode.removeChild(panel);">\s\n </td></tr></table>\s\n </form>',\n//}}}\n// // control processing\n//{{{\n onChangeSource:\n function(here) {\n var form=here.form;\n var list=form.MIMEType;\n var theFilename = form.source.value;\n var theExtension = theFilename.substr(theFilename.lastIndexOf('.')).toLowerCase();\n for (var i=0; i<list.options.length; i++)\n if (list.options[i].value.indexOf(theExtension)!=-1) {\n list.selectedIndex = i;\n form.useData.checked = true;\n form.useLocal.checked = true;\n form.local.value = theFilename;\n break;\n }\n theFilename=theFilename.replace(/\s\s/g,"/"); // fixup: change \s to /\n if (!form.tiddlertitle.disabled)\n form.tiddlertitle.value=theFilename.substr(theFilename.lastIndexOf('/')+1); // get tiddlername from filename\n },\n//}}}\n//{{{\n toggleUploadControls:\n function(id,show) {\n if (config.macros.attach.hideUpload) return;\n document.getElementById(id+'_upcheck').style.display\n =document.getElementById(id+'_uplist').style.display\n =document.getElementById(id+'_saveas').style.display\n =document.getElementById(id+'_uptarget').style.display\n =show?'block':'none';\n },\n//}}}\n//{{{\n onClickAttach:\n function (here) {\n clearMessage();\n // get input values\n var form=here.form;\n var theDate=(new Date()).formatString(config.macros.timeline.dateFormat);\n var theSource = form.source.value!=form.source.defaultValue?form.source.value:"";\n var theTitle=form.tiddlertitle.value;\n var theLocal = form.local.value!=form.local.defaultValue?form.local.value:"";\n var theURL = form.URL.value!=form.URL.defaultValue?form.URL.value:"";\n var theNotes = form.notes.value;\n var theTags = "attachment excludeMissing "+form.tags.value;\n var useData=form.useData.checked;\n var useLocal=form.useLocal.checked;\n var useURL=form.useURL.checked;\n var upload=form.upload.checked;\n var theMIMEType = form.MIMEType.value.length?form.MIMEType.options[form.MIMEType.selectedIndex].text:"";\n // validate checkboxes and get filename\n if (useData||upload) {\n if (theSource.length) { if (!theLocation) var theLocation=theSource; }\n else { alert(this.sourceErr); form.source.focus(); return false; }\n }\n if (useLocal) {\n if (theLocal.length) { if (!theLocation) var theLocation = theLocal; }\n else { alert(this.localErr); form.local.focus(); return false; }\n }\n if (useURL) {\n if (theURL.length) { if (!theLocation) var theLocation = theURL; }\n else { alert(this.URLErr); form.URL.focus(); return false; }\n }\n if (!(useData||useLocal||useURL))\n { form.useData.focus(); alert(this.storageErr); return false; }\n if (!theLocation)\n { form.source.focus(); alert(this.sourceErr); return false; }\n if (!theTitle || !theTitle.trim().length || theTitle==this.titlePrompt)\n { form.tiddlertitle.focus(); alert(this.tiddlerErr); return false; }\n if (upload) {\n var theScript = form.uploadScript.value!=form.uploadScript.defaultValue?form.uploadScript.value:"";\n if (!theScript.length) { alert(this.scriptErr); form.uploadScript.focus(); return false; }\n var theServer = form.uploadScript.options[form.uploadScript.selectedIndex].text;\n var theParams = this.scriptParams[form.uploadScript.selectedIndex];\n var theTarget = form.uploadTarget.value!=form.uploadTarget.defaultValue?form.uploadTarget.value:"";\n if (!theTarget.length) { alert(this.targetErr); form.uploadTarget.focus(); return false; }\n }\n // if not already selected, determine MIME type based on filename extension (if any)\n if (!theMIMEType.length && theLocation.lastIndexOf('.')!=-1) {\n var theExt = theLocation.substr(theLocation.lastIndexOf('.')).toLowerCase();\n var theList=form.MIMEType;\n for (var i=0; i<theList.options.length; i++)\n if (theList.options[i].value.indexOf(theExt)!=-1)\n { var theMIMEType=theList.options[i].text; theList.selectedIndex=i; break; }\n }\n // encode the data\n if (useData) {\n if (!theMIMEType.length) {\n alert(this.MIMEErr);\n form.MIMEType.selectedIndex=1; form.MIMEType.focus();\n return false;\n }\n var theData = this.readFile(theSource); if (!theData) { alert(this.notSupportedErr); return false; }\n displayMessage('encoding '+theSource);\n var theEncoded = this.encodeBase64(theData);\n displayMessage('file size='+theData.length+' bytes, encoded size='+theEncoded.length+' bytes');\n }\n // upload the file\n if (upload) var uploadresult=this.uploadFile(theTitle,theSource,theMIMEType,theServer,theScript,theParams,theTarget);\n // generate tiddler and refresh\n var theText = "";\n theText +=theSource.length?this.sourceReport.format([theSource]):this.nosourceReport;\n theText +=this.dateReport.format([theDate,config.options.txtUserName]);\n theText +=theNotes.length?this.notesReport.format([theNotes]):"";\n theText +=useData?this.dataReport.format([theTitle,theMIMEType,theData.length,theEncoded.length]):this.nodataReport;\n theText +=useLocal?this.localReport.format([theLocal,'file:///'+theLocal.replace(/\s\s/g,"/")]):this.nolocalReport;\n theText +=useURL?this.URLReport.format([theURL]):this.noURLReport;\n theText +=(theMIMEType.substr(0,5)=="image")?this.imageReport.format([theTitle]):"";\n theText +=upload?uploadresult:"";\n theText +=useData?this.dataBlock.format([theMIMEType,theEncoded]):"";\n store.saveTiddler(theTitle,theTitle,theText,config.options.txtUserName,new Date(),theTags);\n document.getElementById("attachPanel").style.display="none";\n story.displayTiddler(null,theTitle);\n story.refreshTiddler(theTitle,null,true);\n displayMessage('attached "'+theTitle+'"');\n return true;\n },\n//}}}\n// // base64 conversion\n//{{{\n encodeBase64:\n function (theData) {\n if (!theData) return null;\n // encode as base64\n var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";\n var out = ""; //This is the output\n var chr1, chr2, chr3 = ""; //These are the 3 bytes to be encoded\n var enc1, enc2, enc3, enc4 = ""; //These are the 4 encoded bytes\n for (var count=0,i=0; i<theData.length; )\n {\n chr1 = theData.charCodeAt(i++); //Grab the first byte\n chr2 = theData.charCodeAt(i++); //Grab the second byte\n chr3 = theData.charCodeAt(i++); //Grab the third byte\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n if (isNaN(chr2))\n enc3 = enc4 = 64;\n else if (isNaN(chr3))\n enc4 = 64;\n out += keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);\n chr1 = chr2 = chr3 = "";\n enc1 = enc2 = enc3 = enc4 = "";\n count+=4; if (count>60) { out+='\sn'; count=0; } // add line break every 60 chars for readability\n }\n return out;\n },\n//}}}\n// // I/O functions\n//{{{\n readFile:\n function(filePath) {\n if(!window.Components) { return(null); }\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\n file.initWithPath(filePath);\n if (!file.exists()) { alert("File not found: "+filePath); return(null); }\n var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);\n inputStream.init(file, 0x01, 00004, null);\n var bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);\n bInputStream.setInputStream(inputStream);\n return(bInputStream.readBytes(inputStream.available()));\n }\n catch(e) { alert("An error occured while attempting to attach\sn"+filePath+"\sn\sn" + e); }\n return(null);\n },\n//}}}\n//{{{\n writeFile:\n function(filepath,data) {\n // TBD: decode base64 and write data to specified local path/filename\n return(false);\n },\n//}}}\n//{{{\n uploadFile:\n function(title,source,MIMEType,server,URL,scriptparams,target) {\n displayMessage("begin upload: \s""+title+"\s"");\n if (URL==undefined || !URL.length)\n return this.uploadReport.format([server,URL,target,"error: missing script URL"]);\n var x; // XML object\n try {x = new XMLHttpRequest()}\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")}\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")}\n catch (e) { return this.uploadReport.format([server,URL,target,"error: could not create XMLHttpRequest object"]); }\n }\n }\n var starttime=new Date();\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n var endtime=new Date();\n var elapsed=(endtime-starttime+1)/1000;\n displayMessage("end upload: \s""+title+"\s" ("+elapsed+" seconds)");\n var response="\sn''"+endtime.formatString("DD MMM YYYY 0hh:0mm:0ss")+"'' - upload ended (elapsed="+elapsed+" seconds).\sn";\n; response+="status code="+x.status+"\snserver response:\sn{{{\sn"+x.responseText+"\sn}}}\sn";\n var tiddler=store.getTiddler(title);\n if (tiddler) {\n var marker="/%RESULT%/"; var pos=tiddler.text.indexOf(marker);\n if (pos!=-1) {\n tiddler.set(null,tiddler.text.substr(0,pos)+response+tiddler.text.substr(pos+marker.length));\n story.displayTiddler(null,title); story.refreshTiddler(title,null,true); store.setDirty(true);\n } \n }\n }\n }\n if ((document.location.protocol=="file:") && (typeof(netscape)!="undefined")) { // UniversalBrowserRead only works from a local file context\n try { netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')}\n catch (e) { displayMessage(e.description?e.description:e.toString()); }\n }\n try {\n var data=this.readFile(source);\n if (!data) return this.uploadReport.format([server,URL,target,"could not read local source file"]);\n scriptparams=scriptparams.replace(/%TARGET%/g,target).replace(/%TYPE%/g,MIMEType).replace(/%SIZE%/g,data.length);\n if (scriptparams.indexOf("\sn")==-1) { // single-line params=GET\n x.open("GET",URL,true);\n scriptparams=scriptparams.replace(/%DATA%/g,encodeURIComponent(data));\n x.setRequestHeader('Content-type','application/x-www-form-urlencoded');\n }\n else { // multi-line params=POST\n x.open("POST",URL,true);\n var boundary="----------AttachFilePluginDataBoundary----------";\n scriptparams="\sn"+scriptparams.replace(/%BOUNDARY%/g,boundary).replace(/%DATA%/g,data)+"\sn";\n x.setRequestHeader('Content-Length',scriptparams.length);\n x.setRequestHeader('Content-Type','multipart/form-data; boundary='+boundary);\n }\n x.send(scriptparams);\n // DEBUG alert("params\sn-----\sn"+scriptparams+"\sn-----\sn"); // wffl DEBUG\n }\n catch (e) { displayMessage(e.description?e.description:e.toString()); }\n var response="''"+starttime.formatString("DD MMM YYYY 0hh:0mm:0ss")+"'' - upload started...";\n return this.uploadReport.format([server,URL,target,response]);\n }\n};\n//}}}\n\n/***\n!!!!!Formatters\n|NOTE: These functions are also defined separately in a small, "run-time library" plugin: AttachFilePluginFormatters, which provides "stand-alone" processing for //rendering// attachment tiddlers, but does not include the AttachTiddlers control panel and supporting functions. To reduce your document size, you can include AttachFilePluginFormatters ''instead of'' AttachFilePlugin when distributing documents that contain attachments, as long you don't intend to create any new attachment tiddlers to your document.|\n\n''Extends wikify() formatters to process attachment tiddler references''\n* embedded images: {{{[img[tooltip|image]]}}}\n* linked embedded images: {{{[img[tooltip|image][link]]}}}\n* external/"pretty" links: {{{[[label|link]]}}}\n\n***/\n//{{{\nif (config.macros.attach==undefined) config.macros.attach= { };\n//}}}\n//{{{\nif (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {\n var tiddler = store.getTiddler(title);\n if (tiddler==undefined || tiddler.tags==undefined) return false;\n return (tiddler.tags.find("attachment")!=null);\n}\n//}}}\n//{{{\nif (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {\n var text = store.getTiddlerText(title);\n var result=""; var pos=0; var endpos=0;\n\n var startmarker="---BEGIN_DATA---\sn";\n var endmarker="\sn---END_DATA---";\n if (!config.browser.isIE && (pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1) {\n var out="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\sn/g,''); // strip embedded newlines\n return out;\n }\n if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1) // fallback to local link\n return text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos)); \n if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1) // fallback to remote URL\n return text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));\n\n // fallback for backward-compatibility:\n // before 3.2.0 encoded datablock was located between ----'s instead of using embedded 'keyword markers' in the tiddler content\n var data=text.split('\sn----\sn');\n if (!config.browser.isIE && data[1] && data[1].length) // NOTE: IE does not support the "data:" URI scheme\n return "data:"+data[1].replace(/\s\sn/g,'');\n\n return "";\n}\n//}}}\n//{{{\nif (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {\n if (this.initialized) return;\n // find the formatter for "image" and replace the handler\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link\n {\n var e = w.output;\n if(lookaheadMatch[5])\n {\n if(store.tiddlerExists(lookaheadMatch[5]))\n // ELS: ADDED\n if (config.macros.attach.isAttachment(lookaheadMatch[5]))\n {\n e = createExternalLink(w.output,lookaheadMatch[5]);\n e.href=config.macros.attach.getAttachment(lookaheadMatch[5]);\n e.title = config.macros.attach.linkTooltip + lookaheadMatch[5];\n }\n else\n // ELS: END\n e = createTiddlyLink(w.output,lookaheadMatch[5],false);\n else\n e = createExternalLink(w.output,lookaheadMatch[5]);\n }\n var img = createTiddlyElement(e,"img");\n if(lookaheadMatch[1])\n img.align = "left";\n else if(lookaheadMatch[2])\n img.align = "right";\n if(lookaheadMatch[3])\n img.title = lookaheadMatch[3];\n img.src = lookaheadMatch[4];\n // ELS: ADDED\n if (config.macros.attach.isAttachment(lookaheadMatch[4]))\n img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);\n // ELS: END\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n//}}}\n//{{{\n // find the formatter for "prettyLink" and replace the handler\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[2])\n { // Simple bracketted link\n var link = createTiddlyLink(w.output,lookaheadMatch[1],false);\n w.outputText(link,w.nextMatch,w.nextMatch + lookaheadMatch[1].length);\n w.nextMatch += lookaheadMatch[1].length + 2;\n }\n else if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[3])\n { // Pretty bracketted link\n var e;\n if(store.tiddlerExists(lookaheadMatch[4]) || store.isShadowTiddler(lookaheadMatch[4]))\n // ELS: ADDED\n if (config.macros.attach.isAttachment(lookaheadMatch[4]))\n {\n e = createExternalLink(w.output,lookaheadMatch[4]);\n e.href=config.macros.attach.getAttachment(lookaheadMatch[4]);\n e.title = config.macros.attach.linkTooltip + lookaheadMatch[4];\n }\n else\n // ELS: END\n e = createTiddlyLink(w.output,lookaheadMatch[4],false);\n else\n e = createExternalLink(w.output,lookaheadMatch[4]);\n w.outputText(e,w.nextMatch,w.nextMatch + lookaheadMatch[1].length);\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n this.initialized=true;\n}\n//}}}\n//{{{\nconfig.macros.attach.init_formatters(); // load time init\n//}}}\n//{{{\nif (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {\n TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;\n TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {\n return config.macros.attach.isAttachment(title)?\n config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText(title,defaultText,depth);\n }\n}\n//}}}
/***\n''AttachFilePluginFormatters for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#AttachFilePluginFormatters\nsee also: http://www.TiddlyTools.com/#AttachFilePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nYou can include this small //''run time library''// in your documents to render ''attachment tiddlers'' created by the AttachFilePlugin. Attachment tiddlers are tagged with<<tag attachment>>and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that can be stored directly as base64 text-encoded data or loaded from external files stored on a local filesystem or remote web server.\n\nThis plugin extends the behavior of the following TiddlyWiki core "wikify()" formatters:\n* embedded images: {{{[img[tooltip|image]]}}}\n* linked embedded images: {{{[img[tooltip|image][link]]}}}\n* external/"pretty" links: {{{[[label|link]]}}}\n\n''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''\n!!!!!Revision History\n<<<\n''2006.07.24 [3.4.3.0]'' sync with AttachFilePlugin v3.4.3\n''2006.07.13 [3.4.2.0]'' sync with AttachFilePlugin v3.4.2\n''2006.06.15 [3.4.1.0]'' sync with AttachFilePlugin v3.4.1\n''2006.05.20 [3.4.0.0]'' sync with AttachFilePlugin v3.4.0\n''2006.05.13 [3.2.0.0]'' created from AttachFilePlugin v3.2.0\n<<<\n!!!!!Code\n***/\n//{{{\nif (config.macros.attach==undefined) config.macros.attach= { };\n//}}}\n//{{{\nif (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {\n var tiddler = store.getTiddler(title);\n if (tiddler==undefined || tiddler.tags==undefined) return false;\n return (tiddler.tags.find("attachment")!=null);\n}\n//}}}\n//{{{\nif (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {\n var text = store.getTiddlerText(title);\n var result=""; var pos=0; var endpos=0;\n\n var startmarker="---BEGIN_DATA---\sn";\n var endmarker="\sn---END_DATA---";\n if (!config.browser.isIE && (pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1) {\n var out="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\sn/g,''); // strip embedded newlines\n return out;\n }\n if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1) // fallback to local link\n return text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos)); \n if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1) // fallback to remote URL\n return text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));\n\n // fallback for backward-compatibility:\n // before 3.2.0 encoded datablock was located between ----'s instead of using embedded 'keyword markers' in the tiddler content\n var data=text.split('\sn----\sn');\n if (!config.browser.isIE && data[1] && data[1].length) // NOTE: IE does not support the "data:" URI scheme\n return "data:"+data[1].replace(/\s\sn/g,'');\n\n return "";\n}\n//}}}\n//{{{\nif (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {\n if (this.initialized) return;\n // find the formatter for "image" and replace the handler\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link\n {\n var e = w.output;\n if(lookaheadMatch[5])\n {\n if(store.tiddlerExists(lookaheadMatch[5]))\n // ELS: ADDED\n if (config.macros.attach.isAttachment(lookaheadMatch[5]))\n {\n e = createExternalLink(w.output,lookaheadMatch[5]);\n e.href=config.macros.attach.getAttachment(lookaheadMatch[5]);\n e.title = config.macros.attach.linkTooltip + lookaheadMatch[5];\n }\n else\n // ELS: END\n e = createTiddlyLink(w.output,lookaheadMatch[5],false);\n else\n e = createExternalLink(w.output,lookaheadMatch[5]);\n }\n var img = createTiddlyElement(e,"img");\n if(lookaheadMatch[1])\n img.align = "left";\n else if(lookaheadMatch[2])\n img.align = "right";\n if(lookaheadMatch[3])\n img.title = lookaheadMatch[3];\n img.src = lookaheadMatch[4];\n // ELS: ADDED\n if (config.macros.attach.isAttachment(lookaheadMatch[4]))\n img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);\n // ELS: END\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n//}}}\n//{{{\n // find the formatter for "prettyLink" and replace the handler\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[2])\n { // Simple bracketted link\n var link = createTiddlyLink(w.output,lookaheadMatch[1],false);\n w.outputText(link,w.nextMatch,w.nextMatch + lookaheadMatch[1].length);\n w.nextMatch += lookaheadMatch[1].length + 2;\n }\n else if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[3])\n { // Pretty bracketted link\n var e;\n if(store.tiddlerExists(lookaheadMatch[4]) || store.isShadowTiddler(lookaheadMatch[4]))\n // ELS: ADDED\n if (config.macros.attach.isAttachment(lookaheadMatch[4]))\n {\n e = createExternalLink(w.output,lookaheadMatch[4]);\n e.href=config.macros.attach.getAttachment(lookaheadMatch[4]);\n e.title = config.macros.attach.linkTooltip + lookaheadMatch[4];\n }\n else\n // ELS: END\n e = createTiddlyLink(w.output,lookaheadMatch[4],false);\n else\n e = createExternalLink(w.output,lookaheadMatch[4]);\n w.outputText(e,w.nextMatch,w.nextMatch + lookaheadMatch[1].length);\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n this.initialized=true;\n}\n//}}}\n//{{{\nconfig.macros.attach.init_formatters(); // load time init\n//}}}\n//{{{\nif (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {\n TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;\n TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {\n return config.macros.attach.isAttachment(title)?\n config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText(title,defaultText,depth);\n }\n}\n//}}}
Deve ficar desligado quando editando on line ou casa mensagens de erro estranhas.
Meu nome de mestre [[Jedi]] que escolhi para a JediAcademy.
http://bazaar-vcs.org/Bzr\n\nControle de versão descentralizado.\n\nVem em vários sabores, para vários OS, sempre em desenvolvimento (python), com datas de //releases// previsíveis e programadas, e melhorando a cada //release//.\n\nRecentemente se tornou indispensável para mim, principalmente pelo fato de conseguir fazer o controle realmente descentralizado (salvo quando você escolhe salvar em um repositório central num servidor), e trabalhando com o etckeeper ajuda qualquer administrador de sistemas *nix\n\nÉ muito versátil, robusto, e muito fácil de aprender a usar.
/***\n|Name|BigThemePack|\n|Created by|SimonBaird & SaqImtiaz|\n|Location|http://simonbaird.com/mptw/#BigThemePack|\n|Version|0.1.1|\n|Requires|SelectThemePlugin|\n!Uninstallation Notes:\n*Make sure that you set your theme as default or none, before deleting the theme pack.\n\n!Usage:\n<<themeSelect style 'Select Theme'>>\n\n***/\n//{{{\nif (!config.themes) config.themes = [];\n//}}}\n/***\n!!~MonkyMind themes\nThe following themes were created by Robert Lindsay from http://www.monkymind.org/\n***/\n//{{{\n\nconfig.shadowTiddlers.Blueberry2StyleSheet = "<!--- [[Blueberry 2|StyleSheet]] with ideas shamesslessly taken from (and suggested by) Simon Baird, Clint Checketts and Christine Hodges --->\sn\sn/*{{{*/\sn.headerForeground { display: none;}\sn#sidebar {width: 171px; background: #e7ecee;border-left: solid 2px #8895bb;border-top: solid 2px #97a8d2;}\sn#sidebarTabs .tabContents {width: 158px; background: #dce1e3;font-weight: bold; color: #333 ;}\sn#sidebarOptions input { border: solid 2px #8895bb; }\sn#sidebarOptions .sliderPanel { background: #eee;}\sn#sidebarOptions a {;border: none;}\sn#sidebarOptions .sliderPanel a {border: none;color: #00005a;}\sn#displayArea {background: #fff;margin: 1em 15.7em 0em 1em;border-left: solid 2px #8895bb;}\sn.viewer {line-height: 1.4em;padding-bottom: 1em;border-bottom:solid 1px #dedede;}\sn.viewer th, thead td {background: #00009d;border: 1px solid #666;color: #fff;}\sn.title {color: #000}\snh1,h2,h3,h4,h5 {color: #fff;background: #00009d;}\sna{ color: #00005a;}\sna:hover{ background: #00009d; color: #fff;font-weight: bold;}\sn.externalLink { text-decoration: underline; color: #000083;}\snbody { background: #97a8d2;}\sn.popup { background: #04b; border: 1px solid #04b;}\sn.popup li a:hover {background: #dedede;color: #000083;border: none;}\sn.popup li.disabled {color: #000;}\sn.button:hover {color: #fff;background: #00009d;\sn border: 1px solid #dedede;}\sn#topMenu { background: transparent; padding: 6px;margin-left: -5px;border-bottom: solid 3px #00005a}\sn#topMenu .button, #topMenu .tiddlyLink, tiddlyLinkExisting, #topMenu .externalLink\sn{\sn color: #fff;\sn text-align: center;\sn font-weight: bold;\sn font-size: 1.1em;\sn text-decoration: none;\sn letter-spacing: 1.5px;\sn background: transparent;\sn border-right: solid 1px #fff;\sn padding: 5px 15px 6px 15px;\sn}\sn#topMenu a:hover {\sn color: #fff;\sn background: #00009d;\sn border: solid 1px #db4;\sn}\sn#topMenu br {display: none; padding-right: 1em;}\sn\sn\sn/*}}}*/";\n\nconfig.shadowTiddlers.Blueberry2PageTemplate = "<!--- More ideas shamesslessly begged, borrowed or stolen from..... Simon Baird, Clint Checketts and Christine Hodges :)) --->\sn<!--{{{-->\sn<div class='header' macro=\s"gradient vert #00005a #0000ad\s">\sn <div id='topMenu'>\sn <span refresh='content' tiddler='SiteTitle'></span><span refresh='content' tiddler='MainMenu'></span></div>\sn </div>\sn</div> \sn<div id='sidebar'>\sn <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn <div id='messageArea'></div>\sn <div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("Blueberry2");\n\n\nconfig.shadowTiddlers.NoBerry2StyleSheet = "<!--- The default TW colours with modified layout. Ideas shamesslessly taken from (and suggested by) Simon Baird, Clint Checketts and Christine Hodges --->\sn\sn/*{{{*/\sn.headerForeground { display: none;}\sn#sidebar {width: 170px; }\sn#sidebarTabs .tabContents {width: 158px; }\sn#displayArea {background: #fff;margin: 1em 15.7em 0em 1em;}\sn#topMenu { background: transparent; padding: 6px;margin-left: -5px; border-bottom: solid 3px #0457ce;}\sn#topMenu .button, #topMenu .tiddlyLink, tiddlyLinkExisting, #topMenu .externalLink\sn{\sn color: #fff;\sn text-align: center;\sn font-weight: bold;\sn font-size: 1.1em;\sn text-decoration: none;\sn letter-spacing: 1.5px;\sn background: transparent;\sn border-right: solid 1px #fff;\sn padding: 5px 15px 8px 15px;\sn}\sn#topMenu a:hover {\sn color: #fff;\sn background: #18f;\sn}\sn#topMenu br {display: none; padding-right: 1em;}\sn\sn\sn/*}}}*/";\n\nconfig.shadowTiddlers.NoBerry2PageTemplate = "<!--- More ideas shamesslessly begged, borrowed or stolen from..... Simon Baird, Clint Checketts and Christine Hodges :)) --->\sn<!--{{{-->\sn<div class='header' macro=\s"gradient vert #04b #18f\s">\sn <div id='topMenu'>\sn <span refresh='content' tiddler='SiteTitle'></span><span refresh='content' tiddler='MainMenu'></span></div>\sn </div>\sn</div> \sn<div id='sidebar'>\sn <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn <div id='messageArea'></div>\sn <div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("NoBerry2");\n\n//}}}\n/***\n!!Clint's Themes\nThe themes were created by Clint Checketts from http://www.checkettsweb.com/\nThe original GTD theme was created by Nathan Bowers from http://snapgrid.com/\n***/\n//{{{\n\n\nconfig.shadowTiddlers.GTDStyleSheet = "/***\sn!Calendar CSS\sn***/\sn/*{{{*/\sn.calendar{\sn border-bottom: 1px solid #550000;\sn}\sn\sn.viewer .calendar{\sn width: 220px;\sn}\sn\sn#mainMenu .calendar{\sn font-size: 8px;\sn cursor: pointer;\sn width: 100%;\sn border: 0;\sn border-collapse: collapse;\sn}\sn\sn#mainMenu .calendar .button{\sn border: 0;\sn}\sn\sn#mainMenu .calendar td{\sn font-size: 8pt;\sn padding: 0;\sn background: #fff;\sn border: 0;\sn}\sn\sn#mainMenu .calendar a{\sn margin: 0;\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendar a:hover{\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendarMonthname,\sn#mainMenu .calendar .calendarMonthTitle td a{\sn color: #fff;\sn}\sn\sn#mainMenu .calendarDaysOfWeek td{\sn background: #500;\sn color: #fff;\sn}\sn\sn/*}}}*/\sn\sn/***\sn!GTD Style\sn\sn!Generic rules /%==================================================================== %/\sn***/\sn/*{{{*/\snbody {\sn background: #464646 url('http://shared.snapgrid.com/images/tiddlywiki/bodygradient.png') repeat-x top fixed;\sn color: #000;\sn font: .82em/1.25em 'Bitstream Vera Sans', Verdana, Helvetica, Arial, sans-serif;\sn/*'Lucida Sans Unicode', 'Lucida Grande','Trebuchet MS', */\sn}\sn/*}}}*/\sn/***\sn!Header rules /%====================================================================== %/\sn***/\sn/*{{{*/\sn#contentWrapper\sn{\sn margin: 0 auto;\snwidth: 59em;\snposition: relative;\sn}\sn\sn#header\sn{\sn color: #fff;\sn padding: 1.5em 1em .6em 0;\sn}\sn\sn#siteTitle {\sn\sn font-size: 2.3em;\sn margin: 0;\sn}\sn\sn#siteSubtitle {\sn font-size: 1em;\sn padding-left: .8em;;\sn}\sn\sn#titleLine{\sn background: transparent;\sn padding: 0;\sn}\sn\sn#titleLine a {\sn color: #cf6;\sn background: transparent;\sn}\sn/*}}}*/\sn\sn\sn\sn\sn\sn\sn\sn\sn\sn/***\sn!Sidebar rules /%====================================================================== %/\sn***/\sn/*{{{*/\sn#sidebar{\sn left: 0;\snwidth: 18em;\sn margin: .9em .9em 0 0;\sn color: #000;\sn background: transparent;\sn}\sn/*}}}*/\sn/***\sn!Main menu rules /%=================================================================== %/\sn***/\sn/*{{{*/\sn#mainMenu{\sn position: static;\sn width: auto;\sn\sn background: #600;\sn border-right: 3px solid #500;\snpadding: 0;\sn text-align: left;\sn font-size: 1em;\sn}\sn\sn#mainMenu h1{\sn padding: 0;\sn margin: 0;\sn font-size: 1em;\sn font-weight: normal;\sn}\sn\sn#mainMenu ul{\sn padding: 0;\sn margin: 0;\sn list-style: none;\sn}\sn\sn#mainMenu h1 a,\sn#mainMenu li a,\sn#mainMenu li a.button{\sn display: block;\sn padding: 0 5px 0 10px;\snborder: 0;\sn border-bottom: 1px solid #500;\sn border-top: 1px solid #900;\snmargin: 0;\sn}\sn\sn#mainMenu a,\sn#mainMenu a.button{\sn height: 22px;\snheight: 1.83em;\sn line-height: 22px;\sn color: #fff;\sn background: #700;\snmargin-left: 1em;\sn}\sn\sn#mainMenu a:hover,\sn#mainMenu a.button:hover {\sn background: #b00;\sn color: #fff;\sn}\sn/*}}}*/\sn/***\sn!Sidebar options rules /%============================================================ %/\sn***/\sn/*{{{*/\sn#sidebarOptions {\sn background: #eeb;\sn border-right: 3px solid #bb8;\sn color: #B4C675;\sn padding: .5em 0;\sn}\sn\sn#sidebarOptions a {\sn color: #700;\sn margin: .2em .8em;\sn padding: 0;\sn border: 0;\sn}\sn\sn#sidebarOptions a:hover, #sidebarOptions a:active {\sn color: #fff;\sn background: #700;\sn border: 0;\sn}\sn\sn#sidebarOptions input{\sn margin: 2px 10px;\sn border: 1px inset #333;\snpadding: 0;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: #fff;\sn color: #000;\sn padding: 5px 10px;\sn font-size: .9em;\sn}\sn\sn#sidebarOptions .sliderPanel a{\sn font-weight: normal;\sn margin: 0;\sn}\sn\sn#sidebarOptions .sliderPanel a:link,#sidebarOptions .sliderPanel a:visited {\sn color: #700;\sn}\sn\sn#sidebarOptions .sliderPanel a:hover,#sidebarOptions .sliderPanel a:active {\sn color: #fff;\sn background: #700;\sn}\sn/*}}}*/\sn/***\sn!Sidebar tabs rules /%===================================================================== %/\sn***/\sn/*{{{*/\sn#sidebarTabs {\sn background: transparent;\sn border-right: 3px solid #740;\sn border-bottom: 3px solid #520;\sn border: 0;\sn padding: 0;\sn}\sn\sn#contentWrapper #sidebarTabs a,\sn#contentWrapper #displayArea .tabContents a{\sn color: #fff;\sn}\sn\sn#contentWrapper #sidebarTabs a:hover,\sn#contentWrapper #displayArea .tabContents a:hover {\sn background: #000;\sn color: #fff;\sn}\sn\sn#contentWrapper #sidebarTabs a:active,\sn#contentWrapper #displayArea .tabContents a:active{\sn color: #000;\sn}\sn\sn\sn\sn#contentWrapper .tabSelected {\sn background: #960;\sn}\sn\sn#contentWrapper .tabUnselected{\sn background: #660;\sn}\sn\sn#contentWrapper #sidebar .tabset{\sn background: #eeb;\sn border-right: 3px solid #bb8;\sn padding: 0 0 0 .75em;\sn}\sn\sn#contentWrapper .tabContents{\snfont-size: .95em;\snbackground: #960;\snborder:0;\sn border-right: 3px solid #740;\sn border-bottom: 3px solid #520;\sn padding: .75em;\sn}\sn\sn#contentWrapper .tabContents{\sn width: auto;\sn}\sn\sn#contentWrapper #sidebarTabs .tabContents .tabset,\sn#contentWrapper .tabContents .tabset{\sn border: 0;\sn padding: 0;\sn background: transparent;\sn}\sn\sn#contentWrapper .tabContents .tabSelected,\sn#contentWrapper .tabContents .tabContents {\sn background: #700;\sn border: 0;\sn}\sn\sn#contentWrapper .tabContents .tabUnselected {\sn background: #440;\sn}\sn\sn#contentWrapper .tabset a {\sn color: #fff;\sn padding: .2em .7em;\sn margin: 0 .17em 0 0;\sn height: 2em;\snposition: static;\sn}\sn\sn#contentWrapper .tabset a:hover {\sn background: #000;\sn color: #fff;\sn}\sn\sn#contentWrapper .tabset a:active {\sn color: #000;\sn}\sn\sn#contentWrapper .tabContents ul{\sn margin: 0;\sn padding: 0;\sn list-style: none;\sn}\sn\sn#contentWrapper .tabContents .tabContents ul{\sn color: #eeb;\sn}\sn\sn.tabContents ul a,\sn.tabContents ul .button{\sn color: #fff;\sn display: block;\sn padding: .1em 0 .1em .7em;\sn background: transparent;\sn border: 0;\sn}\sn\sn.tabContents ul a:hover {\sn color: #fff;\sn background: #000;\sn}\sn/*}}}*/\sn/***\sn!License panel rules /%==================================================================== %/\sn***/\sn/*{{{*/\sn#licensePanel {\sn padding: 0px 1em;\sn font-size: .9em;\sn}\sn\sn#licensePanel a {\sn color: #960;\sn display: block;\sn margin-top: .9em;\sn}\sn\sn#licensePanel a:hover {\sn color: #fff;\sn background: transparent;\sn}\sn/*}}}*/\sn/***\sn!Popup rules /%================================================================= %/\sn***/\sn/*{{{*/\sn.popup {\sn font-size: .8em;\sn padding: 0em;\sn background: #333;\sn border: 1px solid #000;\sn}\sn\sn.popup hr {\sn margin: 1px 0 0 0;\sn visibility: hidden;\sn}\sn\sn.popup li.disabled {\sn color: #666;\sn}\sn\sn.popup li a,\sn.popup li a:visited{\sn color: #000;\sn border: .1em outset #cf6;\sn background: #cf6;\sn}\sn\sn.popup li a:hover {\snborder: .1em outset #cf6;\sn background: #ef9;\sn color: #000;\sn}\sn/*}}}*/\sn/***\sn!Message area rules /%================================================================= %/\sn***/\sn/*{{{*/\sn#messageArea{\sn font-size: .9em;\sn padding: .4em;\sn background: #FFE72F;\sn border-right: .25em solid #da1;\sn border-bottom: .25em solid #a80;\sn\snposition: fixed;\sn top: 10px;\sn right: 10px;\sn color: #000;\sn}\sn\sn#contentWrapper #messageArea a{\sn color: #00e;\sn text-decoration: none;\sn}\sn\sn#contentWrapper #messageArea a:hover{\sn color: #00e;\sn text-decoration: underline;\sn background: transparent;\sn}\sn\sn#contentWrapper #messageArea .messageToolbar a.button{\sn border: 1px solid #da1;\sn}\sn\sn#contentWrapper #messageArea .messageToolbar a.button:hover{\sn color: #00e;\sn text-decoration: none;\sn border: 1px solid #000;\sn background: #fff;\sn}\sn\sn\sn\sn/*}}}*/\sn/***\sn!Tiddler display rules /%================================================================== %/\sn***/\sn/*{{{*/\sn#displayArea {\sn width: 39.75em;\sn margin: 0 0 0 17em;\sn}\sn\sn.tiddler {\sn margin: 0 0 .9em 0;\sn padding: 0 1em;\sn border-right: .25em solid #aaa;\sn border-bottom: .25em solid #555;\sn background: #fff;\sn}\sn\sn.title {\sn font-size: 1.5em;\sn font-weight: bold;\sn color: #900;\sn}\sn\sn.toolbar {\sn font-size: .8em;\sn padding: .5em 0;\sn}\sn\sn.toolbar .button{\sn padding: .1em .3em;\sn color: #000;\sn\sn border: .1em outset #cf6;\sn background: #cf6;\snmargin: .1em;\sn}\sn\sn.toolbar .button:hover {\sn background: #ef9;\sn color: #000;\sn}\sn\sn.toolbar .button:active {\sn background: #ff0;\sn}\sn\sn/*}}}*/\sn/***\sn!Viewer rules /% ------------------------------------------------------------------------------------------ %/\sn***/\sn/*{{{*/\sn.viewer {\sn line-height: 1.4em;\sn font-size: 1em;\sn}\sn\sn.viewer a:link, .viewer a:visited {\sn color: #15b;\sn}\sn\sn.viewer a:hover {\sn color: #fff;\sn background: #000;\sn}\sn\sn.viewer .button{\sn background: transparent;\sn border-top: 1px solid #eee;\sn border-left: 1px solid #eee;\sn border-bottom: 1px solid #000;\sn border-right: 1px solid #000;\sn}\sn\sn.viewer .button:hover{\sn background: #eee;\sn color: #000;\sn}\sn\sn.viewer .button:active{\sn background: #ccc;\sn border-bottom: 1px solid #eee;\sn border-right: 1px solid #eee;\sn border-top: 1px solid #111;\sn border-left: 1px solid #111;\sn}\sn\sn\sn.viewer blockquote {\sn border-left: 3px solid #777;\sn margin: .3em;\sn padding: .3em;\sn}\sn\sn.viewer pre{\sn background: #fefefe;\sn border: 1px solid #f1f1f1;\sn}\sn\sn.viewer pre, .viewer code{\sn color: #000;\sn}\sn\sn.viewer ul {\sn padding-left: 30px;\sn}\sn\sn.viewer ol {\sn padding-left: 30px;\sn}\snul{\snlist-style-type: asquare;\sn}\snol{ \sn list-style-type: decimal;\sn}\sn\snol ol{ \sn list-style-type: lower-alpha;\sn}\sn\snol ol ol{ \sn list-style-type: lower-roman;\sn}\sn\sn.viewer ul, .viewer ol, .viewer p {\sn margin: .0;\sn}\sn\sn.viewer li {\sn margin: .2em 0;\sn}\sn\snh1,h2,h3,h4,h5,h6 {\sn color: #000;\sn font-weight: bold;\sn background: #eee;\sn padding: 2px 10px;\sn margin: 5px 0;\sn}\sn\sn.viewer h1 {font-size: 1.3em;}\sn.viewer h2 {font-size: 1.2em;}\sn.viewer h3 {font-size: 1.1em;}\sn.viewer h4 {font-size: 1em;}\sn.viewer h5 { font-size: .9em;}\sn.viewer h6 { font-size: .8em;}\sn\sn.viewer table {\sn border: 2px solid #303030;\sn font-size: 11px;\sn margin: 10px 0;\sn}\sn\sn.viewer th, .viewer thead td{\sn color: #000;\sn background: #eee;\sn border: 1px solid #aaa;\sn padding: 0 3px;\sn}\sn\sn.viewer td {\sn border: 1px solid #aaa;\sn padding: 0 3px;\sn}\sn\sn.viewer caption {\sn padding: 3px;\sn}\sn\sn.viewer hr {\sn border: none;\sn border-top: dotted 1px #777;\sn height: 1px;\sn color: #777;\sn margin: 7px 0;\sn}\sn\sn.viewer\sn{\sn margin: .5em 0 0 0;\sn padding: .5em 0;\sn border-top: 1px solid #ccc;\sn}\sn\sn.highlight {\sn color: #000;\sn background: #ffe72f;\sn}\sn/*}}}*/\sn/***\sn!Editor rules /% ----------------------------------------------------------------------------------------- %/\sn***/\sn/*{{{*/\sn.editor {\sn font-size: .8em;\sn color: #402C74;\sn padding: .3em 0;\sn}\sn\sn.editor input, .editor textarea {\sn font: 1.1em/130% 'Andale Mono', 'Monaco', 'Lucida Console', 'Courier New', monospace;\sn margin: 0;\sn border: 1px inset #333;\sn padding: 2px 0;\sn}\sn\sn.editor textarea {\sn height: 42em;\sn width: 100%;\sn}\sn\sninput:focus, textarea:focus\sn{\sn background: #ffe;\sn border: 1px solid #000;\sn}\sn.footer\sn{\sn padding: .5em 0;\sn margin: .5em 0;\sn border-top: 1px solid #ddd;\sn color: #555;\sn text-align: center; \sn}\sn/*}}}*/\sn/***\sn!IE Display hacks /% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%/\sn***/\sn/*{{{*/\snbody{\sn _text-align: center;\sn}\sn\sn#contentWrapper\sn{\sn/* _width: 770px; CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */\sn _text-align: left; /* CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */ \sn}\sn\sn#messageArea{\sn _position: absolute;\sn}\sn/*}}}*/";\n\nconfig.shadowTiddlers.GTDPageTemplate = "<!---\sn| Name:|GTDTWPlusPageTemplate|\sn| Source:|http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm#StyleSheet|\sn| Author:|ClintChecketts|\sn--->\sn<!--{{{-->\sn<div id='header'>\sn<div id='titleLine'>\sn<span id='siteTitle' refresh='content' tiddler='SiteTitle'></span>\sn<span id='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='sidebar'>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div><div id=\s"licensePanel\s">\sn<a rel=\s"license\s" href=\s"http://shared.snapgrid.com/gtd_tiddlywiki.html#RevisionHistory\s" target=\s"_new\s">GTDTW Version <span macro=\s"version\s"></span></a>\sn<a rel=\s"license\s" href=\s"http://www.tiddlywiki.com\s" target=\s"_new\s">\snTiddlyWiki is published by Jeremy Ruston at Osmosoft under a BSD open source license</a>\sn<a rel=\s"license\s" href=\s"http://snapgrid.com\s" target=\s"_new\s">GTD TiddlyWiki is a modification by Nathan Bowers at Snapgrid under the same license terms.</a>\sn<a rel=\s"license\s" href=\s"http://davidco.com\s" target=\s"_new\s">\s"Getting Things Done\s" is &#169; David Allen at Davidco. Davidco has no affiliation with TiddlyWiki or GTD TiddlyWiki.</a></div></div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn<!--}}}-->";\n\nconfig.themes.push("GTD");\n\n\nconfig.shadowTiddlers.DevFireStyleSheet = "/***\sn!Devfire\snStyle by Clint Checketts (http://www.checkettsweb.com) for TiddlyWiki 2.0\snInspired by the GLP'd Darkfire Wordpress skin.\sn\sn!Sections in this Tiddler:\sn*Generic rules\sn*Links styles\sn*Header\sn*Main menu\sn*Sidebar\sn**Sidebar options\sn**Sidebar tabs\sn*Message area\sn*Popup\sn*Tabs\sn*Tiddler display\sn**Viewer\sn**Editor\sn*Misc. rules\sn!Generic rules /% ============================================================= %/\sn***/\sn/*{{{*/\snbody {\snbackground-color: #000;\sn}\sn/*}}}*/\sn/***\sn!Link styles /% ============================================================= %/\sn***/\sn/*{{{*/\sna,\sna.button,\sn#mainMenu a.button,\sn#sidebarOptions .sliderPanel a{\sn color: #ffbf00;\sn border: 0;\sn}\sn\sna:hover,\sna.button:hover,\sn#mainMenu a.button:hover,\sn#sidebarOptions .sliderPanel a:hover\sn#sidebarOptions .sliderPanel a:active{\sn color: #ff7f00;\sn border: 0;\sn border-bottom: #ff7f00 1px dashed;\sn background: transparent;\sn text-decoration: none;\sn}\sn\sn#displayArea .button.highlight{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Header styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.header{\sn border-bottom: 2px solid #ffbf00;\sn color: #fff;\sn}\sn\sn.headerForeground a {\sn color: #fff;\sn}\sn\sn.header a:hover {\sn border-bottom: 1px dashed #fff;\sn}\sn/*}}}*/\sn/***\sn!Main menu styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#mainMenu {color: #fff;}\sn#mainMenu h1{\sn font-size: 1.1em;\sn}\sn#mainMenu li,#mainMenu ul{\sn list-style: none;\sn margin: 0;\sn padding: 0;\sn}\sn/*}}}*/\sn/***\sn!Sidebar styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#sidebar {\sn right: 0;\sn color: #fff;\sn border: 2px solid #ffbf00;\sn border-width: 0 0 2px 2px;\sn}\sn#sidebarOptions {\sn background-color: #4c4c4c;\sn padding: 0;\sn}\sn\sn#sidebarOptions a{\sn margin: 0;\sn color: #ffbf00;\sn border: 0;\sn}\sn#sidebarOptions a:hover {\sn color: #4c4c4c;\sn background-color: #ffbf00;\sn\sn}\sn\sn#sidebarOptions a:active {\sn color: #ffbf00;\sn background-color: transparent;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background-color: #333;\sn margin: 0;\sn}\sn\sn#sidebarTabs {background-color: #4c4c4c;}\sn#sidebarTabs .tabSelected {\sn padding: 3px 3px;\sn cursor: default;\sn color: #ffbf00;\sn background-color: #666;\sn}\sn#sidebarTabs .tabUnselected {\sn color: #ffbf00;\sn background-color: #5f5f5f;\sn padding: 0 4px;\sn}\sn\sn#sidebarTabs .tabUnselected:hover,\sn#sidebarTabs .tabContents {\sn background-color: #666;\sn}\sn\sn.listTitle{color: #FFF;}\sn#sidebarTabs .tabContents a{\sn color: #ffbf00;\sn}\sn\sn#sidebarTabs .tabContents a:hover{\sn color: #ff7f00;\sn background: transparent;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected,\sn#sidebarTabs .txtMoreTab .tab:hover,\sn#sidebarTabs .txtMoreTab .tabContents{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected {\sn color: #ffbf00;\sn background: #5f5f5f;\sn}\sn\sn.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\sn.tab.tabUnselected {background-color: #666;}\sn.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\sn.tabContents {\sn background-color: #4c4c4c;\sn border: 0;\sn}\sn.tabContents .tabContents{background: #666;}\sn.tabContents .tabSelected{background: #666;}\sn.tabContents .tabUnselected{background: #5f5f5f;}\sn.tabContents .tab:hover{background: #666;}\sn/*}}}*/\sn/***\sn!Message area styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\sn#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\sn#messageArea a:hover {color: #ff7f00;}\sn#messageArea a:active {color: #ff7f00;}\sn#messageArea .messageToolbar a{\sn border: 1px solid #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Popup styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\sn#popup a {color: #ffbf00; }\sn#popup a:hover { background: transparent; color: #ff7f00; border: 0;}\sn#popup hr {color: #ffbf00; background: #ffbf00;}\sn/*}}}*/\sn/***\sn!Tiddler Display styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.title{color: #fff;}\snh1, h2, h3, h4, h5 {\sn color: #fff;\sn background-color: transparent;\sn border-bottom: 1px solid #333;\sn}\sn\sn.subtitle{\sn color: #666;\sn}\sn\sn.viewer {color: #fff; }\sn\sn.viewer table{background: #666; color: #fff;}\sn\sn.viewer th {background-color: #996; color: #fff;}\sn\sn.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}\sn\sn.viewer hr {color: #666;}\sn\sn.tiddler .button {color: #4c4c4c;}\sn.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\sn.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\sn\sn.toolbar {\sn color: #4c4c4c;\sn}\sn\sn.toolbar a.button,\sn.editorFooter a{\sn border: 0;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selectedTiddler .footer {\sn color: #888;\sn}\sn\sn.highlight, .marked {\sn color: #000;\sn background-color: #ffe72f;\sn}\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn.tab{\sn-moz-border-radius-topleft: 3px;\sn-moz-border-radius-topright: 3px;\sn}\sn\sn.tagging,\sn.tagged{\sn background: #4c4c4c;\sn border: 1px solid #4c4c4c; \sn}\sn\sn.selected .tagging,\sn.selected .tagged{\sn background: #000;\sn border: 1px solid #ffbf00;\sn}\sn\sn.tagging .listTitle,\sn.tagged .listTitle{\sn color: #fff;\sn}\sn\sn.tagging .button,\sn.tagged .button{\sn color: #ffbf00;\sn border: 0;\sn padding: 0;\sn}\sn\sn.tagging .button:hover,\sn.tagged .button:hover{\snbackground: transparent;\sn}\sn/*}}}*//***\sn!Devfire\snStyle by Clint Checketts (http://www.checkettsweb.com) for TiddlyWiki 2.0\snInspired by the GLP'd Darkfire Wordpress skin.\sn\sn!Sections in this Tiddler:\sn*Generic rules\sn*Links styles\sn*Header\sn*Main menu\sn*Sidebar\sn**Sidebar options\sn**Sidebar tabs\sn*Message area\sn*Popup\sn*Tabs\sn*Tiddler display\sn**Viewer\sn**Editor\sn*Misc. rules\sn!Generic rules /% ============================================================= %/\sn***/\sn/*{{{*/\snbody {\snbackground-color: #000;\sn}\sn/*}}}*/\sn/***\sn!Link styles /% ============================================================= %/\sn***/\sn/*{{{*/\sna,\sna.button,\sn#mainMenu a.button,\sn#sidebarOptions .sliderPanel a{\sn color: #ffbf00;\sn border: 0;\sn}\sn\sna:hover,\sna.button:hover,\sn#mainMenu a.button:hover,\sn#sidebarOptions .sliderPanel a:hover\sn#sidebarOptions .sliderPanel a:active{\sn color: #ff7f00;\sn border: 0;\sn border-bottom: #ff7f00 1px dashed;\sn background: transparent;\sn text-decoration: none;\sn}\sn\sn#displayArea .button.highlight{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Header styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.header{\sn border-bottom: 2px solid #ffbf00;\sn color: #fff;\sn}\sn\sn.headerForeground a {\sn color: #fff;\sn}\sn\sn.header a:hover {\sn border-bottom: 1px dashed #fff;\sn}\sn/*}}}*/\sn/***\sn!Main menu styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#mainMenu {color: #fff;}\sn#mainMenu h1{\sn font-size: 1.1em;\sn}\sn#mainMenu li,#mainMenu ul{\sn list-style: none;\sn margin: 0;\sn padding: 0;\sn}\sn/*}}}*/\sn/***\sn!Sidebar styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#sidebar {\sn right: 0;\sn color: #fff;\sn border: 2px solid #ffbf00;\sn border-width: 0 0 2px 2px;\sn}\sn#sidebarOptions {\sn background-color: #4c4c4c;\sn padding: 0;\sn}\sn\sn#sidebarOptions a{\sn margin: 0;\sn color: #ffbf00;\sn border: 0;\sn}\sn#sidebarOptions a:hover {\sn color: #4c4c4c;\sn background-color: #ffbf00;\sn\sn}\sn\sn#sidebarOptions a:active {\sn color: #ffbf00;\sn background-color: transparent;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background-color: #333;\sn margin: 0;\sn}\sn\sn#sidebarTabs {background-color: #4c4c4c;}\sn#sidebarTabs .tabSelected {\sn padding: 3px 3px;\sn cursor: default;\sn color: #ffbf00;\sn background-color: #666;\sn}\sn#sidebarTabs .tabUnselected {\sn color: #ffbf00;\sn background-color: #5f5f5f;\sn padding: 0 4px;\sn}\sn\sn#sidebarTabs .tabUnselected:hover,\sn#sidebarTabs .tabContents {\sn background-color: #666;\sn}\sn\sn.listTitle{color: #FFF;}\sn#sidebarTabs .tabContents a{\sn color: #ffbf00;\sn}\sn\sn#sidebarTabs .tabContents a:hover{\sn color: #ff7f00;\sn background: transparent;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected,\sn#sidebarTabs .txtMoreTab .tab:hover,\sn#sidebarTabs .txtMoreTab .tabContents{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected {\sn color: #ffbf00;\sn background: #5f5f5f;\sn}\sn\sn.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\sn.tab.tabUnselected {background-color: #666;}\sn.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\sn.tabContents {\sn background-color: #4c4c4c;\sn border: 0;\sn}\sn.tabContents .tabContents{background: #666;}\sn.tabContents .tabSelected{background: #666;}\sn.tabContents .tabUnselected{background: #5f5f5f;}\sn.tabContents .tab:hover{background: #666;}\sn/*}}}*/\sn/***\sn!Message area styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\sn#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\sn#messageArea a:hover {color: #ff7f00;}\sn#messageArea a:active {color: #ff7f00;}\sn#messageArea .messageToolbar a{\sn border: 1px solid #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Popup styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\sn#popup li.disabled{color: #ffbf00;}\sn\sn#popup a {color: #ffbf00; }\sn#popup a:hover { background: transparent; color: #ff7f00; border: 0;}\sn#popup hr {color: #ffbf00; background: #ffbf00;}\sn/*}}}*/\sn/***\sn!Tiddler Display styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.title{color: #fff;}\snh1, h2, h3, h4, h5 {\sn color: #fff;\sn background-color: transparent;\sn border-bottom: 1px solid #333;\sn}\sn\sn.subtitle{\sn color: #666;\sn}\sn\sn.viewer {color: #fff; }\sn\sn.viewer table{background: #666; color: #fff;}\sn\sn.viewer th {background-color: #996; color: #fff;}\sn\sn.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00}\sn\sn.viewer hr {color: #666;}\sn\sn.tiddler .button {color: #4c4c4c;}\sn.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\sn.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\sn\sn.toolbar {\sn color: #4c4c4c;\sn}\sn\sn.toolbar a.button,\sn.editorFooter a{\sn border: 0;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selectedTiddler .footer {\sn color: #888;\sn}\sn\sn.highlight, .marked {\sn color: #000;\sn background-color: #ffe72f;\sn}\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn.tab{\sn-moz-border-radius-topleft: 3px;\sn-moz-border-radius-topright: 3px;\sn}\sn\sn.tagging,\sn.tagged{\sn background: #4c4c4c;\sn border: 1px solid #4c4c4c; \sn}\sn\sn.selected .tagging,\sn.selected .tagged{\sn background: #000;\sn border: 1px solid #ffbf00;\sn}\sn\sn.tagging .listTitle,\sn.tagged .listTitle{\sn color: #fff;\sn}\sn\sn.tagging .button,\sn.tagged .button{\sn color: #ffbf00;\sn border: 0;\sn padding: 0;\sn}\sn\sn.tagging .button:hover,\sn.tagged .button:hover{\snbackground: transparent;\sn}\sn\sn.cascade {\sn background: #4c4c4c;\sn color: #ddd;\sn border: 1px solid #ffbf00;\sn}\sn/*}}}*/";\n\nconfig.shadowTiddlers.DevFirePageTemplate = "<div class='header' macro='gradient vert #390108 #900'>\sn<div class='headerShadow'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div class='headerForeground'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\sn<div id='sidebar'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>";\n\nconfig.themes.push("DevFire");\n\n\nconfig.shadowTiddlers.ClassicBrownStyleSheet = "[[TagglyTaggingStyles]]\sn\sn/***\sn!TiddlyWiki Classic Color Scheme\snDesigned by Jeremy Ruston\sn\snTo use this color scheme copy the [[ClassicTiddlyWiki]] contents into a tiddler and name it 'StyleSheet' also grab the [[ClassicTemplate]] and copy its contents into a tiddler named 'PageTemplate'.\sn\sn!Colors Used\sn*@@bgcolor(#630):color(#fff): #630@@\sn*@@bgcolor(#930): #930@@\sn*@@bgcolor(#996633): #963@@\sn*@@bgcolor(#c90): #c90@@\sn*@@bgcolor(#cf6): #cf6@@\sn*@@bgcolor(#cc9): #cc9@@\sn*@@bgcolor(#ba9): #ba9@@\sn*@@bgcolor(#996): #996@@\sn*@@bgcolor(#300):color(#fff): #300@@\sn*@@bgcolor(#000000):color(#fff): #000@@\sn*@@bgcolor(#666): #666@@\sn*@@bgcolor(#888): #888@@\sn*@@bgcolor(#aaa): #aaa@@\sn*@@bgcolor(#ddd): #ddd@@\sn*@@bgcolor(#eee): #eee@@\sn*@@bgcolor(#ffffff): #fff@@\sn*@@bgcolor(#f00): #f00@@\sn*@@bgcolor(#ff3): #ff3@@\sn!Generic Rules /%==============================================%/\sn***/\sn/*{{{*/\snbody {\sn background: #fff;\sn color: #000;\sn}\sn\sna{\sn color: #963;\sn}\sn\sna:hover{\sn background: #963;\sn color: #fff;\sn}\sn\sna img{\sn border: 0;\sn}\sn\snh1,h2,h3,h4,h5 {\sn background: #cc9;\sn}\sn/*}}}*/\sn/***\sn!Header /%==================================================%/\sn***/\sn/*{{{*/\sn.header{\sn background: #300;\sn}\sn\sn.titleLine {\sn color: #fff;\sn padding: 5em 0em 1em .5em;\sn}\sn\sn.titleLine a {\sn color: #cf6;\sn}\sn\sn.titleLine a:hover {\sn background: transparent;\sn}\sn/*}}}*/\sn/***\sn!Main Menu /%=================================================%/\sn***/\sn/*{{{*/\sn#mainMenu .button {\sn color: #930;\sn}\sn\sn#mainMenu .button:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#mainMenu li{\sn list-style: none;\sn}\sn/*}}}*/\sn/***\sn!Sidebar options /%=================================================%/\sn~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\sn***/\sn/*{{{*/\sn#sidebar {\sn background: #c90;\sn right: 0;\sn}\sn\sn#sidebarOptions a{\sn color: #930;\sn border: 0;\sn margin: 0;\sn padding: .25em .5em;\sn}\sn\sn#sidebarOptions a:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#sidebarOptions a:active {\sn color: #930;\sn background: #cf6;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: #eea;\sn margin: 0;\sn}\sn\sn#sidebarOptions .sliderPanel a {\sn color: #930;\sn}\sn\sn#sidebarOptions .sliderPanel a:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#sidebarOptions .sliderPanel a:active {\sn color: #930;\sn background: #cf6;\sn}\sn/*}}}*/\sn/***\sn!Sidebar tabs /%=================================================%/\sn***/\sn/*{{{*/\sn.tabSelected,.tabContents {\sn background: #eea;\sn border: 0;\sn}\sn\sn.tabUnselected {\sn background: #c90;\sn}\sn\sn#sidebarTabs {\sn background: #c90;\sn}\sn\sn#sidebarTabs .tabSelected{\sn color: #cf6;\sn background: #963;\sn}\sn\sn#sidebarTabs .tabUnselected {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#sidebarTabs .tabContents{\sn background: #963;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected,\sn#sidebarTabs .txtMoreTab .tabSelected:hover{\sn background: #930;\sn color: #cf6;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected,\sn#sidebarTabs .txtMoreTab .tabUnselected:hover{\sn background: #300;\sn color: #cf6;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabContents {\sn background: #930;\sn}\sn\sn#sidebarTabs .tabContents a {\sn color: #cf6;\sn border: 0;\sn}\sn\sn#sidebarTabs .button.highlight,\sn#sidebarTabs .tabContents a:hover {\sn background: #cf6;\sn color: #300;\sn}\sn/*}}}*/\sn/***\sn!Message Area /%=================================================%/\sn***/\sn/*{{{*/\sn#messageArea {\sn background: #930;\sn color: #fff;\sn}\sn\sn#messageArea a:link, #messageArea a:visited {\sn color: #c90;\sn}\sn\sn#messageArea a:hover {\sn color: #963;\sn background: transparent;\sn}\sn\sn#messageArea a:active {\sn color: #fff;\sn}\sn/*}}}*/\sn/***\sn!Popup /%=================================================%/\sn***/\sn/*{{{*/\sn.popup {\sn background: #eea;\sn border: 1px solid #930;\sn}\sn\sn.popup hr {\sn color: #963;\sn background: #963;\sn border-bottom: 1px;\sn}\sn\sn.popup li.disabled {\sn color: #ba9;\sn}\sn\sn.popup li a, .popup li a:visited {\sn color: #300;\sn}\sn\sn.popup li a:hover {\sn background: #930;\sn color: #eea;\sn}\sn/*}}}*/\sn/***\sn!Tiddler Display /%=================================================%/\sn***/\sn/*{{{*/\sn.tiddler .button {\sn color: #930;\sn}\sn\sn.tiddler .button:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn.tiddler .button:active {\sn color: #fff;\sn background: #c90;\sn}\sn\sn.shadow .title {\sn color: #888;\sn}\sn\sn.title {\sn color: #422;\sn}\sn\sn.subtitle {\sn color: #866;\sn}\sn\sn.toolbar {\sn color: #aaa;\sn}\sn\sn.toolbar a,\sn.toolbar a:hover{\sn border: 0;\sn}\sn\sn.tagging, .tagged {\sn border: 1px solid #fff;\sn background-color: #ffc;\sn}\sn\sn.selected .tagging, .selected .tagged {\sn border: 1px solid #aa6;\sn background-color: #ffc;\sn}\sn\sn.tagging .listTitle, .tagged .listTitle {\sncolor: #999999;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selected .footer {\sn color: #888;\sn}\sn\sn.sparkline {\sn background: #eea;\sn border: 0;\sn}\sn\sn.sparktick {\sn background: #930;\sn}\sn\sn.errorButton {\sn color: #ff0;\sn background: #f00;\sn}\sn\sn.zoomer {\sn color: #963;\sn border: 1px solid #963;\sn}\sn/*}}}*/\sn/***\sn''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn.viewer .button {\sn background: #c90;\sn color: #300;\sn border-right: 1px solid #300;\sn border-bottom: 1px solid #300;\sn}\sn\sn.viewer .button:hover {\sn background: #eea;\sn color: #c90;\sn}\sn\sn.viewer .imageLink{\sn background: transparent;\sn}\sn\sn.viewer blockquote {\sn border-left: 3px solid #666;\sn}\sn\sn.viewer table {\sn border: 2px solid #303030;\sn}\sn\sn.viewer th, thead td {\sn background: #996;\sn border: 1px solid #606060;\sn color: #fff;\sn}\sn\sn.viewer td, .viewer tr {\sn border: 1px solid #606060;\sn}\sn\sn.viewer pre {\sn border: 1px solid #963;\sn background: #eea;\sn}\sn\sn.viewer code {\sn color: #630;\sn}\sn\sn.viewer hr {\sn border: 0;\sn border-top: dashed 1px #606060;\sn color: #666;\sn}\sn\sn.highlight, .marked {\sn background: #ff3;\sn}\sn/*}}}*/\sn/***\sn''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn.editor input {\sn border: 1px solid #000;\sn}\sn\sn.editor textarea {\sn border: 1px solid #000;\sn width: 100%;\sn}\sn\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn.editorFooter a {\sn color: #930;\sn}\sn\sn.editorFooter a:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn.editorFooter a:active {\sn color: #fff;\sn background: #c90;\sn}\sn/*}}}*/";\n\nconfig.shadowTiddlers.ClassicBrownPageTemplate = "<div class='header'>\sn<div class='titleLine'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\sn<div id='sidebar'>\sn<div macro='gradient vert #ffffff #cc9900'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn</div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>";\n\nconfig.themes.push("ClassicBrown");\n//}}}\n/***\n!~MonkeyPirateTiddlyWiki Themes\nCreated by Simon Baird from http://simonbaird.com/mptw/\n***/\n//{{{\n\n// couple of extra bits\nconfig.shadowTiddlers.HorizontalMainMenuStyles = "/***\snTo use, add {{{[[HorizontalMainMenuStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also HorizontalMainMenu and PageTemplate.\sn***/\sn/*{{{*/\sn\sn#topMenu br {display:none; }\sn#topMenu { background: #39a; }\sn#topMenu { padding:2px; }\sn#topMenu .button, #topMenu .tiddlyLink {\sn margin-left:0.5em; margin-right:0.5em;\sn padding-left:3px; padding-right:3px;\sn color:white; font-size:115%;\sn}\sn#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#178;}\sn\sn#displayArea { margin: 1em 15.7em 0em 1em; } /* so we use the freed up space */\sn\sn/* just in case want some QuickOpenTags in your topMenu */\sn#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\sn#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\sn#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\sn\sn\sn/*}}}*/";\n\nconfig.shadowTiddlers.SideBarWhiteAndGrey = "/***\snThis CSS by DaveBirss.\sn***/\sn/*{{{*/\sn\sn.tabSelected {\sn background: #fff;\sn}\sn\sn.tabUnselected {\sn background: #eee;\sn}\sn\sn#sidebar {\sn color: #000;\sn background: transparent; \sn}\sn\sn#sidebarOptions {\sn background: #fff;\sn}\sn\sn#sidebarOptions .button {\sn color: #999;\sn}\sn\sn#sidebarOptions .button:hover {\sn color: #000;\sn background: #fff;\sn border-color:white;\sn}\sn\sn#sidebarOptions .button:active {\sn color: #000;\sn background: #fff;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: transparent;\sn}\sn\sn#sidebarOptions .sliderPanel A {\sn color: #999;\sn}\sn\sn#sidebarOptions .sliderPanel A:hover {\sn color: #000;\sn background: #fff;\sn}\sn\sn#sidebarOptions .sliderPanel A:active {\sn color: #000;\sn background: #fff;\sn}\sn\sn.sidebarSubHeading {\sn color: #000;\sn}\sn\sn#sidebarTabs {`\sn background: #fff\sn}\sn\sn#sidebarTabs .tabSelected {\sn color: #000;\sn background: #fff;\sn border-top: solid 1px #ccc;\sn border-left: solid 1px #ccc;\sn border-right: solid 1px #ccc;\sn border-bottom: none;\sn}\sn\sn#sidebarTabs .tabUnselected {\sn color: #999;\sn background: #eee;\sn border-top: solid 1px #ccc;\sn border-left: solid 1px #ccc;\sn border-right: solid 1px #ccc;\sn border-bottom: none;\sn}\sn\sn#sidebarTabs .tabContents {\sn background: #fff;\sn}\sn\sn\sn#sidebarTabs .txtMoreTab .tabSelected {\sn background: #fff;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected {\sn background: #eee;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabContents {\sn background: #fff;\sn}\sn\sn#sidebarTabs .tabContents .tiddlyLink {\sn color: #999;\sn}\sn\sn#sidebarTabs .tabContents .tiddlyLink:hover {\sn background: #fff;\sn color: #000;\sn}\sn\sn#sidebarTabs .tabContents {\sn color: #000;\sn}\sn\sn#sidebarTabs .button {\sn color: #666;\sn}\sn\sn#sidebarTabs .tabContents .button:hover {\sn color: #000;\sn background: #fff;\sn}\sn\sn\sn/*}}}*/";\n\n\nconfig.shadowTiddlers.MPTWStyleSheet = "/***\snCosmetic fixes that probably should be included in a future TW...\sn***/\sn/*{{{*/\sn.viewer .listTitle { list-style-type:none; margin-left:-2em; }\sn.editorFooter .button { padding-top: 0px; padding-bottom:0px; }\sn/*}}}*/\sn/***\snImportant stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles\sn***/\sn/*{{{*/\sn[[TagglyTaggingStyles]]\sn[[HorizontalMainMenuStyles]]\sn/*}}}*/\sn/***\snClint's fix for weird IE behaviours\sn***/\sn/*{{{*/\snbody {position:static;}\sn.tagClear{margin-top:1em;clear:both;}\sn/*}}}*/\sn/***\snJust colours, fonts, tweaks etc. See SideBarWhiteAndGrey\sn***/\sn/*{{{*/\snbody {background:#eee; /* font-size:103%; */}\sna{ color: #069; }\sna:hover{ background: #069; color: #fff; }\sn.popup { background: #178; border: 1px solid #069; }\sn.headerForeground a { color: #6fc;}\sn.headerShadow { left: 2px; top: 2px; }\sn.title { padding:0px; margin:0px; }\sn.siteSubtitle { padding:0px; margin:0px; padding-left:1.5em; }\sn.subtitle { font-size:90%; color:#ccc; padding-left:0.25em; }\snh1,h2,h3,h4,h5 { color: #000; background: transparent; }\sn.title {color:black; font-size:2em;}\sn.shadow .title {color:#999; }\sn.viewer pre { background-color:#f8f8ff; border-color:#ddf; }\sn.viewer { padding-top:0px; }\sn.editor textarea { font-family:monospace; }\sn#sidebarOptions { border:1px #ccc solid; }\sn.tiddler {\sn border-bottom:1px solid #ccc; border-right:1px solid #ccc; padding-bottom:1em; margin-bottom:1em; \sn background:#fff; padding-right:1.5em; }\sn#messageArea { background-color:#bde; border-color:#8ab; border-width:4px; border-style:dotted; font-size:90%; }\sn#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }\sn#messageArea .button:hover {background: #acd; }\sn[[SideBarWhiteAndGrey]]\sn\sn.viewer td {vertical-align:top;}\sn\sn.viewer table.noBorder {border-style:none;}\sn.viewer table.noBorder td {border-style:none;}\sn.viewer table.threeCol td {width:33%;}\sn\sn#adsense {\sn margin: 1em 15.7em 0em 1em; border:1px solid #ddd;\sn background:#f8f8f8; text-align:center;margin-bottom:1em;overflow:hidden;padding:0.5em;} \sn\sn.sliderPanel { margin-left: 2em; }\sn\sn.viewer th { background:#ddd; color:black; }\sn/*}}}*/\sn/*{{{*/\sn/* for testing clint's new formatter. eg {{red{asdfaf}}} */\sn.red { color:white; background:red; display:block; padding:1em; } \sn\sn/* FF doesn't need this. but IE seems to want to make first one white */\sn.txtMainTab .tabset { background:#eee; }\sn.txtMoreTab .tabset { background:transparent; }\sn\sn.faq ol li { padding-top:1em; font-size:120%; }\sn.faq ol ul li { padding-top:0px; font-size:100%; }\sn\sn/*}}}*/\sn";\n\nconfig.shadowTiddlers.MPTWPageTemplate = "<!---\snI've just tweaked my gradient colours and the topMenu bit. See HorizontalMainMenu.\sn--->\sn<!--{{{-->\sn<div class='header' macro='gradient vert #000 #069'>\sn<div class='headerShadow'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div class='headerForeground'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div id='topMenu' refresh='content' tiddler='MainMenu'></div>\sn</div>\sn<div id='sidebar'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("MPTW");\n\n\nconfig.shadowTiddlers.MPTWCurvesStyleSheet = "/*{{{*/\sn[[MPTWStyleSheet]]\sn.tiddler { -moz-border-radius: 2em;}\sn.button { -moz-border-radius: 1em;}\sn#sidebarOptions { -moz-border-radius: 0 0 1em 1em;}\sn.tab { -moz-border-radius: 1em 1em 0 0;}\sn.tabContents { -moz-border-radius: 1em 1em 0 0;}\sn/*}}}*/";\n\nconfig.shadowTiddlers.MPTWCurvesPageTemplate = config.shadowTiddlers.MPTWPageTemplate;\n\nconfig.themes.push("MPTWCurves");\n\n//}}}\n/***\n!~GTDd3\nCreated by Tomo (Tom Otvos) from http://www.dcubed.ca\n(Based on the original GTD theme by Nathan Bowers at http://snapgrid.com)\n***/\n//{{{\nconfig.shadowTiddlers.GTDd3PageTemplate = "<div class='header'>\sn<div class='headerShadow'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div class='headerForeground'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu' force='true'></div>\sn<div id='sidebar'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>";\n\nconfig.shadowTiddlers.GTDd3StyleSheet = "/***\sn!GTD specific styles\sn***/\sn\sn/*{{{*/\sn\sn/* the tagging popup really gets in the way so push it off to the side */\sn.tagging { float: right; }\sn\sn/* this unbullets actions in the actionList macro */\snul.gtdActionList { list-style-type: none; }\snli.gtdActionListProject, li.gtdActionListContext { margin-top: 1.0em; }\sn\sn.gtdCompletedActionItem { text-decoration: line-through; }\sn.gtdNextActionItem { border-bottom: 1px solid red; }\sn\sn/*}}}*/\sn\sn/***\sn!Imported 3x5 printing styles\sn//adapted from the work of Clint Checketts, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm //\sn***/\sn\sn/*{{{*/\sn\sn@media print {\sn#mainMenu, #sidebar, #messageArea {display: none !important;}\sn#displayArea {margin: 1em 1em 0em 1em;}\sn\sn\sn/* LAYOUT ELEMENTS ========================================================== */\sn*\sn{\sn margin: 0;\sn padding: 0;\sn}\sn\sn#contentWrapper\sn{\sn margin: 0;\sn width: 100%;\sn position: static;\sn}\sn\snbody {\sn background: #fff;\sn color: #000;\sn font-size: 6.2pt;\sn font-family: \s"Lucida Grande\s", \s"Bitstream Vera Sans\s", Helvetica, Verdana, Arial, sans-serif;\sn}\sn\snimg {\sn max-width: 2.2in;\sn max-height: 4.3in;\sn}\sn\sn#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .header, .footer, .tagging, .tagged\sn{\sn display: none;\sn}\sn\sn#tiddlerDisplay, #displayArea\sn{\sn display: inline;\sn}\sn\sn.tiddler {\sn margin: 0 0 2em 0;\sn border-top: 1px solid #000;\sn page-break-before: always;\sn}\sn\sn.tiddler:first-child {\sn page-break-before: ;\sn}\sn\sn.title {\sn font-size: 1.6em;\sn font-weight: bold;\sn margin-bottom: .3em;\sn padding: .2em 0;\sn border-bottom: 1px dotted #000;\sn}\sn\snp, blockquote, ul, li, ol, dt, dd, dl, table\sn{\sn margin: 0 0 .3em 0;\sn}\sn\snh1, h2, h3, h4, h5, h6\sn{\sn margin: .2em 0;\sn} \sn\snh1\sn{\sn font-size: 1.5em;\sn}\sn\snh2\sn{\sn font-size: 1.3em;\sn}\sn\snh3\sn{\sn font-size: 1.25em;\sn}\sn\snh4\sn{\sn font-size: 1.15em;\sn}\sn\snh5\sn{\sn font-size: 1.1em;\sn}\sn\snblockquote\sn{\sn margin: .6em;\sn padding-left: .6em;\sn border-left: 1px solid #ccc;\sn}\sn\snul\sn{\sn list-style-type: circle;\sn}\sn\snli\sn{\sn margin: .1em 0 .1em 2em;\sn line-height: 1.4em; \sn}\sn\sntable\sn{\sn border-collapse: collapse;\sn font-size: 1em;\sn}\sn\sntd, th\sn{\sn border: 1px solid #999;\sn padding: .2em;\sn}\sn\snhr {\sn border: none;\sn border-top: dotted 1px #777;\sn height: 1px;\sn color: #777;\sn margin: .6em 0;\sn}\sn}\sn/*}}}*/\sn\sn/***\sn!Imported styles for calendar plugin\sn***/\sn\sn/*{{{*/\sn.calendar{\sn border-bottom: 1px solid #550000;\sn}\sn\sn.viewer .calendar{\sn width: 220px;\sn}\sn\sn#mainMenu .calendar{\sn font-size: 8px;\sn cursor: pointer;\sn width: 100%;\sn border: 0;\sn border-collapse: collapse;\sn}\sn\sn#mainMenu .calendar .button{\sn border: 0;\sn}\sn\sn#mainMenu .calendar td{\sn font-size: 8pt;\sn padding: 0;\sn background: #fff;\sn border: 0;\sn}\sn\sn#mainMenu .calendar a{\sn margin: 0;\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendar a:hover{\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendarMonthname,\sn#mainMenu .calendar .calendarMonthTitle td a{\sn color: #fff;\sn}\sn\sn#mainMenu .calendarDaysOfWeek td{\sn background: #500;\sn color: #fff;\sn}\sn/*}}}*/\sn\sn\sn/***\sn!Layout Rules /%==============================================%/\sn***/\sn/*{{{*/\sn\snbody { position: static; }\sn\sn.headerForeground, .headerShadow {\sn padding-top: 1em;\sn}\sn\sn.tiddler {\sn margin: 0 0 0.9em 0;\sn padding-bottom: 1em;\sn}\sn\sn#mainMenu {\sn width: 16em;\sn font-size: 1em;\sn text-align: left;\sn}\sn\sn#mainMenu * {\sn font-size: 1em;\sn font-weight: normal;\sn padding: 0; margin: 0; border: 0;\sn}\sn\sn#mainMenu ul {\sn list-style: none;\sn margin-bottom: 10px;\sn}\sn\sn#mainMenu li {\sn text-indent: 1em;\sn}\sn\sn#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\sn display: block; margin: 0;\sn}\sn\sn#displayArea {\sn margin-left: 19em;\sn}\sn\sn/*}}}*/\sn\sn/***\sn!Colors Used\sn*@@bgcolor(#8cf): #8cf - Background blue@@\sn*@@bgcolor(#18f): #18f - Top blue@@\sn*@@bgcolor(#04b): #04b - Mid blue@@\sn*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\sn*@@bgcolor(#ffc): #ffc - Bright yellow@@\sn*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\sn*@@bgcolor(#db4): #db4 - Background yellow@@\sn*@@bgcolor(#841): #841 - Border yellow@@\sn*@@bgcolor(#703):color(#fff): #703 - Title red@@\sn*@@bgcolor(#866): #866 - Subtitle grey@@\sn!Generic Rules /%==============================================%/\sn***/\sn/*{{{*/\snbody {\sn background: #464646;\sn color: #000;\sn}\sn\sna{\sn color: #04b;\sn}\sn\sna:hover{\sn background: #04b;\sn color: #fff;\sn}\sn\sna img{\sn border: 0;\sn}\sn\snh1,h2,h3,h4,h5 {\sn color: #000;\sn background: #eee;\sn}\sn\sn.button {\sn color: #014;\sn border: 1px solid #fff;\sn}\sn\sn.button:hover {\sn color: #014;\sn background: #fe8;\sn border-color: #db4;\sn}\sn\sn.button:active {\sn color: #fff;\sn background: #db4;\sn border: 1px solid #841;\sn}\sn\sn/*}}}*/\sn/***\sn!Header /%==================================================%/\sn***/\sn/*{{{*/\sn.header {\sn background: #000;\sn}\sn\sn.headerShadow {\sn color: #000;\sn}\sn\sn.headerShadow a {\sn font-weight: normal;\sn color: #000;\sn}\sn\sn.headerForeground {\sn color: #cf6;\sn}\sn\sn.headerForeground a {\sn font-weight: normal;\sn color: #cf6;\sn}\sn\sn/* ??? what is up when you specify a site title colour in IE ??? */\sn/* .siteTitle { color: red; } */\sn\sn/*}}}*/\sn/***\sn!General tabs /%=================================================%/\sn***/\sn/*{{{*/\sn\sn.tabSelected {\sn color: #fff;\sn background: #960;\sn border: none;\sn}\sn\sn.tabUnselected {\sn color: #fff;\sn background: #660;\sn}\sn\sn.tabContents {\sn color: #004;\sn background: #960;\sn border: none;\sn}\sn\sn.tabContents .button, .tabContents a {\sn border: none;\sn color: #fff;\sn}\sn\sn.tabContents a:hover, .tabset a:hover {\sn background: #000;\sn}\sn\sn/* make nested tab areas look different */\sn.tabContents .tabSelected, .tabContents .tabContents {\sn background: #700;\sn color: #fff;\sn}\sn\sn.tabContents .tabContents {\sn color: #eeb;\sn}\sn\sn/*}}}*/\sn/***\sn!Main Menu /%=================================================%/\sn***/\sn/*{{{*/\sn#mainMenu {\sn background: #700;\sn color: #fff;\sn border-right: 3px solid #500;\sn}\sn\sn#mainMenu * {\sn color: #fff;\sn}\sn\sn#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\sn border: none;\sn border-bottom: 1px solid #500;\sn border-top: 1px solid #900;\sn}\sn\sn#mainMenu a:hover,\sn#mainMenu a.button:hover {\sn background-color: #b00;\sn color: #fff;\sn}\sn\sn/*}}}*/\sn/***\sn!Sidebar options /%=================================================%/\sn~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\sn***/\sn/*{{{*/\sn#sidebar {\sn color: #000;\sn background: #eeb;\sn border-right: 3px solid #bb8;\sn border-bottom: 3px solid #520;\sn}\sn\sn#sidebarOptions input {\sn border: 1px solid #04b;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: #fff;\sn}\sn\sn#sidebarOptions .sliderPanel a {\sn border: none;\sn color: #700;\sn}\sn\sn#sidebarOptions .sliderPanel a:hover {\sn color: #fff;\sn background: #700;\sn}\sn\sn#sidebarOptions .sliderPanel a:active {\sn color: #700;\sn background: #fff;\sn}\sn\sn#sidebarOptions a {\sn color: #700;\sn border: none;\sn}\sn\sn#sidebarOptions a:hover, #sidebarOptions a:active {\sn color: #fff;\sn background: #700;\sn}\sn\sn/*}}}*/\sn/***\sn!Message Area /%=================================================%/\sn***/\sn/*{{{*/\sn#messageArea {\sn border-right: 3px solid #da1;\sn border-bottom: 3px solid #a80;\sn background: #ffe72f;\sn color: #014;\sn}\sn\sn#messageArea .button {\sn padding: 0.2em 0.2em 0.2em 0.2em;\sn color: #014;\sn background: #fff;\sn}\sn\sn/*}}}*/\sn/***\sn!Popup /%=================================================%/\sn***/\sn/*{{{*/\sn.popup {\sn background: #333;\sn border: none;\sn}\sn\sn.popup hr {\sn color: #000;\sn}\sn\sn.popup li.disabled {\sn color: #666;\sn background: #cf6;\sn}\sn\sn.popup li a, .popup li a:visited {\sn color: #000;\sn border: 1px outset #cf6;\sn background: #cf6;\sn}\sn\sn.popup li a:hover {\sn color: #000;\sn border: 1px outset #cf6;\sn background: #ef9;\sn}\sn/*}}}*/\sn/***\sn!Tiddler Display /%=================================================%/\sn***/\sn/*{{{*/\sn.tiddler {\sn background: #fff;\sn border-right: 3px solid #aaa;\sn border-bottom: 3px solid #555;\sn}\sn\sn.tiddler .defaultCommand {\sn font-weight: bold;\sn}\sn\sn.shadow .title {\sn color: #866;\sn}\sn\sn.title {\sn color: #900;\sn}\sn\sn.subtitle {\sn color: #866;\sn}\sn\sn.toolbar {\sn color: #000;\sn}\sn\sn.toolbar .button {\sn background: #cf6;\sn border: 1px outset #cf6;\sn}\sn\sn.toolbar .button:hover {\sn background: #ef9;\sn}\sn\sn.tagging, .tagged {\sn border: 1px solid #eee;\sn background-color: #eee;\sn}\sn\sn.selected .tagging, .selected .tagged {\sn background-color: #ddd;\sn border: 1px solid #bbb;\sn}\sn\sn.tagging .listTitle, .tagged .listTitle {\sn color: #014;\sn}\sn\sn.tagging .button, .tagged .button {\sn border: none;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selected .footer {\sn color: #888;\sn}\sn\sn.sparkline {\sn background: #8cf;\sn border: 0;\sn}\sn\sn.sparktick {\sn background: #014;\sn}\sn\sn.errorButton {\sn color: #ff0;\sn background: #f00;\sn}\sn\sn.cascade {\sn background: #eef;\sn color: #aac;\sn border: 1px solid #aac;\sn}\sn\sn.imageLink, #displayArea .imageLink {\sn background: transparent;\sn}\sn\sn/*}}}*/\sn/***\sn''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn\sn.viewer .listTitle {list-style-type: none; margin-left: -2em;}\sn\sn.viewer .button {\sn border: 1px solid #db4;\sn}\sn\sn.viewer blockquote {\sn border-left: 3px solid #666;\sn}\sn\sn.viewer table {\sn border: 2px solid #333;\sn}\sn\sn.viewer th, thead td {\sn background: #db4;\sn border: 1px solid #666;\sn color: #fff;\sn}\sn\sn.viewer td, .viewer tr {\sn border: 1px solid #666;\sn}\sn\sn.viewer pre {\sn border: 1px solid #fe8;\sn background: #ffc;\sn}\sn\sn.viewer code {\sn color: #703;\sn}\sn\sn.viewer hr {\sn border: 0;\sn border-top: dashed 1px #666;\sn color: #666;\sn}\sn\sn.highlight, .marked {\sn background: #fe8;\sn}\sn/*}}}*/\sn/***\sn''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn.editor input {\sn border: 1px solid #04b;\sn}\sn\sn.editor textarea {\sn border: 1px solid #04b;\sn width: 100%;\sn}\sn\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn/*}}}*/\sn/***\sn!Personal preferences\sn***/\sn\sn/*{{{*/\sn/* not required, but the menu looks a whole lot nicer flushed left */\sn#mainMenu { text-align: left; }\sn/* make input fields in viewer (options) show up in correct size */\sn.viewer input { font-size: 0.9em; }\sn/*}}}*/\sn";\n\nconfig.themes.push("GTDd3");\n\n\n//}}}\n\n
To make quoted bits of text stand out, you can use BlockQuotes within your [[tiddler]]s, like this:\n\nJeremyRuston said:\n<<<\nA TiddlyWiki is like a blog because it's divided up into neat little chunks, but it encourages you to read it by hyperlinking rather than sequentially: if you like, a non-linear blog analogue that binds the individual microcontent items into a cohesive whole.\n<<<\n\nLike BulletPoints and NumberedBulletPoints, you can have multiple levels of BlockQuotes. Just [[edit]] this tiddler to see how it's done.\n\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n
[[Mama|http://escrevinhacoes.blogspot.com]]\n[[EuNaEuropa|http://eunaeuropa.blogger.com.br]]\n[[NosNaHolanda|http://nosnaholanda.blogspot.com/]]\n[[Pitadinhas|http://daniname.wordpress.com/]]\n[[MarkZabriskie|http://markzabriskie.wordpress.com/]]\n[[MarkRussinovich|http://blogs.technet.com/markrussinovich/]]
config.commands.cancelTiddler.text = "cancelar";\nconfig.commands.cancelTiddler.tooltip = "Cancela as alterações feitas nesta ficha"; \nconfig.commands.closeOthers.text = "fechar as demais";\nconfig.commands.closeOthers.tooltip = "Fecha todas as fichas, menos esta";\nconfig.commands.closeTiddler.text = "fechar";\nconfig.commands.closeTiddler.tooltip = "Fecha todas as fichas";\nconfig.commands.deleteTiddler.text = "deletar";\nconfig.commands.deleteTiddler.tooltip = "deleta esta ficha";\nconfig.commands.deleteTiddler.warning = "Tem a certeza de que desja deletar '%0'?";\nconfig.commands.editTiddler.text = "editar";\nconfig.commands.editTiddler.tooltip = "Edita esta ficha";\nconfig.commands.jump.text = "pular";\nconfig.commands.jump.tooltip = "Pula outra ficha que esteja aberta";\nconfig.commands.permalink.text = "link permanente";\nconfig.commands.permalink.tooltip = "Link permantente para esta ficha";\nconfig.commands.references.text = "referências";\nconfig.commands.references.tooltip = "Abre fichas que ligam a esta";\nconfig.commands.references.popupNone = "Sem referências";\nconfig.commands.saveTiddler.text = "salvar";\nconfig.commands.saveTiddler.tooltip = "Salva as alterações feitas nesta ficha";\n \nconfig.macros.allTags.noTags = "Não há fichas subordinadas a conceitos";\nconfig.macros.allTags.tooltip = "Abre fichas subordinadas ao conceito '%0'";\nconfig.macros.closeAll.label = "fechar todas";\nconfig.macros.closeAll.prompt = "Fecha todas as fichas que estão abertas (exceto as que estão sendo editadas)";\nconfig.macros.list.all.prompt = "todas as fichas classificadas em ordem alfabética";\nconfig.macros.list.missing.prompt = "fichas inexistentes que estão sendo citadas";\nconfig.macros.list.orphans.prompt = "fichas sem ligações com outras fichas";\nconfig.macros.list.shadowed.prompt = "fichas ocultas com a configuração desta TiddlyWiki";\nconfig.macros.newJournal.label = "novo relatório";\nconfig.macros.newJournal.prompt = "Cria uma nova ficha com a data e hora atual";\nconfig.macros.newTiddler.label = "nova ficha";\nconfig.macros.newTiddler.prompt = "Cria uma nova ficha";\nconfig.macros.newTiddler.title = "NovaFicha";\nconfig.macros.permaview.label = "visão geral";\nconfig.macros.permaview.prompt = "Liga a uma URL com a atual vizualização";\nconfig.macros.saveChanges.label = "salvar alterações";\nconfig.macros.saveChanges.prompt = "salva todas as alterações num arquivo";\nconfig.macros.search.label = "buscar";\nconfig.macros.search.prompt = "Busca por informações que se encontram nesta TiddlyWiki";\nconfig.macros.search.successMsg = "%0 fichas encontrados que com a seguinte informação: %1";\nconfig.macros.search.failureMsg = "Nenhuma ficha encontrada que tenha: %0";\nconfig.macros.tagging.label = "Subordinados";\nconfig.macros.tagging.labelNotTag = "não há conceitos superordenados";\nconfig.macros.tagging.tooltip = "Abrir todas as fichas subordinadas ao conceito '%0'";\nconfig.macros.timeline.dateFormat = "DD MMM YYYY";\n\nconfig.messages.backupFailed = "Falha ao salvar o arquivo de backup";\nconfig.messages.backupSaved = "Sucesso ao fazer o backpup";\nconfig.messages.cantSaveError = "Não é possível salvar alterações com este navegador. Se possível, use o FireFox";\nconfig.messages.customConfigError = "Erro na ficha customConfig - '%0' ";\nconfig.messages.dates.months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", \n\n"Novembro","Dezembro"];\nconfig.messages.dates.days = ["Domingo", "Segunda","Terça", "Quarta", "Quinta", "Sexta", "Sábado"];\nconfig.messages.emptyFailed = "Falha ao salvar template vazio";\nconfig.messages.emptySaved = "Sucesso ao salvar o template vazio";\nconfig.messages.externalLinkTooltip = "Link externo para %0";\nconfig.messages.invalidFileError = "O arquivo original '%0' não parece ser uma TiddlyWiki válida";\nconfig.messages.macroError = "Erro ao executar a macro <<%0>>";\nconfig.messages.macroErrorDetails = "Erro ao executar a macro <<%0>>:\sn%1";\nconfig.messages.mainFailed = "Falha ao tentar salvar o arquivo principal da TiddlyWiki. Suas alterações não foram salvas.";\nconfig.messages.mainSaved = "Arquivo principal da TiddlyWiki salvo com sucesso";\nconfig.messages.messageClose.text = "fechar";\nconfig.messages.messageClose.tooltip = "Fecha esta mensagem";\nconfig.messages.missingMacro = "Esta macro não existe";\nconfig.messages.noTags = "Não há fichas classificadas";\nconfig.messages.notFileUrlError = "Você precisa salvar essa TiddlyWiki em um arquivo para fazer alterações. Isso quer dizer que precisará fazer o seu download e então fazer as alterações a partir do desktop, não sendo possível alterar a versão online sem que faça contato com o administrador dela.";\nconfig.messages.overwriteWarning = "Uma ficha chamada '%0' já existe. Clique OK para substituí-la";\nconfig.messages.rssFailed = "Falhou ao salvar o arquivo RSS";\nconfig.messages.rssSaved = "arquivo RSS salvo com sucesso";\nconfig.messages.savedSnapshotError = "Parece que esta TiddlyWiki foi salva de maneira inadequada. Por favor, veja http://www.tiddlywiki.com/#DownloadSoftware para maiores detalhes.";\nconfig.messages.subtitleUnknown = "(desconhecido)";\nconfig.messages.undefinedTiddlerToolTip = "'A ficha '%0' ainda não existe";\nconfig.messages.unsavedChangesWarning = "ATENÇÃO! Há alterações não salvas em TiddlyWiki\sn\snEscolha OK para salvar\snEscolha CANCEL para não salvar.";\nconfig.messages.confirmExit = "--------------------------------\sn\snHá alterações não salvas, se você continuar, irá perder todas as alterações feitas.\sn\sn--------------------------------";\n\nconfig.options.txtUserName = "SemNome";\n\nconfig.shadowTiddlers.OpçõesAvançadas = "<<option chkGenerateAnRssFeed>> Gerar um arquivo RSS\sn<<option chkOpenInNewWindow>> Abrir links em novas janelas\sn<<option chkSaveEmptyTemplate>> Ao salvar, criar um template vazio\sn<<option chkToggleLinks>> Ao clicar em links de fichas que estejam abertas, fechá-las.\sn ^^(passe o mouse por cima do link com Control ou outra tecla de modificação)^^\sn<<option chkHttpReadOnly>> Esconder configurações de edição quando vistas com HTTP\sn<<option chkForceMinorUpdate>> Tratar edições como Mudanças Menores para preservar data e hora\sn^^ clickar em 'salvar' precione Shift ou use o comando Ctrl-Shift-Enter^^\sn<<option chkConfirmDelete>> Confirmar antes de deletar uma ficha\snNúmero máximo de linhas no campo de edição da ficha: <<option txtMaxEditRows>>\sn \sn Nome da pasta para salvar os arquivos de backup: <<option txtBackupFolder>>\sn";\nconfig.shadowTiddlers.GettingStarted = "Para começar a usar esta TiddlyWiki vazia, terá de modificar as seguintes fichas:\sn* SiteTitle e SiteSubtitle: o título e o subtítulo do site, como pode ver acima (depois de 'salvar as alterações', eles aparecerão também na barra de título do navegador)\sn* MainMenu: o menu (usualmente à esquerda)\sn* DefaultTiddlers: contém o nome das fichas que aparecem quando a TiddlyWiki é aberta.\sn* Será também necessário inserir o nome de usuário para assinar as edições: <<option txtUserName>>\sn \sn p.s.: o colibri, a versão brasileira da [[TiddlyWiki|http://www.tiddlywiki.com/]], é uma tradução que foi possível graças ao arquivo [[PortugueaseLingo|http://checkettsweb.com/tw/portuguesetw.htm#PortugueseLingo]], que é a base da [[Portuguease TW|http://checkettsweb.com/tw/portuguesetw.htm]]. Nós temos aqui a nossa versão do [[PortugueaseLingo|http://checkettsweb.com/tw/portuguesetw.htm#PortugueseLingo]], que é o LingoBrasil. Agradecemos à equipe de Portugal pelo trabalho e esperamos contribuir também com novidades.";\n\nconfig.shadowTiddlers.SideBarTabs = "<<tabs txtMainTab 'Data' 'Tiddlers por ordem cronológica' TabTimeline 'Título' 'Todos os tiddlers' TabAll 'Conceitos' 'Fichas Classificadas' TabTags '+' 'Mais opções' TabMore>>";\n\nconfig.shadowTiddlers.TabMore = "<<tabs txtMoreTab Faltando 'Fichas faltando' TabMoreMissing Órfans 'Fichas órfans' TabMoreOrphans Ocultas 'Fichas ocultas' TabMoreShadowed>>";\nconfig.shadowTiddlers.SiteTitle = "Minha TiddlyWiki";\nconfig.shadowTiddlers.SiteSubtitle = "... um bloco de notas renovável e não linear";\nconfig.shadowTiddlers.OptionsPanel = "Estas opções de personalização ficam salvadas no navegador\sn\snIndique o seu nome de usuário para assinar os textos. Use uma WordWiki (por ex., JoséSilva)\sn<<option txtUserName>>\sn<<option chkSaveBackups>> Salvar Backups\sn<<option chkAutoSave>> Auto Salvar\sn<<option chkRegExpSearch>> RegExpBusca\sn<<option chkCaseSensitiveSearch>> Buscar Mai/Minús\sn<<option chkAnimate>> Ativar Animações\sn\snVer OpçõesAvançadas";\nconfig.shadowTiddlers.SideBarOptions = "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel opções 'Contém as opções que alteram a aparência da TiddlyWiki'>>\sn";\n\nconfig.views.editor.defaultText = "Escreva o texto para '%0'.";\nconfig.views.editor.tagChooser.popupNone = "Não há conceitos definidos";\nconfig.views.editor.tagChooser.tagTooltip = "Escolher o conceito '%0'";\nconfig.views.editor.tagChooser.text = "conceito existente";\nconfig.views.editor.tagChooser.tooltip = "Dentre os conceitos existentes, escolha aqueles que possam subordinar esta ficha";\nconfig.views.editor.tagPrompt = "Escreva os conceitos separados por espaços. Se necessário, use [[colchetes duplos]] ou WikiWords";\n\nconfig.views.wikified.defaultText = "A ficha '%0' não existe. Clique duas vezes para que seja criada.";\nconfig.views.wikified.defaultModifier = "SemNome";\nconfig.views.wikified.shadowModifier = "Ocultas";\nconfig.views.wikified.tag.labelTags = "Superordenados: ";\nconfig.views.wikified.tag.labelNoTags = "Sem conceitos.";\nconfig.views.wikified.tag.openAllText = "Abrir todas as fichas subordinadas a '%0'";\nconfig.views.wikified.tag.openAllTooltip = "Abrir todas estas fichas";\nconfig.views.wikified.tag.popupNone = "Não há outras fichas subordinadas a '%0'";\nconfig.views.wikified.tag.tooltip = "Abrir fichas subordinadas a '%0'";\n\nconfig.commands.saveTiddler.readOnlyText = "pronto";\nconfig.commands.saveTiddler.readOnlyTooltip = "Volta ao normal";\nconfig.commands.editTiddler.readOnlyTooltip = "Ver o código desta ficha";\nconfig.commands.editTiddler.readOnlyText = "código";\nconfig.commands.cancelTiddler.readOnlyText = "pronto!";\nconfig.commands.cancelTiddler.readOnlyTooltip = "Retorna ao modo normal";\n\nconfig.messages.rssFailed = "Não foi possível salvar o arquivo RSS";\nconfig.messages.rssSaved = "O arquivo RSS foi salvo com sucesso";\n\nconfig.messages.shadowedTiddlerToolTip = "A ficha '%0' ainda não existe, mas existe um modelo pré-definido para ela.";\n\nconfig.views.wikified.tag.openTag= "Abrir ficha '%0'";\n
Creating BulletPoints is simple.\n* Just add an asterisk\n* at the beginning of a line.\n** If you want to create sub-bullets\n** start the line with two asterisks\n*** And if you want yet another level\n*** use three asterisks\n* Edit this tiddler to see how it's done\n* You can also do NumberedBulletPoints
[[ContentManagementsystem|CMS]] é uma das coisas mais interessantes que conheci recentemente... não bem pelo tópico, que já conhecia, mas mais pelas ferramentas.\n\nInclusive, há uma competição onde podemos [[votar|http://www.packtpub.com/cms_award_final_five]] no que preferimos.\n\nOs [[finalistas|http://www.packtpub.com/article/final_five_announced]] atuais incluem alguns que já conheci, listados ao lado.\n\nO mais interesante nem é a capacidade de lidar com conteúdo variante (isso até o TiddlyWiki faz muito bem) mas sim a facilidade de instalção e personalização com temas, formatação, plugins...
<<calendar thismonth>><script>\n place.lastChild.style.width="100%";\n </script>
/***\n''Name:'' Calendar plugin\n''Author:'' SteveRumsby\n\n// // updated by Jeremy Sheeley to add cacheing for reminders\n// // see http://www.geocities.com/allredfaq/reminderMacros.html\n// // ''Changes by ELS 2006.08.23:''\n// // added handling for weeknumbers (code supplied by Martin Budden. see "wn**" comment marks)\n// // ''Changes by ELS 2005.10.30:''\n// // config.macros.calendar.handler()\n// // ^^use "tbody" element for IE compatibility^^\n// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\n// // createCalendarDays()\n// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^\n// // calendar stylesheet definition\n// // ^^use .calendar class-specific selectors, add text centering and margin settings^^\n\n\n!!!!!Configuration:\n<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//\n|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|\n|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|\n\n!!!!!Syntax:\n|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|\n|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|\n|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|\n|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|\n|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|\n|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|\n\n***/\n// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.\n\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\n\nconfig.macros.calendar.weekendbg = "#c0c0c0";\nconfig.macros.calendar.monthbg = "#e0e0e0";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n\n//}}}\n// //''Code section:''\n// (you should not need to alter anything below here)//\n//{{{\nif(config.options.txtCalFirstDay == undefined)\n config.options.txtCalFirstDay = 0;\nif(config.options.txtCalStartOfWeekend == undefined)\n config.options.txtCalStartOfWeekend = 5;\nif(config.options.chkDisplayWeekNumbers == undefined)//wn**\n config.options.chkDisplayWeekNumbers = false;\nif(config.options.chkDisplayWeekNumbers)\n config.options.txtCalFirstDay = 0;\n\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconfig.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead\n//}}}\n\n// //Is the given date a holiday?\n//{{{\nfunction calendarIsHoliday(date)\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {\n return true;\n }\n }\n return false;\n}\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n// ELS 2006.05.29: add journalDateFmt handling//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n \n // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)\n var text = store.getTiddlerText("SideBarOptions");\n this.journalDateFmt = "DD-MMM-YYYY";\n var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);\n if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }\n\n if (params[0] == "thismonth")\n {\n cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, today.getMonth());\n } \n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n {\n cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, params[1]-1);\n }\n else\n {\n cacheReminders(new Date(year, 0, 1, 0, 0), 366);\n createCalendarYear(tbody, year);\n }\n }\n window.reminderCacheForCalendar = null;\n}\n//}}}\n//{{{\n//This global variable is used to store reminders that have been cached\n//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.\nwindow.reminderCacheForCalendar = null;\n//}}}\n//{{{\nfunction cacheReminders(date, leadtime)\n{\n if (window.findTiddlersWithReminders == null)\n return;\n window.reminderCacheForCalendar = {};\n var leadtimeHash = [];\n leadtimeHash [0] = 0;\n leadtimeHash [1] = leadtime;\n var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);\n for(var i = 0; i < t.length; i++) {\n //just tag it in the cache, so that when we're drawing days, we can bold this one.\n window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; \n }\n}\n//}}}\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Previous year", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n //yearHeader.setAttribute("colSpan", 19);\n yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Next year", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg;\n\n/*\n back.setAttribute("colSpan", 2);\n\n var backYearHandler = function() {\n var newyear = year-1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(back, "<<", "Previous year", backYearHandler);\n*/\n var backMonHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Previous month", backMonHandler);\n\n\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n// month.setAttribute("colSpan", 3);\n// month.setAttribute("colSpan", 5);\n month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n\n// fwd.setAttribute("colSpan", 2);\n var fwdMonHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);\n/*\n var fwdYear = createTiddlyElement(row, "td", null, null, null);\n var fwdYearHandler = function() {\n var newyear = year+1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);\n*/\n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n //month.setAttribute("colSpan", 7);\n month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**\n for(var j = 0; j < 7; j++) {\n var d = j + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))\n cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n if (config.options.chkDisplayWeekNumbers){\n if (first<=max) {\n var ww = new Date(year,mon,first);\n createTiddlyElement(row, "td", null, null, "w"+ww.getWeek());//wn**\n }\n else createTiddlyElement(row, "td", null, null, null);//wn**\n }\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n }\n }\n }\n day++;\n }\n}\n//}}}\n\n// //We've clicked on a day in a calendar - create a suitable pop-up of options.\n// //The pop-up should contain:\n// // * a link to create a new entry for that date\n// // * a link to create a new reminder for that date\n// // * an <hr>\n// // * the list of reminders for that date\n//{{{\nfunction onClickCalendarDate(e)\n{\n var button = this;\n var date = button.getAttribute("title");\n var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));\n\n date = dat.formatString(config.macros.calendar.tiddlerformat);\n var popup = createTiddlerPopup(this);\n popup.appendChild(document.createTextNode(date));\n var newReminder = function() {\n var t = store.getTiddlers(date);\n displayTiddler(null, date, 2, null, null, false, false);\n if(t) {\n document.getElementById("editorBody" + date).value += "\sn<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n } else {\n document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n }\n };\n var link = createTiddlyButton(popup, "New reminder", null, newReminder); \n popup.appendChild(document.createElement("hr"));\n\n var t = findTiddlersWithReminders(dat, [0,14], null, 1);\n for(var i = 0; i < t.length; i++) {\n link = createTiddlyLink(popup, t[i].tiddler, false);\n link.appendChild(document.createTextNode(t[i].tiddler));\n }\n}\n//}}}\n\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");\n//}}}\n
// // override cookie settings for CalendarPlugin:\n//{{{\nconfig.options.txtCalFirstDay=6;\nconfig.options.txtCalStartOfWeekend=5;\n//}}}
Nem sempre trabalhar com OpenSource é uma questão de custo/beneficio, pois alguns programas são realmente muito bons, além de GRÁTIS. ;-D\n\nQuando conheci o [[ProgeCAD LT 2006]] reparei que ele dispunha de um conjunto de blocos pré desenhados bem interessante (o //about// não deixa você não reparar nisso) e quando fui ler mais a respeito reparei que essa funçao vinha desabilitada. \n\nComo eles tem uma versão comercial, achei que estivessem fazendo alarde de um dos módulos capados na versão gratuita. Achei que tinha encontrado //a fonte de fundos// oculta.\n\nMas não é bem assim, o ''Ale'' (nome do módulo) é disponivel sim, mas você tem que doar (a quantia que quiser/puder dispor) para o [[Médicos Sem Fronteiras|http://www.msf.org/]] ([[Doctors Without Borders|http://www.doctorswithoutborders.org/]]) no site do [[FirstGiving|http://www.firstgiving.com/progecadlt2005]].\n\nCom o comprovante, você recebe o link pro //download// do plugin.\n\nAdorei a iniciativa. E doei. E gostei do módulo.
Minha ChaveGPG pública para uso em qualquer assinatura ou email para mim:\n\nGPG Key Id [[pub 1024D/9ED8C7EA|http://keyserver.ubuntu.com:11371/pks/lookup?search=0x9ED8C7EA&op=index]]\n\n-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: SKS 1.0.10\n\nmQGiBEaw0iwRBADYmhIKNRdjIOgGEhMNxS9wlvCfrmMOiN4LLnRr4cjEvJyPiwKBQwa8XyH5\ntdGIvsd4rQ4YQ/OgoAKiQutRxeGv6h841lsaJIUDjBUHuCdMecxo0AGfb9JUPwwLA4DZHwya\nufGTKAPWzriB7uqfAWeSm6CA6+2yf65SInqeTYBLqwCgojesgeck4odf6SLUPGOznvnDyFcE\nAJN3uDz7+JbMsXhmwxoXdwi7idjvS5xuII3SnogZBLExXI4TjELPsxmzvpYGvHO5mS1DKIIX\nMtoRVQFocgEpKC7xZCC0365CCdw3V/WSCX3lO0a3vdo7Yq9CrM0Uu7pGiDKUQqrR9uZmjlIz\nfoE4R2q2tx57yC4IMs1dq7TNNWc4BAC4BNYna5pH+POrV7I796oidz2MbUa0EgG+201CHnNO\niu+SomDaxBO3gvXkF9uLak1IBTGvfyAU7ZGLK4jm/hvX8Z5aE+ezK5xf2wMv91LkEEEc4XTK\nXaSwmAy2X0kz7N0QemLsYEk7Pnd/pRY2dIFLIdb9J+64Ccsv0JV3KpXXFLQuRmFiaW8gVGF2\nYXJlcyBMZWl0YW8gPGZhYmlvLnRsZWl0YW9AZ21haWwuY29tPohGBBARAgAGBQJJRYZFAAoJ\nEPaz08bs2Ur9XHsAnjmu1q55SNeYNGPVXAsxrL8RbYRYAKDt+MxGJit9RufxIeeiGVGBxfaV\nT4hGBBARAgAGBQJJvw6XAAoJEF1R8Z23Mb7+jjEAmgKYQp+3AsMXVRMCtYV4hs3YNqFiAJ9U\nYz6b4E1SbcNaYZ2fdEPYF1wq/IhGBBARAgAGBQJJvw6kAAoJEPaz08bs2Ur94QcAoOJ9lTr/\nJwvzWzwy5F18EvGcAz1gAKDsLRSH+2bI1b80fJZW8+qpF3vmLohGBBARAgAGBQJLnVWEAAoJ\nELaF/8v1ph3ILNUAn2zFrbUywsZzJN3Pb+NXwIQ9r+TGAJ9qms1BX6ghCv787zZfzWWAgSiq\nQYheBBMRCAAGBQJLyLbGAAoJEFBv72NcmPt89O8BAJUgH26eAzgF3IaejyJwA+BtUVqNnips\n8/DMa3BVPf30AP4jHZ0hBeDutJSAlBkykTUMtNdC/dLww7LYHyQRYkUl/IhfBBMRAgAfAhsD\nBgsJCAcDAgQVAggDAxYCAQIeAQIXgAUCRrDXmgAKCRCtk5F6ntjH6lNJAJ9FK3lNWbEzMj1p\nkmXqVf2+/hcb3wCfVHxIvC8kXvlrRD0V+wCDTrRquIqIXwQTEQIAHwUCRrDSLAIbAwYLCQgH\nAwIEFQIIAwMWAgECHgECF4AACgkQrZORep7Yx+p2DQCeOaRlz/vdsodSi52NEB5UotlMAvcA\nnjjQbSFXldTjxcof1J6HxTKEdVwIiGUEExECACUCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheA\nBQJGsNMxBQkB4aoEAAoJEK2TkXqe2MfqWqYAn1WXE3FT3h7knRbh8jsROksJZUJQAKCNUYLu\n/3OoayrSY3hB2+HoZMrjSIkBHAQQAQIABgUCS8Ow1AAKCRCjWRW4nGFpKP1ZB/wJWMBZdLnF\nQPPlKbJ4cenasp2hd0laVDvo2/Zqm6TwDpMe+f1hjhWwtcMbLHy910auaAcWqoIwz/QUy9X5\nzcDZvuhWRWZ3lCQt6GF8525lQIeF1liDw/j3UnOxWRYB23tfJQSgBuvPGixnxgdyOLBS8TVh\nCNljsg/A/legpeuAiChlKSUWH8uE+/4HBS/5pyEo5Ye/sWGY4gEXt1OKJCMUgLVkdkMVwkj2\nh1ON1YM3KqZRkRIhZngkml61sWQrRiSsjAtaMiSUIyUiWooB/YG0p7fX/TjFWstKTQtDu6UY\nkHYgZ6L5+zv07MqcBwkgqdnJSD7OwCRjGcVGTRwECT2oiQEcBBABAgAGBQJLxGu8AAoJECpP\n+u5sbiaVXCUH/2dHTanv0UgiJUCWH8r6ZJ7sLNj/7m7S8Bpc6DGiWECpwF6YmJh1fwcc0zhS\nnYldEQrxBvARNpl6k2a8teM8supTh0rgyJB3OTZ5gveJHC+mXcyc6tOEZl/OkpqiCZf1Ebp/\nsJk0x9f6Qfz0ShJsz0yf+IJBz2AyL1mHtSm4WtXiVSlMkFuMhqRy0XTXWW5cGWTtoiyyTv0a\nbtixc7sCHqgIbXSuzSen/irSVZr2jodfePZtWWYy5KvEbFsregtCf4f3OdxFLvCek2jm7V5F\nYBOQRY7bCr2meYshD4mbJMeRHUv3iFiFtt2TkUCYMog7+cR/8nED4uwhgq6Csm7QaemJARwE\nEAECAAYFAkvHqboACgkQX+NWtFsVfu3Jlgf+OPPYqEDFeKUqCdQoJFujr2uZ5MyRbv3JEvwW\n0qpFVdWp3JTJ1+EXe1zFszdcDq2YAW6R98vgg7eBKPpJOoje07CDoooRY5Y4DApdTgKb2YWY\nly/SBt6LrugvFzMz9jPcT33pAvrjkH3CTlTsMu7k+k6BhtCmBUdFBHCqBLCmDnUdVTKyh2Ji\nnKUOFYp6o8n3FCG0uWOBhcpv0KMWNNbS1glzO1s8fadgciTjBN3LCLuB6flOUtkQcWBm6WzJ\nYgWqt29Qo93/hM3V5FQynjGv7mtzMWiQT6mJbcA6sMtT6qeDKZdS5ehMzsKmXoaMGRWL8kPm\nKYmznJ0wnETsQzfLG4kBHAQTAQIABgUCS8i2vgAKCRDxhyuM6cJ0bObYB/0TvKGsWcfEsHde\nF2CSc3yB0nexJblId2nMf/DdGnBcmR17OdjZMiBaT1Q2OZjVtCGXGPKLgIk9MDMzy3TtqOdN\nI1WmX0GpCcDmj+aXHbimETDJlebflcvWm5kd4yHq5Y+ePh5KiMypjthkalf+4tcODL/Ub/3T\ninOJeeC6pCOk6ahsQbdnvOKQlwvGa/k89ex4QtuN5viI3aR2eLG3/TER++w2Jo0lSpm/L3y+\nRUFqX9vly8kwZUkA0F4CTFQo40LtozJaJRgKcONxhsmrAyS0W7kWzT3UtvvaLf4ymuj8eLx+\n/uLaUmkAsf57gm5GviVZSgC6kV5bNL1D9ujuI27s0f8AAA8ezlwBEAABAQAAAAAAAAAAAAAA\nAP/Y/+AAEEpGSUYAAQEBAGAAYAAA/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEP\nEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQR\nFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AA\nEQgAZQBlAwEiAAIRAQMRAf/EABwAAAICAwEBAAAAAAAAAAAAAAUGAAcDBAgCAf/EAEYQAAED\nAwIDBQQFBwkJAAAAAAECAwQABREGIQcSMQgTQVFhFCJxgRUykaHTIzNCQ5LR8BYXGCWUo7HB\n0lJiZnODk6Kywv/EABkBAAMBAQEAAAAAAAAAAAAAAAQFBgMCAf/EACwRAAIBAwQABAUFAQAA\nAAAAAAECAwAEEQUSITETQVHwFCIyYXEjNLHB0YH/2gAMAwEAAhEDEQA/ANPjpxX1ppTiRcLR\nabqpuIlXOlKyTy5JGBuNtqryV2iOIbSuVF3Cj8Ff6q1e1284njRcGkqISWwT+2uqhS06o7JJ\nz12oDac5JopSCMAVb57RfE4nCboz+ys//VbMHtAcUZLgbTc2ipRwMBf+qqkg26U/IQ33a/eI\n8M+X76s7h9pFSJAkymlEpI5c/Gg729jt0znmmdhprXLjI4q1bBrPirOipdlXgIUoZAQoj5bk\n0bY1VrjnDUi9XBtfj7wwPurQgoDPKlBxijjco8gQ6gOtkYKVAZx6H+B6VLjW7gk5NUcugQYy\ngqN6n1IXUJVqO5lCjgkOJ6/s05Whu7TEoS5qi+hxXXlfbwP/AApVYsEaXGekW2SVLQOcxl/X\nTjc48x9vy6UZ01OcSkLdBSpJ5cYwcjwNHpfSsOHpRJYxxnDJzViQdJh1pJe1lqcLPgiSz1/7\ndEhoHbP8sdVf2ln8KtCwzxFa9tmr/KqHuI8fgBTfanX3x7TJyMjKWx+gPX1pxY3m/wCRxk++\nTSe7tfDOR1S//IH/AIy1V/aWfwqqvXV6Y0haJUG66z1E3qhp0Nx2FqSlmUkqGHW/ye6eU5I5\nspIIJ8Td2oJbymGY8AqLrj6AVpOOVIUCrf1AI+dV92nNFsax0W0AEtz4KlPRnh9ZBxuM+RwP\nsra4nVg3hnG3HP5/ysYojxu8/wCv9oxwSf8ApLTkmXKmybi6ZHIXJKgrlwkHCQNgN/ifsxKU\nOxiq6fzc3ePd0rTIj3pxr3huUhlo/wCZqUZZqwgXecn1oeThjXMPaZtQuXHG4g5wGxnA/wB9\ndALXp2OyyOZoLWN9xVl8bI6VcVru+Rvz8ufmf30stJAIBG2POpfUrx/FKA8CrLSrSMQK5HJr\n3a7fEZ5VBlHMMe8U5pjhuFOOT3R1oE0rlG23pmiUd4DBNIJct3VBHgcCmOK4VbZwcUQS5sCS\nRjxpYbuCWjsSfnWY3xpCfrDyNDmM0SDRC+alFhjquSHShxkcyMbHNZ+Fmt5mp5cmRcmGGHD+\nUZQ3sFJGxOCfh028qq/iZJdftPfIQpxClYSBvvQzg47Mi6li3CaXGS26Ee+5hLgOQdugA2pz\nawBLcyZ5zSm//UmEWPL3muzdMOJdc9rmKy7+qSTskU1We/ut3VEJUdakO9Tjf4iq4hty5sph\nEMh4u/mwlQx0zT1FW8m2OsEtJu7KuZt0jbA/RP3j55ruCdlcMhxikFzEu0qwyffNe+I8qVpW\nyPapYeLkKKtDkuOUAltBUAVIIHhnJB8MkEYwa8vPEzTtwt6LtdLi+mC+lSEMMnm5iDkHbevF\n81RL1Ci6WO4SVstjaTEKspIG/wBnjXK2qFLtF9cchF36L7xQQgnOPPHpRzeFO5Cgr9vU0CQ0\nKDfg12l2ZNQNak0rerixHDDX0uttAA6gMtHJ9d6lAuxQ8y/wuuC2BhP0ssfPuWqlUtmu2BRS\niX6zVLcalY4m3YY/Wk0qthR35dqNcd5zcfi7dGXFAZVzfeRQqCUOsJUk5yM7VH6ihWdjVzpT\nq1sgHpUTkEdceVYLpd41tjF19wBXgB1Nepz6YzC3Vfo9ADuT4CkqU2XFu3C6HmT1CM9PShoI\nA5y3VGTSsowvdY7pqi6TVKXHBjMZ2PTNSzXSU9KQyqQpefHNBWjMut6jIWwr2RSgAlOyUIyM\nqPyzTfbbKwy6XIoUW+cHmV4DwFNZ1hhTaRz786BtXlmJYEkD1/qna3yIbluTBmRkus5B5VCt\ny02qzCYHmSUKJyCvfHoKDMpSw2FOEJydh51jmXRqAwZTiuRAO2TikgjLcKafBwB83lVo2u5y\n7O4lcOc4hafeBQdvsNWr/ODaJfD9c9LaE3mGB3yAnqM+8vPikjPz+RPLNhvMq9TErZeIZSkq\nJ8D5Uxxrt7E6At1JCspUnOyh4g/x/hXsLyWrEYznsUNd2UN4gbOCOj78q0+JGppuoJrU2whx\nqQ6rl7xHVzP6Jp44UcNY+qGEwNWQn4M0M8yEPIKedPTmTnrXmz6LVqOLEXo9nmuDKu+KVKCU\nKAPiegHhVx8UL1Z5+gWLebk3btQOtoMbuFgvQ3Ukc2SPq43Tv13613HIbiJjnAXPec8EcA/9\nqY1K2KSIijJI9k1udn3QEnhvYr5YXnUvNO3ZcqMtJ6tKabSPnlCh8qlEOCtyvlz05Ke1DdF3\nKY3KLffLYba90ISQAEADGSTnGd6lXdiyvbqVJI+/dTc8bRyFW7FcQ9qeQpnjhOAUQOROf210\nV02Auzx1Zz7gNAe1scca5/XHdj/3XXnhlem5MIQnMBxA+ZFI9YhLIHHlVFoc4DFD50YvCOZv\nIGOXz3pQuUWRcnURUDCVKyoin2cwHkqbAHnWqzBQyklKQFHqaSRTeHyO6o5I94waERrPyttM\nIXyNJABI6mmJmM00y22gYSge6PE+pr4hsJAwnruTUU7y7Z/fWLuznmjIYggrW1GFJt3eJSSU\nKCsD0pN1Cs6gmM5bc7pncIz7ufM06OvJUkoXuk9Qd6DXl1qJH5gEgH7hW9s5QjA5ry6RWU56\nre0z3UOEY7AAURuSfGhl+YcmrW1bypx5ogrc58JTQJuU5KJZZe5Obdxedkjy+NE37pHgwW4N\nvSpxbihzK8VeprcQMj7vM++a4iMckWX4HvqnTR2pr/p5pCYdylRH/qrU04UlQO3UUcdu10kq\ncmOPqfcB5nFLAKiSckknc0sx47xhIekI94DmwfTem25wVRYqPZj3oWj66OhBpa7Dr70LcR7X\n3fauguzNcnLpomc+6oEouCm9vRtB/wA6lD+yUz3Gg7qjBGbss4P/ACmqlXmmAC0QD0qD1D9y\n/wCa5b7VmnZs3iJcrxDHehLpZW0BlQCTzc3w97FVTp8ToE5uSmO4OQ+9segO9Xd2hZLi+Jlz\nti1FthbxcSsHbnzgg+mAKUL2iW9aWVIYWyUqCnFNjGVY2PwNKLm6dGMbjINUGn2EcsSyq2GH\ndHrPPZnxEuoUMgDmFbilIG6utK9qcTEbadQl1Dik++hSSEKwev8AHrRdE+PI5VA5OKRPHg8d\nVQxvjhu6ySpHKSkZ+Vai3CU8x8tq9v8AJnKelarzoAPhXgWtt+KwvvKSc+X3UuatdfkRkhvc\nDrvRmQ9kHcVoPuNKBScHbbaioPkYNisJ28RCue6F26GGIiQSSojJ+NHtOQmW5HtTgClDoT4U\nMSrKgKyzbo3BhE8/KryzW0m+U4HZrFHSIZboUz3e9hlnCVD3R5Uw8LrvcLjpxuY4kPM94tJQ\nD4A4zVGyLlMvM1q3wuZx+SsNtjPUk4FW9p/2rSUJm1LSpoNDdQHU+JNYXdosEIU/Uf4rAXvx\nUvyfSP5rrfs6pSNJT1JxyqnqIwMfq0dfWpWn2YJhm6InvEpP9YqGR0/NN1Kq9KGLOP8AFRuo\n/un/ADXPvG3kb4iXF9Vqeln2tSQtKSU5wCE+Xr9lNPCXVc3TGmrq9eLBAXGuLQbS1J3Scc31\ngRhSTzbp8cDemJWi39bcT7hb5N6MC1M3JbzjTfKHXVBCchBI6kY9AAT4UV7T+ndH2Xh0iYqS\ni3PxiERY3fEqkjIBCQTklOQc/HPUUonhmYvKmBg++KZwzxKiRvzkVzS7e7S85LakD2P2dZKE\nrVzBafT93rS05IU/MdkwSe7Qr82Rg48/UUKuE4OOtqKcg+JFWTpjQUnUOmHb6xLat0iKjnjh\nagEPkZynbfp/jQbxxwqHPGaYfGSyMEHI9fOldM1TvL3XNnqR0rUkSXCsoWo8/lnamTVmkXG2\nkTLavkWocq09AVDrj50ly2LvGSpUhpOAMZSfs+NcxCN+QaMaRwOuK9yJOGlF1aiScDlrUQ8F\nEkkDw3NDJUmS2feSoAbbDrQ92XJJ58EDypjHa5FAyXoU80fnzxGb5knJ880qXa4PzHCVHANS\nU9LfwlaCfSs9utbrz6FPjlR1I8xRsMUcA3N3S64nlum2JnFWR2edMMy7k5fpYyIxxHSfFXif\nlV36htDF1jZwkOEYCsb0h8EkCNa1qdCWu9WpSATj3c7fdVkKfSASkgj0NSGozvLcsxPXVP7O\nBYYQoq0eylBct2hrpHcBB+lVqHljumun2VKNcAeU6WnKR0VOJ/u0VKttLObSMn0qQ1H90/5r\nWf4PWqdqpvVitQ32NPD3tKERnUIaQs9DylJJOMA5O+Om+KF6/wCz9YNc6gN81HqzVMmXyJbR\nyvMJQ2hPRKU91hI3JwOpJPUmpUokQRnnFDeK+MZoHL7KHD6S2hKrxqNBT+kl9kE/3VFrd2ct\nJwYUeIzqHUpTHc7xtSn2c59fyeD9lSpWZsbdhgrXa3MqnIajCeCGlxDeiLn3Rxp5XOQpbeUn\nGMg8m1BHuzZot3PPeL+f+qz+HUqVwNNtR0grYajdDpzWk72WNBOE8141Duc/nWfwq1f6JXDv\nBAvOpBk52eY/CqVK1FpCOlrk31we2rH/AEReHeci+anG2Pz7H4NZo3ZO4esrCjedSO48Fvs4\nP2NCpUro2sR4IrkXk46as107LOi58xMlWqNXR+VPKluPLZbQB8A1616hdl/SsQENa01sc/7c\n1lWPtaqVK5+Dg27doxXnxc27duOatLhxoyJoizPWuFcrhPbdfLxcmqQpYJSE4yhKRj3R4edS\npUrZEWNQqjAFYu7OxZjk1//ZiEYEEBECAAYFAkudVYQACgkQtoX/y/WmHcj3uQCfT1FEtsrC\nxRxIlqD9H8IymO5CEYsAnjT/NrNJCeg5oQBGYtnpIQP6YstPiEYEEBECAAYFAkudVboACgkQ\n9rPTxuzZSv1OLwCgzqdo2qDxCzhK3KVH9tEz84l5WmUAoIvTVf0YxuyGxeVyMWE30yH6HlCl\niF4EExEIAAYFAkvItsYACgkQUG/vY1yY+3zWWAD/Z3d7QMQ2auQSBUcq8a4KiNUTLJNrngxO\nS6NtHI28yecBAIH0OZVud/yTDlCUHBxHRszUgJIxTOh27G7eqzaQveR/iGAEExECACAFAklF\noUACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCtk5F6ntjH6tKVAJ9plrbrKXhjpTNS\n+HLJLAKPJKxRNQCfdh++ZPBwaYpj1sPsEQjutLwTuS+IYwQTEQIAIwIbAwYLCQgHAwIEFQII\nAwQWAgMBAh4BAheABQJJvxBeAhkBAAoJEK2TkXqe2Mfq/RUAmwRs1KdS7mnZHOSTqkDAD3kL\nblv9AKCJDJtbdgorojBco4Kt2je7PNkAQ4kBHAQQAQIABgUCS8Ow1AAKCRCjWRW4nGFpKKTY\nCACtF1lzjF+jbWTePk4yhIUUwfPV+oCWInV9mKKwyjRGpyMPOEfIRJtmxhow7odpihc5ZCoo\n5LQoo1y5GQsQCvQT2uWzJpoPYrPel/QFIecawAx13N63NwX8htxy9uYsIBRNFQlHzOjcuQci\nG/hRcoSgev16Gq71PD84Ar56p+KFj6z/myENd+8KKctpJb7urY2PiBTD0dmJviDOh6AzVJhL\nTM30yeqR7HLvLONvpMBjf+TBHBGH76VWtpDHpj8CIK8KP9VVdtQwDk20RQDok6/SEQ7RDtGP\nyguzeni+NQnBxRGaAaZHg7wIxDCfVEQLyb6yo/oycrUHHpNsliyTeKKsiQEcBBABAgAGBQJL\nxGu8AAoJECpP+u5sbiaV8JsH/RXGc/bOFUKZeRx9Do/E8/gaCMttGiLvu5/UON7cOwnibl6b\nEGpGHJmWXqUibZQT6IBf1LUTEScpmR1py3wattG/1Y6qcc8ZygTXRZK+rhSpLNv7KtYP2iWc\nj/El1JrBXcQmYqWnyhGEWGy7Ki7x4TuILglnL5C9iT91b3krGcLCB5NkYXZ1GwO33MPCVp89\nC111+sSI/afaDxq5YTsp5EKfAVjD0B5o3BFUbO5dX2Nd63HegdbPM4mEP4tGanKhVJu6e+zC\nJ3JPlaX9nmCw8TCA9oFedE5v0ghgy4wOOI9vCHE5I5WzgerfiMByk+cUZv4/XFWFCTAcAf7h\nSXA8UoqJARwEEAECAAYFAkvHqcsACgkQX+NWtFsVfu3HmwgAkvUFu1z8spgNP6PAQid3vlcP\nN7Xpg+IfndjpmPik6Rma/bdenRo6yd3eGA/lbXgzalauqn3BxB8BfpL/MtRxaFSHMJN9khJC\nik9lIRTNrFFTMgSIbhv1Tu2RGFPMd34GeBHmduf8otHOmVBPtS2OoxBrxbwrrCo18z7Jf4rJ\np7T2LUR/M4Zog0jJCAGVFzqJFKk8/dpubHn/ueNOvUxB4vYncAD9U12z6A8xDyvwMRWqs5gL\nWWKPcSTnicb58BR0S2qqKDlcbVfuaG/IC/5aEjLFEkDO7Ai50sk040EEnnkWAKaQ5U37qb2s\nkD7sFg6/gGKCIHLZl1e6InJ8f26blokBHAQTAQIABgUCS8i2vgAKCRDxhyuM6cJ0bA4IB/44\n7/wPXO3GeTfdQOu6pOd1TvBaerJMHON/r/K9HN0zHWtX9EWkyFTzExKH+tWFWRPWXate4kZg\nTN655sMO0jaSVeR7Hx+sKzm8kPJsiI9i9H3I/2aRAuKKXDQ79/tMXbq3ZGbEwP1zX2R1S29b\nEjXrUaEJ9Iw3cnUN0s41G4W6WKmIXmlaOP+GwswD7Vjx/V3ZR1h32pryUh0Yx1WAenHdW03U\nFzkOPpqJPJx8VYlsK0nUFZoq59S9UnVRCYUZMMoRUQbbzXNg+68H8K6UU9R7WKvzx7Dt1MuF\ncpxzfTBNc9byiyYf/H0zLb1+NM4T7oaeNuy7dI+GEWB51qCz8N2CuQENBEaw0iwBCADfgOI+\n9VOpB7uQC31ESr+y27vm2kPVhutXK5GX8kiPpgXEuQk7FYbCXAM+xZHm844BILm/nnM4bh9T\nxUqBfbaAEs2fZ2DoSfRf+90BR5ej5MF+sv3II08OiMVmMFSHqJoPZewyP3tS2rWxXDhXjHrq\niu6USjKgudWeHfwywMadPGnwSXO0LfWLJTEZUCvMJ94qpu87FZB5T2h9nAKZJcKFIw+U9FBh\nl+uYeVl37dBWGtlUSndRfBu+VBd6B65cgrK24yw4XI4XHEzAHvZJO542UycwSH+i23fFUOIg\nXQ6l4ZgctRGGcgFVTzjdUHOfj5/lzO27MQU8mxCA4KSUioPPABEBAAGJAWgEGBECAAkFAkaw\n0iwCGy4BKQkQrZORep7Yx+rAXSAEGQECAAYFAkaw0iwACgkQ/oCzSxeWZPJoiQf+LVQ9AT88\nJ8aI1Eg7XRqGu8BjhxmwuBN6Jj/ddneC7HqSIN2l/0hQ3BF1QQYgK1+rqQgaZN9FRmvzk3mG\nS4AD030dDwlSN4rXqnDaEbRlXQ3tbDMArjDx6/Ci80xRT8M28xoTh87dJsOV1JEUQVFyGVMG\n4bUBPQeRPpb7Qo+OhY5K9DX3KImqyKmTuoEY7jjkEl3WxxqAQVq+hRRohjf1CbPK3L2wl60z\ni+ko9DQkXdO9GjETtiIxj99AeWb7AWegMl+vLJaFVrJmpXlhP+HIBgnpxHV+jBrSltXb9+2Q\nmewuMhZ1GkTkig8OvXHWIY2OFR2H6M2YcA2dv9/AtWbLdUyHAJ95oU9mmOKuldehFrfpGL0N\nwFYUjwCfYSYvRgEYmQM0IM2ctuQeBlQaVkGJAWgEGBECAAkFAkaw0iwCGy4BKQkQrZORep7Y\nx+rAXSAEGQECAAYFAkaw0iwACgkQ/oCzSxeWZPJoiQf+LVQ9AT88J8aI1Eg7XRqGu8Bjhxmw\nuBN6Jj/ddneC7HqSIN2l/0hQ3BF1QQYgK1+rqQgaZN9FRmvzk3mGS4AD030dDwlSN4rXqnDa\nEbRlXQ3tbDMArjDx6/Ci80xRT8M28xoTh87dJsOV1JEUQVFyGVMG4bUBPQeRPpb7Qo+OhY5K\n9DX3KImqyKmTuoEY7jjkEl3WxxqAQVq+hRRohjf1CbPK3L2wl60zi+ko9DQkXdO9GjETtiIx\nj99AeWb7AWegMl+vLJaFVrJmpXlhP+HIBgnpxHV+jBrSltXb9+2QmewuMhZ1GkTkig8OvXHW\nIY2OFR2H6M2YcA2dv9/AtWbLdUyHAKCRwBJtKOdiV1JbnhgmuRcwepTfZQCcC2kzEhCrKuqq\nl+nDXbRkzggcKUU=\n=yqIX\n-----END PGP PUBLIC KEY BLOCK-----
Minhas ChavesSSH publicas de máquinas que posso vir a acessar.\n\nssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3UJ/XgDyCvK1kF8Y0pStJ2VBXNW94XQ/I0yxkBcdE8CpSIHXuQgAVWQn4/dILzlyWda+8lsubSvJMYcX2xzdgyw7WgE0EQd4Z/rGAQ7UDkdJ1/htmOXpa07gN+NxwZbyoiHnrzafPJ6I7YPbxWQ5uQdgbYCAZwjzpypq930A298ebksFgYKVhaT5zrKh9uoviKC33aTPz8HinYX+U8wavHVQ2kErgC8u2IQpcrd0N5TdTfjf1mIRT9fP/exBdhRd1axbDE0SgAVLeVvRW3yThvqt8WRtLzgHO2Hrx1TLJJI4fdYdQbt7v1brNbBraS8L9LbnG1jXph7QRlHdazTAfQ== ==leitao@beethoven\n\nssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAo634Qe8DgS0RQMtR8oceZLzpzMv6TS8FBW/8YMIohZ+9h8DCjmEP3jEnmfSmFSlzw0BhtdqZwFUolzzUGKmznYRnplxAMqTwCFBfODGIBWrrq4q/qig7iVPP5BfOhD98nPUy4/FH/9WfRZgcQefZBDGnRxBPdap/nrg0226072BVzITyjS6NLAVapsi7Yex0lC7tYmnOF4FdSgjxDJtMSN96Hy2Vys+qKiUAUDDpq1U0a9rpYZdWhJEz0N55klaxS3Nz+C40c/wDP5kwL7Ge2aIbdjW0ExwrqCZ43WvAE8NFNMG5/Pc4MWPmDaoU5hsA24FvdZ2Rrr8S8Ve09qDo7w== ==leitao@amz
<div class='header'>\n<div class='titleLine'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='siteMenu' class='siteMenu' refresh='content' tiddler='SiteMenu'></div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div macro='gradient vert #ffffff #cc9900'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n</div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='storyMenu' class='storyMenu' refresh='content' force='true' tiddler='StoryMenu'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<span style='display:none' macro='tiddler SiteStartup'></span>
[[TagglyTaggingStyles]]\n\n/***\n!TiddlyWiki Classic Color Scheme\nDesigned by Jeremy Ruston\n\nTo use this color scheme copy the [[ClassicTiddlyWiki]] contents into a tiddler and name it 'StyleSheet' also grab the [[ClassicTemplate]] and copy its contents into a tiddler named 'PageTemplate'.\n\n!Colors Used\n*@@bgcolor(#630):color(#fff): #630@@\n*@@bgcolor(#930): #930@@\n*@@bgcolor(#996633): #963@@\n*@@bgcolor(#c90): #c90@@\n*@@bgcolor(#cf6): #cf6@@\n*@@bgcolor(#cc9): #cc9@@\n*@@bgcolor(#ba9): #ba9@@\n*@@bgcolor(#996): #996@@\n*@@bgcolor(#300):color(#fff): #300@@\n*@@bgcolor(#000000):color(#fff): #000@@\n*@@bgcolor(#666): #666@@\n*@@bgcolor(#888): #888@@\n*@@bgcolor(#aaa): #aaa@@\n*@@bgcolor(#ddd): #ddd@@\n*@@bgcolor(#eee): #eee@@\n*@@bgcolor(#ffffff): #fff@@\n*@@bgcolor(#f00): #f00@@\n*@@bgcolor(#ff3): #ff3@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #963;\n}\n\na:hover{\n background: #963;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n background: #cc9;\n}\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header{\n background: #300;\n}\n\n.titleLine {\n color: #fff;\n padding: 5em 0em 1em .5em;\n}\n\n.titleLine a {\n color: #cf6;\n}\n\n.titleLine a:hover {\n background: transparent;\n}\n/*}}}*/\n/***\n!Main Menu /%=================================================%/\n***/\n/*{{{*/\n#mainMenu .button {\n color: #930;\n}\n\n#mainMenu .button:hover {\n color: #cf6;\n background: #930;\n}\n\n#mainMenu li{\n list-style: none;\n}\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n background: #c90;\n right: 0;\n}\n\n#sidebarOptions a{\n color: #930;\n border: 0;\n margin: 0;\n padding: .25em .5em;\n}\n\n#sidebarOptions a:hover {\n color: #cf6;\n background: #930;\n}\n\n#sidebarOptions a:active {\n color: #930;\n background: #cf6;\n}\n\n#sidebarOptions .sliderPanel {\n background: #eea;\n margin: 0;\n}\n\n#sidebarOptions .sliderPanel a {\n color: #930;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #cf6;\n background: #930;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #930;\n background: #cf6;\n}\n/*}}}*/\n/***\n!Sidebar tabs /%=================================================%/\n***/\n/*{{{*/\n.tabSelected,.tabContents {\n background: #eea;\n border: 0;\n}\n\n.tabUnselected {\n background: #c90;\n}\n\n#sidebarTabs {\n background: #c90;\n}\n\n#sidebarTabs .tabSelected{\n color: #cf6;\n background: #963;\n}\n\n#sidebarTabs .tabUnselected {\n color: #cf6;\n background: #930;\n}\n\n#sidebarTabs .tabContents{\n background: #963;\n}\n\n#sidebarTabs .txtMoreTab .tabSelected,\n#sidebarTabs .txtMoreTab .tabSelected:hover{\n background: #930;\n color: #cf6;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected,\n#sidebarTabs .txtMoreTab .tabUnselected:hover{\n background: #300;\n color: #cf6;\n}\n\n#sidebarTabs .txtMoreTab .tabContents {\n background: #930;\n}\n\n#sidebarTabs .tabContents a {\n color: #cf6;\n border: 0;\n}\n\n#sidebarTabs .button.highlight,\n#sidebarTabs .tabContents a:hover {\n background: #cf6;\n color: #300;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n background: #930;\n color: #fff;\n}\n\n#messageArea a:link, #messageArea a:visited {\n color: #c90;\n}\n\n#messageArea a:hover {\n color: #963;\n background: transparent;\n}\n\n#messageArea a:active {\n color: #fff;\n}\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #eea;\n border: 1px solid #930;\n}\n\n.popup hr {\n color: #963;\n background: #963;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #ba9;\n}\n\n.popup li a, .popup li a:visited {\n color: #300;\n}\n\n.popup li a:hover {\n background: #930;\n color: #eea;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .button {\n color: #930;\n}\n\n.tiddler .button:hover {\n color: #cf6;\n background: #930;\n}\n\n.tiddler .button:active {\n color: #fff;\n background: #c90;\n}\n\n.shadow .title {\n color: #888;\n}\n\n.title {\n color: #422;\n}\n\n.subtitle {\n color: #866;\n}\n\n.toolbar {\n color: #aaa;\n}\n\n.toolbar a,\n.toolbar a:hover{\n border: 0;\n}\n\n.tagging, .tagged {\n border: 1px solid #fff;\n background-color: #ffc;\n}\n\n.selected .tagging, .selected .tagged {\n border: 1px solid #aa6;\n background-color: #ffc;\n}\n\n.tagging .listTitle, .tagged .listTitle {\ncolor: #999999;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #eea;\n border: 0;\n}\n\n.sparktick {\n background: #930;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.zoomer {\n color: #963;\n border: 1px solid #963;\n}\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.viewer .button {\n background: #c90;\n color: #300;\n border-right: 1px solid #300;\n border-bottom: 1px solid #300;\n}\n\n.viewer .button:hover {\n background: #eea;\n color: #c90;\n}\n\n.viewer .imageLink{\n background: transparent;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #303030;\n}\n\n.viewer th, thead td {\n background: #996;\n border: 1px solid #606060;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #606060;\n}\n\n.viewer pre {\n border: 1px solid #963;\n background: #eea;\n}\n\n.viewer code {\n color: #630;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #606060;\n color: #666;\n}\n\n.highlight, .marked {\n background: #ff3;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #000;\n}\n\n.editor textarea {\n border: 1px solid #000;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n.editorFooter a {\n color: #930;\n}\n\n.editorFooter a:hover {\n color: #cf6;\n background: #930;\n}\n\n.editorFooter a:active {\n color: #fff;\n background: #c90;\n}\n/***\nPlace your custom CSS here\n***/\n/*{{{*/\n/* text alignments */\n.left\n { display:block;text-align:left; }\n.floatleft\n { float:left; }\n.right\n { display:block;text-align:right; }\n.floatright\n { float:right; }\n.center\n { display:block;text-align:center; }\n.wrap\n { white-space:normal }\n.nowrap\n { white-space:nowrap }\n\n/* font sizes */\n.big\n { font-size:14pt;line-height:120% }\n.medium\n { font-size:12pt;line-height:120% }\n.normal\n { font-size:9pt;line-height:120% }\n.small\n { font-size:8pt;line-height:120% }\n.fine\n { font-size:7pt;line-height:120% }\n.tiny\n { font-size:6pt;line-height:120% }\n.larger\n { font-size:120%; }\n.smaller\n { font-size:80%; }\n\n\n/*}}}*/
/***\n|''Name:''|CloseUnsavedOnCancel|\n|''Sourse''|http://jackparke.googlepages.com/jtw.html#CloseUnsavedOnCancel|\n|''Version:''|2.0.8 (16-Apr-2006)|\n|''Author:''|SimonBaird|\n|''Adapted By:''|[[Jack]]|\n|''Type:''|Plugin|\n!Description\nWhen you click new tiddler then click cancel I think the new tiddler should close automatically. This plugin implements that behavious.\n\n!Revision History\n* 1.0.1 (11-Oct-2005) by SimonBaird\n* 2.0.8 Made 2.0.x compatible by Jack on 16-Apr-2006\n\n!Code\n***/\n//{{{\n\nconfig.commands.cancelTiddler.handler = function(event,src,title) {\n if(story.hasChanges(title) && !readOnly)\n if(!confirm(this.warning.format([title])))\n return false;\n story.setDirty(title,false);\n if (!store.tiddlerExists(title) || store.fetchTiddler(title).modifier==config.views.wikified.defaultModifier) {\n story.closeTiddler(title,false);\n store.removeTiddler(title)\n } else {\n story.displayTiddler(null,title);\n }\n return false;\n}\n\n//}}}
http://cmap.ihmc.us/\n\nEditor de mapas de conceitos... parecido com FreeMind mas com outro foco.
/***\n!! CollapseTiddlersPlugin\n^^Author: Bradley Meck^^\n^^Source: http://gensoft.revhost.net/Collapse.html^^\n\n|ELS 2/24/2006: added fallback to "CollapsedTemplate if "WebCollapsedTemplate" is not found |\n|ELS 2/6/2006: added check for 'readOnly' flag to use alternative "WebCollapsedTemplate" |\n\n***/\n\nconfig.commands.collapseTiddler = {\ntext: "fold",\ntooltip: "Collapse this tiddler",\nhandler: function(event,src,title)\n{\nvar e = story.findContainingTiddler(src);\nif(e.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){\nvar t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nif (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\nif(e.getAttribute("template") != t ){\ne.setAttribute("oldTemplate",e.getAttribute("template"));\nstory.displayTiddler(null,title,t);\n}\n}\n}\n}\n\nconfig.commands.expandTiddler = {\ntext: "unfold",\ntooltip: "Expand this tiddler",\nhandler: function(event,src,title)\n{\nvar e = story.findContainingTiddler(src);\nstory.displayTiddler(null,title,e.getAttribute("oldTemplate"));\n}\n}\n\nconfig.macros.collapseAll = {\nhandler: function(place,macroName,params,wikifier,paramString,tiddler){\ncreateTiddlyButton(place,"Collapse All","",function(){\nstory.forEachTiddler(function(title,tiddler){\nif(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE])\nvar t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nif (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\nstory.displayTiddler(null,title,t);\n})})\n}\n}\n\nconfig.macros.expandAll = {\nhandler: function(place,macroName,params,wikifier,paramString,tiddler){\ncreateTiddlyButton(place,"Expand All","",function(){\nstory.forEachTiddler(function(title,tiddler){\nvar t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nif (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\nif(tiddler.getAttribute("template") == t) story.displayTiddler(null,title,tiddler.getAttribute("oldTemplate"));\n})})\n}\n}\n\nconfig.commands.collapseOthers = {\ntext: "focus",\ntooltip: "Expand this tiddler and collapse all others",\nhandler: function(event,src,title)\n{\nvar e = story.findContainingTiddler(src);\nstory.forEachTiddler(function(title,tiddler){\nif(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){\nvar t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nif (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\nif (e==tiddler) t=e.getAttribute("oldTemplate");\n//////////\n// ELS 2006.02.22 - removed this line. if t==null, then the *current* view template, not the default "ViewTemplate", will be used.\n// if (!t||!t.length) t=!readOnly?"ViewTemplate":"WebViewTemplate";\n//////////\nstory.displayTiddler(null,title,t);\n}\n})\n}\n}
<div class='toolbar' macro='toolbar expandTiddler collapseOthers -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div><span macro='tiddler DoubleClickForFocus'></span>
\n|Version|<<version>>|\n|DefaultTiddlers|Defines what to show at startup|\n|FrontPage|Site front page|\n|[[Intro]]|Site introduction|\n|LinksPanel|External Links to the right|\n|MainMenu|Defines the menu to the left|\n|NotaImportante|Site important notes|\n|[[Quotations]]|Quote of the day Quotations|\n|SideBarOptions|Options to the right|\n|SideBarTabs|Contents|\n|SiteTitle|Site title|\n|SiteSubtitle|Site subtitle|\n
/***\nJust some bits and pieces\n***/\n//{{{\nconfig.views.wikified.defaultText = "";\nconfig.views.editor.defaultText = ""; \nconfig.messages.messageClose.text = "X"; // default is "close"\nconfig.options.chkHttpReadOnly = false; // Enable editing so that visitors can experiment with it\n//}}}
Já tinha escrito isso antes num site que fiz a muuuuito tempo atras, ainda na UFRJ, que um maldito hacker invadiu e destruiu. Acho que sempre valha a pena mencionar.\n\nA Força é cinza!\n\nEla não privilegia o "lado negro" ou o "lado branco". São partes de um mesmo todo. O uso da energia universal é que distingue o papel do cavaleiro Iniciado na [[Força|CorDaForça]] (+++^[Jedi|Hacker]Usa sua experiência para algo útil...=== ou +++^[Sith|Cracker]Continua quebrando proteções, invadindo, contaminando...===)\n\nHá quem preze exarcebadamente pela paciência, pureza, calma, construção... há quem corra e prefira raiva, medo, pressa, destruição...\n\nVocê faz suas escolhas, e por isso mesmo, é tudo a mesma moeda.\n\nAcredito que se aplique a tudo na vida.
You can wrap any text in an HTML {{{<span>}}} or {{{<div>}}} with a specified CSS class. This allows custom CSS styling in a nice, modular way. By placing a rule in your StyleSheet tiddler like {{{.wrappingClass{color: #666; background: #bbb} }}} you can markup a piece of text in the tiddler using this code:\n\n{{{\n{{wrappingClass{Text that is now accentuated}}}\n}}}\n\n{{wrappingClass{Text that is now accentuated}}}\n\nBy default, the text is placed in a {{{<span>}}}. To use a {{{<div>}}} instead, insert a line break before the text:\n\n{{{\n{{wrappingClass{\nText that is now accentuated}}}\n}}}\n\n{{wrappingClass{\nText that is now accentuated}}}\n
http://www.addictinggames.com/dangerousdavebrutalbob.html
/***\n''Date Plugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#DatePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n^^last update: <<date tiddler "DDD, MMM DDth, YYYY hh:0mm:0ss">>^^\n\nThere are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW. While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier. This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.\n\nThis plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30). Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to changes made on that date as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed). This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.\n!!!!!Usage\n<<<\nWhen installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.\n\nHowever, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:\n* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.\n* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values. \n* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"\n>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^\n>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^\n>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^\n>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^\n* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format\n\nIn addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:\n\n''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' \n\nNote that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:\n* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.\n* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.\n<<<\n!!!!!Examples\n<<<\nThe current date: <<date>>\nThe current time: <<date today "0hh:0mm:0ss">>\nToday's blog: <<date link today "DDD, MMM DDth, YYYY">>\nRecent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>\nThe first day of next month will be a <<date Y M+1 1 "DDD">>\nThis tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>\nThe SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>\nThis document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>\n<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DatePlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.05.09 [2.2.1]'' added "todaybg" handling to set background color of current date. Also, honor excludeLists tag when getting lists of tiddlers. Based on suggestions by Mark Hulme.\n''2006.05.05 [2.2.0]'' added "linkedbg" handling to set background color when a 'dated tiddler' exists. Based on a suggestion by Mark Hulme.\n''2006.03.08 [2.1.2]'' add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler. Thanks to Jeremy Sheeley for these additional tweaks.\n''2006.03.06 [2.1.0]'' hasReminders() nows uses window.reminderCacheForCalendar[] when present. If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders. Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").\n''2006.02.14 [2.0.5]'' when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.\n''2006.02.05 [2.0.4]'' added var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.01.18 [2.0.3]'' In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.\n''2006.01.11 [2.0.2]'' correct 'weekend' override detection logic in showDate()\n''2006.01.10 [2.0.1]'' allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)\nadded flag param to showDate() API to override internal weekend[] array\n''2005.12.27 [2.0.0]'' Update for TW2.0\nAdded parameter handling for 'linkformat'\n''2005.12.21 [1.2.2]'' FF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.\n''2005.11.07 [1.2.1]'' added support for "tiddler" dynamic date parameter\n''2005.11.06 [1.2.0]'' added support for "tiddler:title" dynamic date parameter\n''2005.11.03 [1.1.2]'' when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.\n''2005.11.03 [1.1.1]'' Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).\n''2005.11.01 [1.1.0]'' corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...\n''2005.10.31 [1.0.1]'' documentation and code cleanup\n''2005.10.31 [1.0.0]'' initial public release\n''2005.10.30 [0.9.0]'' pre-release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.date = {major: 2, minor: 2, revision: 1, date: new Date(2006,5,9)};\n//}}}\n\n//{{{\nconfig.macros.date = {\n format: "YYYY.0MM.0DD", // default date display format\n linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format\n linkedbg: "#babb1e", // "babble"\n todaybg: "#ffab1e", // "fable"\n weekendbg: "#c0c0c0", // "cocoa"\n holidaybg: "#ffaace", // "face"\n modifiedsbg: "#bbeeff", // "beef"\n remindersbg: "#c0ffee", // "coffee"\n holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\n weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]\n};\n//}}}\n\n//{{{\nconfig.macros.date.handler = function(place,macroName,params)\n{\n // do we want to see a link, a popup, or just a formatted date?\n var mode="display";\n if (params[0]=="display") { mode=params[0]; params.shift(); }\n if (params[0]=="popup") { mode=params[0]; params.shift(); }\n if (params[0]=="link") { mode=params[0]; params.shift(); }\n // get the date\n var now = new Date();\n var date = now;\n if (!params[0] || params[0]=="today")\n { params.shift(); }\n else if (params[0]=="filedate")\n { date=new Date(document.lastModified); params.shift(); }\n else if (params[0]=="tiddler")\n { date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }\n else if (params[0].substr(0,8)=="tiddler:")\n { var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }\n else {\n var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));\n var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));\n var d = eval(params.shift().replace(/D/ig,now.getDate()+0));\n date = new Date(y,m-1,d);\n }\n // date format with optional custom override\n var format=this.format; if (params[0]) format=params.shift();\n var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();\n showDate(place,date,mode,format,linkformat);\n}\n//}}}\n\n//{{{\nwindow.showDate=showDate;\nfunction showDate(place,date,mode,format,linkformat,autostyle,weekend)\n{\n if (!mode) mode="display";\n if (!format) format=config.macros.date.format;\n if (!linkformat) linkformat=config.macros.date.linkformat;\n if (!autostyle) autostyle=false;\n\n // format the date output\n var title = date.formatString(format);\n var linkto = date.formatString(linkformat);\n\n // just show the formatted output\n if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }\n\n // link to a 'dated tiddler'\n var link = createTiddlyLink(place, linkto, false);\n link.appendChild(document.createTextNode(title));\n link.title = linkto;\n link.date = date;\n link.format = format;\n link.linkformat = linkformat;\n\n // if using a popup menu, replace click handler for dated tiddler link\n // with handler for popup and make link text non-italic (i.e., an 'existing link' look)\n if (mode=="popup") {\n link.onclick = onClickDatePopup;\n link.style.fontStyle="normal";\n }\n\n // format the popup link to show what kind of info it contains (for use with calendar generators)\n if (!autostyle) return;\n if (hasModifieds(date))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n if (hasReminders(date))\n { link.style.textDecoration="underline"; }\n if(isToday(date))\n { link.style.border="1px solid black"; }\n\n if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )\n { place.style.background = config.macros.date.weekendbg; }\n if(isHoliday(date)&&(config.macros.date.holidaybg!=""))\n { place.style.background = config.macros.date.holidaybg; }\n if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))\n { place.style.background = config.macros.date.modifiedsbg; }\n if (store.tiddlerExists(linkto)&&(config.macros.date.linkedbg!=""))\n { place.style.background = config.macros.date.linkedbg; }\n if (hasReminders(date)&&(config.macros.date.remindersbg!=""))\n { place.style.background = config.macros.date.remindersbg; }\n if(isToday(date)&&(config.macros.date.todaybg!=""))\n { place.style.background = config.macros.date.todaybg; }\n}\n//}}}\n\n//{{{\nfunction isToday(date) // returns true if date is today\n { var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }\n\nfunction isWeekend(date) // returns true if date is a weekend\n { return (config.macros.date.weekend[date.getDay()]); }\n\nfunction isHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0MM/0DD/YYYY");\n var shortHoliday = date.formatString("0MM/0DD");\n for(var i = 0; i < config.macros.date.holidays.length; i++) {\n var holiday=config.macros.date.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n//}}}\n\n//{{{\n// Event handler for clicking on a day popup\nfunction onClickDatePopup(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n // always show dated tiddler link (or just date, if readOnly) at the top...\n if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))\n createTiddlyLink(popup,this.date.formatString(this.linkformat),true);\n else\n createTiddlyText(popup,this.date.formatString(this.linkformat));\n addModifiedsToPopup(popup,this.date,this.format);\n addRemindersToPopup(popup,this.date,this.linkformat);\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n//{{{\nfunction indexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n var modifieds= { };\n var tiddlers = store.getTiddlers("title","excludeLists");\n for (var t = 0; t < tiddlers.length; t++) {\n var date = tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!modifieds[date])\n modifieds[date]=new Array();\n modifieds[date].push(tiddlers[t].title);\n }\n return modifieds;\n}\nfunction hasModifieds(date) // returns true if date has modified tiddlers\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addModifiedsToPopup(popup,when,format)\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n createTiddlyElement(popup,"br",null,null,null);\n }\n }\n}\n//}}}\n\n//{{{\nfunction indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date\n{\n var reminders = { };\n if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed\n // DEBUG var starttime=new Date();\n var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);\n for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;\n // DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\sn";\n // DEBUG out+="startdate: "+date.toLocaleDateString()+"\sn"+"leadtime: "+leadtime+" days\sn\sn";\n // DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\sn"; }\n // DEBUG alert(out);\n }\n return reminders;\n}\n\nfunction hasReminders(date) // returns true if date has reminders\n{\n if (window.reminderCacheForCalendar)\n return window.reminderCacheForCalendar[date]; // use calendar cache\n if (!config.macros.date.reminders)\n config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache\n return (config.macros.date.reminders[date]);\n}\n\nfunction addRemindersToPopup(popup,when,format)\n{\n if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed\n\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(diff<1)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n createTiddlyElement(popup,"br",null,null,null);\n }\n if (readOnly) return; // omit "new reminder..." link\n var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");\n var title = when.formatString(format);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n // show tiddler editor\n story.displayTiddler(null, title, 2, null, null, false, false);\n // find body 'textarea'\n var c =document.getElementById("tiddler" + title).getElementsByTagName("*");\n for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;\n // append reminder macro to tiddler content\n if (i<c.length) {\n if (store.tiddlerExists(title)) c[i].value+="\sn"; else c[i].value="";\n c[i].value += "<<reminder";\n c[i].value += " day:"+when.getDate();\n c[i].value += " month:"+(when.getMonth()+1);\n c[i].value += " year:"+when.getFullYear();\n c[i].value += ' title:"Enter a title" >>';\n }\n };\n}\n//}}}\n
// // date plugin calendar colors\n//{{{\nconfig.macros.date.holidays=[ "01/01", "01/21", "09/07", "12/24" ]; // NewYearsDay, Fabio's Birthday (hooray!), IndependenceDay(BR), XmasEve\nconfig.macros.date.weekend=[ 1,0,0,0,0,0,1 ]; // day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6\nconfig.macros.date.format="YYYY.0MM.0DD"; // default date display format\nconfig.macros.date.linkformat="YYYY.0MM.0DD"; // 'dated tiddler' link format\nconfig.macros.date.weekendbg="#c0c0c0";\nconfig.macros.date.holidaybg="#ffaace";\nconfig.macros.date.modifiedsbg="#bbeeff";\nconfig.macros.date.linkedbg="#babb1e";\nconfig.macros.date.remindersbg="#c0ffee";\n//}}}\n
/***\n!Colors Used\n*@@bgcolor(#8cf): #8cf - Background blue@@\n*@@bgcolor(#18f): #18f - Top blue@@\n*@@bgcolor(#04b): #04b - Mid blue@@\n*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\n*@@bgcolor(#ffc): #ffc - Bright yellow@@\n*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\n*@@bgcolor(#db4): #db4 - Background yellow@@\n*@@bgcolor(#841): #841 - Border yellow@@\n*@@bgcolor(#703):color(#fff): #703 - Title red@@\n*@@bgcolor(#866): #866 - Subtitle grey@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #04b;\n}\n\na:hover{\n background: #04b;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #703;\n background: #8cf;\n}\n\n.button {\n color: #014;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #014;\n background: #fe8;\n border-color: #db4;\n}\n\n.button:active {\n color: #fff;\n background: #db4;\n border: 1px solid #841;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #04b;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #8c9;\n}\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #014;\n background: #eee;\n border-left: 1px solid #ccc;\n border-top: 1px solid #ccc;\n border-right: 1px solid #ccc;\n}\n\n.tabUnselected {\n color: #fff;\n background: #999;\n}\n\n.tabContents {\n color: #014;\n background: #eee;\n border: 1px solid #ccc;\n}\n\n.tabContents .button {\n border: 0;}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #04b;\n}\n\n#sidebarOptions .sliderPanel {\n background: #8cf;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #04b;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #04b;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #04b;\n background: #fff;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border: 1px solid #841;\n background: #db4;\n color: #014;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #014;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #18f;\n border: 1px solid #04b;\n}\n\n.popup hr {\n color: #014;\n background: #014;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #04b;\n}\n\n.popup li a, .popup li a:visited {\n color: #eee;\n border: none;\n}\n\n.popup li a:hover {\n background: #014;\n color: #fff;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #866;\n}\n\n.title {\n color: #703;\n}\n\n.subtitle {\n color: #866;\n}\n\n.toolbar {\n color: #04b;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #014;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #8cf;\n border: 0;\n}\n\n.sparktick {\n background: #014;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #db4;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #db4;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #fe8;\n background: #ffc;\n}\n\n.viewer code {\n color: #703;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fe8;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #04b;\n}\n\n.editor textarea {\n border: 1px solid #04b;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
FrontPage
| source file|//none//|\n| attached on|10 September 2006 by FabioLeitao|\n| description|Captura da Tela|\n| embedded data|//none//|\n| local link|//none//|\n| remote link|/%REMOTE_LINK%/[[https://leitao.redirectme.net/files/Captura_da_tela_mini.png|https://leitao.redirectme.net/files/Captura_da_tela_mini.png]]|\n
http://www.gnome.org/projects/dia\n\nEditor de organogramas.
http://www.dimdim.com\n\nSite de webconference com webcam e audio altamente interativo
Vamos considerar que o que você ler aqui está sob a [[Creative Commoms Attribution-ShareAlike|http://creativecommons.org/licenses/by-sa/3.0/]], na mesma [[filisofia|http://www.ubuntu.com/ubuntu/philosophy]] do Ubuntu.\n\nAté talvez possa existir quem leia o que escrevo, mas se quiser copiar, queira por favor citar fonte. \n\nPoderia ser assim:\nfonte: Fabio Leitao at http://supere.tiddlyspot.com\n\nTambém ficaria muito feliz se, por acaso, me avisassem toda vez que fizerem isso, que é para eu ficar bastante metido.\n\nComo todos as variantes de TiddlyWiki, a própria página é um software autonomo e portátil, e é regulado como [[OpenSource|http://tiddlywiki.com/#OpenSourceLicense]] segundo a licensa [[BSD|http://www.opensource.org/licenses/bsd-license.php]], e se utiliza de plugins que podem ou não estar sob as mesmas condições. O texto da licensa pode ser lido vendo o código fonte da página.\n\nMantenho ainda uma referência [[legal|LegalStatements]] comlpeta.
Quer mais que um TiddlyWiki, minha primeira sugestão tem que ser [[Drupal|http://www.drupal.org/]].\n\nNão é de longe tão fácil de instalar quanto o [[Mambo]] ou [[Joomla]], salva se voce estiver num Ubuntu ou outro Debian-like... a um {{{apt-get install}}} de distância. Mas vale a pena cada transtorno inicial. E prometo que serão poucos e pequenos.\n\nA seguir, peguei do próprio site a descrição:\n<<<\n//Drupal is software that allows an individual or a community of users to easily publish, manage and organize a great variety of content on a website. Tens of thousands of people and organizations have used Drupal to set up scores of different kinds of web sites, including\n* community web portals and discussion sites\n* corporate web sites/intranet portals\n* personal web sites\n* aficionado sites\n* e-commerce applications\n* resource directories\nDrupal includes features to enable\n* content management systems\n* blogs\n* collaborative authoring environments\n* forums\n* newsletters\n* picture galleries\n* file uploads and download\nand much more//. \n<<<\nComo nem tudo é perfeito, encontrei algumas barreiras:\n#Você tem que escrever em {{{<TAG HTML>}}}, ou instalar uma extenção de editor, ou para entender formatação Wiki... o que pode atrapalhar alguns usuários.\n#Acabou... não encontrei outro problema ainda.\n\nComo exemplo, voce pode visitar o MeuBlog, foi todo feito em [[Drupal]], e está rodando num [[servidor bem fraquinho]].
{{{\n[img[title|filename]]\n[img[filename]]\n[img[title|filename][link]]\n[img[filename][link]]\n}}}\nImages can be included by their filename or full URL. It's good practice to include a title to be shown as a tooltip, and when the image isn't available. An image can also link to another tiddler or or a URL\n[img[Romanesque broccoli|fractalveg.jpg][http://www.flickr.com/photos/jermy/10134618/]]\n{{{\n[img[Fractal vegetable|fractalveg.jpg]]\n[img[This is shown as a tooltip|http://example.com/image.jpg]]\n[img[http://example.com/image.jpg]]\n[img[http://example.com/image.jpg][ExampleDotCom]]\n}}}\nThe tooltip is optional.\n\n[<img[Forest|forest.jpg][http://www.flickr.com/photos/jermy/8749660/]][>img[Field|field.jpg][http://www.flickr.com/photos/jermy/8749285/]]You can also float images to the left or right: the forest is left aligned with {{{[<img[}}}, and the field is right aligned with {{{[>img[}}}.\n@@clear(left):clear(right):display(block):You can use CSS to clear the floats@@\n{{{\n[<img[A woody bit of Hampstead Heath|forest.jpg]]\n[>img[A field near Milton Keynes|field.jpg]]\n}}}
http://www.snapfiles.com/get/eraser.html\n\nApagador definitivo de arquivos (Windows).\n\nCuidado, pois nem o [[Restoration]] consegue recuperar.
Like most wikis, TiddlyWiki supports a range of simplified character formatting:\n| !To get | !Type this |h\n| ''Bold'' | {{{''Bold''}}} |\n| ==Strikethrough== | {{{==Strikethrough==}}} |\n| __Underline__ | {{{__Underline__}}} (that's two underline characters) |\n| //Italic// | {{{//Italic//}}} |\n| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@highlight@@ | {{{@@highlight@@}}} |\n<<<\nThe highlight can also accept CSS syntax to directly style the text:\n@@color:green;green coloured@@\n@@background-color:#ff0000;color:#ffffff;red coloured@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@\n<<<\n\n//For backwards compatibility, the following highlight syntax is also accepted://\n{{{\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n}}}\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@
[>img[Get Ubuntu|https://wiki.ubuntu.com/WebsiteButtons?action=AttachFile&do=get&target=ubuntu_button_80x15_shaded.png][http://www.ubuntu.com/]]Entre em [[contato|mailto:fabioDOTtleitaoATgmailDOTcom]] por email ou visite MeuBlog ou minha [[Dashboard|http://leitao-gtd.tiddlyspot.com]] GTD ou leia o meu [[CV|http://www.linkedin.com/in/fabioleitao]].\n[>img[The Ubuntu Counter Project - user number # 12997|http://ubuntucounter.geekosophical.net/img/ubuntu-blogger.php?user=12997][http://ubuntucounter.geekosophical.net/]]\n{{floatright{[[Registered Linux User #347327|http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=347327]]}}}
/***\n|Name|FlickrGreetingMacro|\n|Created by|PeterKirkland|\n|Version|1.0.1|\n|Requires|~TW2.x|\n!Description\nIt replicates the random greeting messages from\n[[Flickr|http://www.flickr.com/]] in a TiddlyWiki macro.\n\n!History\n* 25-Mar-06, version 1.0.1, couple of tweaks by SimonBaird\n** added flickrGreetingCookie\n** made WelcomeMessage into array literal\n** removed ! since I wanted "Hola and welcome to..."\n* 24-Mar-06, version 1.0.0, first version\n\n!Examples\n|!Source|!Output|h\n|{{{<<flickrGreeting>>}}}|<<flickrGreeting>>|\n|{{{<<flickrGreetingCookie>>}}}|<<flickrGreetingCookie>>|\n|{{{<<flickrGreeting Peter>>}}}|<<flickrGreeting Peter>>|\n|{{{<<flickrGreeting 'Peter Kirkland'>>}}}|<<flickrGreeting 'Peter Kirkland'>>|\n(You can use (single or double) quotes or double square brackets for\nparams with spaces)\n\n!Notes\n*I created this to re-create the international greetings that Flickr uses.\n*I use it in a tiddler linked to my DefaultTiddlers to get a pleasant welcome message!\n*To make the macro work you have to give this tiddler a tag of systemConfig then save and reload.\n*Thanks to Simon Baird for his HelloWorldMacro which taught me how to use macros, and also for his [[MonkeyPirateTiddlyWiki|http://simonbaird.com/mptw/]]!\n\n!Code\n***/\n//{{{\n\n// this part is not actually required but useful to other people using your plugin\nversion.extensions.FlickrGreetingMacro = { major: 1, minor: 0, revision: 1, date: new Date(2006,3,24) };\n\nconfig.macros.flickrGreetingCookie = {};\nconfig.macros.flickrGreetingCookie.handler = function (place,name,params) {\n wikify("<<flickrGreeting " + config.options.txtUserName + ">>", place);\n}\n\nconfig.macros.flickrGreeting = {};\nconfig.macros.flickrGreeting.handler = function (place,name,params) {\n //List of greetings:\n var WelcomeMessage = [\n "Hola",\n "Hala",\n "Shalom",\n "Ni hao",\n "Kumusta",\n "'Allo",\n "G'day",\n "Hoi",\n "Giorno",\n "Hi",\n "Hej",\n "Olá",\n "Ahoy",\n "Salut",\n "Hello",\n "Hoi",\n "Oi",\n "Hoi",\n "Aloha",\n "Bonjour",\n "Guten Tag",\n "Yo",\n "Shalom",\n "Namaste",\n "Ciao"\n ];\n //randomness:\n var index = Math.floor(Math.random() * WelcomeMessage.length);\n //output:\n var who = params.length > 0 ? (" "+params[0]) : "";\n wikify(WelcomeMessage[index] + who /* + "!" */, place);\n}\n\n//}}}\n
Dicas de [[Formatação]] do texto na wiki.
http://www.freebsd.org\n\nUm OS realmente seguro, o mais popular dos BSD modernos. Não confunda com Linux, isto aqui é Unix de verdade (apesar de ter biblioteca de compatibilidade bem flexível)\n\nMuitos programas e servidores bem legais disponíveis mas sinto falta de alguns programas do Linux. Tenho certeza que me acustumo.\n\nRequer paciência e uma certa curva de aprendisado.
http://freemind.sourcefourge.net\n\nFerramenta de organização mental e mapeamento em árvores interrelacioadas.
<<flickrGreetingCookie>>\n \nEste é o [[Supere-se!]]. Aqui é tudo+++^[Super|Super explicação]Desculpem pela piada infame.+++^7em^[▾|mais]Não resisti.===\n===.\n<<<\n//"<<QOTD Quotations>>"//\n<<<\n<<tiddler Intro>>\n!!!Avisos Importantes! \n<<tiddler NotaImportante>>\n!!!Isso é questão de lógica, não de reciocinio!\n<<tagCloud systemTiddlers systemConfig tagExample demotag alpha authoring test excludeMissing excludeLists excludeSearch WoodshopPackage ThemePackage stylesheets includeNew full inline config CSS editing EditTemplates 2006/09 2006/10 2006/11 2007/03 2007/05 2009/04>>
Coleção de Plugins ou Links de coisas engraçadinhas.\n\nQuem sabe o que vem parar aqui? Jogos? Animações? Videos no Youtube?
http://www.sysinternals.com/Utilities/Fundelete.html\n\nSubstitui a lixeira do Windows para nao perder mais arquivos apagados.
http://www.gimp.org\n\nEditor gráfico bitmap.
O [[GPLI|http://glpi-project.org/spip.php?lang=en]] é um tremendo centro de comandos para gestão de parque de informática cobrindo os principais aspectos de um escritório de tecnologia para //outsourcing// e consultoria.\n\nDe controle de contratos e SLA de atendimento em //helpdesk//, até inventário de equipamentos ativos e softwares passando pelos processos de um projeto com seu planejamento, com relatórios detalhados.\n\nPor ter sido desenvolvido em Francês, pode atralahar quem não entende a lingua, mas tem boa documentação em Inglês, e nas traduções até mesmo em ~PT-BR. \n\nTem um plguin de integração com o [[OCS|OCS Inventory NG]] mas ainda não aprendi a usar muito bem.
[[Getting Things Done|http://en.wikipedia.org/wiki/Getting_Things_Done]] é mais uma idéia ou conceito de como se organizar, desenvolvida por [[David Allen|http://davidco.com/what_is_gtd.php]], para tentar ter uma vida produtiva e menos estressante.\n\nEstarei tentando chegar lá usando esta versão do MonkeyGTD montando a minha [[Dashboard|http://leitao-gtd.tiddlyspot.com]] [[GTD]].\n\nPode montar o seu, baseado em [[MPTW]], vá [[aqui|http://monkeygtd.tiddlyspot.com]].
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>
http://maps.google.com
<<goto width:10em width:10em>>
/***\n''GotoPlugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#GotoPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\n''View a tiddler by typing its title and pressing //enter//.'' Input just enough to uniquely match a single tiddler title and ''press //enter// to auto-complete the title for you!!'' If multiple titles match your input, a list 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//'' being displayed, press //escape// to clear the current text input and start over.\n\nNote: ''At any time, you can move the focus directly to the text input field by using the ~ALT-G keyboard shortcut.''\n!!!!!Example\n<<<\nsyntax: {{{<<goto quiet inputstyle liststyle>>}}}\nAll parameters are optional.\n* ''quiet'' prevents //automatic// display of the list as each character is typed. To view the list when ''quiet'', use //down// or //enter//.\n* ''inputstyle'' and ''liststyle'' are CSS declarations that modify the default input and listbox styles. Note: styles containing spaces must be surrounded by ({{{"..."}}} or {{{'...'}}}) or ({{{[[...]]}}}).\n{{{<<goto>>}}}\n<<goto>>\n{{{<<goto quiet>>}}}\n<<goto quiet>>\n{{{<<goto width:20em width:20em>>}}}\n<<goto width:20em width:20em>>\n<<<\n!!!!!Configuration\n<<<\nThe following ~TiddlyWiki search options (see AdvancedOptions) are applied when matching tiddler titles:\n><<option chkRegExpSearch>> use regular expressions (text patterns)\n><<option chkCaseSensitiveSearch>> use case sensitive matching\nYou can also create a tiddler tagged with <<tag systemConfig>> to control listing of tiddlers/shadows/tags, as well as the maximum height of the listbox. //The default values are shown below://\n//{{{\nconfig.macros.goto.includeTiddlers=true;\nconfig.macros.goto.includeShadows=true;\nconfig.macros.goto.includeTags=true;\nconfig.macros.goto.listMaxSize=10;\n//}}}\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''GotoPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revisions\n<<<\n''2006.05.10 [1.1.2]'' when filling listbox, set selection to 'heading' item... auto-select first tiddler title when down/enter moves focus into listbox\n''2006.05.08 [1.1.1]'' added accesskey ("G") to input field html (also set when field gets focus). Also, inputKeyHandler() skips non-printing/non-editing keys. \n''2006.05.08 [1.1.0]'' added heading to listbox for better feedback (also avoids problems with 1-line droplist)\n''2006.05.07 [1.0.0]'' list matches against tiddlers/shadows/tags. input field auto-completion... 1st enter=complete matching input (or show list)... 2nd enter=view tiddler. optional "quiet" param controls when listbox appears.\n''2006.05.06 [0.5.0]'' added handling for enter (13), escape(27), and down(40) keys. Change 'ondblclick' to 'onclick' for list handler to view tiddlers (suggested by Florian Cauvin - prevents unintended trigger of tiddler editor). shadow titles inserted into list instead of appended to the end.\n''2006.05.05 [0.0.0]'' started\n<<<\n!!!!!Credits\n>This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n!!!!!Code\n***/\n//{{{\nversion.extensions.goto= {major: 1, minor: 1, revision: 2, date: new Date(2006,5,10)};\nconfig.macros.goto= { \n handler:\n function(place,macroName,params) {\n var quiet=(params[0] && params[0]=="quiet"); if (quiet) params.shift();\n var instyle=params.shift(); if (!instyle) instyle="";\n var liststyle=params.shift(); if (!liststyle) liststyle="";\n createTiddlyElement(place,"span").innerHTML\n =this.html.replace(/%quiet%/,quiet).replace(/%instyle%/,instyle).replace(/%liststyle%/,liststyle);\n },\n\n html:\n '<form onsubmit="return false" style="display:inline;margin:0;padding:0">\s\n <input name=goto type=text autocomplete="off" accesskey="G" style="%instyle%"\s\n title="enter a tiddler title"\s\n onfocus="this.setAttribute(\s'accessKey\s',\s'G\s'); this.select();"\s\n onkeyup="return config.macros.goto.inputKeyHandler(event,this,this.form.list,%quiet%);">\s\n <select name=list style="%liststyle%;display:none;position:absolute"\s\n onchange="if (!this.selectedIndex) this.selectedIndex=1;"\s\n onblur="this.style.display=\s'none\s';"\s\n onkeyup="return config.macros.goto.selectKeyHandler(event,this,this.form.goto);"\s\n onclick="return config.macros.goto.openItem(this.value,this.form.goto,this);">\s\n </select>\s\n </form>',\n \n getItems:\n function() {\n var items=[];\n var tiddlers=store.reverseLookup("tags","excludeSearch",false,"title");\n if (this.includeTiddlers) for(var t=0; t<tiddlers.length; t++) items.push(tiddlers[t].title);\n if (this.includeShadows) for (var t in config.shadowTiddlers) items.pushUnique(t);\n if (this.includeTags) { var tags=store.getTags(); for(var t=0; t<tags.length; t++) items.pushUnique(tags[t][0]); }\n return items;\n },\n includeTiddlers: true, includeShadows: true, includeTags: true,\n\n getItemSuffix:\n function(t) {\n if (store.tiddlerExists(t)) return ""; // tiddler\n if (store.isShadowTiddler(t)) return " (shadow)"; // shadow\n return " (tag)"; // tag \n },\n\n openItem:\n function(title,here,list) {\n if (!title.length) return; here.value=title; list.style.display='none'; story.displayTiddler(null,title); return false;\n },\n\n inputKeyHandler:\n function(event,here,list,quiet) {\n var key=event.keyCode;\n // non-printing chars... bubble up, except: backspace=8, enter=13, escape=27, space=32, down=40, delete=46\n if (key<48) switch(key) { case 8: case 13: case 27: case 32: case 40: case 46: break; default: return true; }\n // escape... hide list (2nd esc=reset input)\n if (key==27) { if (list.style.display=="none") here.value=here.defaultValue; else list.style.display="none"; return false; }\n // blank input... if down/enter... fall through (list all)... else, hide list\n if (!here.value.length && !(key==40 || key==13)) { list.style.display="none"; return false; }\n // find matching items...\n var pattern=config.options.chkRegExpSearch?here.value:here.value.escapeRegExp();\n var re=new RegExp(pattern,config.options.chkCaseSensitiveSearch?"mg":"img");\n var found = []; var items=this.getItems(); for(var t=0; t<items.length; t++) if(items[t].search(re)!=-1) found.push(items[t]);\n // matched one item... enter... not *exact* match... autocomplete input field\n if (found.length==1 && quiet && key==13 && here.value!=found[0]) { list.style.display="none"; here.value=found[0]; return false; }\n // no match/exact match... enter... create/show it\n if (found.length<2 && key==13) return this.openItem(found.length?found[0]:here.value,here,list);\n // quiet/no match... hide list...\n list.style.display=(!quiet && found.length)?"block":"none";\n // no matches... key bubbles up\n if (!found.length) return true;\n // down/enter... show/move to list...\n if (key==40 || key==13) { list.style.display="block"; list.focus(); }\n // list is showing... fill list...\n if (list.style.display!="none") {\n while (list.length > 0) list.options[0]=null; // clear list...\n found.sort();\n list.options[0]=new Option(found.length==1?this.listMatchMsg:this.listHeading.format([found.length]),"",false,false);\n for (var t=0; t<found.length; t++) // fill list...\n list.options[t+1]=new Option(found[t]+this.getItemSuffix(found[t]),found[t],false,false);\n list.size=(found.length<this.listMaxSize?found.length:this.listMaxSize)+1; // resize list...\n list.selectedIndex=(key==40 || key==13)?1:0;\n }\n return true; // key bubbles up\n },\n listMaxSize: 10,\n listHeading: 'Found %0 matching titles:',\n listMatchMsg: 'Press enter to open tiddler...',\n\n selectKeyHandler:\n function(event,list,editfield) {\n if (event.keyCode==27) // escape... hide list, move to edit field\n { editfield.focus(); list.style.display="none"; return false; }\n if (event.keyCode==13 && list.value.length) // enter... view selected item\n { this.openItem(list.value,editfield,list); return false; }\n return true;\n }\n}\n//}}}
You can divide a tiddler into\n----\nsections by typing four dashes on a line by themselves
Entities in HTML documents allow characters to be entered that can't easily be typed on an ordinary keyboard. They take the form of an ampersand (&), an identifying string, and a terminating semi-colon (;). There's a complete reference [[here|http://www.htmlhelp.com/reference/html40/entities/]]; some of the more common and useful ones are shown below. Also see [[Paul's Notepad|http://thepettersons.org/PaulsNotepad.html#GreekHtmlEntities%20HtmlEntitiesList%20LatinHtmlEntities%20MathHtmlEntities]] for a more complete list.\n\n|>|>|>|>|>|>| !HTML Entities |\n| &amp;nbsp; | &nbsp; | no-break space | &nbsp;&nbsp; | &amp;apos; | &apos; | single quote, apostrophe |\n| &amp;ndash; | &ndash; | en dash |~| &amp;quot; | &quot; | quotation mark |\n| &amp;mdash; | &mdash; | em dash |~| &amp;prime; | &prime; | prime; minutes; feet |\n| &amp;hellip; | &hellip; | horizontal ellipsis |~| &amp;Prime; | &Prime; | double prime; seconds; inches |\n| &amp;copy; | &copy; | Copyright symbol |~| &amp;lsquo; | &lsquo; | left single quote |\n| &amp;reg; | &reg; | Registered symbol |~| &amp;rsquo; | &rsquo; | right single quote |\n| &amp;trade; | &trade; | Trademark symbol |~| &amp;ldquo; | &ldquo; | left double quote |\n| &amp;dagger; | &dagger; | dagger |~| &amp;rdquo; | &rdquo; | right double quote |\n| &amp;Dagger; | &Dagger; | double dagger |~| &amp;laquo; | &laquo; | left angle quote |\n| &amp;para; | &para; | paragraph sign |~| &amp;raquo; | &raquo; | right angle quote |\n| &amp;sect; | &sect; | section sign |~| &amp;times; | &times; | multiplication symbol |\n| &amp;uarr; | &uarr; | up arrow |~| &amp;darr; | &darr; | down arrow |\n| &amp;larr; | &larr; | left arrow |~| &amp;rarr; | &rarr; | right arrow |\n| &amp;lArr; | &lArr; | double left arrow |~| &amp;rArr; | &rArr; | double right arrow |\n| &amp;harr; | &harr; | left right arrow |~| &amp;hArr; | &hArr; | double left right arrow |\n\nThe table below shows how accented characters can be built up by subsituting a base character into the various accent entities in place of the underscore ('_'):\n\n|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>| !Accented Characters |\n| grave accent | &amp;_grave; | &Agrave; | &agrave; | &Egrave; | &egrave; | &Igrave; | &igrave; | &Ograve; | &ograve; | &Ugrave; | &ugrave; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| acute accent | &amp;_acute; | &Aacute; | &aacute; | &Eacute; | &eacute; | &Iacute; | &iacute; | &Oacute; | &oacute; | &Uacute; | &uacute; | &nbsp; | &nbsp; | &Yacute; | &yacute; | &nbsp; | &nbsp; |\n| circumflex accent | &amp;_circ; | &Acirc; | &acirc; | &Ecirc; | &ecirc; | &Icirc; | &icirc; | &Ocirc; | &ocirc; | &Ucirc; | &ucirc; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| umlaut mark | &amp;_uml; | &Auml; | &auml; | &Euml; | &euml; | &Iuml; | &iuml; | &Ouml; | &ouml; | &Uuml; | &uuml; | &nbsp; | &nbsp; | &Yuml; | &yuml; | &nbsp; | &nbsp; |\n| tilde | &amp;_tilde; | &Atilde; | &atilde; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Otilde; | &otilde; | &nbsp; | &nbsp; | &Ntilde; | &ntilde; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| ring | &amp;_ring; | &Aring; | &aring; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| slash | &amp;_slash; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Oslash; | &oslash; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |\n| cedilla | &amp;_cedil; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Ccedil; | &ccedil; |
http://click7.org/image-mosaic-generator/?create
http://www.inkscape.org\n\nEditor gráfico vetorial.
/***\n''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#InlineJavascriptPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nInsert Javascript executable code directly into your tiddler content. Lets you ''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.\n!!!!!Usage\n<<<\nWhen installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.\n\n''Deferred execution from an 'onClick' link''\nBy including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.\n\n''External script source files:''\nYou can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.\n\n''Display script source in tiddler output''\nBy including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.\n\n''Defining javascript functions and libraries:''\nAlthough the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).\n\nTo ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.\n\nSince the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.\n\n''Creating dynamic tiddler content''\nAn important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:\n* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.\n* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.\n* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.\n\nIf your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.\n\n//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//\n\n''Accessing the ~TiddlyWiki DOM''\nThe plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.\n\nAccess to this DOM element allows you to create scripts that can:\n* vary their actions based upon the specific location in which they are embedded\n* access 'tiddler-relative' information (use findContainingTiddler(place))\n* perform direct DOM manipulations (when returning wikified text is not enough)\n<<<\n!!!!!Examples\n<<<\nan "alert" message box:\n><script show>\n alert('InlineJavascriptPlugin: this is a demonstration message');\n</script>\ndynamic output:\n><script show>\n return (new Date()).toString();\n</script>\nwikified dynamic output:\n><script show>\n return "link to current user: [["+config.options.txtUserName+"]]";\n</script>\ndynamic output using 'place' to get size information for current tiddler:\n><script show>\n if (!window.story) window.story=window;\n var title=story.findContainingTiddler(place).id.substr(7);\n return title+" is using "+store.getTiddlerText(title).length+" bytes";\n</script>\ncreating an 'onclick' button/link that runs a script:\n><script label="click here" show>\n if (!window.story) window.story=window;\n alert("Hello World!\snlinktext='"+place.firstChild.data+"'\sntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");\n</script>\nloading a script from a source url:\n>http://www.TiddlyTools.com/demo.js contains:\n>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}\n>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}\n><script src="demo.js" show>\n return "loading demo.js..."\n</script>\n><script label="click to execute demo() function" show>\n demo()\n</script>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly\n''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output\n''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.\n''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski\n''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck\n''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax\n''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access \n''2005.11.08 [1.0.0]'' initial release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.inlineJavascript= {major: 1, minor: 5, revision: 1, date: new Date(2006,6,1)};\n\nconfig.formatters.push( {\n name: "inlineJavascript",\n match: "\s\s<script",\n lookahead: "\s\s<script(?: src=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: label=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?( show)?\s\s>((?:.|\s\sn)*?)\s\s</script\s\s>",\n\n handler: function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n if (lookaheadMatch[1]) { // load a script library\n // make script tag, set src, add to body to execute, then remove for cleanup\n var script = document.createElement("script"); script.src = lookaheadMatch[1];\n document.body.appendChild(script); document.body.removeChild(script);\n }\n if (lookaheadMatch[4]) { // there is script code\n if (lookaheadMatch[3]) // show inline script code in tiddler output\n wikify("{{{\sn"+lookaheadMatch[0]+"\sn}}}\sn",w.output);\n if (lookaheadMatch[2]) { // create a link to an 'onclick' script\n // add a link, define click handler, save code in link (pass 'place'), set link attributes\n var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);\n link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}\n link.code="function _out(place){"+lookaheadMatch[4]+"};_out(this);"\n link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";\n }\n else { // run inline script code\n var code="function _out(place){"+lookaheadMatch[4]+"};_out(w.output);"\n code=code.replace(/document.write\s(/gi,'place.innerHTML+=(');\n try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }\n if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);\n }\n }\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n} )\n//}}}\n
/***\n|''Name:''|~IntelliTaggerPlugin|\n|''Version:''|1.0.0 (2006-04-26)|\n|''Type:''|plugin|\n|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|\n|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|\n|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|\n|''Source Code:''|[[IntelliTaggerPlugin SourceCode]]|\n|''Licence:''|[[BSD open source license (abego Software)|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%20(abego%20Software)%5D%5D]]|\n|''~TiddlyWiki:''|Version 2.0.8 or better|\n|''Browser:''|Firefox 1.5.0.2 or better|\n\n***/\n// /%\nif(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:0,date:new Date(2006,3,26),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};abego.isPopupOpen=function(_2){return _2&&_2.parentNode==document.body;};abego.openAsPopup=function(_3){if(_3.parentNode!=document.body){document.body.appendChild(_3);}};abego.closePopup=function(_4){if(abego.isPopupOpen(_4)){document.body.removeChild(_4);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_5,_6,_7){_5.style.left=_6+"px";_5.style.top=_7+"px";};abego.centerOnWindow=function(_8){if(_8.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _9=abego.getWindowRect();abego.moveElement(_8,_9.left+(_9.width-_8.offsetWidth)/2,_9.top+(_9.height-_8.offsetHeight)/2);};abego.isDescendantOrSelf=function(_a,e){while(e){if(_a==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_c){var _d={};for(var i=0;i<_c.length;i++){_d[_c[i]]=true;}return _d;};abego.filterStrings=function(_f,_10,_11){var _12=[];for(var i=0;i<_f.length&&(_11===undefined||_12.length<_11);i++){var s=_f[i];if(s.match(_10)){_12.push(s);}}return _12;};abego.arraysAreEqual=function(a,b){var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_19,_1a){if(!_1a){return;}var _1b=findPosX(_1a);var _1c=findPosY(_1a);var _1d=_1a.offsetHeight;var _1e=_1b;var _1f=_1c+_1d;var _20=findWindowWidth();if(_20<_19.offsetWidth){_19.style.width=(_20-100)+"px";}var _21=_19.offsetWidth;if(_1e+_21>_20){_1e=_20-_21-30;}if(_1e<0){_1e=0;}_19.style.left=_1e+"px";_19.style.top=_1f+"px";_19.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _25=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_25.push([s.toString().toLowerCase(),s]);}_25.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_25[i][1];}};abego.getTiddlerField=function(_2b,_2c,_2d){var _2e=document.getElementById(_2b.idPrefix+_2c);var e=null;if(_2e!=null){var _30=_2e.getElementsByTagName("*");for(var t=0;t<_30.length;t++){var c=_30[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2d){e=c;}}}}return e;};abego.setRange=function(_33,_34,end){if(_33.setSelectionRange){_33.setSelectionRange(_34,end);var max=0+_33.scrollHeight;var len=_33.textLength;var top=max*_34/len,bot=max*end/len;_33.scrollTop=Math.min(top,(bot+top-_33.clientHeight)/2);}else{if(_33.createTextRange!=undefined){var _39=_33.createTextRange();_39.collapse();_39.moveEnd("character",end);_39.moveStart("character",_34);_39.select();}else{_33.select();}}};abego.internal.TagManager=function(){var _3a=null;var _3b=function(){if(_3a){return;}_3a={};store.forEachTiddler(function(_3c,_3d){for(var i=0;i<_3d.tags.length;i++){var tag=_3d.tags[i];var _40=_3a[tag];if(!_40){_40=_3a[tag]={count:0,tiddlers:{}};}_40.tiddlers[_3d.title]=true;_40.count+=1;}});};var _41=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_42,_43,_44,_45,_46,_47){var _48=this.fetchTiddler(_42);var _49=_48?_48.tags:[];var _4a=(typeof _47=="string")?_47.readBracketedList():_47;_41.apply(this,arguments);if(!abego.arraysAreEqual(_49,_4a)){abego.internal.getTagManager().reset();}};var _4b=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4c){var _4d=this.fetchTiddler(_4c);var _4e=_4d&&_4d.tags.length>0;_4b.apply(this,arguments);if(_4e){abego.internal.getTagManager().reset();}};this.reset=function(){_3a=null;};this.getTiddlersWithTag=function(tag){_3b();var _50=_3a[tag];return _50?_50.tiddlers:null;};this.getAllTags=function(_51){_3b();var _52=[];for(var i in _3a){_52.push(i);}for(i=0;_51&&i<_51.length;i++){_52.pushUnique(_51[i],true);}abego.sortIgnoreCase(_52);return _52;};this.getTagInfos=function(){_3b();var _54=[];for(var _55 in _3a){_54.push([_55,_3a[_55]]);}return _54;};var _56=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3b();var _5c=this.getTagInfos();_5c.sort(_56);return _5c;};this.getPartnerRankedTags=function(_5d){var _5e={};for(var i=0;i<_5d.length;i++){var _60=this.getTiddlersWithTag(_5d[i]);for(var _61 in _60){var _62=store.getTiddler(_61);if(!(_62 instanceof Tiddler)){continue;}for(var j=0;j<_62.tags.length;j++){var tag=_62.tags[j];var c=_5e[tag];_5e[tag]=c?c+1:1;}}}var _66=abego.toSet(_5d);var _67=[];for(var n in _5e){if(!_66[n]){_67.push(n);}}_67.sort(function(a,b){var d=_5e[b]-_5e[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _67;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6c=2;var _6d=1;var _6e=30;var _6f;var _70;var _71;var _72;var _73;var _74;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _75=function(){return _70;};var _76=function(tag){return _73[tag];};var _78=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7b=function(_7c){var s=_7c.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _7f=function(_80){var s=_80.value;var len=s.length;if(len>0&&s[len-1]!=" "){_80.value+=" ";}};var _83=function(tag,_85,_86){if(_7b(_85)){_85.value=_78(_85.value);}story.setTiddlerTag(_86.title,tag,0);_7f(_85);abego.IntelliTagger.assistTagging(_85,_86);};var _87=function(n){if(_74){if(_74.length>n){return _74[n];}n-=_74.length;}return (_72&&_72.length>n)?_72[n]:null;};var _89=function(n,_8b,_8c){var _8d=_87(n);if(_8d){_83(_8d,_8b,_8c);}};var _8e=function(_8f){var pos=_8f.value.lastIndexOf(" ");var _91=(pos>=0)?_8f.value.substr(++pos,_8f.value.length):_8f.value;return new RegExp(_91.escapeRegExp(),"i");};var _92=function(_93,_94){var _95=0;for(var i=0;i<_93.length;i++){if(_94[_93[i]]){_95++;}}return _95;};var _97=function(_98,_99,_9a){var _9b=1;var c=_98[_99];for(var i=_99+1;i<_98.length;i++){if(_98[i][1].count==c){if(_98[i][0].match(_9a)){_9b++;}}else{break;}}return _9b;};var _9e=function(_9f,_a0){var _a1=abego.internal.getTagManager().getSortedTagInfos();var _a2=[];var _a3=0;for(var i=0;i<_a1.length;i++){var c=_a1[i][1].count;if(c!=_a3){if(_a0&&(_a2.length+_97(_a1,i,_9f)>_a0)){break;}_a3=c;}if(c==1){break;}var s=_a1[i][0];if(s.match(_9f)){_a2.push(s);}}return _a2;};var _a7=function(_a8,_a9){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_a9),_a8);};var _aa=function(){if(!_6f){return;}var _ab=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ab){_ab="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_6f.innerHTML=_ab;applyHtmlMacros(_6f,null);refreshElements(_6f,null);};var _ac=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_71){_71.call(this,tag,e);}return false;};var _af=function(_b0,_b1,_b2,_b3){if(!_b1){return;}var _b4=_b3?abego.toSet(_b3):{};var n=_b1.length;for(var i=0;i<n;i++){var tag=_b1[i];if(_b4[tag]){continue;}if(i>0){createTiddlyElement(_b0,"span",null,"tagSeparator"," | ");}var _b8="";var _b9=_b0;if(_b2<10){_b9=createTiddlyElement(_b0,"span",null,"numberedSuggestion");_b2++;var key=_b2<10?""+(_b2):"0";createTiddlyElement(_b9,"span",null,"suggestionNumber",key+") ");var _bb=_b2==1?"Ctrl-Space or ":"";_b8=" (Shortcut: %1Alt-%0)".format([key,_bb]);}var _bc=config.views.wikified.tag.tooltip.format([tag]);var _bd=(_76(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_b8]);var _be="%0; Shift-Click: %1".format([_bd,_bc]);var btn=createTiddlyButton(_b9,tag,_be,_ac,_76(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c0=function(){if(_6f){window.scrollTo(0,ensureVisible(_6f));}if(_75()){window.scrollTo(0,ensureVisible(_75()));}};var _c1=function(e){if(!e){var e=window.event;}if(!_6f){return;}var _c3=resolveTarget(e);if(_c3==_75()){return;}if(abego.isDescendantOrSelf(_6f,_c3)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c1);var _c4=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_c6){_c4.apply(this,arguments);var _c7=_c6.tags;if(_c7){_c6.tags=_c7.trim();}};var _c8=function(_c9){story.focusTiddler(_c9,"tags");var _ca=abego.getTiddlerField(story,_c9,"tags");if(_ca){var len=_ca.value.length;abego.setRange(_ca,len,len);window.scrollTo(0,ensureVisible(_ca));}};var _cc=config.macros.edit.handler;config.macros.edit.handler=function(_cd,_ce,_cf,_d0,_d1,_d2){_cc.apply(this,arguments);var _d3=_cf[0];if((_d2 instanceof Tiddler)&&_d3=="tags"){var _d4=_cd.lastChild;_d4.onfocus=function(e){abego.IntelliTagger.assistTagging(_d4,_d2);setTimeout(function(){_c8(_d2.title);},100);};_d4.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_89(e.keyCode==48?9:e.keyCode-49,_d4,_d2);}else{if(e.ctrlKey&&e.keyCode==32){_89(0,_d4,_d2);}}setTimeout(function(){abego.IntelliTagger.assistTagging(_d4,_d2);},100);return false;};_7f(_d4);}};var _d7=function(e){if(!e){var e=window.event;}var _d9=resolveTarget(e);var _da=_d9.getAttribute("tiddler");if(_da){story.displayTiddler(_d9,_da,"IntelliTaggerEditTagsTemplate",false);_c8(_da);}return false;};var _db=config.macros.tags.handler;config.macros.tags.handler=function(_dc,_dd,_de,_df,_e0,_e1){_db.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_e1,createTiddlyElement(_dc.lastChild,"li"));};var _e2=function(){if(_6f&&_70&&!abego.isDescendantOrSelf(document,_70)){abego.IntelliTagger.close();}};setInterval(_e2,100);abego.IntelliTagger.displayTagSuggestions=function(_e3,_e4,_e5,_e6,_e7){_72=_e3;_73=abego.toSet(_e4);_74=_e5;_70=_e6;_71=_e7;if(!_6f){_6f=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_6f.style.position="absolute";}_aa();abego.openAsPopup(_6f);if(_75()){var w=_75().offsetWidth;if(_6f.offsetWidth<w){_6f.style.width=(w-2*(_6c+_6d))+"px";}abego.moveBelowAndClip(_6f,_75());}else{abego.centerOnWindow(_6f);}_c0();};abego.IntelliTagger.assistTagging=function(_e9,_ea){var _eb=_8e(_e9);var s=_e9.value;if(_7b(_e9)){s=_78(s);}var _ed=s.readBracketedList();var _ee=_ed.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_ed),_eb,_6e):_9e(_eb,_6e);abego.IntelliTagger.displayTagSuggestions(_a7(_eb,_ed),_ed,_ee,_e9,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_83(tag,_e9,_ea);}});};abego.IntelliTagger.close=function(){abego.closePopup(_6f);_6f=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_f1,_f2,_f3,_f4,_f5,id,_f7){if(!_f3){_f3="[edit]";}if(!_f4){_f4="Edit the tags";}if(!_f5){_f5="editTags";}var _f8=createTiddlyButton(_f2,_f3,_f4,_d7,_f5,id,_f7);_f8.setAttribute("tiddler",(_f1 instanceof Tiddler)?_f1.title:String(_f1));return _f8;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_f9,_fa,_fb,_fc,_fd,_fe){var _ff=_fd.parseParams("list",null,true);var _100=_ff[0]["action"];for(var i=0;_100&&i<_100.length;i++){var _102=_100[i];var _103=config.macros.intelliTagger.subhandlers[_102];if(!_103){abego.alertAndThrow("Unsupported action '%0'".format([_102]));}_103(_f9,_fa,_fb,_fc,_fd,_fe);}},subhandlers:{showTags:function(_104,_105,_106,_107,_108,_109){_af(_104,_72,_74?_74.length:0,_74);},showFavorites:function(_10a,_10b,_10c,_10d,_10e,_10f){_af(_10a,_74,0);},closeButton:function(_110,_111,_112,_113,_114,_115){var _116=createTiddlyButton(_110,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_117){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_117,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">"+t+"<font>";},copyright:function(_11a){var e=createTiddlyElement(_11a,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">&copy; 2006 <b><font color=\s"red\s">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\sn"+"!~IntelliTagger Stylesheet\sn"+"***/\sn"+"/*{{{*/\sn"+".intelliTaggerSuggestions {\sn"+"\stposition: absolute;\sn"+"\stwidth: 600px;\sn"+"\sn"+"\stpadding: 2px;\sn"+"\stlist-style: none;\sn"+"\stmargin: 0;\sn"+"\sn"+"\stbackground: #eeeeee;\sn"+"\stborder: 1px solid DarkGray;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .currentTag {\sn"+"\stfont-weight: bold;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .suggestionNumber {\sn"+"\stcolor: #808080;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .numberedSuggestion{\sn"+"\stwhite-space: nowrap;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .intelliTaggerFooter {\sn"+"\stmargin-top: 4px;\sn"+"\stborder-top-width: thin;\sn"+"\stborder-top-style: solid;\sn"+"\stborder-top-color: #999999;\sn"+"}\sn"+".intelliTaggerSuggestions .favorites {\sn"+"\stborder-bottom-width: thin;\sn"+"\stborder-bottom-style: solid;\sn"+"\stborder-bottom-color: #999999;\sn"+"\stpadding-bottom: 2px;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .normalTags {\sn"+"\stpadding-top: 2px;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\sn"+"\stfont-size: 10px;\sn"+"\sn"+"\stpadding-left: 0.3em;\sn"+"\stpadding-right: 0.3em;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<div class=\s"favorites\s" macro=\s"intelliTagger action: showFavorites\s"></div>\sn"+"<div class=\s"normalTags\s" macro=\s"intelliTagger action: showTags\s"></div>\sn"+"<!-- The Footer (with the Navigation) ============================================ -->\sn"+"<table class=\s"intelliTaggerFooter\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\st<span macro=\s"intelliTagger action: closeButton\s"></span>\sn"+"\st</td>\sn"+"\st<td align=\s"right\s">\sn"+"\st\st<span macro=\s"intelliTagger action: version\s"></span>, <span macro=\s"intelliTagger action: copyright \s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"<!--\sn"+"}}}\sn"+"-->\sn";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\sn"+"<div class='title' macro='view title'></div>\sn"+"<div class='tagged' macro='tags'></div>\sn"+"<div class='viewer' macro='view text wikified'></div>\sn"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\sn"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\sn"+"<!--\sn"+"}}}\sn"+"-->\sn";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/src/Plugin-IntelliTagger-src.js]]";setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"intelliTagger");}\n//%/\n
Estarei mantendo aqui informações de cunho bem <<tag [[Nerd]]>>, mais ou menos como o meu //playground//, enquanto fatos corriqueiros tenderão a aparecer ==no MeuBlog pessoal==.\n\nSe você não entendeu o [[subtítulo|SiteSubtitle]] do site, nem tente ler o resto.\n\nSão várias opções para navegação, mas acesse o SiteMap para entender conhecer do conteúdo existente, e siga a vontade para conhecer um pouco do que faço, estudo, pesquiso ou descubro. Tem muita coisa louca, mas pode ter coisa boa, prometo.
A um tempão atrás, antes da nova geração dos filmes [[StarWars|http://www.starwars.com/]] tive um site chamado JediAcademy.com onde escrevia sobre os personagens, filosofia, [[Força]], artes marciais, combate de sabre de luz, etc.\n\nUm dia, justamente quando fui fazer um backup, um hacker invadiu a rede do [[LCI|http://www.lci.dcc.ufrj.br]] na [[UFRJ|http://www.ufrj.br]] onde estudava e mantinha o site e inadvertidamente destruiu material de vários alunos, inclusive meu site.\n\nVou tratar agora mais ou menos como uma coluna sobre coisas incríveis.\n\nQue a [[Força]] esteja com vocês.\n\n//Ass. BaalGadol//
[[Joomla|http://www.joomla.org/]] é um ambiente de CMS OpenSource mantido pela comunidade do [[OpenSourceMatters|http://www.opensourcematters.org]]. Um fork, já muito melhorado, do [[Mambo]].\n\nMuito bom, muito fácil de instalar... quase tão simples quando um TiddlyWiki. Ok, ok, tem mais etapas e alguns pré-requisitos, mas sinceramente, qualquer administrador de servidor não teria como não ter Apache, PHP e ~MySQL hoje em dia.\n\nDe mais, foi criar uma base de dados vazia, descompactar o arquivo num diretorio (pode fazer um link simbólico mais tarde) e abrir o browser no endereço. Ele sozinho te avisava o que podia estar errado e como acertar (normalmente apenas permissões no diretório).\n\nDaí, é partir pro abraço.\n\nA gerência não é obvia no inicio, leve em consideração que foi desenvolvido com uma mentalidade de portal coorporativo mesmo... (daqueles poderosos, que custam uma fortuna) portanto, parece um pouco burocrático (a principio), mas dá pra entender e começa a fluir.\n\nTem vários niveis de permissões e um controle sobre o que pode ser publicado, e onde, e por quanto tempo (não necessariamente pelas mesmas pessoas que ops escrevem) além de algumas extenções bem suculentas que adoraria ter em outros sistemas.\n\nVem com editor WYSIWYG.
/***\n[img[preview|http://simonbaird.com/images/kubrickpreview.gif]]\n<<applyTheme Kubrick 'Apply this theme now'>>\n\nBy ClintChecketts, based on the famous ~WordPress theme. Requires these in your current directory:\n*[[kubrickheader.jpg|kubrickheader.jpg]]\n*[[kubrickfooter.jpg|kubrickfooter.jpg]]\n*[[kubrickbg.jpg|kubrickbg.jpg]]\nInstall like a plugin, ie tag with systemConfig then save and reload.\nRequires SelectThemePlugin.\n***/\n//{{{\nif (!config.themes) config.themes = [];\n\nconfig.shadowTiddlers.KubrickPageTemplate = "<div class='header'>\sn<div class='titleLine'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='sidebar'><div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn<div id='sidebarCopyright' refresh='content' tiddler='Copyright'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>\sn<div id='contentFooter'><p>TiddlyWiki was created by <a href='http://tiddlywiki.com'>Jeremy Ruston</a> and TiddlyKubrick was created by <a href='http://checkettsweb.com'>Clint Checketts</a></p></div>";\n\nconfig.shadowTiddlers.KubrickStyleSheet = "/***\snStyleSheet General Rules\sn***/\sn/*{{{*/\sna,\sn.button{\sn color: #06c;\sn text-decoration: none;\sn background: transparent;\sn}\sn\sna:hover,\sn.button:hover{\sn background: transparent;\sn text-decoration: none;\sn color: #147;\sn}\sn\snbody {\sn font-size: 15px; /* Resets 1em to 10px */\sn font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;\sn background-color: #d5d6d7;\sn color: #666;\sn margin: 0 auto;\sn}\sn\sn#contentWrapper{\sn background: transparent url(\s"http://tiddlyspot.com/_ts/images/themes/kubrickbg.jpg\s") repeat-y 0px 0px;\sn border: 0;\sn margin: 0 auto;\sn width: 760px;\sn}\sn/*}}}*/\sn\sn/***\snHeader Rules\sn***/\sn/*{{{*/\sn.titleLine{\sn margin: 80px auto 0em;\sn padding: 0;\sn width: 745px;\sn text-align: center;\sn color: #fff;\sn}\sn\sn.siteTitle{\sn font-size: 30px;\sn}\sn\sn.siteTitle a, .siteSubtitle a{\sn color: #fff;\sn}\sn\sn.siteTitle a:hover, .siteSubtitle a:hover{\sn text-decoration: none;\sn font-weight: normal;\sn}\sn\sn.siteSubtitle{\sn display: block;\sn margin: 58px 0 0 0;\sn font-size: 15px;\sn}\sn\sn.header {\sn background: url(\s"http://tiddlyspot.com/_ts/images/themes/kubrickheader.jpg\s") no-repeat bottom center; \sn margin: 0;\sn padding: 1px;\sn height: 198px;\sn width: 758px;\sn\sn}\sn/*}}}*/\sn\sn/***\snFooter Styles\sn***/\sn/*{{{*/\sn#contentFooter {\sn text-align: center;\sn clear: both;\sn background: url(\s"http://tiddlyspot.com/_ts/images/themes/kubrickfooter.jpg\s") no-repeat bottom;\sn border: none;\sn padding: 2em;\sn height: 3em;\sn}\sn/*}}}*/\sn\sn/***\snSidebar styles\sn***/\sn/*{{{*/\sn#sidebar{\sn margin: 1em 2em 0 0;\sn position: static;\sn float: right;\sn}\sn\sn#sidebar a,\sn#sidebar a:hover{\sn border: 0;\sn}\sn\sn#sidebar h1{\sn font-size: 1.4em;\sn font-weight: bold;\sn margin: 0;\sn background: transparent;\sn color: #000;\sn}\sn\sn#sidebar ul{\sn padding: 0;\sn margin: 0 0 0 1em;\sn}\sn\sn#sidebar li{\sn list-style: none;\sn}\sn\sn#sidebar li:before{\sn color: #000;\sn content: \s"\ss00BB \ss0020\s";\sn}\sn\sn#sidebar, #mainMenu, #sideBarOptions{\sn width: 200px;\sn text-align: left;\sn}\sn\sn#mainMenu{\sn position: static;\sn}\sn/*}}}*/\sn\sn/***\snSidebar search styles\sn***/\sn/*{{{*/\sn#sidebarSearch{\sn margin: 20px 0 0 10px;\sn width: 155px;\sn}\sn\sn#sidebarSearch input{\sn font-size: 15px;\sn width: 120px;\sn}\sn\sn#sidebarSearch .button{\sn margin-top: 1px;\sn}\sn/*}}}*/\sn\sn/***\snSidebar option styles\sn***/\sn/*{{{*/\sn#sidebarOptions{\sn margin-left: .75em;\sn}\sn\sn#sidebarOptions h1{\sn font-size: 1.3em;\sn}\sn\sn#sidebarOptions a{\sn display: block; // was inline \sn border: 0;\sn}\sn\sn#sidebarOptions .sliderPanel{\sn background-color: transparent;\sn font-size: 1em;\sn margin: 0;\sn}\sn\sn#sidebarOptions .sliderPanel a:before,\sn#sidebarTabs li:before{\sn content: \s"\s";\sn}\sn/*}}}*/\sn/***\snSidebar tab styles\sn***/\sn/*{{{*/\sn#sidebarTabs .tab,\sn#sidebarTabs .tab:hover{\sn border: 1px solid #ccc;\sn text-decoration: none;\sn}\sn\sn#sidebarTabs .tabSelected{\sn background: #ccc;\sn color: #333;\sn}\sn\sn#sidebarTabs .tabUnselected{\sn background: #e6e6e6;\sn color: #333;\sn}\sn\sn#sidebarTabs .tabContents{\sn background: #ccc;\sn color: #333;\sn border: 1px solid #ccc;\sn width: 95%;\sn}\sn\sn#sidebarTabs .tabContents a{\sn color: #06c;\sn}\sn\sn#sidebarTabs .tabContents a:hover{\sn color: #147;\sn\sn}\sn\sn#sidebarTabs a.tabSelected:hover{\sn cursor: default;\sn}\sn\sn#sidebarTabs .txtMoreTab .tab{\sn border: 1px solid #aaa;\sn color: #333;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected{\sn background: #aaa;\sn color: #333;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected:hover{\sn background: #aaa;\sn color: #333\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected{\sn background: #ccc;\sn color: #333;\sn}\sn\sn#contentWrapper #sidebar .txtMoreTab .tabUnselected:hover,#contentWrapper #displayArea .txtMoreTab .tabUnselected:hover{\sn color: #333;\sn}\sn\sn#contentWrapper .txtMoreTab .tabContents{\sn background: #aaa;\sn color: #333;\sn border: 1px solid #aaa;\sn}\sn/*}}}*/\sn/***\snMessage area styles\sn***/\sn/*{{{*/\sn#messageArea {\snbackground-color: #eee;\sn border: 1px solid #ccc;\sn color: #bbb;\sn margin: 0 1em;\sn font-size: .8em;\sn}\sn\sn#messageArea a:link{\sn color: #aaa;\sn}\sn#messageArea a:hover{\sn color: #06c;\sn}\sn\sn#messageArea .messageToolbar .button{\sn border: 1px solid #ccc;\sn color: #aaa;\sn text-decoration: none;\sn}\sn#messageArea .messageToolbar .button:hover{\sn border: 1px solid #777;\sn color: #777;\sn}\sn/*}}}*/\sn/***\snPopup styles\sn***/\sn/*{{{*/\sn#popup{\sn padding: 0;\sn background: #eee;\sn border: 1px solid #ccc;\sn color: #333;\sn}\sn\sn#popup a{\sn color: #06c;\sn font-weight: normal;\sn}\sn\sn#popup a:hover{\sn color: #fff;\sn background: #aaa;\sn text-decoration: none;\sn}\sn/*}}}*/\sn/***\snTiddler display styles\sn***/\sn/*{{{*/\sn#displayArea{\sn margin: 10px 245px 1em 30px;\sn text-align: left;\sn font-size: 15px;\sn color: #000;\sn}\sn\snh1, h2, h3, h4, h5, .title{\sn font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;\sncolor: #333;\snpadding: 0;\sn}\sn\sn.viewer h1,.viewer h2,.viewer h3,.viewer h4,.viewer h5,.viewer h6{\sn background: transparent;\sn border-bottom: 1px dotted #ccc;\sn}\sn\sn.title{\sn font-size: 20px; \sn}\sn\sn.subtitle{\sn color: #999;\sn font-size: 12px;\sn}\sn\sn.toolbar{\sn font-size: 11px;\sn}\sn\sn.toolbar a:link,.toolbar a:visited{\sn background: #e6e6e6;\sn border: 1px solid #ccc;\sn color: #aaa;\sn padding: 1px 3px;\sn margin: 0 .5em 0 0;\sn}\sn\sn.toolbar a.button:hover{\sn background: #eee;\sn border-color: #ddd;\sn color: #ccc;\sn text-decoration: none;\sn}\sn\sn.viewer a.tiddlyLinkNonExisting:link{\sn color: #b85b5a;\sn font-style: normal;\sn}\sn\sn.viewer a.tiddlyLinkNonExisting:hover{\sn text-decoration: none; \sn}\sn\sn.viewer a.tiddlyLinkExisting:link,#displayArea .viewer a.externalLink{\sn font-weight: normal;\sn color: #06c;\sn}\sn\sn.viewer a.tiddlyLinkExisting:hover,.viewer a.externalLink:hover{\sn color: #147;\sn text-decoration: none; \sn}\sn\sn.viewer {\sn font-size: 15px;\sn line-height: 160%;\sn padding-top: 0.5em;\sn}\sn\sn.viewer code {\sn font-size: 12px;\sn}\sn\sn.viewer .button{\sn \sn font-size: 15px;\sn}\sn\sn.editor {\sn font-size: 15px;\sn color: #ooo;\sn line-height: 160%;\sn}\sn\sn.editor input, .editor textarea {\sn display: block;\sn width: 100%;\sn font: inherit;\sn}\sn\sn.footer, .footer a.button,.editorFooter, .footer a.button{\sn color: #aaa;\sn}\sn\sn.selectedTiddler .footer,.selectedTiddler .footer a{\sn color: #777;\sn}\sn\sn.selectedTiddler .footer a.button,.selectedTiddler .editorFooter a.button{\sn color: #06c;\sn}\sn\sn.footer a.button:hover,.editorFooter a.button:hover{\sn color: #147;\sn background: transparent;\sn} \sn\sn.tagClear{\sn clear: none; \sn}\sn/*}}}*/";\n\nconfig.themes.push("Kubrick");\n//}}}\n\n
http://www.lazarus.freepascal.org/\n\n//Kit// de IDE e Compilador Pascal gratuitos para Windows, Linux e ~MacOSX. Bem parecido com o Delphi.
[>img[Creative Commons Attribution-ShareAlike 3.0 License|http://www.tiddlytools.com/images/somerights20.png][http://creativecommons.org/licenses/by-sa/3.0/]]''Copyrights:''\n<<<\nThis work is based upon TiddlyWiki <<version>>, written by Jeremy Ruston, &copy; Osmosoft Limited, which has been distributed under a BSD open source license.\n\nThis work may contain portions of copyrighted materials from other sources. In accordance with "fair use" principles (see [[United States Copyright Law, Title 17, Section 107|http://www.copyright.gov/title17/92chap1.html#107]]), such materials have been reproduced without profit for purposes of criticism, comment, news reporting, instruction, scholarship, and/or research.\n\nModifications and additions to this work, including (but not limited to) original programmatic components ("plugins", "macros", "scripts", "stylesheets") have been created by //@@color:#00ff00;ELS Design Studios@@// (TiddlyTools) or Simon and Daniel Baird (TiddlySpot, [[MPTW]] and MonkeyGTD) or ''@@color:#ff0000;abego@@'' Software ([[abegoExtensions|http://tiddlywiki.abego-software.de/]]). You are permitted to use, copy, and/or modify these components, subject to the terms and conditions of the [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]] as well as all other terms and conditions specifically included within the body of this work.\n\nAny modifications and/or additions that you make to a licensed component must be clearly identified as a derivative work that is easily distinguished from the original version, and must retain appropriate licensing information and references (i.e., ~URLs) to the official distribution source for the unaltered component.\n\nAll other original content, including (but not limited to) writings, images, sound recordings, and videos, are the __property of the author__ (FabioLeitao) , or are used under license or agreement with third parties and, except as required for normative operation and viewing of this work, may not be stored, displayed or re-transmitted in any form, nor used for any commercial purposes, without the specific prior permission of the respective rights holders.\n<<<\n''Trademarks/servicemarks:''\n<<<\n"ELS Design Studios", "~TiddlyTools", "~TiddlyStudios", "~TiddlyTech", "~TiddlyLabs", "Small Tools for Big Ideas!", "Intuitive Interfaces for Intelligent Interactions" and the "i4" logo (in graphical //and// text forms) are trademarks or servicemarks of ELS Design Studios and may not be used without permission.\n"~TiddlySpot", "MPTW", "~MonkeyPirateTiddlyWiki" and "~MonkeyGTD" are trademarks or services of ~TiddlySpot.com and may not be used without permission.\n<<<\n''Limits on Liability:''\n<<<\nAll materials are presented on an "as-is" basis and are subject to change without notice. The author of this document makes no claims regarding the suitability or reliability of the information presented, and assumes no liability for any damages that may occur as a result of its use.\n<<<\n''Privacy Notice: ''\n<<<\nThis site limits the collection and use of non-public, personal customer information to that which is needed to offer products and services, and to file reports or financial statements as required by law. This site has physical, electronic and procedural safeguards to maintain the protections of private information, and does not provide, sell or otherwise disclose such information to non-affiliated third parties.\n<<<\n{{center{^^//please review these statements periodically, as they are subject to change without notice//^^}}}
[[TiddlyWiki|http://www.tiddlywiki.com]]\n[[TiddlyWikiTutorial1|http://www.colibri.noads.biz/TiddlyWikiTutorial.html]]\n[[TiddlyWikiTutorial2|http://www.blogjones.com/TiddlyWikiTutorial.html]]\n[[TiddlyWiki Guides|http://tiddlywikiguides.org]]\n[[TiddlyStyle|http://www.checkettsweb.com]]\n[[Grupo de discução|http://groups-beta.google.com/group/TiddlyWiki]]\n[[Grupo de desenvolvimento|http://groups-beta.google.com/group/TiddlyWikiDev]]\n[[versão TiddlyPortugal|http://checkettsweb.com/tw/portuguesetw.htm]] \n[[TiddlyTools|http://www.tiddlytools.com]]\n[[TiddlySpot|http://www.tiddlyspot.com]]\n[[abegoExtensions|http://tiddlywiki.abego-software.de/]]\n[[TidHelp|http://tidhelp.tiddlyspot.com/]] \n[[Wikipedia|http://www.wikipedia.org/]]\n[[Facebook|http://www.facebook.com/]]\n[[SysInternals|http://www.sysinternals.com/]]\n[[ADS|https://www.airlinenetsolutions.com/]]\n
[[MonkeyPirateTiddltWiki|http://mptw.tiddlyspot.com]] é um pacote de plugins, criado por SimonBaird, que cria mais funcionalidades no TiddlyWiki que uso pra criar este site.\n\nÉ a base da [[Dashboard|http://leitao-gtd.tiddlyspot.com]] [[GTD]] que comecei a usar para me organizar independentemente do sistema do escritório.\n\nVale a pena, mas prefiria conseguir acesso a outros plugins do TiddlyTools.
!!!!Super blogs \n<<tag [[Nerd]]>>\n<<tag [[NerdArchive]]>>\n<<slider chkLinkSlider BlogsPanel "OutrosBlogs »" "continue a ler">>\n!!!!Super plus \n<<tag [[OpenSource]]>>\n<<tag [[JediAcademy]]>>\n<<tag [[MeuTraçado]]>>\n<<tag [[Formatação]]>>\nDireitosAutorais\n!!!!Super eu \nAboutMe\n[[DashboardGTD|http://leitao-gtd.tiddlyspot.com]]\n[[Wings-GTD|http://wings-gtd.tiddlyspot.com]]\n!!!!Super links \n<<slider chkLinkSlider LinksPanel "ExternalLinks »" "onde ir daqui">>+++^[ |onde ir daqui]<<tiddler LinksPanel>>===\n!!!!Super get \n[[Supere-se!|http://supere.tiddlyspot.com/download]] <<version>>\n[[RSSFeed|http://supere.tiddlyspot.com/index.xml]]\n!!!!Super site \nShowTiddlerStatistics\nFrontPage\nSiteMap
[[Mambo|http://www.mamboserver.com/]] é um ambiente de <<tag CMS>> OpenSource mantido por uma comunidade própria de fâs. E teve um, que considera muito melhorado, e na prática compatível, o [[Joomla]].\n\nMuito bom, muito fácil de instalar... quase tão simples quando um TiddlyWiki. Ok, ok, tem mais etapas e alguns pré-requisitos, mas sinceramente, qualquer administrador de servidor não teria como não ter Apache, PHP e ~MySQL hoje em dia.\n\nDe mais, foi criar uma base de dados vazia, descompactar o arquivo num diretório (pode fazer um link simbólico mais tarde) e abrir o browser no endereço. Ele sozinho te avisava o que podia estar errado e como acertar (normalmente apenas permissões no diretório).\n\nDaí, é partir pro abraço.\n\nA gerência não é obvia no inicio, leve em consideração que foi desenvolvido com uma mentalidade de portal coorporativo mesmo... (daqueles poderosos, que custam uma fortuna) portanto, parece um pouco burocrático (a principio).\n\nNão gostei de alguns nomes das opções e setores que vem por default, mas dá pra mudar.\n\nTem vários niveis de permissões e um controle sobre o que pode ser publicado, e onde, e por quanto tempo (não necessariamente pelas mesmas pessoas que ops escrevem) além de algumas extenções bem suculentas que adoraria ter em outros sistemas.\n\nVem com editor WYSIWYG.
http://www.mediawiki.com\n\nVocês todos já ouviram falar deles, afina, é o engine por trás da Wikipedia.\n\nNão é meu favorito, mas instalei recentemente no escritório em cerca de 15 minutos, e depois de alguns ajustes, durante uns dois dias, temos uma wiki corporativa que valida emails, e mantém junto um fórum (plugin) que todos adoram usar.\n\nValeu a pena.
==Meu blog fica [[aqui|https://leitao.redirectme.net/?q=blog/fabio_leitao]].== (fora do ar - passei a usar o [[Facebook|http://www.facebook.com]])
Claro, já comentei que acho mais bonito o [[MacOSX|http://www.apple.com/macosx/]].\n[>img[Captura da Tela|DesktopMini][https://leitao.redirectme.net/files/Captura_da_tela.png]] \nCheguei a esse resultado ao lado ajustando o tema do meu [[Gnome|http://www.gnome.org/]] no [[Ubuntu|http://www.ubuntu.com/]].\n\nVamos ver se a foto fica boa aqui.\n\nVoltei ao padrão pois dá muuuuuito trabalho para mudar tudo de novo a cada upgrade.
Gerencio vários sites, mas o meu principal e pessoal é [[aqui|https://leitao.redirectme.net]].
Textos avulsos, anotações soltas e desconexas, que não necessariamente se enquadram no blog [[Nerd]] principal do [[Supere-se!]], ou no MeuBlog pessoal, ou em algum dos livros em andamento no MeuSite.\n\nVou escrevendo entre uma idéia e outra, e quando chegar em algum lugar, talvez até sirva pra algo.
[[MonkeyGTD|http://mptw.tiddlyspot.com/]] é uma versão muito interessante de uma TiddlyWiki, fortemente apoiada pelos plugins [[MonkeyPirateTiddlyWiki|MPTW]] e configurada para agir como uma Dashboard [[GTD]].\n\nAproveitem, pois é muito facil de aprender a usar, muito portátil, útil e grátis.
{{{Monospaced text}}} is supported - edit this tiddler to see the syntax. \n\nSimilar to pre-formated html tag, you can also have monospaced blocks (useful for source code): \n\n{{{\nvar posTop = findPosY(e);\nvar posBot = posTop + e.offsetHeight;\nvar winTop = findScrollY();\nvar winHeight = findWindowHeight();\nvar winBot = winTop + winHeight;\nif(posTop < winTop)\nreturn(posTop);\nelse if(posBot > winBot)\n{\nif(e.offsetHeight < winHeight)\nreturn(posTop - (winHeight - e.offsetHeight));\nelse\nreturn(posTop);\n}\nelse\nreturn(winTop);\n}}}\n
|<<siteMap Formatação>>|<<siteMap Plugins 2>>|<<siteMap TagglyTagging>>|\n|noBorder threeCol|k
/***\n''MoveablePanelPlugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#MoveablePanelPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nAdd move, size, max/restore mouse event handling and fold/unfold, hover/scroll, and close/dock toolbar command items to any floating panel or tiddler. (see NestedSlidersPlugin for floating panel syntax/usage).\n\n!!!!!Usage\n<<<\nsyntax: {{{<<moveablePanel>>}}}\n\nexample: //using NestedSlidersPlugin 'floating panel' syntax//\n//{{{\n+++^30em^[panel]<<moveablePanel>>this is a headline for the panel\n----\n this is a moveable floating panel\n with a few lines of text\n as an example for you to try...\n //note: this line is really long so you can see what happens to word wrapping when you re-size this panel//\n===\n//}}}\nTry it: +++^30em^[panel]<<moveablePanel>>this is a headline for the panel\n----\n this is a moveable floating panel\n with a few lines of text\n as an example for you to try...\n //note: this line is really long so you can see what happens to word wrapping when you re-size this panel//\n===\n\n\nWhen the mouse is just inside the edges of the tiddler/panel, the cursor will change to a "crossed-arrows" symbol, indicating that the panel is "moveable". Grab (click-hold) the panel anywhere in the edge area and then drag the mouse to reposition the panel.\n\nTo resize the panel, hold the ''shift'' key and then grab the panel: the cursor will change to a "double-arrow" symbol. Drag a side edge of the panel to stretch horizontally or vertically, or drag a corner of the panel to stretch in both dimensions at once.\n\nDouble-clicking anywhere in the edge area of a panel will 'maximize' it to fit the current browser window.\n\nWhen the mouse is anywhere over a panel (not just near the edge), a 'toolbar menu' appears in the ''upper right corner'', with the following command items:\n*fold/unfold: ''fold'' temporarily reduces the panel height to show just one line of text. ''unfold'' restores the panel height.\n*hover/scroll: when you scroll the browser window, the moveable panels scroll with it. ''hover'' lets you keep a panel in view, while the rest of the page content moves in the window. ''scroll'' restores the default scrolling behavior for the panel. //Note: Due to browser limitations, this feature is not currently available when using Internet Explorer (v6 or lower)... sorry.//\n*close: ''close'' hides a panel from the page display. If you have moved/resized a panel, closing it restores its default position and size.\n*dock: unlike a floating panel, a moveable //tiddler// does not "float" on the page until it has actually been moved from its default position. When moving a tiddler, the ''close'' command is replaced with ''dock'', which restores the tiddler to its default //non-floating// location on the page.\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''MoveablePanelPlugin'' (tagged with <<tag systemConfig>>)\nNote: for compatibility, please also install the current version of ''NestedSlidersPlugin''.\n<<<\n!!!!!Revision History\n<<<\n''2006.05.25 [1.3.3]'' in closePanel(), use p.button.onclick() so that normal processing (updating slider button tooltip, access key, etc.) is performed\n''2006.05.11 [1.3.2]'' doc update\n''2006.05.11 [1.3.1]'' re-define all functions within moveablePanel object (eliminate global window.* function definitions (and some "leaky closures" in IE)\n''2006.05.11 [1.3.0]'' converted from inline javascript to true plugin\n''2006.05.09 [1.2.3]'' in closePanel(), set focus to sliderpanel button (if any)\n''2006.05.02 [1.2.2]'' in MoveOrSizePanel(), calculate adjustments for top and left when inside nested floating panels\n''2006.04.06 [1.2.1]'' in getPanel(), allow redefinition or bypass of "moveable" tag (changed from hard-coded "tearoff")\n''2006.03.29 [1.2.0]'' in getPanel(), require "tearoff" tag to enable floating tiddlers\n''2006.03.13 [1.1.0]'' added handling for floating tiddlers and conditional menu display\n''2006.03.06 [1.0.2]'' set move or resize cursor during mousetracking\n''2006.03.05 [1.0.1]'' use "window" vs "document.body" so mousetracking in FF doesn't drop the panel when moving too quickly\n''2006.03.04 [1.0.0]'' Initial public release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.moveablePanel= {major: 1, minor: 3, revision: 3, date: new Date(2006,5,25)};\n//}}}\n//{{{\nconfig.macros.moveablePanel= { \n handler:\n function(place,macroName,params) {\n var p=this.getPanel(place); if (!p) return;\n\n // remember original panel event handlers, size, location, border\n if (!p.saved) p.saved= {\n mouseover: p.onmouseover,\n mouseout: p.onmouseout,\n dblclick: p.ondblclick,\n top: p.style.top,\n left: p.style.left,\n width: p.style.width,\n height: p.style.height,\n position: p.style.position,\n border: p.style.border\n };\n\n // create control menu items\n var menupos=p.className=="floatingPanel"?"float:right;":"position:absolute;right:2em;top:3em;";\n var menustyle=p.className!="floatingPanel"?'style="border:1px solid #666;background:#ccc;color:#000;padding:0px .5em;"':"";\n var html='<div style="font-size:7pt;display:none;'+menupos+'">&nbsp;';\n if (p.className=="floatingPanel")\n html+='<a href="javascript:;" title="reduce panel size" '+menustyle\n +' onclick="return config.macros.moveablePanel.foldPanel(this,event)">fold</a>&nbsp; ';\n if (!config.browser.isIE)\n html+='<a href="javascript:;" title="keep panel in view when scrolling"'+menustyle\n +' onclick="return config.macros.moveablePanel.hoverPanel(this,event)">hover</a>&nbsp; ';\n if (p.className=="floatingPanel")\n html+='<a href="javascript:;" title="close panel and reset to default size and position"'+menustyle\n +' onclick="return config.macros.moveablePanel.closePanel(this,event)">close</a>';\n else\n html+='<a href="javascript:;" title="reset panel to default size and position"'+menustyle\n +' onclick="return config.macros.moveablePanel.closePanel(this,event)">dock</a>';\n html+='</div>';\n p.menudiv=createTiddlyElement(place,"span");\n p.menudiv.innerHTML=html;\n\n // init mouse handling and tooltip\n p.title="drag edge to move, shift key=stretch, double-click=max/restore";\n p.onmouseover=function(event) {\n if (this.className=="floatingPanel"||this.style.position=="absolute"||this.style.position=="fixed") {\n if (this.className!="floatingPanel") this.style.border="1px dotted #999"; // border around tiddler\n this.menudiv.firstChild.style.display="inline";\n }\n if (this.saved.mouseover) return this.saved.mouseover(event);\n };\n p.onmouseout=function(event) {\n this.menudiv.firstChild.style.display="none";\n if (this.className!="floatingPanel") this.style.border=this.saved.border;\n if (this.saved.mouseout) return this.saved.mouseout(event);\n };\n p.ondblclick=function(event) {\n if (!config.macros.moveablePanel.maximizePanel(this,event)) return false; // processed\n return this.saved.dblclick?this.saved.dblclick(event):true;\n };\n p.onmousemove=function(event) { return config.macros.moveablePanel.setCursorPanel(this,event); };\n p.onmousedown=function(event) { return config.macros.moveablePanel.moveOrSizePanel(this,event); };\n },\n\n getPanel:\n function(place) {\n var p=place; while (p && p.className!='floatingPanel') p=p.parentNode; if (p) return p; // floatingPanel\n p=story.findContainingTiddler(place); if (!p || !store.getTiddler(p.getAttribute("tiddler"))) return null; // not in a tiddler\n\n // moveable **tiddlers** in IE have LOTS of problems... DISABLED FOR NOW... but floating panels still work in IE\n if (config.browser.isIE) return null;\n\n // tiddlers tagged (e.g. with "moveable") to allow movement? use null or "" to bypass tag check\n var tag="moveable"; if (!tag || !tag.trim().length) return p;\n return (store.getTiddler(p.getAttribute("tiddler")).tags.find(tag)!=null)?p:null; // tiddler is tagged for moving\n },\n\n processed:\n function(event) {\n event.cancelBubble=true; if (event.stopPropagation) event.stopPropagation(); return false;\n },\n\n getClientWidth:\n function() {\n if(document.width!=undefined) return document.width;\n if(document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;\n if(document.body && document.body.clientWidth) return document.body.clientWidth;\n if(window.innerWidth!=undefined) return window.innerWidth;\n return 100; // should never get here\n },\n\n closePanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n if (p.hover) this.hoverPanel(p.hoverButton,event); \n if (p.folded) this.foldPanel(p.foldButton,event); \n p.maxed=false; \n p.style.top=p.saved.top;\n p.style.left=p.saved.left;\n p.style.width=p.saved.width;\n p.style.height=p.saved.height;\n p.style.position=p.saved.position;\n if (p.button) { p.button.focus(); onClickNestedSlider({target:p.button}); } // click on slider "button" (if any) to close the panel\n return this.processed(event);\n },\n\n foldPanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n if (!p.foldButton) p.foldButton=place;\n if (p.folded) {\n p.style.height=p.folded_savedheight;\n p.style.overflow=p.folded_savedoverflow;\n } else {\n p.folded_savedheight=p.style.height; p.style.height="1em"; \n p.folded_savedoverflow=p.style.overflow; p.style.overflow="hidden";\n }\n p.folded=!p.folded;\n place.innerHTML=p.folded?"unfold":"fold";\n place.title=p.folded?"restore panel size":"reduce panel size";\n return this.processed(event);\n },\n\n hoverPanel:\n function(place,event) {\n if (config.browser.isIE) { return this.processed(event); } // 'fixed' position is not handled properly by IE :-(\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n if (!p.hoverButton) p.hoverButton=place;\n if (p.hover)\n p.style.position=p.hover_savedposition;\n else\n { p.hover_savedposition=p.style.position; p.style.position="fixed"; }\n p.hover=!p.hover;\n place.innerHTML=p.hover?"scroll":"hover";\n place.title=p.hover?"make panel move with page when scrolling":"keep panel in view when scrolling page";\n return this.processed(event);\n },\n\n maximizePanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n var left=findPosX(p); var top=findPosY(p);\n var width=p.offsetWidth; var height=p.offsetHeight;\n var x=!config.browser.isIE?event.pageX:event.clientX;\n var y=!config.browser.isIE?event.pageY:event.clientY;\n if (x<left||x>=left+width||y<top||y>=top+height) return true; // not inside panel, let mousedown bubble through\n var edgeWidth=10; var edgeHeight=10;\n var isTop=(y-top<edgeHeight);\n var isLeft=(x-left<edgeWidth);\n var isBottom=(top+height-y<edgeHeight);\n var isRight=(left+width-x<edgeWidth);\n if (!(isTop||isLeft||isBottom||isRight))\n return true; // not near an edge... let double click bubble through\n if (p.folded) this.foldPanel(p.foldButton,event); // unfold panel first (if needed)\n if (p.maxed) {\n p.style.top=p.max_savedtop;\n p.style.left=p.max_savedleft;\n p.style.width=p.max_savedwidth;\n p.style.height=p.max_savedheight;\n p.style.position=p.max_savedposition;\n } else {\n p.max_savedwidth=p.style.width;\n p.max_savedheight=p.style.height;\n p.max_savedtop=p.style.top;\n p.max_savedleft=p.style.left;\n p.max_savedposition=p.style.position;\n // IE gets the percentage stretch wrong if floating panel is inside a table\n p.style.width=config.browser.isIE?(getClientWidth()*0.95+"px"):"95%";\n p.style.height="95%";\n p.style.top=p.style.left='1em';\n p.style.position="absolute";\n }\n p.maxed=!p.maxed;\n return this.processed(event);\n },\n\n setCursorPanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n var left=findPosX(p); var top=findPosY(p);\n var width=p.offsetWidth; var height=p.offsetHeight;\n var x=!config.browser.isIE?event.pageX:event.clientX;\n var y=!config.browser.isIE?event.pageY:event.clientY;\n if (x<left||x>=left+width||y<top||y>=top+height) return true; // not inside panel, let mousedown bubble through\n var edgeWidth=10; var edgeHeight=10;\n var isTop=(y-top<edgeHeight);\n var isLeft=(x-left<edgeWidth);\n var isBottom=(top+height-y<edgeHeight);\n var isRight=(left+width-x<edgeWidth);\n if (!(isTop||isLeft||isBottom||isRight))\n { p.style.cursor="auto"; if (!p.savedtitle) p.savedtitle=p.title; p.title=""; }\n else {\n p.style.cursor=!event.shiftKey?"move":((isTop?'n':(isBottom?'s':''))+(isLeft?'w':(isRight?'e':''))+'-resize');\n if (p.savedtitle) p.title=p.savedtitle;\n }\n return true; // let mouseover event bubble through\n },\n\n moveOrSizePanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n var left=findPosX(p); var top=findPosY(p);\n var width=p.offsetWidth; var height=p.offsetHeight;\n var x=!config.browser.isIE?event.pageX:event.clientX;\n var y=!config.browser.isIE?event.pageY:event.clientY;\n if (x<left||x>=left+width||y<top||y>=top+height) return true; // not inside panel, let mousedown bubble through\n var edgeWidth=10; var edgeHeight=10;\n var isTop=(y-top<edgeHeight);\n var isLeft=(x-left<edgeWidth);\n var isBottom=(top+height-y<edgeHeight);\n var isRight=(left+width-x<edgeWidth);\n if (!(isTop||isLeft||isBottom||isRight)) return true; // not near an edge... let mousedown bubble through\n \n // when resizing, change cursor to show directional (NSEW) "drag arrows"\n var sizing=event.shiftKey; // remember this for use during mousemove tracking\n if (sizing) p.style.cursor=((isTop?'n':(isBottom?'s':''))+(isLeft?'w':(isRight?'e':''))+'-resize');\n \n var adjustLeft=0; var adjustTop=0;\n var pp=p.parentNode; while (pp && pp.className!="floatingPanel") pp=pp.parentNode;\n if (pp) { adjustLeft=findPosX(pp); adjustTop=findPosY(pp); }\n \n // start tracking mousemove events\n config.macros.moveablePanel.activepanel=p;\n var target=p; // if 'capture' handling not supported, track within panel only\n if (document.body.setCapture) { document.body.setCapture(); var target=document.body; } // IE\n if (window.captureEvents) { window.captureEvents(Event.MouseMove|Event.MouseUp,true); var target=window; } // moz\n if (target.onmousemove!=undefined) target.saved_mousemove=target.onmousemove;\n target.onmousemove=function(e){\n if (!e) var e=window.event;\n var p=config.macros.moveablePanel.activepanel;\n if (!p) { this.onmousemove=this.saved_mousemove?this.saved_mousemove:null; return; }\n \n // PROBLEM: p.offsetWidth and p.offsetHeight do not seem to account for padding or borders\n // WORKAROUND: subtract padding and border (in px) when calculating new panel width and height\n // TBD: get these values from p.style... convert to px as needed.\n var paddingWidth=10.6667; var paddingHeight=10.6667;\n var borderWidth=1; var borderHeight=1;\n var adjustWidth=-(paddingWidth*2+borderWidth*2);\n var adjustHeight=-(paddingHeight*2+borderHeight*2);\n \n if (p.style.position!="absolute") { // convert relative DIV to movable absolute DIV\n p.style.position="absolute";\n p.style.left=left+"px"; p.style.top=top+"px";\n p.style.width=(width+adjustWidth)+"px"; p.style.top=(height+adjustHeight)+"px";\n }\n var newX=!config.browser.isIE?e.pageX:e.clientX;\n var newY=!config.browser.isIE?e.pageY:e.clientY;\n if (sizing) { // resize panel\n // don't let panel get smaller than edge "grab" zones\n var minWidth=edgeWidth*2-adjustWidth;\n var minHeight=edgeHeight*2-adjustHeight;\n p.maxed=false; // make sure panel is not maximized\n if (p.folded) this.foldPanel(p.foldButton,e); // make sure panel is unfolded\n if (isBottom) var newHeight=height+newY-y+1;\n if (isTop) var newHeight=height-newY+y+1;\n if (isLeft) var newWidth=width-newX+x+1;\n if (isRight) var newWidth=width+newX-x+1;\n if (isLeft||isRight) p.style.width=(newWidth>minWidth?newWidth:minWidth)+adjustWidth+"px";\n if (isLeft) p.style.left=left-adjustLeft+newX-x+1+"px";\n if (isTop||isBottom) p.style.height=(newHeight>minHeight?newHeight:minHeight)+adjustHeight+"px";\n if (isTop) p.style.top=top-adjustTop+newY-y+1+"px";\n } else { // move panel\n p.style.top=top-adjustTop+newY-y+1+"px";\n p.style.left=left-adjustLeft+newX-x+1+"px";\n }\n var status=sizing?("size: "+p.style.width+","+p.style.height):("pos: "+p.style.left+","+p.style.top);\n window.status=status.replace(/(\s.[0-9]+)|px/g,""); // remove decimals and "px"\n return config.macros.moveablePanel.processed(e);\n };\n \n // stop tracking mousemove events\n if (target.onmouseup!=undefined) target.saved_mouseup=target.onmouseup;\n target.onmouseup=function(e){\n if (!e) var e=window.event;\n if (this.releaseCapture) this.releaseCapture(); // IE\n if (this.releaseEvents) this.releaseEvents(Event.MouseMove|Event.MouseUp); // moz\n this.onmousemove=this.saved_mousemove?this.saved_mousemove:null;\n this.onmouseup=this.saved_mouseup?this.saved_mouseup:null;\n config.macros.moveablePanel.activepanel=null;\n window.status="";\n return config.macros.moveablePanel.processed(e);\n };\n return this.processed(event); // mousedown handled\n }\n};\n//}}}
Páginas que influenciam e configuram os aspectos de [[Navegação]] do site.
Blog principal do site sobre pesquisas, estudos, experimentos, problemas e bincadeiras sobre tudo que esbarrar de tecnológico e interessante.\n\nCom o tempo, procure algum arquivo nos <<tag [[NerdArchive]]>>, onde deixarei os //posts// antigos.
/***\n''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.TiddlyTools.com/#NestedSlidersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify\n*default to open\n*cookiename\n*heading level\n*floater (with optional CSS width value)\n*mouse auto rollover\n*custom class/label/tooltip/accesskey\n*automatic blockquote\n*deferred rendering\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsaves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{^width^}}} (or just {{{^}}})^^\nmakes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)^^\n* {{{*}}}^^\nautomatically opens/closes slider on "rollover" as well as when clicked^^\n* {{{{{class{[label=key|tooltip]}}}}}}^^\nuses custom label/tooltip/accesskey. {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//\n{{{\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n}}}\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n----\ncomplex nesting example:\n{{{\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n}}}\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n===\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.07.28 - 2.0.0'' added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}\n''2006.07.25 - 1.9.3'' when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.\n''2006.06.29 - 1.9.2'' in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"\n''2006.06.22 - 1.9.1'' added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value\n''2006.05.11 - 1.9.0'' added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label\n''2006.05.09 - 1.8.0'' in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element\n''2006.04.24 - 1.7.8'' in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position\n''2006.02.16 - 1.7.7'' corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie\n''2006.02.15 - 1.7.6'' in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)\n''2006.02.04 - 1.7.5'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n''2006.01.18 - 1.7.4'' only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.\n''2006.01.16 - 1.7.3'' added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.\n''2006.01.16 - 1.7.2'' added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends\n''2006.01.14 - 1.7.1'' added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.\n''2006.01.14 - 1.7.0'' added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)\n''2006.01.03 - 1.6.2'' When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n''2005.12.15 - 1.6.1'' added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n''2005.11.25 - 1.6.0'' added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n''2005.11.21 - 1.5.1'' revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n''2005.11.20 - 1.5.0'' added (cookiename) syntax for optional tracking and restoring of slider open/close state\n''2005.11.11 - 1.4.0'' added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n''2005.11.07 - 1.3.0'' removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\nformatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n''2005.11.05 - 1.2.1'' changed name to NestedSlidersPlugin\nmore documentation\n''2005.11.04 - 1.2.0'' added alternative character-mode syntax {{{(((}}} and {{{)))}}}\ntweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n''2005.11.03 - 1.1.1'' fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\ncode cleanup, added documentation\n''2005.11.03 - 1.1.0'' changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\nchanged name to EasySlidersPlugin\n''2005.11.03 - 1.0.0'' initial public release\n<<<\n!!!!!Credits\n<<<\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.nestedSliders = {major: 2, minor: 0, revision: 0, date: new Date(2006,7,28)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n\n// default styles for 'floating' class\nsetStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \s\n background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s^(?:[^\s\s^\s\s*\s\s[\s\s>]*\s\s^)?)?(\s\s*)?(?:\s\s{\s\s{([\s\sw]+[\s\ss\s\sw]*)\s\s{)?(\s\s[[^\s\s]]*\s\s])?(?:\s\s}{3})?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n // defopen=lookaheadMatch[1]\n // cookiename=lookaheadMatch[2]\n // header=lookaheadMatch[3]\n // panelwidth=lookaheadMatch[4]\n // rollover=lookaheadMatch[5]\n // class=lookaheadMatch[6]\n // label=lookaheadMatch[7]\n // blockquote=lookaheadMatch[8]\n // deferred=lookaheadMatch[9]\n\n lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie, no accesskey\n var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().slice(1,-1);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // parse custom label/tooltip/accesskey: [label=X|tooltip]\n if (lookaheadMatch[7]) {\n title = lookaheadMatch[7].trim().slice(1,-1);\n var pos=title.indexOf("|");\n if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }\n if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }\n if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"\n }\n\n // create the button\n if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n }\n else\n var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);\n\n // set extra button attributes\n btn.sliderCookie = cookie; // save the cookiename (if any) in the button object\n btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)\n btn.keyparam=key; // save the access key letter ("" if none)\n if (key.length) {\n btn.setAttribute("accessKey",key); // init access key\n btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus\n }\n\n // "non-click" MouseOver open/close slider\n if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panel=createTiddlyElement(place,"div",null,panelClass,null);\n panel.button = btn; // so the slider panel know which button it belongs to\n panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size\n btn.sliderPanel=panel;\n panel.style.display = show;\n panel.style.width=panel.defaultPanelWidth;\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if ((show=="block")||!lookaheadMatch[9]) {\n // render now if panel is supposed to be shown or NOT deferred rendering\n w.subWikify(lookaheadMatch[8]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align slider/floater position with button\n adjustSliderPos(place,btn,panel,panelClass);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[8]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nwindow.onClickNestedSlider=function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n theSlider.style.display = isOpen ? "none" : "block";\n // reset to default width (might have been changed via plugin code)\n theSlider.style.width=theSlider.defaultPanelWidth;\n // align slider/floater position with target button\n if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);\n // if showing panel, set focus to first 'focus-able' element in panel\n if (theSlider.style.display!="none") {\n var ctrls=theSlider.getElementsByTagName("*");\n for (var c=0; c<ctrls.length; c++) {\n var t=ctrls[c].tagName.toLowerCase();\n if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")\n { ctrls[c].focus(); break; }\n }\n }\n if (this.sliderCookie && this.sliderCookie.length) {\n config.options[this.sliderCookie]=!isOpen;\n if (config.options[this.sliderCookie]!=this.defOpen)\n saveOptionCookie(this.sliderCookie);\n else { // remove cookie if slider is in default display state\n var ex=new Date(); ex.setTime(ex.getTime()-1000);\n document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();\n }\n }\n return false;\n}\n\n// hijack animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }\n\n// adjust panel position based on button position\nif (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {\n if (panelClass=="floatingPanel") {\n var left=0;\n var top=btn.offsetHeight; \n if (place.style.position!="relative") {\n var left=findPosX(btn);\n var top=findPosY(btn)+btn.offsetHeight;\n var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;\n if (p) { left-=findPosX(p); top-=findPosY(p); }\n }\n if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n}\n\nfunction getWindowWidth() {\n if(document.width!=undefined)\n return document.width; // moz (FF)\n if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )\n return document.documentElement.clientWidth; // IE6\n if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )\n return document.body.clientWidth; // IE4\n if(window.innerWidth!=undefined)\n return window.innerWidth; // IE - general\n return 0; // unknown\n}\n//}}}
/***\n''NewDocumentPlugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#NewDocumentPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nQuickly create new TiddlyWiki documents from your existing document, with just one click! Use the {{{<<newDocument>>}}} macro to place a "new document" link into your sidebar/mainmenu/any tiddler (wherever you like). Select this command to automatically create a "new.html" document containing a specific set of tagged tiddlers. Optional parameters let you specify an alternate path/filename for the new file, or different tags to match. You can also indicate "ask" for either parameter, which will trigger a prompt for input when the command is selected.\n\n!!!!!Usage\n<<<\n{{{<<newDocument label:text filename tag tag tag...>>}}}\n{{{<<newDocument label:text filename all>>}}}\n{{{<<newDocument label:text filename snap>>}}}\n where:\n* ''label:text'' defines //optional// alternative link text (replaces default "new document" display)\n* ''filename'' is any local path-and-filename. If no parameters are provided, the default is to create the file "new.htm" in the current directory. If a filename is provided without a path (i.e., there is no "/" in the input), then the current directory is also assumed. Otherwise, this parameter is expected to contain the complete path and filename needed to write the file to your local hard disk. If ''ask'' is used in place of the filename parameter then, when the command link is selected, a message box will be automatically displayed so you can select/enter the path and filename.\n* ''tag tag tag...'' is a list of one or more space-separated tags (use quotes or {{{[[]]}}} around tags that contain spaces). The new document will include all tiddlers that match at least one of the tags in the list. The default is to include tiddlers tagged with <<tag includeNew>>or<<tag systemTiddlers>>. The special value ''all'' may be used to match every tiddler (even those without tags). If ''ask'' is used in place of the tags then, when the command link is selected, a message box will be automatically displayed so you can enter the desired tags at that time.\n* When the keyword ''snap'' is used in place of tags to match, the plugin generates a file containing the //rendered// CSS-and-HTML for all tiddlers currently displayed in the document.\n\nNote: as of version 1.4.0 of this plugin, support for selecting tiddlers by using tag *expressions* has been replaced with simpler, more efficient "containsAny()" logic. To create new ~TiddlyWiki documents that contain only those tiddlers selected with advanced AND/OR/NOT Boolean expressions, you can use the filtering features provided by the ExportTiddlersPlugin (see www.TiddlyTools.com/#ExportTiddlersPlugin).\n<<<\n!!!!!Examples:\n<<<\n{{{<<newDocument>>}}}\nequivalent to {{{<<newDocument new.htm includeNew systemTiddlers>>}}}\ncreates default "new.htm" containing tiddlers tagged with either<<tag includeNew>>or<<tag systemTiddlers>>\ntry it: <<newDocument>>\n\n{{{<<newDocument empty.html systemTiddlers>>}}}\ncreates "empty.html" containing only tiddlers tagged with<<tag systemTiddlers>>\n//(reproduces old-style (pre 2.0.2) empty file)//\ntry it: <<newDocument empty.html systemTiddlers>>\n\n{{{<<newDocument "label:create Import/Export starter" ask importexport>>}}}\nsave importexport tiddlers to a new file, prompts for path/file\ntry it: <<newDocument "label:create Import/Export starter" ask importexport>>\n\n{{{<<newDocument ask ask>>}}}\nprompts for path/file, prompts for tags to match\ntry it: <<newDocument ask ask>>\n\n{{{<<newDocument ask all>>}}}\nsave all current TiddlyWiki contents to a new file, prompts for path/file\ntry it: <<newDocument ask all>>\n\n{{{<<newDocument ask snap>>}}}\ngenerates snapshot of currently displayed document, prompts for path/file\ntry it: <<newDocument ask snap>>\n\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n''NewDocumentPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.05.23 [1.4.0]'' due to very poor performance, support for tag *expressions* has been removed, in favor of a simpler "containsAny()" scan for tags.\n''2006.04.09 [1.3.6]'' in onClickNewDocument, added call to convertUnicodeToUTF8() to better handle international characters.\n''2006.03.15 [1.3.5]'' added nsIFilePicker() handler for selecting filename in moz-based browsers. IE and other non-moz browsers still use simple prompt() dialog\n''2006.03.15 [1.3.0]'' added "label:text" param for custom link text. added special "all" filter parameter for "save as..." handling (writes all tiddlers to output file)\n''2006.03.09 [1.2.0]'' added special "snap" filter parameter to generate and write "snapshot" files containing static HTML+CSS for currently rendered document.\n''2006.02.24 [1.1.2]'' Fix incompatiblity with TW 2.0.5 by removing custom definition of getLocalPath() (which is now part of TW core)\n''2006.02.03 [1.1.1]'' concatentate 'extra' params so that tag expressions don't have to be quoted. moved all text to 'formatted' string definitions for easier translation.\n''2006.02.03 [1.1.0]'' added support for tag EXPRESSIONS. plus improved documentation and code cleanup\n''2006.02.03 [1.0.0]'' Created.\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.newDocument = {major: 1, minor: 3, revision: 6, date: new Date(2006,4,9)};\n\nconfig.macros.newDocument = {\n newlabel: "new document",\n newprompt: "Create a new TiddlyWiki 'starter' document",\n newdefault: "new.htm",\n allparam: "all",\n saveaslabel: "save as...",\n saveasprompt: "Save current TiddlyWiki to a different file",\n snapparam: "snap",\n snaplabel: "create a snapshot",\n snapprompt: "Create a 'snapshot' of the current TiddlyWiki display",\n snapdefault: "snapshot.htm",\n askparam: "ask",\n labelparam: "label:",\n fileprompt: "Please enter a filename",\n filter: "includeNew OR systemTiddlers",\n filterprompt: "Enter tag(s) to match (use AND, OR, NOT)",\n filtererrmsg: "Error in tag filter '%0'",\n snapmsg: "Document snapshot written to %0",\n okmsg: "%0 tiddlers written to %1",\n failmsg: "An error occurred while creating '%0'"\n};\n\nconfig.macros.newDocument.handler = function(place,macroName,params) {\n\n var path=getLocalPath(document.location.toString());\n var slashpos=path.lastIndexOf("/"); if (slashpos==-1) slashpos=path.lastIndexOf("\s\s"); \n if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash\n\n if (params[0] && params[0].substr(0,config.macros.newDocument.labelparam.length)==config.macros.newDocument.labelparam)\n var label=params.shift().substr(config.macros.newDocument.labelparam.length)\n var filename=params.shift(); if (!filename) filename=config.macros.newDocument.newdefault;\n if (params[0]==config.macros.newDocument.snapparam) {\n if (!label) var label=config.macros.newDocument.snaplabel;\n var prompt=config.macros.newDocument.snapprompt;\n var defaultfile=config.macros.newDocument.snapdefault;\n }\n if (params[0]==config.macros.newDocument.allparam) {\n if (!label) var label=config.macros.newDocument.saveaslabel;\n var prompt=config.macros.newDocument.saveasprompt;\n var defaultfile=getLocalPath(document.location.toString());\n var slashpos=defaultfile.lastIndexOf("/"); if (slashpos==-1) slashpos=defaultfile.lastIndexOf("\s\s");\n if (slashpos!=-1) defaultfile=defaultfile.substr(slashpos+1); // get filename only\n }\n if (!prompt) var prompt=config.macros.newDocument.newprompt;\n if (!label) var label=config.macros.newDocument.newlabel;\n if (!defaultfile) var defaultfile=config.macros.newDocument.newdefault;\n\n var btn=createTiddlyButton(place,label,prompt,onClickNewDocument);\n btn.path=path;\n btn.file=filename;\n btn.defaultfile=defaultfile;\n btn.filter=params.length?params:[config.macros.newDocument.filter]; \n}\n\n// IE needs explicit global scoping for functions called by browser events\nwindow.onClickNewDocument=function(e)\n{\n if (!e) var e = window.event; var btn=resolveTarget(e);\n\n // get output path/filename\n var filename=btn.file;\n if (filename==config.macros.newDocument.askparam)\n filename=promptForFilename(config.macros.newDocument.fileprompt,btn.path,btn.defaultfile);\n if (!filename) return; // cancelled by user\n // if specified file does not include a path, assemble fully qualified path and filename\n var slashpos=filename.lastIndexOf("/"); if (slashpos==-1) slashpos=filename.lastIndexOf("\s\s");\n if (slashpos==-1) filename=btn.path+filename;\n // assemble document content, write file, report result\n if (btn.filter[0]==config.macros.newDocument.snapparam) { // HTML+CSS snapshot\n var styles=document.getElementsByTagName("style");\n var out="<html>\sn<head>\sn<style>\sn";\n for(var i=0; i < styles.length; i++) out +="/* stylesheet from tiddler:"+styles[i].getAttribute("id")+" */\sn"+styles[i].innerHTML+"\sn\sn";\n out += "</style>\sn</head>\sn<body>\sn\sn"+document.getElementById("contentWrapper").innerHTML+"\sn\sn</body>\sn</html>";\n var msg=saveFile(filename,out)\n ?config.macros.newDocument.snapmsg.format([filename])\n :config.macros.newDocument.failmsg.format([filename]);\n } else { // TW starter document\n // get the TiddlyWiki core code source\n var sourcefile=getLocalPath(document.location.toString());\n var source=loadFile(sourcefile);\n if(source==null) { alert(config.messages.cantSaveError); return null; }\n var posOpeningDiv=source.indexOf(startSaveArea);\n var posClosingDiv=source.lastIndexOf(endSaveArea);\n if((posOpeningDiv==-1)||(posClosingDiv==-1)) { alert(config.messages.invalidFileError.format([sourcefile])); return; }\n // get the matching tiddler divs\n var match=btn.filter;\n if (match[0]==config.macros.newDocument.askparam)\n match=prompt(config.macros.newDocument.filterprompt,config.macros.newDocument.filter).readMacroParams();\n if (!match[0]) return; // cancelled by user\n var storeAreaDivs=[];\n var tiddlers=store.getTiddlers('title');\n for (var i=0; i<tiddlers.length; i++)\n if (match[0]==config.macros.newDocument.allparam || (tiddlers[i].tags && tiddlers[i].tags.containsAny(match)) )\n storeAreaDivs.push(tiddlers[i].saveToDiv());\n var out=source.substr(0,posOpeningDiv+startSaveArea.length)+convertUnicodeToUTF8(storeAreaDivs.join("\sn"))+"\sn\st\st"+source.substr(posClosingDiv);\n var msg=saveFile(filename,out)\n ?config.macros.newDocument.okmsg.format([storeAreaDivs.length,filename])\n :config.macros.newDocument.failmsg.format([filename]);\n }\n clearMessage(); displayMessage(msg);\n e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);\n}\n//}}}\n\n//{{{\nfunction promptForFilename(msg,path,file)\n{\n if(!window.Components)\n return prompt(msg,path+file); // fallback for IE and other non-moz browsers\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var nsIFilePicker = window.Components.interfaces.nsIFilePicker;\n var picker = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);\n picker.init(window, msg, nsIFilePicker.modeSave);\n var thispath = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\n thispath.initWithPath(path);\n picker.displayDirectory=thispath;\n picker.defaultExtension="html";\n picker.defaultString=file;\n picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);\n var result = picker.show();\n if (result == nsIFilePicker.returnOK) return picker.file.persistentDescriptor;\n }\n catch(e) { alert('error during local file access: '+e.toString()) }\n}\n//}}}
/***\n|Name|NewHereCommand|\n|Source|http://simonbaird.com/mptw/#NewHereCommand|\n|Version|1.0|\n\nCode originally by ArphenLin. Small tweak by SimonBaird\nhttp://aiddlywiki.sourceforge.net/NewHere_demo.html#NewHereCommand\nTo use this you must edit your ViewTemplate and add newHere to the toolbar div, eg\n{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}\n***/\n//{{{\n\nconfig.commands.newHere = {\n text: 'new here',\n tooltip: 'Create a new tiddler tagged as this tiddler',\n hideReadOnly: true,\n handler: function(e,src,title) {\n if (!readOnly) {\n clearMessage();\n var t=document.getElementById('tiddler'+title);\n story.displayTiddler(t,config.macros.newTiddler.title,DEFAULT_EDIT_TEMPLATE);\n story.setTiddlerTag(config.macros.newTiddler.title, title, 0);\n story.focusTiddler(config.macros.newTiddler.title,"title");\n return false;\n }\n }\n};\n\nconfig.commands.newJournalHere = {\n //text: 'new journal here', // too long\n text: 'new journal',\n hideReadOnly: true,\n dataFormat: 'YYYY-0MM-0DD 0hh:0mm', // adjust to your preference\n tooltip: 'Create a new journal tiddler tagged as this tiddler',\n handler: function(e,src,title) {\n if (!readOnly) {\n clearMessage();\n var now = new Date();\n var t=document.getElementById('tiddler'+title);\n var newtitle = now.formatString(this.dataFormat)\n story.displayTiddler(t,newtitle,DEFAULT_EDIT_TEMPLATE);\n story.setTiddlerTag(newtitle, title, 0);\n story.focusTiddler(newtitle,"title");\n return false;\n }\n }\n};\n\n\n//}}}
http://www.gnusolaris.org\n\nNo que o OpenSolaris deveria estar se transformando, e muito focado no resultado do Ubuntu. Quase um Debian sem Linux. Meus parabéns aos resultados já obtidos, mas ainda tem muito o que percorrer, e o resultado deverá ser espetacular.\n\nVou acabar experimentando a próxima versão stable no meu notebook pra poder comentar melhor, mas no momento ainda é Alpha6 tenho problemas com drivers.\n\nE vem com Gnome2 (oba).
To make a tiddler that doesn't have a WikiWord as its name, you can enclose the name in [[double square brackets]] - edit this tiddler to see an example. After saving the tiddler you can then click on the link to create the new tiddler. NonWikiWordLinks permits tiddlers to be created with names that are made from character sets that don't have upper and lower case.
#Não tente seguir qualquer descrição do site se você não tem certeza de como desfazer ou corrigir em caso de problemas.\n#Alguns dos programas podem exigir pré-requisitos não mencionados e que talvez já existissem nas minhas máquinas de teste, portanto, nem todos os seus passos podem ter os mesmos resultados que os meus. \n#Sempre confirme as orientações passadas visitando os sites de referência.
It's easy to create NumberedBulletPoints.\n# Use a single '#' at the start of each line\n# and the tiddler will automatically\n# start numbering your list.\n## If you want a sub-list\n## within any bullets\n## add two '#'s at the start of the lines.\n# When you go back to a single '#'\n# the main numbered list will start up\n# where it left off.\n\nIt's just as simple to do normal BulletPoints.
O [[OCS|http://ocsinventory.sourceforge.net/]] foi desenvolvido por uma comunidade francesa, então pode complicar para entender as listas de discução ou pedir ajuda se você não conhece a língua, mas o manual oficial (em inglês) é salvador.\n\nBem prático de instalar (tirando alguns detalhes de configuração do cpan no Perl) cataloga tudo na máquina Windows ou Linux em um site que apresenta o relatrório preparado em um servidor Linux ou Windows.\n\nÉ só escolher o método de coleta (como serviço automático ou executado em Logon) e esperar que todas as máquinas façam o catálogo no servidor. \n\nDetalha inclusive os seriais e liceças usadas na instalação do Windows, e ajuda a totalizar Offices, Anti-virus, e tudo mais que a máquina tiver. Não tenho certeza ainda se esta versão pesquisa por executáveis soltos no HD também.\n\nE aceita compartilhar a base gerada com [[GLPI]].\n\nMuito parecido em função com o [[Cacic]] da Dataprev.
Outro dia ouvi de um amigo: ''//"Mulher, Time de futebol e Sistema operacional não se discute."//''\n\nAlém de hilariante, concordo 100%. Ainda assim, me valho de alguns comentários que podem ajudar.\n*Windows XP todo mundo usa, e dá pra usar bem e usar seguro se você quizer. Além dos games. Games acho que mantém o mercado da MS mais do que outra coisa. E CAD, já que o que existe ainda não presta em outra plataforma. ==Ainda não testei o Vista, já que obviamente meu [[hardware|my hardware]] não agüenta, mas achei lindo.==\n*Vista, tem quem odeie, eu mesmo já odiei, mas depois de vários upgrades parece bem melhor, desde que você possa entupir com o máximo de memória que sua máquina permita. Não economise aqui. Mas vale a pena, pois funciona bem melhor do que se imaginava quando foi lançado. ==Qualquer dia vem o 7, e acho que para melhorar muito (pelo que vi do Beta).==\n*Esqueça o Vista, 7 é o que há, o que o Vista devia ter sido... bem feito, bonito, estável.\n*2003 Server com Exchange é a melhor combinação da MS desde que comecei a suar computador em 1991. Ambos foram muito bem pensados e beiram a perfeição de design e acabamento. Infelizmente alguns detalhes me dão nos nervos. Virus é um. O limite da base na versão Standard é outro.\n*Linux é muito versatil, muito divertido e muito seguro... mas se voce não souber usar, pode ser muito dificil e assutador, e olha que uso desde de 1994. Hoje em dia recomendo inclusive para desktop, se for uma [[distro]] legal como a [[Ubuntu]] (uso em casa em todas as máquinas ao menos como //dual boot//).\n*Solaris e suas versões OpenSource são muito robustas. ~TruePosix. Unix na veia. Não tá de brincadeira pra ninguém. Verifiquem depois o projeto [[Nexenta]], que tenho acompanhado desde a versão Alpha2, e pretende ser como Ubuntu.\n*~OpenBSD... um Deus em quesitos de segurança... ainda peca um pouco na ==falta de== simplicidade, mas e compensado pela documentação completíssima em //man//.\n*~PC-BSD não é um fork do FreeBSD, imagine como um ~AddOn como facilidade de instalador gráfico e gerente de pacotes instalados (pbi), infelizmente só vem com KDE (mas tem quem prefira, mas eu sou de Gnome) levemente maqueado como Vista. Muito rápido mesmo no meu [[laptop bem fraquinho]] mas tive dificuldade ou falta com algumas aplicações que uso no Ubuntu.\n*~MacOSX é o supra-sumo. Alem de lindo, é Unix (fork do FreeBSD com toques de Mach3) e OpenSource, exceto pela interface Aqua. Alguns programas pra ele são meio caros, mas existem várias opções OpenSource.\n\nNão cabem aqui alguma explicação com profundidade, minha experiência em cada um não é pouca, mas não consigo demonstrar todos os truques.
http://www.openoffice.org\nou\nhttp://www.openoffice.org.br\n\nSubstitui o Word, Excel e ~PowerPoint. Tem uma base de dados, man não é Access. E lembre-se que a ~MicroSoft ainda tem Visio, Project, Publish, Outlook, Onenote...\n\nÉ similar a versão 2003 e não abre ainda os formatos novos de Office 2007.
http://openproj.org/\n\nAdministrador de projetos com gráficos Gantt e alocações de resursos muito bem recomendado pela PMI
http://www.opensolaris.org\n\nUma versão disponível ao público de um sistema operacionall Unix POSIX SVR4 de verdade, o OpenSolaris tem muito o que apresentar para o mundo, mas ainda peca com algumas limitações de drivers para hardware (como áudio). Era muito fácil desenvolver apenas para um hardware bem conhecido (como a Apple) mas esta versão, como o Solaris 10, serve para i386 também. \n\nEste projeto serve de base para vários, mas o principal e o que acompanho mais de perto é o [[Nexenta]].\n\nE vem com Gnome2 (oba).
Estou tentando catalogar um //kit//, uma coleção de programas OpenSource e/ou GRÁTIS, de preferência que tenha versões para Linux, Windows e ~MacOSX.\n\nVou tratar mais ou menos como uma coluna sobre programas e pacotes que experimentei e recomendo.\n\nSempre que puder coloco alguma explicação.\n\nAceito dicas e recomendações para testar, entre em [[contato|FabioLeitao]].
http://www.openworkbench.org/\n\nAdministrador de projetos com gráficos Gantt
tiddlyspot password:\n<<option pasUploadPassword>>\n\nThese InterfaceOptions for customising TiddlyWiki are saved in your browser\n\nYour username for signing your edits. Write it as a WikiWord (eg JoeBloggs)\n\n<<option txtUserName>>\n<<option chkSaveBackups>> SaveBackups\n<<option chkAutoSave>> AutoSave\n<<option chkRegExpSearch>> RegExpSearch\n<<option chkCaseSensitiveSearch>> CaseSensitiveSearch\n<<option chkAnimate>> EnableAnimations\n<<tiddler ToggleTopButton>>\n\nSee AdvancedOptions
http://www.pbidir.com/\n\n//"Press Button Installation"//\n\nRepositório de pacotes de instação no formato PC-BSD.\n\nEra pra ser similar ao InstallShield no Windows ou dmg MacOS X
http://www.pcbsd.org\n\nQuase como uma distro do FreeBSD sem ser realmente uma fork. Introduziram algumas ferramentas interessantes, mas a principal mudança foi um sistema de instalação de pacotes PBIs como arquivos binários mas fácil de usar que download de código fonte e compilações cheias de dependências.\n\nPara os bravos, mas com muitas facilidades embutidas.
Sei que me falta muitas vezes, mas conforme meu laptop foi enlouquecendo paulatinamente, mesmo com Linux, fui perdendo a pouca que me resta.\n\nAssim sendo, acabei mordido e anotei o que queria e o que não queria novamente no computador e de posse do disco de instalção refiz meu Ubuntu em umas 6 horas.\n\nFui doloroso, mas o resultado compensou. Consegui uma máquina mais enxuta e e com tema ainda mais similar ao ~MacOSX.
<div class='header'>\n<span id='siteTitle' class='siteTitle' refresh='content' tiddler='SiteTitle'></span>\n<span id='siteSubtitle' class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div id='siteMenu' class='siteMenu' refresh='content' tiddler='SiteMenu'></div>\n<div id='breadCrumbs' class='breadCrumbs'></div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='storyMenu' class='storyMenu' refresh='content' force='true' tiddler='StoryMenu'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<span style='display:none' macro='tiddler SiteStartup'></span>
<div class='header' macro='gradient vert #18f #04b'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='storyMenu' class='storyMenu' refresh='content' force='true' tiddler='StoryMenu'></div>\n<div id='tiddlerDisplay'></div>\n</div>
|Standard Periodic Table (ref. Wikipedia)|c\n|| !1 | !2 |!| !3 | !4 | !5 | !6 | !7 | !8 | !9 | !10 | !11 | !12 | !13 | !14 | !15 | !16 | !17 | !18 |\n|!1|bgcolor(#a0ffa0): @@color(red):H@@ |>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>||bgcolor(#c0ffff): @@color(red):He@@ |\n|!2|bgcolor(#ff6666): Li |bgcolor(#ffdead): Be |>|>|>|>|>|>|>|>|>|>||bgcolor(#cccc99): B |bgcolor(#a0ffa0): C |bgcolor(#a0ffa0): @@color(red):N@@ |bgcolor(#a0ffa0): @@color(red):O@@ |bgcolor(#ffff99): @@color(red):F@@ |bgcolor(#c0ffff): @@color(red):Ne@@ |\n|!3|bgcolor(#ff6666): Na |bgcolor(#ffdead): Mg |>|>|>|>|>|>|>|>|>|>||bgcolor(#cccccc): Al |bgcolor(#cccc99): Si |bgcolor(#a0ffa0): P |bgcolor(#a0ffa0): S |bgcolor(#ffff99): @@color(red):Cl@@ |bgcolor(#c0ffff): @@color(red):Ar@@ |\n|!4|bgcolor(#ff6666): K |bgcolor(#ffdead): Ca ||bgcolor(#ffc0c0): Sc |bgcolor(#ffc0c0): Ti |bgcolor(#ffc0c0): V |bgcolor(#ffc0c0): Cr |bgcolor(#ffc0c0): Mn |bgcolor(#ffc0c0): Fe |bgcolor(#ffc0c0): Co |bgcolor(#ffc0c0): Ni |bgcolor(#ffc0c0): Cu |bgcolor(#ffc0c0): Zn |bgcolor(#cccccc): Ga |bgcolor(#cccc99): Ge |bgcolor(#cccc99): As |bgcolor(#a0ffa0): Se |bgcolor(#ffff99): @@color(green):Br@@ |bgcolor(#c0ffff): @@color(red):Kr@@ |\n|!5|bgcolor(#ff6666): Rb |bgcolor(#ffdead): Sr ||bgcolor(#ffc0c0): Y |bgcolor(#ffc0c0): Zr |bgcolor(#ffc0c0): Nb |bgcolor(#ffc0c0): Mo |bgcolor(#ffc0c0): Tc |bgcolor(#ffc0c0): Ru |bgcolor(#ffc0c0): Rh |bgcolor(#ffc0c0): Pd |bgcolor(#ffc0c0): Ag |bgcolor(#ffc0c0): Cd |bgcolor(#cccccc): In |bgcolor(#cccccc): Sn |bgcolor(#cccc99): Sb |bgcolor(#cccc99): Te |bgcolor(#ffff99): I |bgcolor(#c0ffff): @@color(red):Xe@@ |\n|!6|bgcolor(#ff6666): Cs |bgcolor(#ffdead): Ba |bgcolor(#ffbfff):^^*1^^|bgcolor(#ffc0c0): Lu |bgcolor(#ffc0c0): Hf |bgcolor(#ffc0c0): Ta |bgcolor(#ffc0c0): W |bgcolor(#ffc0c0): Re |bgcolor(#ffc0c0): Os |bgcolor(#ffc0c0): Ir |bgcolor(#ffc0c0): Pt |bgcolor(#ffc0c0): Au |bgcolor(#ffc0c0): @@color(green):Hg@@ |bgcolor(#cccccc): Tl |bgcolor(#cccccc): Pb |bgcolor(#cccccc): Bi |bgcolor(#cccc99): Po |bgcolor(#ffff99): At |bgcolor(#c0ffff): @@color(red):Rn@@ |\n|!7|bgcolor(#ff6666): Fr |bgcolor(#ffdead): Ra |bgcolor(#ff99cc):^^*2^^|bgcolor(#ffc0c0): Lr |bgcolor(#ffc0c0): Rf |bgcolor(#ffc0c0): Db |bgcolor(#ffc0c0): Sq |bgcolor(#ffc0c0): Bh |bgcolor(#ffc0c0): Hs |bgcolor(#ffc0c0): Mt |bgcolor(#ffc0c0): Ds |bgcolor(#ffc0c0): Rg |bgcolor(#ffc0c0): @@color(green):Uub@@ |bgcolor(#cccccc): Uut |bgcolor(#cccccc): Uuq |bgcolor(#cccccc): Uup |bgcolor(#cccccc): Uuh |bgcolor(#fcfecc): @@color(#cccccc):Uus@@ |bgcolor(#ecfefc): @@color(#cccccc):Uuo@@ |\n\n| !Lanthanides^^*1^^|bgcolor(#ffbfff): La |bgcolor(#ffbfff): Ce |bgcolor(#ffbfff): Pr |bgcolor(#ffbfff): Nd |bgcolor(#ffbfff): Pm |bgcolor(#ffbfff): Sm |bgcolor(#ffbfff): Eu |bgcolor(#ffbfff): Gd |bgcolor(#ffbfff): Tb |bgcolor(#ffbfff): Dy |bgcolor(#ffbfff): Ho |bgcolor(#ffbfff): Er |bgcolor(#ffbfff): Tm |bgcolor(#ffbfff): Yb |\n| !Actinides^^*2^^|bgcolor(#ff99cc): Ac |bgcolor(#ff99cc): Th |bgcolor(#ff99cc): Pa |bgcolor(#ff99cc): U |bgcolor(#ff99cc): Np |bgcolor(#ff99cc): Pu |bgcolor(#ff99cc): Am |bgcolor(#ff99cc): Cm |bgcolor(#ff99cc): Bk |bgcolor(#ff99cc): Cf |bgcolor(#ff99cc): Es |bgcolor(#ff99cc): Fm |bgcolor(#ff99cc): Md |bgcolor(#ff99cc): No |\n\n*Chemical Series of the Periodic Table\n**@@bgcolor(#ff6666): Alkali metals@@\n**@@bgcolor(#ffdead): Alkaline earth metals@@\n**@@bgcolor(#ffbfff): Lanthanides@@\n**@@bgcolor(#ff99cc): Actinides@@\n**@@bgcolor(#ffc0c0): Transition metals@@\n**@@bgcolor(#cccccc): Poor metals@@\n**@@bgcolor(#cccc99): Metalloids@@\n**@@bgcolor(#a0ffa0): Nonmetals@@\n**@@bgcolor(#ffff99): Halogens@@\n**@@bgcolor(#c0ffff): Noble gases@@\n\n*State at standard temperature and pressure\n**those in @@color(red):red@@ are gases\n**those in @@color(green):green@@ are liquids\n**those in black are solids\n
Format blocks of CSS definitions as:\n{{{\n/*{{{*/\ndiv {color: #ff0000;}\n/*}}}*/\n}}}\nIt will be displayed as:\n/*{{{*/\ndiv {color: #ff0000;}\n/*}}}*/
You can now link to [[external sites|http://www.osmosoft.com]] or [[ordinary tiddlers|TiddlyWiki]] with ordinary words, without the messiness of the full URL appearing. Edit this tiddler to see how.\n\nYou can also LinkToFolders.
http://www.progecad.com\n\nCAD grátis pra Windows, e não é fraquinho não... (aka ~AutoCAD).\n\nSó acho que alguém podia se esforçar pra fazer um sistema de CAD descente pra Linux ou BSD, os poucos que conheço não são nada práticos ou profissionais.\n\nE é um CharityWare caso queira mais funções disponíveis.
/***\n| Name:|QuickOpenTagPlugin|\n| Purpose:|Makes tag links into a Taggly style open tag plus a normal style drop down menu|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#QuickOpenTagPlugin|\n| Requires:|TW 2.x|\n| Version|1.1.1 (19-May-06)|\n\n!History\n* Version 1.1.1 (19/05/2006)\n** Added a little more CSS so the tags look good in standard main menus and normal tiddlers\n* Version 1.1 (07/02/2006)\n** Fix Firefox 1.5.0.1 crashes\n** Updated by ~BidiX[at]~BidiX.info\n* Version 1.0 (?/01/2006)\n** First release\n\n***/\n//{{{\n\n//⊻ ⊽ ⋁ ▼ \n\nwindow.createTagButton_orig_mptw = createTagButton;\nwindow.createTagButton = function(place,tag,excludeTiddler) {\n var sp = createTiddlyElement(place,"span",null,"quickopentag");\n createTiddlyLink(sp,tag,true,"button");\n var theTag = createTiddlyButton(sp,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tag]),onClickTag);\n theTag.setAttribute("tag",tag);\n if(excludeTiddler)\n theTag.setAttribute("tiddler",excludeTiddler);\n return(theTag);\n};\n\nconfig.macros.miniTag = {handler:function(place,macroName,params,wikifier,paramString,tiddler) {\n var tagged = store.getTaggedTiddlers(tiddler.title);\n if (tagged.length > 0) {\n var theTag = createTiddlyButton(place,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);\n theTag.setAttribute("tag",tiddler.title);\n theTag.className = "miniTag";\n }\n}};\n\nconfig.macros.miniTag.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE\n\nconfig.macros.allTags.handler = function(place,macroName,params)\n{\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length === 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++)\n {\n var theListItem =createTiddlyElement(theDateList,"li",null,null,null);\n var theLink = createTiddlyLink(theListItem,tags[t][0],true);\n var theCount = " (" + tags[t][1] + ")";\n theLink.appendChild(document.createTextNode(theCount));\n\n var theDropDownBtn = createTiddlyButton(theListItem," "+config.macros.miniTag.dropdownchar,this.tooltip.format([tags[t][0]]),onClickTag);\n theDropDownBtn.setAttribute("tag",tags[t][0]);\n }\n};\n\n\n// probably could redo these styles a bit cleaner..\nsetStylesheet(\n ".tagglyTagged .quickopentag, .tagged .quickopentag \sn"+\n " { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\sn"+\n ".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\sn"+\n ".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\sn"+\n// extra specificity to make it work?\n "#displayArea .viewer .quickopentag a.button, \sn"+\n "#displayArea .viewer .quickopentag a.tiddyLink, \sn"+\n "#mainMenu .quickopentag a.tiddyLink, \sn"+\n "#mainMenu .quickopentag a.tiddyLink \sn"+\n " { border:0px solid black; }\sn"+\n "#displayArea .viewer .quickopentag a.button, \sn"+\n "#mainMenu .quickopentag a.button \sn"+\n "{ margin-left:0px; padding-left:2px; }\sn"+\n "#displayArea .viewer .quickopentag a.tiddlyLink, \sn"+\n "#mainMenu .quickopentag a.tiddlyLink \sn"+\n " { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }\sn"+\n "a.miniTag {font-size:150%;} \sn"+\n "#mainMenu .quickopentag a.button \sn"+\n "{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }\sn"+ // looks better in right justified main menus\n "",\n"QuickOpenTagStyles");\n\n//}}}\n\n/***\n<html>&#x22bb; &#x22bd; &#x22c1; &#x25bc; &#x25be;</html>\n***/\n
Hey! In theory, there is no difference between theory and practice. But, in practice, there is.\n----\nSometimes when reading Goethe I have the paralyzing suspicion that he is trying to be funny.\n----\nBefore I got married I had six theories about bringing up children; now I have six children and no theories.\n----\nYou are young only once, but you can stay immature indefinitely.\n----\nYou are confused; but this is your normal state.\n----\nA witty saying proves nothing.\n----\nThe problem with some people is that when they aren't drunk, they're sober.\n----\nThe great thing about television is that if something important happens anywhere in the world, day or night, you can always change the channel.\n----\nDon't be so humble - you are not that great.\n----\nHey! There is a fly on your nose.\n----\nTis better to be slient and thought a fool, than to speak and remove all doubt [Abraham Lincoln]\n----\nThe combination "ough" can be pronounced in nine different ways. The following sentence contains them all: "A rough-coated, dough-faced, thoughtful ploughman strode through the streets of Scarborough; after falling into a slough, he coughed and hiccoughed." \n----\nIf you lived here, you'd be home by now...\n----\nI love my dust. It shows I had something better to do.\n----\nSoon you will remember something that you should not have forgotten.\n----\nTime flies like an arrow... Fruit flies like a banana [Groucho Marx]\n----\nBeware of the one behind you.\n----\nIf you don't know where you're going, you'll probably end up somewhere else.\n----\nIf you can read this, you're too close.\n----\nWeebles wobble... but they don't fall down!\n----\nIt's all very simple... or else it's all very complex... or perhaps it's neither... or both.\n----\nAccepting reality is the first step to insanity\n----\nOops! Sorry. My karma ran over your dogma.\n----\nIf it looks like a duck, walks like a duck and sounds like a duck, it's probably something else.\n----\nSome times you feel like a nut, some times you bolt.\n----\nToday is a day for firm decisions!!!!! Or is it?\n----\nSantaclaustrophobia... The feeling that Christmas is closing in all around you.\n----\nDon't touch that! You don't know where it's been...\n----\nWhy is abbreviation such a long word?\n----\nLife's a trip, not a destination. So watch out for the cows.\n----\nDo nothing unless you must, and when you must act -- hesitate.\n----\nDiplomacy is the art of saying 'Nice doggie!'... until you can find a rock.\n----\nScientists working on cloning technology have done what the american educational system has been doing for years - producing identical sheep.\n----\nUmm... What's another word for thesaurus?\n----\nGive me ambiguity or give me something else\n----\nDon't anthropomorphize your computer, it doesn't like it.\n----\nNinth Law of Cartoon Physics: Everything falls faster than an anvil.\n----\nNew clinical studies show there aren't any answers. So just enjoy the questions...\n----\nOh yeah? Far out!\n----\nBoycott Shampoo - Demand the REAL poo!\n----\nOn Blintze! On Bagel! On Spaetzle! On Strudel! On Matzo! On Latke! On Kuchen! On Kugel!... Merry Chanukah!\n----\nRemember: Don't sweat the petty things... and don't pet the sweaty things.\n----\nSign in lunch room: Shoes are required to eat in the cafeteria... socks can eat anywhere they want.\n----\nDon't be irreplaceable, if you can't be replaced, you can't be promoted.\n----\n5 out of 4 people have problems with fractions...\n----\nOsborne's Law of Mathematics: Variables won't; constants aren't.\n----\nAlways remember you're unique, just like everyone else.\n----\nSomething to ponder: What was the best thing *before* sliced bread? Hmmm...\n----\nPhysics Joke #27: Two hydrogen atoms bump into each other while walking down the street: 'Are you alright?'... 'No, I lost an electron!'... 'Are you sure?'... 'Yeah, I'm Positive!'\n----\nThe one thing I can't stand is intolerant people!\n----\nOld programmers never die. . . they just can't C as well.\n----\nNever be led astray onto the path of virtue.\n----\nWorld Shortest 'Bar' joke: --- A guy walks into a bar... OUCH! he says...\n----\nWho are you going to believe, me or your own eyes? \n----\nNever judge a man 'til you have walked a mile in his shoes, because by then, he's a mile away, you've got his shoes, and you can say whatever the hell you want to.\n----\nThe problem with troubleshooting is that real trouble shoots back.\n----\nHow much wood would a woochuck chuck if a woodchuck could chuck wood?\n----\nThese are the roots of rhythm: boom, de boom, de-boom, ding-dong, ooh! [Leila ~Gallagher-Breen]\n----\nThese are the roots of music: boom-chicky-chicky boom, meow, meow, baddom, baddom, ding-aling-a-long, chicky-boom! [Leila ~Gallagher-Breen]\n----\nClassified ad (in Physics Quarterly): Got Mole problems? Call Avagadro Exterminators: 602-1023\n----\nHe who laughs last thinks slowest\n----\nWould a fly without wings be called a walk?\n----\nThe winner of the World's Worst Analogy contest: 'The little boat glided across the water in exactly the way a bowling ball wouldn't.'\n----\nFrom the 'say what?!?' files: We are ready for any unforeseen event that may or may not occur. [Dan Quayle 9/22/90]\n----\nI believe you should live each day as if it is your last, which is why I don't have any clean laundry because, come on, who wants to wash clothes on the last day of their life? [Jack Handy]\n----\nPRINTER - A device consisting of three main parts: the case, the jammed paper tray, and the blinking red light.\n----\nDilbert's Laws of Work: The more crap you put up with, the more crap you are going to get.\n----\nQ: Why'd the electron cross the road? A: 'Cause he was already on the other side...\n----\nWhen the going gets tough, remember STRESSED spelled backwards is DESSERTS.\n----\nFoobar... baz. Mumble: frotz, gronk, snork. Snerfle? Natter and gromish!\n----\nPentiums melt in your PC, not in your hand.\n----\neveryone is cute... even me. But in purple... I'm STUNNING!! [Londo Mollari] \n----\nI always wanted to be somebody, but I should have been more specific. [Lily Tomlin] \n----\nIt's OK to change horses in mid-stream, especially if the first horse can't swim! [Laura Shulman] \n----\nWork is the curse of the drinking classes. [Oscar Wilde] \n----\nWe have only two things to worry about: That things will never get back to normal, and that they already have.\n----\nIntelligence is a funny thing: those who don't have it think they do, and those who do are smart enough to know better.\n----\nLife is hard, Love is strange. Nothing lasts, people change. Dream of a long and wonderful future, but live now.\n----\n'Can you prove any of the stuff you believe in?', my friend asked. When I said that's not how belief works, he nodded and said that's what he thought but he was just checking to make sure he hadn't missed a key point.\n----\nLife ... It's a good place to be!\n----\nDo not follow where the path may lead. Go, instead, where there is no path, and leave a trail.\n----\nHistory is made at night... character is what you are in the dark. [Dr. Emilio Lizardo, aka Lord John Worfin] \n----\nYou can't always get what you want... but if you try sometimes, you just may find, that you get what you need. [The Rolling Stones] \n----\nThe only man who behaved sensibly was my tailor; he took my measurement anew every time he saw me, while all the rest went on with their old measurements and expected them to fit me. [George Bernard Shaw] \n----\nIn matters of style, swim with the current: in matters of principle, stand like a rock. [Thomas Jefferson] \n----\nGreat things are not done by impulse, but by a series of small things brought together. [Vincent van Gogh] \n----\n'I think there is a world market for maybe five computers.' [Thomas Watson, chairman of IBM, 1943] \n----\nWe have to live today by what truth we can get today, and be ready tomorrow to call it falsehood. [William James] \n----\nThere are two ways of spreading light: to be the candle or the mirror that reflects it. [Edith Wharton] \n----\nTalent develops in tranquility, character in the full current of human life. [Johann Wolfgang von Goethe (1749-1832)] \n----\nOur firmest convictions are apt to be the most suspect; they mark our limitations and our bounds. Life is a petty thing unless it is moved by the indomitable urge to extend its boundaries. [Jose Ortega y Gasset] \n----\nIt takes courage to grow up and turn out to be who you really are. [e e cummings (1894-1962)] \n----\nIf we knew what it was we were doing, it would not be called research, would it? [Albert Einstein] \n----\nTo invent, you need a good imagination and a pile of junk. [Thomas Edison] \n----\nDare to be naive. [R. Buckminster Fuller] \n----\nQuiet minds cannot be perplexed or frightened, but go on in fortune or misfortune at their own private pace, like a clock during a thunderstorm. [Robert Louis Stevenson] \n----\nIn the struggle between yourself and the world, second the world. [Franz Kafka] \n----\nEvery man's condition is a solution in hieroglyph to those inquiries he would put. He acts it as life before he apprehends it as truth. [Ralph Waldo Emerson] \n----\nOne can remain alive...if one is unafraid of change, insatiable in intellectual curiosity, interested in big things, and happy in small ways. [Edith Wharton] \n----\na rock is like space because it doesnt move; and space is like a rock because it is empty. words are buddhas. [Jack Kerouac] \n----\nThe whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. [Bertrand Russell] \n----\nDoubt is not a pleasant state of mind, but certainty is absurd. [Voltaire] \n----\nEducation is not the filling of a pail, but the lighting of a fire. [William Butler Yeats] \n----\nIf you take yourself too seriously, no one else will take you seriously enough... [Eric Shulman] \n----\nThere are only four questions of value in life... What is sacred? Of what is the spirit made? What is worth living for, and what is worth dying for? The answer to each is the same: only love. [Don Juan ~DeMarco] \n----\nIf you are a dreamer, come in. If you are a dreamer, a wisher, a liar, a hope-er, a pray-er, a magic bean buyer... If you're a pretender, come sit by my fire... For we have some flax-golden tales to spin. Come in! Come in! [Shel Silverstein] \n----\nO money, money, money, I'm not necessarily one of those who think thee holy, But I often stop to wonder how thou canst go out so fast when thou comest in so slowly. [Ogden Nash] \n----\nThere is no progress without struggle. [Frederick Douglass] \n----\nBefore you can do something, you must become something. [Goethe] \n----\nThe man who follows the crowd will usually get no further than the crowd. The man who walks alone is likely to find himself in places no one has ever been. [Alan ~Ashley-Pit] \n----\nWeep not for the dead for they are but empty cages from which the bird has flown. [Tibetan Book of The Dead] \n----\nI wish it would dawn upon engineers that, in order to be an engineer, it is not enough to be an engineer. [Jose Ortega y Gasset] \n----\nEvery exit is an entry somewhere. [Tom Stoppard] \n----\nWherever we are, it is but a stage on the way to somewhere else, and whatever we do, however well we do it, it is only a preparation to do something else that shall be different. [Robert Louis Stevenson] \n----\nWe judge ourselves by what we feel capable of doing, while others judge us by what we have already done. [Henry Wadsworth Longfellow] \n----\nAll our words are but crumbs that fall down from the feast of the mind. [Kahlil Gibran, "Sand and Foam"] \n----\nIt's a lot harder to find joy than it is to find bread. Feed your soul first, then go shopping. [Eric Shulman] \n----\nWhy do you hasten to remove anything which hurts your eye, while if something affects your soul you postpone the cure until next year? [Horace] \n----\nNot to know is bad. Not to want to know is worse. Not to hope is unthinkable. Not to care is unforgivable. [Nigerian folk saying] \n----\nCheer Up! Things are getting worse at a slower rate.\n----\nOnly half of writing is saying what you mean. The other half is preventing people from reading what they expected you to mean. [James Richardson, 'Ploughshares'] \n----\nThere are no shortcuts to anyplace worth going. [Beverly Sills] \n----\nSomewhere, something incredible is waiting to be known. [Carl Sagan] \n----\nCourage is the price that Life extracts for granting peace. [Amelia Earhart] \n----\nGreat things are not done by impulse, but by a series of small things brought together. [Vincent van Gogh] \n----\nChoose a job you love, and you will never have to work a day in your life. [Confucius] \n----\nThere is only one success - to be able to spend your life in your own way. [Christopher Morley] \n----\nWe choose our joys and sorrows long before we experience them. [Kahlil Gibran] \n----\nIt is all a frame of mind, this enjoyment of living. [Lin Yutang] \n----\nWork for something because it is good, not just because it stands a chance to succeed. [Vaclav Havel] \n----\nThe easiest way to get what you want is to help others get what they want. [Deepak Chopra] \n----\nAll generalizations are false, including this one. [Bucky Radfish]\n----\nIn science, 'fact' can only mean 'confirmed to such a degree that it would be perverse to withhold provisional assent.' I suppose that apples might start to rise tomorrow, but the possibility does not merit equal time in physics classrooms. [Stephen Jay Gould (1941 - 2002)]\n----\nTwenty years from now, you will be more disappointed by the things you didn't do, than by the ones you did. So throw off the bowlines. Sail away from the safe harbor. Catch the trade winds in your sails. Explore, dream... [Mark Twain]\n----\nTo live only for some future goal is shallow. It's the sides of the mountain that sustain life, not the top. [Robert M. Pirsig]\n----\nNothing is so contagious as enthusiasm; it moves stones, it charms brutes. Enthusiasm is the genius of sincerity, and truth accomplishes no victories without it. [Edward G. E. ~Bulwer-Lytton (1803 - 1873)]\n----\nThe past is but the beginning of a beginning, and all that is and has been is but the twilight of the dawn. [Herbert George Wells]\n----\nWe grow great by dreams. All big men are dreamers. They see things in the soft haze of a spring day or in the red fire of a long winter's evening. Some of us let these great dreams die, but others nourish and protect them; nurse them through bad days till they bring them to the sunshine and light, which comes always to those who sincerely hope that their dreams will come true. [Woodrow Wilson]\n----\nBe brave enough to live life creatively. The creative is the place where no one else has ever been. You have to leave the city of your comfort and go into the wilderness of your intuition. You can't get there by bus, only by hard work and risk and by not quite knowing what you're doing. What you'll discover will be wonderful. What you'll discover will be yourself. [Alan Alda]\n----\nIf we had no winter, the spring would not be so pleasant; if we did not sometimes taste of adversity, prosperity would not be so welcome.\n----\nSolitude, if rightly used, becomes not only a privilege but a necessity. Only a superficial soul fears to fraternize with itself.\n----\nOne of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important.\n----\nHope is like a road in the country: there was never a road, but when many people walk on it, the road comes into existence.\n----\nYou can only find truth with logic if you have already found truth without it.\n----\nLove is always bestowed as a gift - freely, willingly and without expectation. We don't love to be loved; we love to love.\n----\nAlways listen to experts. They'll tell you what can't be done, and why. Then do it.\n----\nDistance between two hearts is not an obstacle; rather a great reminder of just how strong true love can be.\n----\nNot everything that can be counted counts, and not everything that counts can be counted.\n----\nLife's challenges are not supposed to paralyze you, they're supposed to help you discover who you are.\n----\nNothing splendid has ever been achieved except by those who dared believe that something inside them was superior to circumstances.\n----\nWhether you think that you can, or that you can't, you are usually right.\n----\nThe only time you run out of chances is when you stop taking them.\n----\nKnowledge speaks, but wisdom listens.\n----\nQ: How does a hacker fix a function which doesn't work for all of the elements in its domain?\nA: He changes the domain.\n----\nToo often we give our children answers to remember rather than problems to solve.\n----\nBooks are the shoes with which we tread the footsteps of great minds. A book may lie dormant for fifty years or for two thousand years in a forgotten corner of a library, only to reveal, upon being opened, the marvels or the abysses that it contains, or the line that seems to have been written for me alone. In this respect the writer is not different from any other human being: whatever we say or do can have far-reaching consequences.\n----\nA people that values its privileges above its principles soon loses both.\n----\nYou worry too much about your job. Stop it. You are not paid enough to worry.\n----\nTreat everyone with politeness, even those who are rude to you. Not because they are nice, but because you are.\n----\nThe ultimate measure of a man is not where he stands in moments of comfort and convenience, but where he stands in times of challenge and controversy. What lies behind us and what lies before us, are only small matters compared to what lies within us. \n----\nDon't hate yourself in the morning -- sleep till noon.\n----\nBeing in charge of your own reality is a little tougher; it takes a lot of thinking and brutal honesty. [Phil Glatz]\n----\nThere are always going to be amazingly creative people doing wonderful things. [Phil Glatz]\n----\nThe trick is to rise above the symptoms of being aware, and actually BE aware. [Phil Glatz]\n----\nTruth is the most valuable thing we have -- so let us economize it. [Mark Twain]\n----\nWater, taken in moderation cannot hurt anybody. [Mark Twain]\n----\nHe that breaks a thing to find out what it is has left the path of wisdom. [J.R.R. Tolkien]\n----\nYou're working under a slight handicap. You happen to be human.\n----\nIn the stairway of life, you'd best take the elevator.\n----\nYour lucky number is 3552664958674928. Watch for it everywhere.\n----\nA revolution is coming - a revolution which will be peaceful if we are wise enough; compassionate if we care enough; successful if we are fortunate enough - but a revolution which is coming whether we will it or not. We can affect its character, we cannot alter its inevitability. [John F. Kennedy]\n----\nOn two occasions I have been asked (by members of Parliament!), 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question. [Charles Babbage]\n----\nIn your presence even my shadow acquires the sensation of touch.\n----\nChicken Little was right.\n----\nYou're ugly and your mother dresses you funny.\n----\nNever commit yourself! Let someone else commit you.\n----\nToday is the last day of your life so far.\n----\nLet me put it this way: today is going to be a learning experience.\n----\nThe first thing we do, let's kill all the lawyers. [Wm. Shakespeare, "Henry VI", Part IV]\n----\nQ: How many Zen masters does it take to screw in a light bulb?\nA: None. The Universe spins the bulb, and the Zen master stays out of the way.\n----\nYou'll never be the man your mother was!\n----\nIt was all so different before everything changed.\n----\nYou're currently going through a difficult transition period called "Life."\n----\nYou get along very well with everyone except animals and people.\n----\nYou will obey me... obey... obey...\n----\nHow apt the poor are to be proud. [Wm. Shakespeare, "Twelfth-Night"]\n----\nYou are taking yourself far too seriously.\n----\nDon't feed the bats tonight.\n----\nYou have been selected for a secret mission, but I can´t tell .\n----\nBreak into jail and claim police brutality.\n----\nLet him choose out of my files, his projects to accomplish. [Wm. Shakespeare, "Coriolanus"]\n----\nDon't plan any hasty moves. You'll be evicted soon anyway.\n----\nQ: How many IBM CPU's does it take to do a logical right shift?\nA: 33. 1 to hold the bits and 32 to push the register.\n----\nA: Go west, young man, go west!\nQ: What do wabbits do when they get tiwed of wunning awound?\n----\nYou'll be sorry...\n----\nYou should go home now, have some time for yourself, sleep.\n----\nNever give an inch!\n----\nYou need no longer worry about the future. This time tomorrow you'll be dead.\n----\nYour ignorance cramps my conversation.\n----\n----\n----\nThe only way to keep your health is to eat what you don't want, drink what\nyou don't like, and do what you'd rather not.[Mark Twain]\n----\nYou have been selected for a secret mission.\n----\nSave energy: be apathetic.\n----\nA long-forgotten loved one will appear soon.\n - Buy the negatives at any price. - \n----\nWhat happened last night can happen again.\n----\nThere is no spoon.
/***\n''QuoteOfTheDayPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#QuoteOfTheDayPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nDisplay a randomly selected "quote of the day"\n\n!!!!!Usage\n<<<\n{{{<<QOTD //tiddlername//>>}}}\nPut your quotations into a tiddler (called //tiddlername//). Separate each quote by a horizontal rule (use "----" on a line by itself). Each time the macro is rendered it will display a different quotation, selected at random from the specified tiddler.\n<<<\n!!!!!Example\n<<<\n{{{<<QOTD Quotations>>}}}\n<<QOTD Quotations>>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''QuoteOfTheDayPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for QuoteOfTheDay handling^^\n<<<\n!!!!!Revision History\n<<<\n''2005.10.21 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nBased on a suggestion by M.Russula\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.QOTD = {major: 1, minor: 0, revision: 0, date: new Date(2005,10,21)};\nconfig.macros.QOTD = {};\nconfig.macros.QOTD.handler= function(place,macroName,params) {\n var txt=store.getTiddlerText(params[0]); if (!txt) return;\n var quotes=txt.split("\sn----\sn");\n // then, get a random index number between 0 and N-1 and wikify that text\n wikify(quotes[Math.floor(Math.random()*quotes.length)],place);\n}\n//}}}
//{{{\n\n// adapted from: http://www.cs.utexas.edu/~joeraii/dragn/#Draggable\n// changes by ELS:\n// * hijack refreshTiddler() instead of overridding createTiddler()\n// * find title element by className instead of elementID\n// * set cursor style via code instead of stylesheet\n// * set tooltip help text\n// * set tiddler "position:relative" when starting drag event, restore saved value when drag ends\n\n// * update 2006.08.07: use getElementsByTagName("*") to find title element, even when it is 'buried' deep in tiddler DOM elements (due to custom template usage)\n\nStory.prototype.rearrangeTiddlersHijack_refreshTiddler = Story.prototype.refreshTiddler;\nStory.prototype.refreshTiddler = function(title,template,unused1,unused2,unused3,unused4,unused5)\n{\n this.rearrangeTiddlersHijack_refreshTiddler(title,template,unused1,unused2,unused3,unused4,unused5);\n var theTiddler = document.getElementById(this.idPrefix + title); if (!theTiddler) return;\n var theHandle;\n var children=theTiddler.getElementsByTagName("*");\n for (var i=0; i<children.length; i++) if (hasClass(children[i],"title")) { theHandle=children[i]; break; }\n if (!theHandle) return theTiddler;\n\n Drag.init(theHandle, theTiddler, 0, 0, null, null);\n theHandle.style.cursor="move";\n theHandle.title="drag title to re-arrange tiddlers"\n theTiddler.onDrag = function(x,y,myElem) {\n if (this.style.position!="relative")\n { this.savedstyle=this.style.position; this.style.position="relative"; }\n y = myElem.offsetTop;\n var next = myElem.nextSibling;\n var prev = myElem.previousSibling;\n if (next && y + myElem.offsetHeight > next.offsetTop + next.offsetHeight/2) { \n myElem.parentNode.removeChild(myElem);\n next.parentNode.insertBefore(myElem, next.nextSibling);//elems[pos+1]);\n myElem.style["top"] = -next.offsetHeight/2+"px";\n }\n if (prev && y < prev.offsetTop + prev.offsetHeight/2) { \n myElem.parentNode.removeChild(myElem);\n prev.parentNode.insertBefore(myElem, prev);\n myElem.style["top"] = prev.offsetHeight/2+"px";\n }\n };\n theTiddler.onDragEnd = function(x,y,myElem) {\n myElem.style["top"] = "0px";\n if (this.savedstyle!=undefined)\n this.style.position=this.savedstyle;\n }\n return theTiddler;\n}\n\n/**************************************************\n * dom-drag.js\n * 09.25.2001\n * www.youngpup.net\n **************************************************\n * 10.28.2001 - fixed minor bug where events\n * sometimes fired off the handle, not the root.\n **************************************************/\n\nvar Drag = {\n obj:null,\n\n init:\n function(o, oRoot, minX, maxX, minY, maxY) {\n o.onmousedown = Drag.start;\n o.root = oRoot && oRoot != null ? oRoot : o ;\n if (isNaN(parseInt(o.root.style.left))) o.root.style.left="0px";\n if (isNaN(parseInt(o.root.style.top))) o.root.style.top="0px";\n o.minX = typeof minX != 'undefined' ? minX : null;\n o.minY = typeof minY != 'undefined' ? minY : null;\n o.maxX = typeof maxX != 'undefined' ? maxX : null;\n o.maxY = typeof maxY != 'undefined' ? maxY : null;\n o.root.onDragStart = new Function();\n o.root.onDragEnd = new Function();\n o.root.onDrag = new Function();\n },\n\n start:\n function(e) {\n var o = Drag.obj = this;\n e = Drag.fixE(e);\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n o.root.onDragStart(x, y, Drag.obj.root);\n o.lastMouseX = e.clientX;\n o.lastMouseY = e.clientY;\n if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;\n if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;\n if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;\n if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;\n document.onmousemove = Drag.drag;\n document.onmouseup = Drag.end;\n Drag.obj.root.style["z-index"] = "10";\n return false;\n },\n\n drag:\n function(e) {\n e = Drag.fixE(e);\n var o = Drag.obj;\n var ey = e.clientY;\n var ex = e.clientX;\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n var nx, ny;\n if (o.minX != null) ex = Math.max(ex, o.minMouseX);\n if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);\n if (o.minY != null) ey = Math.max(ey, o.minMouseY);\n if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);\n nx = x + (ex - o.lastMouseX);\n ny = y + (ey - o.lastMouseY);\n Drag.obj.root.style["left"] = nx + "px";\n Drag.obj.root.style["top"] = ny + "px";\n Drag.obj.lastMouseX = ex;\n Drag.obj.lastMouseY = ey;\n Drag.obj.root.onDrag(nx, ny, Drag.obj.root);\n return false;\n },\n\n end:\n function() {\n document.onmousemove = null;\n document.onmouseup = null;\n Drag.obj.root.style["z-index"] = "0";\n Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style["left"]), parseInt(Drag.obj.root.style["top"]), Drag.obj.root);\n Drag.obj = null;\n },\n\n fixE:\n function(e) {\n if (typeof e == 'undefined') e = window.event;\n if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;\n if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;\n return e;\n }\n};\n//}}}\n
/***\n***/\n\n//{{{\n\nconfig.commands.refresh = {\n text: 'refresh',\n tooltip: 'Refresh this tiddler',\n handler: function(e,src,title) {\n clearMessage();\n story.refreshTiddler(title,false,true); // force=true\n return false;\n }\n};\n\n//}}}
/***\n| Name:|RenameTagsPlugin|\n| Purpose:|Allows you to easily rename tags|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#RenameTagsPlugin|\n| Version:|1.0.1 (5-Mar-06)|\n\n!Description\nIf you rename a tiddler/tag that is tagging other tiddlers this plugin will ask you if you want to rename the tag in each tiddler where it is used. This is essential if you use tags and ever want to rename them. To use it, open the tag you want to rename as a tiddler (it's the last option in the tag popup menu), edit it, rename it and click done. You will asked if you want to rename the tag. Click OK to rename the tag in the tiddlers that use it. Click Cancel to not rename the tag.\n\n!Example\nTry renaming [[Plugins]] or [[CSS]] on this site.\n\n!History\n* 1.0.1 (5-Mar-06) - Added feature to allow renaming of tags without side-effect of creating a tiddler\n* 1.0.0 (5-Mar-06) - First working version\n\n!Code\n***/\n//{{{\n\nversion.extensions.RenameTagsPlugin = {\n major: 1, minor: 0, revision: 0,\n date: new Date(2006,3,5),\n source: "http://simonbaird.com/mptw/#RenameTagsPlugin"\n};\n\nconfig.macros.RenameTagsPlugin = {};\nconfig.macros.RenameTagsPlugin.prompt = "Rename the tag '%0' to '%1' in %2 tidder%3?";\n\n// these are very useful, perhaps they should be in the core\nif (!store.addTag) {\n store.addTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n };\n};\n\nif (!store.removeTag) {\n store.removeTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n };\n};\n\nstore.saveTiddler_orig_tagrename = store.saveTiddler;\nstore.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n if (title != newTitle && this.getTaggedTiddlers(title).length > 0) {\n // then we are renaming a tag\n var tagged = this.getTaggedTiddlers(title);\n if (confirm(config.macros.RenameTagsPlugin.prompt.format([title,newTitle,tagged.length,tagged.length>1?"s":""]))) {\n for (var i=0;i<tagged.length;i++) {\n store.removeTag(tagged[i].title,title);\n store.addTag(tagged[i].title,newTitle);\n // if tiddler is visible refresh it to show updated tag\n story.refreshTiddler(tagged[i].title,false,true);\n }\n }\n if (!this.tiddlerExists(title) && newBody == "") {\n // dont create unwanted tiddler\n return null;\n }\n }\n return this.saveTiddler_orig_tagrename(title,newTitle,newBody,modifier,modified,tags);\n}\n\n//}}}\n\n
http://www.snapfiles.com/get/restoration.html \n\nRecuperador de arquivos deletados (Windows) que nem precisa instalar na máquina.
System V Release 4 unix port que baseou o Solaris 2 entre outros se aproveitando de várias evoluções do 4.1BSD.
http://www.scribus.net\n\nDesktop Publishing
/%\n\nUsage: <<tiddler ScrollBox with: TiddlerName height>>\n\n%/@@display:block;height:$2;overflow:auto;<<tiddler $1>>@@@@display:block;text-align:right;^^scroll for more...^^@@
/***\n\n''This plugin was previously called StyleChooser.''\n\n|Name|SelectThemePlugin|\n|Created by|SimonBaird and SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#SelectThemePlugin|\n|Version|1.2.3|\n|Requires|~TW2.x|\n!Description\n*An alternative style switcher, can be used to switch just stylesheets and/or pagetemplates, or a combination of both (a theme)\n*you can add your own stylesheets and pagetemplates, or use a ThemePack, like BigThemePack.\n\n!Usage\n* You have to have fetch or create some styleSheets and pageTemplates to use this plugin.\n**You can either get a ThemePack like BigThemePack which automatically adds themes to ThemeSelect.\n**or create tiddlers with styleSheets and pageTemplates and tag them styleSheets and pageTemplates respectively.\n* Put {{{<<themeSelect style 'Select theme'>>}}} in your SideBarOptions.\n\n!Creating Theme Packs\n*You can create your own theme pack if you like. Instructions can be found [[here.|CreateThemePack]]\n\n!History\n* 15-May-06, v1.2.3, added paramifier so you can put theme on url, eg http://www.somewhere.com/twfile.html#theme:Berry2, thanks Clint (Simon).\n* 28-Apr-o6, v1.2.2, fixed bug with opening TW after deleting themepacks. (Saq)\n* 26-Apr-06, v1.2.1, more code optimization, dropdowns now updated on the fly. (Saq)\n* 25-Apr-06, v1.2.0, added 3rd party ThemePack support, and made various other improvements.(Simon & Saq)\n* 24-Apr-06, v1.1.0, added: no styles and default styles options,<<br>>support for ThemePack, support for tag variations(Saq)\n* 21-Apr-06, v1.0.0, Reworked dropdowns to include option for pagetemplates (Saq)\n* 21-Apr-06, v0.9.0, Rewrote and added Saq's lovely dropdown select (Simon)\n* 20-Apr-06, v0.0.1, Basic switcher working (Simon)\n\n!Examples\n|!Source|!Output|h\n|{{{<<themeSelect style>>}}} for a dropdown with StyleSheets|<<themeSelect style>>|\n|{{{<<themeSelect pagetemplate>>}}} for a dropdown with PageTemplates|<<themeSelect pagetemplate>>|\n|{{{<<themeSelect style customlabel>>}}} to use a customlabel|<<themeSelect style customlabel>>|\n* When applying a stylesheet or template, it also looks for a template or stylesheet respectively based on naming convention, eg MyFunkyStyleSheet and MyFunkyPageTemplate.\n\n!Notes\n* See also http://www.tiddlytools.com/#SelectStyleSheetPlugin for a more feature-rich style sheet switcher\n\n! Ideas\n* do ViewTemplate also?\n* Pretty up the [x] bit\n\n!Code\n***/\n//{{{\n// for compatibility with TW <2.0.9\nif (!Array.prototype.contains)\n Array.prototype.contains = function(item)\n {\n return this.find(item) != null;\n };\n\n// for compatibility with TW <2.0.9\nif (!Array.prototype.containsAny)\n Array.prototype.containsAny = function(items)\n {\n for(var i=0; i<items.length; i++)\n if (this.contains(items[i]))\n return true;\n return false;\n };\n//}}}\n\n//{{{\nversion.extensions.SelectTheme = { major: 1, minor: 2, revision: 3, date: new Date(2006,5,15),\n source: "http://lewcid.googlepages.com/lewcid.html#SelectTheme"\n};\n\nconfig.SelectTheme = {\n things: {\n style: {\n tag: ["StyleSheets","StyleSheet","styleSheet","styleSheets","stylesheet","stylesheets"],\n theDefault: "StyleSheet",\n suffix: "StyleSheet",\n notify: refreshStyles,\n cookie: "txtStyleSheet",\n otherThing: "pagetemplate",\n label: "Choose StyleSheet: ",\n tooltip: "Choose a StyleSheet",\n caseNone: { text:"None", title:"NoStyleSheet"},\n caseDefault: { text:"Default", title:"StyleSheet" }\n\n },\n pagetemplate: {\n tag: ["PageTemplates","PageTemplate","pageTemplates","pageTemplate","pagetemplate","pagetemplates"],\n theDefault: "PageTemplate",\n suffix: "PageTemplate",\n notify: refreshPageTemplate,\n cookie: "txtPageTemplate",\n otherThing: "style",\n label: "Choose PageTemplate: ",\n tooltip: "Choose a PageTemplate",\n caseNone: { text:"None", title:"NoPageTemplate"},\n caseDefault: { text:"Default", title:"PageTemplate" }\n }\n\n },\n\n specialCases: ["caseNone","caseDefault"]\n\n};\n\nTiddlyWiki.prototype.removeNotification = function(title,fn) {\n for (var i=0;i<this.namedNotifications.length;i++)\n if((this.namedNotifications[i].name == title) && (this.namedNotifications[i].notify == fn))\n this.namedNotifications.splice(i,1); // counting on it only being there once\n}\n\n\nvar things = config.SelectTheme.things;\nvar specialCases=config.SelectTheme.specialCases;\n\nfor (var t in things) {\n // make sure we have a value\n if (!config.options[things[t].cookie])\n config.options[things[t].cookie] = things[t].theDefault;\n\n // remove core notify\n store.removeNotification(things[t].theDefault,things[t].notify);\n\n // and add our one\n store.addNotification(config.options[things[t].cookie],things[t].notify);\n\n}\n\n//checks to see if a tiddler exists in store or as a shadow.\nTiddlyWiki.prototype.isTiddler= function (title)\n {return store.tiddlerExists(title) || store.isShadowTiddler(title)}\n\n//hijack core function & make sure template exists\nwindow.applyPageTemplate_themeSelect=window.applyPageTemplate;\nwindow.applyPageTemplate=function(title){\n if(!store.isTiddler(title))\n {title = things.pagetemplate.theDefault;}\n applyPageTemplate_themeSelect(title);\n }\n\nTiddlyWiki.prototype.makeActiveTheme = function(what,title,alsoCheckOtherThing) {\n\n var thing = things[what];\n if (!store.isTiddler(title))\n title = thing.theDefault;\n\n var oldTitle = config.options[thing.cookie];\n\n if (what == "style") {\n // remove old style element from DOM\n var oldStyleElement = document.getElementById(oldTitle);\n oldStyleElement.parentNode.removeChild(oldStyleElement);\n }\n\n store.removeNotification(oldTitle,thing.notify);\n store.addNotification(title,thing.notify);\n store.notify(title);\n\n config.options[thing.cookie] = title;\n saveOptionCookie(thing.cookie);\n if (alsoCheckOtherThing)\n this.makeActiveTheme(thing.otherThing,\n title.replace(new RegExp(thing.suffix+"$"),"") + things[thing.otherThing].suffix,\n false);\n};\n\n\nconfig.shadowTiddlers.NoStyleSheet = "";\nconfig.shadowTiddlers.NoPageTemplate = config.shadowTiddlers.PageTemplate;\n\n\nfunction switchTheme(e){\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLink = theTarget;\n var switchTo= theLink.getAttribute("switchTo");\n var mode = theLink.getAttribute("mode");\n if ((config.options[things[mode].cookie])!=switchTo)\n {store.makeActiveTheme(mode,switchTo,true);};\n return(false);\n}\n\n\nconfig.macros.themeSelect={};\nconfig.macros.themeSelect.dropdownchar = (document.all?"▼":"▾");\nconfig.macros.themeSelect.handler = function(place,macroName,params,wikifier,paramString,tiddler){\n var arrow = config.macros.themeSelect.dropdownchar;\n var mode = params[0];\n var label = (params[1]?params[1]:things[mode].label) + arrow;\n var cookie = (config.options[things[mode].cookie]);\n\n var onclick = function(e)\n { if (!e) var e = window.event;\n var popup = Popup.create(this);\n\n var tagged=[];\n\n store.forEachTiddler(function(title,tiddler) {\n if ((tiddler.tags).containsAny(things[mode].tag)){\n tagged.push(tiddler.title);}\n });\n\n //integrate ThemePacks\n if (config.themes) {\n // see what themes have been loaded...\n for (var i=0;i<config.themes.length;i++) {\n // see if there is one\n var lookForThis = config.themes[i] + things[mode].suffix;\n if (store.isShadowTiddler(lookForThis)) {\n tagged.pushUnique(lookForThis);\n }\n }\n tagged = tagged.sort();\n }\n\n //this function used later to create buttons\n var createThemeButton = function(switchTo){\n var theButton = createTiddlyButton(createTiddlyElement(popup,"li"),text,null,switchTheme,useClass);\n theButton.setAttribute("switchTo",switchTo);\n theButton.setAttribute("mode",mode);};\n\n //create Buttons for None(shadow styles) & Default (StyleSheet)\n // Default button is not created if StyleSheet doesnt exist.\n for(var t=0; t<specialCases.length; t++){\n var special = specialCases[t];\n var text = things[mode][special].text;\n var useClass = "tiddlyLinkExisting"; //redundant, optimize!\n if ((things[mode][special].title==cookie)||(special=="caseNone"&&!store.isTiddler(cookie)))\n {text+= " [x]";\n useClass = "currentlySelected";}\n if (!((special=="caseDefault")&&(!store.getTiddler(things[mode][special].title))))\n createThemeButton(things[mode][special].title); }\n\n //insert horizontal rule\n createTiddlyElement(createTiddlyElement(popup,"li"),"hr");\n\n //create buttons for all other stylesheet tiddlers\n for(var t=0; t<tagged.length; t++)\n { var useClass = "tiddlyLinkExisting";\n var text = (tagged[t]).replace((things[mode].suffix),"");\n if (tagged[t]==(cookie) )\n {text+=" [x]"; useClass="currentlySelected";}\n if ((tagged[t]!= (things[mode].theDefault))&&tagged[t]!= (things[mode].none))\n {createThemeButton(tagged[t]);}}\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation)\n e.stopPropagation();\n return(false);\n };\n\n var createdropperButton = function(place){\n var sp = createTiddlyElement(place,"span",null,"ThemeChooserButton");\n var theDropDownBtn = createTiddlyButton(sp,label,things[mode].tooltip,onclick);\n };\n\n createdropperButton(place);\n};\n\n\nsetStylesheet(".popup li a.currentlySelected {background:#ccc;color:black;font-weight:bold;}","currentlySelectedStyle"); // could do better probably...\n\nconfig.macros.layoutChooser=config.macros.themeSelect;\n\n//shadow tiddler to hold instructions for creating ThemePacks\nconfig.shadowTiddlers.ThemePack='See http://simonbaird.com/mptw/#CreateThemePack'; \n\nconfig.macros.applyTheme = {handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n var theme = params[0];\n var label = params[1]?params[1]:'Apply theme "' + theme + '"';\n var tooltip = 'Apply the "'+theme+'" theme to this TiddlyWiki';\n createTiddlyButton(place,label,tooltip,function() {\n store.makeActiveTheme("style",theme+things.style.suffix,true);\n });\n}};\n\n\n// this means you can put #theme:ThemeName in url. suggested by Clint\nconfig.paramifiers.theme = {\n onstart: function(themeName) {\n store.makeActiveTheme("style",themeName+config.SelectTheme.things.style.suffix,true);\n }\n};\n\n//}}}\n\n
@@display:block;''This documment was last updates on <<date filedate "DDD, MMM DDth YYYY at hh:0mm:0ss">>''\n<script>\n var tiddlers=store.getTiddlers("modified","excludeLists");\n var plugins=0;\n var last=tiddlers[tiddlers.length-1];\n for (var i=0; i<tiddlers.length; i++) {\n if (!oldest || tiddlers[i].created<oldest)\n { var oldest=tiddlers[i].created; var oldtid=tiddlers[i]; }\n if (!newest || tiddlers[i].created>newest)\n { var newest=tiddlers[i].created; var newtid=tiddlers[i]; }\n if (!smallest || tiddlers[i].text.length<smallest)\n { var smallest=tiddlers[i].text.length; var smalltid=tiddlers[i]; }\n if (!largest || tiddlers[i].text.length>largest)\n { var largest=tiddlers[i].text.length; var largetid=tiddlers[i]; }\n }\n var out="";\n out+="There are "+tiddlers.length+" tiddlers\sn";\n out+="last change: [["+last.title+"]]";\n out+=" {{fine{(updated "+last.modified.formatString("MMM DDth YYYY, 0hh:0mm")+")}}}\sn";\n out+="newest: [["+newtid.title+"]]";\n out+=" {{fine{(created "+newtid.created.formatString("MMM DDth YYYY, 0hh:0mm")+")}}}\sn";\n out+="oldest: [["+oldtid.title+"]]";\n out+=" {{fine{(created "+oldtid.created.formatString("MMM DDth YYYY, 0hh:0mm")+")}}}\sn"\n out+="smallest: [["+smalltid.title+"]]";\n out+=" {{fine{("+smalltid.text.length+" bytes)}}}\sn"\n out+="largest: [["+largetid.title+"]]";\n out+=" {{fine{("+largetid.text.length+" bytes)}}}\sn"\n return(out);\n</script>@@
{{smallform{<script>\n // track date/time of last file save\n if (config.options.lastSaved==undefined)\n config.options.lastSaved=new Date(document.lastModified);\n\n // hijack store.setDirty() function (force display update after saving the file)\n if (TiddlyWiki.prototype.showUnsavedHijack_setDirty==undefined) {\n TiddlyWiki.prototype.showUnsavedHijack_setDirty=TiddlyWiki.prototype.setDirty;\n TiddlyWiki.prototype.setDirty = function(flag) {\n var refresh=this.isDirty() && !flag; // 'dirty' to 'clean', force a refresh...\n this.showUnsavedHijack_setDirty(flag); // but change the flag first.\n if (refresh) {\n config.options.lastSaved=new Date(); // remember save time\n refreshDisplay(); // finally, update the display\n }\n }\n }\n\n // get the unsaved tiddlers sorted by date - INCLUDE ALL TIDDLERS (even hidden ones!!)\n var tiddlers=store.getTiddlers("modified");\n // If no tiddlers have changed, DO NOTHING.\n if (tiddlers[tiddlers.length-1].modified<=config.options.lastSaved) return;\n var count=0; var list="";\n var item='<option value="%0">%1 - %0</option>';\n for (var i=tiddlers.length-1; i>=0; i--) {\n if (tiddlers[i].modified<=config.options.lastSaved) break;\n list+=item.format([tiddlers[i].title,\n tiddlers[i].modified.formatString('YYYY.0MM.0DD 0hh:0mm:0ss')]);\n count++;\n }\n // display the dropdown list wrapped in a slider\n var out='';\n var label='There %0 %1 unsaved tiddler%2...'.format([count==1?'is':'are',count,count==1?'':'s'])\n out+='+++(unsaved)['+label+'|show/hide a list of changed tiddlers]...';\n out+='<html><form style="display:inline">';\n out+='<select size="1" name="list" title="select a tiddler to view" ';\n out+=' onchange="var v=this.value; if (!v.length) return;';\n out+=' story.displayTiddler(null,v);';\n out+=' window.scrollTo(0,ensureVisible(document.getElementById(story.idPrefix+v)));">';\n out+=list;\n out+='</select>';\n out+='<input type="button" value="goto"';\n out+=' onclick="var v=this.form.list.value; if (!v.length) return; story.displayTiddler(null,v);';\n out+=' var t=document.getElementById(story.idPrefix+v); if (t) window.scrollTo(0,ensureVisible(t));">';\n out+='<input type="button" value="revert" title="import the last saved version of this tiddler"';\n out+=' onclick="var v=this.form.list.value; if (!v.length) return;';\n out+=' var t=\s'<\s'+\s'<loadTiddlers [[tiddler:\s'+v+\s']] \s'+document.location.href+\s' confirm force>\s'+\s'>\s';';\n out+=' var e=document.getElementById(\s'executeRevert\s'); if (e) e.parentNode.removeChild(e);';\n out+=' e=document.createElement(\s'span\s'); e.id=\s'executeRevert\s'; wikify(t,e);">';\n out+='</form></html>';\n out+='<'+'script>place.lastChild.style.fontWeight="normal"</'+'script>';\n out+='===';\n return out;\n</script>}}}
<<slider chkGotoPanel GotoPanel 'go to »' 'Show goto bar'>><<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<upload http://supere.tiddlyspot.com/store.cgi index.html . . supere>><html><a href='http://supere.tiddlyspot.com/download' class='button'>download</a></html><<themeSelect style 'select theme'>><<slider chkCalendarPanel CalendarPanel 'calendar »' 'Show Calendar'>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
+++(contents)[contents »]...\n <<tabs txtMainTab Listbox 'TableOfContentsPlugin enhanced listbox' SideBarTabsListbox Timeline Timeline TabTimeline All 'All tiddlers' TabAll Tags 'All tags' TabTags More 'More lists' TabMore>>===\n<script>var s=place.lastChild.button.style; s.marginLeft=".3em"; s.display="block"; s.padding=".2em";</script>
<<tableOfContents "label:select a tiddler" date:YYYY.0MM.0DD width:100% padding:0 margin:0>><script>place.id="TOCListbox";place.lastChild.lastChild.style.color="#000";</script>
|<<siteMap Nerd>><<siteMap MeuTraçado 2>>|<<siteMap OpenSource>>|<<siteMap JediAcademy>><<siteMap More... 2>>|\n|noBorder threeCol|k\n
/***\n| Name:|SiteMapMacro|\n| Author:|Simon Baird|\n| Location:|http://simonbaird.com/mptw/#SiteMapMacro|\n| Version:|1.0.3, 15-Mar-06|\n\n!!Examples\nSee SiteMap and SliderSiteMap for example usage.\n\n!!Parameters\n* Name of tiddler to start at\n* Max depth (a number) \n* Format (eg, nested, see formats below)\n* Don't show root flag (anything other than null turns it on)\n* Tags - a string containing a bracketed list of tags that we are interested in\n\n!!History\n* 1.0.3 (15-Mar-06)\n** added tag filtering\n* 1.0.2 (15-Mar-06)\n** Added json format and dontshowroot option\n* 1.0.1 (9-Mar-06)\n** Added selectable formats and fixed nested slider format\n* 1.0.0 (8-Mar-06)\n** first release\n\n***/\n//{{{\n\nversion.extensions.SiteMapMacro = {\n major: 1,\n minor: 0,\n revision: 3,\n date: new Date(2006,3,15),\n source: "http://simonbaird.com/mptw/#SiteMapMacro"\n};\n\nconfig.macros.siteMap = {\n\n formats: {\n bullets: {\n formatString: "%0[[%1]]\sn%2",\n indentString: "*"\n },\n\n // put this in your StyleSheet to make it look good.\n // .sliderPanel { margin-left: 2em; }\n\n sliders: {\n formatString: "[[%1]]+++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n openSliders: {\n formatString: "[[%1]]++++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n popups: {\n formatString: "[[%1]]+++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n // these don't work too well\n openPopups: {\n formatString: "[[%1]]++++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n \n // this is a little nuts but it works\n json: {\n formatString: '\sn%0{"%1":[%2\sn%0]}',\n formatStringLeaf: '\sn%0"%1"',\n indentString: " ",\n separatorString: ","\n }\n\n\n },\n\n defaultFormat: "bullets",\n\n treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {\n\n var tiddler = store.getTiddler(title);\n var tagging = store.getTaggedTiddlers(title);\n\n if (dontshowroot)\n depth = 0;\n\n var indent = "";\n if (this.formats[format].indentString)\n for (var j=0;j<depth;j++)\n indent += this.formats[format].indentString;\n\n var childOutput = "";\n if (!maxdepth || depth < parseInt(maxdepth)) \n for (var i=0;i<tagging.length;i++)\n if (tagging[i].title != title) {\n if (this.formats[format].separatorString && i != 0)\n childOutput += this.formats[format].separatorString;\n childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);\n }\n\n if (childOutput == "" && (\n (tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||\n (excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))\n )\n ) {\n // so prune it cos it doesn't have the right tags and neither do any of it's children\n return "";\n }\n\n if (dontshowroot)\n return childOutput;\n\n if (this.formats[format].formatStringLeaf && childOutput == "") {\n // required for nestedSliders\n return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);\n }\n\n return this.formats[format].formatString.format([indent,title,childOutput]);\n },\n\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n wikify(this.treeTraverse(\n params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, \n params[1] && params[1] != '.' ? params[1] : null, // maxdepth\n params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format\n params[3] && params[3] != '.' ? params[3] : null, // dontshowroot\n params[4] && params[4] != '.' ? params[4] : null, // tags\n params[5] && params[5] != '.' ? params[5] : null // excludetags\n ),place);\n }\n\n}\n\n//}}}\n
{{floatright{{{nowrap{+++^18em^[goto]...{{wrap{\n <<moveablePanel>>goto tiddler\n----\n <<tiddler SiteMenuGoto>>}}}===\n +++^18em^[search]...{{wrap{\n <<moveablePanel>>search\n----\n <<tiddler SiteMenuSearch>>}}}===\n | +++^18em^[file]...{{wrap{\n <<moveablePanel>>file: <<tiddler ToggleReadOnly>>\n----\n <<tiddler SiteMenuFile>>}}}===\n +++^16em^[view]...{{wrap{\n <<moveablePanel>>view\n----\n <<tiddler SiteMenuView>>}}}===\n +++^18em^[options]...{{wrap{\n <<moveablePanel>>options\n----\n <<tiddler SiteMenuOptions>>}}}===\n | +++^18em^[calendar]...{{wrap{\n <<moveablePanel>>calendar\n----\n {{small{<<calendar thismonth>><script>place.lastChild.style.width="100%";</script>}}}===\n +++^18em^[contents]...{{wrap{\n <<moveablePanel>>contents\n----\n <<tabs txtMainTab Listbox 'TableOfContentsPlugin enhanced listbox' SideBarTabsListbox Timeline Timeline TabTimeline All 'All tiddlers' TabAll Tags 'All tags' TabTags More 'More lists' TabMore>>}}}=== | \n}}}}}} | {{nowrap{<script label="home">\n story.closeTiddler('FrontPage');\n story.displayTiddler(null,'FrontPage',1);\n return false;\n</script> | +++^60%^[about]...{{wrap{\n <<moveablePanel>>AboutMe\n----\n <<tiddler AboutMe>>}}}===\n +++^60%^[(c)|copyright, licensing and other legal notices]...{{wrap{\n <<moveablePanel>>DireitosAutorais\n----\n <<tiddler DireitosAutorais>>}}}===<script>\n place.lastChild.button.innerHTML="&copy;"; // set here since can't use HTML in slider label definition\n </script>
@@display:block;{{borderbottom{\n<<saveChanges>>}}}@@<script>\n if(readOnly)place.lastChild.style.display="none";\n</script>@@display:block;{{borderbottom{\n<<newDocument ask all>>}}}@@@@display:block;<<upload http://supere.tiddlyspot.com/store.cgi index.html . . supere>>//(password req'd)//@@<script>\n if(readOnly)place.lastChild.style.display="none";javascript:;\n</script>@@display:block;<html><a href='http://supere.tiddlyspot.com/download' class='button'>download</a></html>@@@@display:block;<<attach>>@@<script>\n if(readOnly)place.lastChild.style.display="none";\n</script>
{{right{{{floatleft{}}}+++(recent)[recent]...\n {{center{{{small{<<date popup Y M D-1 "yesterday" "DDD MMM DDth YYYY">>/%\n %/ <<date popup today "today" "DDD MMM DDth YYYY">>/%\n %/ <<date popup Y M D+1 "tomorrow" "DDD MMM DDth YYYY">>}}}}}}===<script>\n place.lastChild.id="SiteMenuGoto_recent"\n </script>}}}<<goto width:98.5%;margin:0;font-size:8pt; width:85%;font-size:8pt;>><script>\n place.insertBefore(document.getElementById("SiteMenuGoto_recent"),null);\n</script>
@@display:block;+++(displayoptions)[display]\n {{borderleft{\n <<tiddler ToggleTopButton>>\n <<option chkSinglePageMode>> one tiddler at a time\n <<option chkTopOfPageMode>> open at top of page\n <<option chkAnimate>> enable animation}}}===\n@@@@display:block;+++(saving)[saving]\n {{borderleft{\n <<option chkAutoSave>> auto save\n <<option chkSaveBackups>> create backup file\n <<option chkGenerateAnRssFeed>> create .xml file}}}===\n@@@@display:block;+++[password]\n <<option pasUploadPassword>>===\n@@@@display:block;+++[username]\n <<option txtUserName>><script>\n place.lastChild.setAttribute("autocomplete","off");\n var s=place.lastChild.style;s.width="98%";s.fontSize="8pt";\n </script>===\n@@[[AdvancedOptions]]<script>\n place.lastChild.style.fontStyle="normal";\n place.lastChild.style.fontWeight="normal";\n place.lastChild.innerHTML="advanced options...";\n</script>
{{floatright{+++[options|advanced search options]\n {{borderbottom{\n @@@@}}}\n <<option chkSearchList>> list in SearchResults\n <<option chkRegExpSearch>> text patterns\n <<option chkCaseSensitiveSearch>> case sensitive\n <script>\n place.id="sidebarSearchOptions" // so we can move this panel\n config.macros.search.label="find tiddlers";\n </script>===}}}<<search>><script>\n var s=place.lastChild.style;s.fontSize="8pt";s.width="98.5%"; // adjust search control style\n place.appendChild(document.getElementById("sidebarSearchOptions")); // move panel here\n</script>
{{borderbottom{\n@@display:block;<script label="refresh display">\n refreshDisplay()\n</script><script>\n place.lastChild.style.fontWeight="normal"\n place.lastChild.title="refresh current page display WITHOUT reloading page contents"\n</script>@@}}}<<permaview>>\n{{borderbottom{\n@@display:block;<<newDocument "label:snapshot" ask snap>>@@}}}<<closeAll>>@@display:block;<<themeSelect style 'select theme'>>\n
journal wiki escrito por um nerd em tiddly como fork de seu blog drupal
Supere-se!
Demo of slider formatting in SiteMapMacro\n|!sliders|!openSliders|!popups|\n|{{{<<siteMap TagglyTagging . sliders>>}}}|{{{<<siteMap TagglyTagging . openSliders>>}}}|{{{<<siteMap TagglyTagging . popups>>}}}|\n|<<siteMap TagglyTagging . sliders>>|<<siteMap TagglyTagging . openSliders>>|<<siteMap TagglyTagging . popups>>|
TiddlyWiki obtains its StartupParameters from the //location// portion of it's URL (the bit after the '#'). At it's simplest, the StartupParameters can list the names of the tiddlers to be opened when the TiddlyWiki is opened:\n{{{\nhttp://www.tiddlywiki.com/#HelloThere JeremyRuston\n}}}\nIn fact, that usage is equivalent to:\n{{{\nhttp://www.tiddlywiki.com/#open:HelloThere open:JeremyRuston\n}}}\nThe complete list of commands is:\n|!Command |!Description |!Example |\n|open:title |Opens the tiddler with the specified title |http://www.tiddlywiki.com/#open:HelloThere |\n|start:safe |Switches to SafeMode |http://www.tiddlywiki.com/#start:safe |\n|search:text |Performs a search for the specified text |http://www.tiddlywiki.com/#search:jeremy |\n|tag:text |Displays tiddlers tagged with the specified tag |http://www.tiddlywiki.com/#tag:news |\n|newTiddler:title |Opens a new tiddler with the specified title in edit mode |http://www.tiddlywiki.com/#newTiddler:"This is a new tiddler" |\n|newJournal:titleFormat |Opens a new tiddler with the specified DateFormatString |http://www.tiddlywiki.com/#newJournal:"YYYY MMM DD" |\n\nSee the details of the underlying ParameterParser for more details.
/***\nKeep just two tiddlers open a time, the one you clicked on and the one containing the link you just clicked.\nAs suggested by Elise Springer.\n***/\n//{{{\nversion.extensions.StepWiseNavigation = { major: 1, minor: 0, revision: 1,\n date: new Date(2006,4,27),\n source: "http://simonbaird.com/mptw/#StepWiseNavigation"\n};\n\nif (config.options.chkStepWiseNavigationOn == undefined)\n config.options.chkStepWiseNavigationOn = true;\n\nconfig.shadowTiddlers.AdvancedOptions +=\n "\sn<<option chkStepWiseNavigationOn>> StepWiseNavigation";\n\nStory.prototype.displayTiddler_orig_stepwise=Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly) {\n if (config.options.chkStepWiseNavigationOn && srcElement && this.findContainingTiddler(srcElement))\n this.closeAllTiddlers(this.findContainingTiddler(srcElement).getAttribute("tiddler"));\n this.displayTiddler_orig_stepwise(srcElement,title,template,animate,slowly)\n}\n\n//}}}\n
{{center{{{fine{{{floatleft{<<tiddler ToggleLeftSidebar>>}}}{{floatright{<<tiddler ToggleRightSidebar>>}}}<<tiddler ShowUnsavedChanges>>\n}}}}}}
[[SuperStyle]]\n\n/***\n!Based on TiddlyWiki Classic Color Scheme (by Jeremy Ruston)\nDesigned by FabioLeitao\n\nTo use this color scheme copy the [[SuperStyle]] contents into a tiddler and name it 'StyleSheet' also grab the [[SuperTemplate]] and copy its contents into a tiddler named 'PageTemplate'.\n\nHave in mind it might contemplate several MPTW and TiddlyTools plugins I use.\n\n!Colors Used\n*@@bgcolor(#630):color(#fff): #630@@\n*@@bgcolor(#930): #930@@\n*@@bgcolor(#996633): #963@@\n*@@bgcolor(#c90): #c90@@\n*@@bgcolor(#cf6): #cf6@@\n*@@bgcolor(#cc9): #cc9@@\n*@@bgcolor(#ba9): #ba9@@\n*@@bgcolor(#996): #996@@\n*@@bgcolor(#300):color(#cc9): #300@@\n*@@bgcolor(#000000):color(#fff): #000@@\n*@@bgcolor(#666): #666@@\n*@@bgcolor(#888): #888@@\n*@@bgcolor(#aaa): #aaa@@\n*@@bgcolor(#ddd): #ddd@@\n*@@bgcolor(#eee): #eee@@\n*@@bgcolor(#ffffff): #fff@@\n*@@bgcolor(#f00): #f00@@\n*@@bgcolor(#ff3): #ff3@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #963;\n}\n\na:hover{\n background: #963;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #300;\n background: #cc9;\n}\n\n.button {\n color: #014;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #014;\n background: #fe8;\n border-color: #db4;\n}\n\n.button:active {\n color: #fff;\n background: #db4;\n border: 1px solid #841;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #300;\n color: #cc9\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #8cf;\n}\n\n.titleLine {\n color: #fff;\n padding: 5em 0em 1em .5em;\n}\n\n.titleLine a {\n color: #cf6;\n}\n\n/*}}}*/\n/***\n!Main Menu /%=================================================%/\n***/\n/*{{{*/\n#mainMenu .button {\n color: #930;\n}\n\n#mainMenu .button:hover {\n color: #cf6;\n background: #930;\n}\n\n#mainMenu li{\n list-style: none;\n}\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n background: #c90;\n right: 0;\n}\n\n#sidebarOptions a{\n color: #930;\n border: 0;\n margin: 0;\n padding: .25em .5em;\n}\n\n#sidebarOptions a:hover {\n color: #cf6;\n background: #930;\n}\n\n#sidebarOptions a:active {\n color: #930;\n background: #cf6;\n}\n\n#sidebarOptions .sliderPanel {\n background: #eea;\n margin: 0;\n}\n\n#sidebarOptions .sliderPanel a {\n color: #930;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #cf6;\n background: #930;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #930;\n background: #cf6;\n}\n/*}}}*/\n/***\n!Sidebar tabs /%=================================================%/\n***/\n/*{{{*/\n.tabSelected,.tabContents {\n background: #eea;\n border: 0;\n}\n\n.tabUnselected {\n background: #c90;\n}\n\n#sidebarTabs {\n background: #c90;\n}\n\n#sidebarTabs .tabSelected{\n color: #cf6;\n background: #963;\n}\n\n#sidebarTabs .tabUnselected {\n color: #cf6;\n background: #930;\n}\n\n#sidebarTabs .tabContents{\n background: #963;\n}\n\n#sidebarTabs .txtMoreTab .tabSelected,\n#sidebarTabs .txtMoreTab .tabSelected:hover{\n background: #930;\n color: #cf6;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected,\n#sidebarTabs .txtMoreTab .tabUnselected:hover{\n background: #300;\n color: #cf6;\n}\n\n#sidebarTabs .txtMoreTab .tabContents {\n background: #930;\n}\n\n#sidebarTabs .tabContents a {\n color: #cf6;\n border: 0;\n}\n\n#sidebarTabs .button.highlight,\n#sidebarTabs .tabContents a:hover {\n background: #cf6;\n color: #300;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n background: #930;\n color: #fff;\n}\n\n#messageArea a:link, #messageArea a:visited {\n color: #c90;\n}\n\n#messageArea a:hover {\n color: #963;\n background: transparent;\n}\n\n#messageArea a:active {\n color: #fff;\n}\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #eea;\n border: 1px solid #930;\n}\n\n.popup hr {\n color: #963;\n background: #963;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #ba9;\n}\n\n.popup li a, .popup li a:visited {\n color: #300;\n}\n\n.popup li a:hover {\n background: #930;\n color: #eea;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .button {\n color: #930;\n}\n\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.tiddler .button:hover {\n color: #cf6;\n background: #930;\n}\n\n.tiddler .button:active {\n color: #fff;\n background: #c90;\n}\n\n.shadow .title {\n color: #888;\n}\n\n.title {\n color: #422;\n}\n\n.subtitle {\n color: #866;\n}\n\n.toolbar {\n color: #aaa;\n}\n\n.toolbar a,\n.toolbar a:hover{\n border: 0;\n}\n\n.tagging, .tagged {\n border: 1px solid #fff;\n background-color: #ffc;\n}\n\n.selected .tagging, .selected .tagged {\n border: 1px solid #aa6;\n background-color: #ffc;\n}\n\n.tagging .listTitle, .tagged .listTitle {\ncolor: #999999;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #eea;\n border: 0;\n}\n\n.sparktick {\n background: #930;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.zoomer {\n color: #963;\n border: 1px solid #963;\n}\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.viewer .button {\n background: #c90;\n color: #300;\n border-right: 1px solid #300;\n border-bottom: 1px solid #300;\n}\n\n.viewer .button:hover {\n background: #eea;\n color: #c90;\n}\n\n.viewer .imageLink{\n background: transparent;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #303030;\n}\n\n.viewer th, thead td {\n background: #996;\n border: 1px solid #606060;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #606060;\n}\n\n.viewer pre {\n border: 1px solid #963;\n background: #eea;\n}\n\n.viewer code {\n color: #630;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #606060;\n color: #666;\n}\n\n.highlight, .marked {\n background: #ff3;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #000;\n}\n\n.editor textarea {\n border: 1px solid #000;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n.editorFooter a {\n color: #930;\n}\n\n.editorFooter a:hover {\n color: #cf6;\n background: #930;\n}\n\n.editorFooter a:active {\n color: #fff;\n background: #c90;\n}\n\n/*}}}*/\n\n/***\nPlace your custom CSS here\n***/\n/*{{{*/\n/* text alignments */\n.left\n { display:block;text-align:left; }\n.floatleft\n { float:left; }\n.right\n { display:block;text-align:right; }\n.floatright\n { float:right; }\n.center\n { display:block;text-align:center; }\n.wrap\n { white-space:normal }\n.nowrap\n { white-space:nowrap }\n\n/* font sizes */\n.big\n { font-size:14pt;line-height:120% }\n.medium\n { font-size:12pt;line-height:120% }\n.normal\n { font-size:9pt;line-height:120% }\n.small\n { font-size:8pt;line-height:120% }\n.fine\n { font-size:7pt;line-height:120% }\n.tiny\n { font-size:6pt;line-height:120% }\n.larger\n { font-size:120%; }\n.smaller\n { font-size:80%; }\n\n\n/*}}}*/\n
/***\n!Colors Used\n*@@bgcolor(#8cf): #8cf - Background blue@@\n*@@bgcolor(#18f): #18f - Top blue@@\n*@@bgcolor(#04b): #04b - Mid blue@@\n*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\n*@@bgcolor(#ffc): #ffc - Bright yellow@@\n*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\n*@@bgcolor(#db4): #db4 - Background yellow@@\n*@@bgcolor(#841): #841 - Border yellow@@\n*@@bgcolor(#703):color(#fff): #703 - Title red@@\n*@@bgcolor(#866): #866 - Subtitle grey@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #04b;\n}\n\na:hover{\n background: #04b;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #703;\n background: #8cf;\n}\n\n.button {\n color: #014;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #014;\n background: #fe8;\n border-color: #db4;\n}\n\n.button:active {\n color: #fff;\n background: #db4;\n border: 1px solid #841;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #04b;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #8cf;\n}\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #014;\n background: #eee;\n border-left: 1px solid #ccc;\n border-top: 1px solid #ccc;\n border-right: 1px solid #ccc;\n}\n\n.tabUnselected {\n color: #fff;\n background: #999;\n}\n\n.tabContents {\n color: #014;\n background: #eee;\n border: 1px solid #ccc;\n}\n\n.tabContents .button {\n border: 0;}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #04b;\n}\n\n#sidebarOptions .sliderPanel {\n background: #8cf;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #04b;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #04b;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #04b;\n background: #fff;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border: 1px solid #841;\n background: #db4;\n color: #014;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #014;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #18f;\n border: 1px solid #04b;\n}\n\n.popup hr {\n color: #014;\n background: #014;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #04b;\n}\n\n.popup li a, .popup li a:visited {\n color: #eee;\n border: none;\n}\n\n.popup li a:hover {\n background: #014;\n color: #fff;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #866;\n}\n\n.title {\n color: #703;\n}\n\n.subtitle {\n color: #866;\n}\n\n.toolbar {\n color: #04b;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #014;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #8cf;\n border: 0;\n}\n\n.sparktick {\n background: #014;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #db4;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #db4;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #fe8;\n background: #ffc;\n}\n\n.viewer code {\n color: #703;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fe8;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #04b;\n}\n\n.editor textarea {\n border: 1px solid #04b;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n
Desculpem pela piada infame. \n\nNão resisti.
Essa precisa de etmiologia.\n\nPino, um grande amigo meu, vinha fazendo aulas de Yoga e toda a vez que eles reclamavam com o professor que seria muito dificil, ou dolorido, tentar uma nova posição estranha, sem pestanegar era respondido:\n\n[[Supere-se!]]\n\nVirou um excelente ditado. Quase sinonimo de Foda-se!
Precisando analizaro o que seu Windows anda fazendo por trás dos panos? Que programas abrem quais DLLs? Que processos lêem quais registros? Qual arquivos não estão no diretório correto causando mensagens de erros entranhas?\n\nVisite o site da [[sysinternals|http://www.sysinternals.com]], agora na TechNet da Microsoft, para baixar a suite com o melhor resource kit que conheço.\n\nFaz tudo o que listei e muito mais.\n\nAproveite para ler o blog do [[autor|http://blogs.technet.com/markrussinovich/]], onde ele exemplifica como usar as ferramentas descrevendo desafios e problemas que ele mesmo enfrentou. E assista aos webcasts disponíveis como demonstração de poder de verdade.
/***\n''Table of Contents Plugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#TableOfContentsPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen there are many tiddlers in a document, the standard 'tabbed list of tiddlers' in the right-hand sidebar can become very long, occupying a lot of page space and requiring a lot scrolling in order to locate and select a tiddler.\n\nThe TableOfContentsPlugin addresses this problem by replacing the standard tabbed list display with a single listbox/droplist control that uses a very small amount of page space, regardless of the number of tiddlers in the document.\n\n!!!!!Usage\n<<<\nTo view a tiddler, simply select (or double-click) its title from the listbox and it will automatically be displayed on the page. The listbox also includes special 'command' items that determine the order and type of tiddlers that are shown in the list:\n\n''[by title]'' displays all tiddlers in the document.\n''[by date/author/tags]'' displays indented sections, sorted accordingly, with headings (indicated by a '+') that can be expanded, one at a time, to view the list of tiddlers in that section.\n''[missing]'' displays tiddlers that have been referenced within the document but do not yet exist.\n''[orphans]'' displays tiddlers that do exist in the document but have not been referenced by a link from anywhere else within the document.\n''[system]'' displays special tiddlers that are used by TiddlyWiki to configure built-in features and add-on macros/extensions. The list includes all tiddlers tagged with <<tag systemTiddlers>> ("templates") or <<tag systemConfig>> (plug-in extensions), plus any 'shadow tiddlers' (built-in default systemTiddlers) that have not been over-ridden by custom tiddler definitions.\n\nThe current list ''display setting is indicated by an arrow (">")'' symbol to the left of command item. Selecting a command item causes the listbox to be reloaded with the appropriate contents and sort order.\n\nWhen you are viewing a list of tiddlers by date/author/tags, ''shift-clicking'' on a section heading or command item causes the listbox display to ''toggle between "show-one-section-at-a-time" and "expand-all-sections"'' display options, allowing you to quickly see all tiddler titles at once without having to view individual indented sections one at a time.\n\nThe ''size of the listbox can be adjusted'' so you can view more (or less) tiddler titles at one time. Select ''[-]'' to reduce the size by one line, ''[+]'' to increase the size by one line, or ''[=]'' to autosize the list to fit the current contents (toggles on/off). //Note: If the listbox is reduced to a single line, it displayed as a droplist instead of a fixed-sized listbox.// You can ''show/hide the entire listbox'' by selecting the "contents" label that appears above the listbox.\n<<<\n!!!!!Control Panel\n<<<\nBy default, tiddlers tagged with <<tag excludeLists>>, are omitted from the TableOfContents so that 'system' tiddlers (e.g. MainMenu, SiteTitle, StyleSheet, etc.) can be hidden, reducing "information overload" and making it easier to select relevant tiddlers when reading your document. However, when //editing// your document, including these hidden tiddlers in the list can be more helpful, so that changes to the menus, titles, styles, etc. can be more quickly accomplished.\n----\n''To include hidden tiddlers in the TableOfContents display, select the following option:''\n<<option chkTOCIncludeHidden>> include hidden tiddlers in TableOfContents(ignores <<tag excludeLists>> tag)\n^^note: this setting is ignored when ''<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP'' is enabled^^\n<<<\n!!!!!Parameters\n<<<\nThe macro accepts optional parameters to control various features and functions:\n* ''label:text''\nReplace the default text ("contents") that appears above the TableOfContents listbox. //Note: to include spaces in the label text, you must enclose the entire parameter in quotes// (e.g., {{{"label:my list of tiddlers"}}})\n* ''sort:fieldtype''\nSets the initial display order for items in the listbox. 'fieldtype' is one of the following pre-defined keywords: ''title'', ''modified'' //(date)//, ''modifier'' //(author)//, ''tags'', ''missing'', ''orphans'', or ''system''\n* ''date:format''\nControls the formatting of dates in TableOfContents display. 'format' is a text-substitution template containing one or more of the following special notations.\n** DDD - day of week in full (eg, "Monday")\n** DD - day of month, 0DD - adds leading zero\n** MMM - month in full (eg, "July")\n** MM - month number, 0MM - adds leading zero\n** YYYY - full year, YY - two digit year\n** hh - hours\n** mm - minutes\n** ss - seconds\n//Note: to include spaces in the formatting template, you must enclose the entire parameter in quotes// (e.g., {{{"date:DDD, DD/MM/YY"}}})\n* ''size:nnn''\nSets the initial number of lines to display in the listbox. If this parameter is omitted or "size:1" is specified, a single-line droplist is created. When a size > 1 is provided, a standard, fixed-size scrollable listbox is created. You can use "size:0" or "size:auto" to display a varible-height listbox that automatically adjusts to fit the current list contents without scrolling.\n* ''width:nnn[cm|px|em|%]''\nSets the width of the listbox control. Overrides the built-in CSS width declaration (=100%). Use standard CSS width units (cm=centimeters, px=pixels, em=M-space, %=proportional to containing area). You can also use a ".TOCList" custom CSS class definition to override the built-in CSS declarations for the listbox.\n* ''hidelist''\nHides the listbox when the TableOfContents is first displayed. Initially, only the listbox label and size controls will appear. Clicking on the listbox label text will alternately show/hide the listbox display. //Note: this setting does not affect the content of the listbox, only whether or not it is initially visible.//\n* ''prompt''\nSets the non-selectable prompt text that is displayed as the first line of the listbox //(note: this feature is not supported by the listbox control on all browsers)//. Let's you include a short text message (such as "select a tiddler"), even when displaying a compact single-line droplist.\n* ''padding:nnn[cm|px|em|%]''\nOverrides default listbox control padding. Sets the CSS padding style.\n* ''margin:nnn[cm|px|em|%]''\nOverrides default listbox control spacing. Sets the CSS margin style.\n* ''inline''\nNormally, the TableOfContents plugin is contained inside a {{{<div>}}} element. This setting causes the plugin to use a {{{<span>}}} instead, allowing for more flexible 'inline' placement when embedded within other content.\n<<<\n!!!!!Examples\n<<<\n<<tableOfContents "label:all tiddlers" sort:title width:40% size:1>>\n<<tableOfContents "label:by date" sort:modified size:1 width:40%>>\n<<tableOfContents "label:tagged tiddlers" sort:tags size:1 width:40%>>\n<<tableOfContents "label:system tiddlers" sort:system size:1 width:40%>>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''TableOfContentsPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for TableOfContents handling^^\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add {{{<<tableOfContents>>}}} macro^^\n\n<<<\n!!!!!Revision History\n<<<\n''2006.05.21 [2.2.7]'' added onkeyup handling for enter key (=view selected tiddler, equivalent to double-click)\n''2006.02.14 [2.2.6]'' FF1501 fix: add 'var r' and 'var k' to unintended global variable declarations in refreshTOCList() and getTOCListFromButton(). Thanks for report from AndreasHoefler.\n''2006.02.04 [2.2.5]'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n''2005.12.21 [2.2.2]'' in onClickTOCList() and onDblClickTOCList(), prevent mouse events from 'bubbling' up to other handlers\n''2005.10.30 [2.2.1]'' in refreshTOCList(), fixed calculation of "showHidden" to check for 'readOnly' (i.e., "via HTTP") flag. Based on a report from LyallPearce\n''2005.10.30 [2.2.0]'' hide tiddlers tagged with 'excludeLists' (with option to override, i.e., "include hidden tiddlers")\n''2005.10.09 [2.1.0]'' combined documentation and code in a single tiddler\nadded click toggle for expand-all vs. show-one-branch\n''2005.08.07 [2.0.0]'' major re-write to not use static ID values for listbox controls, so that multiple macro instances can exist without corrupting each other or the DOM. Moved HTML and CSS definitions into plugin code instead of using separate tiddlers. Added macro parameters for label, sort, date, size, width, hidelist and showtabs\n''2005.08.03 [1.0.3]'' added "showtabs" optional parameter\n''2005.07.27 [1.0.2]'' core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet(). Added show/hide toggle (click on 'contents' link)\n''2005.07.23 [1.0.1]'' added parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]'' Initial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.tableOfContents = {major: 2, minor: 2, revision: 7, date: new Date(2006,5,21)};\n//}}}\n\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n//{{{\n// define defaults for cookie-based option values\nif (config.options.txtTOCSortBy==undefined) config.options.txtTOCSortBy="modified";\nif (config.options.txtTOCListSize==undefined) config.options.txtTOCListSize=19;\nif (config.options.chkTOCShow==undefined) config.options.chkTOCShow=true;\nif (config.options.chkTOCIncludeHidden==undefined) config.options.chkTOCIncludeHidden=false;\n\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkTOCIncludeHidden>> include hidden tiddlers in TableOfContents";\n\n// define macro "tableOfContents" to render controls\nconfig.macros.tableOfContents = { label: "contents" };\nconfig.macros.tableOfContents.cmdMax=7;\n\nconfig.macros.tableOfContents.css = '\s\n.TOC { padding:0.5em 1em 0.5em 1em; }\s\n.TOC a { padding:0em 0.25em 0em 0.25em; color:inherit; }\s\n.TOCList { width: 100%; font-size:8pt; margin:0em; }\s\n';\n\nconfig.macros.tableOfContents.html = '\s\n<div style="text-align:right">\s\n <span style="float:left">\s\n <a href="JavaScript:;" id="TOCMenu" style="padding: 0em;"\s\n onclick="onClickTOCMenu(this)" title="show/hide table of contents">%label%</a>\s\n </span>\s\n <a href="JavaScript:;" id="TOCSmaller" style="display:inline"\s\n onclick="resizeTOC(this)" title="reduce list size">&#150;</a>\s\n <a href="JavaScript:;" id="TOCLarger"style="display:inline"\s\n onclick="resizeTOC(this)" title="increase list size">+</a>\s\n <a href="JavaScript:;" id="TOCMaximize"style="display:inline"\s\n onclick="resizeTOC(this)" title="maximize/restore list size">=</a>\s\n</div>\s\n';\n\nconfig.macros.tableOfContents.handler = function(place,macroName,params) { \n var parsedParams = new Array();\n parsedParams['label']=this.label;\n parsedParams['inline']=false;\n while (params.length>0) {\n if (params[0]=="label:none")\n parsedParams['label']="";\n else if (params[0].substr(0,6)=="label:")\n parsedParams['label']=params[0].substr(6);\n if (params[0].substr(0,7)=="prompt:")\n parsedParams['prompt']=params[0].substr(7);\n if (params[0].substr(0,8)=="padding:")\n parsedParams['padding']=params[0].substr(8);\n if (params[0].substr(0,7)=="margin:")\n parsedParams['margin']=params[0].substr(7);\n if (params[0].substr(0,5)=="sort:")\n parsedParams['sortby']=params[0].substr(5);\n if (params[0].substr(0,5)=="date:")\n parsedParams['date']=params[0].substr(5);\n if ((params[0]=="size:auto")||(params[0]=="size:0"))\n parsedParams['autosize']=true;\n else if (params[0] && (params[0].substr(0,5)=="size:"))\n parsedParams['requestedSize']=params[0].substr(5);\n if (params[0].substr(0,6)=="width:")\n parsedParams['width']=params[0].substr(6);\n if (params[0]=="hidelist")\n parsedParams['hidelist']=true;\n if (params[0]=="inline")\n parsedParams['inline']=true;\n params.shift(); \n }\n setStylesheet(config.macros.tableOfContents.css,"tableOfContents");\n var newTOC=createTiddlyElement(place,parsedParams['inline']?"span":"div",null,"TOC",null)\n if (parsedParams['margin']) { newTOC.style.margin=parsedParams['margin']; }\n if (parsedParams['padding']) { newTOC.style.padding=parsedParams['padding']; }\n if (parsedParams['label']!="") newTOC.innerHTML=config.macros.tableOfContents.html.replace(/%label%/,parsedParams['label']);\n var newTOCList=createTOCList(newTOC,parsedParams)\n refreshTOCList(newTOCList);\n store.addNotification(null,reloadTOCLists); // reload listbox after every tiddler change\n}\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.onChangeTOCList=onChangeTOCList;\nwindow.onClickTOCList=onClickTOCList;\nwindow.onDblClickTOCList=onDblClickTOCList;\nwindow.reloadTOCLists=reloadTOCLists;\nwindow.refreshTOCList=refreshTOCList;\nwindow.onClickTOCMenu=onClickTOCMenu;\nwindow.resizeTOC=resizeTOC;\n \nfunction createTOCList(place,params)\n{\n var theList = createTiddlyElement(place,"select",null,"TOCList",params['prompt'])\n theList.onchange=onChangeTOCList;\n theList.onclick=onClickTOCList;\n theList.ondblclick=onDblClickTOCList;\n theList.onkeyup=onKeyUpTOCList;\n theList.style.display=config.options.chkTOCShow ? "block" : "none" ;\n theList.sortBy=config.options.txtTOCSortBy;\n theList.dateFormat="DD MMM YYYY";\n theList.requestedSize=config.options.txtTOCListSize;\n theList.expandall=false;\n if (params['sortby'])\n { theList.sortBy=params['sortby']; theList.noSortCookie=true; }\n if (params['date'])\n { theList.dateFormat=params['date']; }\n if (params['autosize'])\n { theList.autosize=true; theList.noSizeCookie=true; }\n if (params['requestedSize'])\n { theList.requestedSize=params['requestedSize']; theList.noSizeCookie=true; }\n if (params['width'])\n { theList.style.width=params['width']; }\n if (params['hidelist'])\n { theList.style.display ="none" ; theList.noShowCookie=true; }\n if (params['expandall'])\n { theList.expandall=true; }\n return theList;\n}\n\nfunction onChangeTOCList()\n{\n var thisTiddler=this.options[this.selectedIndex].value;\n if ((this.size==1)&&(thisTiddler!='')) story.displayTiddler(null,thisTiddler,1);\n refreshTOCList(this);\n return false;\n}\n\nfunction onClickTOCList(e)\n{\n\n if (!e) var e = window.event;\n if (this.size==1)\n return; // don't toggle display for droplist\n if (e.shiftKey)\n { this.expandall=!this.expandall; refreshTOCList(this);}\n e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();\n return true;\n}\n\nfunction onDblClickTOCList(e)\n{\n if (!e) var e = window.event;\n var thisTiddler=this.options[this.selectedIndex].value;\n if (thisTiddler!='') story.displayTiddler(null,thisTiddler,1);\n e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nfunction onKeyUpTOCList(e)\n{\n if (!e) var e = window.event;\n if (e.keyCode!=13) return true;\n var thisTiddler=this.options[this.selectedIndex].value;\n if (thisTiddler!='') story.displayTiddler(null,thisTiddler,1);\n e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nfunction reloadTOCLists()\n{\n var all=document.all? document.all : document.getElementsByTagName("*");\n for (var i=0; i<all.length; i++)\n if (all[i].className=="TOCList")\n { all[i].selectedIndex=-1; refreshTOCList(all[i]); }\n}\n\nfunction refreshTOCList(theList)\n{\n // DEBUG var starttime=new Date();\n var selectedIndex = theList.selectedIndex;\n if (selectedIndex==-1) selectedIndex=0;\n var sortBy = theList.sortBy;\n var showHidden = config.options.chkTOCIncludeHidden\n && !(config.options.chkHttpReadOnly && readOnly);\n\n if (selectedIndex==0) sortBy=theList.sortBy; // "nnn tiddlers" heading\n if (selectedIndex==1) sortBy='title';\n if (selectedIndex==2) sortBy='modified';\n if (selectedIndex==3) sortBy='modifier';\n if (selectedIndex==4) sortBy='tags';\n if (selectedIndex==5) sortBy='missing';\n if (selectedIndex==6) sortBy='orphans';\n if (selectedIndex==7) sortBy='system';\n if (selectedIndex>config.macros.tableOfContents.cmdMax)\n {\n if (theList.options[theList.selectedIndex].value=='')\n expandTOC(theList);\n return;\n }\n theList.sortBy = sortBy;\n if (!theList.noSortCookie)\n { config.options.txtTOCSortBy=sortBy; saveOptionCookie("txtTOCSortBy"); }\n\n // get the list of tiddlers and filter out 'hidden' tiddlers (i.e., tagged with "excludeLists")\n var tiddlers = [];\n switch (sortBy) {\n case "missing":\n tiddlers = store.getMissingLinks();\n break;\n case "tags":\n tiddlers = store.getTags();\n break;\n case "orphans":\n var titles = store.getOrphans();\n for (var t = 0; t < titles.length; t++)\n if (showHidden || store.getTiddler(titles[t]).tags.find("excludeLists")==null)\n tiddlers.push(titles[t]);\n break;\n case "system":\n var temp = store.getTaggedTiddlers("systemTiddlers");\n for (var t = 0; t < temp.length; t++)\n if (showHidden || temp[t].tags.find("excludeLists")==null)\n tiddlers.pushUnique(temp[t].title,true);\n var temp = store.getTaggedTiddlers("systemConfig");\n for (var t = 0; t < temp.length; t++)\n if (showHidden || temp[t].tags.find("excludeLists")==null)\n tiddlers.pushUnique(temp[t].title,true);\n for (var t in config.shadowTiddlers) tiddlers.pushUnique(t,true);\n tiddlers.sort();\n break;\n default:\n var temp = store.getTiddlers(sortBy);\n for (var t = 0; t < temp.length; t++)\n if (showHidden || temp[t].tags.find("excludeLists")==null)\n tiddlers.push(temp[t]);\n }\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n theList.saved=null;\n\n // add heading and control items to list\n var i=0;\n var theHeading=tiddlers.length+' tiddlers:';\n if (sortBy=='missing') theHeading=tiddlers.length+' missing tiddlers:';\n if (sortBy=='orphans') theHeading=tiddlers.length+' orphaned tiddlers:';\n if (sortBy=='tags') theHeading=tiddlers.length+' tags:';\n if (sortBy=='system') theHeading=tiddlers.length+' system tiddlers:';\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var sel=">";\n theList.options[i++]=new Option(theHeading,'',false,false);\n theList.options[i++]=new Option(((sortBy=="title")?sel:indent)+' [by title]','',false,false);\n theList.options[i++]=new Option(((sortBy=="modified")?sel:indent)+' [by date]','',false,false);\n theList.options[i++]=new Option(((sortBy=="modifier")?sel:indent)+' [by author]','',false,false);\n theList.options[i++]=new Option(((sortBy=="tags")?sel:indent)+' [by tags]','',false,false);\n theList.options[i++]=new Option(((sortBy=="missing")?sel:indent)+' [missing]','',false,false);\n theList.options[i++]=new Option(((sortBy=="orphans")?sel:indent)+' [orphans]','',false,false);\n theList.options[i++]=new Option(((sortBy=="system")?sel:indent)+' [system]','',false,false);\n // output the tiddler list\n switch(sortBy)\n {\n case "title":\n for (var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n // continue with same logic as for 'modifier'...\n case "modifier":\n var lastSection = "";\n for (var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sortBy=="modified") theSection = tiddler.modified.formatString(theList.dateFormat);\n if (sortBy=="modifier") theSection = tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option('+ '+theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n expandTOC(theList);\n break;\n case "tags":\n // tagged tiddlers, by tag\n var tagcount=0;\n var lastTag = null;\n for (var t = 0; t < tiddlers.length; t++) // actually a list of tags, not tiddlers...\n {\n var theTag = tiddlers[t][0];\n var tagged = new Array();\n var temp = store.getTaggedTiddlers(theTag);\n for(var r=0; r<temp.length; r++)\n if (showHidden || temp[r].tags.find("excludeLists")==null)\n tagged.push(temp[r]);\n if (tagged.length)\n {\n tagcount++;\n theList.options[i++]= new\n Option('+ '+theTag+" ("+tagged.length+")","",false,false);\n for(var r=0; r<tagged.length; r++)\n theList.options[i++] = new\n Option(indent+indent+tagged[r].title,tagged[r].title,false,false);\n }\n }\n // count untagged tiddlers\n var temp = store.getTiddlers("title");\n var c=0; for (var r=0; r<temp.length;r++) if (!temp[r].tags.length) c++;\n // create 'pseudo-tag' listing untagged tiddlers (if any)\n if (c>0)\n {\n theList.options[i++] = new Option("+ untagged ("+c+")","",false,false);\n for (var r=0; r<temp.length;r++) if (!temp[r].tags.length)\n theList.options[i++] = new\n Option(indent+indent+temp[r].title,temp[r].title,false,false);\n }\n theList.options[0].text=tagcount+' tags:';\n expandTOC(theList);\n break;\n case "missing":\n case "orphans":\n case "system":\n for (var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t],tiddlers[t],false,false);\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n // DEBUG var endtime=new Date();\n // DEBUG alert("refreshTOC() elapsed time: "+(endtime-starttime)+" msec");\n}\n\n// show/hide branch of TOCList based on current selection\nfunction expandTOC(theList)\n{\n var selectedIndex = theList.selectedIndex;\n if (selectedIndex==-1) selectedIndex=0;\n var sortBy = theList.sortBy;\n\n // don't collapse/expand list for alpha-sorted "flatlist" TOC contents\n if ((sortBy=="title")||(sortBy=="missing")||(sortBy=="orphans")||(sortBy=="system"))\n return;\n // or list control items\n if ((selectedIndex>0)&&(selectedIndex<=config.macros.tableOfContents.cmdMax))\n return;\n\n var theText = theList.options[selectedIndex].text;\n var theValue = theList.options[selectedIndex].value;\n // save fully expanded list contents (if not already saved)\n if (!theList.saved)\n {\n theList.saved = new Array();\n for (var i=0; i < theList.length; i++)\n {\n opt = theList.options[i];\n theList.saved[i] = new Option(opt.text, opt.value, opt.defaultSelected, opt.selected);\n }\n }\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n\n // put back all items \n if (theList.expandall)\n {\n var i=0;\n for (var t=0; t<theList.saved.length; t++)\n {\n var opt=theList.saved[t];\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.text==theText) selectedIndex=i-1;\n }\n theList.selectedIndex = selectedIndex;\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n return;\n }\n\n // put back heading items until item text matches current selected heading\n var i=0;\n for (var t=0; t<theList.saved.length; t++)\n {\n var opt=theList.saved[t];\n if (opt.value=='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.text==theText)\n break;\n }\n selectedIndex=i-1; // this is the NEW index of the current selected heading\n // put back items with value!='' until value==''\n for ( t++; t<theList.saved.length; t++)\n {\n var opt=theList.saved[t];\n if (opt.value!='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.value=='')\n break;\n }\n // put back remaining items with value==''\n for ( ; t<theList.saved.length; t++)\n {\n var opt=theList.saved[t];\n if (opt.value=='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n }\n theList.selectedIndex = selectedIndex;\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n}\n\n// these functions process clicks on the 'control links' that are displayed above the listbox\nfunction getTOCListFromButton(which)\n{\n var theList = null;\n switch (which.id)\n {\n case 'TOCMenu':\n var theSiblings = which.parentNode.parentNode.parentNode.childNodes;\n var thePlace=which.parentNode.parentNode.parentNode.parentNode.parentNode.id;\n break;\n case 'TOCSmaller':\n case 'TOCLarger':\n case 'TOCMaximize':\n var theSiblings = which.parentNode.parentNode.childNodes;\n var thePlace=which.parentNode.parentNode.parentNode.parentNode.id;\n break;\n }\n for (var k=0; k<theSiblings.length; k++)\n if (theSiblings[k].className=="TOCList") { theList=theSiblings[k]; break; }\n // DEBUG if (theList) alert('found '+theList.className+' for '+which.id+' button in '+thePlace);\n return theList;\n}\n\nfunction onClickTOCMenu(which)\n{\n var theList=getTOCListFromButton(which);\n if (!theList) return;\n var opening = theList.style.display=="none";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theList,opening,false,"none"));\n else\n theList.style.display = opening ? "block" : "none" ;\n if (!theList.noShowCookie)\n { config.options.chkTOCShow = opening; saveOptionCookie("chkTOCShow"); }\n return(false);\n}\n\nfunction resizeTOC(which)\n{\n var theList=getTOCListFromButton(which);\n if (!theList) return;\n\n var size = theList.size;\n if (theList.style.display=="none") // make sure list is visible\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theList,true,false,"none"));\n else\n theList.style.display = "block" ;\n switch (which.id)\n {\n case 'TOCSmaller': // decrease current listbox size\n if (theList.autosize) { theList.autosize=false; size=config.options.txtTOCListSize; }\n if (size==1) break;\n size -= 1; // shrink by one line\n theList.requestedSize = theList.size = size;\n break;\n case 'TOCLarger': // increase current listbox size\n if (theList.autosize) { theList.autosize=false; size=config.options.txtTOCListSize; }\n if (size>=theList.options.length) break;\n size += 1; // grow by one line\n theList.requestedSize = theList.size = size;\n break;\n case 'TOCMaximize': // toggle autosize\n theList.autosize = (theList.size!=theList.options.length);\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n break;\n }\n if (!theList.noSizeCookie && !theList.autosize)\n { config.options.txtTOCListSize=size; saveOptionCookie("txtTOCListSize"); }\n}\n//}}}\n
*sample:\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#a0ffa0):colored| center |\n|caption|c\n*another sample: see PeriodicTable.\nFor advanced effects, you can control the CSS style of a table by adding a row like this:\n{{{\n|cssClass|k\n}}}\n
/***\nTagUtils\nhttp://simonbaird.com/mptw/#TagUtils\nDoesn't do anything except provide functions for use in other plugins\nSorry no documentation! RTFC :)\n\n!Update\nAdded some macros. See Examples.\n\n!Todo\nSorting is next\n\n!Example\nNote: you must have spaces between every element including brackets and logical operators\n{{{<<listByTagExpr '( Todo || Tasks ) && ! Done'>>}}}\n<<listByTagExpr '( Todo || Tasks ) && ! Done'>>\n\n{{{<<listByTagExprWithExcerpt '( Todo || Tasks ) && Urgent && ! Done'>>}}}\n<<listByTagExprWithExcerpt '( Todo || Tasks ) && ! Done'>>\n\n***/\n//{{{\n\n// Array methods originally written by Udo\n\nif (!Array.prototype.indexOf)\n Array.prototype.indexOf = function(item) {\n for (var i=0;i<this.length;i++)\n if (this[i] == item)\n return i;\n return -1;\n };\n\nif (!Array.prototype.contains)\n Array.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n };\n\nif (!Array.prototype.containsAny)\n Array.prototype.containsAny = function(items) {\n for (var i=0;i<items.length;i++)\n if (this.contains(items[i]))\n return true;\n return false;\n };\n\nif (!Array.prototype.containsAll)\n Array.prototype.containsAll = function(items) {\n for (var i = 0; i < items.length; i++)\n if (!this.contains(items[i]))\n return false;\n return true;\n };\n\n\nvar allowBracketedList = function(tags) {\n return (typeof(tags) == "string") ? tags.readBracketedList() : tags;\n}\n\nvar getTitles = function(tiddlers) {\n var titles = [];\n for (var i=0;i<tiddlers.length;i++)\n titles[i] = tiddlers[i].title;\n return titles;\n}\n\nTiddler.prototype.hasTag = function(tag) {\n return this.tags.contains(tag)\n}\n\nTiddler.prototype.hasAnyTag = function(tags) {\n return this.tags.containsAny(allowBracketedList(tags));\n}\n\nTiddler.prototype.hasAllTags = function(tags) {\n return this.tags.containsAll(allowBracketedList(tags));\n}\n\nTiddler.prototype.addTag = function(tag) {\n if (!this.hasTag(tag))\n this.tags.push(tag);\n}\n\nTiddler.prototype.addTags = function(tags) {\n var newTags = allowBracketedList(tags);\n for (var i=0;i<newTags.length;i++)\n this.addTag(newTags[i]);\n}\n\nTiddler.prototype.removeTag = function(tag) {\n if (this.hasTag(tag))\n this.tags.splice(this.tags.indexOf(tag),1);\n}\n\nTiddler.prototype.removeTags = function(tags) {\n var deadTags = allowBracketedList(tags);\n for (var i=0;i<deadTags.length;i++)\n this.removeTag(deadTags[i]);\n}\n\nTiddler.prototype.removeTagsFromGroup = function(tagGroup) {\n // the tags are tagged with tagGroup, taggly style\n var tagsInGroup = getTitles(store.getTaggedTiddlers(tagGroup));\n for (var i=0;i<tagsInGroup.length;i++)\n this.removeTag(tagsInGroup[i]);\n}\n\nTiddler.prototype.setUniqueTagFromGroup = function(tag,tagGroup) {\n // used for a single value dropdown\n this.removeTagsFromGroup(tagGroup);\n this.addTag(tag);\n}\n\nTiddler.prototype.setUniqueTagFromList = function(tag,tagList) {\n // will probably never use this since I like setUniqueTagFromGroup\n this.removeTags(tagList);\n this.addTag(tag);\n}\n\nTiddlyWiki.prototype.getTiddlersByTag = function(includeTags,excludeTags,includeMode,excludeMode) {\n includeTags = allowBracketedList(includeTags);\n excludeTags = allowBracketedList(excludeTags);\n if (!includeMode) includeMode = 'all';\n if (!excludeMode) excludeMode = 'any';\n var results = [];\n this.forEachTiddler(function(title,tiddler) {\n var included = (includeMode == 'any') ?\n tiddler.hasAnyTag(includeTags) :\n tiddler.hasAllTags(includeTags);\n var excluded = (excludeMode == 'any') ?\n tiddler.hasAnyTag(excludeTags):\n tiddler.hasAllTags(excludeTags);\n if (included && !excluded)\n results.push(tiddler);\n });\n return results;\n}\n\nTiddlyWiki.prototype.getTiddlersByTagExpression = function(expression) {\n // example expression\n // "( [[A Tag]] || Tag2 ) && ! Tag3"\n // must have spaces between everything\n var splitExpression = expression.readBracketedList(false); // false means not unique. thanks Jeremy!!\n var asIs = ['(',')','||','&&','!']; // better not have any tags called those!\n var translatedExpression = "";\n for (var i=0;i<splitExpression.length;i++)\n if (asIs.contains(splitExpression[i]))\n translatedExpression += splitExpression[i];\n else\n translatedExpression += "tiddler.hasTag('"+splitExpression[i]+"')";\n // alert(translatedExpression);\n var results = [];\n this.forEachTiddler(function(title,tiddler) {\n if (eval('('+translatedExpression+')'))\n results.push(tiddler);\n });\n return results;\n}\n\nArray.prototype.tiddlerList = function(listFormat) {\n var output = "";\n if (!listFormat) listFormat = "'*[['+tiddler.title+']]\s\sn'";\n if (this.length > 0 && this[0] instanceof Tiddler) {\n for (var i=0;i<this.length;i++) {\n var tiddler = this[i];\n output += eval(listFormat);\n }\n }\n return output;\n}\n \nArray.prototype.tiddlerListWithExcerpt = function(listFormat) {\n return this.tiddlerList("'*[['+tiddler.title+']] tiddler.text.trim().substr(20)...\s\sn'");\n}\n\nString.prototype.prettyTrim = function(len,prefix,postfix) {\n var result = this.trim().replace(/\sr\sn/g,' ').replace(/[\sn|\st]/g,' ');\n if (result.length > len - 3)\n return result.trim().substr(0,len) + '...';\n else\n return result;\n}\n\nString.prototype.prettyTrim2 = function(len,prefix,postfix) {\n if (!prefix) prefix = '';\n if (!postfix) postfix = '';\n return prefix + this.prettyTrim(len) + postfix;\n}\n\n \nArray.prototype.tiddlerListWithExcerpt = function(listFormat) {\n return this.tiddlerList("'*[['+tiddler.title+']] ' + tiddler.text.prettyTrim2(60,' - ') + '\s\sn'");\n}\n\nconfig.macros.listByTag = {};\nconfig.macros.listByTag.handler =\n function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify(store.getTiddlersByTag(params[0],params[1],params[2],params[3]).tiddlerList(),place,null,tiddler);\n};\n\nconfig.macros.listByTagWithExcerpt = {};\nconfig.macros.listByTagWithExcerpt.handler =\n function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify(store.getTiddlersByTag(params[0],params[1],params[2],params[3]).tiddlerListWithExcerpt(),place,null,tiddler);\n};\n\nconfig.macros.listByTagExpr = {};\nconfig.macros.listByTagExpr.handler =\n function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify(store.getTiddlersByTagExpression(params[0]).tiddlerList(),place,null,tiddler);\n};\n\nconfig.macros.listByTagExprWithExcerpt = {};\nconfig.macros.listByTagExprWithExcerpt.handler =\n function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify(store.getTiddlersByTagExpression(params[0]).tiddlerListWithExcerpt(),place,null,tiddler);\n};\n\n\n\n//}}}\n
/***\n|Name|TagglyListPlugin|\n|Created by|SimonBaird|\n|Location|http://simonbaird.com/mptw/#TagglyListPlugin|\n|Version|1.1.2 25-Apr-06|\n|Requires|See TagglyTagging|\n\n!History\n* 1.1.2 (25-Apr-2006) embedded TagglyTaggingStyles. No longer need separated tiddler for styles.\n* 1.1.1 (6-Mar-2006) fixed bug with refreshAllVisible closing tiddlers being edited. Thanks Luke Blanshard.\n\n***/\n\n/***\n!Setup and config\n***/\n//{{{\n\nversion.extensions.TagglyListPlugin = {\n major: 1, minor: 1, revision: 2,\n date: new Date(2006,4,25),\n source: "http://simonbaird.com/mptw/#TagglyListPlugin"\n};\n\nconfig.macros.tagglyList = {};\nconfig.macros.tagglyListByTag = {};\nconfig.macros.tagglyListControl = {};\nconfig.macros.tagglyListWithSort = {};\nconfig.macros.hideSomeTags = {};\n\n// change this to your preference\nconfig.macros.tagglyListWithSort.maxCols = 6;\n\nconfig.macros.tagglyList.label = "Tagged as %0:";\n\n// the default sort options. set these to your preference\nconfig.macros.tagglyListWithSort.defaults = {\n sortBy:"title", // title|created|modified\n sortOrder: "asc", // asc|desc\n hideState: "show", // show|hide\n groupState: "nogroup", // nogroup|group\n numCols: 1\n};\n\n// these tags will be ignored by the grouped view\nconfig.macros.tagglyListByTag.excludeTheseTags = [\n "systemConfig",\n "TiddlerTemplates"\n];\n\nconfig.macros.tagglyListControl.tags = {\n title:"sortByTitle", \n modified: "sortByModified", \n created: "sortByCreated",\n asc:"sortAsc", \n desc:"sortDesc",\n hide:"hideTagged", \n show:"showTagged",\n nogroup:"noGroupByTag",\n group:"groupByTag",\n cols1:"list1Cols",\n cols2:"list2Cols",\n cols3:"list3Cols",\n cols4:"list4Cols",\n cols5:"list5Cols",\n cols6:"list6Cols",\n cols7:"list7Cols",\n cols8:"list8Cols",\n cols9:"list9Cols" \n}\n\n// note: should match config.macros.tagglyListControl.tags\nconfig.macros.hideSomeTags.tagsToHide = [\n "sortByTitle",\n "sortByCreated",\n "sortByModified",\n "sortDesc",\n "sortAsc",\n "hideTagged",\n "showTagged",\n "noGroupByTag",\n "groupByTag",\n "list1Cols",\n "list2Cols",\n "list3Cols",\n "list4Cols",\n "list5Cols",\n "list6Cols",\n "list7Cols",\n "list8Cols",\n "list9Cols"\n];\n\n\n//}}}\n/***\n\n!Utils\n***/\n//{{{\n// from Eric\nfunction isTagged(title,tag) {\n var t=store.getTiddler(title); if (!t) return false;\n return (t.tags.find(tag)!=null);\n}\n\n// from Eric\nfunction toggleTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)==null) t.tags.push(tag);\n else t.tags.splice(t.tags.find(tag),1);\n}\n\nfunction addTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n}\n\nfunction removeTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n}\n\n// from Udo\nArray.prototype.indexOf = function(item) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == item) {\n return i;\n }\n }\n return -1;\n};\nArray.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n}\n//}}}\n/***\n\n!tagglyList\ndisplays a list of tagged tiddlers. \nparameters are sortField and sortOrder\n***/\n//{{{\n\n// not used at the moment...\nfunction sortedListOfOtherTags(tiddler,thisTag) {\n var list = tiddler.tags.concat(); // so we are working on a clone..\n for (var i=0;i<config.macros.hideSomeTags.tagsToHide.length;i++) {\n if (list.find(config.macros.hideSomeTags.tagsToHide[i]) != null)\n list.splice(list.find(config.macros.hideSomeTags.tagsToHide[i]),1); // remove hidden ones\n }\n for (var i=0;i<config.macros.tagglyListByTag.excludeTheseTags.length;i++) {\n if (list.find(config.macros.tagglyListByTag.excludeTheseTags[i]) != null)\n list.splice(list.find(config.macros.tagglyListByTag.excludeTheseTags[i]),1); // remove excluded ones\n }\n list.splice(list.find(thisTag),1); // remove thisTag\n return '[[' + list.sort().join("]] [[") + ']]';\n}\n\nfunction sortHelper(a,b) {\n if (a == b) return 0;\n else if (a < b) return -1;\n else return +1;\n}\n\nconfig.macros.tagglyListByTag.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n\n if (sortOrder == "desc")\n result = result.reverse();\n\n var leftOvers = []\n for (var i=0;i<result.length;i++) {\n leftOvers.push(result[i].title);\n }\n\n var allTagsHolder = {};\n for (var i=0;i<result.length;i++) {\n for (var j=0;j<result[i].tags.length;j++) {\n\n if ( \n result[i].tags[j] != tiddler.title // not this tiddler\n && config.macros.hideSomeTags.tagsToHide.find(result[i].tags[j]) == null // not a hidden one\n && config.macros.tagglyListByTag.excludeTheseTags.find(result[i].tags[j]) == null // not excluded\n ) {\n if (!allTagsHolder[result[i].tags[j]])\n allTagsHolder[result[i].tags[j]] = "";\n allTagsHolder[result[i].tags[j]] += "**[["+result[i].title+"]]\sn";\n\n if (leftOvers.find(result[i].title) != null)\n leftOvers.splice(leftOvers.find(result[i].title),1); // remove from leftovers. at the end it will contain the leftovers...\n }\n }\n }\n\n\n var allTags = [];\n for (var t in allTagsHolder)\n allTags.push(t);\n\n allTags.sort(function(a,b) {\n var tidA = store.getTiddler(a);\n var tidB = store.getTiddler(b);\n if (sortBy == "title") return sortHelper(a,b);\n else if (!tidA && !tidB) return 0;\n else if (!tidA) return -1;\n else if (!tidB) return +1;\n else return sortHelper(tidA[sortBy],tidB[sortBy]);\n });\n\n var markup = "";\n\n if (sortOrder == "desc") {\n allTags.reverse();\n }\n else {\n // leftovers first...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n } \n\n for (var i=0;i<allTags.length;i++)\n markup += "*[["+allTags[i]+"]]\sn" + allTagsHolder[allTags[i]];\n\n if (sortOrder == "desc") {\n // leftovers last...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n }\n\n wikify(markup,place);\n}\n\nconfig.macros.tagglyList.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n var numCols = params[2] ? params[2] : 1;\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n if (sortOrder == "desc")\n result = result.reverse();\n\n var listSize = result.length;\n var colSize = listSize/numCols;\n var remainder = listSize % numCols;\n\n var upperColsize;\n var lowerColsize;\n if (colSize != Math.floor(colSize)) {\n // it's not an exact fit so..\n lowerColsize = Math.floor(colSize);\n upperColsize = Math.floor(colSize) + 1;\n }\n else {\n lowerColsize = colSize;\n upperColsize = colSize;\n }\n\n var markup = "";\n var c=0;\n\n var newTaggedTable = createTiddlyElement(place,"table");\n var newTaggedBody = createTiddlyElement(newTaggedTable,"tbody");\n var newTaggedTr = createTiddlyElement(newTaggedBody,"tr");\n\n for (var j=0;j<numCols;j++) {\n var foo = "";\n var thisSize;\n\n if (j<remainder)\n thisSize = upperColsize;\n else\n thisSize = lowerColsize;\n\n for (var i=0;i<thisSize;i++) \n foo += ( "*[[" + result[c++].title + "]]\sn"); // was using splitList.shift() but didn't work in IE;\n\n var newTd = createTiddlyElement(newTaggedTr,"td",null,"tagglyTagging");\n wikify(foo,newTd);\n\n }\n\n};\n\n/* snip for later.....\n //var groupBy = params[3] ? params[3] : "t.title.substr(0,1)";\n //var groupBy = params[3] ? params[3] : "sortedListOfOtherTags(t,tiddler.title)";\n //var groupBy = params[3] ? params[3] : "t.modified";\n var groupBy = null; // for now. groupBy here is working but disabled for now.\n\n var prevGroup = "";\n var thisGroup = "";\n\n if (groupBy) {\n result.sort(function(a,b) {\n var t = a; var aSortVal = eval(groupBy); var aSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal = eval(groupBy); var bSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal2 = eval(groupBy);\n return (aSortVal == bSortVal ?\n (aSortVal2 == bSortVal2 ? 0 : (aSortVal2 < bSortVal2 ? -1 : +1)) // yuck\n : (aSortVal < bSortVal ? -1 : +1));\n });\n }\n\n if (groupBy) {\n thisGroup = eval(groupBy);\n if (thisGroup != prevGroup)\n markup += "*[["+thisGroup+']]\sn';\n markup += "**[["+t.title+']]\sn';\n prevGroup = thisGroup;\n }\n\n\n\n*/\n\n\n//}}}\n\n/***\n\n!tagglyListControl\nUse to make the sort control buttons\n***/\n//{{{\n\nfunction getSortBy(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.sortBy;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["title"])) return "title";\n else if (tiddler.tags.contains(usetags["modified"])) return "modified";\n else if (tiddler.tags.contains(usetags["created"])) return "created";\n else return defaultVal;\n}\n\nfunction getSortOrder(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.sortOrder;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["asc"])) return "asc";\n else if (tiddler.tags.contains(usetags["desc"])) return "desc";\n else return defaultVal;\n}\n\nfunction getHideState(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.hideState;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["hide"])) return "hide";\n else if (tiddler.tags.contains(usetags["show"])) return "show";\n else return defaultVal;\n}\n\nfunction getGroupState(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.groupState;\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n if (tiddler.tags.contains(usetags["group"])) return "group";\n else if (tiddler.tags.contains(usetags["nogroup"])) return "nogroup";\n else return defaultVal;\n}\n\nfunction getNumCols(title) {\n var tiddler = store.getTiddler(title);\n var defaultVal = config.macros.tagglyListWithSort.defaults.numCols; // an int\n if (!tiddler) return defaultVal;\n var usetags = config.macros.tagglyListControl.tags;\n for (var i=1;i<=config.macros.tagglyListWithSort.maxCols;i++)\n if (tiddler.tags.contains(usetags["cols"+i])) return i;\n return defaultVal;\n}\n\n\nfunction getSortLabel(title,which) {\n // TODO. the strings here should be definable in config\n var by = getSortBy(title);\n var order = getSortOrder(title);\n var hide = getHideState(title);\n var group = getGroupState(title);\n if (which == "hide") return (hide == "show" ? "−" : "+"); // 0x25b8;\n else if (which == "group") return (group == "group" ? "normal" : "grouped");\n else if (which == "cols") return "cols±"; // &plusmn;\n else if (by == which) return which + (order == "asc" ? "↓" : "↑"); // &uarr; &darr;\n else return which;\n}\n\nfunction handleSortClick(title,which) {\n var currentSortBy = getSortBy(title);\n var currentSortOrder = getSortOrder(title);\n var currentHideState = getHideState(title);\n var currentGroupState = getGroupState(title);\n var currentNumCols = getNumCols(title);\n\n var tags = config.macros.tagglyListControl.tags;\n\n // if it doesn't exist, lets create it..\n if (!store.getTiddler(title))\n store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);\n\n if (which == "hide") {\n // toggle hide state\n var newHideState = (currentHideState == "hide" ? "show" : "hide");\n removeTag(title,tags[currentHideState]);\n if (newHideState != config.macros.tagglyListWithSort.defaults.hideState)\n toggleTag(title,tags[newHideState]);\n }\n else if (which == "group") {\n // toggle hide state\n var newGroupState = (currentGroupState == "group" ? "nogroup" : "group");\n removeTag(title,tags[currentGroupState]);\n if (newGroupState != config.macros.tagglyListWithSort.defaults.groupState)\n toggleTag(title,tags[newGroupState]);\n }\n else if (which == "cols") {\n // toggle num cols\n var newNumCols = currentNumCols + 1; // confusing. currentNumCols is an int\n if (newNumCols > config.macros.tagglyListWithSort.maxCols || newNumCols > store.getTaggedTiddlers(title).length)\n newNumCols = 1;\n removeTag(title,tags["cols"+currentNumCols]);\n if (("cols"+newNumCols) != config.macros.tagglyListWithSort.defaults.groupState)\n toggleTag(title,tags["cols"+newNumCols]);\n }\n else if (currentSortBy == which) {\n // toggle sort order\n var newSortOrder = (currentSortOrder == "asc" ? "desc" : "asc");\n removeTag(title,tags[currentSortOrder]);\n if (newSortOrder != config.macros.tagglyListWithSort.defaults.sortOrder)\n toggleTag(title,tags[newSortOrder]);\n }\n else {\n // change sortBy only\n removeTag(title,tags["title"]);\n removeTag(title,tags["created"]);\n removeTag(title,tags["modified"]);\n\n if (which != config.macros.tagglyListWithSort.defaults.sortBy)\n toggleTag(title,tags[which]);\n }\n\n store.setDirty(true); // save is required now.\n story.refreshTiddler(title,false,true); // force=true\n}\n\nconfig.macros.tagglyListControl.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var onclick = function(e) {\n if (!e) var e = window.event;\n handleSortClick(tiddler.title,params[0]);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n };\n createTiddlyButton(place,getSortLabel(tiddler.title,params[0]),"Click to change sort options",onclick,params[0]=="hide"?"hidebutton":"button");\n}\n//}}}\n/***\n\n!tagglyListWithSort\nput it all together..\n***/\n//{{{\nconfig.macros.tagglyListWithSort.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n if (tiddler && store.getTaggedTiddlers(tiddler.title).length > 0)\n // todo make this readable\n wikify(\n "<<tagglyListControl hide>>"+\n (getHideState(tiddler.title) != "hide" ? \n '<html><span class="tagglyLabel">'+config.macros.tagglyList.label.format([tiddler.title])+' </span></html>'+\n "<<tagglyListControl title>><<tagglyListControl modified>><<tagglyListControl created>><<tagglyListControl group>>"+(getGroupState(tiddler.title)=="group"?"":"<<tagglyListControl cols>>")+"\sn" + \n "<<tagglyList" + (getGroupState(tiddler.title)=="group"?"ByTag ":" ") + getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+" "+getNumCols(tiddler.title)+">>" // hacky\n // + \sn----\sn" +\n //"<<tagglyList "+getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+">>"\n : ""),\n place,null,tiddler);\n}\n\nconfig.macros.tagglyTagging = { handler: config.macros.tagglyListWithSort.handler };\n\n\n//}}}\n/***\n\n!hideSomeTags\nSo we don't see the sort tags.\n(note, they are still there when you edit. Will that be too annoying?\n***/\n//{{{\n\n// based on tags.handler\nconfig.macros.hideSomeTags.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n var theList = createTiddlyElement(place,"ul");\n if(params[0] && store.tiddlerExists[params[0]])\n tiddler = store.getTiddler(params[0]);\n var lingo = config.views.wikified.tag;\n var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;\n createTiddlyElement(theList,"li",null,"listTitle",prompt.format([tiddler.title]));\n for(var t=0; t<tiddler.tags.length; t++)\n if (!this.tagsToHide.contains(tiddler.tags[t])) // this is the only difference from tags.handler...\n createTagButton(createTiddlyElement(theList,"li"),tiddler.tags[t],tiddler.title);\n\n}\n\n//}}}\n/***\n\n!Refresh everything when we save a tiddler. So the tagged lists never get stale. Is this too slow???\n***/\n//{{{\n\nfunction refreshAllVisible() {\n story.forEachTiddler(function(title,element) {\n if (element.getAttribute("dirty") != "true") \n story.refreshTiddler(title,false,true);\n });\n}\n\nstory.saveTiddler_orig_mptw = story.saveTiddler;\nstory.saveTiddler = function(title,minorUpdate) {\n var result = this.saveTiddler_orig_mptw(title,minorUpdate);\n refreshAllVisible();\n return result;\n}\n\nstore.removeTiddler_orig_mptw = store.removeTiddler;\nstore.removeTiddler = function(title) {\n this.removeTiddler_orig_mptw(title);\n refreshAllVisible();\n}\n\nconfig.shadowTiddlers.TagglyTaggingStyles = "/***\snTo use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.\sn***/\sn/*{{{*/\sn.tagglyTagged li.listTitle { display:none;}\sn.tagglyTagged li { display: inline; font-size:90%; }\sn.tagglyTagged ul { margin:0px; padding:0px; }\sn.tagglyTagging { padding-top:0.5em; }\sn.tagglyTagging li.listTitle { display:none;}\sn.tagglyTagging ul { margin-top:0px; padding-top:0.5em; padding-left:2em; margin-bottom:0px; padding-bottom:0px; }\sn\sn/* .tagglyTagging .tghide { display:inline; } */\sn\sn.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\sn.tagglyTagging table { margin:0px; padding:0px; }\sn\sn\sn.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\sn.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}\sn.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }\sn.selected .tagglyTagging .button { display:inline; }\sn\sn.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space. tweak if you're not using a white tiddler bg */\sn.selected .tagglyTagging .hidebutton { color:#aaa }\sn\sn.tagglyLabel { color:#aaa; font-size:90%; }\sn\sn.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\sn.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\sn.tagglyTagging ul ul li {margin-left:0.5em; }\sn\sn.editLabel { font-size:90%; padding-top:0.5em; }\sn/*}}}*/\sn";\n\nrefreshStyles("TagglyTaggingStyles");\n\n\n//}}}\n\n// // <html>&#x25b8;&#x25be;&minus;&plusmn;</html>
<!---\n| Name:|~TagglyTaggingEditTemplate |\n| Version:|1.1 (12-Jan-2006)|\n| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|\n| Purpose:|See TagglyTagging for more info|\n| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|\n--->\n<!--{{{-->\n<div class="toolbar" macro="toolbar +saveTiddler closeOthers -cancelTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div class="editor" macro="edit text"></div>\n<br/>\n<!--}}}-->
<!---\n| Name:|~TagglyTaggingViewTemplate |\n| Version:|1.2 (16-Jan-2006)|\n| Source:|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate|\n| Purpose:|See TagglyTagging for more info|\n| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|\n!History\n* 16-Jan-06, version 1.2, added tagglyListWithSort\n* 12-Jan-06, version 1.1, first version\n!Notes\nRemove the miniTag if you don't like it or you don't use QuickOpenTagPlugin\n--->\n<!--{{{-->\n<div class="toolbar" macro="toolbar -closeTiddler closeOthers +editTiddler permalink references jump newHere"></div>\n<div class="tagglyTagged" macro="hideSomeTags"></div>\n<div><span class="title" macro="view title"></span><span class="miniTag" macro="miniTag"></span></div>\n<div class='subtitle'>Updated <span macro='view modified date [[DD-MMM-YY]]'></span></div>\n<div class="viewer" macro="view text wikified"></div>\n<div class="tagglyTagging" macro="tagglyTagging"></div>\n<!--}}}-->\n
To hide text within a tiddler so that it is not displayed you can wrap it in {{{/%}}} and {{{%/}}}. It can be a useful trick for hiding drafts or annotating complex markup. Edit this tiddler to see an example.\n/%This text is not displayed\nuntil you try to edit %/
[[TiddlySpot|http://tiddlyspot.com]] é o site gratuito onde publico esta página wiki.
[[TiddlyTools|http://www.tiddlytools.com]] é um pacote de plugins que muda quase todas as funcionalidades além da aparência do TiddlyWiki ==que preferia estar usando neste site, mas não funcionou ainda==.
O [[TiddlyWiki|http://www.tiddlywiki.com]] é a origem do site, como um todo. Uma idéia fantastica de [[JeremyRuston|http://www.tiddlywiki.com/#JeremyRuston]] para montar uma Wiki dedicada a [[MicroConteúdo|http://www.tiddlywiki.com/#MicroContent]] totalmente contida em um arquivo HTML autônomo recheado de JavaScript.\n\nPor ser OpenSource, pode ter suas funcionalidades facilmente ampliadas com a anexação de add-ons como o TiddlyTools, ou o [[MonkeyPirateTiddlyWiki|MPTW]].\n\nSó não tem editor WYSIWYG, mas a [[Formatação]] é moleza.
<script label="show/hide left sidebar">\n var show=document.getElementById('mainMenu').style.display=='none';\n if (!show) {\n document.getElementById('mainMenu').style.display='none';\n var margin='1em';\n }\n else {\n document.getElementById('mainMenu').style.display='block';\n var margin=config.options.txtDisplayAreaLeftMargin?config.options.txtDisplayAreaLeftMargin:"";\n }\n place.innerHTML=(show?"&lt;&lt;&lt;":"&gt;&gt;&gt;"); // SET LINK TEXT\n place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n document.getElementById('displayArea').style.marginLeft=margin;\n config.options.chkShowLeftSidebar=show;\n saveOptionCookie('chkShowLeftSidebar');\n var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);\n return false;\n</script><script>\n if (config.options.chkShowLeftSidebar==undefined)\n config.options.chkShowLeftSidebar=true;\n if (!config.options.txtDisplayAreaLeftMargin||!config.options.txtDisplayAreaLeftMargin.length)\n config.options.txtDisplayAreaLeftMargin="12em";\n var show=config.options.chkShowLeftSidebar;\n document.getElementById('mainMenu').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginLeft=show?config.options.txtDisplayAreaLeftMargin:"1em";\n place.lastChild.innerHTML=(show?"&lt;&lt;&lt;":"&gt;&gt;&gt;"); // SET LINK TEXT\n place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n place.lastChild.style.fontWeight="normal";\n</script>
<<option chkHttpReadOnly>><script>\n var chk=place.lastChild;\n chk.style.margin=chk.style.padding="0";\n chk.id="ToggleReadOnly_checkbox";\n chk.title="enable/disable TiddlyWiki editing functions";\n chk.checked=readOnly;\n chk.coreOnChange=chk.onchange;\n chk.onchange=function() {\n if (this.coreOnChange) this.coreOnChange();\n readOnly=!readOnly;\n this.checked=readOnly;\n story.forEachTiddler(function(t,e){story.refreshTiddler(t,null,true)});\n refreshDisplay();\n };\n</script><script label="read-only">\n place.previousSibling.onchange();\n</script><script>\n var s=place.lastChild.style; s.display="inline"; s.fontWeight="normal";\n</script>
<script label="show/hide right sidebar">\n var show=document.getElementById('sidebar').style.display=='none';\n if (!show) {\n document.getElementById('sidebar').style.display='none';\n var margin='1em';\n }\n else {\n document.getElementById('sidebar').style.display='block';\n var margin=config.options.txtDisplayAreaRightMargin?config.options.txtDisplayAreaRightMargin:"";\n }\n place.innerHTML=(show?"&gt;&gt;&gt;":"&lt;&lt;&lt;"); // SET LINK TEXT\n place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n document.getElementById('displayArea').style.marginRight=margin;\n config.options.chkShowRightSidebar=show;\n saveOptionCookie('chkShowRightSidebar');\n var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);\n return false;\n</script><script>\n if (config.options.chkShowRightSidebar==undefined)\n config.options.chkShowRightSidebar=true;\n if (!config.options.txtDisplayAreaRightMargin||!config.options.txtDisplayAreaRightMargin.length)\n config.options.txtDisplayAreaRightMargin="17em";\n var show=config.options.chkShowRightSidebar;\n document.getElementById('sidebar').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginRight=show?config.options.txtDisplayAreaRightMargin:"1em";\n place.lastChild.innerHTML=(show?"&gt;&gt;&gt;":"&lt;&lt;&lt;"); // SET LINK TEXT\n place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n place.lastChild.style.fontWeight="normal";\n</script>
<script> \n window.showTopButton=function(show) {\n // remove existing "top" button (if any)\n var e=document.getElementById("scrollToTopButton"); if (e) e.parentNode.removeChild(e);\n if (config.browser.isIE) return; // IE doesn't do FIXED... do nothing.\n if (!show) return; // hiding button... we're done.\n // create a link that scrolls to the top of page\n e=createTiddlyElement(null,"A",null,null,"top");\n e.id="scrollToTopButton";\n e.title="scroll to top of page";\n e.onclick=function(){window.scrollTo(0,0)};\n // make it hover in the bottom right corner of the window\n var s=e.style;\n s.position="fixed";\n s.zIndex="1001"; // hopefully, this will be on top of ALL other elements!\n s.bottom=".5em";\n s.right=".5em";\n s.cursor="pointer";\n s.backgroundColor="#eee";\n s.color="#009";\n s.border="1px solid";\n s.padding="0 1em";\n s.MozBorderRadius="1em";\n s.fontSize="7pt";\n document.body.insertBefore(e,null);\n }\n if (config.options.chkShowTopButton==undefined) config.options.chkShowTopButton=false;\n window.showTopButton(config.options.chkShowTopButton);\n</script><<option chkShowTopButton>><script>\n place.lastChild.onchange=function() {\n window.showTopButton(this.checked);\n config.options.chkShowTopButton=this.checked;\n saveOptionCookie("chkShowTopButton");\n };\n</script> "scroll-to-top" button
Posso dizer que deve ter sido criado com a intenção de substituir os StickNotes amarelinhos, mas acabou se tornando uma especie de Notepad com esteróides (como o WikidPad) para organizar informações e idéias.\n\nhttp://www.beatniksoftware.com/tomboy/\n\nEditor leve e poderoso com conceito de criação, navegação e organização Wiki. Muito amigável.\n\nFoi criado para Linux, mas funciona no Windows.\n\nPrecisa do Mono pra rodar no Windows (siga estas [[instruções|http://iatf-itb.openesc.com/index.php?option=content&task=view&id=83&Itemid=54]]).
http://trac.edgewall.org/ \n\nSistema de rastreio e Wiki para gerencia de projetos de desenvolvimento de Software, trabalha em conjunto com Subversion e [[Bazaar]]
http://www.ubuntu.com\n\nDistro do Linux muito boa, apreciada lá em casa (até pela minha mãe) como Desktop Gnome2 e uso como ainda como Servidor (Intranet e Files no escritório - Firewall em casa e em alguns clientes). Atualmente na versão 6.10 Edgy, mas já estou usando a 7.04 Feisty beta.\n\nTem outras versões que básicamente alteram o Window Manager devido ao gosto do cliente ou necessadades da máquina (Kubuntu com KDE3 e Xubuntu como Xfce4).\n\nTão maneiro que vem sendo seguido pelo OpenSolaris na sua //fork// [[Nexenta]].
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 24/6/2010 0:25:38 | FabioLeitao | [[/|http://supere.tiddlyspot.com/]] | [[store.cgi|http://supere.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/6/2010 0:32:19 | FabioLeitao | [[/|http://supere.tiddlyspot.com/]] | [[store.cgi|http://supere.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/6/2010 0:40:40 | FabioLeitao | [[/|http://supere.tiddlyspot.com/]] | [[store.cgi|http://supere.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/6/2010 0:41:45 | FabioLeitao | [[/|http://supere.tiddlyspot.com/]] | [[store.cgi|http://supere.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/6/2010 0:46:22 | FabioLeitao | [[/|http://supere.tiddlyspot.com/]] | [[store.cgi|http://supere.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/3/2012 1:47:2 | FabioLeitao | [[/|http://supere.tiddlyspot.com//#ChavesSSH]] | [[store.cgi|http://supere.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***\n<<tiddler UploadPluginDoc>>\n!Code\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 3, revision: 3, \n date: new Date(2006,6,30),\n type: 'macro',\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n docs: 'http://tiddlywiki.bidix.info/#UploadPluginDoc'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 2, date: new Date(2006,3,11),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n var size = 15;\n if (params[1])\n size = params[1];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.dirname(storeUrl)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n if (storeUrl === '') {\n config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n displayMessage(config.macros.upload.messages.aboutToUpload.format([this.dirname(storeUrl)]), this.dirname(storeUrl));\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n if (uploadDir) {\n rssPath = uploadDir + "/" + config.macros.upload.basename(rssPath);\n } else {\n rssPath = config.macros.upload.basename(rssPath);\n }\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+rssPath]), config.macros.upload.dirname(storeUrl)+"/"+rssPath);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n revised = revised.replace(new RegExp("<title>[^<]*</title>", "im"),"<title>"+ newSiteTitle +"</title>");\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+toFilename]), config.macros.upload.dirname(storeUrl)+"/"+toFilename);\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) { }\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir\n + ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n request.open("POST", storeUrl, true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n request.open("GET", document.location.toString(), true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]));\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nconfig.shadowTiddlers.UploadPluginDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadPluginDoc ]]\sn"; \n\n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n}\n\n//}}}\n////===
Sistemas de controle de versão (Version Control Systems), muito usados por autores de texto puro, como desenvolvedores de software.
<div class='toolbar' macro='toolbar collapseTiddler collapseOthers -closeTiddler closeOthers +editTiddler permalink references jump newHere'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
http://www.microsoft.com/express/download/\n\nIDE e Compilador VB, C# e C++, e IDE ASP.NET. Interessante, prático, e grátis mas disponível só pra Windows. \n\nDiponibilizado pela [[Microsoft|http://www.microsoft.com]] para Hobbistas e Estudantes, mas pode ser usado para programas comerciais se você puder conviver com as (poucas) limitações
This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.\nFind out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.\n\n@@font-weight:bold;font-size:1.3em;color:#444; //Settings// &nbsp;&nbsp;@@Make sure you enter your password here.\n<<tiddler tiddlyspotControls>>\n@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the "save to web" button in the column on the right.\n\n@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click "upload" and your ~TiddlyWiki will be saved back to tiddlyspot.com.\n\n@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy!// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments.
Sometimes it's handy to be able to write WikiWords without them being recognised as links (for people's names, for instance). You can do this by preceding the WikiWord with a tilde ({{{~}}}). For example, ~JamesBond, ~JavaScript and ~TiddlyWiki
Não é exatamente um CMS, já não é um servidor, ou cliente, mas até que exporta pra HTML.\n\nÉ um Notepad com esteróides que funciona //''stand alone''// mas com o conceito de criação, navegação e organização de uma Wiki.\n\nhttp://www.jhorman.org/wikidPad/\n\nNão chega a ser tão prático quanto o FreeMind, mas ele se descreve como uma "IDE para seus pensamentos" :-/\n\nFoi criado para Windows, mas funciona no Linux de forma similar ao [[Zim]]\n\nTem quem prefira o TomBoy.
http://www.microsoft.com/windowsvista\n\nO bixo é bonito, e parece bem feito (vamos aguardar ao menos um SP antes de revisar o comentário) e as cores esquisitinhas não tiram a beleza. \n\nMas Deus-que-me-livre-e-guarde!!, não tenho nenhuma máquina que sequer chegue perto dos requisitos de hardware, e para funcionar bem nenhuma comodite atende também, é preciso pensar em todo de linha.\n\nAcho que a maioria das pessoas ainda vai esperar un 2 anos antes de sequer vê-lo pela primeira vez.
http://www.microsoft.com/windowsxp\n\nQuem nunca usou é mentiroso. Muito bom mas com muitos aspectos a melhorar. Dá pra viver sem.
[[StyleSheetAdjustments]]\n/* ==== Woodshop ==== */\n/*{{{*/\nbody\n { background-image: url('[[WoodshopBackgroundMedium]]'); background-color:#db7; }\n.menubox\n { background-image: url('[[WoodshopBackgroundLight]]'); background-color:#edb; }\n.tagging, .tagged\n { background-color: transparent; border: 1px solid #ccc; }\n.selected .tagging, .selected .tagged\n { background-image: url('[[TexturesParchment]]'); background-color:#edb; border: 1px solid #999; }\n.groupbox\n { background-image: url('[[TexturesParchment]]'); background-color:#edb; }\n.viewer\n { background-image: url('[[WoodshopBackgroundLight]]'); background-color:#edb;\n border: 2px solid #999; -moz-border-radius:1em; padding:1em; }\n.header\n { background-image: url('[[WoodshopBackgroundDark]]'); background-color:#611; color:#edb; border-bottom:0px; }\n.header a\n { color: #ec7; }\n.floatingPanel, #messageArea, .attachPanel, #importPanel, #exportPanel\n { background: #edb; background-image: url('[[WoodshopBackgroundLight]]') !important;}\n#sidebarTabs .tabContents\n { background-image: url('[[WoodshopBackgroundLight]]'); background-color:#edb; }\nh1,h2,h3,h4,h5\n { background-image: url('[[WoodshopBackgroundDark]]'); background-color:#611; color:#fff;}\nh1 a, h2 a, h3 a, h4 a, h5 a\n { color: #ec7; }\n\n/* text alignments */\n.left\n { display:block;text-align:left; }\n.floatleft\n { float:left; }\n.right\n { display:block;text-align:right; }\n.floatright\n { float:right; }\n.center\n { display:block;text-align:center; }\n.wrap\n { white-space:normal }\n.nowrap\n { white-space:nowrap }\n\n/* font sizes */\n.big\n { font-size:14pt;line-height:120% }\n.medium\n { font-size:12pt;line-height:120% }\n.normal\n { font-size:9pt;line-height:120% }\n.small\n { font-size:8pt;line-height:120% }\n.fine\n { font-size:7pt;line-height:120% }\n.tiny\n { font-size:6pt;line-height:120% }\n.larger\n { font-size:120%; }\n.smaller\n { font-size:80%; }\n/*}}}*/\n
Você já deve ter ouvido falar nmo LAMP (Linux+Apache+~MySQL+PHP).\n\nO [[XAMPP|http://www.apachefriends.org/en/xampp.html]] é seu substituto, ou evolução, no sentido de ser qualquer OS+Apache+~MySQL+PHP+Perl, inclusive versão para Windows totalmente autocontida em um setup simples, ou ~MacOSX, ou Solaris. Fácil de integrar ainda com Ruby e Python.\n\nVocê poderia pegar as aplicações separadamente, mas se não usa Debian ou Ubuntu, por que o trabalho? ;)
http://www.xaraxtreme.org/\n\nEditor vetorial grátis pra Linux e baratinho pra Windows. (aka ~CorelDraw)
Possivelmente o site ainda não conhece seu nome. \n\nA saudação e a assinatura de textos editados pode ser identificadas corretamente.\n\nVocê pode entrar com essa configuração aqui: <<option txtUserName>> \n\nMas para salvar alterações no site, é precisa sabe tamém a senha de upload.
http://amsn.sourceforge.net/download.php\n\nCliente clone do MSN muito bom e leve.
Dell Precision 220 Workstation Pentium III 700 ~MHz 256MB RAMBUS ECC 34GB SCSI HDD com placa de rede e placa de som on-board e video nVidia ~MX400 64MB; rodando Windows XP ~SP2.\n\nComprei usado.\n\n==Arrumando para doar. Definitivamente sou uma ONG de Inclusão Digital.==\n\nAcho que tá perdido, pois a placa de video já era, e não tenho outra compativel para testar. Por hora está enconstado.
Amazon (não ri não) AMD X2 2.2GHz 4GB ~PC5300 667MHz 320GB HDD com leitor de cards e gravador de DVD; rodando Ubuntu ==8.10== ==9.10== 10.04 (por hora) ==e várias ~VMwares==.\n\nOu seja, é desktop, mas dá pra usar até como um servidor mais do que razoável (atualmente meu portal Redmine de controle de projetos, estudando NAS e CouchDB para um futuro próximo)\n\n==Acho que qualquer dia posso doar os outros equipamentos.== Doados, ao menos os mais antigos.
[[e107|http://www.e107.org/]] é um ambiente de CMS OpenSource mantido por uma comunidade própria. \n\nEles dizem que não são um //fork// de nenhum outro projeto mas tem um perfume de [[Mambo]] com certeza.\n\nMuito bom, muito fácil de instalar... quase tão simples quando um TiddlyWiki. Ok, ok, tem mais etapas e alguns pré-requisitos, mas sinceramente, qualquer administrador de servidor não teria como não ter Apache, PHP e ~MySQL hoje em dia.\n\nDe mais, foi criar uma base de dados vazia, descompactar o arquivo num diretorio (pode fazer um link simbólico mais tarde) e abrir o browser no endereço. Ele sozinho te avisava o que podia estar errado e como acertar (normalmente apenas permissões no diretório). Sendo que as informações foram mais claras e úties que o [[Mambo]] ou o [[Joomla]].\n\nDaí, é partir pro abraço.\n\nA gerência é óbvia desde o inicio, leve em consideração que foi desenvolvido com uma mentalidade de portal coorporativo mesmo... (daqueles poderosos, que custam uma fortuna) mas sem ser tão burocrático. Campioníssimo quanto as facilidades que já vem preconfigurados e os ajustes são muito moleza.\n\nTem 4 niveis de permissões: Guest (apenas lê); Member (escreve, mas não publica); Admin(modera o conteúdo e administra o que for permitido, caso a caso); Master(pode tudo) \n\nO controle sobre o que pode ser publicado é supimpa, e onde, e por quanto tempo, além de algumas extenções bem suculentas que adoraria ter em outros sistemas (já vem com Forum, mas senti falta de Blog).\n\nNão tem editor WYSIWYG, mas tem uma barra que ajuda a escrever em ~BBCode.\n\nShow. Quem não tem Drupal ainda e não quer se arriscar, recomendo.
Por favor, não abuse.
==Compaq Armada M700 Pentium III 850 ~MHz 448MB DIMM 20BG miniIDE HDD 15"; rodando Ubuntu Dapper 6.06.01 LTS.==\n\n==Herdado.== Doado.
HP ~D4000 ~DualCore2 1.7 ~GHz 3G ~DDR2 160GB miniSATA HDD 14"w; rodando Vista Home Premium 64bits.\n\nBom para desenvolvimento em .net, estava com o Demetrius, mas acho que torrou. \n\nTem funcionado bem, só que sempre sobre um cooling shelf para tentar esfriar um pouco.\n\nTenho usado com o Wubi Ubuntu Lucid 10.04 64bits também (dual boot).
Lenovo N200 ~DualCore 1.6 ~GHz 3GB ~DDR2 80GB miniSATA HDD 15"w; rodando ==Vista Home Premium== Ubuntu Lucid 10.04 32bits.\n\nMinha mãe quem costuma usar, tava funcionando bem até outro dia quando enguiçou a letra S do teclado, depois todo o teclado enlouqueceu de vez. \n\nEu quem tenho tentado usar, por enquanto com um teclado externo USB, enquanto não consigo comprar o interno para substituir.
Quem disse que você precisa gastar uma fortuna para se divertir com computadores?\n\nMas acredite que se tivesse algum dinheiro agora (tá certo, uma fortuna), saía pra coprar [[o que há de melhor]]... \n\nMesmo assim, acho que não aposentava os atuais tão cedo, e por enquanto vou me virando com eles.\n\nE tem amigo meu que não acredita...
Asus 1005ha Atom 1.6 ~GHz 2GB ~DDR2 160GB miniSATA HDD 10"w; rodando ==Windows 7 Ultimate 32bits== Ubuntu Lucid 10.04 32 bits.\n\n==Minha máquina de produção e apresentação... aguenta quase tudo que tento usar nela, estou impressionado, principalmente pela etiqueta de preço de R$ 1200,00==\n\nEsá com a minha mãe desde que ela quebrou o notebook Lenovo dela.
Como não tenho dinheiro, me viro com o [[meus|my hardware]] equipamentos atuais.\n\nMas vai por mim: \n\nTendo dinheiro hoje, comprava logo [[o que há de melhor]].\n\nMinha recomendações atuais em várias plataformas:\n*uma Workstation Precision poderosa da [[Dell|http://www1.la.dell.com/content/products/compare.aspx/precn?c=br&l=pt&s=bsd]], ou ~MacPro da [[Apple|http://www.apple.com/macpro/]] (nessa ordem);\n*e um laptop [[Macbook|http://www.apple.com/macbook/macbook.html]] ou da [[Dell|http://www1.la.dell.com/content/products/compare.aspx/performance?c=br&l=pt&s=bsd]].\nPrecisando de um servidor: \n*Sun ~UltraSPARC Fire [[T1000|http://www.sun.com/servers/coolthreads/t1000/]] ainda não tem pra ninguém...\nSe precisar de vários, diversifique... há menos chances de um problema afetar a todos os serviços em todas as plataformas. \n*[[HP|http://h18004.www1.hp.com/products/servers/platforms/]] e [[Apple|http://www.apple.com/xserve/]] (sim apple tem servidores fantasticos), nessa ordem. Uso muito Dell nos servidores do escritório, ==mas eu não gosto.Ninguém me convence.== Compramos principalmente pelo custo. E cortar custos em servidor é pedir pra ter encrenca. Mas não sou eu quem assina os cheques. Ao menos funcionam muito bem e tem boa garantia.\nEstude direitinho e você ainda consegue compartilhar a mesma NAS entre todos.\n\nSe for pra ter uma segunda ou terceira máquina em casa (ou mesmo como terminais em escritório) voce ainda pode substituir desktops por máquinas Mini, tanto [[Apple|http://www.apple.com/macmini/]] quanto [[PC|http://minipc.aopen.com/Global/spec.htm]], mas não significa que por causa do design avançado, não venham com grandes processadores ''~Core2Duo''. \n\nSó não compre mercado cinza a não ser que você se garanta e consiga viver sem garantia, pois normalmente não vale a pena ariscar.\n\nE invista em infra estrutura, uma rede embasbacada poe todo o investimetno a perder. A rede é a base de tudo nesse caso. Bons cabos, conectores e switches economizam muito mais que voce pode imaginar.\n\nNesses casos: \n*Panduit e Cisco. Alias, a [[Cisco|http://www.cisco.com]] usa [[Panduit|http://www.panduit.com]] em seus escritórios.\nEm todos os casos, [[OS]] é irrelevante... ou quase. Hoje em dia é mais questão de gosto pessoal pois quase todos os recursos estão disponíveis em todos.\n\nAlias, OpenSource é o que mais tem disponível hoje em dia, voce só compra Software se realmente precisar de algum em particular.\n
==Não consegui enviar pro site usando os comandos como indicavão nos FAQs.==\n\n==Não fosse o UploadPlugin que se recusa a funcionar (a não ser que escreva um novo menu, o que não quero) teria mudado definitivamente pro formato TiddlyTools. Logo, voltei pro [[MPTW]].==\n!!!!Que coisa linda\nTive mais sorte trazendo alguns plugins manualmente. Vou manter esta versão intermediária. Daniel Baird comentou que eles estariam usando uma versão anterior ao do plugin de UploadPlugin do que a que eu tinha no meu TiddlyTools.\n\nConsegui incluir um tema muito bom chamado WoodShop, mas funciona parcialmente.\n\nTenho reportado direto pro pessoal da TiddlySpot.\n\nAté que estou satisfeito com o resultado. Daria pra usar até como Wiki oficial lá na empresa, quem sabe, pra divulgação de NewsLetters internas.
Tive que tomar uma decisão drástica:\n\nA partir de agora preciso de dois conteúdos distintos.\n\nE como nerd, chamo isso de um fork.\n\nComecei esta [[wiki|http://supere.tiddlyspot.com/]] a ser mantida como um blog para pesquisas, desenvolvimentos e trabalho. Tudo <<tag [[Nerd]]>>.\n\nJá no MeuBlog, continuo mantendo trivialidades do dia a dia mesmo: passeios, festas, fotos, comentários, além dos livros.\n\nComo o novo sistema não ficará no meu micro em casa, tem menos chance de sair do ar e atrapalhar algum leitor (sim, fãs reclamaram da última vez que tive um problema).\n\nMas para não ocupar espaço aqui (afinal, é grátis), vou manter as fotos que referenciar em qualquer texto em casa. Espero que não fique estranho.
==IBM Pentium II 266 ~MHz 256MB PC100 DIMM 8GB IDE HDD com 2 placas de rede 3Com; rodando Ubuntu Dapper Server 6.06.01 LTS.==\n\n==On Line...==\n\n==Herdado.== Doado.\n\n==Recentemente teve o HD falecido, por isso meu BLOG drupal está fora do ar, e nem posso mais compartilhar o acesso em casa com o micro da minha mãe. Por hora vai ficando, pois a preguiça e a dureza me impedem de começar o reparo.==\n\n==Em breve dou uma solução.==\n\nSolucionado, comprei um HD novo, limpei bem as peças, reinstalei tudo (com Ubuntu 8.06 LTS), doei e dei aulas para o novo dono. \n\nAcho que sou uma ONG de inclusão digital. :)
!Sample TagCloud:\n<<tagCloud systemTiddlers systemConfig about>>\n\n!About TagCloud\nThis plugin was created by [[Clint Checketts]] list the current tags in alphabetical order and displays the more popular tags larger.\n\n!How to use TagCloud\nAfter intalling the [[tagCloud plugin]], in any tiddler call the tagCloud macro:\n{{{\n<<tagCloud>>\n}}}\nAny tags listed after the macro name will be excluded from the tag listing:\n{{{\n<<tagCloud systemTiddlers systemConfig>>\n}}}\nThe previous code listing will excluded the systemTiddlers and systemConfig tags from the listing.
version.extensions.tagCloud = {major: 1, minor: 0 , revision: 1, date: new Date(2005,8,16)};\n//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman\n\nconfig.macros.tagCloud = {\n noTags: "No tag cloud created because there are no tags.",\n tooltip: "%1 tiddlers tagged with '%0'"\n};\n\nconfig.macros.tagCloud.handler = function(place,macroName,params) {\n \nvar tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);\n\nvar tags = store.getTags();\nfor (t=0; t<tags.length; t++) {\n for (p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";\n}\n\n if(tags.length == 0) \n createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);\n //Findout the maximum number of tags\n var mostTags = 0;\n for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){\n if (tags[t][1] > mostTags) mostTags = tags[t][1];\n }\n //divide the mostTags into 4 segments for the 4 different tagCloud sizes\n var tagSegment = mostTags / 4;\n\n for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){\n var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);\n tagCloudWrapper.appendChild(document.createTextNode(" "));\n var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));\n theTag.setAttribute("tag",tags[t][0]);\n }\n\n};\n\nsetStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.tagCloud1{font-size: 1.2em;}.tagCloud2{font-size: 1.4em;}.tagCloud3{font-size: 1.6em;}.tagCloud4{font-size: 1.8em;}.tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles");
| tiddlyspot password:|<<option pasUploadPassword>>|\n| site management:|<<upload http://supere.tiddlyspot.com/store.cgi index.html . . supere>>//(requires tiddlyspot password)//<<br>>[[control panel|http://supere.tiddlyspot.com/controlpanel]], [[download (go offline)|http://supere.tiddlyspot.com/download]]|\n| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://tiddlyspot.com/faq/]], [[announcements|http://tiddlyspot.com/announce/]], [[blog|http://tiddlyspot.com/blog/]], [[email feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|
Um editor com esteróides como o WikidPad, para Linux, mas com o conceito de criação, navegação e organização de uma Wiki.\n\nÉ legal, leve e esporta os textos de um diretório para html.\n\nTem quem prefira o TomBoy.
Oops, não adianta tentar ler no futuro... ;)