Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
Connecticut Archives Online
<!--{{{-->\n\n<div macro='showWhen zw.loggedIn'>\n<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references revisions jump'> </div>\n</div>\n\n<div class='title' macro='view title'></div>\n\n<div macro='showWhen zw.loggedIn'>\n <div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>) <span macro='view renamedSubTitle'></span> <span macro='view historicalSubTitle'></span></div>\n</div>\n\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n\n<!--}}}-->\n\n
Brian added a counter that shows how many finding aids were indexed for the search. This will give us a way to monitor growth and to give the user an idea of the breadth their search.
/***\nThis tiddler is a special status tiddler. It is a DTML script that interrogates Zope about the status of your tiddlers. The variables below are dynamic and this tiddler is reloaded when you login. Editing this tiddler through ZiddlyWiki will break your ZiddlyWiki. (If you need to make modifications, edit it in the ZMI)\n***/\n//{{{\nif(typeof document.zw == "undefined") var zw = {};\nzw.loggedIn = false;\nzw.anonEdit = false;\nzw.isAdmin = false;\nzw.latestTiddler = 125856328172;\nzw.username = 'Anonymous User';\nconfig.options.txtUserName = 'Anonymous User';\nzw.serverUrl = "http://library.wcsu.edu/cao/about";\nversion.extensions.ZiddlyWiki = '1';\nzw.tiddlerList = {\n"SiteTitle": "894.36952.45111.33501" ,"SiteSubtitle": "894.5696.42700.56934" ,"PageTemplate": "894.20205.62044.6126" ,"StyleSheet": "896.25768.20051.43963" ,"MainMenu": "896.891.11154.38365" ,"contentFooter": "894.18763.41090.51507" ,"DefaultTiddlers": "894.8504.54336.44544" ,"Getting Help": "894.5692.53372.33194" ,"OptionsPanel": "894.8554.39111.62139" ,"SideBarOptions": "896.25787.3783.14677" ,"GettingStarted": "894.5697.22070.42632" ,"JavascriptTest": "894.8340.46798.49629" ,"Create a Network Folder": "898.9670.56195.15308" ,"Using Diacritics and Accented Characters": "894.24174.34997.56439" ,"2009/02 Meeting": "894.28230.4625.48315" ,"Welcome": "896.25787.57225.23893" ,"2008/11/12 - Prototype Launched": "894.16895.49736.45670" ,"2009/03/03 - Count of Finding Aids Displayed": "894.28232.11366.24285" ,"Meetings": "894.28229.369.36317" ,"News": "894.28231.52156.59187" ,"How To's": "894.24177.42847.9147" ,"Filenames": "894.35667.771.529" ,"Coding Conventions": "894.34332.27758.48810" ,"The url attribute of the <eadid> tag": "898.9686.45571.33894" ,"ConfigTweaksPlugin": "894.9731.49756.9693" ,"2009/06 Meeting": "896.888.23878.37512" ,"ViewTemplate": "894.24162.49093.22203" ,"HideWhenPlugin": "894.17297.3695.44697" ,"The mainagency code of the <eadid> tag": "894.28419.7468.2850" ,"CookieJar": "894.24131.32510.24849" ,"Wiki Markup": "894.24188.1678.31146" ,"Bugs or Issues": "894.54529.8909.57685" ,"Relevant Container Search Irregularities": "898.9680.35358.7236" ,"Highlight Search Terms on Loading of EAD": "898.9671.62747.38212" ,"Using entities in finding aids": "894.35663.29531.20189" ,"State Library Count": "898.9679.45087.54664" ,"What this is about": "894.37555.65343.21811" ,"Polar Bear Expedition Digital Collections": "896.889.1623.3293" ,"Interesting Sites": "896.889.40995.42632" ,"Application Form": "896.25781.44167.17305" };\n//}}}\n
<!--{{{-->
\n<link rel="alternate" type="application/rss+xml" title="RSS" href="?format=xml" />
\n<!--}}}-->
/***\n|''Name:''|Plugin: ZiddlyWiki|\n|''Description:''|Client-side component of the ZiddlyWiki server-side for TiddlyWiki|\n|''Version:''|1.0.0|\n|''Date:''|Sep 30, 2006|\n|''Source:''|http://ziddlywiki.com|\n|''Author:''|BobMcElrath|\n|''Email:''|my first name at my last name dot org|\n|''License:''|[[GPL open source license|http://www.gnu.org/licenses/gpl.html]]|\n|''~CoreVersion:''|2.1.0|\n!Description\nThis plugin is useful only in conjunction with the ZiddlyWiki server-side for\nTiddlyWiki. This plugin is automatically added to any TiddlyWiki downloaded\nfrom a ZiddlyWiki server, and should not be added by hand to your TiddlyWiki.\n\nIf you want to use the ZiddlyWiki server, install that first, and you will\nautomatically get this plugin.\n!My Server\nThis ZiddlyWiki lives at: \n{{{\n http://library.wcsu.edu/cao/about\n}}}\n!API\n{{{\n action=get\n}}}\n!Code\n***/\n//{{{\n// Place to store my junk\nif(typeof zw == "undefined") var zw = {};\nconfig.options.checkUnsavedChanges = false;\nconfig.options.confirmExit = false;\n//zw.ieurl = (navigator.appVersion.indexOf('MSIE') > -1) ? 'ie=1&' : '';\nzw.editingTiddlers = {};\nzw.dirty = false; // flag for when ZW was unable to save something\nzw.serverUrl = "http://library.wcsu.edu/cao/about";\n\nconfig.messages.loginToEdit = 'You must be logged in to make changes. Viewing source instead.';\nconfig.messages.errorDeleting = 'An error has occurred. Review your Zope error log for details.';\nconfig.messages.errorSaving = 'An error has occurred. Review your Zope error log for details. If you navigate away from this page now, you will lose your changes.';\nconfig.messages.protectedTiddler = 'You are not allowed to edit here. Click OK to view the source.';\nconfig.messages.lockedTiddler = 'This tiddler is currently being edited by %s. Please try again in a few minutes.';\nconfig.messages.lockedTiddlerYou = 'This tiddler is currently locked by you. Would you like to edit anyway?';\nconfig.messages.viewRevisionTooltip = 'View this revision.';\nconfig.messages.exportLinkLabel = 'export to file';\nconfig.messages.exportLinkPrompt = 'Export to a TiddlyWiki file';\nconfig.messages.importLinkLabel = 'import from file';\nconfig.messages.importLinkPrompt = 'Import from a TiddlyWiki file';\nconfig.messages.unsavedChangesWarning = 'Something has gone wrong and ZiddlyWiki was unable to save all changes to the server.\snIf you navigate away from this page, those changes will be lost.\snPress OK to save a backup to a local file.';\n\nconfig.views.wikified.toolbarRevisions = {text: "revisions", tooltip: "View another revision of this tiddler", popupNone: "No revisions"};\n\n// Shadow tiddlers that are protected\nconfig.protectedTiddlers = ['DefaultTiddlers', 'MainMenu'];\n\nconfig.replaceBodyCharacters = [\n [/‘/g, "'"],\n [/’/g, "'"],\n [/“/g, '"'],\n [/”/g, '"'],\n [/…/g, '...'],\n [/–/g, ' -- ']\n];\n\nconfig.macros.login = {\n label: 'login',\n prompt: 'Log into the system',\n sizeTextbox: 15,\n // FIXME onmouseover, etc... do these cause a problem? Add (?!onmouseover|onmouseout...)\n innerHTMLSafe: /^<div( ([a-zA-Z0-9_]+)="[^"]*")+>[^<>]*<\s/div>$/,\n handler: function(place) {\n if(zw.loggedIn) {\n var link = createTiddlyLink(place, zw.username, true);\n if(location.protocol == "file:") {\n link.innerHTML = zw.username + ' (offline)';\n } else {\n link.innerHTML = zw.username + ' (logged in)';\n createTiddlyButton(place, "logout", "Log out of the system", this.doLogout);\n }\n } else {\n // FIXME Only make login form if cookie-based login are enabled.\n var form = document.createElement("form");\n form.action = "?action=get&title=ZiddlyStatus";\n var u = createTiddlyElement(form, "input", "zw_username");\n u.value = "YourName";\n u.onclick = this.clearInput;\n u.size = this.sizeTextbox;\n u.onkeypress = this.enterSubmit;\n u.name = "__ac_name";\n var p = createTiddlyElement(form, "input", "zw_password");\n p.value = "password";\n p.size = this.sizeTextbox;\n p.onclick = this.clearInput;\n p.onkeypress = this.enterSubmit;\n p.name = "__ac_password";\n place.appendChild(form);\n createTiddlyButton(place,this.label,this.prompt,this.doLogin);\n }\n },\n clearInput: function(e) {\n var u = document.getElementById("zw_username");\n var p = document.getElementById("zw_password");\n if((e.target == u || e.target == p) && p.type != "password") { \n u.value = ''; \n p.value=''; \n p.type = "password";\n }\n },\n enterSubmit: function(e) {\n if(e.keyCode == 13 || e.keyCode == 10) config.macros.login.doLogin(e);\n },\n doLogin: function(e) {\n clearMessage();\n displayMessage('Logging in...');\n var u = document.getElementById("zw_username");\n var p = document.getElementById("zw_password");\n zw.loggingIn = true;\n ajax.post(zw.serverUrl.replace("http://","http://"+u.value+":"+p.value+"@")\n ,zw.addTiddler,\n "action=get&title=ZiddlyStatus&__ac_name="+u.value+"&__ac_password="+p.value);\n },\n doLogout: function(e) {\n clearMessage();\n displayMessage('Logging out...');\n zw.loggingIn=false;\n // FIXME this will fail if " " is a valid username\n ajax.post(zw.serverUrl.replace("http://","http:// :@")\n ,zw.addTiddler,\n "action=get&title=ZiddlyStatus&__ac_name=&__ac_password=");\n },\n statusChange: function() {\n var oldreadOnly = readOnly;\n config.options.chkHttpReadOnly = (zw.loggedIn || zw.anonEdit || location.protocol == "file:") ? false:true;\n readOnly = !zw.loggedIn;\n // Check for new tiddlers\n var numtofetch = 0;\n var missingtiddlers = "";\n for(var t in zw.tiddlerList) {\n if(!store.fetchTiddler(t.htmlDecode())) {\n numtofetch++;\n missingtiddlers += "\sn" + t;\n }\n }\n var fetched = 0;\n this.fetchlist = [];\n if (typeof zw.tiddlerList == 'undefined') {\n zw.tiddlerList = {};\n }\n if(!zw.tiddlerList.length) {\n clearMessage();\n } else for(var t in zw.tiddlerList) {\n if(!store.fetchTiddler(t.htmlDecode())) {\n var callback = zw.addTiddler;\n this.fetchlist.push(t);\n if(++fetched == numtofetch) \n callback = config.macros.login.addLastTiddler;\n ajax.get('?action=get&title=' + encodeURIComponent(t.htmlDecode())\n + "&" + zw.no_cache(), callback)\n }\n }\n if(oldreadOnly != readOnly || numtofetch == 0) {\n refreshDisplay(["ViewTemplate", "EditTemplate"]);\n story.refreshAllTiddlers();\n refreshAll();\n }\n },\n doneLoginout: function() {\n var evalme = store.fetchTiddler("ZiddlyStatus").text;\n window.eval(evalme);\n readOnly = !zw.loggedIn;\n store.notify(["ZiddlyStatus"], true);\n if(!zw.loggedIn && zw.loggingIn) { // still not logged in.\n clearMessage();\n displayMessage("Authentication failed. Did you type your username and password correctly?");\n }\n if(!zw.loggingIn || (zw.loggedIn && zw.loggingIn)) clearMessage();\n return true;\n },\n addLastTiddler: function(str,status) {\n zw.addTiddler(str,status);\n refreshAll(); // Just redraw everything.\n }\n};\n// This causes our doneLogin method above to be called on startup.\nstore.addNotification("ZiddlyStatus", config.macros.login.statusChange);\n\n// Dynamically load a tiddler\nzw.loadTiddler = function(t) {\n var str = ajax.gets('?action=get&title=' + encodeURIComponent(t.htmlDecode())\n + "&" + zw.no_cache());\n return zw.addTiddler(str, 200);\n}\n\nzw.addTiddler = function(str,status) {\n var tiddler = new Tiddler();\n var d = document.createElement("div");\n if(!str.match(config.macros.login.innerHTMLSafe)) { \n if(!confirm("This tiddler appears to contain HTML and may be dangerous\sn\sn"+str)) \n return tiddler;\n }\n d.innerHTML = str; // FIXME dangerous -- response could contain <script>\n var title = store.getLoader().getTitle(store, d.firstChild);\n if(status == 404) { // not found\n store.zw_removeTiddler(title);\n } else if(status == 200) { // okay\n tiddler = store.getLoader().internalizeTiddler(store, tiddler, title, d.firstChild);\n tiddler.changed();\n store.addTiddler(tiddler);\n if(typeof store.getValue(title, "oldtitle") != "undefined") {\n store.setValue(title, "renamedSubTitle", \n "(renamed from "+store.getValue(title, "oldtitle")+")");\n }\n }\n if(tiddler.title == "ZiddlyStatus")\n config.macros.login.doneLoginout();\n refreshDisplay(title);\n return tiddler;\n}\n\nTiddler.prototype.getSubtitle = function() {\n var theModifier = this.modifier;\n if(!theModifier)\n theModifier = config.messages.subtitleUnknown;\n var theModified = this.modified;\n if(theModified)\n theModified = theModified.toLocaleString();\n else\n theModified = config.messages.subtitleUnknown;\n return(config.messages.tiddlerLinkTooltip.format([this.title,theModifier,\ntheModified]));\n\n}\n\nconfig.macros.ziddlyversion = {\n handler: function(place) {\n createTiddlyElement(place,"span",null,null,version.major + "." \n + version.minor + "." + version.revision \n + (version.beta ? "(b" + version.beta + ")" : "") + "." \n + version.extensions.ZiddlyWiki);\n }\n};\n\nconfig.macros.exportLink = {\n label: config.messages.exportLinkLabel,\n prompt: config.messages.exportLinkPrompt,\n handler: function(place) { \n if(location.protocol == "file:") {\n this.label = config.macros.saveChanges.label;\n this.prompt = config.macros.saveChanges.prompt;\n this.accessKey = config.macros.saveChanges.accessKey;\n config.macros.saveChanges.handler(place);\n } else {\n createTiddlyButton(place,this.label,this.prompt,function(){\n location.href='?action=export';return false;\n });\n }\n }\n};\n\nconfig.macros.importLink = {\n label: config.messages.importLinkLabel,\n prompt: config.messages.importLinkPrompt,\n handler: function(place) {\n if(zw.loggedIn || zw.anonEdit) {\n createTiddlyButton(place,this.label,this.prompt,function(){\n displayTiddler(null, "ImportTiddlers");\n });\n }\n }\n};\n\nTiddlyWiki.prototype.zw_removeTiddler = TiddlyWiki.prototype.removeTiddler;\nTiddlyWiki.prototype.removeTiddler = function(title) {\n displayMessage("Deleting '"+title+"' on server...");\n ajax.post(zw.serverUrl, zw.addTiddler, 'action=delete&title=' + encodeURIComponent(title) + '&' + zw.no_cache());\n return true;\n};\n\nTiddlyWiki.prototype.zw_saveTiddler = TiddlyWiki.prototype.saveTiddler;\nTiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n displayMessage("Saving '"+title+"'...");\n newBody = replaceBodyCharacters(newBody);\n var tiddler = this.zw_saveTiddler(title,newTitle,newBody,modifier,modified,tags);\n var callback = function(r,status){\n var newtiddler = zw.addTiddler(r,status);\n if(!newtiddler) {\n alert("ZiddlyWiki error: The tiddler '"+title+"' that I just tried to save\sn"\n +"doesn't exist after the save! Response ("+status+") was: \sn"+r);\n zw.dirty = true;\n } else if(newtiddler.escapeLineBreaks().htmlEncode() != tiddler.escapeLineBreaks().htmlEncode()) {\n alert("ZiddlyWiki error: Saved tiddler '"+title+"' is not the same as what was just saved."\n +"\sn-------------------before---------------------\sn"+tiddler.escapeLineBreaks().htmlEncode()\n +"\sn-------------------after----------------------\sn"+newtiddler.escapeLineBreaks().htmlEncode()\n );\n zw.dirty = true;\n }\n };\n// FIXME by using async ajax here, a reload timeout may come between the save\n// and the callback's return, which causes the tiddler to be double-rendered.\n ajax.post(zw.serverUrl, callback, 'action=save&oldtitle=' + encodeURIComponent(title) + '&title=' \n + encodeURIComponent(newTitle) + '&body=' + encodeURIComponent(newBody) + '&tags=' \n + encodeURIComponent(tags) + '&modified=' \n + encodeURIComponent((modified||store.fetchTiddler(title).modified).convertToYYYYMMDDHHMM()) \n + '&' + zw.no_cache());\n clearMessage();\n return tiddler;\n};\n\nfunction replaceBodyCharacters(body) {\n var chars = config.replaceBodyCharacters;\n for(var i=0; i<chars.length; i++) {\n body = body.replace(chars[i][0], chars[i][1]);\n }\n return body;\n};\n\nzw.no_cache = function() {return new String((new Date()).getTime())};\n\nconfig.commands.revisions = {\n text: config.views.wikified.toolbarRevisions.text,\n tooltip: config.views.wikified.toolbarRevisions.tooltip,\n popupNone: config.views.wikified.toolbarRevisions.popupNone,\n hideShadow: true,\n handler: function(event,src,title) {\n var popup = Popup.create(src);\n Popup.show(popup,false);\n var callback = function(r,status) {\n if(popup) {\n if(status != 200) {\n createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),\n config.views.wikified.toolbarRevisions.popupNone);\n } else {\n var revs = r.split('\sn');\n for(var i=0; i<revs.length; i++) {\n var parts = revs[i].split(' ');\n if(parts.length>1) {\n var modified = Date.convertFromYYYYMMDDHHMM(parts[0]);\n var key = parts[1];\n var modifier = parts[2];\n var button = createTiddlyButton(createTiddlyElement(popup,"li"), modified.toLocaleString() +" "+ modifier, \n config.messages.viewRevisionTooltip, \n function(){\n displayTiddlerRevision(this.getAttribute('tiddlerTitle'), \n this.getAttribute('revision'), this); \n return false;\n }, 'tiddlyLinkExisting tiddlyLink');\n button.setAttribute('tiddlerTitle', title);\n button.setAttribute('revision', key);\n var t = store.fetchTiddler(title);\n if(!t) alert("Attempt to find revisions for non-existant tiddler '"+title+"'!");\n if(t && (store.getValue(t, 'revision') == key))\n button.className = 'revisionCurrent';\n if(i == 0)\n this.latestRevision = key;\n }\n }\n }\n }\n };\n ajax.get('?action=get_revisions&title=' + encodeURIComponent(title.htmlDecode()) + '&' + zw.no_cache(), callback);\n event.cancelBubble = true;\n if (event.stopPropagation) event.stopPropagation();\n return true;\n }\n}\n\nfunction displayTiddlerRevision(title, revision, src, updateTimeline) {\n var tiddler = store.fetchTiddler(title);\n// We already have the latest version\n if(tiddler && store.getValue(tiddler, 'revision') == revision) return;\n displayMessage("Loading revision information for '"+title+"'...");\n revision = revision ? '&revision=' + revision : '';\n ajax.get('?action=get&title=' + encodeURIComponent(title.htmlDecode()) + revision \n + '&' + zw.no_cache(), displayTiddlerRevisionCallback)\n};\n\nfunction displayTiddlerRevisionCallback(str,status) {\n store.suspendNotifications(); // To prevent multiple redraws\n var tiddler = zw.addTiddler(str,status);\n store.setValue(tiddler.title, "historicalSubTitle", "");\n if(tiddler.tags.contains('deleted'))\n store.setValue(tiddler.title, "historicalSubTitle", \n store.getValue(tiddler.title, "historicalSubTitle")+" (deleted)");\n if(latestRevision != store.getValue(tiddler.title, "revision"))\n store.setValue(tiddler.title, "historicalSubTitle", \n store.getValue(tiddler.title, "historicalSubTitle")+" (historical revision)");\n store.setValue(tiddler.title, "latestRevision", latestRevision);\n story.refreshTiddler(tiddler.title, DEFAULT_VIEW_TEMPLATE, true);\n store.resumeNotifications();\n clearMessage();\n}\n\nTiddler.prototype.isReadOnly = function() {\n if(store.getValue(this.title, "readonly") == "true") return true;\n if(zw.isAdmin) return false;\n if(zw.loggedIn && this.modifier == zw.username) return false;\n if(location.protocol == "file:") return false;\n return isProtectedTiddler(this.title) || !(zw.anonEdit || zw.loggedIn);\n};\n\n// Add the protected tag to tiddlers in config.protectedTiddlers\nTiddler.prototype.zw_set = Tiddler.prototype.set;\nTiddler.prototype.set = function(title,text,modifier,modified,tags,created) {\n if(!tags) tags = [];\n if(typeof tags == "string") tags = tags.readBracketedList();\n if(!store.tiddlerExists(title) && store.isShadowTiddler(title)) {\n for(var i=0;i<config.protectedTiddlers.length;i++) {\n if(config.protectedTiddlers[i] == title) {\n tags.push('protected');\n break;\n }\n }\n }\n return this.zw_set(title, text, modifier, modified, tags, created);\n}\n\nconfig.commands.editTiddler.zw_handler = config.commands.editTiddler.handler;\nconfig.commands.editTiddler.handler = function(event,src,title) {\n if(readOnly) {\n this.zw_handler(event,src,title);\n } else {\n displayMessage("Loading '"+title+"'...");\n var obj = this;\n var callback = function(r,status) {\n clearMessage();\n if(status == 404) { // doesn't exist (might be a shadow tiddler)\n zw.editingTiddlers[title] = true;\n obj.zw_handler(event,src,title);\n } else if(status == 200) {\n var tiddler = zw.addTiddler(r,status);\n if(tiddler.tags.indexOf('deleted') != -1) // Remove the deleted tag on edit\n tiddler.tags.splice(tiddler.tags.indexOf('deleted'),1);\n zw.editingTiddlers[tiddler.title] = true;\n obj.zw_handler(event,src,tiddler.title);\n } else if(status == 503) { // "Temporarily Unavailable" Conflict\n if(r == zw.username) {\n if(confirm(config.messages.lockedTiddlerYou)) {\n var str = ajax.gets('?action=unlock&title=' + encodeURIComponent(title)\n + "&" + zw.no_cache());\n zw.addTiddler(str, 200);\n return obj.handler(event,src,title);\n }\n } else {\n alert(config.messages.lockedTiddler.replace(/%s/g, r));\n }\n } else if(status == 403) {\n // Lock failed, we must not be logged in, or something changed underneath us.\n zw.loggedIn = false;\n zw.isAdmin = false;\n readOnly = true;\n zw.loadTiddler("ZiddlyStatus");\n //refreshDisplay(["SideBarOptions","ViewTemplate", "EditTemplate"]);\n //story.refreshAllTiddlers();\n alert(config.messages.loginToEdit);\n config.commands.editTiddler.zw_handler(event,src,title);\n } else {\n alert("Server returned a response I don't understand:\sn\sn"+k);\n }\n };\n var rev = "";\n if(store.getValue(title, "latestRevision") != "undefined")\n rev = "revision="+store.getValue(title, "revision");\n ajax.post(zw.serverUrl, callback, 'action=lock&title=' + encodeURIComponent(title) + '&' + rev + '&' + zw.no_cache());\n }\n return false;\n};\n\nconfig.commands.saveTiddler.zw_handler = config.commands.saveTiddler.handler;\nconfig.commands.saveTiddler.handler = function(event,src,title) {\n if(zw.isAdmin \n || (zw.loggedIn || zw.anonEdit) && !isProtectedTiddler(title)\n || (isProtectedTiddler(title) && zw.loggedIn && this.modifier == zw.username)) {\n zw.editingTiddlers[title] = false;\n return this.zw_handler(event,src,title);\n } else {\n config.commands.cancelTiddler.zw_handler(null,null,title);\n }\n return false;\n};\n\nconfig.commands.deleteTiddler.zw_handler = config.commands.deleteTiddler.handler;\nconfig.commands.deleteTiddler.handler = function(event,src,title) {\n if(zw.isAdmin \n || (zw.loggedIn || zw.anonEdit) && !isProtectedTiddler(title)\n || (isProtectedTiddler(title) && zw.loggedIn && this.modifier == zw.username)) {\n zw.editingTiddlers[title] = false;\n return this.zw_handler(event,src,title);\n } else {\n config.commands.cancelTiddler.zw_handler(null,null,title);\n }\n return false;\n};\n\nconfig.commands.cancelTiddler.zw_handler = config.commands.cancelTiddler.handler;\nconfig.commands.cancelTiddler.handler = function(event,src,title) {\n if(!config.options.chkHttpReadOnly) {\n if(zw.editingTiddlers[title]) {\n var str = ajax.gets('?action=unlock&title=' + encodeURIComponent(title) + "&" + zw.no_cache());\n zw.addTiddler(str, 200);\n }\n zw.editingTiddlers[title] = false;\n }\n return this.zw_handler(event,src,title);\n};\n\nfunction isProtectedTiddler(title) {\n var tiddler = store.fetchTiddler(title);\n if(!tiddler) { // Must be a shadow\n for(var i=0;i<config.protectedTiddlers.length;i++) {\n if(config.protectedTiddlers[i] == title) return true;\n }\n }\n if(tiddler && tiddler.tags) {\n for(var i=0;i<tiddler.tags.length;i++) {\n if(tiddler.tags[i] == 'protected') return true;\n }\n }\n return false;\n};\n\nzw.refresh_count = 0;\nzw.refresh_tiddlers = function() {\n zw.refresh_count++;\n if(zw.refresh_count > 30) { // thirty minutes\n clearInterval(zw.refresh_interval_id);\n } else {\n ajax.get(zw.serverUrl + '?action=refresh&latest=' + zw.latestTiddler, zw.refresh_tiddlers_callback);\n }\n};\n\n// If there are unsaved changes, force the user to confirm before exitting\nfunction confirmExit()\n{\n hadConfirmExit = true;\n if(zw.dirty) return config.messages.confirmExit;\n}\n\n// Give the user a chance to save changes before exitting\nfunction checkUnsavedChanges()\n{\n if(zw.dirty && window.hadConfirmExit === false)\n {\n if(confirm(config.messages.unsavedChangesWarning))\n saveChanges();\n }\n}\n\nTiddler.prototype.isReadOnly = function() {\n return readOnly || store.getValue(this.title, "readonly");\n}\n\n// Receives a list of updated tiddler [timestamp, [title, modified, revision], ...]\n// If TW supports higher resolution modification stamps (currently: 1 minute) we can use\n// that as an identifier instead of revision\nzw.refresh_tiddlers_callback = function(tiddlers) {\n if(tiddlers == '') return;\n tiddlers = tiddlers.split('\sn\sn');\n zw.latestTiddler = parseInt(tiddlers[0]);\n for(var i=1; i<tiddlers.length; i++) {\n var l = tiddlers[i].split('\sn'); // [title, modified, revision]\n if(!zw.editingTiddlers[l[0]]) // FIXME if it's being edited and we just found out someone else modified it, we should issue a warning.\n displayTiddlerRevision(l[0], l[2], null, true);\n }\n};\n\nif(location.protocol != "file:")\n zw.refresh_interval_id = setInterval('zw.refresh_tiddlers()', 60000); // refresh every minute\n\n// mini/ajax.js - http://timmorgan.org/mini\n\nfunction $(e){if(typeof e=='string')e=document.getElementById(e);return e};\nfunction collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!=null)n.push(v)}return n};\n\nvar ajax={};\najax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}};\najax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n)};var nv=function(e){if(e.name)return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value);else return ''};var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});var s=collect(g('select'),nv);\nvar t=collect(g('textarea'),nv);return i.concat(s).concat(t).join('&');};\najax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText,x.status,x.statusText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};\najax.get=function(url,func){ajax.send(url,func,'GET')};\najax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};\najax.post=function(url,func,args){ajax.send(url,func,'POST',args)};\najax.posts=function(url,args){var x=ajax.x();x.open('POST',url,false);x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(args);return x.responseText};\najax.update=function(url,elm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.get(url,f)};\najax.submit=function(url,elm,frm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,ajax.serialize(frm))};\n\n//if(window.netscape && window.netscape.security && document.location.protocol.indexOf("http") == -1)\n//window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n//window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");\n//window.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n\n//}}}\n
/***\n|''Name''|SimpleSearchPlugin|\n|''Description''|displays search results as a simple list of matching tiddlers|\n|''Authors''|FND|\n|''Version''|0.4.0|\n|''Status''|stable|\n|''Source''|http://devpad.tiddlyspot.com/#SimpleSearchPlugin|\n|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/plugins/SimpleSearchPlugin.js|\n|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|\n|''Keywords''|search|\n!Revision History\n!!v0.2.0 (2008-08-18)\n* initial release\n!!v0.3.0 (2008-08-19)\n* added Open All button (renders Classic Search option obsolete)\n* sorting by relevance (title matches before content matches)\n!!v0.4.0 (2008-08-26)\n* added tag matching\n!To Do\n* tag matching optional\n* animations for container creation and removal\n* when clicking on search results, do not scroll to the respective tiddler (optional)\n* use template for search results\n!Code\n***/\n//{{{\nif(!version.extensions.SimpleSearchPlugin) { //# ensure that the plugin is only installed once\nversion.extensions.SimpleSearchPlugin = { installed: true };\n\nif(!plugins) { var plugins = {}; }\nplugins.SimpleSearchPlugin = {\n heading: "Search Results",\n containerId: "searchResults",\n btnCloseLabel: "close",\n btnCloseTooltip: "dismiss search results",\n btnCloseId: "search_close",\n btnOpenLabel: "Open all",\n btnOpenTooltip: "open all search results",\n btnOpenId: "search_open",\n \n displayResults: function(matches, query) {\n story.refreshAllTiddlers(true); // update highlighting within story tiddlers\n var el = document.getElementById(this.containerId);\n query = '"""' + query + '"""'; // prevent WikiLinks\n if(el) {\n removeChildren(el);\n } else { //# fallback: use displayArea as parent\n var container = document.getElementById("displayArea");\n el = document.createElement("div");\n el.setAttribute("id", this.containerId);\n el = container.insertBefore(el, container.firstChild);\n }\n var msg = "!" + this.heading + "\sn";\n if(matches.length > 0) {\n msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\sn";\n this.results = [];\n for(var i = 0 ; i < matches.length; i++) {\n this.results.push(matches[i].title);\n msg += "* [[" + matches[i].title + "]]\sn";\n }\n } else {\n msg += "''" + config.macros.search.failureMsg.format([query]) + "''"; // XXX: do not use bold here!?\n }\n createTiddlyButton(el, this.btnCloseLabel, this.btnCloseTooltip, plugins.SimpleSearchPlugin.closeResults, "button", this.btnCloseId);\n wikify(msg, el);\n if(matches.length > 0) { // XXX: redundant!?\n createTiddlyButton(el, this.btnOpenLabel, this.btnOpenTooltip, plugins.SimpleSearchPlugin.openAll, "button", this.btnOpenId);\n }\n },\n\n closeResults: function() {\n var el = document.getElementById(plugins.SimpleSearchPlugin.containerId);\n removeNode(el);\n plugins.SimpleSearchPlugin.results = null;\n highlightHack = null;\n },\n\n openAll: function(ev) {\n story.displayTiddlers(null, plugins.SimpleSearchPlugin.results);\n return false;\n }\n};\n\nconfig.shadowTiddlers.StyleSheetSimpleSearch = "/*{{{*/\sn" +\n "#" + plugins.SimpleSearchPlugin.containerId + " {\sn" +\n "\stoverflow: auto;\sn" +\n "\stpadding: 5px 1em 10px;\sn" +\n "\stbackground-color: [[ColorPalette::TertiaryPale]];\sn" +\n "}\sn\sn" +\n "#" + plugins.SimpleSearchPlugin.containerId + " h1 {\sn" +\n "\stmargin-top: 0;\sn" +\n "\stborder: none;\sn" +\n "}\sn\sn" +\n "#" + plugins.SimpleSearchPlugin.containerId + " ul {\sn" +\n "\stmargin: 0.5em;\sn" +\n "\stpadding-left: 1.5em;\sn" +\n "}\sn\sn" +\n "#" + plugins.SimpleSearchPlugin.containerId + " .button {\sn" +\n "\stdisplay: block;\sn" +\n "\stborder-color: [[ColorPalette::TertiaryDark]];\sn" +\n "\stpadding: 5px;\sn" +\n "\stbackground-color: [[ColorPalette::TertiaryLight]];\sn" +\n "}\sn\sn" +\n "#" + plugins.SimpleSearchPlugin.containerId + " .button:hover {\sn" +\n "\stborder-color: [[ColorPalette::SecondaryMid]];\sn" +\n "\stbackground-color: [[ColorPalette::SecondaryLight]];\sn" +\n "}\sn\sn" +\n "#" + plugins.SimpleSearchPlugin.btnCloseId + " {\sn" +\n "\stfloat: right;\sn" +\n "\stmargin: -5px -1em 5px 5px;\sn" +\n "}\sn\sn" +\n "#" + plugins.SimpleSearchPlugin.btnOpenId + " {\sn" +\n "\stfloat: left;\sn" +\n "\stmargin-top: 5px;\sn" +\n "}\sn" +\n "/*}}}*/";\nstore.addNotification("StyleSheetSimpleSearch", refreshStyles);\n\n// override Story.search()\nStory.prototype.search = function(text, useCaseSensitive, useRegExp) {\n highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img");\n var matches = store.search(highlightHack, null, "excludeSearch");\n var q = useRegExp ? "/" : "'";\n plugins.SimpleSearchPlugin.displayResults(matches, q + text + q);\n};\n\n// override TiddlyWiki.search() to sort by relevance\nTiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) {\n var candidates = this.reverseLookup("tags", excludeTag, !!match);\n var primary = [];\n var secondary = [];\n var tertiary = [];\n for(var t = 0; t < candidates.length; t++) {\n if(candidates[t].title.search(searchRegExp) != -1) {\n primary.push(candidates[t]);\n } else if(candidates[t].tags.join(" ").search(searchRegExp) != -1) {\n secondary.push(candidates[t]);\n } else if(candidates[t].text.search(searchRegExp) != -1) {\n tertiary.push(candidates[t]);\n }\n }\n var results = primary.concat(secondary).concat(tertiary);\n if(sortField) {\n results.sort(function(a, b) {\n return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);\n });\n }\n return results;\n};\n\n} //# end of "install only once"\n//}}}
You probably won't want to but you probably should read all the info at [[TiddlyWiki.org|http://tiddlywiki.org]] \n\nI'm trying to set up a local site where we can keep our own documentation and build a local site of help. [[You can find it here.|http://library.wcsu.edu:8080/ZW-help]]\n\nAnother really good help site is [[twhelp.tiddlyspot.com|http://twhelp.tiddlyspot.com]].
!!!Main Menu\n[[Welcome]]\n[[Search the CAO EAD files|http://library.wcsu.edu/cao/]]\n----\n!!!Other Items\n[[Coding Conventions]]\n[[How To's]]\n[[Meetings]]\n[[News]]\n[[Bugs or Issues]]\n[[Interesting Sites]]\n----\n<script>\nif (!zw.loggedIn) return "[[Login to make changes|/cao/about/login]]"\n</script>
From their web site\n>The Polar Bear Expedition Digital Collections are the first example of rethinking traditional archival finding aids to provide better access to primary sources on the web. We are experimenting with different ideas for displaying archival content as well as implementing added functions so that researchers can interact with online collections using collaborative tools. \n\n[[Visit their site| http://polarbears.si.umich.edu/]]\n\nI thought it was interesting how they let you browse by subjects and how they provided links in their scope notes
The entity {{{ }}} while valid in HTML is not valid in XML. This entity was found in the following files from the State Library: \n\nRG028_005.xml\nRG074_001.xml\nRG074-035.xml\nRG074-036.xml\nRG074-061.xml\nRG074-064.xml\n\nBecause these files are just for indexing (not display) I replace the non break space with {{{ }}} , the XML version. \n\nAfter talking with Brian Stevens, it appears that if you are using the DTD and the ent.zip (// see [[Using Diacritics and Accented Characters]] page for more information//) file that is associated with it, this entity is defined in those files. It's only when I go to index it (without using those files) that it comes up invalid. This could be a problem for all character entities in use. We need to think about this a determine if it is a real problem. \n\n\n\n\n
When a user clicks on the title of record in [[CAO|/cao]] it takes the user to that finding-aid on your site. In order to help the user find the areas that she might be interested in you can have the user's search terms highlighted in you EAD presentation. \n\nIf you want to make this work on your site you need to put the following two lines into the xslt stylesheet that renders you EAD file. From then on your users should see the highlighted search terms when they visit you site. (//look at any of the WCSU files for an example//)\n\n{{{<link rel="stylesheet" type="text/css" href="http://library.wcsu.edu/cao/css/highlight.css"/>}}}\n\n{{{<script type="text/javascript" src="http://library.wcsu.edu/js/highlight.js />}}}\n\nIf there is any problem with this let me know. -- BK\n
The value of the @url attribute of the <eadid> tag should contain the link back to the ead document on ''your'' server. \n\nSee the url attribute below points to where the repository's finding aid lives:\n\n<eadid mainagencycode="US-ctdabn" url="http://library.wcsu.edu/web/about/units/archives/findingaids/academicPrograms.xml" identifier="RG 6">academicPrograms</eadid>\n\nNotice the prefix of the filename and the content of the eadid are the same.\n\n\n<<tag Coding>>
[[Here is a page|http://tiddlywiki.org/wiki/TiddlyWiki_Markup]] that shows how to markup text in a tiddlywiki.
config.options.chkSinglePageMode=true\nconfig.options.chkSinglePageAutoScroll=true\nconfig.options.chkSideBarTabs=false\n\n
/***\n|Name:|HideWhenPlugin|\n|Description:|Allows conditional inclusion/exclusion in templates|\n|Version:|3.1 ($Rev: 3919 $)|\n|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|\n|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|\n|Author:|Simon Baird <simon.baird@gmail.com>|\n|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|\nFor use in ViewTemplate and EditTemplate. Example usage:\n{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}\n{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}\n***/\n//{{{\n\nwindow.hideWhenLastTest = false;\n\nwindow.removeElementWhen = function(test,place) {\n window.hideWhenLastTest = test;\n if (test) {\n removeChildren(place);\n place.parentNode.removeChild(place);\n }\n};\n\n\nmerge(config.macros,{\n\n hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( eval(paramString), place);\n }},\n\n showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !eval(paramString), place);\n }},\n\n hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAny(params), place);\n }},\n\n showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAny(params), place);\n }},\n\n hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);\n }},\n\n showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);\n }},\n\n hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.title == params[0], place);\n }},\n\n showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.title != params[0], place);\n }},\n\n 'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !window.hideWhenLastTest, place);\n }}\n\n});\n\n//}}}\n\n
<!--{{{-->\n\n<div id='sidebar'>\n <img class='logo' src='/cao/about/images/cao_logo.jpg' alt='logo'/>\n <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n <div id='mainmenu' refresh='content' tiddler='MainMenu'></div>\n <div id='ZiddlyFormats' refresh='content' tiddler='ZiddlyFormats'></div>\n</div>\n\n<div id='header' class='header'>\n <div class='headerShadow'>\n <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span><br />\n <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n </div>\n</div>\n\n<div id='displayArea'>\n <div id='messageArea'></div>\n <div id='tiddlerDisplay'></div>\n</div>\n\n<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>\n\n<!--}}}-->\n\n
//{{{\nconfig.formatters.unshift( {\n name: "inlinetabs",\n match: "\s\s<tabs",\n lookaheadRegExp: /(?:<tabs (.*)>\sn)((?:.|\sn)*?)(?:\sn<\s/tabs>)/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n var cookie = lookaheadMatch[1];\n var wrapper = createTiddlyElement(null,"div",null,cookie);\n var tabset = createTiddlyElement(wrapper,"div",null,"tabset");\n tabset.setAttribute("cookie",cookie);\n var validTab = false;\n var firstTab = '';\n var tabregexp = /(?:<tab (.*)>)(?:(?:\sn)?)((?:.|\sn)*?)(?:<\s/tab>)/mg;\n while((m = tabregexp.exec(lookaheadMatch[2])) != null)\n {\n if (firstTab == '') firstTab = m[1];\n var tab = createTiddlyButton(tabset,m[1],m[1],story.onClickInlineTab,"tab tabUnselected");\n tab.setAttribute("tab",m[1]);\n tab.setAttribute("content",m[2]);\n tab.title = m[1];\n if(config.options[cookie] == m[1])\n validTab = true;\n }\n if(!validTab)\n config.options[cookie] = firstTab;\n w.output.appendChild(wrapper);\n story.switchInlineTab(tabset,config.options[cookie]);\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n})\n\nStory.prototype.switchInlineTab = function(tabset,tab)\n{\n var cookie = tabset.getAttribute("cookie");\n var theTab = null\n var nodes = tabset.childNodes;\n for(var t=0; t<nodes.length; t++)\n if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab)\n {\n theTab = nodes[t];\n theTab.className = "tab tabSelected";\n }\n else\n nodes[t].className = "tab tabUnselected"\n if(theTab)\n {\n if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")\n tabset.parentNode.removeChild(tabset.nextSibling);\n var tabContent = createTiddlyElement(null,"div",null,"tabContents");\n tabset.parentNode.insertBefore(tabContent,tabset.nextSibling);\n wikify(theTab.getAttribute("content"),tabContent);\n if(cookie)\n {\n config.options[cookie] = tab;\n saveOptionCookie(cookie);\n }\n }\n}\n \nStory.prototype.onClickInlineTab = function(e)\n{\n story.switchInlineTab(this.parentNode,this.getAttribute("tab"));\n return false;\n}\n//}}}
<script>\nreturn "Are we logged in:" + zw.loggedIn\n</script>
/***\n|''Name:''|BreadCrumbsPlugin|\n|''Version:''|2.2.1 (05-July-2007)|\n|''Author:''|AlanHecht|\n|''Adapted By:''|[[Jack]]|\n|''Type:''|Plugin|\n!Description\nThis plugin creates an area at the top of the tiddler area that displays "breadcrumbs" of where you've been. This is especially useful for ~TWs using SinglePageMode by Eric Schulman.\n!Usage\nJust install the plugin and tag with systemConfig. Optionally position the following div in your PageTemplate to control the positioning of the breadcrumbs menu:\n{{{\n<div id='breadCrumbs'></div>\n}}}\n!Revision History\n* Original by AlanHecht\n* 2.0 Made 2.0.x compatible by [[Jack]]\n* Made 2.0.10 compatible (onstart paramifier)\n* Bugfix -> return false in onClickTiddlerLink()\n* 2.2 Made 2.2.x compatible\n!Code\n***/\n\n// // Use the following line to set the number of breadcrumbs to display before rotating them off the list.\n//{{{\nversion.extensions.breadCrumbs = {major: 2, minor: 2, revision: 1, date: new Date("Jul 5, 2007")};\nvar crumbsToShow = 7;\nvar breadCrumbs = [];\n\nonClickTiddlerLink_orig_breadCrumbs = onClickTiddlerLink;\nonClickTiddlerLink = function(e){\n onClickTiddlerLink_orig_breadCrumbs(e);\n breadcrumbsAdd(e);\n return false;\n}\n\nrestart_orig_breadCrumbs = restart;\nfunction restart() {\n invokeParamifier(params,"onstart");\n var defaultParams = store.getTiddlerText("DefaultTiddlers").parseParams("open",null,false);\n invokeParamifier(defaultParams,"onstart");\n breadCrumbs = [];\n breadcrumbsRefresh();\n window.scrollTo(0,0);\n return false;\n}\n\nfunction breadcrumbsAdd(e) {\n var uniqueCrumb = true;\n var crumbIndex = 0;\n if (!e) var e = window.event;\n var target = resolveTarget(e);\n var thisCrumb="[["+resolveTarget(e).getAttribute("tiddlyLink")+"]]";\n var lastInactiveCrumb = breadCrumbs.length -(breadCrumbs.length < crumbsToShow ? breadCrumbs.length : crumbsToShow);\n for(t=lastInactiveCrumb; t<breadCrumbs.length; t++)\n if(breadCrumbs[t] == thisCrumb) {\n uniqueCrumb = false;\n crumbIndex = t+1;\n }\n if(uniqueCrumb)\n breadCrumbs.push(thisCrumb);\n else\n breadCrumbs = breadCrumbs.slice(0,crumbIndex);\n breadcrumbsRefresh(); \n}\n\nfunction breadcrumbsRefresh() {\n \n if (!document.getElementById("breadCrumbs")) {\n // Create breadCrumbs div\n var ca = document.createElement("div");\n ca.id = "breadCrumbs";\n ca.style.visibility= "hidden";\n var targetArea = document.getElementById("tiddlerDisplay")||document.getElementById("storyDisplay");\n targetArea.parentNode.insertBefore(ca,targetArea);\n }\n\n var crumbArea = document.getElementById("breadCrumbs");\n crumbArea.style.visibility = "visible";\n removeChildren(crumbArea);\n createTiddlyButton(crumbArea,"Home",null,restart);\n crumbArea.appendChild(document.createTextNode(" > "));\n \n var crumbLine = "";\n var crumbCount = breadCrumbs.length;\n var firstCrumb = crumbCount -(crumbCount < crumbsToShow ? crumbCount : crumbsToShow);\n for(t=firstCrumb; t<crumbCount; t++) {\n if(t != firstCrumb)\n crumbLine += " > ";\n crumbLine += breadCrumbs[t];\n }\n wikify(crumbLine,crumbArea)\n}\n\n\n//}}}
<tabs Introduction>\n<tab About> \n!!!What is CAO\n\nThe Connecticut Archives Online (CAO) is a project that aims to unify and simplify searching of archival holdings in Connecticut. CAO can bring researchers to the rich collections held in Connecticut's libraries, universities, colleges, museums and historical societies through one simple interface. \n\nThe implications for institutions that participate in CAO are that their researchers will be able to easily search that institution's collections and also be exposed to collections that they may have missed or did not know existed. Participation can also serve to enhance the profile for your collections and foster interest in Connecticut's history, its people and its institutions. \n\n[[Meetings]]\n[[News]]\n</tab>\n\n<tab Participation> \n!!!How do I participate?\n\nParticipation in CAO is ''easy and free''. An institution interested in participating need only to have valid EAD finding aids for their collections, notify CAO administrators, and your finding aids will be indexed by the CAO search. The only stipulation is that there are a few simple encoding guidelines in the [[Coding Conventions]] section. \n\nYour institution's workflow for publishing finding aids does not need to alter in order to participate. Your finding aids will still live in your own Web space and search results from CAO point users back to your site.\n\nInstitutions that participate in CAO are able to toggle between searching across the consortium or at a single repository.\n</tab>\n\n<tab With EAD>\n!!!I have EAD\nIf you have your finding aids marked up in EAD and are a Connecticut archival repository, simply contact [[Brian Stevens|mailto://stevensb@wcsu.edu]] or [[Brian Kennison|mailto://kennisonb@wcsu.edu]] at WCSU to set up an account.\n\n[[Coding Conventions]]\n[[How To's]]\n</tab>\n\n<tab No EAD> \n!!!My repository doesn't have EAD\n\nCAO provides an interface for creation of collection level EAD records. If you are able to fill out a form online, you will be able to generate a collection level record. If you don't have a means of displaying EAD finding aids, you may still participate; search results that are returned for your repository will direct users to contact you for more information. \n\nFollow the link below to set up a collection profile and to use the EAD Production form. [[Application Form]]\n\n</tab>\n</tabs>
/***\n|''Name:''|TagsTreePlugin|\n|''Description:''|Displays tags hierachy as a tree of tagged tiddlers.<br>Can be used to create dynamic outline navigation.|\n|''Version:''|1.0.1|\n|''Date:''|Jan 04,2008|\n|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|\n|''Author:''|Pascal Collin|\n|''License:''|[[BSD open source license|License]]|\n|''~CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 2.0; InternetExplorer 6.0|\n!Demo\nOn the plugin [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] :\n*Try to tag some <<newTiddler>> with a tag displayed in the menu and edit MainMenu.\n*Look at some tags like [[Plugins]] or [[menu]].\n!Installation\n#import the plugin,\n#save and reload,\n#optionally, edit TagsTreeStyleSheet.\n! Usage\n{{{<<tagsTree>>}}} macro accepts the following //optional// parameters.\n|!#|!parameter|!description|!by default|\n|1|{{{root}}}|Uses {{{root}}} tag as tree root|- In a //tiddler// content or template : uses the tiddler as root tag.<br>- In the //page// content or template (by ex MainMenu) : displays all untagged tags.|\n|2|{{{excludeTag}}}|Excludes all such tagged tiddlers from the tree|Uses default excludeLists tag|\n|3|{{{level}}}|Expands nodes until level {{{level}}}.<br>Value {{{0}}} hides expand/collapse buttons.|Nodes are collapsed on first level|\n|4|{{{depth}}}|Hierachy depth|6 levels depth (H1 to H6 header styles)|\n|5|{{{sortField}}}|Alternate sort field. By example : "index".|Sorts tags and tiddlers alphabetically (on their title)|\n|6|{{{labelField}}}|Alertnate label field. By example : "label".|Displays tiddler's title|\n\n!Useful addons\n*[[FieldsEditorPlugin]] : //create//, //edit//, //view// and //delete// commands in toolbar <<toolbar fields>>.\n*[[TaggerPlugin]] : Provides a drop down listing current tiddler tags, and allowing toggling of tags.\n!Advanced Users\nYou can change the global defaults for TagsTreePlugin, like default {{{level}}} value or level styles, by editing or overriding the first config.macros.tagsTree attributes below.\n!Code\n***/\n//{{{\nconfig.macros.tagsTree = {\n expand : "+",\n collapse : " -- ",\n depth : 6,\n level : 1,\n sortField : "", \n labelField : "",\n styles : ["h1","h2","h3","h4","h5","h6"],\n trees : {}\n}\n\nconfig.macros.tagsTree.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var root = params[0] ? params[0] : (tiddler ? tiddler.title : null);\n var excludeTag = params[1] ? params[1] : "excludeTagsTree";\n var level = params[2] ? params[2] : config.macros.tagsTree.level;\n var depth = params[3] ? params[3] : config.macros.tagsTree.depth;\n var sortField = params[4] ? params[4] : config.macros.tagsTree.sortField;\n var labelField = params[5] ? params[5] : config.macros.tagsTree.labelField;\n var showButtons = (level>0);\n var id = config.macros.tagsTree.getId(place);\n if (config.macros.tagsTree.trees[id]==undefined) config.macros.tagsTree.trees[id]={};\n config.macros.tagsTree.createSubTree(place,id,root,excludeTag,[],level>0 ? level : 1,depth, sortField, labelField,showButtons);\n}\n\nconfig.macros.tagsTree.createSubTree = function(place, id, root, excludeTag, ancestors, level, depth, sortField, labelField,showButtons){\n var childNodes = root ? this.getChildNodes(root, ancestors) : this.getRootTags(excludeTag);\n var isOpen = (level>0) || (!showButtons);\n if (root && this.trees[id][root]!=undefined) isOpen = this.trees[id][root]; \n if (root && ancestors.length) {\n var t = store.getTiddler(root);\n if (childNodes.length && depth>0) {\n var wrapper = createTiddlyElement(place , this.styles[Math.min(Math.max(ancestors.length,1),6)-1],null,"branch");\n if (showButtons) {\n b = createTiddlyButton(wrapper, isOpen ? config.macros.tagsTree.collapse : config.macros.tagsTree.expand, null, config.macros.tagsTree.onClick);\n b.setAttribute("treeId",id);\n b.setAttribute("tiddler",root); \n }\n createTiddlyText(createTiddlyLink(wrapper, root),t&&labelField ? t.fields[labelField] ? t.fields[labelField] : root : root);\n }\n else \n createTiddlyText(createTiddlyLink(place, root,false,"leaf"),t&&labelField ? t.fields[labelField] ? t.fields[labelField] : root : root);\n }\n if (childNodes.length && depth) {\n var d = createTiddlyElement(place,"div",null,"subtree");\n d.style.display= isOpen ? "block" : "none";\n if (sortField)\n childNodes.sort(function(a, b){\n var fa=a.fields[sortField];\n var fb=b.fields[sortField];\n return (fa==undefined && fb==undefined) ? a.title < b.title ? -1 : a.title > b.title ? 1 : 0 : (fa==undefined && fb!=undefined) ? 1 :(fa!=undefined && fb==undefined) ? -1 : fa < fb ? -1 : fa > fb ? 1 : 0;\n })\n for (var cpt=0; cpt<childNodes.length; cpt++)\n this.createSubTree(d, id, childNodes[cpt].title, excludeTag, ancestors.concat(root), level-1, depth-1, sortField, labelField, showButtons); \n } \n}\n\nconfig.macros.tagsTree.onClick = function(e){\n var id = this.getAttribute("treeId");\n var tiddler = this.getAttribute("tiddler"); \n var n = this.parentNode.nextSibling;\n var isOpen = n.style.display != "none";\n if(config.options.chkAnimate && anim && typeof Slider == "function")\n anim.startAnimating(new Slider(n,!isOpen,null,"none"));\n else\n n.style.display = isOpen ? "none" : "block";\n this.firstChild.nodeValue = isOpen ? config.macros.tagsTree.expand : config.macros.tagsTree.collapse;\n config.macros.tagsTree.trees[id][tiddler]=!isOpen;\n return false;\n}\n\nconfig.macros.tagsTree.getChildNodes = function(root ,ancestors){\n var childs = store.getTaggedTiddlers(root);\n var result = new Array();\n for (var cpt=0; cpt<childs.length; cpt++)\n if (childs[cpt].title!=root && ancestors.indexOf(childs[cpt].title)==-1) result.push(childs[cpt]);\n return result;\n}\n\nconfig.macros.tagsTree.getRootTags = function(excludeTag){\n var tags = store.getTags(excludeTag);\n tags.sort(function(a,b) {return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : (a[0].toLowerCase() == b[0].toLowerCase() ? 0 : +1);});\n var result = new Array();\n for (var cpt=0; cpt<tags.length; cpt++) {\n var t = store.getTiddler(tags[cpt][0]);\n if (!t || t.tags.length==0) result.push(t ? t : {title:tags[cpt][0],fields:{}});\n }\n return result;\n}\n\nconfig.macros.tagsTree.getId = function(element){\n while (!element.id && element.parentNode) element=element.parentNode;\n return element.id ? element.id : "<html>";\n}\n\nconfig.shadowTiddlers.TagsTreeStyleSheet = "/*{{{*/\sn";\nconfig.shadowTiddlers.TagsTreeStyleSheet +=".leaf, .subtree {display:block; margin-left : 0.5em}\sn";\nconfig.shadowTiddlers.TagsTreeStyleSheet +=".subtree {margin-bottom:0.5em}\sn";\nconfig.shadowTiddlers.TagsTreeStyleSheet +="#mainMenu {text-align:left}\sn";\nconfig.shadowTiddlers.TagsTreeStyleSheet +=".branch .button {border:1px solid #DDD; color:#AAA;font-size:9px;padding:0 2px;margin-right:0.3em;vertical-align:middle;text-align:center;}\sn";\nconfig.shadowTiddlers.TagsTreeStyleSheet +="/*}}}*/";\n\nstore.addNotification("TagsTreeStyleSheet", refreshStyles); \n\nconfig.shadowTiddlers.MainMenu="<<tagsTree>>"\n\nconfig.shadowTiddlers.PageTemplate = config.shadowTiddlers.PageTemplate.replace(/id='mainMenu' refresh='content' /,"id='mainMenu' refresh='content' force='true' ")\n\n//}}}
Renata asked me how she could use ''special'' characters in her finding aids. There are basically three ways to do but I can't say which is easier. \n\n!!!Identifying Characters\n\nBefore we get to the three ways the first thing you need to do is identify the character you want to insert. To do this you have to use a ''code table''. I found [[this page|http://www.alanwood.net/unicode/latin_1_supplement.html>]] to be helpful in identifying my characters. (//There are others out there on the web, none of which I thought particularly better//). Latin-1 is where most of the characters are but you made need to look\nat some of the other code tables. \n\nEach row of the table has visual representation of the character, its code in both decimal and hex format, the named character entity and \na little explanation. The image below is an example.\n\n[img[http://library.wcsu.edu/CSU/archives/wiki/uploads/ishot-1.png]]\n\n!!!The Three Ways\n\n!!!!!Enter the Codes Directly\nJust enter the code directly in your document like {{{À}}} for decimal or {{{À}}}for hex in the example above. Notice the hex needs that additional x to tell it that the code is hexidecimal. This works for all XML documents but unless you do a lot of them I think it's hard to remember the numbers. \n\n!!!!!Use Named Character Entities\n You need to download this file ([[ent.zip|http://library.wcsu.edu/CSU/archives/wiki/uploads/ent.zip]]) and put it in the same place as the {{{ead.dtd}}} file and unzip it. \n This is going to put a bunch of iso-...ent files in that directory. \n\n The DTD loads all those entities for you so now you can use the ''names'' rather than the numbers. In the above example you would write {{{À}}} rather than the numbers. IMO names are easier to remember than numbers. \n\n!!!!!Using Named Character Entities (but only a few) Along with Boiler Plate Text\nIf you're not using the DTD or you only have a few characters that you need to use you can embed them in you document like \n\n{{{\n<!DOCTYPE ead PUBLIC "+//ISBN 1-931666-00-8//DTD ead.dtd (Encoded Archival Description (EAD) Version 2002)//EN"\n "http://library.ccsu.edu/cpaaead/ead.dtd"[\n <!ENTITY Agrave "À">\n <!ENTITY collection "Long Name of Collection that I want to abbreviate">\n ]>\n}}}\n\nNotice that the entity declarations are wrapped in square brackets []. To use the entities you just enclose them as normal {{{À}}}. The second is an example of using an entity for some standard text. \n
I 've think we're ready to create a "networked" folder on your machine where you can deposit your finding aids. \n\nHere's what I think should work:\n\n* from the "Start" bar choose "my networked places";\n* choose "add a network place" (left hand menu);\n* hit the "next" button to use the wizard\n* choose another network location;\n* enter "http://library.wcsu.edu:80/dav/cao/" plus either "ccsu, ecsu, scsu, or statelib " in the box and then hit next;\n* use the user name (your name) and password (your password);\n* give this folder a resonable name ("EAD folder or CT archivist project")\n* it will tell you that it "Completed". Uncheck the box "open when I click finish."\n* click finish\n* click on the new folder and login with user name and password\n* you should see a README file\n\nWhen you're ready to add your files simple drag them to this folder. They\nwill be indexed that night. To remove a file just drag it out of this\nfolder. \n\nLet me know if there is a problem,\n\n-- BK\n
1. Optimally, the content of the EAD's eadid should be the same prefix as the filename of the EAD document. That is, an EAD file named "findingAid.xml" should have an eadid value of "findingAid".\n\nSee the example below for a file named: "findingAid.xml":\n\n<eadid mainagencycode="US-ctdabn" \n url="http://library.wcsu.edu/web/about/units/archives/findingaids/findingAid.xml" \n identifier="RG6">findingAid</eadid>\n\n\n2. Filenames should be lower case if possible, camelCase if necessary but filenames ARE case sensitive. Filenames should NOT contain any spaces and should be alpha-numeric (no hyphens, dollar signs, periods, ampersands, etc.)\n
Powered by [[ZiddlyWiki|http://ziddlywiki.com]]\n
put your text here
<<tagging [[News Item]]>>
Notice in the example below the mainagencycode="US-ctdabn" \n\nThis attribute MUST be present in the eadid tag to identify which repository the finding aid is from.\n\nYou may determine whether the Library of Congress has a code for your repository by searching for the code at this link:\nhttp://www.loc.gov/marc/organizations/org-search.php\n\nYou then append to the begining of that code the following (uppercase): "US-"\n\nFor example:\n\n<eadid mainagencycode="US-ctdabn" url="http://library.wcsu.edu/web/about/units/archives/findingaids/academicPrograms.xml" identifier="RG 6">academicPrograms</eadid>\n\nIf the library of congress does not have a code for your repository, the CAO will establish one for your finding aids and that will need to be placed as an attribute in the eadid of all your repository's finding aids.\n\n<<tag Coding>>
/***\n|Name|TagCloudPlugin|\n|Source|http://www.TiddlyTools.com/#TagCloudPlugin|\n|Version|1.6.0|\n|Author|Eric Shulman|\n|Original Author|Clint Checketts|\n|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|plugin|\n|Requires||\n|Overrides||\n|Description|present a 'cloud' of tags (or links) using proportional font display|\n!Usage\n<<<\n{{{\n<<cloud type action:... limit:... tag tag tag ...>>\n<<cloud type action:... limit:... +TiddlerName>>\n<<cloud type action:... limit:... =tagvalue>>\n}}}\nwhere:\n* //type// is a keyword, one of:\n** ''tags'' (default) - displays a cloud of tags, based on frequency of use\n** ''links'' - displays a cloud of tiddlers, based on number of links //from// each tiddler\n** ''references'' - displays a cloud of tiddlers, based on number of links //to// each tiddler\n* ''action:popup'' (default) - clicking a cloud item shows a popup with links to related tiddlers<br>//or//<br> ''action:goto'' - clicking a cloud item immediately opens the tiddler corresponding to that item\n* ''limit:N'' (optional) - restricts the cloud display to only show the N most popular tags/links\n* ''tag tag tag...'' (or ''title title title'' if ''links''/''references'' is used)<br>shows all tags/links in the document //except// for those listed as macro parameters\n* ''+TiddlerName''<br>shows tags/links read from a space-separated, bracketed list stored in a separate tiddler.\n* ''=tagvalue'' (//only if type=''tags''//)<br>shows only tags that are themselves tagged with the indicated tag value (i.e., ~TagglyTagging usage)\n//note: for backward-compatibility, you can also use the macro {{{<<tagCloud ...>>}}} in place of {{{<<cloud ...>>}}}//\n<<<\n!Examples\n<<<\n//all tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//\n{{{<<cloud systemConfig excludeMissing script>>}}}\n{{groupbox{<<cloud systemConfig excludeMissing script>>}}}\n//top 10 tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//\n{{{<<cloud limit:10 systemConfig excludeMissing script>>}}}\n{{groupbox{<<cloud limit:10 systemConfig excludeMissing script>>}}}\n//tags listed in// [[FavoriteTags]]\n{{{<<cloud +FavoriteTags>>}}}\n{{groupbox{<<cloud +FavoriteTags>>}}}\n//links to tiddlers tagged with 'package'//\n{{{<<cloud action:goto =package>>}}}\n{{groupbox{<<cloud action:goto =package>>}}}\n//top 20 most referenced tiddlers//\n{{{<<cloud references limit:20>>}}}\n{{groupbox{<<cloud references limit:20>>}}}\n//top 20 tiddlers that contain the most links//\n{{{<<cloud links limit:20>>}}}\n{{groupbox{<<cloud links limit:20>>}}}\n<<<\n!Revisions\n<<<\n2009.02.26 [1.6.0] added {{{action:...}}} parameter to apply popup vs. goto action when clicking cloud items\n2009.02.05 [1.5.0] added ability to show links or back-links (references) instead of tags and renamed macro to {{{<<cloud>>}}} to reflect more generalized usage.\n2008.12.16 [1.4.2] corrected group calculation to prevent 'group=0' error\n2008.12.16 [1.4.1] revised tag filtering so excluded tags don't affect calculations\n2008.12.15 [1.4.0] added {{{limit:...}}} parameter to restrict the number of tags displayed to the top N most popular\n2008.11.15 [1.3.0] added {{{+TiddlerName}}} parameter to include only tags that are listed in the indicated tiddler\n2008.09.05 [1.2.0] added '=tagname' parameter to include only tags that are themselves tagged with the specified value (i.e., ~TagglyTagging usage)\n2008.07.03 [1.1.0] added 'segments' property to macro object. Extensive code cleanup\n<<<\n!Code\n***/\n//{{{\nversion.extensions.TagCloudPlugin= {major: 1, minor: 6 , revision: 0, date: new Date(2009,2,26)};\n//Originally created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman\n//Currently maintained and enhanced by Eric Shulman\n//}}}\n//{{{\nconfig.macros.cloud = {\n tagstip: "%1 tiddlers tagged with '%0'",\n refslabel: " (%0 references)",\n refstip: "%1 tiddlers have links to '%0'",\n linkslabel: " (%0 links)",\n linkstip: "'%0' has links to %1 other tiddlers",\n groups: 9,\n init: function() {\n config.macros.tagCloud=config.macros.cloud; // for backward-compatibility\n config.shadowTiddlers.TagCloud='<<cloud>>';\n config.shadowTiddlers.StyleSheetTagCloud=\n '/*{{{*/\sn'\n +'.tagCloud span {line-height: 3.5em; margin:3px;}\sn'\n +'.tagCloud1{font-size: 80%;}\sn'\n +'.tagCloud2{font-size: 100%;}\sn'\n +'.tagCloud3{font-size: 120%;}\sn'\n +'.tagCloud4{font-size: 140%;}\sn'\n +'.tagCloud5{font-size: 160%;}\sn'\n +'.tagCloud6{font-size: 180%;}\sn'\n +'.tagCloud7{font-size: 200%;}\sn'\n +'.tagCloud8{font-size: 220%;}\sn'\n +'.tagCloud9{font-size: 240%;}\sn'\n +'/*}}}*/\sn';\n setStylesheet(store.getTiddlerText('StyleSheetTagCloud'),'tagCloudsStyles');\n },\n getLinks: function(tiddler) { // get list of links to existing tiddlers and shadows\n if (!tiddler.linksUpdated) tiddler.changed();\n var list=[]; for (var i=0; i<tiddler.links.length; i++) {\n var title=tiddler.links[i];\n if (store.isShadowTiddler(title)||store.tiddlerExists(title))\n list.push(title);\n }\n return list;\n },\n handler: function(place,macroName,params) {\n // unpack params\n var inc=[]; var ex=[]; var limit=0; var action='popup';\n var links=(params[0]&¶ms[0].toLowerCase()=='links'); if (links) params.shift();\n var refs=(params[0]&¶ms[0].toLowerCase()=='references'); if (refs) params.shift();\n if (params[0]&¶ms[0].substr(0,7).toLowerCase()=='action:')\n action=params.shift().substr(7).toLowerCase();\n if (params[0]&¶ms[0].substr(0,6).toLowerCase()=='limit:')\n limit=parseInt(params.shift().substr(6));\n if (params.length) {\n if (params[0].substr(0,1)=='+') { // get tag list from tiddler\n var inc=store.getTiddlerText(params[0].substr(1),'').readBracketedList();\n } else if (params[0].substr(0,1)=='=') { // get tag list using tagged tags\n var tagged=store.getTaggedTiddlers(params[0].substr(1));\n for (var t=0; t<tagged.length; t++) inc.push(tagged[t].title);\n } else ex=params; // exclude params\n }\n // get all items, include/exclude specific items\n var items=[];\n var list=(links||refs)?store.getTiddlers('title','excludeLists'):store.getTags();\n for (var t=0; t<list.length; t++) {\n var title=(links||refs)?list[t].title:list[t][0];\n if (links) var count=this.getLinks(list[t]).length;\n else if (refs) var count=store.getReferringTiddlers(title).length;\n else var count=list[t][1];\n if ((!inc.length||inc.contains(title))&&(!ex.length||!ex.contains(title)))\n items.push({ title:title, count:count });\n }\n if(!items.length) return;\n // sort by decending count, limit results (optional)\n items=items.sort(function(a,b){return(a.count==b.count)?0:(a.count>b.count?-1:1);});\n while (limit && items.length>limit) items.pop();\n // find min/max and group size\n var most=items[0].count;\n var least=items[items.length-1].count;\n var groupSize=(most-least+1)/this.groups;\n // sort by title and draw the cloud of items\n items=items.sort(function(a,b){return(a.title==b.title)?0:(a.title>b.title?1:-1);});\n var cloudWrapper = createTiddlyElement(place,'div',null,'tagCloud',null);\n for (var t=0; t<items.length; t++) {\n cloudWrapper.appendChild(document.createTextNode(' '));\n var group=Math.ceil((items[t].count-least)/groupSize)||1;\n var className='tagCloudtag tagCloud'+group;\n var tip=refs?this.refstip:links?this.linkstip:this.tagstip;\n tip=tip.format([items[t].title,items[t].count]);\n if (action=='goto') { // TAG/LINK/REFERENCES GOTO\n var btn=createTiddlyLink(cloudWrapper,items[t].title,true,className);\n btn.title=tip;\n btn.style.fontWeight='normal';\n } else if (!links&&!refs) { // TAG POPUP\n var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,onClickTag,className);\n btn.setAttribute('tag',items[t].title);\n } else { // LINK/REFERENCES POPUP\n var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,\n function(ev) { var e=ev||window.event; var cmt=config.macros.cloud;\n var popup = Popup.create(this);\n var title = this.getAttribute('tiddler');\n var count = this.getAttribute('count');\n var refs = this.getAttribute('refs')=='T';\n var links = this.getAttribute('links')=='T';\n var label = (refs?cmt.refslabel:cmt.linkslabel).format([count]);\n createTiddlyLink(popup,title,true);\n createTiddlyText(popup,label);\n createTiddlyElement(popup,'hr');\n if (refs) {\n popup.setAttribute('tiddler',title);\n config.commands.references.handlePopup(popup,title);\n }\n if (links) {\n var tiddler = store.fetchTiddler(title);\n var links=config.macros.cloud.getLinks(tiddler);\n for(var i=0;i<links.length;i++)\n createTiddlyLink(createTiddlyElement(popup,'li'),\n links[i],true);\n }\n Popup.show();\n e.cancelBubble=true; if(e.stopPropagation) e.stopPropagation();\n return false;\n }, className);\n btn.setAttribute('tiddler',items[t].title);\n btn.setAttribute('count',items[t].count);\n btn.setAttribute('refs',refs?'T':'F');\n btn.setAttribute('links',links?'T':'F');\n btn.title=tip;\n }\n }\n }\n};\n//}}}
<tabs metting>\n<tab Agenda>\nProposed agenda for June 10th meeting at the State Archives:\n * Improved functionality\n * Moving forward... outreach blurb, discuss content and distribution\n * Promotion - NEA other venues?\n * Technical issues encountered so far\n * Encoding progress\n * Other business?\n\n</tab>\n<tab Minutes>\nProposed agenda for June 10th meeting at the State Archives:\n * Improved functionality \n- javascript provided for stylesheets that find keywords\n- File counts for each repository\n- bug fixes\n- descriptive pages added\n\n * Moving forward... outreach blurb, discuss content and distribution\n- members will make content suggestions for descriptive pages\n- venues discussed for presenting the CAO to prospective repositories.\n * Promotion - NEA other venues?\n- article discussed for publiscation in NEA - Brian and Renata\n * Technical issues encountered so far\n- discussed various ways to insure clean coding\n * Encoding progress\n- progress discussed among the CSUs and State Library with bringing more of the content into the CAO\n * Other business?\n- meet again in Sept\n</tab>\n</tabs>
/***\n|''Name:''|TiddlyLightBox|\n|''Date:''|Jan 1, 2006|\n|''Version:''|1.0 beta|\n|''Author:''|Saq Imtiaz|\n|''Location:''|http://tw.lewcid.org/#TiddlyLightBoxPlugin|\n|''Documentation:''|http://tw.lewcid.org/#TiddlyLightBoxDocs|\n|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|\n|''Based on:''|DC3.LightBox<br>Light Box Gone Wild <br>Ibox|\n\n!!Code\n***/\n//{{{\nconfig.macros.imagebox ={};\nconfig.macros.imagebox.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var e = place.lastChild;\n e.onclick = function(){TiddlyLightBox.initBox('image',this,params[1],params[2],params[0]);return false;};\n}\n\nconfig.macros.divbox ={};\nconfig.macros.divbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n if (params[0]!=".")\n createTiddlyButton(place,params[0],params[0],function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;});\n else\n {\n var e = place.lastChild;\n e.onclick = function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;};\n }\n}\n\nconfig.macros.tiddlerbox ={}\nconfig.macros.tiddlerbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n config.macros.divbox.handler(place,macroName,[params[0],"tiddler:"+params[1],params[2],params[3],params[4]]);\n return false;\n}\n\nstore.addNotification("TiddlyLightBoxStyles",refreshStyles);\n\nif (!window.TiddlyLightBox)\n window.TiddlyLightBox = {};\n var loadingImage = "indicator.gif";\n window.TiddlyLightBox =\n {\n _curBox: null, // [sentinel]\n\n lightBoxHtml : '<div id="lightBoxOverlay" onclick="TiddlyLightBox.hideBox()" style="display:none"></div><div id="lightboxprogress" style="display:none;"><img src=\s''+loadingImage+'\s' alt=\s'loading\s' style="width:128px;height:128px;"></div><div class="lightBox" id="lightBox" style="display:none"><div id="lightBoxContent"></div><div id="lightBoxTitle">This is a title</div><div id="lightBoxClose"><a href:"#" onclick="TiddlyLightBox.hideBox();return false;">Click to close</a></div></div>',\n\n createBoxWrapper : function()\n {\n var wrapper = createTiddlyElement(document.getElementsByTagName("body")[0],"div","tiddlyLightBoxWrapper");\n wrapper.innerHTML = this.lightBoxHtml;\n },\n\n initBox : function(contentType,url,w,h,text)\n {\n if (this._curBox)\n return;\n this.showProgress();\n this.hideSelects("hidden");\n this.showBg();\n this._curBox = true;\n this.sizeTheBox(contentType,w,h);\n if (contentType == 'image')\n this.showImage(url,text);\n else if (contentType == 'html')\n this.showHtml(url,text);\n return false;\n },\n \n sizeTheBox : function(contentType,w,h)\n {\n var box = document.getElementById("lightBoxContent");\n if (w && isNaN(parseInt(w)))\n {\n addClass(box,w);\n }\n else if (w ||h || contentType == 'html')\n {\n box.style.width = w? w+ "px" : "450px";\n box.style.height = h? h+ "px" : "280px";\n if (contentType=='image')\n setStylesheet("#lightBoxContent img{height:100%;width:100%;}","lightBoxImageSizeHack");\n }\n },\n\n showProgress : function()\n {\n var progress = document.getElementById("lightboxprogress");\n progress.style.display='';\n this._center(progress);\n },\n \n hideProgress: function()\n {\n var progress = document.getElementById("lightboxprogress");\n progress.style.display='none';\n },\n\n //this function lifted from Lightbox Gone Wild\n hideSelects: function(visibility)\n {\n var selects = document.getElementsByTagName('select');\n for(i = 0; i < selects.length; i++)\n {\n selects[i].style.visibility = visibility;\n }\n },\n\n showBg: function()\n {\n var overlay = document.getElementById('lightBoxOverlay');\n if (config.browser.isIE)\n {\n overlay.style.height = Math.max(document.documentElement.scrollHeight,document.documentElement.offsetHeight);\n overlay.style.width = document.documentElement.scrollWidth;\n }\n overlay.style.display = 'block';\n },\n\n showImage: function (url,text)\n {\n imgPreloader = new Image();\n imgPreloader.onload = function ()\n {\n var lb = document.getElementById("lightBoxContent");\n lb.innerHTML = "<img src="+url+">";\n lb.onclick = function(){TiddlyLightBox.hideBox();return false;};\n TiddlyLightBox.posBox(text);\n };\n imgPreloader.src = url;\n },\n \n showHtml : function(theID,text)\n {\n var lb = document.getElementById("lightBoxContent");\n if (theID.indexOf("tiddler:")==-1)\n lb.innerHTML = document.getElementById(theID).innerHTML;\n else\n { \n wikify(store.getTiddlerText(theID.replace("tiddler:","")),lb);\n lb.className='tiddler';\n }\n lb.style.overflow = "auto";\n this.posBox(text);\n },\n\n posBox: function(text)\n {\n this.setTitle(text);\n this.hideProgress();\n var lb = document.getElementById("lightBox");\n lb.style.display = "";\n lb.style.visibilty = "hidden";\n lb.style.position = "absolute";\n this._center(lb);\n if(!TiddlyLightBox._curBox) return;\n lb.style.visibility = "visible";\n lb.style.display = "block";\n },\n\n setTitle: function(text)\n {\n document.getElementById("lightBoxTitle").innerHTML= (text==undefined)? '': text;\n },\n\n _center: function(lb)\n {\n var lbSize = new TiddlyLightBox.getElementSize(lb);\n lb.style.left = (Math.round(findWindowWidth()/2) - (lbSize.width /2) + findScrollX())+'px';\n lb.style.top = (Math.round(findWindowHeight()/2) - (lbSize.height /2) + findScrollY())+'px';\n },\n\n //this function lifted from Ibox\n getElementSize : function(elem)\n {\n this.width = elem.offsetWidth || elem.style.pixelWidth;\n this.height = elem.offsetHeight || elem.style.pixelHeight;\n },\n\n hideBox: function()\n {\n if(!this._curBox)\n return;\n document.getElementById("tiddlyLightBoxWrapper").innerHTML= this.lightBoxHtml;\n setStylesheet("","lightBoxImageSizeHack");\n this._curBox = null;\n return false;\n }\n}\n\nTiddlyLightBox.createBoxWrapper();\n\nStory.prototype.findContainingTiddler = function(e)\n{\n while(e && (!hasClass(e,"tiddler") || !e.getAttribute("tiddler")))\n e = e.parentNode;\n return(e);\n}\n\nconfig.shadowTiddlers.TiddlyLightBoxStyles="/*{{{*/\sn#lightBoxOverlay {\sn position:absolute;\sn top: 0;\sn left: 0;\sn width: 100%;\sn height: 100%;\sn z-index: 90; \sn background-color: #000;\sn -moz-opacity: 0.75;\sn opacity: .75;\sn filter: alpha(opacity=75);\sn}\sn#lightBoxOverlay[id]{ \sn position: fixed;\sn}\sn\sn#lightboxprogress { \sn margin:0;padding:0;\sn position: absolute;\sn z-index:95;\sn}\sn\sndiv.lightBox {\sn background: #fff;\sn color: #fff;\sn border: 4px solid #525252;\snpadding:20px 20px 25px 20px; position:absolute; z-index:99;\sn}\sn\sn#lightBoxClose {text-align:right; color:#000; font-size:1.0em; position:absolute; bottom:6px; right:20px;}\sn#lightBoxClose a{color:#666; border-bottom:1px solid #666;cursor:pointer;}\sn#lightBoxClose a:hover {color:#111; border-bottom:1px solid #666; cursor:pointer; background:transparent;}\sn\sn#lightBoxContent {border:1px solid #525252;color:#000; background:#fff;}\sn#lightBox .tiddler {background:#fff;}\sn\sn#lightBoxContent img {border:0;margin:0;padding:0;display:block;cursor:pointer;}\sn\sn#lightBoxTitle {padding:0px; font-weight:bold; position:absolute; left:20px;bottom:6px; font-size:1.1em; color:#000;}\sn\sn/*}}}*/";\n//}}}
We need a little bit of information so that we can set up a space for you in\nCAO. \n\n<html>\n <form id="caoapp" action="/staff/printenv" method="GET">\n <fieldset>\n <legend>Institution Information</legend>\n <label for="institution">Institution</label>\n <br/>\n <input id="institution" name="institution" type="text" size="60"/>\n <br/>\n <label for="contact">Contact</label>\n <br/>\n <input id="contact" name="contact" type="text" size="60"\s>\n <br/>\n <label for="contact-email">Contact email</label>\n <br/>\n <input id="contact-email" name="contact-email" type="text" size="60"\s>\n <br/>\n <label for="address">Address</label>\n <br/>\n <input id="address" name="address" type="text" size="60"\s>\n <br/>\n <label for="city">City</label>\n <br/>\n <input id="city" name="city" type="text" size="60"\s>\n <br/>\n <label for="state">State</label>\n <br/>\n <input id="state" name="state" type="text" value="CT"/>\n <br/>\n <label for="zip">Zip</label>\n <br/>\n <input id="zip" name="zip" type="text" />\n <br/>\n <label for="website">Website URL</label>\n <br/>\n <input id="website" name="website" type="text" size="60"\s>\n <br/>\n <label for="code">MARC Code</label>\n <br/>\n <input id="code" name="code" type="text" size="60"\s>\n <br/>\n </fieldset>\n <fieldset>\n <legend class="roundedCornors">About Your Collections</legend>\n <label for="why">Why are you interested in CAO?</label>\n <br/>\n <textarea id="why" name="why" cols="55" rows="3"></textarea>\n <br/>\n <label for="audience">What audience do you hope to attract?</label>\n <br/>\n <input id="audience" name="audience" type="text" size="60"\s>\n <br/>\n <label for="collection">The number of collection in your archive.</label>\n <br/>\n <input id="collection" name="collection" type="text" size="60"\s>\n <br/>\n </fieldset>\n <p align="center"><input type="submit" id="appsubmit" name="submit" value="Submit"/></p>\n </form>\n</html>\n
To get started with this blank ZiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the ZiddlyWiki is opened\n
<<option chkRegExpSearch>> ~RegExp Search\n<<option chkCaseSensitiveSearch>> Case sensitive search\n<<option chkAnimate>> Enable animations\n<<option chkOpenInNewWindow>> Open links in new window\n<<option chkToggleLinks>> Links close open tiddlers\n<<option chkConfirmDelete>> Confirm before deleting\n<<option chkForceMinorUpdate>> Preserve date/time on edit\n<<option chkInsertTabs>> Insert tab characters\n<<option txtMaxEditRows>> Maximum editor rows\n
Today was the day we got off the ground.
if (readOnly) setStylesheet("#sidebar { display:none !important; }\n#displayArea { margin-right:1em !important; }","webSideStory");
<tabs meeting>\n<tab Agenda>\n!!!Agenda\n1) Discuss refinements of the beta test (http://library.wcsu.edu/ctarchivists/) and discuss functionality of the search application.\n\n2) Discuss the workflow of establishment of a "network place" on local machines for !EADs to be submitted.\n\n3) Which CT repositories will be asked to participate\n\n4) "Name the database" - a game show where everybody's a winner.\n\n5) How are we doing in EAD creation\n\n6) What are our EAD Guidelines. So far we have some front matter rules:\n\n i. <eadid> - must be the filename of the EAD document. That is: for an ead document named: smith.xml, the <eadid> should be: <eadid>smith</eadid>\n\n ii. <eadid> - the mainagencycode attribute needs to be set to your repository. If you use the schema, the mainagency code must be coupled with the country code -US (in uppercase). \n \n According to LC the codes we should use are these:\n\n - WCSU=US-ctdabn\n\n - CCSU=US-ctnbt\n\n - SCSU=US-ctnhn\n\n - ECSU=US- ctwilln\n\n - State Lib=US-ct\n\n So, for example, an ead file named wcsuEphemera.xml should have an eadid like this: <eadid mainagencycode="US-ctdabn" identifier="RG008" url="http://www.whereYourEADLives/onYourServer/filename.xml">filename.xml</eadid>\n\n iii. All !EADs that are submitted to the database should be well formed and valid against the DTD OR the schema.\n\n I'm sure there are other things, too, but for now this will do.\n\n7) Do we want to be an official CONSULS committee - there are some stipulations attached to that status.\n\n8) Future funding possibilities\n\n9) Next meeting place.\n</tab>\n<tab Minutes>\n!!!This is a Best of Memory Rendition\n\nFrom stevens Wed Mar 4 13:01:47 -0500 2009\nFrom: stevens\nDate: Wed, 04 Mar 2009 13:01:47 -0500\nSubject: \nMessage-ID: <20090304130147-0500@library.wcsu.edu>\n\n 1. Discuss refinements of the beta test (http://library.wcsu.edu/ctarchivists/) and discuss functionality of the search application.\n* change language on the "search containers" and add link out to finding aid\n\n 2. Discuss the workflow of establishment of a "network place" on local machines for EADs to be submitted.\n* No problems reported... with new name of DB CT Archives Online (cao) the network place needs to be set up again.\n\n 3. Which CT repositories will be asked to participate\nUConn\nConnecticut Historical\nMystic Seaport\nNew Haven Historical\nWesleyan\nTrinity\n\n\n 4. "Name the database" - a game show where everybody's a winner.\n\nConnecticut History Online\n \n 5. How are we doing in EAD creation\n\nBrian K will circulate a version of OAI's tool for creating collection level EAD... other means discussed but still a challenge.\n 6. What are our EAD Guidelines. So far we have some front matter rules:\n\n 1. <eadid> - must be the filename of the EAD document. That is: for an ead document named: smith.xml, the <eadid> should be: <eadid>smith</eadid>\n 2. <eadid> - the mainagencycode attribute needs to be set to your repository. If you use the schema, the mainagency code must be coupled with the country code -US (in uppercase).\n\n According to LC the codes we should use are these:\n * WCSU=US-ctdabn\n * CCSU=US-ctnbt\n * SCSU=US-ctnhn\n * ECSU=US- ctwilln\n * State Lib=US-ct\n\n So, for example, an ead file named wcsuEphemera.xml should have an eadid like this: <eadid mainagencycode="US-ctdabn" identifier="RG008" url="http://www.whereYourEADLives/onYourServer/filename.xml">filename.xml</eadid>\n\n 3. All EADs that are submitted to the database should be well formed and valid against the DTD OR the schema.\n\n \n 7. Do we want to be an official CONSULS committee - there are some stipulations attached to that status.\n\nThis will be readdressed at the next meeting.\n\n 8. Future funding possibilities\nMark Jones, CT State Archivist, discussed possibilities for SNAP grants and the CT State Historical Records Advisory Board. Pursuit of grant money will be deferred until the CAO database is more developed. \n\n 9. Next meeting place.\nState Archives, Central or possibly ECSU. TBD.\n</tab>\n</tabs>
[[Welcome]]
/***\n|Name|InlineJavascriptPlugin|\n|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|\n|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|\n|Version|1.9.5|\n|Author|Eric Shulman|\n|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|plugin|\n|Requires||\n|Overrides||\n|Description|Insert Javascript executable code directly into your tiddler content.|\n''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.\n!!!!!Documentation\n>see [[InlineJavascriptPluginInfo]]\n!!!!!Revisions\n<<<\n2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts\n2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax\n|please see [[InlineJavascriptPluginInfo]] for additional revision details|\n2005.11.08 [1.0.0] initial release\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};\n\nconfig.formatters.push( {\n name: "inlineJavascript",\n match: "\s\s<script",\n lookahead: "\s\s<script(?: src=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: label=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: title=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: key=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?( show)?\s\s>((?:.|\s\sn)*?)\s\s</script\s\s>",\n\n handler: function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var src=lookaheadMatch[1];\n var label=lookaheadMatch[2];\n var tip=lookaheadMatch[3];\n var key=lookaheadMatch[4];\n var show=lookaheadMatch[5];\n var code=lookaheadMatch[6];\n if (src) { // external script library\n var script = document.createElement("script"); script.src = src;\n document.body.appendChild(script); document.body.removeChild(script);\n }\n if (code) { // inline code\n if (show) // display source in tiddler\n wikify("{{{\sn"+lookaheadMatch[0]+"\sn}}}\sn",w.output);\n if (label) { // create 'onclick' command link\n var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));\n var fixup=code.replace(/document.write\ss*\s(/gi,'place.bufferedHTML+=(');\n link.code="function _out(place,tiddler){"+fixup+"\sn};_out(this,this.tiddler);"\n link.tiddler=w.tiddler;\n link.onclick=function(){\n this.bufferedHTML="";\n try{ var r=eval(this.code);\n if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)\n var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);\n if(this.bufferedHTML.length)\n s.innerHTML=this.bufferedHTML;\n if((typeof(r)==="string")&&r.length) {\n wikify(r,s,null,this.tiddler);\n return false;\n } else return r!==undefined?r:false;\n } catch(e){alert(e.description||e.toString());return false;}\n };\n link.setAttribute("title",tip||"");\n var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';\n URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\sn/g,' ')));\n URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';\n link.setAttribute("href",URIcode);\n link.style.cursor="pointer";\n if (key) link.accessKey=key.substr(0,1); // single character only\n }\n else { // run script immediately\n var fixup=code.replace(/document.write\ss*\s(/gi,'place.innerHTML+=(');\n var c="function _out(place,tiddler){"+fixup+"\sn};_out(w.output,w.tiddler);";\n try { var out=eval(c); }\n catch(e) { out=e.description?e.description:e.toString(); }\n if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);\n }\n }\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n} )\n//}}}\n\n// // Backward-compatibility for TW2.1.x and earlier\n//{{{\nif (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {\n if(limit > 0) text = text.substr(0,limit);\n var wikifier = new Wikifier(text,formatter,null,tiddler);\n return wikifier.wikifyPlain();\n}\n//}}}\n\n// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()\n//{{{\nif (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }\n//}}}
/***\n|''Name:''|TiddlersBarPlugin|\n|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|\n|''Version:''|1.2.5|\n|''Date:''|Jan 18,2008|\n|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|\n|''Author:''|Pascal Collin|\n|''License:''|[[BSD open source license|License]]|\n|''~CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|\n!Demos\nOn [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.\n!Installation\n#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)\n#save and reload\n#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}\n#optionally, adjust StyleSheetTiddlersBar\n!Tips\n*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.\n*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.\n*By default, click on the current tab close all others tiddlers.\n!Configuration options \n<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).\n<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed. \n<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.\n<<option txtPreviousTabKey>> previous tab access key.\n<<option txtNextTabKey>> next tab access key.\n!Code\n***/\n//{{{\nconfig.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;\nconfig.options.chkHideTabsBarWhenSingleTab = config.options.chkHideTabsBarWhenSingleTab ? config.options.chkHideTabsBarWhenSingleTab : false;\nconfig.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "closeOthers";\nconfig.options.txtPreviousTabKey = config.options.txtPreviousTabKey ? config.options.txtPreviousTabKey : "";\nconfig.options.txtNextTabKey = config.options.txtNextTabKey ? config.options.txtNextTabKey : "";\nconfig.macros.tiddlersBar = {\n tooltip : "see ",\n tooltipClose : "click here to close this tab",\n tooltipSave : "click here to save this tab",\n promptRename : "Enter tiddler new name",\n currentTiddler : "",\n previousState : false,\n previousKey : config.options.txtPreviousTabKey,\n nextKey : config.options.txtNextTabKey, \n tabsAnimationSource : null, //use document.getElementById("tiddlerDisplay") if you need animation on tab switching.\n handler: function(place,macroName,params) {\n var previous = null;\n if (config.macros.tiddlersBar.isShown())\n story.forEachTiddler(function(title,e){\n if (title==config.macros.tiddlersBar.currentTiddler){\n var d = createTiddlyElement(null,"span",null,"tab tabSelected");\n config.macros.tiddlersBar.createActiveTabButton(d,title);\n if (previous && config.macros.tiddlersBar.previousKey) previous.setAttribute("accessKey",config.macros.tiddlersBar.nextKey);\n previous = "active";\n }\n else {\n var d = createTiddlyElement(place,"span",null,"tab tabUnselected");\n var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);\n btn.setAttribute("tiddler", title);\n if (previous=="active" && config.macros.tiddlersBar.nextKey) btn.setAttribute("accessKey",config.macros.tiddlersBar.previousKey);\n previous=btn;\n }\n var isDirty =story.isDirty(title);\n var c = createTiddlyButton(d,isDirty ?"!":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");\n c.setAttribute("tiddler", title);\n if (place.childNodes) {\n place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open\n place.insertBefore(d,place.firstChild); \n }\n else place.appendChild(d);\n })\n }, \n refresh: function(place,params){\n removeChildren(place);\n config.macros.tiddlersBar.handler(place,"tiddlersBar",params);\n if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {\n story.refreshAllTiddlers();\n if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});\n config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;\n }\n },\n isShown : function(){\n if (config.options.chkDisableTabsBar) return false;\n if (!config.options.chkHideTabsBarWhenSingleTab) return true;\n var cpt=0;\n story.forEachTiddler(function(){cpt++});\n return (cpt>1);\n },\n selectNextTab : function(){ //used when the current tab is closed (to select another tab)\n var previous="";\n story.forEachTiddler(function(title){\n if (!config.macros.tiddlersBar.currentTiddler) {\n story.displayTiddler(null,title);\n return;\n }\n if (title==config.macros.tiddlersBar.currentTiddler) {\n if (previous) {\n story.displayTiddler(null,previous);\n return;\n }\n else config.macros.tiddlersBar.currentTiddler=""; // so next tab will be selected\n }\n else previous=title;\n }); \n },\n onSelectTab : function(e){\n var t = this.getAttribute("tiddler");\n if (t) story.displayTiddler(null,t);\n return false;\n },\n onTabClose : function(e){\n var t = this.getAttribute("tiddler");\n if (t) {\n if(story.hasChanges(t) && !readOnly) {\n if(!confirm(config.commands.cancelTiddler.warning.format([t])))\n return false;\n }\n story.closeTiddler(t);\n }\n return false;\n },\n onTabSave : function(e) {\n var t = this.getAttribute("tiddler");\n if (!e) e=window.event;\n if (t) config.commands.saveTiddler.handler(e,null,t);\n return false;\n },\n onSelectedTabButtonClick : function(event,src,title) {\n var t = this.getAttribute("tiddler");\n if (!event) event=window.event;\n if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])\n config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);\n return false;\n },\n onTiddlersBarAction: function(event) {\n var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;\n if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);\n },\n createActiveTabButton : function(place,title) {\n if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {\n var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);\n btn.setAttribute("tiddler", title);\n }\n else\n createTiddlyText(place,title);\n }\n}\n\nstory.coreCloseTiddler = story.coreCloseTiddler? story.coreCloseTiddler : story.closeTiddler;\nstory.coreDisplayTiddler = story.coreDisplayTiddler ? story.coreDisplayTiddler : story.displayTiddler;\n\nstory.closeTiddler = function(title,animate,unused) {\n if (title==config.macros.tiddlersBar.currentTiddler)\n config.macros.tiddlersBar.selectNextTab();\n story.coreCloseTiddler(title,false,unused); //disable animation to get it closed before calling tiddlersBar.refresh\n var e=document.getElementById("tiddlersBar");\n if (e) config.macros.tiddlersBar.refresh(e,null);\n}\n\nstory.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle){\n story.coreDisplayTiddler(config.macros.tiddlersBar.tabsAnimationSource,tiddler,template,animate,unused,customFields,toggle);\n var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler; \n if (config.macros.tiddlersBar.isShown()) {\n story.forEachTiddler(function(t,e){\n if (t!=title) e.style.display="none";\n else e.style.display="";\n })\n config.macros.tiddlersBar.currentTiddler=title;\n }\n var e=document.getElementById("tiddlersBar");\n if (e) config.macros.tiddlersBar.refresh(e,null);\n}\n\nvar coreRefreshPageTemplate = coreRefreshPageTemplate ? coreRefreshPageTemplate : refreshPageTemplate;\nrefreshPageTemplate = function(title) {\n coreRefreshPageTemplate(title);\n if (config.macros.tiddlersBar) config.macros.tiddlersBar.refresh(document.getElementById("tiddlersBar"));\n}\n\nensureVisible=function (e) {return 0} //disable bottom scrolling (not useful now)\n\nconfig.shadowTiddlers.StyleSheetTiddlersBar = "/*{{{*/\sn";\nconfig.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .button {border:0}\sn";\nconfig.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .tab {white-space:nowrap}\sn";\nconfig.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar {padding : 1em 0.5em 2px 0.5em}\sn";\nconfig.shadowTiddlers.StyleSheetTiddlersBar += ".tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}\sn";\nconfig.shadowTiddlers.StyleSheetTiddlersBar += ".tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}\sn";\nconfig.shadowTiddlers.StyleSheetTiddlersBar +="/*}}}*/";\nstore.addNotification("StyleSheetTiddlersBar", refreshStyles);\n\nconfig.refreshers.none = function(){return true;}\nconfig.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\s/div>/m,"<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\sn<div id='tiddlerDisplay'></div>");\n\n//}}}
<<tagging HowTo>>
Promoting access to Connecticut's archival resources
config.options.chkTopOfPageMode=true;\nconfig.options.chkSinglePageMode=true;\nconfig.options.chkSinglePagePermalink=true;\nconfig.options.chkOpenInNewWindow=false;\n
/***\n|Name|SinglePageModePlugin|\n|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|\n|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|\n|Version|2.9.6|\n|Author|Eric Shulman - ELS Design Studios|\n|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|plugin|\n|Requires||\n|Overrides|Story.prototype.displayTiddler(), Story.prototype.displayTiddlers()|\n|Options|##Configuration|\n|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|\nThis plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.\n!!!!!Documentation\n>see [[SinglePageModePluginInfo]]\n!!!!!Configuration\n<<<\n<<option chkSinglePageMode>> Display one tiddler at a time\n><<option chkSinglePagePermalink>> Automatically permalink current tiddler\n><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded\n><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited\n<<option chkTopOfPageMode>> Open tiddlers at the top of the page\n<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page\n<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)\n\nNotes:\n* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.\n* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.\n* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.\n<<<\n!!!!!Revisions\n<<<\n2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false\n| Please see [[SinglePageModePluginInfo]] for previous revision details |\n2005.08.15 [1.0.0] Initial Release. Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};\n//}}}\n//{{{\nconfig.paramifiers.SPM = { onstart: function(v) {\n config.options.chkSinglePageMode=eval(v);\n if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {\n config.lastURL = window.location.hash;\n if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);\n }\n} };\n//}}}\n//{{{\nif (config.options.chkSinglePageMode==undefined)\n config.options.chkSinglePageMode=false;\nif (config.options.chkSinglePagePermalink==undefined)\n config.options.chkSinglePagePermalink=true;\nif (config.options.chkSinglePageKeepFoldedTiddlers==undefined)\n config.options.chkSinglePageKeepFoldedTiddlers=false;\nif (config.options.chkSinglePageKeepEditedTiddlers==undefined)\n config.options.chkSinglePageKeepEditedTiddlers=false;\nif (config.options.chkTopOfPageMode==undefined)\n config.options.chkTopOfPageMode=false;\nif (config.options.chkBottomOfPageMode==undefined)\n config.options.chkBottomOfPageMode=false;\nif (config.options.chkSinglePageAutoScroll==undefined)\n config.options.chkSinglePageAutoScroll=false;\n//}}}\n//{{{\nconfig.SPMTimer = 0;\nconfig.lastURL = window.location.hash;\nfunction checkLastURL()\n{\n if (!config.options.chkSinglePageMode)\n { window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }\n if (config.lastURL == window.location.hash) return; // no change in hash\n var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();\n if (tids.length==1) // permalink (single tiddler in URL)\n story.displayTiddler(null,tids[0]);\n else { // restore permaview or default view\n config.lastURL = window.location.hash;\n if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();\n story.closeAllTiddlers();\n story.displayTiddlers(null,tids);\n }\n}\n\n\nif (Story.prototype.SPM_coreDisplayTiddler==undefined)\n Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)\n{\n var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;\n var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed\n var opt=config.options;\n var single=opt.chkSinglePageMode && !startingUp;\n var top=opt.chkTopOfPageMode && !startingUp;\n var bottom=opt.chkBottomOfPageMode && !startingUp;\n if (single) {\n story.forEachTiddler(function(tid,elem) {\n // skip current tiddler and, optionally, tiddlers that are folded.\n if ( tid==title\n || (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))\n return;\n // if a tiddler is being edited, ask before closing\n if (elem.getAttribute("dirty")=="true") {\n if (opt.chkSinglePageKeepEditedTiddlers) return;\n // if tiddler to be displayed is already shown, then leave active tiddler editor as is\n // (occurs when switching between view and edit modes)\n if (tiddlerElem) return;\n // otherwise, ask for permission\n var msg="'"+tid+"' is currently being edited.\sn\sn";\n msg+="Press OK to save and close this tiddler\snor press Cancel to leave it opened";\n if (!confirm(msg)) return; else story.saveTiddler(tid);\n }\n story.closeTiddler(tid);\n });\n }\n else if (top)\n arguments[0]=null;\n else if (bottom)\n arguments[0]="bottom";\n if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {\n window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));\n config.lastURL = window.location.hash;\n document.title = wikifyPlain("SiteTitle") + " - " + title;\n if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);\n }\n if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering\n var isTopTiddler=(tiddlerElem.previousSibling==null);\n if (!isTopTiddler && (single || top))\n tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);\n else if (bottom)\n tiddlerElem.parentNode.insertBefore(tiddlerElem,null);\n else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler\n } else\n this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler\n var tiddlerElem=document.getElementById(story.idPrefix+title);\n if (tiddlerElem&&opt.chkSinglePageAutoScroll) {\n // scroll to top of page or top of tiddler\n var isTopTiddler=(tiddlerElem.previousSibling==null);\n var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);\n // if animating, defer scroll until after animation completes\n var delay=opt.chkAnimate?config.animDuration+10:0;\n setTimeout("window.scrollTo(0,"+yPos+")",delay); \n }\n}\n\nif (Story.prototype.SPM_coreDisplayTiddlers==undefined)\n Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;\nStory.prototype.displayTiddlers = function() {\n // suspend single/top/bottom modes when showing multiple tiddlers\n var opt=config.options;\n var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;\n var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;\n var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;\n this.SPM_coreDisplayTiddlers.apply(this,arguments);\n opt.chkBottomOfPageMode=saveBPM;\n opt.chkTopOfPageMode=saveTPM;\n opt.chkSinglePageMode=saveSPM;\n}\n//}}}
2009/06/04 -When searching "maple" and clicking show relevant containers with the search results, it finds no relevant containers. A container with the heading "Balmforth-Maple corridor" is in the inventory.\n\n2009/06/04- When searching titles of "collier's" and clicking show relevant containers, the application reports that an error occurred on the search.
<<tagging Meeting>>
Formats: [[XML|http://library.wcsu.edu/cao/about?format=xml]] | [[YAML|http://library.wcsu.edu/cao/about?format=yaml]]\n
The following links indicate some kind of bug or issue with the system. \n\n<<tagging Issues>>\n\nWhen searching the terms: danbury industrial corporation, and clicking "show relevant containers" for State Library results, an error is reported.
/***\n|''Name:''|FootnotesPlugin|\n|''Description:''|Create automated tiddler footnotes.|\n|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|\n|''Source:''|http://tw.lewcid.org/#FootnotesPlugin|\n|''Code Repository:''|http://tw.lewcid.org/svn/plugins|\n|''Version:''|2.01|\n|''Date:''|10/25/07|\n|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|\n|''~CoreVersion:''|2.2.2|\n\n!!Usage:\n*To create a footnote, just put the footnote text inside triple backticks.\n*Footnotes are numbered automatically, and listed at the bottom of the tiddler.\n*{{{Creating a footnote is easy. ```This is the text for my footnote```}}}\n*[[Example|FootnotesDemo]]\n***/\n// /%\n//!BEGIN-PLUGIN-CODE\nconfig.footnotesPlugin = {\n backLabel: "back",\n prompt:"show footnote"\n};\n\nconfig.formatters.unshift( {\n name: "footnotes",\n match: "```",\n lookaheadRegExp: /```((?:.|\sn)*?)```/g,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart )\n {\n var tiddler = story.findContainingTiddler(w.output);\n if (!tiddler.notes)\n tiddler.notes = [];\n var title = tiddler.getAttribute("tiddler");\n tiddler.notes.pushUnique(lookaheadMatch[1]);\n var pos = tiddler.notes.indexOf(lookaheadMatch[1]) + 1;\n createTiddlyButton(w.output,pos,config.footnotesPlugin.prompt,function(){var x = document.getElementById(title+"ftn"+pos);window.scrollTo(0,ensureVisible(x)+(ensureVisible(x)<findScrollY()?(findWindowHeight()-x.offsetHeight):0));return false;},"ftnlink",title+"ftnlink"+pos); \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n});\n\nold_footnotes_refreshTiddler = Story.prototype.refreshTiddler;\nStory.prototype.refreshTiddler = function(title,template,force)\n{\n var tiddler = old_footnotes_refreshTiddler.apply(this,arguments);\n if (tiddler.notes && tiddler.notes.length)\n {\n var holder = createTiddlyElement(null,"div",null,"footnoteholder");\n var list = createTiddlyElement(holder,"ol",title+"footnoteholder");\n for (var i=0; i<tiddler.notes.length; i++)\n {\n var ftn = createTiddlyElement(list,"li",title+"ftn"+(i+1),"footnote");\n wikify(tiddler.notes[i]+" ",ftn);\n createTiddlyButton(ftn,"["+config.footnotesPlugin.backLabel+"]",config.footnotesPlugin.backLabel,function(){window.scrollTo(0,ensureVisible(document.getElementById(this.parentNode.id.replace("ftn","ftnlink"))));return false;},"ftnbklink");\n }\n var count = tiddler.childNodes.length;\n for (var j=0; j<count; j++){\n if(hasClass(tiddler.childNodes[j],"viewer")){\n var viewer = tiddler.childNodes[j]; \n }\n }\n viewer.appendChild(holder);\n tiddler.notes = [];\n }\n return tiddler;\n};\n\nsetStylesheet(\n".tiddler a.ftnlink {vertical-align: super; font-size: 0.8em; color:red;}\sn"+\n".tiddler a.ftnlink:hover, .tiddler .footnoteholder a.ftnbklink:hover{color:#fff;background:red;}\sn"+\n".tiddler div.footnoteholder{margin:1.8em 1.0em; padding:0.1em 1.0em 0.1em 1.0em ;border-left: 1px solid #ccc;}"+\n".tiddler footnoteholder ol {font-size: 0.9em; line-height: 1.2em;}\sn"+\n".tiddler .footnoteholder li.footnote {margin: 0 0 5px 0;}\sn"+\n".tiddler .footnoteholder a.ftnbklink{color:red;}\sn","FootNotesStyles");\n//!END-PLUGIN-CODE\n// %/
<<search>>\n<script>\nif (zw.loggedIn) {\nreturn "[[Logout|/cao/about/login/logout]]<<closeAll>><<newTiddler>><<newJournal>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Open options panel'>>";\n}\n</script>
/*{{{*/\n/* CSS by Brian Kennison*/\n/*Version 1.0*/\n/*}}}*/\n/*{{{*/\n\n/* HTML Elements */\nbody { \n //background: url(/cao/about/images/bg.gif) repeat-y center;\n color:#555555;\n font-family:"Trebuchet MS", Arial, Verdana;\n font-size: .90em;\n line-height: 140%;\n margin:0;\n text-align:left;\n}\n\na:link {\n color: #191970;\n text-decoration: none;\n outline: none;\n}\n\na:visited {\n color: #A52A2A;\n text-decoration: none;\n outline: none;\n}\n \na:hover {\n background-color: #D0D0D0;\n color: #4B0082;\n text-decoration: none;\n}\n \np { \n margin: 5px 0; \n}\n\nh1 {\n font: bold 1.8em Arial, Sans-Serif; \n letter-spacing: -1px; \n margin: 0; \n padding: 8px 0 4px 0; \n}\n\nh2 { \n font: bold 1.6em Arial, Sans-Serif; \n letter-spacing: -1px; \n}\n\nh3 { \n margin: 0; \n padding: 4px 0; \n}\n\nul { \n list-style: square; \n margin: 0; \n padding : 0; \n}\n\nimg { \n border: 0; \n}\n\nhr { \n background-color: #C0C0C0; \n border-style: none; \n color: #D0D0D0; \n height: 1px; \n margin: 10px 0; \n}\n\n/* Helpers */\n.clearAll { clear: both }\n.floatLeft { \n border: thin dotted black;\n color: #5E8412;\n float:left;\n margin-right; 5px;\n padding: 5px\n}\n\n.floatLeft .tiddlyLink {\n color: #5E8412;\n -webkit-border-radius: 10px;\n -khtml-border-radius: 10px; \n -moz-border-radius: 10px;\n border-radius: 10px;\n}\n\n.externalLink {\n font-weight: bold;\n}\n\n/* Content Sections in Document Order */\n#contentWrapper { \n margin: 0px auto; \n width: 850px; \n}\n\n#header { \n background: transparent; \n color: #FFF;\n padding-top: 20px; \n width: 550px;\n}\n\n#header #icons { \n float: right; \n margin:20px 0; \n padding:0 \n}\n\n#header #icons img { \n padding-right: 2px; \n border: 0; \n}\n\n.headerShadow { \n padding: 1.4em 0 0.5em 1em;\n}\n\n.logo {\n border: 0;\n height: 110px;\n width: 145px;\n padding: 2px 2px 2px 2px;\n}\n\n.searchBar { \n float: right; \n font-size: 1em; \n margin-top: 1.3e;m \n position: relative; \n}\n\n.searchBar .button { \n color: #FFF; \n display: block \n}\n\n.searchBar .searchButton { \n color: #FFF; \n display: block \n}\n\n.searchBar .button:hover { \n border: 1px solid #fefefe; \n color: #4F4B45 \n}\n\n.searchBar .searchButton:hover { \n border: 1px solid #fefefe; \n color: #4F4B45 \n}\n\n.searchBar input { \n background-color: #fefefe; \n border: 1px solid #CCC; \n color: #736451; \n margin-right: 3px \n}\n\n.siteTitle { \n color: #736451; \n font: normal 2em "Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; \n letter-spacing: 1px; \n margin: 0; \n padding: 8px 0 4px 0; \n text-transform:uppercase;\n}\n\n.siteSubtitle { \n border-bottom:1px solid #eeeeee;\n color:#000000;\n font: 1.0em "Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; \n letter-spacing: 0px; \n margin:0 0 10px 0; \n padding: 5px 0 0 0\n text-align:left;\n text-transform:uppercase;\n}\n\n#topMenu { \n background: inherit; \n height: 3ex;\n overflow: hidden\n margin: 5px 5px 5px 5px;\n padding: 5px 5px 5px 5px;\n text-align: center;\n width: 550px;\n}\n\n#topMenu a, #topMenu .tiddlyLink, #topMenu .button { \n background:#222222; \n border:thin solid black; \n color: #8d8d8d; \n font-size: 110%; \n font-variant: small-caps; \n font-weight: normal; \n letter-spacing: 1px;\n margin: 0 4px; \n padding: 0.3em 0.45em ; \n text-decoration: none;\n}\n\n#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {\n background: #736451;\n color: #FFF; \n text-decoration: none; \n}\n\n#topMenu br { \n display: none \n}\n\n#displayArea { \n margin: 0 17em 2em 0.5em !important; \n width: 550px; \n}\n\n#messageArea { \n background: #fefefe; \n border: 4px solid #736451; \n color: #555; \n font-size: 90% \n}\n\n#messageArea .button { \n border: 1px solid #736451 color: #666; \n}\n\n#messageArea .button:hover { \n background: #FF0000; \n border-color: #FF0000 color: #FFF \n}\n\n#messageArea a:hover { \n background: #f5f5f5; \n border: none \n}\n\n#tiddlerDisplay {}\n\n#tiddlerContents {}\n\n.tiddler { \n padding-bottom: 10px; \n padding-left: 0;\n width: 100% \n}\n\n#contentFooter { \n border-top: solid thin black;\n color: #555555;\n clear: both;\n font-size: 10px;\n text-align: center;\n padding-top: 30px;\n margin-top: 30px;\n width: 550px;\n}\n\n#contentFooter .right { \n background: #FFF; \n float: right; \n text-align: right \n}\n\n#contentFooter a { \n background: #FFF; text-decoration: none \n}\n\n/* Tiddler Parts */\n.toolbar { \n font-size: 85% \n}\n\n.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active { \n background: transparent; \n border: 1px solid #fff color: #333; \n}\n\n.title { \n border-bottom:1px solid black; \n color: #101070; \n margin: 10px 0 0 0;\n}\n\n.subtitle, .subtitle a { \n color: #736451; \n font-size: 1em; \n margin: 0.2em \n}\n\n.popup { \n background: #8D8D8D; \n border: 1px solid black;\n color: #FFF;\n}\n.popup li a, .popup li a:visited { \n border: none;\n color: #FFF; \n}\n.popup li a:hover { \n background: #F7F7F7; \n border: none \n color: #fff; \n}\n.popup li.disabled { \n color: #000 \n}\n\n#sidebar { \n position: relative;\n background: #fefefe; \n border-left: 0 solid #000; \n color: black;\n float: right;\n line-height: 1.4em; \n margin: 2px\n width: 150px;\n}\n\n#sidebarOptions .sliderPanel .txtOptionInput { \n border: 1px solid #736451; \n width: 9em \n}\n\n#sidebarOptions .sliderPanel a { \n background-color: #eee;\n border-bottom: 1px dotted #333 color: #555;\n font-weight: normal;\n}\n\n#sidebarOptions .sliderPanel a:hover { \n background-color: #eee;\n border-bottom: 1px dotted #111 border: none;\n color: #111;\n}\n\n#sidebarOptions .sliderPanel input { \n border: 1px solid #736451 \n}\n\n#sidebarOptions .sliderPanel { \n background: #eee;\n border: 1px solid #ccc;\n font-size: 0.9em \n}\n\n#sidebarOptions a { \n color: #101070;\n text-decoration: none \n}\n\n#sidebarOptions a:hover, #sidebarOptions a:active { \n background-color: #f5f5f5;\n border: 1px solid #f5f5f5 color: #C00;\n}\n\n#sidebarOptions input { \n border: 1px solid #736451 \n}\n\n#sidebarOptions { \n padding-left: 0.5em;\n padding-top: 2em \n}\n\n#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active { \n background: #fefefe color: #C00;\n}\n\n#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button { \n color: #101070;\n}\n\n#sidebarTabs .tabContents .tiddlyLink:hover, #sidebarTabs .tabContents .button:hover { background: #fefefe;\n border: none color: #C00;\n text-decoration: none;\n}\n\n#sidebarTabs .tabContents { \n background: #fefefe \n}\n\n#sidebarTabs .tabSelected { \n padding-bottom: 3px \n}\n\n#sidebarTabs .tabUnselected { \n border-bottom: none;\n padding-bottom: 3px \n}\n\n#sidebarTabs .tabUnselected:hover { \n border-bottom: none;\n color: #736451 padding-bottom: 3px;\n}\n\n#sidebarTabs { \n font-family: arial, helvetica \n}\n\nlegend {\n color: #771500;\n font-size: 120%;\n font-weight: bold;\n margin:top: 5px;\n}\n\nlabel {\n font-weight: bold;\n}\n\nform {\n width: 80%;\n margin: auto\n}\n\n* html .editor textarea, * html .editor input { width: 98% }\n* html .viewer pre { margin-left: 0 }\n\n.editor input { border: 1px solid #888; margin-top: 5px }\n.editor textarea { border: 1px solid #888 }\n\n.highlight, .marked { background: transparent; border: none; color: #111; text-decoration: underline }\n\n.listTitle { color: #888 }\n\n.selected .tagging .button, .selected .tagged .button { color: #aaa }\n.selected .tagging .listTitle, .selected .tagged .listTitle { color: #666 }\n.selected .tagging, .selected .tagged { background-color: #f7f7f7; border: 1px solid #ccc }\n.selected .toolbar a { color: #736451 }\n.selected .toolbar a:hover { background: transparent; border: 1px solid #fff color: #333; }\n\n.shadow .title { color: #736451 }\n\n.tabContents { background: #fefefe }\n\n.tabSelected { background: #736451 color: #fefefe; }\n.tabSelected, .tabSelected:hover { background: #fefefe; border: solid 1px #ccc color: #555; }\n\n.tabUnselected { background: #eee; border: solid 1px #ccc color: #736451; }\n.tabUnselected:hover { border: 1px solid #ccc text-decoration: none; }\n\n.tagClear { clear: none }\n\n.tagging .button, .tagged .button { color: #ccc }\n.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active { background: transparent; border: none; color: #333 text-decoration: underline; }\n.tagging .listTitle, .tagged .listTitle { color: #bbb }\n.tagging, .tagged { background-color: #F7F7F7 border: 1px solid #eee; }\n\n.viewer { color: #555; }\n.viewer .button, .editorFooter .button { border: 1px solid #CA0000 color: #555; }\n.viewer .button:active, .viewer .highlight, .editorFooter .button:active, .editorFooter .highlight { background: #736451; border-color: #736451 color: #fff; }\n.viewer .button:hover, .editorFooter .button:hover { background: #CA0000; border-color: #CA0000 color: #fff; }\n.viewer blockquote { border-left: 5px solid #CA0000 }\n.viewer code { background: #f5f5f5 color: #111; !important;}\n.viewer hr { border-top: dashed 1px #555 }\n.viewer pre { background: #f5f5f5 border: 1px solid #ccc; }\n.viewer table, .viewer td { border: 1px solid #CA0000 }\n.viewer th, thead td { background: #CA0000; border: 1px solid #CA0000; color: #fff }\n\n.roundedCorners { \n -webkit-border-radius: 10px;\n -khtml-border-radius: 10px; \n -moz-border-radius: 10px;\n border-radius: 10px;\n} \n\n\n#ZiddlyFormats { margin: 10px 0 0 0 }\n\n;/*}}}*/\n
<<tagging Sites>>
There is a problem with the state library in the search to retrieve all the files. Not all the files are being retrieved (227 of 231). I know it's my search I'm just not sure of the fix at the moment. \n\n@@Note@@\nThis has been resolved. There were some html entities ( etc.) that the indexer was choking on. I think we resolve all this.
// // Excludes any tiddlers from timeline that have been tagged with ''excludeTimeline''\n/*{{{*/\nconfig.macros.timeline.handler = function(place,macroName,params)\n{\n var field = params[0] ? params[0] : "modified";\n var tiddlers = store.reverseLookup("tags","excludeTimeline",false,field);\n var lastDay = "";\n var last = params[1] ? tiddlers.length-Math.min(tiddlers.length,parseInt(params[1])) : 0;\n for(var t=tiddlers.length-1; t>=last; t--)\n {\n var tiddler = tiddlers[t];\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if(theDay != lastDay)\n {\n var theDateList = document.createElement("ul");\n place.appendChild(theDateList);\n createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));\n lastDay = theDay;\n }\n var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink");\n theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));\n }\n}\n/*}}}*/\n
This page powered by [[ZiddlyWiki|http://tiddlywiki.org]].
EADs that are indexed in CAO must be valid (either against the schema or the DTD) and well-formed.\n\nTo conform to the CAO search application the following conventions MUST be followed in your EAD's <eadid> tag.\n\nIn general to insure that your finding aids are indexed correctly, xml documents should be clean of unnecessary spaces and line breaks, especially within tags. We recommend using HTML Tidy [http://tidy.sourceforge.net/] to clean-up files before they are indexed by CAO.\n\n<<tagging Coding>>
//{{{\nconfig.formatters.unshift( {\n name: "inlinesliders",\n match: "\s\s+\s\s+\s\s+\s\s+|\s\s<slider",\n lookaheadRegExp: /(?:\s+\s+\s+\s+|<slider) (.*?)(?:>?)\sn((?:.|\sn)*?)\sn(?:====|<\s/slider>)/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart )\n {\n var btn = createTiddlyButton(w.output,lookaheadMatch[1] + " "+"\su00BB",lookaheadMatch[1],this.onClickSlider,"button sliderButton");\n var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");\n panel.style.display = "none";\n wikify(lookaheadMatch[2],panel);\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n },\n onClickSlider : function(e)\n {\n if(!e) var e = window.event;\n var n = this.nextSibling;\n n.style.display = (n.style.display=="none") ? "block" : "none";\n return false;\n }\n})\n//}}}