//Macro: allTagsExcept\n//Author: Clint Checketts\n//Version: 1.0 Sept 8, 2005\n\nversion.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};\nconfig.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};\n\n//usage: < < allTagsExcept systemConfig systemTiddlers > > This will show all tags but those listed (e.g. systemConfig and systemTiddlers\n\nconfig.macros.allTagsExcept.handler = function(place,macroName,params)\n{\n var tags = store.getTags();\n var theTagList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length == 0)\n createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++) {\n var includeTag = true;\n for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;\n if (includeTag){\n var theListItem =createTiddlyElement(theTagList,"li",null,null,null);\n var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);\n theTag.setAttribute("tag",tags[t][0]);\n }\n }\n}
Clint is a student at [[BYU-Idaho|http://www.byui.edu]]. His homepage regarding TiddlyWiki and other topics can be found at http://checkettsweb.com.\n\nComments or questions can be posted on the [[Google Groups|http://tiddlywiki.com/#Community]] or to his email: checketts [at] gmail [dot] com.
[[TiddlyWiki-SE]]
!Download New\nYou can download this complete [[TiddlyWiki-SE]] page from [[here|http://checkettsweb.com/tw/tiddlywikise.htm]]. Right-click and select 'Save Link As...' \n\n!Insert into current TW\nTo use TWSE in a normal TiddlyWiki click edit and copy the contents of the [[TiddlyWiki-SE Package]] and [[StyleSheet]] tiddlers. Create tiddlers in your TiddlyWiki with the same names and paste the contents over. Make sure that the [[TiddlyWiki-SE Package]] has the tag of 'systemConfig'. Refresh and everything should work.
// //''Name:'' FAQ List\n// //''Version:'' <<getversion faqlist>> (<<getversiondate faqlist "DD MMM YYYY">>)\n// //''Author:'' AlanHecht\n// //''Type:'' [[Macro|Macros]]\n\n// //''Description:'' FAQ List lets you compile a list of Frequently Asked Questions and present them in a cascading style for the viewer. Each question is turned into a link that will toggle the view of the answer text. The list can be compiled either from all tiddlers containing a certain tag or from a single tiddler that contains all the needed questions and answers.\n\n// //''Syntax:'' << {{{ faqlist mode source sortBy hrSeparator }}} >>\n// // ''faqlist:'' the macro call (required)\n// // ''mode:'' either "byTag" or "byTitle" (required)\n// // ''source:'' the associated tag or tiddler title (required)\n// // ''sortBy:'' if byTag, sort can be "title," "modifier," "modified." If byTitle, sort can be "question" and will reorder the questions in alphabetical order. (this parameter is optional; use "null" if you don't want a sort order, but want to use "hr" as the last paramter)\n// // ''hrSeparator:'' if "hr" is included at the end of the call string, each question/answer set will be separated by a horizontal rule.\n// //Examples: (edit these two tiddlers to see the syntax used for each)\n\n// //''Directions:'' <<tiddler StartupBehaviorDirections>> <<tiddler MacroDirections>>\n\n// //''Notes:'' If you choose to use byTitle mode where the entire set of questions/answers comes from a single tiddler, the syntax for the tiddler content is as follows:\n// // • Each question must be a single line (i.e. no hard returns) but can wrap as needed\n// // • The answer to a question begins on the next line after the question and can be as long as needed. It can also include hard returns as part of the answer text, but it cannot include empty lines (i.e. an empty line is the result of pressing enter twice).\n// // • Each question/answer set must be seperated by two hard returns (i.e. must have a single, blank line between them.\n// // Refer to [ [FAQ Tiddler Sample] ] for an example.\n\n// //''Known Issues:'' If a user clicks too quickly to toggle a FAQ entry on/off, they will go into tiddler edit mode. This should be corrected in the future by allowing web-hosted versions of the faq to disable double-clicking.\n\n// //''Revision History:''\n// // v0.1.0 (01 August 2005): initial release\n// // v0.1.1 (04 August 2005): Fixed an endless loop bug (thanks to Kevin Kleinfelter).\n\n// //''Code section:''\nversion.extensions.faqlist = {major: 0, minor: 1, revision: 1, date: new Date("Aug 4, 2005")};\nconfig.macros.faqlist = {\n bulletCollapse: ">",\n bulletExpand: "∨",\n expandButton: {title: "Expand All", tooltip: "Open all items for reading"},\n collapseButton: {title: "Collapse All", tooltip: "Close all items"}\n};\nconfig.macros.faqlist.handler = function(place,macroName,params)\n{\n lingo = config.macros.faqlist;\n var mode = params[0].toLowerCase();\n var list = [];\n switch(mode)\n {\n case "bytag":\n var tagged = store.getTaggedTiddlers(params[1], params[2]);\n for(t=0; t<tagged.length; t++)\n {\n var title = tagged[t].title;\n list[t] = [title,store.getTiddlerText(title)];\n }\n var subTitle = store.tiddlers[title].getSubtitle();\n break;\n case "bytitle":\n var faqText = store.getTiddlerText(params[1]);\n var faqItems = faqText.split("\sn\sn");\n if(params[2] == "question")\n faqItems.sort();\n for(t=0; t<faqItems.length; t++)\n {\n list[t] = [faqItems[t].substring(0,faqItems[t].indexOf("\sn")),faqItems[t].substring(faqItems[t].indexOf("\sn")+1)];\n }\n var subTitle = null;\n break;\n }\n \n var faqHeading = place.appendChild(document.createElement("span"));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.expandButton.title,lingo.expandButton.tooltip,faqExpandAll));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.collapseButton.title,lingo.collapseButton.tooltip,faqCollapseAll));\n faqHeading.appendChild(document.createElement("p"));\n var faqBody = place.appendChild(document.createElement("span"));\n for(var t=0; t<list.length; t++)\n {\n var title = list[t][0];\n\n var content = "<<<\sn" + list[t][1] + "\sn<<<";\n var theClass = "tiddlyLinkExisting tiddlyLink";\n var itemHeading = faqBody.appendChild(document.createElement("span"));\n itemHeading.appendChild(document.createTextNode(config.macros.faqlist.bulletCollapse + " "));\n createTiddlyButton(itemHeading,title,subTitle,faqToggleThis,theClass);\n var itemBody = faqBody.appendChild(document.createElement("span"));\n itemBody.style.display = "none";\n itemBody.className = "itemBody";\n wikify(content,itemBody,null,null);\n faqBody.appendChild(itemBody);\n faqBody.appendChild(document.createElement("p"));\n if(params[3] == "hr")\n faqBody.appendChild(document.createElement("hr"));\n }\n}\n\nfunction faqToggleThis(e)\n{\n var content = this.parentNode.nextSibling;\n var shown = content.style.display;\n if(shown == "none")\n {\n content.style.display = "inline";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n else\n {\n content.style.display = "none";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n}\n\nfunction faqExpandAll()\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n item = this.parentNode.nextSibling.childNodes[t];\n if(item.className == "itemBody")\n {\n item.style.display = "inline";\n item.previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n }\n}\n\nfunction faqCollapseAll()\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n item = this.parentNode.nextSibling.childNodes[t];\n if(item.className == "itemBody")\n {\n item.style.display = "none";\n item.previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n }\n}\n
This is an IS410 note
// //''Name:'' Calendar plugin\n// //''Version:'' 0.1.0\n// //''Author:'' SteveRumsby\n\n// //''Syntax:''\n// //<< {{{listTags tag //sort// //prefix//}}} >>\n\n// //''Description:''\n// //Generate a list of tiddlers tagged with the given tag.\n// //If both //sort// and //prefix// are omitted the list is sorted in increasing order of title, with one tiddler per line.\n// //If //sort// is specified the list is sorted in increasing order of the given tiddler property. Possible properties are: title. modified, modifier.\n// //If //prefix// is specified the given string is inserted before the tiddler title. The insertion happens before the text is wikified. This can be used to generated bulleted or numbered lists.\n\n// //''Examples:''\n// //<< {{{listTags usage}}} >> - generate a plain list of all tiddlers tagged with tag //usage//, sorted by title\n// //<< {{{listTags usage modified}}} >> - the same list, with most recently modified tiddlers last\n// //<< {{{listTags usage title #}}} >> - generate a numbered list if tiddlers tagged with //usage//, sorted by title\n\n// //''Code section:''\nversion.extensions.listTags = {major: 0, minor: 1, revision: 0, date: new Date(2005, 6,16)};\n\nconfig.macros.listTags = {\ntext: "Hello"\n};\n\nconfig.macros.listTags.handler = function(place,macroName,params)\n{\n var tagged = store.getTaggedTiddlers(params[0], params[1]);\n var string = "";\n for(var r=0;r<tagged.length;r++)\n {\n if(params[2]) string = string + params[2] + " ";\n string = string + "[[" + tagged[r].title + "]]\sn";\n }\n wikify(string, place, null, null);\n}
// // ''Plugin Name:'' ListWithTags\n// // ''Author:'' PaulPetterson\n// // ''Purpose:'' extends the TiddlyWiki list macro with support for listing\n// // tiddlers with specified tags\n// // ''Parameters:'' 1..N: tag selection criteria - \n// // //tag//, AND, OR, NOT, and/or Parentheses\n// // ''Usage:'' insert <list withTags systemConfig OR systemTiddlers> to \n// // list out all tiddlers with a systemConfig or systemTiddlers tag\n// // ''Notes:'' it must be a valid boolean expression, an invalid expression \n// // will return a macro error. Follows standard operator precedence so\n// // use parentheses to disambiguate the criteria. You can substitute \n// // the JavaScript standard symbols &&, ||, and ! for AND, OR, and NOT.\n// // ''Examples:'' <list withTags project and (urgent or important)> - \n// // will list all tiddlers with a project tag and either \n// // an urgent or important tag.\n\nconfig.macros.list.withTags = {}\nconfig.macros.list.withTags.handler = function(params)\n{\n var results = [];\n if ( !params || !params[1] )\n return config.macros.list.all.handler(params);\n \n // build us a regex of all our tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...)\n var tags = store.getTags();\n if ( tags.length == 0 ) return results ;\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n\n var regex = new RegExp( exp, "ig" );\n\n // build us string such that an expression that looks like this:\n // tag1 AND tag2 OR NOT tag3\n // turns into :\n // /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n var cond = params.slice(1).join(" ");\n cond = cond.replace( regex, "/$1/.test( tiddlerTags )" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ssnot\ss/ig, " ! " ) ;\n//displayMessage( "condition='" + cond + "'" );\n // look through the tiddlers, make a string of the tags in the tiddler\n // and eval the 'cond' string we made against that string - \n // if it's TRUE then the tiddler qualifies!\n \n for( var t in store.tiddlers ) {\n var tiddler = store.tiddlers[t];\n var tiddlerTags = tiddler.tags?tiddler.tags.join():"" ;\n try {\n if ( eval( cond ) ) results.push( tiddler );\n } catch( e ) {\n//displayMessage( "Exception = '" + e + "'" ) ;\n }\n }\n results.sort(function (a,b) {\n if(a["title"] == b["title"]) return(0); \n else return (a["title"] < b["title"]) ? -1 : +1; \n });\n return results;\n}
*[[TiddlyWiki-SE]]\n*[[Download Software]]\n*[[Clint Checketts]]\n*[[TWSE ToDo]]\n*<<newTiddler>>
the student's best friend
TiddlyWiki-SE (Student Edition)
http://www.tiddlywiki.com/
.viewer pre, .viewer code {\n color:#040;\n font-family:'lucida console',monospace;\n border-style:none;\n line-height:1.2em;\n}\n\n\n.viewer pre {\n padding:1em;\n font-size:90%;\n background-color:#f8f8f8;\n}\n\n\n/* this sort of makes Shorten Tab Links unnecessary */\n/* div#sidebar { overflow:hidden;white-space: nowrap; } */\n\ndiv#mainmenu hr {margin:0px;padding:0px;padding-top:10px;\n border-style:none;\n border-width:1px;\n border-color:#ccc;\n border-bottom-style:solid;\n}\n.viewer pre { font-size:75%; }\n/* colour scheme begin */ \ndiv#titleLine { background:#369;}\ndiv#sidebarOptions { background:#696; }\ndiv#sidebarOptions .button { color:#eef;}\ndiv#sidebarOptions .button:hover { color:#fff; background:#252;}\ndiv#mainmenu .tiddlyLink { font-weight:bold;color:#369; }\ndiv#mainmenu .tiddlyLink:hover { background:#369;color:white; }\ndiv#mainmenu .button { font-weight:bold; color:#363; }\ndiv#mainmenu .button:hover { background:#363;color:white; }\ndiv.viewer a.tiddlyLink { color:#369; }\ndiv.viewer a.tiddlyLink:hover { background:#acd; }\ndiv.footer a.tiddlyLink { color:#369; }\ndiv.footer a.tiddlyLink:hover { background:#acd; }\n.editorFooter a.button, .tiddler .button { color: #369; background:#eee; }\n.editorFooter a.button:hover, .tiddler .button:hover { color: #fff; background: #369; }\n.editorFooter a.button:active, .tiddler .button:active { color: #fff; background: #369; }\n.editorFooter a:link { color: #369; } \n#popup {color:#eee; background:#369;}\n#popup a {color:#fff; background:#369; }\n#popup a:hover {color:black; background:#eee;}\ndiv.tabset {background:#696;}\na.tab {background:#369;}\n#mainMenu .externalLink { color:#252; }\n#mainMenu .externalLink:hover { color:white;background:#696; }\n.tiddler .externalLink { color:#252; }\n.tiddler .externalLink:visited { color:#252; }\n.tiddler .externalLink:hover { color:#252;background:#ada; }\n.viewer a:link { color: #252; } \n.viewer a:visited { color: #252; } \n.viewer a:hover { color:#252; background:#ada; }\n#titleLine a {color:white;}\na.tabSelected {background:#369;font-weight:bold;}\n#sidebarTabs {color: white;background-color: #69b;}\n#sidebarTabs .tabSelected {color: white;background-color: #369;}\n#sidebarTabs .tabUnselected {color: white;background-color: #369;}\n#sidebarTabs .tabContents {background-color: #69c;}\n#sidebarTabs .txtMoreTab .tabSelected {background-color: #7ad;}\n#sidebarTabs .txtMoreTab .tabUnselected {background-color: #369;}\n#sidebarTabs .txtMoreTab .tabContents {background-color: #7ad;}\n#sidebarTabs .txtMoreTab .tabset {background-color: #69b;}\n#sidebarTabs .tabContents .tiddlyLink {color: #135;}\n#sidebarTabs .tabContents .tiddlyLink:hover {background-color: #eee;color: black;}\n#sidebarTabs .tabContents .button {color: #eee;}\n#sidebarTabs .tabContents .button:hover {color: #white;background-color: #252;}\n/* colour scheme end */\n\n#displayArea {\n margin-right: 15.5em;\n margin-left: 13em;\n}\n\n// this works great in firefox but breaks something with ie. help??\n// .toolbar { float:right; }\n\n\n.viewer h1,\n.viewer h2,\n.viewer h3,\n.viewer h4,\n.viewer h5 { font-family: 'Trebuchet MS' Arial sans-serif; background:#f8f8f8; }\n\n.viewer h1 { font-size:1.2em; }\n.viewer h2 { font-size:1.1em; }\n.viewer h3 { font-size:1.0em; }\n.viewer h4 { font-size:0.9em; }\n.viewer h5 { font-size:0.8em; }\n\nbody {\n background:#eee;\n}\n\ndiv.tiddler {\n background:white;\n border-top:solid #ccc 2px;\n border-left:solid #ccc 2px;\n border-bottom:solid #aaa 2px;\n border-right:solid #aaa 2px;\n margin-bottom:5px;\n padding-bottom:10px;\n}\n\n\ndiv.title {\n font-family:'Trebuchet MS' Arial sans-serif;\n font-size:150%;\n}\n\ndiv.editor input,\ndiv.editor textarea {\n background:#ffe;\n border:solid #aa9 2px;\n margin:4px;\n\n\ndiv.editor {\n font-size: 8pt;\n color: #402C74;\n font-weight: normal;\n padding: 10px 0;\n}\n\n.editor input, div.editor textarea {\n display: block;\n font: 13px/130% "Andale Mono", "Monaco", "Lucida Console", "Courier New", monospace;\n margin: 0 0 10px 0;\n border: 1px inset #333;\n padding: 2px 0;\n}\n\n.editor textarea{\n height: 500px !important;\n}\n\n}\n\n@media print {\n div.tiddler {border:none white 0px; border-top:solid #bbb 1px;}\n div.tagged {border:none white 0px;}\n #titleLine { display:none; }\n #displayArea { margin-right: 0px; margin-left: 0px; }\n .toolbar { display:none; }\n}\n\n\nblockquote b{\n font-weight: normal;\n}\n\nblockquote:hover b{\n font-weight: bold;\n}\n\n#sidebar{\n width: 20em;\n}\n\n\n\n\n\n#mainMenu{\n position: static;\n width: auto;\n text-align: left;\n}\n\n#mainMenu, #mainMenu ul{\n margin: 0;\n padding: 0;\n}\n\n#mainMenu li{\ndisplay: inline;\nmargin: 0 .5em;\n}\n\n#mainMenu br{\n display: none;\n}\n\n#mainMenu a.button,#mainMenu a.tiddlyLink{\n color:#fff;\n padding: 3px;\n}\n\n#displayArea{\n margin: 0 19em 0 1em;\n}\n\n#sidebar .tabContents a.button:hover{\n background:#69c;\n}\n\n.tiddler{\n-moz-border-radius: 10px;\n}\n\n.tab{\n-moz-border-radius-topright: 6px;\n-moz-border-radius-topleft: 6px;\n}\n\n.toolbar a.button{\n-moz-border-radius: 3px;\n}\n\n.tabUnselected{\npadding-bottom: 0;\n}\n\n#sidebarTabs .tabContents{\n width: 100%;\n}\n\n#sidebarTabs .tabSelected {\n color: white;\n background-color: #69c;\n padding: 4px 4px 2px 4px;\n cursor: default;\n}\n\n#mainMenu a{\n-moz-border-radius-bottomright: 6px;\n-moz-border-radius-bottomleft: 6px;\n}\n\n#mainMenu a.button:hover,#mainMenu a.tiddlyLink:hover{\n background: #369;\n}\n\n#messageArea{\n position: fixed;\n top: 5px;\n right: 10px;\n background:#ffe;\n border: 2px solid #aa9;\n color: #000;\n}\n\n#contentWrapper #messageArea a{\n color: #000;\n text-decoration: none;\n}\n\n#contentWrapper #messageArea a:hover{\n text-decoration: underline;\n}\n\n#titleLine{\n padding: 0 .5em;\n}\n\n#header{\n background-color: #2a537d;\n margin-bottom: 1em;\n}
!A list of items that I intend to implement\n*The tabs notes list should say 'IS410 Note Entries (2)' dynamically populating the number in the parens\n*I want to separate quizes, schedules, from notes further.\n*Any other good suggestions sent to me\n\n!Dramatic Changes\n*Change color scheme to eliminate confusion with [[MonkyPirate TiddlyWiki|http://homes.jcu.edu.au/~ccscb/mptw/]]\n*Implement [[TagglyTagging|http://homes.jcu.edu.au/~ccscb/mptw/#TagglyTaggingFAQ]].\n*Move Tab generation from array to macro so that many tabs can be generated.
IS410\nSystems Analysis\nIS420\nAdvanced Database\nIS450\nWeb Programming I\nAcct 201\nIntro to Accounting
!Using TiddlyWiki for note taking.\nInspired by a walkthrough on [[how to setup Backpack to take notes|http://pagini.typepad.com/pagini/2005/08/how_to_use_back.html]]. If you;ve read it, you may have noticed two problems: you have to have an active internet connect to take the note (along with your laptop) and it takes a long time to setup and keep organized. Here is the solution to those problems: Use this variation of TiddlyWiki. Also this one is FREE! If you need server side hosting like Backpack, this system will work with [[ZiddlyWiki|http://www.ziddlywiki.com/]] or [[ServerSideWiki|http://www.serversidewiki.com/]].\n\n[[Download Software]] has the info on how to use and install TWSE.\n\n!What is TiddlyWiki?\nTiddlyWiki is an HTML file that acts as a program. Cliff notes version: Single file, acts like a program. Any data you enter into the TiddlyWiki is saved back to the same HTML file. Think of it as a Word file that contained the entire Word program. This page is a normal TiddlyWiki with some extensions I call it TiddlyWiki-SE (or TWSE).\n\n!How will this help me take notes?\nEasy, notice the tab on the right that says classes? Click it. You will see a list of tabs, one for each class. I'll cover customizations in a bit. Each tab has a short class name (like IS410) and a long name (like Systems Analysis). There's a button (Create a note for IS410) when you click it, it brings up a new 'Tiddler' or note. Notice how it puts in a title (with date) automatically and tags along the bottom. you can add any tags you want and customize the title to your hearts content.\n\nLooking back to the sidebar and the IS410 tab, note the last item (IS410 Note Entries) under it will appear any tiddlers that are tagged as 'IS410' and 'notes.' This will give you a good summary of your notes.\n\n!How can I customize the tabs and notes?\nIn the tiddler called '[[TiddlyWikiSE Package]]' the top few lines give you customization tips and variables.\n{{{\nTiddlyWikiSE settings\n// Short class names e.g. "GE101"\nvar shortClass = new Array("IS410","IS420","IS450","Acct 201");\n// Longer class names e.g. "Intro to Education"\nvar longClass = new Array("Systems Analysis","Advanced Database","Web Programming I","Intro to Accounting");\n/* Date style DD MMM YYYY, hh:mm will create 9 September 2005, 9:15\n\n 1. DDD - day of week in full (eg, "Monday")\n 2. DD - day of month, 0DD - adds leading zero\n 3. MMM - month in full (eg, "July")\n 4. MM - month number, 0MM - adds leading zero\n 5. YYYYY - full year, YY - two digit year\n 6. hh - hours\n 7. mm - minutes\n 8. ss - seconds */\n var noteDateFormat = "0DD MMM YYYY";\n}}}\n\nThe lines {{{var shortClass}}}, {{{var longClass}}}, and {{{var noteDateFormat}}} are the current variable. You've seen the shortClass variable as it's used in the tabs and the tags, the longClass appears in the tooltips and also the sidebar tabs, and the noteDateFormat is used whenever you create a new note using the link from each tab. You can customize how the date is formated and you can include years to seconds, however you like your note.\n\n!Release Notes\n*v1.0 (Sept 12, 2005)- Now I've only been in class for a little over a week so this system will grow and change to help further. Hopefully quizzes, notes, schedules, and such will be included to this system. Initial release.\n*v1.1 (Oct 9, 2005)- I've upgraded TWSE to match TiddlyWiki version 1.2.35. This adds functionality for image linking and titles as well as various fixes for using tables.
var shortClass = new Array();\nvar longClass = new Array();\n\n\nvar twseCats = store.getTiddlerText("TWSECategories");\nvar catsArray = twseCats .split("\sn");\nfor (var i=0; i< catsArray.length; i++){\n if(i%2 == 0) {\n //alert("short"+catsArray[i]);\n shortClass.push(catsArray[i]);\n } else {\n //alert("long"+catsArray[i]);\n longClass.push(catsArray[i]);\n }\n}\n\n// //TiddlyWikiSE settings\n// Short class names e.g. "GE101"\n//var shortClass = new Array("IS410","IS420","IS450","Acct 201");\n// Longer class names e.g. "Intro to Education"\n//var longClass = new Array("Systems Analysis","Advanced Database","Web Programming I","Intro to Accounting");\n\n/* Date style ''DD MMM YYYY, hh:mm'' will create ''9 September 2005, 9:15''\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# YYYYY - full year, YY - two digit year\n# hh - hours\n# mm - minutes\n# ss - seconds */\nvar noteDateFormat = "0DD MMM YYYY";\nvar now = new Date();\n\n//Make the mainMenu horizontal\nvar TWheader = document.getElementById('header');\nTWheader.appendChild(document.getElementById('mainMenu'));\n/*\n{{{\n*/\nconfig.shadowTiddlers.SideBarOptions = "<<gradient vert #2a537d #669966>><<search>><<closeAll>><<permaview>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel options 'Change TiddlyWiki advanced options'>>>>";\nconfig.shadowTiddlers.TabMoreUntagged = "<<list untagged>>";\nconfig.shadowTiddlers.TabMore = "<<tabs txtMoreTab 'Missing' 'Missing tiddlers' TabMoreMissing 'Orphans' 'Orphaned tiddlers' TabMoreOrphans 'Untagged' 'Tiddlers that have no tags' TabMoreUntagged>>";\nconfig.shadowTiddlers.SideBarTabs = "<<tabs txtMainTab Classes 'Notes separated by class' classesTabs Index 'All tiddlers' SidebarAllTabs Tags 'All tags' TabTags More 'More lists' TabMore>>";\nconfig.shadowTiddlers.SidebarAllTabs = "<<tabs txtMoreTab 'by date' 'List all tiddlers according to last date modified' TabTimeline 'alphabetically' 'List all tiddlers alphabetically' TabAll>>";\n\n//Generate class tabs\nconfig.shadowTiddlers.classesTabs = "<<tabs txtMoreTab"\nfor (var i = 0; i < shortClass.length; i++) config.shadowTiddlers.classesTabs += " '"+shortClass[i]+"' '"+shortClass[i]+"- "+longClass[i]+"' 'generatedListing"+i+"'";\nconfig.shadowTiddlers.classesTabs += ">>";\n\n//I can't seem to generate the shadowTiddler name dynamically. I'll just fall back on numbering.\n\nfor (var j = 0; j < shortClass.length; j++){\n var generatedListing = "''"+longClass[j]+"''\sn\sn<<newNote 'Create a note for "+shortClass[j]+"' '"+shortClass[j]+" Note- "+now.formatString(noteDateFormat.trim())+"' notes '"+shortClass[j]+"'>>\sn\sn<<slider 'chk"+shortClass[j]+"notes' generatedListingNotes"+j+" '"+shortClass[j]+" Note Entries' 'Click to show or hide the notes for "+shortClass[j]+"'>>";\n var generatedListingNotes = "<<list withTags [["+shortClass[j]+"]] and notes>>";\n if (j == 0){\n config.shadowTiddlers.generatedListing0 = generatedListing;\n config.shadowTiddlers.generatedListingNotes0 = generatedListingNotes;\n }\n if (j == 1){\n config.shadowTiddlers.generatedListing1 = generatedListing;\n config.shadowTiddlers.generatedListingNotes1 = generatedListingNotes;\n }\n if (j == 2){\n config.shadowTiddlers.generatedListing2 = generatedListing;\n config.shadowTiddlers.generatedListingNotes2 = generatedListingNotes;\n }\n if (j == 3){\n config.shadowTiddlers.generatedListing3 = generatedListing;\n config.shadowTiddlers.generatedListingNotes3 = generatedListingNotes;\n }\n if (j == 4){\n config.shadowTiddlers.generatedListing4 = generatedListing;\n config.shadowTiddlers.generatedListingNotes4 = generatedListingNotes;\n }\n if (j == 5){\n config.shadowTiddlers.generatedListing5 = generatedListing;\n config.shadowTiddlers.generatedListingNotes5 = generatedListingNotes;\n }\n if (j == 6){\n config.shadowTiddlers.generatedListing6 = generatedListing;\n config.shadowTiddlers.generatedListingNotes6 = generatedListingNotes;\n }\n if (j == 7){\n config.shadowTiddlers.generatedListing7 = generatedListing;\n config.shadowTiddlers.generatedListingNotes7 = generatedListingNotes;\n }\n if (j == 8){\n config.shadowTiddlers.generatedListing8 = generatedListing;\n config.shadowTiddlers.generatedListingNotes8 = generatedListingNotes;\n }\n}\n\n\n//========================================================New Note Extension=======\n//Macro: newNote\n//Author: Clint Checketts\n//Version: 1.0 Sept 12, 2005\n\n//usage: <<newNote "Note for IS 410" "IS410 Notes- Sept/07" Tag1 Tag2 OtherTag> > \n//example: < <newNote (button text) (title for the created tiddler) (default tags, unlimited) > >\n\nversion.extensions.newNote = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};\nconfig.macros.newNote = {label: "new note (this.label isn't used anymore)", prompt: "Create a new tiddler from the current date and time as title and tag"};\n\nconfig.macros.newNote.handler = function(place,macroName,params)\n{\n var now = new Date();\n var title = now.formatString(params[1].trim());\n var createNote = function() {\n displayTiddler(null,title,2,null,null,false,false);\n var tagsBox = document.getElementById("editorTags" + title);\n tagsBox.value = "";\n if(tagsBox && params[2])\n for(var i=2; i < params.length; i++) {\n if(params[i]) tagsBox.value += " "+String.encodeTiddlyLink(params[i]);\n }\n var e = document.getElementById("editorBody" + title);\n e.focus();\n e.select();\n };\n createTiddlyButton(place,params[0],this.prompt,createNote);\n}\n\n\n//========================================================ListWithTags plugin=======\n// // ''Plugin Name:'' ListWithTags\n// // ''Author:'' PaulPetterson\n// // ''Purpose:'' extends the TiddlyWiki list macro with support for listing\n// // tiddlers with specified tags\n// // ''Parameters:'' 1..N: tag selection criteria - \n// // //tag//, AND, OR, NOT, and/or Parentheses\n// // ''Usage:'' insert <list withTags systemConfig OR systemTiddlers> to \n// // list out all tiddlers with a systemConfig or systemTiddlers tag\n// // ''Notes:'' it must be a valid boolean expression, an invalid expression \n// // will return a macro error. Follows standard operator precedence so\n// // use parentheses to disambiguate the criteria. You can substitute \n// // the JavaScript standard symbols &&, ||, and ! for AND, OR, and NOT.\n// // ''Examples:'' <list withTags project and (urgent or important)> - \n// // will list all tiddlers with a project tag and either \n// // an urgent or important tag.\n\nconfig.macros.list.withTags = {}\nconfig.macros.list.withTags.handler = function(params)\n{\n var results = [];\n if ( !params || !params[1] )\n return config.macros.list.all.handler(params);\n \n // build us a regex of all our tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...)\n var tags = store.getTags();\n if ( tags.length == 0 ) return results ;\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n\n var regex = new RegExp( exp, "ig" );\n\n // build us string such that an expression that looks like this:\n // tag1 AND tag2 OR NOT tag3\n // turns into :\n // /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n var cond = params.slice(1).join(" ");\n cond = cond.replace( regex, "/$1/.test( tiddlerTags )" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ssnot\ss/ig, " ! " ) ;\n//displayMessage( "condition='" + cond + "'" );\n // look through the tiddlers, make a string of the tags in the tiddler\n // and eval the 'cond' string we made against that string - \n // if it's TRUE then the tiddler qualifies!\n \n for( var t in store.tiddlers ) {\n var tiddler = store.tiddlers[t];\n var tiddlerTags = tiddler.tags?tiddler.tags.join():"" ;\n try {\n if ( eval( cond ) ) results.push( tiddler );\n } catch( e ) {\n//displayMessage( "Exception = '" + e + "'" ) ;\n }\n }\n results.sort(function (a,b) {\n if(a["title"] == b["title"]) return(0); \n else return (a["title"] < b["title"]) ? -1 : +1; \n });\n return results;\n}\n\n\n//==========================================================ListTags Plugin\n// //''Name:'' Calendar plugin\n// //''Version:'' 0.1.0\n// //''Author:'' SteveRumsby\n\n// //''Syntax:''\n// //<< {{{listTags tag //sort// //prefix//}}} >>\n\n// //''Description:''\n// //Generate a list of tiddlers tagged with the given tag.\n// //If both //sort// and //prefix// are omitted the list is sorted in increasing order of title, with one tiddler per line.\n// //If //sort// is specified the list is sorted in increasing order of the given tiddler property. Possible properties are: title. modified, modifier.\n// //If //prefix// is specified the given string is inserted before the tiddler title. The insertion happens before the text is wikified. This can be used to generated bulleted or numbered lists.\n\n// //''Examples:''\n// //<< {{{listTags usage}}} >> - generate a plain list of all tiddlers tagged with tag //usage//, sorted by title\n// //<< {{{listTags usage modified}}} >> - the same list, with most recently modified tiddlers last\n// //<< {{{listTags usage title #}}} >> - generate a numbered list if tiddlers tagged with //usage//, sorted by title\n\n// //''Code section:''\nversion.extensions.listTags = {major: 0, minor: 1, revision: 0, date: new Date(2005, 6,16)};\n\nconfig.macros.listTags = {\ntext: "Hello"\n};\n\nconfig.macros.listTags.handler = function(place,macroName,params)\n{\n var tagged = store.getTaggedTiddlers(params[0], params[1]);\n var string = "";\n for(var r=0;r<tagged.length;r++)\n {\n if(params[2]) string = string + params[2] + " ";\n string = string + "[[" + tagged[r].title + "]]\sn";\n }\n wikify(string, place, null, null);\n}\n\n\n\n// ==========================================================FAQ List ==========\n// //''Name:'' FAQ List\n// //''Version:'' <<getversion faqlist>> (<<getversiondate faqlist "DD MMM YYYY">>)\n// //''Author:'' AlanHecht\n// //''Type:'' [[Macro|Macros]]\n\n// //''Description:'' FAQ List lets you compile a list of Frequently Asked Questions and present them in a cascading style for the viewer. Each question is turned into a link that will toggle the view of the answer text. The list can be compiled either from all tiddlers containing a certain tag or from a single tiddler that contains all the needed questions and answers.\n\n// //''Syntax:'' << {{{ faqlist mode source sortBy hrSeparator }}} >>\n// // ''faqlist:'' the macro call (required)\n// // ''mode:'' either "byTag" or "byTitle" (required)\n// // ''source:'' the associated tag or tiddler title (required)\n// // ''sortBy:'' if byTag, sort can be "title," "modifier," "modified." If byTitle, sort can be "question" and will reorder the questions in alphabetical order. (this parameter is optional; use "null" if you don't want a sort order, but want to use "hr" as the last paramter)\n// // ''hrSeparator:'' if "hr" is included at the end of the call string, each question/answer set will be separated by a horizontal rule.\n// //Examples: (edit these two tiddlers to see the syntax used for each)\n\n// //''Directions:'' <<tiddler StartupBehaviorDirections>> <<tiddler MacroDirections>>\n\n// //''Notes:'' If you choose to use byTitle mode where the entire set of questions/answers comes from a single tiddler, the syntax for the tiddler content is as follows:\n// // • Each question must be a single line (i.e. no hard returns) but can wrap as needed\n// // • The answer to a question begins on the next line after the question and can be as long as needed. It can also include hard returns as part of the answer text, but it cannot include empty lines (i.e. an empty line is the result of pressing enter twice).\n// // • Each question/answer set must be seperated by two hard returns (i.e. must have a single, blank line between them.\n// // Refer to [ [FAQ Tiddler Sample] ] for an example.\n\n// //''Known Issues:'' If a user clicks too quickly to toggle a FAQ entry on/off, they will go into tiddler edit mode. This should be corrected in the future by allowing web-hosted versions of the faq to disable double-clicking.\n\n// //''Revision History:''\n// // v0.1.0 (01 August 2005): initial release\n// // v0.1.1 (04 August 2005): Fixed an endless loop bug (thanks to Kevin Kleinfelter).\n\n// //''Code section:''\nversion.extensions.faqlist = {major: 0, minor: 1, revision: 1, date: new Date("Aug 4, 2005")};\nconfig.macros.faqlist = {\n bulletCollapse: ">",\n bulletExpand: "∨",\n expandButton: {title: "Expand All", tooltip: "Open all items for reading"},\n collapseButton: {title: "Collapse All", tooltip: "Close all items"}\n};\nconfig.macros.faqlist.handler = function(place,macroName,params)\n{\n lingo = config.macros.faqlist;\n var mode = params[0].toLowerCase();\n var list = [];\n switch(mode)\n {\n case "bytag":\n var tagged = store.getTaggedTiddlers(params[1], params[2]);\n for(t=0; t<tagged.length; t++)\n {\n var title = tagged[t].title;\n list[t] = [title,store.getTiddlerText(title)];\n }\n var subTitle = store.tiddlers[title].getSubtitle();\n break;\n case "bytitle":\n var faqText = store.getTiddlerText(params[1]);\n var faqItems = faqText.split("\sn\sn");\n if(params[2] == "question")\n faqItems.sort();\n for(t=0; t<faqItems.length; t++)\n {\n list[t] = [faqItems[t].substring(0,faqItems[t].indexOf("\sn")),faqItems[t].substring(faqItems[t].indexOf("\sn")+1)];\n }\n var subTitle = null;\n break;\n }\n \n var faqHeading = place.appendChild(document.createElement("span"));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.expandButton.title,lingo.expandButton.tooltip,faqExpandAll));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.collapseButton.title,lingo.collapseButton.tooltip,faqCollapseAll));\n faqHeading.appendChild(document.createElement("p"));\n var faqBody = place.appendChild(document.createElement("span"));\n for(var t=0; t<list.length; t++)\n {\n var title = list[t][0];\n\n var content = "<<<\sn" + list[t][1] + "\sn<<<";\n var theClass = "tiddlyLinkExisting tiddlyLink";\n var itemHeading = faqBody.appendChild(document.createElement("span"));\n itemHeading.appendChild(document.createTextNode(config.macros.faqlist.bulletCollapse + " "));\n createTiddlyButton(itemHeading,title,subTitle,faqToggleThis,theClass);\n var itemBody = faqBody.appendChild(document.createElement("span"));\n itemBody.style.display = "none";\n itemBody.className = "itemBody";\n wikify(content,itemBody,null,null);\n faqBody.appendChild(itemBody);\n faqBody.appendChild(document.createElement("p"));\n if(params[3] == "hr")\n faqBody.appendChild(document.createElement("hr"));\n }\n}\n\nfunction faqToggleThis(e)\n{\n var content = this.parentNode.nextSibling;\n var shown = content.style.display;\n if(shown == "none")\n {\n content.style.display = "inline";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n else\n {\n content.style.display = "none";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n}\n\nfunction faqExpandAll()\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n item = this.parentNode.nextSibling.childNodes[t];\n if(item.className == "itemBody")\n {\n item.style.display = "inline";\n item.previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n }\n}\n\nfunction faqCollapseAll()\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n item = this.parentNode.nextSibling.childNodes[t];\n if(item.className == "itemBody")\n {\n item.style.display = "none";\n item.previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n }\n}\n\n//============================================================Untagged Tiddlers Plugin\n// //''Name:'' UntaggedTiddlers plugin\n// //''Version:'' 0.1.0 (June 16, 2005)\n// //''Author:'' SteveRumsby\n\n// //''Code section:''\nversion.extensions.untaggedTiddlers = {major: 0, minor: 1, revision: 0, date: new Date(2005, 6,16)};\n\nconfig.macros.list["untagged"] = {prompt: "Tiddlers that are not tagged"};\n\nconfig.macros.list.untagged.handler = function(params)\n{\n//displayMessage("Building list of untagged tiddlers");\n var results = [];\n for(var t in store.tiddlers) {\n var tiddler = store.tiddlers[t];\n if(tiddler.getTags() == "")\n results.push(t);\n }\n results.sort();\n return results;\n}\n\n/*\n}}}\n*/
// //[[Alan Watson|http://www.alan-watson.org/]]\n// //2 September 2005\n\n// //Standard TiddlyWiki implicitly links WikiWords. This plugin changes that behaviour, causing WikiWords and WikiWordEscapes to be treated as normal text. You can still make explicit links to tiddlers using [ [ and ] ].\n\n// //To use this plugin, copy this tiddler to your TiddlyWiki and tag it with systemConfig.\n\n// //The code really is a bit of a hack. It would be cleaner to add a boolean option and a tiny bit of logic to Tiddler.prototype.changed and wikifyLinks. Instead, we change the WikiWord regular expresssion to use reversed BOMs, which should not appear in well-formed text.\n\n{{{\nwikiNamePattern = "(\suFFFE)(\suFFFE)";\nsetupRegexp();\nfor (var t in store.tiddlers)\n store.tiddlers[t].changed();\n}}}
// //''Name:'' UntaggedTiddlers plugin\n// //''Version:'' 0.1.0 (June 16, 2005)\n// //''Author:'' SteveRumsby\n\n// //''Code section:''\nversion.extensions.untaggedTiddlers = {major: 0, minor: 1, revision: 0, date: new Date(2005, 6,16)};\n\nconfig.macros.list["untagged"] = {prompt: "Tiddlers that are not tagged"};\n\nconfig.macros.list.untagged.handler = function(params)\n{\n//displayMessage("Building list of untagged tiddlers");\n var results = [];\n for(var t in store.tiddlers) {\n var tiddler = store.tiddlers[t];\n if(tiddler.getTags() == "")\n results.push(t);\n }\n results.sort();\n return results;\n}
//Macro: newNote\n//Author: Clint Checketts\n//Version: 1.0 Sept 12, 2005\n\n//usage: <<newNote "Note for IS 410" "IS410 Notes- Sept/07" Tag1 Tag2 OtherTag> > \n//example: < <newNote (button text) (title for the created tiddler) (default tags, unlimited) > >\n\nversion.extensions.newNote = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};\nconfig.macros.newNote = {label: "new note (this.label isn't used anymore)", prompt: "Create a new tiddler from the current date and time as title and tag"};\n\nconfig.macros.newNote.handler = function(place,macroName,params)\n{\n var now = new Date();\n var title = now.formatString(params[1].trim());\n var createNote = function() {\n displayTiddler(null,title,2,null,null,false,false);\n var tagsBox = document.getElementById("editorTags" + title);\n tagsBox.value = "";\n if(tagsBox && params[2])\n for(var i=2; i < params.length; i++) {\n if(params[i]) tagsBox.value += " "+String.encodeTiddlyLink(params[i]);\n }\n var e = document.getElementById("editorBody" + title);\n e.focus();\n e.select();\n };\n createTiddlyButton(place,params[0],this.prompt,createNote);\n}