ARtemisia is a large, diverse genus of plants with between 200-400 species belonging to the daisy family ASteraceae. It comprises hardy herbs and shrubs known for their volatile oils. They grow in temperate climates of the Northern Hemisphere and Southern Hemisphere, usually in dry or semi-dry habitats. The fern-like leaves of many species are covered with white hairs.\n\nCommon names used for several species include wormwood, mugwort, sagebrush and sagewort, while a few species have unique names, notably Tarragon A. dracunculus and Southernwood A. abrotanum. Occasionally some of the species are called sages, causing confusion with the Salvia sages in the family Lamiaceae.\n\nArtemisia species are used as food plants by the larvae of a number of LEpidoptera species.\n\nsources:\nhttp://en.wikipedia.org/wiki/Artemisia_%28plant%29
Artemisia californica, also known as California sagebrush, of the ASteraceae, is a shrub that grows in coastal sage scrub, coastal strand, chaparral, and dry foothill communities, from sea level to 800 m. It is a native to California and Baja California.\n\nAlthough Artemisia californica is not a true sage, it can be used in cooking as a spice and can also be made into tea. It has also been used in the past for a treatment to fight coughs and colds.\nsource: http://en.wikipedia.org/wiki/Artemisia_californica\n\n\nTea was used for fever, (you'd have to have a fever to drink it) smoke of burning brush used for removing skunk odor (although I'm not sure which is worse).\nsource: http://www.laspilitas.com/plants/93.htm\n\n\nArtemisia californica Less. California Sagebrush; Asteraceae\nCostanoan Drug \n(Analgesic) Poultice of leaves applied to the tooth for pain.\n(Antirheumatic (External)) Decoction of plant used as a bath for rheumatism.\n(Cold Remedy) Decoction of plant used as a bath for colds.\n(Cough Medicine) Decoction of plant used as a bath for coughs.\n(Dermatological Aid) Poultice of leaves applied to wounds.\n(Respiratory Aid) Poultice of plant applied to the back or decoction of plant taken for asthma.\n(Toothache Remedy) Poultice of leaves applied to the tooth for pain.\nBocek, Barbara R. 1984 Ethnobotany of Costanoan Indians, California, Based on Collections by John P. Harrington. Economic Botany 38(2):240-255 (p. 25)\nsource: http://herb.umd.umich.edu/herb/search.pl\n\n
config.options.chkHttpReadOnly = false;\n
American archaeologist Barbara Bocek was at Stanford University in the early 1990s when she wrote her two seminal investigations of bioturbation of archaeological sites by prairie pocket gophers. She took a lead role in the repatriation of Native American remains and grave goods at Stanford, and had an active role for Amnesty International in Guatemala. She currently works in the Quileute Historic Preservation Office in Washington State.\nsource: http://archaeology.about.com/od/archaeologistsac/g/bocekb.htm\n\nMs. Barbara Bocek from the Quileute Historic Preservation Office sent us a picture of the\nflag along with a description to which Mr. Allen Black added important details. According to them, the background of the flag is light gold or beige. The name "Quileute Tribe" in heavy black cursive script stretches on a black-borderedred banner across the top of the central design, which is contained in a semi-circle with the light-gold (or beige) sky above and the blue ocean below.\nMs. Bocek describes the symbolism of the flag as follows:\n "Everything shown on the flag is important to the identity of Quileute people. Our\n land borders the ocean and so most of our foods came from it. The ocean was our provider not only for food, but for clothing and tools andspiritual cleansing as well. The whales are on the flag because of the five men's societies one was dedicated to the whale, and this whalingsociety was the strongest of the five. The canoe was our means of travel and hunting for whale and seal, it was the way of life for the Quileutein the past and brings us together as a people in the present. The canoe says "Since 1889" because that's the date of our Federalrecognition as a Tribe. The island are called in Quileute A-KA-Lat, or James Island and Little James Island. The islands are a central focus ofthe village, lying just offshore of the ocean at the mouth of the Quileute River. A-KA-Lat has one of our oldest village sites. The island was used a burial site for the chiefs and as fortress. There are often eagles flying over A-KA-Lat, and they nest there as well."\nsource: http://hometown.aol.com/donh523/navapage/quill.htm\n\n\nother found articles: \nhttp://www.workers.org/ww/2001/guatem1101.php\nhttp://topics.nytimes.com/top/reference/timestopics/organizations/a/amnesty_international/index.html?query=BOCEK,%20BARBARA&field=per&match=exact\n
a quick listing of a few plants native to central coast, california. this region is usually classified as CoastalSageScrub.\n\nCalifornia Sagebrush (ARtemisia - ARtemisiaCalifornica)\nBlack Sage (SAlvia - SAlviaMellifera)\nWhite Sage (SAlvia - SAlviaApiana)\nCalifornia Buckwheat (ERiogonum - ERiogonumFasciculatum)\nCoast Brittle-bush (ENcelia - ENceliaCalifornica)\nGolden Yarrow (ERiophyllum - ERiophyllumConfertifolium)\nToyon (HEteromeles - HEteromelesArbutifolia)\nLemonade Berry (RHus - RHusIntegrifolia)\n\nsources:\nhttp://en.wikipedia.org/wiki/California_native_plants\nhttp://en.wikipedia.org/wiki/Coastal_Sage_Scrub
Coastal sage scrub is a low scrubland plant community found in the California chaparral and woodlands ecoregion of California and northern Baja California. It is characterized by low-growing aromatic, and drought-deciduous shrubs adapted to the semi-arid Mediterranean climate of the coastal lowlands. The community is sometimes called Soft Chaparral due to the predominance of soft, drought-deciduous leaves in contrast to the hard, waxy-cuticled leaves on sclerophyllous plants of California's chaparral communities.\n\nhttp://en.wikipedia.org/wiki/Coastal_Sage_Scrub
tribe sites: \nhttp://www.esselennation.com/\nhttp://crc.nativeweb.org/\nhttp://www.indiancanyon.org/\nhttp://www.accessgenealogy.com/native/tribes/costanoan/costanoanindiantribe.htm\nhttp://www.ontalink.com/native_americans/costanoan.html\nhttp://www.ipl.org/div/natam/bin/browse.pl/t149\nhttp://members.aol.com/Inammec/Costpaper.html\n\nfrom wikipedia: http://en.wikipedia.org/wiki/Ohlone
NativeHerbs
Eriogonum is the botanical name for a genus of flowering plants, in the family Polygonaceae. The genus is found in North America and is known as Wild Buckwheat. This is a highly species-rich genus, and indications are that active speciation is continuing. It includes some common wildflowers such as the California Buckwheat (Eriogonum fasciculatum)\n\nIt came into the news in 2005 when the Mount Diablo buckwheat (Eriogonum truncatum, believed to be extinct) was rediscovered.\n\nEriogonum species are used as food plants by the larvae of some LEpidoptera species.\nsource: http://en.wikipedia.org/wiki/Eriogonum
\nEriogonum fasciculatum Benth.\nEastern Mojave Buckwheat; Polygonaceae\nCostanoan Drug (Urinary Aid)\nDecoction of plant used for urinary problems.\nBOcek, Barbara R. 1984 Ethnobotany of CostaNoan Indians, California, Based on Collections by John P. Harrington. Economic Botany 38(2):240-255 (p. 11)\nsource: http://herb.umd.umich.edu/herb/search.pl\n
\n\nNative American EthnoBotany database: http://herb.umd.umich.edu/\nA Database of Foods, Drugs, Dyes and Fibers of Native American Peoples, Derived from Plants.
Butterflies and moths make up the Lepidoptera. The name means "scale wing," and lepidopteran wings are covered with microscopic scales, which are iridescent and brightly colored in the case of this California butterfly, Lycaena helloides. The scales are visible as the "fuzz" along the edges of the wing. Primitive lepidopterans retain functional chewing mouthparts as adults, but more derived ones have partially or completely lost the mandibles and developed a long proboscis for drinking nectar from flowers.\n\nThe first definite lepidopteran fossils appear in the Lower Cretaceous, though lepidopterans are not common as fossils. Their evolution has been closely tied with the evolution of flowering plants, which also appeared and began to diversify in the Cretaceous. Among the butterflies, both adult and caterpillar stages feed on flowering plants, and the adults are important pollinators of several flowering plant families. \nsource: http://www.ucmp.berkeley.edu/arthropoda/uniramia/lepidoptera.html
/***\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
CentralCoastCalifornia
This is a tiddlyspot wiki for the ongoing group research of native herbs and their known uses. \n\nMany plants that are now considered undesirable weeds were once cherished for their medicinal qualities as herbs. Herbs, and weeds, are often plants that can germinate and survive in poor soil conditions, or in areas of disturbance. Often they have a high mineral content, as they are capable of bringing trace minerals up from deeper soils with long roots.\n\nIt is my hope that this wiki can be used to catalogue native herbs and effectively link to their characteristics and uses. The password for this tiddlyspot is the same as the name. nativeherbs, nativeherbs.\n\nCentralCoastCalifornia\nEthnoBotany\n\nIn Aptos, California (Santa Cruz Co) is a wonderful native plant nursery called Native Revival. They have the most helpful book there for purchase, that they have put together which I reference all the time...and it is free with a purchase of $100 or more. In it, they list hundreds of native plants (which grow wild and pop up in many a garden and therefore may be labeled as weeds...we call them pioneer plants). Along with cultural preferences and physical appearances it also lists Wildlife Value and Native American uses, including basic medicinal uses. So if you are in the neighborhood, look them up. - christine from http://lists.ibiblio.org/mailman/listinfo/permaculture
Salvia is a genus in the mint family, Lamiaceae. It is one of three genera commonly referred to as Sage. When used without modifiers, sage generally refers to common sage (Salvia officinalis); however, it can be used with modifiers to refer to any member of the genus. This genus includes shrubs, herbaceous perennials, and annuals. Different species of sage are grown as herbs and as ornamental plants. The ornamental species are commonly referred to by their scientific name Salvia.\nsource: http://en.wikipedia.org/wiki/Salvia
used for SmudgeSticks.\n\nalso:\n had several uses for this plant: seeds were ground into a flour and used for mush; leaves were used for flavoring in cooking; leaves were also eaten, smoked or used in a sweathouse as a remedy for colds; seeds were dropped into the eye and permitted to roll around under the eyelids in order to cleanse the eyes; and leaves were crushed and mixed with water to create a hair shampoo, dye and straightener.\n\nWhite sage is also used medicinally. It can be made into a tea, which decreases sweating, salivation, and mucous secretions in the sinuses, throat, and lungs. Cold tea can be a good stomach tonic, while a lukewarm tea is good for treating sore throats. The leaves can also be used as a uterine hemostatic tea for heavy menstruation; however, since it can also decrease lactation, nursing mothers are advised not to use it.\n\nWhite sage is considered sacred by many Native Americans since it is used to make smudge wands, a type of incense. White sage is believed to cleanse a space of any evil spirits that may be present. This power is said to be released from the plant by the burning of the leaves, which are typically bundled into a wand or stick. Today many Native American tribes still use the stems and leaves for smudging as part of purification ceremonies.\nsource: http://en.wikipedia.org/wiki/White_sage#Ethnobotany
Salvia mellifera Greene\nBlack Sage; Lamiaceae\nCostanoan Drug \n(Analgesic) Green leaves chewed for gas pains.\n(Analgesic) Poultice of heated leaves applied to the ear for earache pain.\n(Carminative) Green leaves chewed for gas pains.\n(Cough Medicine) Decoction of plant taken for coughs.\n(Ear Medicine) Poultice of heated leaves applied to the ear for earache pain.\n(Heart Medicine) Infusion of green leaves taken for heart disorders.\n(Orthopedic Aid) Decoction of plant used as a bath for paralysis.\n(Throat Aid) Poultice of heated leaves applied to the neck for sore throats.\nBOcek, Barbara R. 1984 Ethnobotany of Costanoan Indians, California, Based on Collections by John P. Harrington. Economic Botany 38(2):240-255 (p. 16)\nsource: http://herb.umd.umich.edu/herb/search.pl
NativeHerbs
Using a smudging tool is part of many Native American traditions. The burning of herbs for emotional, psychic, and spiritual purification is also common practice among many religious, healing, and spiritual groups. The ritual of smudging can be defined as "spiritual house cleaning." In theory, the smoke attaches itself to negative energy and as the smoke clears it takes the negative energy with it, releasing it into another space where it will be regenerated into positive energy.\n\nCommon Herbs Used in Smudge Sticks\n\n * Sage / White Sage\n * Cedar / Pine\n * Lavender\n * Sweet Grass\n * Mugwort\n * Copal\n\nsource: http://healing.about.com/cs/native/a/smudging.htm
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 12/12/2006 9:3:22 | YourName | [[/|http://nativeherbs.tiddlyspot.com/]] | [[store.cgi|http://nativeherbs.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 12/12/2006 9:47:33 | YourName | [[/|http://nativeherbs.tiddlyspot.com/]] | [[store.cgi|http://nativeherbs.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 12/12/2006 9:48:5 | YourName | [[/|http://nativeherbs.tiddlyspot.com/]] | [[store.cgi|http://nativeherbs.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/12/2006 10:17:56 | YourName | [[/|http://nativeherbs.tiddlyspot.com/]] | [[store.cgi|http://nativeherbs.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/12/2006 21:22:20 | YourName | [[/|http://nativeherbs.tiddlyspot.com/]] | [[store.cgi|http://nativeherbs.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/12/2006 9:29:59 | YourName | [[/|http://nativeherbs.tiddlyspot.com/]] | [[store.cgi|http://nativeherbs.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
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?// &nbsp;&nbsp;@@ 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://nativeherbs.tiddlyspot.com/controlpanel]] (your control panel username is //nativeherbs//).\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; //Help!// &nbsp;&nbsp;@@ 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 :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions.
| tiddlyspot password:|<<option pasUploadPassword>>|\n| site management:|<<upload http://nativeherbs.tiddlyspot.com/store.cgi index.html . . nativeherbs>>//(requires tiddlyspot password)//<<br>>[[control panel|http://nativeherbs.tiddlyspot.com/controlpanel]], [[download (go offline)|http://nativeherbs.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]]|