I made the change described in [[Setup Journal]]. So the //Journal// tag was added to the date automatically. Remember, you have to edit to make changes.
This is another journal entry. We read "Popular Mechanics" today talked a bit about the Pentad.
config.options.chkHttpReadOnly = false;\n
I'll use this tiddler for important information as I find it. The first installment deals with how to make sure your work is not lost.\n\nThis may seem very confusing but it is really pretty simple. Someone complained that sometimes TiddlySpot was not saving all his work. The following is the advice he got. The bottom line is be SURE you wait for the verification message when you Save to the Web. Be sure you are not working with your local copy and the web copy at the same time. Here is the original advice found online:\n\n>Let upload complete properly, wait until the message reads:\n\n>Backup saved\n>Main TiddlyWiki file saved\n>About to upload TiddlyWiki to http://tiddlyspot.com/your-tw\n>Main TiddlyWiki file uploaded to http://tiddlyspot.com/your-tw/./\n>index.html\n\n>Always verify that the changes you made really exist on the server\n>version by reloading before you make further changes.\n\n>At this point you can fall into another trap. If you are working on\n>your local disk version and call up the online version for\n>verification of your changes, you can inadvertently start modifing the\n>online copy and in the heat of battle forget which is which and\n>proceed to upload the local disk version that has no modifications.\n>This is very easy to do and even if you catch yourself in the act of\n>doing it you will still have some changes in the local disk version\n>and some in the online version that will need to be reconciled.\n\n>Make sure you never have both the local disk version and the online\n>version open at the same time. Also decide which is to be the master\n>copy and never deviate from it or you will surely download from the\n>server over your modified local copy or upload an outdated local copy\n>over the later server version. There is no Spot remover that will fix\n>this ;-)\n\n>Morris
Another term for WikiWords.
On the right, upper menu are some commands. Use //new tiddler// to open a new tiddler in edit mode. Type your stuff and click //done// in the invisible menu that appears when you hover. Be sure to give it a decent title and tag it well.\n
[[Start Here]]\n
To delete a tiddler, go into edit mode. \n\nTo enter edit mode, click //edit// on the menu that appears above the tiddler when you hover there with the mouse. Or simply double-click the tiddler itself.\n\nThe option to delete is in the menu above the editor.
\n''TiddlyWiki uses Wiki style markup, a way of lightly "tagging" plain text so it can be transformed into HTML. To see the codes that create the following format samples, go into edit mode (by double-clicking within the tiddler or pressing the "edit" button in the hidden menu above). You might want to print out those codes to keep handy as you develop your portfolio. As you can see, you have a lot of control over your text's look and feel.''\n\n! Header Samples\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n\n! Text Formatting\n''Bold'' (note that the code is two apostrophes and ''not'' the quote mark)\n==Strike==\n__Underline__\n//Italic//\n\n! Word lists with words and their definitions\n;This is the word\n:This is its indented definition\n\n;This is the next entry in the word list \n:This is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definitionThis is its indented definition\n\n! Unordered Lists:\n* Lists are where its at\n* Just use an asterisk and you're set\n** To nest lists just add more asterisks...\n***...like this\n* You can also nest mixed list types\n## Like this\n\n! Ordered Lists\n# Ordered lists are pretty neat too\n## To nest, just add more octothorpes (pound signs)...\n### Like this\n* You can also\n** Mix list types\n*** like this\n# Pretty neat don't you think?\n\n! Tiddler links\nTo create a Tiddler link, just use a WikiWord or simply suround the link with double square [[brackets]]. It is quicker to make a WikiWord, but some find them ugly. The double square bracket method makes for a more normal look.\n\nNote that existing Tiddlers are in bold and empty Tiddlers are in italics. See Creating Tiddlers for details.\n\n! External Links\nYou can link to [[external sites|http://google.com]] with brackets. You can also Link To Folders on your machine or network shares.\n\n! Images\n[img[http://farm1.static.flickr.com/161/347371396_15f9f558ff.jpg]]\n\n\nTo do this, visit [[ImageShack|http://www.imageshack.us/]]. Select "Browse" to find an image on your computer that you want to upload. Select an image, press "OK/Open," and then press the "Host it!" button. After a short while (depending on your internet connection and image size), your image will upload and you will see a number of boxes with linking code for your uploaded image. Chose the Direct Link linking code. \n\nNote: You could use other photo hosting services, like Flickr, if you prefer. ImageShack is easy, but Flickr has a lot of power.\n\nEdit this tiddler to see how to formate the linking code.\n!Tables\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#DC1A1A):colored| center |\n|caption|c\n\n\n! Horizontal Rules\nYou can divide a tiddler into\n----\nsections by typing four dashes on a line by themselves.\n\n! Blockquotes\n<<<\nThis is how you do an extended, wrapped blockquote so you don't have to put angle quotes on every line.\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\n\nSuperscript: 2^^3^^=8\nSubscript: a~~ij~~ = -a~~ji~~\n@@highlight@@ Highlighting is working now it seems.\n@@color(green):green colored@@\n@@bgcolor(#ff0000):color(#ffffff):red colored@@ Hexadecimal numbers are often used for colors in computer codes.
''Internal help''\nThe tiddly called [[Format Codes]] shows you what can be done with the appearance of your site. In edit mode it shows the markup language used to control the text. The easiest way is to just learn the markup codes as you need them. \n\n''External help''\nThere are many guides and tutorials about ~TiddlyWiki on the web. After you look around here, you will find the following worth visiting.\n\n[[TiddlyWiki for the Rest of Us|http://www.giffmex.org/twfortherestofus.html]] is an excellent and brief introduction that includes help with themes and macros.\n\n[[tiddlywikiguides.org|http://tiddlywikiguides.org/index.php?title=TiddlyWiki_Guides]] maintains the official list of the major guides.\n\n[[euicho|http://euicho.com/index.php?p=123]] has a brief but clear overview. \n\n\n[[TWhelp|http://tiddlyspot.com/twhelp/index.html#Welcome]] has the scoop for serious ~TiddlyWiki users. \n\nTWhelp is hosted at [[http://tiddlyspot.com]] where you can get a free online ~TiddlyWiki site for your own use. You can mark tiddlers private there, so you can keep passwords and notes always handy.
Sometimes you may want to import a tiddler from another site. For example the //Format Codes// tiddler at [[JV-TiddlyWiki|http://jventola.net/cctiddly/index.php?#%5B%5BFormat%20Codes%5D%5D]] has many useful codes that you might want handy in your own tiddlywiki. \n\nTo get it for your own site, simply open it in Edit or View mode and select and copy the text. Paste that into a tiddler on your own site. Click //done.// \n\n(Actually, I have already done that.)\n\n
Just insert the link in double square brackets. Edit this tiddler to see how to use pretty text:\n\n[[pretty text to link you to google|http://google.com]]
! Images\n[img[http://farm1.static.flickr.com/161/347371396_15f9f558ff.jpg]]\n\n\nTo do this, visit [[ImageShack|http://www.imageshack.us/]]. Select "Browse" to find an image on your computer that you want to upload. Select an image, press "OK/Open," and then press the "Host it!" button. After a short while (depending on your internet connection and image size), your image will upload and you will see a number of boxes with linking code for your uploaded image. Chose the Direct Link linking code. \n\nNote: You could use other photo hosting services, like Flickr, if you prefer. ImageShack is easy, but Flickr has a lot of power.\n\nEdit this tiddler to see how to formate the linking code.
That's me. Your guide. Read more at [[my main tw|http://jventola.net/cctiddly/index.php?#JimVentola%20%5B%5BFormat%20Codes%5D%5D]]\n\nBTW -- that long code you see in edit or view mode is created by clicking //permalink// on the site I want to link to. The address generated is used to be able to link to that specific part of the site.
//If you use TiddlyWiki a lot, it may pay to learn these codes. The top five are essential to know. //\n\n\n//~TiddlyWiki // \n;CTRL ENTER\n:Closes and accepts changes to the current tiddler being edited.\n;ESCAPE\n:Closes and discards changes to the current tiddler being edited.\n\n//Cut, Copy, and Paste// \n;CTRL X \n:Cut the selected text to the clipboard\n;CTRL C\n:Copy the selected text to the clipboard\n;CTRL V\n:Paste the clipboard to the current cursor position\n\n//Undo and Redo//\n;CTRL Z \n:Undo the last editing command\n;CTRL Y \n:Redo the last undo command\n\n//Navigating Text//\n;HOME \n:Move cursor to the beginning of the current line\n;END \n:Move the cursor to the end of the current line\n;CTRL HOME \n:Move the cursor the very beginning of the current text field.\n;CTRL END \n:Move the cursor to the very end of the last line of the current text field.\n;PAGE UP \n:Moves the cursor up the same number of lines as is displayed in the textarea.\n;PAGE DOWN \n:Moves the cursor down the same number of lines as is displayed in the textarea.\n;UP ARROW \n:Move the cursor up one line to the current horizontal cursor position. If the current horizontal position doesn’t exist, the cursor will move to the end of the line.\n;DOWN ARROW \n:Move the cursor down one line to the current horizontal cursor position. If the current horizontal position doesn’t exist, the cursor will move to the end of the line.\n;LEFT ARROW\n:Moves the cursor one character to the left.\n;RIGHT ARROW \n:Moves the cursor one character to the right.\n;CTRL RIGHT ARROW \n:Moves the cursor one word to the right, placing the cursor before the first letter of the next word.\n;CTRL LEFT ARROW \n:Moves the cursor one word to the left, placing the cursor before the first letter of the previous word.\n\n//Selecting Text//\n;CTRL A \n:Selects everything in a text area.\n;SHIFT HOME \n:Selects all text from the cursor to the beginning of the current line.\n;SHIFT END \n:Selects all text from the cursor to the end of the current line.\n;SHIFT CTRL HOME \n:Selects all text from the cursor the very beginning of the current text field.\n;SHIFT CTRL END \n:Selects all text from the cursor to the very end of the last line of the current text field.\n;SHIFT PAGE UP \n:Selects all text from the cursor up the same number of lines as is displayed in the textarea.\n;SHIFT PAGE DOWN \n:Selects all text from the cursor down the same number of lines as is displayed in the textarea.\n;SHIFT UP ARROW - \n:Selects all text from the cursor up one line to the current horizontal cursor position. If the current horizontal position doesn’t exist on that line, the cursor will selects all text from the end of the line.\n;SHIFT DOWN ARROW \n:Selects all text from the cursor down one line to the current horizontal cursor position. If the current horizontal position doesn’t exist on that line, the cursor will Selects all text to the end of the line.\n;SHIFT LEFT ARROW \n:Selects one character to the left of the cursor.\n;SHIFT RIGHT ARROW \n:Selects one character to the right of the cursor.\n;SHIFT CTRL RIGHT ARROW \n:Selects all characters from the cursor to the first letter of the next word.\n;SHIFT CTRL LEFT ARROW \n:Selects all characters from the cursor to the first letter of the previous word.\n\n
His a fool.
/***\n|''Name:''|LegacyStrikeThroughPlugin|\n|''Description:''|Support for legacy (pre 2.1) strike through formatting|\n|''Version:''|1.0.1|\n|''Date:''|Jul 21, 2006|\n|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|\n|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|\n|''License:''|[[BSD open source license]]|\n|''CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n\n***/\n\n//{{{\n\n// Ensure that the LegacyStrikeThrough Plugin is only installed once.\nif(!version.extensions.LegacyStrikeThroughPlugin)\n {\n version.extensions.LegacyStrikeThroughPlugin = true;\n\nconfig.formatters.push(\n{\n name: "legacyStrikeByChar",\n match: "==",\n termRegExp: /(==)/mg,\n element: "strike",\n handler: config.formatterHelpers.createElementAndWikify\n});\n\n} // end of "install only once"\n//}}}\n
[[Start Here]]\n[[Announcements]]\n[[My Journal]]\n[[Getting Help]]\n----\n[[Create a Tiddler]]\n[[Format Codes]]\n[[Save a Tiddler]]\n[[Delete a Tiddler]]\n[[Tag a Tiddler]]\n[[Insert a Link]]\n[[Insert a Picture]]\n[[Import a Tiddler]]\n[[Keystrokes]]\n\n---------------\n[[Setup Journal]]\n[[Manage the Menu]]\n\n\n-----------\nJimVentola\nTiddlySpotWelcome\nGettingStarted
The menu system is easy. In GettingStarted is a link to the tiddler called MainMenu. Edit it. Add your links. They can be WikiWords. They can be anything enclosed in double square brackets.\n
Here are the tiddlers tagged "Journal" on this site. I am using the macro described in [[Setup Journal]] to generate the list. Edit this tiddler to see how easy it is.\n\n<<tagging Journal>>
>You save a tiddler by clicking on //done// in the hidden menu above it. But the save is not permanent until you upload to the web and/or download to your disk.\n\n>>On the right, click on //save to the web// and watch the title bar for a report that the save has been completed -- wait for the second message, announcing completion. It may take a few moments; the whole site is being saved. \n\n>>>You should also frequently //download// to your hard drive for security. Save to the web and then download.
Use //new journal// from the righthand menu and you will get a dated tiddler. Use these for your blog entries. Tag with //Journal//. \n\nYou can make a tiddler called "My Journal" with this code: <nowiki> <<tagging Journal>> </nowiki> to display a list of links to all the entries, arranged by date. The angle brackets introduce a macro, in this case one called //tagging//. Here, we invoke it with //Journal// but we could use it to show everything taggged //Shakespeare.// Can you see how?\n\nA nice thing to do is to add the //My Journal// tiddler to the MainMenu. So your reader would just click on that to get a list of all the journal entries.\n\n----\n\nIf you think it is tedious to enter the //Journal// tag each time you want to blog, read on.\n\nIt is quite easy to automatically get the "Journal" tag with every freshly created journal tiddler:\n\nIn the SideBarOptions change the entry\n\n <nowiki> <<newJournal 'DD MMM YYYY'>> </nowiki>\n\nto\n\n <nowiki> <<newJournal 'DD MMM YYYY' Journal>> </nowiki>\n\nIn other words, insert the word "Journal" right after the YYYY just after the single quote mark.\n\nYou'll find the SideBarOptions tiddler in "More>Shadowed" at the right side. Remember, you have to edit it to change it. Save your work.\n \n
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'Journal>><<saveChanges>><<upload http://tidhelp.tiddlyspot.com/store.cgi index.html . . tidhelp>><html><a href='http://tidhelp.tiddlyspot.com/download' class='button'>download</a></html><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
a primer for tiddlywiki
Tid-Help
Welcome to Tid-Help. The purpose here is briefly to help you with your own wiki. I'm assuming you have created one at TiddlySpot and are ready to get started.\n\nIf you use a tabbed browser, you can keep this file open in a tab for quick reference while you work on your own site. \n\nTo start, you just need to be able to [[Create a Tiddler]] and [[Tag a Tiddler]] and [[Save a Tiddler]]. \n\n>Browsers don't remember. Be sure to click //done// before navigating to another web page. \n>>You must also //save to the web// (on the right, upper menu).\n>>>You should also download your file to your hard drive periodically for backup. \n\nTiddlySpot is an online TiddlyWiki. All of it or parts can be made private. But for now, your TS site is open to the public. \n\n
Tags are just labels that help you group tiddlers for viewing. For example, if you had several tiddlers tagged //Socrates// you could show your reader just those pages by putting into a tiddler the macro <nowiki> <<tagging Socrates>> </nowiki> (note the angle brackets).\n\nWe use tags to create a journal. See [[Setup Journal]] for details.\n\nIn edit mode, you will find the line where you can add the tags (separated spaces) just below the main (body) edit window. Tiddler = Title, Body, Tag.
This site. Free and good. They MAY add Google Ads some day, but for now it is nice and clean. TiddlyWiki hosting for free. And clean. Sweet.
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.\n\n@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://tidhelp.tiddlyspot.com/controlpanel]] (your control panel username is //tidhelp//).\n<<tiddler tiddlyspotControls>>\n@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ 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// @@ 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; //Help!// @@ Find 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. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].\n\n@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions.
Simon Rusden's brilliant implementation of a [[Wiki]] in a single file, using javascript and html.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 21/1/2007 0:26:3 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/1/2007 0:31:36 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/1/2007 0:35:48 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/1/2007 1:8:40 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/1/2007 1:16:25 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/1/2007 1:18:49 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/1/2007 1:20:5 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/1/2007 1:27:15 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/1/2007 18:7:37 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/1/2007 18:26:45 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/1/2007 18:29:20 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/1/2007 18:34:40 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/1/2007 18:36:9 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/1/2007 18:38:37 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 22/1/2007 18:38:46 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/1/2007 20:28:51 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/1/2007 22:27:20 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/#%5B%5BDelete%20a%20Tiddler%5D%5D]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/1/2007 22:34:34 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/#%5B%5BStart%20Here%5D%5D]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/1/2007 22:48:29 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/#Keystrokes]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/1/2007 23:25:59 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/#Keystrokes]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/1/2007 23:45:30 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/#Keystrokes]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/1/2007 1:6:55 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/1/2007 20:36:4 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/1/2007 13:25:47 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/1/2007 13:26:39 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/1/2007 11:45:28 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/#%5B%5BDelete%20a%20Tiddler%5D%5D]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/2/2007 11:36:43 | JimVentola | [[/|http://tidhelp.tiddlyspot.com/]] | [[store.cgi|http://tidhelp.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***\n|''Name:''|UploadPlugin|\n|''Description:''|Save to web a TiddlyWiki|\n|''Version:''|3.4.4|\n|''Date:''|Sep 30, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|\n|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info)|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''~CoreVersion:''|2.0.0|\n|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|\n|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|\n|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 4, revision: 4, \n date: new Date(2006,8,30),\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',\n author: 'BidiX (BidiX (at) bidix (dot) info',\n license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',\n coreVersion: '2.0.0',\n browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'\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: 1}, \n date: new Date(2006,8,19)\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: 3, date: new Date(2006,8,30),\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 {\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 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.className = "txtOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\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.className = "pasOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\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 c.className = "chkOptionInput "+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 c.className = "chkOptionInput "+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 backupFileStored: "Previous file backuped in %0",\n crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileLocked: "Files is locked: You are not allowed to Upload",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n passwordEmpty: "Unable to upload, your password is empty",\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.toDirUrl(storeUrl, uploadDir, username)]);\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.toRootUrl = function (storeUrl, username)\n{\n return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));\n}\nconfig.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)\n{\n var root = this.toRootUrl(storeUrl, username);\n if (uploadDir && uploadDir != '.')\n root = root + '/' + uploadDir;\n return root;\n}\nconfig.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)\n{\n return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;\n}\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 (!password || password === '') {\n alert(config.macros.upload.messages.passwordEmpty);\n return;\n }\n if (storeUrl === '') {\n storeUrl = 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 // Check that file is not locked\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {\n alert(config.macros.upload.messages.fileLocked);\n return;\n }\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 var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);\n displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);\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 var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [toFileUrl]), toFileUrl);\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\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n\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 var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n if (responseText.indexOf("destfile:") > 0) {\n var destfile = responseText.substring(responseText.indexOf("destfile:")+9, \n responseText.indexOf("\sn", responseText.indexOf("destfile:")));\n toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;\n }\n else {\n toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [toFileUrl]), toFileUrl);\n if (backupDir && responseText.indexOf("backupfile:") > 0) {\n var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11, \n responseText.indexOf("\sn", responseText.indexOf("backupfile:")));\n toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;\n displayMessage(config.macros.upload.messages.backupFileStored.format(\n [toBackupUrl]), toBackupUrl);\n }\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n // erase local lock\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n BidiX.GroupAuthoring.lock.eraseLock();\n // change mtime with new mtime after upload\n var mtime = responseText.substr(responseText.indexOf("mtime:")+6);\n BidiX.GroupAuthoring.lock.mtime = mtime;\n }\n \n \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 // add lock attributes to sheader\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n var l = BidiX.GroupAuthoring.lock.myLock;\n sheader += ";lockuser=" + l.user\n + ";mtime=" + l.mtime\n + ";locktime=" + l.locktime;\n }\n sheader += ";;\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 //strailer = "--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n try {\n request.open("POST", storeUrl, true); \n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\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 + "\snStatus: "+request.status.statusText);\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 try {\n request.open("GET", document.location.toString(), true);\n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n \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()]) + "\snStatus: "+request.status.statusText);\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','');\nsetStylesheet(\n ".pasOptionInput {width: 11em;}\sn"+\n ".txtOptionInput.txtUploadStoreUrl {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadFilename {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadDir {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadBackupDir {width: 25em;}\sn"+\n "",\n "UploadOptionsStyles");\nconfig.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\sn"; \nconfig.options.chkAutoSave = false; saveOptionCookie('chkAutoSave');\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////===\n
A document that can be written to within a browser. Has many uses, especially for collaborative writing projects. The [[Wikipedia|http://http://en.wikipedia.org/wiki/Main_Page]] is probably the most famous.
A wikiword is a word with two capital letters. JimVentola and MainMenu are wikiwords. Put a tilde (~) in front of one if you want it to behave like a normal word rather than a link.\n\nSome refer to this as CamelCase, a cousin of upper case and lower case typesetting.\n\nIf you find CamelCase ugly, just surround words with double square brackets as in [[Insert a Link]].
Type the text for 'New Tiddler'
| tiddlyspot password:|<<option pasUploadPassword>>|\n| site management:|<<upload http://tidhelp.tiddlyspot.com/store.cgi index.html . . tidhelp>>//(requires tiddlyspot password)//<<br>>[[control panel|http://tidhelp.tiddlyspot.com/controlpanel]], [[download (go offline)|http://tidhelp.tiddlyspot.com/download]]|\n| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|