Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
In Socialtext Unplugged, the selected pages of your Socialtext workspace are displayed as individual "tiddlers" on the page. When the mouse passes over a tiddler a short toolbar menu appears at the top right. Use the commands here to manipulate that particular tiddler: notably closing and editting it. (You can double click on a tiddler as a shortcut to directly enter edit mode).
Over on the right hand side of the window are commands that affect the entire page, in particular "close all" which can be useful to clear the decks when many tiddlers are open at once.
The user is encouraged to ensure that they can SaveChanges before embarking on widespread editing.
Welcome to Socialtext Unplugged. This is a specially designed web page that you can use to view and edit your Socialtext content without having to be online to your Socialtext server.
There are three steps to using Socialtext Unplugged:
* First, learn how to SaveChanges to your local hard drive. This keeps your work safe even if you close your browser or have to reboot your computer
* Secondly, find out how to BrowseAndEdit your content while it is unplugged
* Thirdly, when you can reconnect to your Socialtext server, you can SyncChanges to save your unplugged changes to the server so that other people can see them too
You should also check your system meets the SystemRequirements.
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div class="socialtextLogo"><img src="http://www.eu.socialtext.net/static/2.3.0.0/images/st/logo/socialtext-logo-152x26.gif" width=152 height=26></div>
</div>
<!--}}}-->
Socialtext Unplugged lets you browse and edit your content while you're offline. When you make a change you need to SaveChanges to save the change to your local hard drive, before later performing a SyncChanges to synchronise the change back to the server.
The procedure for SaveChanges is slightly different for different browsers:
* SavingOnInternetExplorer
* SavingOnFireFox
* SavingOnSafari
* SavingOnOpera
You can save changes with any version of FireFox, and also many other browsers in the FireFox family, such as Camino on the Mac and MiniMo on mobile devices. The procedure is:
# Click the button labelled 'save changes' over in the right hand sidebar
# If prompted with an "Internet Security" dialog as follows, click the checkbox labelled "Remember this decision" and then the "Allow" button
## "A script from "file://" is requesting enhanced capabilities that are UNSAFE and could be used to compromise your machine or data..."
# You should then see a message at the top right of the window saying "Main TiddlyWiki file saved"
If you accidentally //deny// permission instead, you may need to UnravelFireFoxPermissions.
You can save changes with Internet Explorer versions 6 and 7, but not the earlier versions. The procedure is:
# Click the button labelled 'save changes' over in the right hand sidebar
# If prompted as follows, click "Yes":
## "An ActiveX control on this page might be unsafe to interact with other parts of the page. Do you want to allow this interaction?"
# You should then see a message at the top right of the window saying "Main TiddlyWiki file saved"
Note that there is currently [[a bug|http://trac.tiddlywiki.org/tiddlywiki/ticket/39]] that prevents Internet Explorer from saving correctly if you have specified a backup directory in AdvancedOptions.
To SaveChanges on Opera, see the instructions for using the TiddlySaver Java applet.
To SaveChanges on Safari, see the instructions for using the TiddlySaver Java applet.
<<search>><<closeAll>><<permaview>><<newTiddler 'New Tiddler' fields:'server.host:"https://saturn.ffzg.hr%2C%20saturn.ffzg.hr:443" server.workspace:"koha-cug" wikiformat:socialtext'>><<newJournal 'DD MMM YYYY' fields:'server.host:"https://saturn.ffzg.hr%2C%20saturn.ffzg.hr:443" server.workspace:"koha-cug" wikiformat:socialtext'>><<saveChanges>><<backstage sync>><<slider chkSliderOptionsPanel OptionsPanel 'options ยป' 'Change TiddlyWiki advanced options'>>
https://saturn.ffzg.hr/koha-cug/
[[SocialtextScreenStyle]]
[[SocialtextStyleOverrides]]
[[Styles HorizontalMainMenu]]
@@The user interface for synchronization is not finalized@@
To synchronize your changes back to the Socialtext server:
# click on [[Sync]] in the right-hand sidebar
<<tabs txtMoreTab Orphans 'Orphaned tiddlers' TabMoreOrphans Shadowed 'Shadowed tiddlers' TabMoreShadowed>>
Under FireFox, you can run into problems if you accidentally click 'Deny' on the permission request dialog, and have selected //Remember this decision//.
To reverse the effects, first locate the file {{{prefs.js}}} in your FireFox profile directory. Under Windows you'll find it at something like {{{C:\Documents and Settings\Jeremy\Application Data\Mozilla\Firefox\Profiles\o3dhupu6.default\prefs.js}}}, where {{{Jeremy}}} is the name of your windows profile and {{{o3dhupu6}}} will be a similar string of gobbledegook. On the Mac it'll be at {{{~/Library/Application Support/Firefox/Profiles/o3dhupu6.default/prefs.js}}} and on most versions of Linux, at {{{~/.mozilla/firefox/o3dhupu6.default/prefs.js}}}.
Open the file in a text editor and find the line {{{user_pref("capability.principal.codebase.p0.denied", "UniversalXPConnect");}}} and simply replace the word {{{denied}}} with {{{granted}}}.
//(Thanks to JonScully for figuring out this fix)//
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler references > fields syncing jump'></div>
<div class='workspace' id='st-page-wiki-title' macro='view socialtext.workspace'></div>
<div class='title' id='st-page-titletext' macro='view title'></div>
<div class='subtitle'>
Created on <span macro='view created date [[MMM DD, 0hh:0mm]]'></span>.
Updated by <span macro='view modifier link'></span>
on <span macro='view modified date [[MMM DD, 0hh:0mm]]'></span></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></span></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
To use, add {{{[[Styles HorizontalMainMenu]]}}} to your StyleSheet tiddler.
See http://www.w3schools.com/css/css_colors.asp for a color chart.
***/
/*{{{*/
#mainMenu {position:relative;left:auto;width:auto;text-align:left;line-height:normal;padding 0em 1em 0em 1em;font-size:normal;}
#mainMenu br {display:none;}
#mainMenu {background:#336699;}
#mainMenu {padding:2px;}
#mainMenu .button, #mainMenu .tiddlyLink {padding-left:0.5em;padding-right:0.5em;color:white;font-size:115%;}
#displayArea {
margin-top:0;margin-right:20em;margin-bottom:0;margin-left:1em;
padding-top:.1em;padding-bottom:.1em;
}
/*}}}*/
|''Type:''|socialtext|
|''URL:''|https://saturn.ffzg.hr%2C%20saturn.ffzg.hr:443 |
|''Workspace:''|koha-cug|
|''WorkspaceList:''||
|''Description:''|Koha Croatian user group|
The TiddlySaver Java applet allows TiddlyWiki from a {{{file://}}} URL to save changes Safari, Opera and other browsers.
It is a small file named [["TiddlySaver.jar"|TiddlySaver.jar]] that must be placed in the same directory as your TiddlyWiki file. Before you can use it, you need to give it the necessary privileges by editting your {{{.java.policy}}} file.
For Windows, the file will be at {{{C:\Documents and Settings\your-user-name\.java.policy}}}. Add the following lines (substituting the directory of your TiddlyWiki file as appropriate):
{{{
grant codeBase "file:${user.home}/My Documents/tiddlywiki-folder/*" {
permission java.io.FilePermission "${user.home}${/}My Documents${/}tiddlywiki-folder${/}*", "read,write";
};
}}}
On Mac OS X, the file is found at {{{/Users/your-user-name/.java.policy}}}:
{{{
grant codeBase "file:${user.home}/Documents/tiddlywiki-folder/*" {
permission java.io.FilePermission "${user.home}${/}Documents${/}tiddlywiki-folder${/}*", "read,write";
};
}}}
It can be tricky creating files whose name starts with a period, so you can use this [[pre-built .java.policy file|.java.policy]]. The same file is suitable for Macs too, just edit it and delete the "My " bit, leaving just "Documents". Make sure you save it in the right place for each operating system!
If you have trouble setting up the permissions correctly, you can try granting broader permissions to the applet like this:
{{{
grant codeBase "file://localhost/home/users/Desktop/
TiddlySaver.jar"
{ permission java.security.AllPermission; };
}}}
Note that there is currently [[a bug|http://trac.tiddlywiki.org/ticket/172]] that prevents TiddlySaver from working if you have specified a backup directory in AdvancedOptions.
/***
|''Name:''|SocialtextLocaleOverrides|
|''Description:''|Text changes for Socialtext|
***/
//{{{
merge(config.views.wikified.tag,{
labelNoTags: "No Tags",
labelTags: "Tags"});
merge(config.commands.references,{
text: "incoming links",
tooltip: "Show tiddlers that link to this one",
popupNone: "No incoming links"});
//}}}
/***
|''Name:''|SocialtextTweaksPlugin|
|''Description:''|Allows changes to be synchronised with a Socialtext server|
|''Source:''|http://stunplugged.tiddlywiki.com/#SocialtextTweaksPlugin|
|''Author:''|JeremyRuston (jeremy (at) osmosoft (dot) com)|
|''Version:''|1.0.2|
|''Date:''|Jun 15, 2006|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.2|
Make minor configuration tweaks specific to Socialtext Unplugged
***/
//{{{
// Ensure that the SocialtextTweaksPlugin is only installed once.
if(!version.extensions.SocialtextTweaksPlugin) {
version.extensions.SocialtextTweaksPlugin = {installed:true};
// Check version number of core code
if(version.major < 2 || (version.major == 2 && version.minor < 2))
{alertAndThrow("SocialtextTweaksPlugin requires TiddlyWiki 2.2 or later.");}
merge(config.defaultCustomFields,{
wikiformat:'socialtext',
'server.host':'https://saturn.ffzg.hr%2C%20saturn.ffzg.hr:443'
});
config.options.chkSinglePageMode = true;
config.options.chkEnableAnimations = true;
} // end of "install only once"
//}}}
/***
|''Name:''|SocialtextFormatterPlugin|
|''Description:''|Allows Tiddlers to use [[Socialtext|http://www.socialtext.com/]] text formatting|
|''Author:''|Martin Budden (mjbudden (at) gmail (dot) com)|
|''Source:''|http://www.martinswiki.com/#SocialtextFormatterPlugin|
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/formatters/SocialtextFormatterPlugin.js|
|''Version:''|0.9.4|
|''Date:''|Jan 21, 2007|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.1.0|
This is the SocialtextFormatterPlugin, which allows you to insert Socialtext formated text into a TiddlyWiki.
The aim is not to fully emulate Socialtext, but to allow you to work with Socialtext content off-line and then resync the content with your Socialtext wiki later on, with the expectation that only minor edits will be required.
To use Socialtext format in a Tiddler, tag the Tiddler with SocialtextFormat or set the tiddler's {{{wikiformat}}} extended field to {{{socialtext}}}
Please report any defects you find at http://groups.google.co.uk/group/TiddlyWikiDev
***/
//{{{
// Ensure that the SocialtextFormatter Plugin is only installed once.
if(!version.extensions.SocialtextFormatterPlugin) {
version.extensions.SocialtextFormatterPlugin = {installed:true};
if(version.major < 2 || (version.major == 2 && version.minor < 1))
{alertAndThrow('SocialtextFormatterPlugin requires TiddlyWiki 2.1 or later.');}
SocialtextFormatter = {}; // 'namespace' for local functions
wikify = function(source,output,highlightRegExp,tiddler)
{
if(source && source != '') {
var w = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);
var out = output;
if(tiddler && (tiddler.isTagged(config.parsers.socialtextFormatter.formatTag) || (tiddler.fields.wikiformat==config.parsers.socialtextFormatter.format)) ) {
var d1 = createTiddlyElement(output,'div','content-display-body','content-section-visible');
var d2 = createTiddlyElement(d1,'div','wikipage');
out = createTiddlyElement(d2,'div',null,'wiki');
}
var time1,time0 = new Date();
w.subWikifyUnterm(out);
if(tiddler && config.options.chkDisplayInstrumentation) {
time1 = new Date();
var t = tiddler ? tiddler.title : source.substr(0,10);
displayMessage("Wikify '"+t+"' in " + (time1-time0) + " ms");
}
}
};
stDebug = function(out,str)
{
createTiddlyText(out,str.replace(/\n/mg,'\\n').replace(/\r/mg,'RR'));
createTiddlyElement(out,'br');
};
SocialtextFormatter.Tiddler_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
if((this.fields.wikiformat==config.parsers.socialtextFormatter.format) || this.isTagged(config.parsers.socialtextFormatter.formatTag)) {
// update the links array, by checking for Socialtext format links
this.links = [];
var tiddlerLinkRegExp = /(?:\"(.*?)\" ?)?\[([^\]]*?)\]/mg;
tiddlerLinkRegExp.lastIndex = 0;
var match = tiddlerLinkRegExp.exec(this.text);
while(match) {
var link = match[2];
this.links.pushUnique(link);
match = tiddlerLinkRegExp.exec(this.text);
}
}/* else {
return SocialtextFormatter.Tiddler_changed.apply(this,arguments);
}*/
this.linksUpdated = true;
};
SocialtextFormatter.wafl = function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var lm2 = lookaheadMatch[2];
switch(lookaheadMatch[1]) {
case 'image':
var img = createTiddlyElement(w.output,'img');
img.src = w.tiddler.title + '/' + lm2;
createTiddlyText(img,lm2);
break;
case 'file':
var s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
var a = createTiddlyElement(s,'a');
a.href = w.tiddler.title + '/' + lm2;
createTiddlyText(a,lm2);
break;
case 'link':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createTiddlyElement(s,'a');
var t = w.tiddler ? w.tiddler.title + ':' : '';
a.setAttribute('href','#' + t + lm2);
a.title = 'section link';
createTiddlyText(a,lm2);
break;
case 'weblog':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
var text = lm2;
var link = 'Weblog: ' + lm2;
createTiddlyText(createTiddlyLink(s,link,false,null,w.isStatic),text);
break;
case 'section':
a = createTiddlyElement(w.output,'a');// drop anchor
t = w.tiddler ? w.tiddler.title + ':' : '';
a.setAttribute('name',t + lm2);
break;
case 'date':
createTiddlyText(w.output,lm2);
break;
case 'user':
var oldSource = w.source;
w.source = lm2;
w.nextMatch = 0;
w.subWikifyUnterm(w.output);
w.source = oldSource;
break;
// Shortcut expansions - not strictly syntax
case 'google':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createExternalLink(s,'http://www.google.com/search?q='+lm2);
createTiddlyText(a,lm2);
break;
case 'fedex':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createExternalLink(s,'http://www.fedex.com/Tracking?tracknumbers='+lm2);
createTiddlyText(a,lm2);
break;
case 'map':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createExternalLink(s,'http://maps.google.com/maps?q='+lm2);
createTiddlyText(a,lm2);
break;
case 'wikipedia':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createExternalLink(s,'http://en.wikipedia.org/wiki/'+lm2);
createTiddlyText(a,lm2);
break;
case 'rt':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createExternalLink(s,'http://rt.socialtext.net/Ticket/Display.html?id='+lm2);
createTiddlyText(a,lm2);
break;
case 'stcal':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createExternalLink(s,'https://calendar.socialtext.net:445/view_t.php?timeb=1&id=3&date='+lm2);
createTiddlyText(a,lm2);
break;
case 'svn':
s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
a = createExternalLink(s,'https://repo.socialtext.net/listing.php?rev='+lm2+'sc=1');
createTiddlyText(a,lm2);
break;
default:
w.outputText(w.output,w.matchStart,w.nextMatch);
return;
}
w.nextMatch = this.lookaheadRegExp.lastIndex;
} else {
w.outputText(w.output,w.matchStart,w.nextMatch);
}
};
SocialtextFormatter.presence = function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var p = lookaheadMatch[1];
var text = lookaheadMatch[2];
var link;
var src;
if(p=='aim') {
link = 'aim:goim?screenname=' + text + '&message=hello';
src = 'http://big.oscar.aol.com/sleepleft?on_url=http://www.aim.com/remote/gr/MNB_online.gif&off_url=http://www.aim.com/remote/gr/MNB_offline.gif';
} else if(p=='yahoo'||p=='ymsgr') {
link = 'ymsgr:sendIM?'+text;
src = 'http://opi.yahoo.com/online?u=chrislondonbridge&f=.gif';
} else if(p=='skype'||p=='callto') {
link = 'callto:'+text;
src = 'http://goodies.skype.com/graphics/skypeme_btn_small_green.gif';
} else if(p=='asap') {
link = 'http://asap2.convoq.com/AsapLinks/Meet.aspx?l='+text;
src = 'http://asap2.convoq.com/AsapLinks/Presence.aspx?l='+text;
}
var s = createTiddlyElement(w.output,'span',null,'nlw_phrase');
var a = createExternalLink(s,link);
var img = createTiddlyElement(a,'img');
createTiddlyText(a,text);
img.src = src;
img.border='0';
img.alt = '(' + lookaheadMatch[1] + ')';
if(p=='aim') {
img.width='11'; img.height='13';
}
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
};
config.formatterHelpers.singleCharFormat = function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[0].substr(lookaheadMatch[0].length-2,1) != ' ') {
w.subWikifyTerm(createTiddlyElement(w.output,this.element),this.termRegExp);
} else {
w.outputText(w.output,w.matchStart,w.nextMatch);
}
};
config.socialtext = {};
config.socialtext.formatters = [
{
name: 'socialtextHeading',
match: '^\\^{1,6} ?',
termRegExp: /(\n+)/mg,
handler: function(w)
{
var len = w.matchText.trim().length;
var e = createTiddlyElement(w.output,'h' + len);
var a = createTiddlyElement(e,'a');// drop anchor
var t = w.tiddler ? w.tiddler.title + ':' : '';
len = w.source.substr(w.nextMatch).indexOf('\n');
a.setAttribute('name',t+w.source.substr(w.nextMatch,len));
w.subWikifyTerm(e,this.termRegExp);
}
},
{
name: 'socialtextTable',
match: '^\\|(?:(?:.|\n)*)\\|$',
lookaheadRegExp: /^\|(?:(?:.|\n)*)\|$/mg,
cellRegExp: /(?:\|(?:[^\|]*)\|)(\n|$)?/mg,
cellTermRegExp: /((?:\x20*)\|)/mg,
handler: function(w)
{
var table = createTiddlyElement(w.output,'table');
var rowContainer = createTiddlyElement(table,'tbody');
var prevColumns = [];
w.nextMatch = w.matchStart;
this.lookaheadRegExp.lastIndex = w.nextMatch;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
while(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {
var r = this.rowHandler(w,createTiddlyElement(rowContainer,'tr'),prevColumns);
if(!r) {
w.nextMatch++;
break;
}
this.lookaheadRegExp.lastIndex = w.nextMatch;
lookaheadMatch = this.lookaheadRegExp.exec(w.source);
}
},
rowHandler: function(w,e,prevColumns)
{
this.cellRegExp.lastIndex = w.nextMatch;
var cellMatch = this.cellRegExp.exec(w.source);
while(cellMatch && cellMatch.index == w.nextMatch) {
w.nextMatch++;
var cell = createTiddlyElement(e,'td');
w.subWikifyTerm(cell,this.cellTermRegExp);
if(cellMatch[1]) {
// End of row
w.nextMatch = this.cellRegExp.lastIndex;
return true;
}
// Cell
w.nextMatch--;
this.cellRegExp.lastIndex = w.nextMatch;
cellMatch = this.cellRegExp.exec(w.source);
}
return false;
}
},
{
name: 'socialtextList',
match: '^[\\*#]+ ',
lookaheadRegExp: /^([\*#])+ /mg,
termRegExp: /(\n+)/mg,
handler: function(w)
{
var stack = [w.output];
var currLevel = 0, currType = null;
var itemType = 'li';
w.nextMatch = w.matchStart;
this.lookaheadRegExp.lastIndex = w.nextMatch;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
while(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {
var listType = lookaheadMatch[1] == '*' ? 'ul' : 'ol';
var listLevel = lookaheadMatch[0].length;
w.nextMatch += listLevel;
if(listLevel > currLevel) {
for(var i=currLevel; i<listLevel; i++) {
stack.push(createTiddlyElement(stack[stack.length-1],listType));
}
} else if(listLevel < currLevel) {
for(i=currLevel; i>listLevel; i--) {
stack.pop();
}
} else if(listLevel == currLevel && listType != currType) {
stack.pop();
stack.push(createTiddlyElement(stack[stack.length-1],listType));
}
currLevel = listLevel;
currType = listType;
var e = createTiddlyElement(stack[stack.length-1],itemType);
w.subWikifyTerm(e,this.termRegExp);
this.lookaheadRegExp.lastIndex = w.nextMatch;
lookaheadMatch = this.lookaheadRegExp.exec(w.source);
}
}
},
{
name: 'socialtextQuoteByLine',
match: '^>+',
lookaheadRegExp: /^>+/mg,
termRegExp: /(\n)/mg,
element: 'blockquote',
handler: function(w)
{
var stack = [w.output];
var currLevel = 0;
var newLevel = w.matchLength;
var i;
do {
if(newLevel > currLevel) {
for(i=currLevel; i<newLevel; i++) {
stack.push(createTiddlyElement(stack[stack.length-1],this.element));
}
} else if(newLevel < currLevel) {
for(i=currLevel; i>newLevel; i--) {
stack.pop();
}
}
currLevel = newLevel;
w.subWikifyTerm(stack[stack.length-1],this.termRegExp);
createTiddlyElement(stack[stack.length-1],'br');
this.lookaheadRegExp.lastIndex = w.nextMatch;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
var matched = lookaheadMatch && lookaheadMatch.index == w.nextMatch;
if(matched) {
newLevel = lookaheadMatch[0].length;
w.nextMatch += newLevel;
}
} while(matched);
}
},
{
name: 'socialtextRule',
match: '^----+$\\n+',
handler: function(w)
{
createTiddlyElement(w.output,'hr');
}
},
{
name: 'socialtextPreformatted',
match: '^\\.pre\\s*\\n',
lookaheadRegExp: /^.pre\s*\n((?:.|\n)*?)\n.pre\s*\n/mg,
element: 'pre',
handler: config.formatterHelpers.enclosedTextHelper
},
{
name: 'socialtextHtml',
match: '^\\.html',
lookaheadRegExp: /\.html((?:.|\n)*?)\.html/mg,
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
createTiddlyElement(w.output,'span').innerHTML = lookaheadMatch[1];
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
},
{
name: 'macro',
match: '<<',
lookaheadRegExp: /<<([^>\s]+)(?:\s*)((?:[^>]|(?:>(?!>)))*)>>/mg,
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[1]) {
w.nextMatch = this.lookaheadRegExp.lastIndex;
invokeMacro(w.output,lookaheadMatch[1],lookaheadMatch[2],w,w.tiddler);
}
}
},
{
name: 'socialtextExplicitLink',
match: '(?:".*?" ?)?\\[',
lookaheadRegExp: /(?:\"(.*?)\" ?)?\[([^\]]*?)\]/mg,
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var link = lookaheadMatch[2];
var text = lookaheadMatch[1] ? lookaheadMatch[1] : link;
createTiddlyText(createTiddlyLink(w.output,link,false,null,w.isStatic,w.tiddler),text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
},
{
name: 'socialtextExternalLink',
match: '(?:".*?" ?)?<[a-z]{2,8}:',
lookaheadRegExp: /(?:\"(.*?)\" ?)?<([a-z]{2,8}:.*?)>/mg,
imgRegExp: /\.(?:gif|ico|jpg|png)/g,
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var link = lookaheadMatch[2];
var text = lookaheadMatch[1] ? lookaheadMatch[1] : link;
this.imgRegExp.lastIndex = 0;
if(this.imgRegExp.exec(link)) {
var img = createTiddlyElement(w.output,'img');
if(lookaheadMatch[1]) {
img.title = text;
}
img.alt = text;
img.src = link;
} else {
createTiddlyText(createExternalLink(w.output,link),text);
}
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
},
{
name: 'socialtextUrlLink',
match: config.textPrimitives.urlPattern,
handler: function(w)
{
w.outputText(createExternalLink(w.output,w.matchText),w.matchStart,w.nextMatch);
}
},
{
name: 'socialtextBold',
match: '\\*(?![\\s\\*])',
lookaheadRegExp: /\*(?!\s)(?:.*?)(?!\s)\*(?=[$\s\|\._\-,])/mg,
termRegExp: /((?!\s)\*(?=[$\s\|\.\-_,]))/mg,
element: 'strong',
handler: config.formatterHelpers.singleCharFormat
},
{
name: 'socialtextItalic',
match: '_(?![\\s_])',
lookaheadRegExp: /_(?!\s)(?:.*?)(?!\s)_(?=[$\s\|\.\*\-,])/mg,
termRegExp: /((?!\s)_(?=[$\s\|\.\*\-,]))/mg,
element: 'em',
handler: config.formatterHelpers.singleCharFormat
},
{
name: 'socialtextStrike',
match: '-(?![\\s\\-])',
lookaheadRegExp: /-(?!\s)(?:.*?)(?!\s)-(?=[$\s\|\.\*_,])/mg,
termRegExp: /((?!\s)-(?=[$\s\|\.\*_,]))/mg,
element: 'del',
handler: config.formatterHelpers.singleCharFormat
},
{
name: 'socialtextMonoSpaced',
match: '`(?![\\s`])',
lookaheadRegExp: /`(?!\s)(?:.*?)(?!\s)`(?=[$\s\.\*\-_,])/mg,
termRegExp: /((?!\s)`(?=[$\s\.\*\-_,]))/mg,
element: 'tt',
handler: config.formatterHelpers.singleCharFormat
},
{
name: 'socialtextParagraph',
match: '\\n{2,}',
handler: function(w)
{
createTiddlyElement(w.output,'p');
}
},
{
name: 'socialtextLineBreak',
match: '\\n',
handler: function(w)
{
createTiddlyElement(w.output,'br');
}
},
{
name: 'socialtextNoWiki',
match: '\\{\\{',
lookaheadRegExp: /\{\{((?:.|\n)*?)\}\}/mg,
element: 'span',
handler: config.formatterHelpers.enclosedTextHelper
},
{
name: 'socialtextTrademark',
match: '\\{tm\\}',
handler: function(w)
{
createTiddlyElement(w.output,'span').innerHTML = '™';
}
},
{
name: 'socialtextWafl',
match: '\\{(?:[a-z]{2,16}): ?.*?\\}',
lookaheadRegExp: /\{([a-z]{2,16}): ?(.*?)\}/mg,
handler: SocialtextFormatter.wafl
},
{
name: 'socialtextPresence',
match: '(?:aim|yahoo|ymsgr|skype|callto|asap):\\w+',
lookaheadRegExp: /(aim|yahoo|ymsgr|skype|callto|asap):(\w+)/mg,
handler: SocialtextFormatter.presence
},
{
name: 'socialtextMailTo',
match: '[\\w\.]+@[\\w]+\.[\\w\.]+',
lookaheadRegExp: /([\w\.]+@[\w]+\.[\w\.]+)/mg,
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var text = lookaheadMatch[1];
createTiddlyText(createExternalLink(w.output,'mailto:'+text),text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
},
{
name: 'socialtextHtmlEntitiesEncoding',
match: '&#?[a-zA-Z0-9]{2,8};',
handler: function(w)
{
createTiddlyElement(w.output,'span').innerHTML = w.matchText;
}
}
];
config.parsers.socialtextFormatter = new Formatter(config.socialtext.formatters);
config.parsers.socialtextFormatter.format = 'socialtext';
config.parsers.socialtextFormatter.formatTag = 'SocialtextFormat';
} // end of 'install only once'
//}}}
/***
|''Name:''|SocialtextAdaptorPlugin|
|''Description:''|Adaptor for moving and converting data to and from Socialtext Wikis|
|''Author:''|Martin Budden (mjbudden (at) gmail (dot) com) and JeremyRuston (jeremy (at) osmosoft (dot) com)|
|''Source:''|http://www.martinswiki.com/#SocialtextAdaptorPlugin|
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/adaptors/SocialtextAdaptorPlugin.js|
|''Version:''|0.5.1|
|''Date:''|Feb 25, 2007|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.2.0|
Socialtext REST documentation is at:
http://www.eu.socialtext.net/st-rest-docs/index.cgi?socialtext_rest_documentation
***/
//{{{
if(!version.extensions.SocialtextAdaptorPlugin) {
version.extensions.SocialtextAdaptorPlugin = {installed:true};
function SocialtextAdaptor()
{
this.host = null;
this.workspace = null;
return this;
}
SocialtextAdaptor.mimeType = 'text/x.socialtext-wiki';
SocialtextAdaptor.serverType = 'socialtext';
SocialtextAdaptor.serverParsingErrorMessage = "Error parsing result from server";
SocialtextAdaptor.errorInFunctionMessage = "Error in function SocialtextAdaptor.%0";
SocialtextAdaptor.prototype.setContext = function(context,userParams,callback)
{
if(!context) context = {};
context.userParams = userParams;
if(callback) context.callback = callback;
context.adaptor = this;
if(!context.host)
context.host = this.host;
if(!context.workspace && this.workspace)
context.workspace = this.workspace;
return context;
};
SocialtextAdaptor.doHttpGET = function(uri,callback,params,headers,data,contentType,username,password)
{
return doHttp('GET',uri,data,contentType,username,password,callback,params,headers);
};
SocialtextAdaptor.doHttpPOST = function(uri,callback,params,headers,data,contentType,username,password)
{
return doHttp('POST',uri,data,contentType,username,password,callback,params,headers);
};
SocialtextAdaptor.fullHostName = function(host)
{
if(!host)
return '';
if(!host.match(/:\/\//))
host = 'http://' + host;
if(host.substr(host.length-1) != '/')
host = host + '/';
return host;
};
SocialtextAdaptor.minHostName = function(host)
{
return host ? host.replace(/^http:\/\//,'').replace(/\/$/,'') : '';
};
// Convert a page title to the normalized form used in uris
SocialtextAdaptor.normalizedTitle = function(title)
{
var n = title.toLowerCase();
n = n.replace(/\s/g,'_').replace(/\//g,'_').replace(/\./g,'_').replace(/:/g,'').replace(/\?/g,'');
if(n.charAt(0)=='_')
n = n.substr(1);
return String(n);
};
// Convert a Socialtext date in YYYY-MM-DD hh:mm format into a JavaScript Date object
SocialtextAdaptor.dateFromEditTime = function(editTime)
{
var dt = editTime;
return new Date(Date.UTC(dt.substr(0,4),dt.substr(5,2)-1,dt.substr(8,2),dt.substr(11,2),dt.substr(14,2)));
};
SocialtextAdaptor.prototype.openHost = function(host,context,userParams,callback)
{
this.host = SocialtextAdaptor.fullHostName(host);
context = this.setContext(context,userParams,callback);
if(context.callback) {
context.status = true;
window.setTimeout(function() {callback(context,userParams);},0);
}
return true;
};
SocialtextAdaptor.prototype.openWorkspace = function(workspace,context,userParams,callback)
{
this.workspace = workspace;
context = this.setContext(context,userParams,callback);
if(context.callback) {
context.status = true;
window.setTimeout(function() {callback(context,userParams);},0);
}
return true;
};
SocialtextAdaptor.prototype.getWorkspaceList = function(context,userParams,callback)
{
context = this.setContext(context,userParams,callback);
var uriTemplate = '%0data/workspaces';
var uri = uriTemplate.format([context.host]);
var req = SocialtextAdaptor.doHttpGET(uri,SocialtextAdaptor.getWorkspaceListCallback,context,{'accept':'application/json'});
return typeof req == 'string' ? req : true;
};
SocialtextAdaptor.getWorkspaceListCallback = function(status,context,responseText,uri,xhr)
{
context.status = false;
context.statusText = SocialtextAdaptor.errorInFunctionMessage.format(['getWorkspaceListCallback']);
if(status) {
try {
eval('var info=' + responseText);
} catch (ex) {
context.statusText = exceptionText(ex,SocialtextAdaptor.serverParsingErrorMessage);
if(context.callback)
context.callback(context,context.userParams);
return;
}
var list = [];
for(var i=0; i<info.length; i++) {
var item = {
title:info[i].title,
name:info[i].name,
modified:SocialtextAdaptor.dateFromEditTime(info[i].modified_time)
};
list.push(item);
}
context.workspaces = list;
context.status = true;
} else {
context.statusText = xhr.statusText;
}
if(context.callback)
context.callback(context,context.userParams);
};
SocialtextAdaptor.prototype.getTiddlerList = function(context,userParams,callback)
{
context = this.setContext(context,userParams,callback);
var uriTemplate = '%0data/workspaces/%1/pages?order=newest';//!! ? or ;
var uri = uriTemplate.format([context.host,context.workspace]);
var req = SocialtextAdaptor.doHttpGET(uri,SocialtextAdaptor.getTiddlerListCallback,context,{'accept':'application/json'});
return typeof req == 'string' ? req : true;
};
SocialtextAdaptor.getTiddlerListCallback = function(status,context,responseText,uri,xhr)
{
context.status = false;
context.statusText = SocialtextAdaptor.errorInFunctionMessage.format(['getTiddlerListCallback']);
if(status) {
try {
eval('var info=' + responseText);
} catch (ex) {
context.statusText = exceptionText(ex,SocialtextAdaptor.serverParsingErrorMessage);
if(context.callback)
context.callback(context,context.userParams);
return;
}
var list = [];
for(var i=0; i<info.length; i++) {
var tiddler = new Tiddler(info[i].name);
tiddler.modified = SocialtextAdaptor.dateFromEditTime(info[i].last_edit_time);
tiddler.modifier = info[i].last_editor;
tiddler.tags = info[i].tags;
tiddler.fields['server.page.id'] = info[i].page_id;
tiddler.fields['server.page.name'] = info[i].name;
tiddler.fields['server.page.revision'] = String(info[i].revision_id);
list.push(tiddler);
}
context.tiddlers = list;
context.status = true;
} else {
context.statusText = xhr.statusText;
}
if(context.callback)
context.callback(context,context.userParams);
};
SocialtextAdaptor.prototype.generateTiddlerInfo = function(tiddler)
{
var info = {};
var host = this && this.host ? this.host : SocialtextAdaptor.fullHostName(tiddler.fields['server.host']);
var workspace = this && this.workspace ? this.workspace : tiddler.fields['server.workspace'];
uriTemplate = '%0%1/index.cgi?%2';
info.uri = uriTemplate.format([host,workspace,SocialtextAdaptor.normalizedTitle(tiddler.title)]);
return info;
};
SocialtextAdaptor.prototype.getTiddler = function(title,context,userParams,callback)
{
return this.getTiddlerRevision(title,null,context,userParams,callback);
};
SocialtextAdaptor.prototype.getTiddlerRevision = function(title,revision,context,userParams,callback)
{
context = this.setContext(context,userParams,callback);
// request the page in json format to get the page attributes
if(revision) {
var uriTemplate = '%0data/workspaces/%1/pages/%2/revisions/%3';
context.revision = revision;
} else {
uriTemplate = '%0data/workspaces/%1/pages/%2';
context.revision = null;
}
uri = uriTemplate.format([context.host,context.workspace,SocialtextAdaptor.normalizedTitle(title),revision]);
context.tiddler = new Tiddler(title);
context.tiddler.fields.wikiformat = 'socialtext';
context.tiddler.fields['server.host'] = SocialtextAdaptor.minHostName(context.host);
context.tiddler.fields['server.workspace'] = context.workspace;
var req = SocialtextAdaptor.doHttpGET(uri,SocialtextAdaptor.getTiddlerCallback,context,{'accept':'application/json'});
return typeof req == 'string' ? req : true;
};
SocialtextAdaptor.getTiddlerCallback = function(status,context,responseText,uri,xhr)
{
context.status = false;
context.statusText = SocialtextAdaptor.errorInFunctionMessage.format(['getTiddlerCallback']);
if(status) {
try {
eval('var info=' + responseText);
context.tiddler.tags = info.tags;
context.tiddler.fields['server.page.id'] = info.page_id;
context.tiddler.fields['server.page.name'] = info.name;
context.tiddler.fields['server.page.revision'] = String(info.revision_id);
context.tiddler.modifier = info.last_editor;
context.tiddler.modified = SocialtextAdaptor.dateFromEditTime(info.last_edit_time);
} catch (ex) {
context.statusText = exceptionText(ex,SocialtextAdaptor.serverParsingErrorMessage);
if(context.callback)
context.callback(context,context.userParams);
return;
}
context.status = true;
} else {
context.statusText = xhr.statusText;
if(context.callback)
context.callback(context,context.userParams);
return;
}
var uriTemplate = context.revision ? '%0data/workspaces/%1/pages/%2/revisions/%3' : '%0data/workspaces/%1/pages/%2';
var host = SocialtextAdaptor.fullHostName(context.tiddler.fields['server.host']);
var workspace = context.workspace ? context.workspace : context.tiddler.fields['server.workspace'];
uri = uriTemplate.format([host,workspace,SocialtextAdaptor.normalizedTitle(context.tiddler.title),context.revision]);
var req = SocialtextAdaptor.doHttpGET(uri,SocialtextAdaptor.getTiddlerCallback2,context,{'accept':SocialtextAdaptor.mimeType});
};
SocialtextAdaptor.getTiddlerCallback2 = function(status,context,responseText,uri,xhr)
{
context.tiddler.text = responseText;
if(status) {
context.status = true;
} else {
context.status = false;
context.statusText = xhr.statusText;
}
if(context.callback)
context.callback(context,context.userParams);
};
SocialtextAdaptor.prototype.getTiddlerRevisionList = function(title,limit,context,userParams,callback)
{
context = this.setContext(context,userParams,callback);
var uriTemplate = '%0data/workspaces/%1/pages/%2/revisions?accept=application/json';
if(!limit)
limit = 5;
var uri = uriTemplate.format([context.host,context.workspace,SocialtextAdaptor.normalizedTitle(title),limit]);
var req = SocialtextAdaptor.doHttpGET(uri,SocialtextAdaptor.getTiddlerRevisionListCallback,context);
return typeof req == 'string' ? req : true;
};
SocialtextAdaptor.getTiddlerRevisionListCallback = function(status,context,responseText,uri,xhr)
{
context.status = false;
if(status) {
var content = null;
try {
eval('var info=' + responseText);
} catch (ex) {
context.statusText = exceptionText(ex,SocialtextAdaptor.serverParsingErrorMessage);
if(context.callback)
context.callback(context,context.userParams);
return;
}
list = [];
for(var i=0; i<info.length; i++) {
var tiddler = new Tiddler(info[i].name);
tiddler.modified = SocialtextAdaptor.dateFromEditTime(info[i].last_edit_time);
tiddler.modifier = info[i].last_editor;
tiddler.tags = info[i].tags;
tiddler.fields['server.page.id'] = info[i].page_id;
tiddler.fields['server.page.name'] = info[i].name;
tiddler.fields['server.page.revision'] = info[i].revision_id;
list.push(tiddler);
}
var sortField = 'server.page.revision';
list.sort(function(a,b) {return a.fields[sortField] < b.fields[sortField] ? +1 : (a.fields[sortField] == b.fields[sortField] ? 0 : -1);});
context.revisions = list;
context.status = true;
} else {
context.statusText = xhr.statusText;
}
if(context.callback)
context.callback(context,context.userParams);
};
SocialtextAdaptor.prototype.putTiddler = function(tiddler,context,userParams,callback)
{
context = this.setContext(context,userParams,callback);
context.tiddler = tiddler;
context.title = tiddler.title;
var uriTemplate = '%0data/workspaces/%1/pages/%2';
var host = context.host ? context.host : SocialtextAdaptor.fullHostName(tiddler.fields['server.host']);
var workspace = context.workspace ? context.workspace : tiddler.fields['server.workspace'];
var uri = uriTemplate.format([host,workspace,tiddler.title,tiddler.text]);
//var req = doHttp('POST',uri,tiddler.text,SocialtextAdaptor.mimeType,null,null,SocialtextAdaptor.putTiddlerCallback,context,{"X-Http-Method": "PUT"});
var req = SocialtextAdaptor.doHttpPOST(uri,SocialtextAdaptor.putTiddlerCallback,context,{"X-Http-Method": "PUT"},tiddler.text,SocialtextAdaptor.mimeType);
return typeof req == 'string' ? req : true;
};
SocialtextAdaptor.putTiddlerCallback = function(status,context,responseText,uri,xhr)
{
if(status) {
context.status = true;
} else {
context.status = false;
context.statusText = xhr.statusText;
}
if(context.callback)
context.callback(context,context.userParams);
};
SocialtextAdaptor.prototype.close = function()
{
return true;
};
config.adaptors[SocialtextAdaptor.serverType] = SocialtextAdaptor;
} //# end of 'install only once'
//}}}
/***
SocialtextStyleOverrides
***/
/*{{{*/
.headerShadow {padding: 2em 0em .5em 1em;}
.headerForeground {padding: 2em 0em .5em 1em;}
#st-page-wiki-title {
font-size: 80%;
}
.subtitle {
font-style: italic;
font-size 80%;
}
/* from #st-tags */
.tagged {
border-color: #bbeebb;
background-color: #f4fff4;
}
.tagged .listTitle {
color: #595;
font-weight: bold;
}
.tagged .button {
color: #000;
}
.selected .tagged {
background-color: ColorPalette::TertiaryLight;
border: 1px solid ColorPalette::TertiaryMid;
}
/* from #st-incoming-links */
.tagging {
border-color: #ebb;
background-color: #fff4f4;
}
.tagging .listTitle {
color: #b78;
font-weight: bold;
}
.tagging .button {
color: #999;
}
.selected .tagging {
background-color: ColorPalette::TertiaryLight;
border: 1px solid ColorPalette::TertiaryMid;
}
.tiddler {/* Tiddler body */
border:1px solid #ccc;
margin:0.5em;
background:#fff;
padding:0.5em;
}
.viewer blockquote {border-left: 0px solid}
.tiddlyLinkNonExisting {
font-style: italic;
border-bottom: 1px dashed;
}
.editor input, .editor textarea {
background: #ffd;
border-style: solid;
border-color: #888 #ccc #ccc #888;
border-width: 2px;
}
.tabContents {white-space: nowrap;}
#displayArea {margin: 1em 20em 0em 14em;}
#sidebar {
position: absolute;
right: 3px;
width: 21em;
font-size: .9em;
}
#sidebarOptions .button {
border-color: #eee;
}
#sidebarTabs .tabContents {
width: 20em;
overflow: hidden;
}
.viewer tt {
font-size: 1.2em;
line-height: 1.4em;
}
ul {list-style-type: square;}
ul ul {list-style-type: circle;}
ol {list-style-type: decimal;}
ol ol {list-style-type: decimal;}
ol ol ol {list-style-type: decimal;}
ol ol ol ol {list-style-type: decimal;}
ol ol ol ol ol {list-style-type: decimal;}
ol ol ol ol ol ol {list-style-type: decimal;}
/*}}}*/
/***
SocialtextScreenStyle
http://www.eu.socialtext.net/static/2.0.0.1/css/st/screen.css
***/
/*{{{*/
body {
font-family: Arial, sans-serif;
color: #000;
background: #eee;
margin: 0;
}
/* Wiki Navigation */
.st-wiki-nav {
clear: both;
margin-left: 10px;
margin-right: 10px;
}
.st-wiki-nav-content {
background: url('../../images/st/wiki-nav/solid.gif') repeat-x left bottom;
margin-left: 24px;
margin-right: 24px;
padding-top: 3px;
min-height: 24px;
}
* html .st-wiki-nav-content {
padding-bottom: 3px;
height: 24px;
}
.st-wiki-nav-right {
background: url('../../images/st/wiki-nav/right-round.gif') no-repeat bottom right;
}
.st-wiki-nav-left {
background: url('../../images/st/wiki-nav/left-round.gif') no-repeat bottom left;
}
#st-home {
float: left;
margin-right: 60px;
padding-top: 2px;
}
#st-home-link {
color: white;
text-decoration: none;
font-weight: bold;
font-family: Helvetica, sans-serif;
font-size: 90%;
}
#st-editing-prefix-container {
border-collapse: collapse;
width: 100%;
padding: 0px;
margin: 0px;
margin-bottom: -20px;
}
#st-editing-prefix-container tr td {
margin: 0px;
padding: 0px;
}
#st-editing-title {
color: black;
background-color: white;
text-decoration: none;
font-weight: bold;
font-family: Helvetica, sans-serif;
font-size: 90%;
margin-bottom: 0.4em;
}
#st-wiki-title-invite {
font-size: 50%;
font-family: Helvetica, sans-serif;
}
#st-wiki-title-central-page-link {
font-size: 50%;
font-family: Helvetica, sans-serif;
}
#st-wiki-title-invite a {
color: #00f;
}
#st-wiki-logo {
text-align: center;
clear: both;
}
#st-wiki-logo-image {
}
.st-wiki-nav-actions {
float: right;
color: black;
font-size: 75%;
padding-top: 3px;
}
.st-wiki-nav-actions a {
padding: 2px;
color: white;
text-decoration: none;
font-family: Helvetica, sans-serif;
}
/* Wiki Subnav */
#st-wiki-subnav {
margin-top: 2px;
font-size: 70%;
font-weight: bold;
font-family: Helvetica, sans-serif;
color: #888;
}
#st-wiki-subnav a {
padding: 2px;
color: #008;
text-decoration: none;
}
#st-wiki-subnav-right {
float: right;
margin-right: 6em;
}
#st-wiki-subnav-left {
float: left;
margin-left: 6em;
}
* html #st-wiki-subnav-left {
margin-left: 3em;
}
/* Wiki Navigation Search Bar */
#st-search-form {
margin: 0;
padding: 0;
padding-top: 1px;
}
#st-search-form .button-table {
float: left;
font-size: 79%;
font-weight: bold;
margin-left: 5px;
margin-top: 1px;
}
#st-search-form #st-search-term {
float: left;
font-size: 60%;
}
/* Content Outline */
#st-content-border, #st-edit-border {
position: relative;
clear: both;
margin-left: 3px;
margin-right: 2px;
margin-bottom: 0px;
margin-top: 0px;
border-bottom: 1px solid #eee;
}
#st-content-border-left, #st-edit-border-left {
background: url('../../images/st/page-shadow/left.gif') left top repeat-y;
position: relative;
}
#st-content-border-right, #st-edit-border-right {
background: url('../../images/st/page-shadow/right.gif') right top repeat-y;
position: relative;
}
#st-content-border-top, #st-edit-border-top {
position: relative;
background: url('../../images/st/page-shadow/top.gif') left top repeat-x;
}
#st-content-border-bottom, #st-edit-border-bottom {
background: url('../../images/st/page-shadow/bottom.gif') left bottom repeat-x;
position: relative;
}
#st-content-border-left-top, #st-edit-border-left-top {
background: url('../../images/st/page-shadow/left-top.gif') left top no-repeat;
position: relative;
}
#st-content-border-right-top, #st-edit-border-right-top {
background: url('../../images/st/page-shadow/right-top.gif') right top no-repeat;
position: relative;
}
#st-content-border-left-bottom, #st-edit-border-left-bottom {
background: url('../../images/st/page-shadow/left-bottom.gif') left bottom no-repeat;
position: relative;
}
#st-content-border-right-bottom, #st-edit-border-right-bottom {
background: url('../../images/st/page-shadow/right-bottom.gif') right bottom no-repeat;
padding-top: 5px;
padding-bottom: 9px;
position: relative;
}
* html #st-content-border-right-bottom, * html #st-edit-border-right-bottom {
padding-top: 4px;
padding-left: 7px;
padding-right: 8px;
position: relative;
}
.st-content-width-controller {
width: 100%;
position: relative;
border-collapse: collapse;
}
.st-content-width-controller td {
vertical-align: top;
}
.st-content {
position: relative;
background-color: white;
margin-top: 0px;
margin-left: 7px;
margin-right: 8px;
margin-bottom: -1px;
border-left: 1px dotted #80a9f3;
border-right: 1px dotted #80a9f3;
border: 1px solid #80a9f3;
padding: 6px 12px 12px 12px;
}
* html .st-content {
margin-top: 0px;
margin-left: 0px;
margin-right: 0px;
}
/* This textarea is only for Safari. However, if we use display:none; here Safari ignores the .value operation in JS */
#st-raw-wikitext-textarea {
width:1px;
height:1px;
margin:0;
padding:0;
}
/* Action Buttons */
.button-table, .button-table tr td {
border-collapse: collapse;
margin: 0;
padding: 0;
}
.button-rounded {
background: url('../../images/st/grey-button/left-top-rounded.png') top left no-repeat;
margin: 0;
}
.button-rounded-right-top {
background: url('../../images/st/grey-button/right-top-rounded.png') top right no-repeat;
margin: 0;
}
.button-rounded-left-bottom {
background: url('../../images/st/grey-button/left-bottom-rounded.png') bottom left no-repeat;
margin: 0;
}
.button-rounded-right-bottom {
background: url('../../images/st/grey-button/right-bottom-rounded.png') bottom right no-repeat;
margin: 0;
}
.button-straight {
background: url('../../images/st/grey-button/left-top-straight.png') top left no-repeat;
margin: 0;
}
.button-straight-right-top {
background: url('../../images/st/grey-button/right-top-straight.png') top right no-repeat;
margin: 0;
}
.button-straight-left-bottom {
background: url('../../images/st/grey-button/left-bottom-straight.png') bottom left no-repeat;
margin: 0;
}
.button-straight-right-bottom {
background: url('../../images/st/grey-button/right-bottom-straight.png') bottom right no-repeat;
margin: 0;
}
.button-content {
font-size: 90%;
}
.button-content a {
display: block;
padding: 2px;
padding-left: 10px;
padding-right: 10px;
font-family: Helvetica, Verdana, sans-serif;
font-weight: bold;
text-decoration: none;
color: black;
}
.button-content input.submit {
border: 0px;
padding: 2px;
padding-left: 10px;
padding-right: 10px;
font-family: Helvetica, Verdana, sans-serif;
font-weight: bold;
text-decoration: none;
color: black;
background-color: transparent;
}
/* Personal Homepage */
#st-homepage {
background: white url('../../images/st/homepage/blue-fade.gif') top left no-repeat;
}
#st-homepage-layout {
margin-top: 15px;
clear: both;
width: 100%;
border-collapse: collapse;
}
#st-homepage-layout tr td.st-homepage-layout-cell {
padding: 5px;
vertical-align: top;
}
#st-homepage-layout-dashboard {
width: 50%
}
#st-homepage-layout-notes {
width: 50%;
}
#st-homepage-notes, #st-homepage-dashboard {
text-align: left;
width: 95%;
}
#st-user-greeting, #st-wiki-title {
font-family: Helvetica, Verdana, sans-serif;
font-size: 150%;
}
#st-wiki-title {
margin-left: 5px;
}
#st-user-greeting {
position: relative;
text-align: right;
float: right;
}
#st-group-notes-content, #st-personal-notes-content {
}
.st-homepage-section {
margin-bottom: 15px;
}
#st-homepage-notes .st-homepage-section {
background-color: white;
border: 1px solid #aaa;
padding: 15px;
}
.st-homepage-section-title {
font-size: 110%;
font-family: Helvetica, Verdana, sans-serif;
}
#st-homepage-notes .st-homepage-section-title {
color: #aaa;
text-decoration: underline;
}
.st-homepage-notes-edit-link {
background: url('../../images/st/homepage/edit-icon.gif') no-repeat left top;
display: block;
text-indent: -2000px;
height: 13px;
width: 36px;
text-decoration: none;
padding:0;
}
* html .st-homepage-notes-edit-link {
border:1px solid white;
}
.st-homepage-notes-edit {
font-family: Verdana, sans-serif;
font-size: 65%;
float: right;
}
.st-homepage-notes-content {
font-size: 85%;
margin-top: 10px;
padding-top: 0px;
padding-bottom: 0px;
font-family: Verdana, Helvetica, sans-serif;
}
#st-dyk {
border-color: #cca !important;
background-color: #ffe !important;
}
#st-dyk-title {
color: #e4a020 !important;
text-decoration: none !important;
}
/* Homepage Simple List */
#st-whats-new-title-link {
background: url('../../images/st/homepage/icon-28-pages.gif') no-repeat left top;
}
#st-watchlist-title-link {
background: url('../../images/st/homepage/icon-28-star.gif') no-repeat left top;
}
#st-wikis-title-link {
background: url('../../images/st/homepage/icon-28-group.gif') no-repeat left top;
}
.st-homepage-simplelist-title-link {
display: block;
padding-left: 32px;
min-height: 32px;
}
* html .st-homepage-simplelist-title-link {
height: 32px;
}
.st-homepage-simplelist-title {
}
.st-homepage-simplelist-table {
margin-left: 25px;
border: 1px dashed #ddd;
border-collapse: collapse;
font-family: Verdana, Helvetica, sans-serif;
font-size: 80%;
width: 95%;
}
.st-homepage-simplelist-table td {
padding: 2px;
}
.st-homepage-simplelist-table tr.st-homepage-simplelist-row-odd {
background-color: #f3f7f7;
}
.st-homepage-simplelist-table tr.st-homepage-simplelist-row-even {
background-color: white;
}
.st-homepage-simplelist-table a {
color: #4f55dd;
text-decoration: none;
}
.st-homepage-simplelist-table a:visited {
color: #551a8b;
}
.st-homepage-simplelist-subleft {
font-size: 80%;
margin-left: 1em;
color: #666;
}
.st-homepage-simplelist-right {
width: 20%;
}
.st-homepage-simplelist-subright {
font-size: 80%;
color: #666;
}
.st-homepage-simplelist {
}
.st-homepage-simplelist-header {
min-height: 35px;
}
.st-homepage-simplelist-header .button-table {
float: right;
margin-right: 15px;
font-size: 95%;
}
.st-homepage-simplelist-header .button-table .button-content {
padding: 1px;
}
.st-homepage-whatsnew-author, .st-homepage-whatsnew-date {
color: #555;
}
.st-homepage-whatsnew-attribution {
padding-left: 1em;
font-size: 80%;
color: #aaa;
}
/* Homepage Wikis List */
#st-wikis-title {
}
/* Data and Templates */
.st-jst-template, .st-json {
display: none;
}
/* Page Sidebox Common Styles */
#st-page-boxes-toggle {
position: relative;
float: right;
text-align: right;
font-family: Verdana, Arial, sans-serif;
font-weight: bold;
font-size: 80%;
margin-bottom: 0.7em;
}
#st-page-boxes-toggle-link {
text-decoration: none;
}
#st-page-boxes-underlay {
float: right;
margin-top: -10px;
margin-right: 10px;
background: white;
z-index: 198;
clear: both;
margin-left: 15px;
}
* html #st-page-boxes-underlay {
margin-right: 4px;
}
#st-page-boxes {
background: inherit;
position: absolute;
right: 23px;
z-index: 199;
margin-top: 15px;
margin-left: 20px;
}
#st-page-boxes, #st-page-boxes-underlay {
width: 225px;
/* padding-left: 15px; */ /* Gives the white border effect, cwest dislikes it. */
}
.st-page-box {
border: 1px solid black;
padding: 5px;
font-family: Verdana, Helvetica, sans-serif;
font-size: 80%;
margin-top: 15px;
}
.st-page-box-title {
font-family: Helvetica, Verdana, sans-serif;
font-weight: bold;
margin-bottom: 10px;
}
.st-page-box-listing {
margin: 0;
padding: 0;
}
.st-page-box-listing-entry {
display: block;
}
.st-page-boxes-nobacklinks {
font-family: Verdana, Helvetica, sans-serif;
font-size: 90%;
color: #888;
}
.st-page-box-first {
margin-top: 0px;
}
/* Page Display */
#st-page-content {
clear: left;
margin-top: 6px;
margin-bottom: 0;
padding-bottom: 0;
}
#st-page-content, #st-page-content td {
font-family: Verdana, Helvetica, sans-serif;
font-size: 90%;
}
#st-page-wiki-title {
font-family: Helvetica, Verdana, sans-serif;
font-size: 65%;
font-weight: bold;
color: #aaa;
margin-bottom: 0.2em;
margin-top: 0.1em;
padding-top: 0;
}
#wiki {
margin: 0;
padding: 0;
}
#st-page-title {
}
#st-page-titletext, .st-page-title {
font-family: Helvetica, Verdana, sans-serif;
font-size: 150%;
font-weight: bold;
color: #888;
border-bottom: 1px solid #888;
}
#st-newpage-pagename-edit {
font-family: inherit;
font-size: inherit;
font-weight: inherit;
color: #000;
border: 1px solid black;
padding-left: 0.3em;
background-color: #ffd;
}
#st-page-details {
font-style: italic;
font-size: 75%;
font-family: Georgia, serif;
margin: 6px 10px 0 10px;
}
#st-page-details-feed-icon {
vertical-align: middle;
border: none;
}
#st-page-stats {
float: right;
vertical-align: middle;
}
#st-attribution {
float: left;
margin-bottom: 10px;
}
#st-page-editing-wysiwyg {
background: #ffd;
border-style: solid;
border-color: #888 #ccc #ccc #888;
border-width: 2px;
width: 100%;
}
#st-page-editing-toolbar {
margin-left: -6px;
overflow: hidden;
float: left;
height: 25px;
}
#wikiwyg_wikitext_textarea {
margin-top: 4px;
background: #ffd;
border-style: solid;
border-color: #888 #ccc #ccc #888;
border-width: 2px;
width: 100%;
font-family: monospace;
}
#st-page-maincontent {
}
#st-page-editing, #wikiwyg_wikitext_textarea {
}
#st-page-editing-pagebody-decoy, #st-page-editing-wysiwyg {
display: none;
}
#st-editing-tools-edit {
display: none;
}
#st-mode-wysiwyg-button
{
font-size: 70%;
margin-left: 4em;
}
#st-mode-wikitext-button
{
font-size: 70%;
}
#st-edit-tips
{
font-size: 70%;
}
.wikiwyg_button {
background: #FFFFFF;
border: 1px solid #FFFFFF;
cursor: pointer;
width: 20px;
height: 20px;
vertical-align: bottom;
}
.wikiwyg_button:hover {
border: 1px outset;
}
.wikiwyg_button:active {
border: 1px inset;
}
#wikiwyg_toolbar {
display: none;
}
/* Sidebox Pagetools: Revisions, Watchlist */
#st-side-box-pagetools {
border-collapse: collapse;
}
#st-rewind-norevisions {
font-family: Helvetica, Arial, sans-serif;
font-size: 11px;
color: #777;
text-decoration: none;
}
#st-side-box-pagetools a {
font-family: Helvetica, Arial, sans-serif;
font-size: 11px;
color: #555;
text-decoration: none;
}
/* Page View Tags/Incoming Links Sidebox */
#st-tags {
background: #f4fff4;
border-color: #bbeebb;
color: #999;
}
#st-tags-title {
color: #595;
}
#st-tags-addlink, #st-tags-addbutton {
font-weight: bold;
}
#st-tags-listing {
margin-bottom: 5px;
}
#st-tags-addinput, #st-tags-message, #st-tags-suggestion {
display: none;
}
#st-tags-deletemessage {
font-size: 90%;
color: #555;
display: none;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
#st-tags-suggestion {
margin-top: 2px;
}
.st-tags-level1 {
font-size: 90%;
}
.st-tags-level2 {
font-size: 100%;
}
.st-tags-level3 {
font-size: 110%;
}
.st-tags-level4 {
font-size: 120%;
}
.st-tags-level5 {
font-size: 130%;
}
.st-tags-tagline .st-tags-tagdelete {
text-decoration: none;
color: #ccc;
}
.st-tags-tagline a {
text-decoration: none;
color: #444;
}
#st-tags-field {
width: 95%;
}
#st-incoming-links {
border-color: #ebb;
background-color: #fff4f4;
}
#st-incoming-links-title {
color: #b78;
}
#st-attachments {
border-color: #bbe;
background-color: #f4f4ff;
}
#st-attachments-uploadbutton, #st-attachments-managebutton {
}
#st-attachments-buttons-uploadbutton {
margin: 0px;
padding: 0px;
padding-left: 2px;
}
#st-attachments-buttons-managebutton {
margin: 0px;
padding: 0px;
padding-right: 2px;
}
#st-attachments-buttons td {
padding-right: 3px;
font-size: 99%;
}
#st-attachments-buttons {
border-collapse: collapse;
margin: 0px;
padding: 0px;
margin-top: 5px;
}
#st-attachments-title {
color: #77b;
}
.st-attachments-line {
width:100%;
overflow:hidden;
}
/* Actions Bar */
#st-actions-bar-spacer {
clear:both;
height:0.5em;
overflow:hidden;
}
#st-actions-bar-spacer-clear {
clear:both;
height:1px;
overflow:hidden;
}
#st-actions-bar, #st-editing-tools-bar {
margin-left: 30px !important;
margin-right: 30px !important;
}
/* Footer */
#st-footer {
margin-top: -8px;
margin-bottom: 5px;
clear: both;
}
/* Socialtext Attribution */
#st-socialtext-attribution {
clear: both;
text-align: center;
font-size: 80%;
font-family: Helvetica, sans-serif;
}
#st-socialtext-attribution-link {
text-decoration: none;
}
#st-socialtext-attribution-image {
border: 0;
}
/* Page Actions */
#st-edit-button-border-left-middle, #st-login-to-edit-button-border-left-middle {
background: url('../../images/st/button-blue/left-middle.gif') left top repeat-y;
}
#st-edit-button-border-right-middle, #st-login-to-edit-button-border-right-middle {
background: url('../../images/st/button-blue/right-middle.gif') right top repeat-y;
}
#st-edit-button-border-left-top, #st-login-to-edit-button-border-left-top {
background: url('../../images/st/button-blue/left-top.gif') left top no-repeat;
}
#st-edit-button-border-right-top, #st-login-to-edit-button-border-right-top {
background: url('../../images/st/button-blue/right-top.gif') right top no-repeat;
}
#st-edit-button-border-left-bottom, #st-login-to-edit-button-border-left-bottom {
background: url('../../images/st/button-blue/left-bottom.gif') left bottom no-repeat;
}
#st-edit-button-border-right-bottom, #st-login-to-edit-button-border-right-bottom {
background: url('../../images/st/button-blue/right-bottom.gif') right bottom no-repeat;
}
#st-edit-button-link, #st-login-to-edit-button-link {
}
#st-comment-button-border-left-middle {
background: url('../../images/st/button-purple/left-middle.gif') left top repeat-y;
}
#st-comment-button-border-right-middle {
background: url('../../images/st/button-purple/right-middle.gif') right top repeat-y;
}
#st-comment-button-border-left-top {
background: url('../../images/st/button-purple/left-top.gif') left top no-repeat;
}
#st-comment-button-border-right-top {
background: url('../../images/st/button-purple/right-top.gif') right top no-repeat;
}
#st-comment-button-border-left-bottom {
background: url('../../images/st/button-purple/left-bottom.gif') left bottom no-repeat;
}
#st-comment-button-border-right-bottom {
background: url('../../images/st/button-purple/right-bottom.gif') right bottom no-repeat;
}
#st-comment-button-link {
}
#st-save-button-border-left-middle {
background: url('../../images/st/button-green/left-middle.gif') left top repeat-y;
}
#st-save-button-border-right-middle {
background: url('../../images/st/button-green/right-middle.gif') right top repeat-y;
}
#st-save-button-border-left-top {
background: url('../../images/st/button-green/left-top.gif') left top no-repeat;
}
#st-save-button-border-right-top {
background: url('../../images/st/button-green/right-top.gif') right top no-repeat;
}
#st-save-button-border-left-bottom {
background: url('../../images/st/button-green/left-bottom.gif') left bottom no-repeat;
}
#st-save-button-border-right-bottom {
background: url('../../images/st/button-green/right-bottom.gif') right bottom no-repeat;
}
#st-save-button-link {
}
#st-preview-button-border-left-middle {
background: url('../../images/st/button-gold/left-middle.gif') left top repeat-y;
}
#st-preview-button-border-right-middle {
background: url('../../images/st/button-gold/right-middle.gif') right top repeat-y;
}
#st-preview-button-border-left-top {
background: url('../../images/st/button-gold/left-top.gif') left top no-repeat;
}
#st-preview-button-border-right-top {
background: url('../../images/st/button-gold/right-top.gif') right top no-repeat;
}
#st-preview-button-border-left-bottom {
background: url('../../images/st/button-gold/left-bottom.gif') left bottom no-repeat;
}
#st-preview-button-border-right-bottom {
background: url('../../images/st/button-gold/right-bottom.gif') right bottom no-repeat;
}
#st-preview-button-link {
}
#st-cancel-button-border-left-middle {
background: url('../../images/st/button-crimson/left-middle.gif') left top repeat-y;
}
#st-cancel-button-border-right-middle {
background: url('../../images/st/button-crimson/right-middle.gif') right top repeat-y;
}
#st-cancel-button-border-left-top {
background: url('../../images/st/button-crimson/left-top.gif') left top no-repeat;
}
#st-cancel-button-border-right-top {
background: url('../../images/st/button-crimson/right-top.gif') right top no-repeat;
}
#st-cancel-button-border-left-bottom {
background: url('../../images/st/button-crimson/left-bottom.gif') left bottom no-repeat;
}
#st-cancel-button-border-right-bottom {
background: url('../../images/st/button-crimson/right-bottom.gif') right bottom no-repeat;
}
#st-cancel-button-link {
}
#st-edit-more-button-border-left-middle {
background: url('../../images/st/button-blue/left-middle.gif') left top repeat-y;
}
#st-edit-more-button-border-right-middle {
background: url('../../images/st/button-blue/right-middle.gif') right top repeat-y;
}
#st-edit-more-button-border-left-top {
background: url('../../images/st/button-blue/left-top.gif') left top no-repeat;
}
#st-edit-more-button-border-right-top {
background: url('../../images/st/button-blue/right-top.gif') right top no-repeat;
}
#st-edit-more-button-border-left-bottom {
background: url('../../images/st/button-blue/left-bottom.gif') left bottom no-repeat;
}
#st-edit-more-button-border-right-bottom {
background: url('../../images/st/button-blue/right-bottom.gif') right bottom no-repeat;
}
#st-edit-more-button-link {
}
.st-page-action-button-link {
min-height: 24px;
min-width: 100px;
text-align: center;
font-family: Helvetica, Verdana, sans-serif;
font-size: 90%;
text-decoration: none;
color: #fff;
font-weight: bold;
display: block;
padding-top: 8px;
padding-bottom: 0px;
margin-bottom: -3px;
width: 100%;
margin-left: -2px;
}
* html .st-page-action-button-link {
padding-top: 5px;
padding-bottom: 0px;
height: 24px;
}
.st-page-action-button {
float: left;
margin: 0;
padding: 0;
margin-right: 10px;
min-height: 20px;
border-collapse: collapse;
width: 100px;
}
/* Attach File Interface */
#st-attachments-attachinterface {
font-family: Helvetica, sans-serif;
font-size: 90%;
display: none;
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 2000;
background-image: url('../../images/st/popup/bg.png');
}
#st-attachments-manageinterface {
font-family: Helvetica, sans-serif;
font-size: 90%;
display: none;
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 2000;
background-image: url('../../images/st/popup/bg.png');
}
* html #st-attachments-attachinterface {
background-image: none;
}
* html #st-attachments-manageinterface {
background-image: none;
}
* html .popup-overlay {
background-image: url('../../images/st/popup/bg.png');
background-color: #000;
opacity: .70;
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 2001;
}
#st-attachments-attach-interface {
z-index: 2002;
background-color: #fff;
color: #000;
border: 4px solid #ccc;
padding: 1em;
width: 520px;
margin-left: auto;
margin-right: auto;
margin-top: 10%;
position: absolute;
top: 0px;
}
* html #st-attachments-attach-interface {
}
#st-attachments-attach-formtarget {
width: 0px;
height: 0px;
border: 0;
padding: 0;
margin: 0;
}
#st-attachments-attach-message {
font-size: 90%;
font-family: Verdana, Arial, Helvetica, Sans-Serif;
}
#st-attachments-attach-title {
font-weight: bold;
font-size: 120%;
}
#st-attachments-attach-close {
float: right;
margin-top: 6px;
}
#st-attachments-attach-uploadbutton {
float: right;
margin-right: 6px;
margin-top: 6px;
padding-bottom: 0;
}
#st-attachments-attach-fileprompt {
margin: 0.2em 0 0.4em 0;
padding-bottom: 0px;
}
#st-attachments-attach-submit {
font-size: 90%;
font-weight: bold;
}
#st-attachments-attach-filename {
font-size: 90%;
}
#st-attachments-attach-uploadmessage {
font-weight: bold;
margin-bottom: 1em;
display: none;
}
#st-attachments-attach-error {
font-weight: bold;
color: #f00;
margin-bottom: 1em;
display: none;
}
#st-attachments-attach-list {
display: none;
color: #666;
font-size: 90%;
margin-top: 1em;
margin-bottom: 1em;
border-top: 1px solid #4949BA;
border-bottom: 1px solid #4949BA;
background-color: #F5F5F5;
padding: 3px;
}
.st-attachments-attach-listlabel {
font-size: 90%;
color: #4949BA;
}
/* Queue File Dialog */
#st-attachmentsqueue-interface {
font-family: Helvetica, sans-serif;
font-size: 90%;
display: none;
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
background-image: url('../../images/st/popup/bg.png'); /* Don't forget IE hack for ship! */
z-index: 2000;
}
* html #st-attachmentsqueue-interface {
background-image: none;
}
#st-attachmentsqueue-dialog {
z-index: 2002;
background-color: #fff;
color: #000;
border: 4px solid #ccc;
padding: 1em;
width: 530px;
margin-left: auto;
margin-right: auto;
margin-top: 10%;
position: absolute;
top: 0px;
}
* html #st-attachmentsqueue-dialog {
}
#st-attachmentsqueue-fileprompt {
margin-bottom: 0.4em;
margin-top: 0;
padding-bottom: 0;
}
#st-attachmentsqueue-title {
font-weight: bold;
font-size: 120%;
}
#st-attachmentsqueue-close {
float: right;
margin-top: 6px;
}
#st-attachmentsqueue-uploadbutton {
float: right;
margin-right: 6px;
margin-top: 6px;
padding-bottom: 0;
}
#st-attachmentsqueue-submit {
font-size: 90%;
}
#st-attachmentsqueue-filename {
font-size: 90%;
}
#st-attachmentsqueue-message {
font-size: 90%;
font-family: Verdana, Arial, Helvetica, Sans-Serif;
}
#st-attachmentsqueue-uploadmessage {
font-weight: bold;
margin-bottom: 1em;
display: none;
}
#st-attachmentsqueue-error {
font-weight: bold;
color: #f00;
margin-bottom: 1em;
display: none;
}
#st-attachmentsqueue-list {
display: none;
color: #666;
font-size: 90%;
margin-top: 1em;
margin-bottom: 1em;
border-top: 1px solid #4949BA;
border-bottom: 1px solid #4949BA;
background-color: #F5F5F5;
padding: 3px;
}
.st-attachmentsqueue-listlabel {
font-size: 90%;
color: #4949BA;
}
/* Lists */
tr.st-trbg-even, tr.st-trbg-even td{
background-color: #f3f7f7;
}
tr.w-st-even-row, tr.w-st-even-row td {
background-color: #f3f7f7;
}
.query-results-header-title, .query-results-header-last-edit-by {
text-align: left;
}
.query-results-row-revisions {
text-align: right;
}
.query-results-content {
font-size: 85%;
border-collapse: collapse;
border: 1px dashed #ddd;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
}
.query-results-row {
border-collapse: collapse;
border: 1px dashed #ddd;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
}
.query-results-row a {
text-decoration: underline;
color: #00f;
}
.query-results-row td {
font-family: Verdana;
padding: 0.3em;
border-left: 1px dashed #ddd;
border-right: 1px dashed #ddd;
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
.query-results-header-row {
border-collapse: collapse;
border: 1px dashed #ddd;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
}
.query-results-header-row a {
text-decoration: underline;
color: #00f;
}
.query-results-header-row th {
font-family: Helvetica;
padding: 0.3em;
border-left: 1px dashed #ddd;
border-right: 1px dashed #ddd;
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
div.st-actionbutton {
float: left;
}
div#deleteme-st-actions-bar {
clear: both;
margin: 0.8em 20px 0.2em auto;
padding: 0;
}
/* Manage File Interface */
#st-attachments-manage-interface {
z-index: 2002;
background-color: #fff;
color: #000;
border: 4px solid #ccc;
padding: 1em;
width: 520px;
margin-left: auto;
margin-right: auto;
margin-top: 10%;
position: absolute;
top: 0px;
}
#st-attachments-manage-filetable {
height: 150px;
margin: 0;
padding: 0;
width: 100%;
overflow: auto;
border: 1px solid #ccc;
}
#st-attachments-manage-filelisting tbody td {
font-size: 90%;
}
#st-attachments-manage-filelisting {
width: 100%;
border-collapse: collapse;
border: 0;
margin: 0;
padding: 0;
}
#st-attachments-manage-fileheader {
background: #ccc;
font-weight: bold;
border-bottom: 1px black solid;
}
#st-attachments-manage-close {
float: right;
margin-top: 3px;
margin-right: -2px;
font-weight: bold;
}
#st-attachments-manage-delete {
margin-top: 3px;
float: left;
font-weight: bold;
}
.st-attachments-manage-filerow {
border-bottom: 1px solid #ccc;
}
.row-odd {
background-color: #eee;
}
.row-even {
background-color: #fff;
}
.row-on {
background-color: #009 !important;
color: white !important;
}
.row-on a {
color: #fff !important;
}
#st-attachments-manage-deletemessage {
color: red;
}
/* Page tools icons */
#st-pagetools-print {
background: url('../../images/st/pagetools/print.gif')
left center no-repeat;
}
#st-pagetools-email {
background: url('../../images/st/pagetools/email.gif')
left center no-repeat;
}
#st-pagetools-tools {
background: url('../../images/st/pagetools/tools.gif')
left center no-repeat;
}
/*
#st-pagetools-watch {
background: url('../../images/st/pagetools/watch-blue.gif')
left center no-repeat;
}
*/
/* *********** Settings *********** */
#st-settings-pane {
}
* html #settings-pane { font-size: 85%;}
.settings-start-table {
}
* html .settings-start-table { font-size: 90%;}
#st-settings-select {
padding: 0px 10px 10px 10px;
vertical-align: top;
width: 1px;
background-color: #eff1ec;
border: none;
}
#st-settings-section {
padding: 0px 10px 10px 10px;
vertical-align: top;
}
.settings-top-header {
margin-top: 1em;
font-weight: bold;
width: 15em;
}
.settings-header {
margin-top: 1em;
font-weight: bold;
}
.settings-selections {
padding: 0px 0px 0px 20px;
line-height: 1.5em;
}
.settings-selections a:visited, .settings-selections a:active {
color: #0000ff;
}
.settings-link {
clear: both;
display: block;
}
.settings-section-left {
text-align: right;
}
.settings-label {
font-weight: bold;
}
.settings-help {
color: #888;
}
.settings-comment {
}
.users-invite-message {
padding: 0.5em 0.5em 0.5em 2em;
background-color: #eee;
/* This seems necessary to fix an IE bug that sometimes
causes the text in this div to be invisible */
z-index: 1000;
}
.workspace-entry-header {
margin-top: .5em;
font-weight: bold;
}
.workspace-entry {
margin-left: 3em;
}
.workspace-entry-p {
margin-top: .5em;
margin-bottom: .75em;
}
.workspace-subentry {
font-style: italic;
font-weight: bold;
margin-left: 1.5em;
}
.preferences-td {
padding:.5em 0 1.5em 0;
}
.preferences-query {
text-align: left;
}
.preference-radio {
background-color: #cec;
}
.user-settings-listall-headings td {
background-color: #eff3ef;
}
#st-settings-save {
padding-bottom: 0.5em;
}
.standard-button-cancel {
font-weight: bold;
background-color: #71004b;
border-left: 1px solid #aaa;
border-top: 1px solid #aaa;
border-bottom: 2px solid #333;
border-right: 2px solid #333;
color: #f4f3b9;
width: 8em;
}
.standard-button-submit {
font-weight: bold;
background-color: #656084;
border-left: 1px solid #aaa;
border-top: 1px solid #aaa;
border-bottom: 2px solid #333;
border-right: 2px solid #333;
color: #f4f3b9;
width: 8em;
}
#st-settings {
font-family: Verdana, Arial, Helvetica, Sans-Serif;
font-size: 90%;
}
/* Listview Tabs */
#st-listview a:visited {
color: #551a8b;
}
#st-listview-tabs ul {
display: block;
list-style: none outside;
margin: 0 0 0 4em;
padding: 0;
font-family: Helvetica, Arial, Sans-serif;
font-size: 80%;
}
#st-listview-tabs li {
display: block;
float: left;
margin: 0 0.8em 0 0;
padding: 3px 0.6em 0 0.6em;
border: 1px solid #d8d8d8;
border-bottom: 1px solid rgb(128, 169, 243);
background-color: #f4f4f4;
position: relative;
bottom: -2px;
}
#st-listview-tabs li.spacer {
margin: 0 0.8em 0 2em;
}
#st-listview-tabs a {
color: #bbb;
text-decoration: none;
}
#st-listview-tabs li.selected {
background-color: #fff !important;
border: 1px solid rgb(128, 169, 243) !important;
border-bottom: 1px solid #fff !important;
font-weight: bold !important;
}
#st-listview-tabs li.selected a {
color: #000 !important;
}
/* Category List Display */
#st-category-display-links {
margin-bottom: 1em;
font-size: 90%;
}
#st-tag-listbody {
font-family: Helvetica, Verdana, sans-serif;
}
/* Attachments List Display */
#st-attachments-list-body table.button-table {
margin-top: 0.1em;
font-size: 80%;
}
/* ********** PageTools Menu ************** */
div#st-editing-tools {
float: left;
}
div#st-pagetools {
z-index: 300;
font-family: Helvetica, Verdana, sans-serif;
font-size: 10px;
float: right;
margin: 18px 0 0 0em;
color: #000;
vertical-align: bottom;
position: relative;
}
#st-pagetools a {
text-decoration: none;
color: black;
padding-left: 17px;
}
#st-pagetools span {
color: inherit;
padding-left: 17px;
vertical-align: top;
}
#st-pagetools span.st-watchlist-link {
color: inherit;
vertical-align: top;
}
.st-watchlist-link {
cursor: pointer;
}
div#st-pagetools ul.level2 {
z-index: 300;
margin: 0;
padding: 0;
background: white;
border: 1px solid #CCC;
border-width: 0 1px;
}
div#st-pagetools li {
position: relative;
list-style: none;
margin: 0;
float: left;
width: 7em;
line-height: 11px;
}
div#st-pagetools ul ul li:hover {
background: #BFE2FF;
}
div#st-pagetools li a {
display: block;
text-decoration: none;
}
div#st-pagetools>ul a {
width: auto;
}
div#st-pagetools ul ul {
position: absolute;
width: auto;
display: none;
}
div#st-pagetools ul ul li {
line-height: 1.5em;
/* width: 100%; */
width: 14em;
}
.first {
border-top: 1px solid #CCC;
}
.separator {
border-bottom: 1px solid #CCC;
}
div#st-pagetools ul ul li a {
border-bottom: 1px solid #CCC;
padding-left: 15px;
padding-right: 3px;
margin-right: 3px;
border: 0px;
}
div#st-pagetools li.submenu li.submenu:hover {
z-index: 300;
background-color: #BFE2FF;
}
div#st-pagetools ul.level1 li.submenu:hover ul.level2 {
display:block;
}
div#st-pagetools ul.level2 {
top: 1.0em;
left: -9.5em;
}
/*
=head2 Revision List Display
Change these styles to update the page revision list.
*/
#st-revision-list-table {
border-collapse: collapse;
font-size: 85%;
color: #000;
}
.st-page-title-decorator {
color: #C80000;
}
.st-revision-header-emphasis {
color: #C80000;
}
.st-revision-list-compare-button-row {
}
.st-revision-list-compare-button-cell {
padding-top: 0.3em;
text-align: center;
}
.st-revision-list-compare-button {
}
#st-revision-list-header-row {
}
#st-revision-list-header-select {
padding: 6px 2px 2px 2px;
text-align: center;
}
#st-revision-list-header-revision {
padding: 6px 2px 2px 2px;
text-align: left;
}
#st-revision-list-header-edited-by {
padding: 6px 2px 2px 2px;
text-align: center;
}
#st-revision-list-header-date {
padding: 6px 2px 2px 2px;
text-align: center;
}
.st-revision-list-row {
border-collapse: collapse;
border: 1px dashed #ddd;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
}
.st-revision-list-row td {
font-family: Verdana;
padding: 0.3em;
border-left: 1px dashed #ddd;
border-right: 1px dashed #ddd;
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
.st-revision-list-row-select {
padding: 3px 0 2px 0;
text-align: center;
}
.st-revision-list-row-select-old {
}
.st-revision-list-row-select-new {
}
.st-revision-list-row-revision {
}
.st-revision-list-row-revision-link {
}
.st-revision-list-row-edited-by {
}
.st-revision-list-row-date {
}
/* Revision Menu */
#st-pagetools.st-revision-view-bar {
float: left;
}
ul.st-revision-menu {
list-style: none;
margin: 0;
padding: 0.2em;
font-size: 80%;
}
ul.st-revision-menu li {
float: left;
padding: 0 0.4em 0 0.4em;
border-right: thin solid #000000;
}
ul.st-revision-menu li.st-last {
border-right: none;
}
#st-restore-revision-button {
font-size: 80%;
}
/*
=head2 Revision Compare Display
When comparing two revisions of a page, these styles apply.
*/
#st-revision-compare-table {
background-color: #f0f0f0;
}
#st-revision-compare-table td {
background-color: white;
}
.st-revision-compare-old {
background-color: #fdd;
text-decoration: line-through;
}
.st-revision-compare-new {
background-color: #dfd;
font-weight: bold;
}
/* Weblog View */
#st-weblog {
padding: 0;
}
#st-content-weblog-display-width-controller {
}
#st-content-weblog-display-width-controller-nav {
width: 230px;
margin-left: 15px;
border-left: 5px solid #ddd;
margin-top: -1px;
}
#st-weblog-content {
font-family: Verdana, Helvetica, sans-serif;
margin-top: -1px;
margin-bottom: -1px;
border-top: 1px solid #80a9f3;
border-bottom: 1px solid #80a9f3;
}
#st-weblog-title {
font-family: 'Trebuchet MS', Verdana, Helvetica, sans-serif;
font-family: 'Times New Roman', serif;
background-color: #80a9f3;
color: #fff;
font-size: 150%;
font-weight: bold;
padding: 0.2em;
padding-left: 1em;
}
#st-weblog-wikititle {
font-family: Helvetica, Verdana, sans-serif;
font-style: italic;
font-size: 40%;
color: #fff;
margin-bottom: 0.2em;
margin-top: 0.1em;
padding-top: 0;
}
#st-weblog-titletext {
font-family: Helvetica, Verdana, sans-serif;
font-weight: bold;
color: #fff;
}
div.st-weblog-entry {
margin-top: 0.2em;
margin-bottom: 4.8em;
padding: 0 1.5em 0 1.5em;
}
.st-page-title {
clear: both;
}
div.st-weblog-entrytitle span.text {
font-family: Helvetica, Verdana, sans-serif;
font-size: 150%;
font-weight: bold;
color: #000;
}
.st-weblog-entrycontent {
font-family: Verdana, Helvetica, sans-serif;
font-size: 90%;
border-bottom: 1px solid #888;
}
.st-weblog-byline {
float: left;
text-align: left;
font-style: italic;
font-size: 70%;
font-family: Verdana, Helvetica, sans-serif;
}
.st-weblog-post-links {
float: right;
text-align: right;
font-size: 70%;
font-family: Verdana, Helvetica, sans-serif;
}
#st-weblog-archives, #st-weblog-navigation {
position: relative;
float: right;
width: 230px;
}
#st-weblog-archives {
margin-top: 15px;
clear: right;
}
#st-weblog-archives-title, #st-weblog-navigation-title {
margin-left: 15px;
font-family: Helvetica, sans-serif;
font-size: 95%;
font-weight: bold;
color: #999;
border-bottom: 2px solid #f99;
padding-bottom: 5px;
padding-top: 5px;
margin-bottom: 5px;
}
#st-weblog-navigation-content {
margin-left: 15px;
font-size: 80%;
}
#st-weblog-archives ul {
margin: 0;
padding: 0;
}
#st-weblog-archives ul li {
/* list-type: none; */
display: block;
font-size: 80%;
font-family: Helvetica, sans-serif;
padding-left: 15px;
}
#st-weblog-newpost {
padding: 0.5em 0.7em 0.3em 0.3em;
}
#st-weblog-newpost-button {
}
#st-weblog-actionbar-chooseweblog {
float: right;
}
#st-weblog-postbyemail {
font-size: 70%;
font-family: Verdana, Helvetica, sans-serif;
color: #def;
padding-top: 0.4em;
}
#st-weblog-postbyemail-link {
color: #00c;
}
.st-weblog-chooseprompt {
font-size: 90%;
font-family: Verdana, Helvetica, sans-serif;
padding-right: 0.2em;
color: #000;
}
.st-spacer {
padding-right: 0.1em;
padding-left: 0.1em;
}
.st-weblog-preventries {
padding-bottom: 20px;
clear: both;
}
.st-weblog-nextentries {
clear: both;
}
div.st-weblog-entrynav {
margin-top: 0.2em;
margin-bottom: 1.8em;
padding: 0;
}
span.st-weblog-previousentries, span.st-weblog-nextentries {
font-size: 90%;
font-family: Verdana, Helvetica, sans-serif;
padding-left: 1em;
}
/* ******* Page Stats ******** */
#st-usagereport-navbar {
font-size: 80%;
padding: 0;
margin: 0;
}
#st-usagereport-date {
font-weight: bold;
margin-top: 1em;
}
#st-page-usagereport h1 {
font-size: 1.3em;
font-weight: bold;
margin-top: 1.2em;
margin-bottom: 0.3em;
}
#st-page-usagereport h2 {
font-size: 1.1em;
font-weight: bold;
margin-top: 0.8em;
margin-bottom: 0.3em;
}
/* New Page */
#st-newpage-save, #st-newpage-duplicate {
display: none;
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
background: url('../../images/st/popup/bg.png'); /* Don't forget IE hack for ship! */
z-index: 2000;
}
#st-newpage-save-interface {
background-color: #fff;
color: #000;
border: 4px solid #ccc;
padding: 0.5em;
width: 450px;
margin-left: auto;
margin-right: auto;
margin-top: 10%;
position:absolute;
top:0px;
z-index:2003;
}
#st-newpage-duplicate-interface {
background-color: #fff;
color: #000;
border: 4px solid #ccc;
padding: 0.5em;
width: 530px;
margin-left: auto;
margin-right: auto;
margin-top: 10%;
position:absolute;
top:0px;
z-index:2003;
}
#st-newpage-save-title, #st-newpage-duplicate-title {
margin: 0;
padding: 0;
font-weight: bold;
font-family: Helvetica, sans-serif;
font-size: 100%;
}
#st-newpage-save-prompt, #st-newpage-duplicate-prompt {
font-family: Helvetica, sans-serif;
font-size: 90%;
margin-bottom: 0.4em;
}
#st-newpage-save-buttons, #st-newpage-duplicate-buttons {
margin-top: 0.8em;
text-align: right;
}
.st-newpage-duplicate-option {
font-family: Helvetica, sans-serif;
font-size: 90%;
margin: 0;
padding: 0;
}
#st-newpage-duplicate-pagename {
font-size: 90%;
}
.st-newpage-duplicate-emphasis {
background-color: #FFFF00;
font-weight: bold;
}
#st-newpage-save-field-pagename {
margin-bottom: 0;
margin-top: 0.2em;
padding-bottom: 0;
font-size: 90%;
}
#st-newpage-save-tip {
margin-bottom: 0;
margin-top: 1.2em;
padding-bottom: 0;
font-size: 75%;
color: #888;
}
/* Wikitext Styling */
.wiki {
}
.wiki hr {
margin-top: .4em;
margin-bottom: .4em;
}
.wiki .short-rule {
width: 25%;
}
.wiki .medium-rule {
width: 50%
}
.wiki ul,
.wiki ol,
.wiki blockquote {
margin-left: 2em;
padding-left: 0em;
}
.wiki table {
border-collapse: collapse;
}
.wiki td {
border: 1px;
border-style: solid;
padding: .2em;
vertical-align: top;
}
.wiki h1,
.wiki h2,
.wiki h3,
.wiki h4,
.wiki h5,
.wiki h6 {
font-weight: bold;
font-style: normal;
margin-top: 0.1em;
margin-bottom: 8px;
}
.wiki h1 {font-size: 200%;}
.wiki h2 {font-size: 170%;}
.wiki h3 {font-size: 145%;}
.wiki h4 {font-size: 125%;}
.wiki h5 {font-size: 110%;}
.wiki h6 {font-size: 100%;}
.wiki pre {
background-color: #eee; /* XXX */
margin-left: 1em;
margin-right: 1em;
padding: .2em;
}
.wiki .incipient {
text-decoration: none;
border-bottom: 1px dashed;
}
.wiki-include-title {
background-color: #ccccff;
}
.wiki .wiki {
position: relative;
background-color: #ddddff;
border: 1px solid #ccccff;
padding: 3px;
}
.wafl_existence_error {
color: rgb(200,0,0);
border-bottom: 0.2em dashed rgb(200,0,0);
}
#st-edit-mode-container {
}
#st-edit-mode-view {
}
#st-page-editing-uploadbutton {
z-index: 1500;
float: left;
}
/* Comment UI */
body#st-commentui {
background: #ffffff;
}
#st-commentui-container {
}
#st-commentui-container a:visited,
#st-commentui-container a:active {
color: #00f;
}
#st-commentui-notetop {
}
#st-commentui-controls {
}
#st-commentui-savelink {
background-color: #fffebd;
}
#st-commentui-cancellink {
}
#st-commentui-customfield {
}
#st-commentui-customfield .customfield-label {
}
#st-commentui-customfield .customfield-input {
}
#st-commentui-textarea {
padding: 0;
border-style: inset;
border-width: thin;
background-color: #ffd;
color: black;
width: 99%;
height: 150px;
}
/*
=head2 Send Page by Email
Styles for the 'Send Page by Email' popup, accessed from the 'Email' dropdown
menu on the page bar.
*/
#email-page {
background: #ffffff;
font-size: 80%;
}
.email-page-row {
clear: both;
}
.email-page-row-label {
font-weight: bold;
float: left;
width: 5em;
margin-left: 1.2em;
margin-right: 1.2em;
text-align: right;
}
.email-page-row-content {
float: left;
padding-bottom: 1.2em;
}
.email-page-user-select-column {
float: left;
padding-right: 1.2em;
width: 14em;
}
#email-page-user-select-column-center {
width: 10em;
}
.email-page-user-select-label {
text-align: center;
}
#email-page-user-select-add-label {
padding-top: 1em;
}
.email-page-user-select-button-group {
padding-bottom: 2em;
}
.email-page-input {
width: 120px;
clear: both;
display: block;
}
.email-page-select {
width: 175px;
font-size: x-small;
}
#email-page-error-message {
text-align: center;
}
#email-page-buttons-container {
clear: both;
}
#email-page-buttons {
text-align: center;
}
.email-page-input-new {
width: 175px;
}
/* System Status, Red with icon */
#st-system-status-alert {
clear: both;
width: 50%;
margin-left: 25%;
margin-top: 10px;
padding: 5px;
color: #c00;
font-weight: bold;
font-size: 80%;
background: transparent url('../../images/st/system-message/important-note.gif') no-repeat 5px center;
padding-left: 60px;
min-height: 38px;
}
* html #st-system-status-alert {
height: 38px;
}
/* System Status, Green */
#st-system-status {
clear: both;
text-align:center;
width: 80%;
margin-left: 10%;
padding: 8px 0 3px 0;
color: #0a0;
font-family: Arial, Helvetica, sans-serif;
font-size: 80%;
}
.socialtextLogo {
text-align: center;
}
/*}}}*/
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};
//--
//-- Sparklines
//--
config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
var data = [];
var min = 0;
var max = 0;
var v;
for(var t=0; t<params.length; t++) {
v = parseInt(params[t]);
if(v < min)
min = v;
if(v > max)
max = v;
data.push(v);
}
if(data.length < 1)
return;
var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
box.title = data.join(",");
var w = box.offsetWidth;
var h = box.offsetHeight;
box.style.paddingRight = (data.length * 2 - w) + "px";
box.style.position = "relative";
for(var d=0; d<data.length; d++) {
var tick = document.createElement("img");
tick.border = 0;
tick.className = "sparktick";
tick.style.position = "absolute";
tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
tick.style.left = d*2 + "px";
tick.style.width = "2px";
v = Math.floor(((data[d] - min)/(max-min)) * h);
tick.style.top = (h-v) + "px";
tick.style.height = v + "px";
box.appendChild(tick);
}
};
}
//}}}
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};
//--
//-- Crypto functions and associated conversion routines
//--
// Crypto "namespace"
function Crypto() {}
// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
var be = Array();
var len = Math.floor(str.length/4);
var i, j;
for(i=0, j=0; i<len; i++, j+=4) {
be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
}
while (j<str.length) {
be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
j++;
}
return be;
};
// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
var str = "";
for(var i=0;i<be.length*32;i+=8)
str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
return str;
};
// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
var hex = "0123456789ABCDEF";
var str = "";
for(var i=0;i<be.length*4;i++)
str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
return str;
};
// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
return Crypto.be32sToHex(Crypto.sha1Str(str));
};
// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};
// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
// Add 32-bit integers, wrapping at 32 bits
add32 = function(a,b)
{
var lsw = (a&0xFFFF)+(b&0xFFFF);
var msw = (a>>16)+(b>>16)+(lsw>>16);
return (msw<<16)|(lsw&0xFFFF);
};
// Add five 32-bit integers, wrapping at 32 bits
add32x5 = function(a,b,c,d,e)
{
var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
return (msw<<16)|(lsw&0xFFFF);
};
// Bitwise rotate left a 32-bit integer by 1 bit
rol32 = function(n)
{
return (n>>>31)|(n<<1);
};
var len = blen*8;
// Append padding so length in bits is 448 mod 512
x[len>>5] |= 0x80 << (24-len%32);
// Append length
x[((len+64>>9)<<4)+15] = len;
var w = Array(80);
var k1 = 0x5A827999;
var k2 = 0x6ED9EBA1;
var k3 = 0x8F1BBCDC;
var k4 = 0xCA62C1D6;
var h0 = 0x67452301;
var h1 = 0xEFCDAB89;
var h2 = 0x98BADCFE;
var h3 = 0x10325476;
var h4 = 0xC3D2E1F0;
for(var i=0;i<x.length;i+=16) {
var j,t;
var a = h0;
var b = h1;
var c = h2;
var d = h3;
var e = h4;
for(j = 0;j<16;j++) {
w[j] = x[i+j];
t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=16;j<20;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=20;j<40;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=40;j<60;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
for(j=60;j<80;j++) {
w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
}
h0 = add32(h0,a);
h1 = add32(h1,b);
h2 = add32(h2,c);
h3 = add32(h3,d);
h4 = add32(h4,e);
}
return Array(h0,h1,h2,h3,h4);
};
}
//}}}
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};
//--
//-- Deprecated code
//--
// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};
// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var text = lookaheadMatch[1];
if(config.browser.isIE)
text = text.replace(/\n/g,"\r");
createTiddlyElement(w.output,"pre",null,null,text);
w.nextMatch = lookaheadRegExp.lastIndex;
}
};
// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
createTiddlyElement(place,"br");
};
// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
var i = this.indexOf(item);
return i == -1 ? null : i;
};
// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
return store.getLoader().internalizeTiddler(store,this,title,divRef);
};
// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
return store.getSaver().externalizeTiddler(store,this);
};
// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
return store.allTiddlersAsHtml();
}
// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
refreshPageTemplate(title);
}
// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
story.displayTiddlers(srcElement,titles,template,animate);
}
// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
story.displayTiddler(srcElement,title,template,animate);
}
// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;
// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");
}
//}}}
Sve informacije o slobodnom softveru za knjiลพniฤno poslovanje Koha su dostupne na sluลพbenim stranicama softvera http://koha-community.org.
{toc: }
Koha je integrirani knjiลพniฤni softver ลกto znaฤi da podrลพava cjelokupno knjiลพniฤno poslovanje - nabavu, obradu i pretraลพivanje.
Koha je otvoreni softver ลกto znaฤi da je podatke iz Kohe moguฤe razmjenjivati s drugim sustavima kroz standarde i protokole.
^ Osnovna funkcionalnost
^^ Nabava
* korisnici mogu predloลพiti naslove za nabavu (evidencija desiderata)
* nabava iz viลกe izvora financiranja (mjesta troลกka)
* nabava prema ugovoru s dobavljaฤem
* voฤenje kompletne dokumentacije o procesu nabave (izdavanje narudลพbenica, evidencija raฤuna)
* automatsko dodijeljivanje inventarnog broja prilikom zaprimanja graฤe
* nekoliko naฤina za izradu inicijalnog zapisa o graฤi koja se nabavlja:
** izrada minimanlong kataloลพnog zapisa
** preuzimanje udaljenih podataka uz pomoฤ Z39.50 protokola
** preuzimanje podataka iz lokalne datoteke s MARC zapisima
** preuzimanje podataka iz baze desiderata
^^ Katalogizacija - izrada bibliografskih zapisa i odrลพavanje knjiลพniฤnog kataloga
* podrลกka za MARC (UNIMARC i MARC21) formate
* Z39.50 klijent za preuzimanje zapisa iz drugih knjiลพnica i izvora u MARC formatima
* moguฤnost unosa zapisa iz datoteke s podacima u MARC formatu
* prireฤeni predloลกci (templates) za katalogizaciju razliฤitih vrsta graฤe (minimanlo monografije i serijske publikacije)
* moguฤnost samostalnog dodavanja novih predloลพaka za katalogizaciju, prema vlastitim potrebama, uz moguฤnost koriลกtenja bilo kojeg elementa iz MARC standarda zajedno s lokalnim poljima
* provjera valjanosti unesenih podataka i dojava greลกaka
* izrada novog zapisa na temelju postojeฤeg
* moguฤnost uvida u viลกe zapisa istovremeno
* moguฤost sakrivanja pojedinih bibliografskih zapisa iz javnog kataloga
* alat za dedupliciranje bibliografskih zapisa
^^ Normativna kontrola
* podrลกka za MARC authority standard (osobna i korporativna imena, predmetna klasifikacija)
* moguฤnost konfiguracije modula za normativnu kontrolu vezano uz naฤin automatskog povezivanja bibliogrfskih i normativnih zapisa
* alat za dedupliciranje normativnih zapisa
^^ Obrada primjeraka
* automatsko generiranje bar-kodova
* automatsko predlaganje signature na temelju klasifikacijske ili neke druge oznake
* slobodno oblikovane javna i interna napomena za primjerak
* evidencija oลกteฤenih, izgubljenih i otpisanih primjeraka s moguฤnoลกฤu dodavanja proizvoljno definiranih statusa
* moguฤnost dodavanja nekoliko primjeraka odjednom s podacima koji su isti za te primjerke
* podrลกka za tiskanje bar-kodova i signatura
^^ Obrada ฤasopisa (periodika)
* evidencija pretplate na ฤasopise
* zaprimanje sveลกฤiฤa prema unaprijed odreฤenom periodicitetu
* reklamacije ฤasopisa
* obavijeลกtavanje korisnika o prisizanju novih brojeva
* evidencija proslijeฤivanja novih naslova (routing list)
^^ Evidencija korisnika
* pretraลพivanje prema imenu i prema ฤlanskom broju korisnika
* moguฤnost preuzimanja podataka o korisnicima iz drugih sustava u okolini (LDAP)
* moguฤnost unoลกenja napomena i/ili obavijesti:
** internih napomena- vidljivih samo osoblju
** obavijesti namijenjenih korisniku vidljivih na korisniฤkoj stranici
* automatsko brisanje neaktivnih korisnika
* moguฤnost dodavanja proizvoljnog broja razliฤitih identifikacijskih oznaka za korsnike (npr. OIB, JMBG, JMBAG, broj putovnice i sliฤno)
* procedura za anonimizaciju povijesti posudbe
^^ Cirkulacija
*Pravila posudbe*
* pravila posudbe definiraju se prema vrstama graฤe i kategoriji korisnika te je potrebno odrediti:
** rokove posudbe,
** maksimalnu koliฤinu istovremeno posuฤenih primjeraka graฤe,
** je li moguฤe obnoviti rok posudbe i koliko puta je obnavljanje dozvoljeno,
** je li moguฤe rezervirati graฤu te
** plaฤa li se zakasnina i period odgode plaฤanja.
* moguฤnost definiranja razliฤitih pravila posudbe za pojedine zbirke (branches)
* moguฤnost postavljanja datuma do kojeg svi korisnici moraju vratiti knjige, bez obzira kad su ih posudili.
* moguฤnost da se graฤa posuฤuje na razliฤito vrijeme: na sat, preko noฤi, preko vikenda
* moguฤnost da se dani kada je knjiลพnica zatvorena ne raฤunaju se u rok posudbe niti se u te dane raฤuna zakasnina
* moguฤnost da se korisniku koji kasni s vraฤanjem graฤe ograniฤi posudba
* moguฤnost da se korisniku koji nije platio zakasninu ograniฤi posudba
* moguฤnost odreฤenja maksimalnog iznosa zakasnine
* knjiลพno osoblje moลพe "pregaziti" bilo koje pravilo
*Posudba*
* brz i toฤan unos identifikacijskog broja korisnika jedinice (uฤitavanjem linijskog koda, podataka s identifikacijskih kartica i preko tipkovnice) s potvrdom podataka o korisniku i o jedinici
* automatsko blokiranje kod prekoraฤenja ovlasti zadanih u pravilima posudbe
* ispis jedinica kojima je istekao rok posudbe
* obavijest o neplaฤenim zakasninama
* automatsko blokiranje ako je naslov rezerviran na drugog korisnika i moguฤnost otkazivanja rezervacije
* prikaz poruka za korisnike od strane osoblja i interne napomene
* jednostavan pristup datoteci korisnika u svrhu provjere podataka
* obavijest ako je primjerak veฤ posuฤen (tj. nije prethodno razduลพen) i moguฤnost da se akcije razduลพivanja i zaduลพivanja u takvim sluฤajevima obave u jednom koraku
*Obnavljanje zaduลพenja*
* moguฤnost skupnog obnavljanja zaduลพenja za svu graฤu koje je neki korisnik posudio
* moguฤnost da korisnici samostalno obnove zaduลพenje
* novi rok se odreฤuje prema datumu kad je rok istekao
* novi rok se odreฤuje prema datumu kad je rok produลพen
* ako je naslov rezerviran, nije moguฤe obnoviti zaduลพenje
*Rezervacije*
* postavljanje rezervacija na nivou naslova (ili na sve primjerke ili samo na odreฤene primjerke)
* redoslijed ฤekanja s moguฤnoลกฤu davanja prioriteta pojedinim korisnicima
* _automatsko slanje poziva za vraฤanje knjiga koje su rezervirane_
* automatsko slanje obavijesti korisniku kad je rezervirana graฤa spremna za preuzimanje
* podeลกavanje vremenskog perioda u kojem korisnik mora podiฤi rezerviranu knjigu
* _poniลกtenje rezervacije ako korisnik nije doลกao po rezerviranu jedinicu_
* poniลกtenje rezervacije nakon odreฤenog vremena ako se zahtjevu nije udovoljilo
* moguฤnost podeลกavanja maksimalnog broja rezervacija po korisniku
* korisnik ne moลพe rezervirati knjigu ako ima zakasninu veฤu od nekog iznosa
* moguฤnost da korisnici rezerviraju samo one knjige koje su trenutno u posudbi ili sve knjige (opcija)
* oลกteฤenje knjige moguฤe/nije moguฤe rezervirati (opcija)
* moguฤnost da se datum rezervacije postavi u buduฤnost, a ne samo na dan kad je rezervacija uฤinjena
* moguฤnost da korisnik samostalno rezervira naslov preko OPAC-a
*Zakasnine*
* iznos zakasnine odreฤuje se prema danu, a razliฤito za razliฤite vrste graฤe i kategorije korisnika
* korisnik ne moลพe posuditi knjigu ako ima viลกe od odreฤenog iznosa zakasnine
* korisnik ne moลพe produลพiti rok vraฤanja knjige ako ima viลกe od odreฤenog iznosa zakasnine
* moguฤnost tiskanja potvrde o plaฤenoj zakasnini
* moguฤnost "rastuฤe zakasnine" kao kaznene mjere
*Vraฤanje*
* vraฤanje moguฤe bez identifikacije korisnika
* ako korisnik ima zakasninu, moguฤnost naplate direktno sa suฤelja za vraฤanje
*Izvjeลกtaji*
* prireฤeni osnovni izvjeลกtaji o cirkulaciji (zakasnine, rezervacije i prekoraฤenje roka vraฤanja itd.), nabavi, katalogizaciji
* moguฤnost da knjiลพnica sama odredi i neku drugu vrstu izvjeลกtaja potrebnih za poslovanje
^^ Pretraลพivanje (katalozi)
* posebno suฤelje za osoblje knjiลพnice
* posebno javno suฤelje za krajnje korisnike (OPAC)
* jednostavno i sloลพeno pretraลพivanje
* moguฤnost dodavanja proizvoljne koliฤine polja u kriterije za pretraลพivanje
* sortiranje rezultata prema prozivoljnom broju kriterija
* formati prikaza podataka ISBD i MARC
* preuzimanje rezultata pretraลพivanja (MARC i dr.)
* slanje rezultata pretraลพivanja e-poลกtom
* viลกejeziฤno suฤelje
* moguฤnost da se u OPAC-u sakriju neki primjerci, koji ostaju vidljivi osoblju knjiลพnice (npr. izgubljeni ili otpisani primjerci se ne vide u OPAC-u, a vide u suฤelju za osoblje)
* moguฤnost da se u OPAC-u prikaลพe napomena o statusu primjerka razliฤita od one koja se vidi u intranetu (npr. u OPAC-u se vidi samo da je knjiga oลกteฤena, a u intranetu se vidi da li je poslana na uvez)
* moguฤnost izrade javnih i privatnih popisa naslova koji se ฤuvaju u katalogu
* moguฤnost da se u rezultatima pretraลพivanja prikaลพu podaci iz drugih izvora (npr. Amazon prikazi knjiga, Google books covers)
* pristup suฤelju za ureฤivanja zapisa direktno iz rezultata pretraลพivanja u suฤelju za knjiลพniฤare
* OPAC: poveznice na pretraลพivanje drugih izvora s ugraฤenim upitima (veza na naslov u drugom izvoru, npr. katalogu neke druge knjiลพnice)
* OPAC: podrลกka za tagove
^^ Izvjeลกtaji
* moguฤost izrade izvjeลกtaja uz pomoฤ SQL upita
* moguฤnost dohvaฤanja svih podataka u bazi u svrhu izrade izvjeลกtaja
^^ Moguฤnosti za registrirane korisnike
* direktna prijava uz pomoฤ AAI@EduHr i/ili ฤlanskog broja
* uvid u trenutna zaduลพenja i rezervacije na osobnoj stranici unutar sustava
* uvid u povijest ฤitanja
* moguฤnost samostalne rezervacije knjiga
* spremanje/brisanje povijesti pretraลพivanja
* odabir vrste i frekvencije obavijesti koje korisnik prima putem elektroniฤke poลกte (zaduลพenje, razduลพenje, istek roka posudbe, ispunjena rezervacija)
* moguฤnost mijenjanja osobnih podataka (osoblje treba odobriti promjene)
* moguฤnost izrade popisa zanimljivih naslova koji se ฤuvaju na osobnoj stranici
* moguฤnost dodavanja tagova i komentara uz naslove
^^ Slanje obavijesti korisnicima
e-mailom i/ili SMS-om:
* posudba
* vraฤanje
* obavijest o prekoraฤenju roka posudbe
* upozorenje o skorom isteku roka posudbe
* rezervacija je spremna za preuzimanje
definiranje obavijesti:
* samostalno definiranje sadrลพaja poruke
* moguฤnost definiranja razliฤitih obavijesti za razliฤite kategorije korisnika
^^ Podeลกavanje sustava i pomoฤni alati
* jednostavno administracijsko suฤelje dostupno preko web suฤelja
* moguฤnost pretraลพivanja opcija u administracijskom suฤelju prema nazivu opcije i opisu
* moguฤnost exporta cijele bibliografske baze podataka u razliฤite formate (minimalno MARC)
* moguฤost exporta svih ostalih podataka - podaci o korisnicima, (anonimizirana) povijest posudbe, podaci o nabavi i pretplati na ฤasopise
^ Opฤe karakteristike
* web suฤelje za sve funkcije (nema potrebe instalirati klijente na radne stanice za knjiลพniฤare)
* potpuna utf-8 podrลกka u svim modulima
* moguฤnost izrade prilagoฤenog OPAC suฤelja radi usklaฤivanja s vizualnim dizajnom web stranica knjiลพnice
* moguฤnost automatiziranja administratorskih zadataka izradom skripti
* zapisivanje logova za sve vaลพne akcije
* moguฤnost automatskog mijenjanja podataka o primjercima prema odreฤenim kriterijima
* _moguฤnost automatskog mijenjanja bibliografskih zapisa prema odreฤenim kriterijima_
* raspoloลพivost nadogradnje sustava (nova verzija softvera) barem 2 puta godiลกnje
^ Integracija s drugim sustavima
* integracija s RFID opremom (Knjiลพnica FFZG)
* integracija sa sustavom studomata - moguฤnost ograniฤavanja upisa studentima koji nisu podmirli obaveze u knjiลพnici (nevraฤene knjiga i zakasnine) (Knjiลพnica FER)
* usklaฤivanje vizulanog dizajna s webom organizacije (koriลกtenjem CSS-a)
* single sign-on, LDAP
* isporuka popisa u formatu prikladnom za preuzimanje u druge sustave (ISO-2709, JSON, RSS, OAI, ..)
----
^ Tehniฤka specifikacija
* Moguฤnost instalacije na postojeฤu infrastrukturu virtualnih servera (VMware)
* Specifikacija virtualne maลกine: dual-core, min. 2GB RAM, 20 GB disk)
* Pristup do virtualne maลกine koriลกtenjem Cisco VPN-a
* Operativni sustav GNU Debian Linux, programski jezik Perl, baza podataka MySQL
* Moguฤnost stvanja dnevnih backup-a svih podataka i podeลกavanja na lokalnom disku dostupnom za backup.
* Moguฤnost integracije s imeniฤkim direktorijima organizacije (Active Directory)
* koriลกtenjem LDAP-a za logiranje korisnika preko logina i passworda
* single sign-on autorizacije u browseru (Internet Explorer)
* Pristup web suฤelju za krajnje korisnike i knjiลพniฤare ลกtiฤeno SSL certifikatima koriลกtenjem HTTPS-a
* Import postojeฤih organizacijskih jedinica iz drugih sustava (npr. SAP)
* Moguฤnost generiranja meta podataka iz drugih izvora koriลกtenjem HTTP API-ja
> "Promjene"<http://saturn.ffzg.hr/koha-cug/index.cgi?action=recent_changes> | "Sve stranice"<http://saturn.ffzg.hr/koha-cug/index.cgi?action=changes&changes=all> | "Svi tagovi "<http://saturn.ffzg.hr/koha-cug/index.cgi?action=category_list>
_Croatian Koha user group_ je grupa zainteresiranih ustanova i pojedinaca za koriลกtenje, prilagodbu i razvoj knjiลพniฤnog sustava "Koha"<http://www.koha.org/>. Osnovana je kao "ekspertna skupina"[Osnivanje ekspertne skupine pri HrOpen] unutar udruge "HrOpen"<http://www.open.hr/>.
^ Kontakt
*Sastanci*
svaka prva srijeda u mjesecu u 13 sati u raฤunalnoj uฤionici na 1. katu Knjiลพnice Filozofskog fakulta (moลพe se dogovoriti i druga lokacija).
*Mailing lista*
Grupa ima "mailing listu za komunikaciju"<http://mjesec.ffzg.hr/cgi-bin/mailman/listinfo/koha-cug>. Ako nam ลพelite postaviti pitanje, piลกite na adresu mailing liste koha-cug@mjesec.ffzg.hr.
{section}
^ ล to je Koha?
Koha je potpuno slobodan i otvoren softver za knjiลพniฤno poslovanje kojeg koriste knjiลพnice ลกirom svijeta. Sva funkcionalnost Koha softvera dostupna je preko standardnog web preglednika ลกto znaฤi da za njeno koriลกtenje nije potrebno instalirati dodatne programe. Koha podrลพava MARC standard za bibliografske zapise, a za razmjenu zapisa koristi Z39.50 i SRU protokole. Funkcionalnost Kohe obuhvaฤa kompletno knjiลพniฤno poslovanje, ukljuฤujuฤi: javni katalog koji podrลพava razliฤite Web 2.0 sadrลพaje kao ลกto je tagiranje, komentiranje, socijalne mreลพe i RSS izvore; pristup osobnim stranicama u javnom katalogu; moguฤnost izrade popisa literature; podesivo pretraลพivanje; posudbu i adminstraciju korisnika; modul za nabavu graฤe; podrลกku za viลกe knjiลพnica u sustavu; upravljanje periodiฤnom graฤom; modul za izvjeลกtaje i druge alate za podrลกku poslovanju knjiลพnice. Buduฤi da se radi o slobodnom softveru, razvojem Kohe upravlja zajednica korisnika u kojoj usko suraฤuju knjiลพniฤari i programeri. Nove stabilne verzije Kohe, koje sadrลพe popravke i nove funkcionalnosti, javno su dostupne svakih ลกest mjeseci. Slobodno dostupan kรดd uvelike olakลกava i integraciju Kohe s drugim sustavima koje knjiลพnica koristi u svojoj okolini kao i razvoj specifiฤne funkcionalnost za potrebe pojedine knjiลพnice, pod uvjetom da se svaka promjena uskladi s glavnom stabilnom verzijom i podijeli sa zajednicom.
* [Funkcionalnost Koha softvera]
^ Dokumentacija
Na ovom wikiju objavljujemo dokumentaciju o koriลกtenju Kohe i svega ลกto uz Kohu moลพe biti vezano. Postoje i [Koha lokalne dokumentacije] u pojedinim ustanovama.
* [Koha instalacija]
* [git]
* [MARC Bibliographic framework]
* [Pisanje Koha plugina]
* [Barcode]
* [Z39.50]
* [Prilagodba suฤelja]
* [Zebra reindeksiranje]
* [Prikaz podataka u intranetu - keywords to MARC mapping]
* [Koha lokalne dokumentacije]
* "Pretraลพivanje Koha mailing lista"<http://www.google.com/cse/home?cx=012030839526267669208:c5r4yzaftug>
<table align="left" border="0" cellpadding="1" cellspacing="1" style="width:100%">
<tbody>
<tr>
<td style="text-align:center"><img alt="" src="data:image/jpeg;base64,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" style="height:75px; width:75px" /></td>
</tr>
<tr>
<td style="text-align:center">
<p> </p>
<p><span style="font-size:11px">Radnim danom od 12-14 h moลพete pitati bilo ลกto :)</span></p>
<p> </p>
</td>
</tr>
<tr>
<td style="text-align:center"><a href="mailto: dobrodosli@fer.hr"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABEZJREFUeNrEVklLY00UvdGoiVPbgsStqOCM4loEl+IvcOXGhQvBCY3DSlFw0XwrMWhAEHEgvXZAEUEEwQGcwI3TygFnRY1R89W5zX1Uhm5Ck6QLypdnvXfPqXvOva9MXq+X/uUw409xcXFFYWHheEZGxrePj4+vSALGqPHw8ODe29tr3NnZ+ckEFLirtrbW9vz8HJVdp6amktlsdqqfvwikp6dbFSt6enqiSEtiMpno8/OTrFar15Dg/f3do1LPC9EYwPJ4PJ8Gga+vLwaPFgHgANOHgGRAeYRlCLcUSL3EBFZQArje39+T2+1mIuEYAop4MF9sbGwgAUm/0gV+oIaGBpiEWcfHx//1bgH69vbGv19eXsjlcnH8hIQEQ26zsAQrWczKyuLFg4MD2t7eppSUFA4aKjh2h51eXV1RTU0NZWZmGtpjk8CSzJj1BckEWKMsc3JyaH5+ntbW1ig5OTlkEgA/Ozvj95H2i4sLlLrhM8FiaXQPIAMynE4nqU5Fra2taFTsi7i4OJYEWfKf+D/WLRYLnZ+fU1FREfX19dHMzAyNjY2xHMCQKR6IkQwAXK8EIbG1tUWNjY2UnZ3NBtWD+E+Mk5MTys3Npe7ubpqenqbl5WV0PUMa2WjQDAgB3OMFzNHRUSbR1NTEJG5vbw0d9QlNj4+PKS8vj3p6emhycpKWlpYMM4vPfpsBBMXEgjwsJBwOB21sbLAc0BUksAt5B88CvKCggMHHx8dpYWGBwWVDmPo7ARkIRgD3YryhoSFaX1+nlpYWIxMSUMA7OztZNgGXGEJC7gUnIANSBXpnFBK4HxgY4AqBvvn5+VxmR0dHVF5eTr29vaz/7Owsm1F2Len2j+nTB4SEPCC/MWFI3F9eXrIPcD08PKSuri72BtaREehdWVlJ9fX17Hq8AyLiDz0urj59QPRBqSF1uiQC3tHRQaWlpXy9u7tjsLKyMu5wExMTtL+/T7u7uywRxsjICJck4koGJCb6hA8B3PibA0wRHA0Juy0pKaH29nYuRdT9ysoKlxgGdpqWlkaLi4sM1NbWxtfh4WGfHf+RgK4/JsDRUNBM1JGNgwI8MTGRX9S/EdI3sAYDIg4yhTiDg4PsG/nkIyMgHDQDei+AHHA13N3c3GyAS8Px/77LgIRzc3P8HMyK9yCNfOikEgI8IAtimv7+fta+rq6OHh8fOfDr62tI3wLEm5qa4lJFJioqKjgLwRqRjwSyO+zUZrPR6ekpVVdXU1JSktGUQj0DIB4I39zccMnigyTyBlSBmA7/BNPNzU02CrSqqqoKGThYJq6vr2l1dZVw4haT6zL6eABAYGy328N+JMOGUJbACPCAnAFFF5SZfpwKx3lQx5FzZ8CJKFKnYgHT4/t7ICaax3LB1D9G8dAoWgNYCtNiEFBNx44mgQUpt0hNOZYrzP8MCdSCQxFIU9fvqMhIJ0Dp/6qwfuDmfwEGABBbVKNP05pBAAAAAElFTkSuQmCC" /></a> <a href="<http://www.facebook.com/pages/Sredi>ลกnja-knjiลพnica-Fakulteta-elektrotehnike-i-raฤunarstva/171512036240295" target="_blank"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABS1JREFUeNrEV02IHEUU/qq6+md+dvaX3QSDrIhkJQcxeogHQRAh6MGLHoRclCiCkoN4EQ+CIBLUg2jwJAQP5qCCAdGDKCoSlYDJQcUssgq7rMnszP7N7uzOdFeVr6p7en52ZnpyCPZsb09X19T73ve+914101rj/zyE+Tdz4s0TdxwZ+zKfc0uRkpFzi4xJY5A5ohFG4dLy9qnypVc+swDmjxS/P3ZnwbtRqQEMzi11WUeYP5wnG6VP6Y5ZADnf9a6vbWGrtg/GHANi+GGeq/ZN/LUdSm4n6Pbc1Dj9aQmlFFzhqjQEoYoaWivfuM54tibMDM0d7Nab2NysWHKZXZx+zzhcP4epqTG4nB8ArmWMPlQ6TAFozehU0Ex1OjLQuqYolSsVTDsreO2Zh3H3wl3W62Yk0WyG+PPvMj68uAjmeXB6AmpsaO1Ym20ARIk9pTL8DT0UY9jaquH24iq+uvAOvMLsgTn3bOzi3QtvYFJwMti9YGpLqTYARdwpJckz454aCiCSHDsbK3jr3LN9jZvj19+WUN/bx2QpQG+WGxvGlkoexAAIjWqhYsMV2GxGmJt0cPz4vV3jP16+hktXFrEwfxg/XF5EIedZXzS6HdLW2dheDwPKXnmGCMIwwnQ+Bzh+OlapbuHJF97DfiNEoeBjvJBHqeCRL+oAA0ojtdXDQNOmlhpGAAkniqI0fq2j3mjAczmmJybhe25CYkx1PxHbEPQyoEnBw6qyUe1OvY7V1XV40wRWRsSCQMuBanUdte0aAkrmUmkMxXy+f0prW4v6MNCiawCInd0QC4caeOmphxAEJC6qYUqGNu/nZibw9ssnsVffofwv4tufl/HT72UKg98/kxS6GYiFYajtz7+Zul2r4f6Tx/Dc6acTLYQ2HIz49l0Hz58+lc4v1z7H178soeALcN4PgIbuYkCrOA0HALDEUAnVhvZ0EQUpJTgB0KLbyo21KlVG46bsS6gBoHQnA8pmJw0OViB1Sly9VsUHH32BmYkcnnj0QQJAZVc4qG7UcP6Tb+C6LsaLAa7+8U+chn2ywNqTOq45LQDMiNB6OASA7+LKX1Vc/O48jt7G8Pgj90GIAK4nsL65jVfPfmwzIAg8TI0X4RP9WsoBjGoKXQcAMyBNl9LDi1COFH5oboy8pOZDzcjOJyYFaWB2ZsyKM/AcesbjNNT9AUjjcBcAM2BFyDO7MFPaCs/UAvuhqx0zXpmuaJrJgNh3NaROAKylA6WyW7Ep2TpWsf3Y78l4RKcYYQ0yzhx0MmDOKBHMcBYsrVolqUthczhdQxoir5kpZhntFCqx1wHA3Mm0DugMBsiYFjEAHbPGbMtVcTUV2QAkayOIAfB4IaVY9k7IhMmUWM2THhK1HiQ13skEYDOA94jQUBvvUoYzYLJFRyYDomRno5NCFiY7K5kJQOmeSmgT0e4HRtjU2g6nEmMmnZJrz05n2OZcs/YmVrQ7VIuBjC0xGTD7vGLeR0hacF2BfJCzLXg0ALGA0SnCOJ2iERRMHdjUHgK6/O8aXTntA1xcXytDcBaDyAyBtGVfdzOg09zO0kAuEFgp1/HAY2cQEmvGqCBKmHmjcYDsV72kD/RowLGVUNIKXGVogNkOaIxzxNt4ox2HmhIzIUAGA6bgOXaO09GOmQjIs+Ze2BofeLT6u/BZz9wRFGwXoLci+m1DSZEC2A9LL8I9+r7r7UCCj7QO61MjRn1FbbI89qPxsykAovRcE7MToZos0V3zpta7ucNI2NUQIWfO62bgPwEGAMkwMpYkCEKvAAAAAElFTkSuQmCC" /></a> <a href="<https://twitter.com/#!/KnjiznicaFER>" target="_blank"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABXtJREFUeNrEV89vG0UU/mb2l+2GxkmgSRqJFqoWeqjKGcEBoaoSfwEXbhw4FM78EwghLhx6AU4IxAWoQBUSXEAVEhxQETSoahWSOJQmcexmvd75wXsz682unUYlUstGa2ftmXnffO973zwLay3+z0swgAsfXn3x7MLsR+1Wc1pba/AQMQVSyP4gy37rbL759Wsvfxbyh8/Oz3568fzZ+e5QP4ItA+04hBB/XKYnD2C62WhuDhV20iF/PzlD+DfHjGPn8BTxTKUtGlHoFnEAhsrkRilM6sFCBBGNCpGmuwRCIA5CSGOKpcShAFijkCurSwCG/jStaWjh6pJBGKHX38Haj9/hqakYrfYMejPHIR9fpIm01CEEzDO0CVzMPQBEiTLaMVAuSbsdGou1b7/AWxdfwKlzz7mPO50NfNJJMYwSD+IQF8fimCUATYG0Me4u4wcBtjbW8fzTS2VwvhYW5nH63jp+7uVoBfJQALQRLmYJQFHlsTBGH3oCBFSe49jsrHs2Rd6lDLDQSqC2+lA0RhyGAWbcVlNgfAqMrTBgPU0yCXzubJFzaXGUysgQQ5o0IkYI9qaCeTE0X2h1nxT4mJUUEP1qLAUsTFpkpAqnD7oDGtMmUMPbN7C9myIIiAUWryhKlhiyQkJOPYYWiTXh78fEyukfxSoBqHENCP9sC6TGiRTI6f+ZJMKl8yeRDVIIKdndqGJCP47KSakcvXSAH3p3sZrMIJb1glWYAEAp0Bq6AlSIQhO2ygCNpXGGtrt04oQLvldfnquSCbpOdrfw3vU7yChMVPN/XRehA8C3tTUGmJWRLliEVSZTrQ9yW2JFksM20W6EWNklPQSiursxAFwFrAFRB6CJEqa0ykA1yL6RRyZGa2W0Zjcjh+X0iipbwsUsAVjnA0RLbS3jlOwYYCYKBjhGRLtLAjF5Jli3tputlcaVlS1spDmaIVWMNvWhVQZsocoaAOHzxOVirRcgs8DBb+3s4trfPTdRjNlsRusMKdadgcLGQIOr2BgzackF9nA0MTemWspOTFyvuti9W4RmhbTz5a17+HJlG1NRMJEKWbyEtEBE1WGJEmXrAEyFu4IBX3J1ACwUVQb3KaBpZKOG3hP6vhmIg2RQmI3d/0SsaQBFedUW4kDAaI2RE3KlTJEb5s47hN/xfzwV7QQDRRna2iDKO1ltN+sTOlUyMFACz0w3MKfuoaMbaCUxuWE4sfuAewli0LugmExBTYSFM9X2wTmPm1jZ2YDOMm80dOfUuBxtNvDGmTlc+eU61joZ+rlxlI7CWEkNTKMFPbdIABMCYSbSNKYBX4Z2DGlE9rqsE6xvdDC7uITBIHPod4dDPLm4gEt0NGdZigHZrkuR9Kcjl1yWpvhmtYvvB8KVoagBsGX3VTBgCwbGRGVybLdm8NWNVbw+T8FIeNa5IzlhNnRWLMME8XRzohpmnwjx6rFdXP/pNv6hckrkGADUfEA417NiUi6NOMLVfogTvy7jwrnT6Cm4c8MVhK6bV5ViTb3EkSgiK46w3uXTQFZ/C7iYJQCnbs652L+9CJImLq+m6NqbeOXMEppx7Kpg5Oe1Rll4L2DaN0k7f/WH1EL4nrPmQnbMCf2hsz8A12BQD/jxWopr2zfx0vE2TrWPoBUHrlwF5T50+ReuWnICtkNt/ue3tnB3QFZMhlVtdlA5VzwA4S33oP6Ky6oVSvyZWvy+fBcNsUk2ywc9K4e0ULDnBE13Snlnlps0xo5XGAMQFQZ4k/oBzYSbi5jExxkbOO8w9X7M8SidDTN1LrTd9yCQVR+Iba75EH9gNzt4ZAFI3+c3lHawGnsApHibUvC+O30eyUXMBfLdago+IBBtbveKlu1hXnRAi5Te3+GHfwUYAPKMbY4wibr+AAAAAElFTkSuQmCC" /></a> <a href="<http://www.youtube.com/user/KnjiznicaFER>" target="_blank"><img alt="" src="data:image/png;base64,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" /></a></td>
</tr>
<tr>
<td style="text-align:center"><img alt="" src="data:image/png;base64,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" /></td>
</tr>
<tr>
<td style="text-align:center">099/2110914</td>
</tr>
<tr>
<td style="text-align:center"> </td>
</tr>
<tr>
<td style="text-align:center"><embed height="350" src="<http://w.digsby.com/dw.swf?c=z60dqmdndczmc0sa>" type="application/x-shockwave-flash" width="170" wmode="transparent"></embed></td>
</tr>
</tbody>
</table>
<p> </p>
^ Podrลกka
* postoji li dokumentacija za administriranje i koriลกtenje programa?
* postoji li aktivna zajednica korisnika?
* ima li zajednica korisnika otvorenu mailing listu ili neki sliฤan medij komunikacije
* da li se i na koji naฤin unutar zajednice razmjenjuje softver razvijen kao dodatak ILS-u)
^ Prava koriลกtenja softvera
* prava na izmjenu - da li je dozvoljeno mijenjati softver radi prilagodbe vlastitim potrebama?
* mogu li se lokalno napravljene prilagodbe razmijenjivati s drugim korisnicima i pod kojim uvijetima?
* moลพemo li prodati uslugu implementacije cijelog sustava ili onog dijela koji je razvijen radi integracije nekoj drugoj ustanovi, unutar ili izvan sustava?
^ Konverzija i migracija
* obavezna migracija svih bibliografskih podatka i podatke o primjercima (lokacije, signature, statusi)
* migirirati podatke o broju posudbi za naslov/primjerak
* detaljni izvjeลกtaji o stanju podataka prije i nakon konverzije
* moguฤnost testiranja konvertiranih podataka prije migracije
*Stranica za prevoฤenje:*
* http://translate.koha-community.org/
{toc: }
^ Instalacija prijevoda
1)
presimiti tri datoteke s http://translate.koha-community.org/hr/38/edit.html (verzija 3.8) u `misc/translator/po/` direktorij
2)
napraviti update, odnosno uskladiti .po file s vlastitom verzijom Kohe
.pre
$ cd misc/translator
$ ./translate update hr-HR
.pre
3)
instalirati prijevode
.pre
$ cd misc/translator
$ ./translate install hr-HR
.pre
^ Podeลกavanje Kohe
system preferences - podesiti jezik na hr
BUG: language toolbar - Hrvatski umjesto hr-Hr
.pre
mysql> insert into language_descriptions (subtag,type,lang,description) values ("hr","language","hr","Hrvatski") ;
.pre
^ Prijevod dokumentacije
kako prevoditi dokumentaciju dostupnu preko intraneta? (_context help_)
^ MARC frameworks prijevodi
za prijevod MARC-a NSK ima konverzijsku tablicu. FFZG ima prevedene nazive polja u predloลกcima za katalogizaciju (Dorja)
^ Upute knjiลพniฤarima
pronaฤi veฤ napisane upute korisnicima i prevesti ih
----
Prevodioci:
verzija 3.0: Irena, Alen, Marijana
verzija 3.6: Marijana, Sanja
verzija 3.8: Matina, Jasna, Sanja, Marijana
.pre
git checkout -b bug_xxxx origin/master
git bz apply XXXX
git commit --amend -s
git bz attach -e XXXX HEAD
.pre
^^ Ako ne prolazi database update:
.pre
git am --abort
git am -3iu /tmp/Update-database-patch-xxxxx.patch
.pre
resolve conflict ili ako otkrijeลก greลกku koju znaลก popraviti, onda:
.pre
git add <file>
git am --resolved
.pre
ako zeznem merge:
.pre
git diff origin/master opac/opac-detail.pl
vi opac/opac-detail.pl
git add opac/opac-detail.pl
git commit --amend
.pre
edit kohaversion.pl
^^ Ako patch ima viลกe fajlova:
.pre
git bz apply 7743
git am --abort
git am -3iu /tmp/Update-opac-userpl-to-use-KohaDates-TT-plugin-hYYLn8.patch
vi opac/opac-user.pl
git add opac/opac-user.pl
git am --resolved
.pre
idem ispoฤetka:
.pre
git bz apply 7743
.pre
a na ono ลกto je proลกlo apply odgovaram s "n"
onda rebase, na zadnji prije patcha kojeg testiram
.pre
git rebase -i 35279926b3865b003c6bd01d5c5378addfa903a9
.pre
tu je sad neku search/replace, ne sjeฤam se ลกta treba zamijeniti - s/??/e/
onoliko puta koliko ima fajlova:
.pre
git commit --amend -s
git rebase --continue
git commit --amend -s
git rebase --continue
git commit --amend -s
git rebase --continue
git commit --amend -s
git rebase --continue
git commit --amend -s
git rebase --continue
git commit --amend -s
git rebase --continue
git commit --amend -s
git rebase --continue
git commit --amend -s
git rebase --continue
git bz attach 7743 HEAD^^^^^^^ -e
git bz attach 7743 HEAD^^^^^^
git bz attach 7743 HEAD^^^^^
git bz attach 7743 HEAD^^^^
git bz attach 7743 HEAD^^^
git bz attach 7743 HEAD^^
git bz attach 7743 HEAD^
git bz attach 7743 HEAD
.pre
Za potrebe preuzimanja zapisa sa web stranica koje ne pruลพaju Z39.50 pristup, napisao sam https://github.com/dpavlin/Biblio-Z3950 koji omoguฤava pretraลพivanje preko web suฤelja i isporuku MARC21 zapisa za Kohu.
Trenutno su na raspolaganju slijedeฤe baze:
* Aleph NSK http://katalog.nsk.hr
** NSK01 - NSK katalog
** NSK10 - NSK normativna baza
** ZAG01 - Zagrebaฤko sveuฤiliลกte
* Google Books http://books.google.com/
** GOOGLEBOOKS
* HathiTrust catalogue http://www.hathitrust.org/
** HATHITRUST
* Digital Public Library of America http://dp.la/wiki/
** DPLA
server se nalazi na webpac2.rot13.org:9999 a za imena baza se koriste VELIKA SLOVA
> Sljedeฤi sastanak je biti ฤe objavljen na koha-cug mailing listi.
----
Za kronoloลกko praฤenje deลกavanja stranicu treba nazvati prema datumu i staviti joj tag {tag: dnevnik}.
{tag_list: dnevnik}
{file: test-yaz-zebra.sh}
^ Server
sluลพi za razmjenu zapisa
^^^ Konfiguracija
Dodati novi public server prema uputama na http://wiki.koha-community.org/wiki/Troubleshooting_Koha_as_a_Z39.50_server
^^^ Dokumentacija
* http://wiki.koha-community.org/wiki/Search_Info
Najkorisnije:
* http://www.indexdata.com/zebra/doc/zebrasrv.html (pri dnu stranice)
Ostalo:
* http://koha.org/documentation/manual/3.0/administration/additional-parameters/z39.50-servers
* http://lists.indexdata.dk/pipermail/zebralist/2009-March/002142.html
* http://bugs.rot13.org/rt/Ticket/Display.html?id=377
^ FFZG
^^ yaz-client
.pre
dpavlin@koha-dev:~$ yaz-client
Z> open localhost:9999/biblios
Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID : 81
Name : Zebra Information Server/GFS/YAZ
Version: 3.0.52 e687cb7eb87c841f0d1a374174d51d30371f2d97
Options: search present delSet triggerResourceCtrl scan sort extendedServices namedResultSets
Elapsed: 1.605266
Z> find human
Z> show 1
Z> quit
See you later, alligator.
.pre
Use Koha's CCL queries:
.pre
dpavlin@koha-dev:~$ yaz-client -c /etc/koha/zebradb/ccl.properties localhost:9999/biblios
Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID : 81
Name : Zebra Information Server/GFS/YAZ
Version: 4.1.7 c43e561fdfe12989a6040163dae0e28ba0a02453
Options: search present delSet triggerResourceCtrl scan sort extendedServices namedResultSets
Elapsed: 0.001445
Z> querytype ccl2rpn
Z> find (kw,wrdl,rtrn=human ) not Suppress=1
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 1935, setno 1
SearchResult-1: term= human cnt=1935, term= 1 cnt=21
records returned: 0
Elapsed: 0.025643
Z>
.pre
^ Debug Zebra problems
^^ enable all logging
.pre
# add all to http://www.loc.gov/z3950/agency/defns/bib1diag.html
ZEBRAOPTIONS="-v none,fatal,warn,all"
dpavlin@koha-dev:~$ sudo /etc/init.d/koha-zebra-ctl.sh restart
Restarting the Zebra Server
dpavlin@koha-dev:~$ sudo tail -f /var/log/koha/koha-zebradaemon-output.log | grep ERROR
18:45:58-29/03 zebrasrv(1) 605aecf5 [request] Init ERROR 1011 ID:81 Name:ZOOM-C/YAZ Version:4.1.7 c43e561fdfe12989a6040163dae0e28ba0a02453
.pre
Lookup error codes at http://www.loc.gov/z3950/agency/defns/bib1diag.html
* http://wiki.koha-community.org/wiki/Understanding_Zebra_indexing
* http://www.len.ro/work/koha-search-2/
* http://www.indexdata.com/zebra/doc/tutorial-oai-sru-zebra-indexes.html
* http://saturn.ffzg.hr/koha/index.cgi?zebra_indexing
Daklem.. stabilna verzija Kohe je 3.6.2.
Naลกa Koha na IRB-u je 3.4.4 pa idem upgrade-ati.
Buduฤi da smo na git-u, prebacit cu se na 3.6.x branch
1. U source direktoriju smo
Povuฤemo update
.pre
# git pull
.pre
Provjerimo branch-eve
.pre
# git branch -r
.pre
Pratimo 3.6.x
.pre
# git branch --track 3.6.x upstream/3.6.x
.pre
Prebacimo se na njega
.pre
# git checkout 3.6.x
.pre
Provjerimo jel to to
.pre
# git branch
# git status
.pre
2. standardni Koha upgrade (bez make test)
.pre
# ./koha_perl_deps.pl -u -m
# perl Makefile.PL --prev-install-log /usr/share/koha/misc/koha-install-log
# make
# sudo make install
.pre
3. Update database
Ulogiramo se u admin suฤelje i pokrenemo update
Sve ok.. osim nekoliko greลกkica koje se mogu ignorirati:
.pre
Update errors :
* [Mon Dec 26 14:46:19 2011] updatedatabase.pl: DBD::mysql::db do failed: Duplicate entry 'BasketConfirmations' for key 'PRIMARY' at /usr/share/koha/intranet/cgi-bin/installer/data/mysql/updatedatabase.pl line 4374.
* [Mon Dec 26 14:46:21 2011] updatedatabase.pl: DBD::mysql::db do failed: Can't DROP 'issuesitemidx'; check that column/key exists at /usr/share/koha/intranet/cgi-bin/installer/data/mysql/updatedatabase.pl line 4425.
* [Mon Dec 26 14:46:21 2011] updatedatabase.pl: DBD::mysql::db do failed: Multiple primary key defined at /usr/share/koha/intranet/cgi-bin/installer/data/mysql/updatedatabase.pl line 4426.
* [Mon Dec 26 14:46:22 2011] updatedatabase.pl: DBD::mysql::db do failed: Duplicate key name 'priorityfoundidx' at /usr/share/koha/intranet/cgi-bin/installer/data/mysql/updatedatabase.pl line 4436.
.pre
* Razne teme vezane uz prilagodbu web suฤelja
{toc: }
^^ Prilagodba OPAC-a
* "KohaCon 2009: Customizing Your OPAC"<http://www.myacpl.org/koha/?p=160>
* "Adding a custom header to Koha 3โs OPAC"<http://www.myacpl.org/koha/?p=30>
^^ Prevoฤenje i instalacija .po datoteka
Instalacija .po datoteke prikazana je na:
"Prijevodi - FFZG"<http://saturn.ffzg.hr/koha/index.cgi?prijevodi>
Prilagoฤavanje prikaza na web suฤelju poฤinje s ureฤivanjem engleske verzije predloลกka. Npr. ureฤivanje prikaza detalja odreฤenog zapisa:
.pre
# vim $KOHA_SRC/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
.pre
Tada aลพurirate .po datoteku:
.pre
# cd $KOHA_SRC/misc-translator
# ./tmpl_process3.pl update -r -i ../../koha-tmpl/opac-tmpl/prog/en/ -s po/hr-HR-i-opac-t-prog-v--3000000.po
.pre
.. i instalirate samo hr template:
.pre
# ./tmpl_process3.pl install -r -i /home/koha/src/koha-git-dev/koha-tmpl/opac-tmpl/prog/en/ -o /usr/share/koha/opac/htdocs/opac-tmpl/prog/hr-HR/ -s po/hr-HR-i-opac-t-prog-v--3000000.po
.pre
Engleski dio iz $KOHA_SRC/koha-tmpl/opac-tmpl/prog/en/* se moลพe samo iskopirati.
_(alen): Ispravite me ako neลกto krivo radim ;)_
* Koha 3.4
* Koha za Permakulturni institut http://www.zmag.hr/
* dolaze kolege s Instituta za druลกtvena istraลพivanja
* http://map.knjiznica.ffzg.hr/ opis na http://blog.rot13.org/2011/04/google-map-data-layer-using-custom-tiles.html
{file: koha-mungle-borrowers.sh}
Ova stranica ฤe pokuลกati dokumentirati instalaciju kohe na najjednostavniji moguฤi naฤin. Primjeri za koriลกtenje su:
* demo instanca
* development instanca
* recovery iz backup-a ili testiranje sa zadnjom verzijom kohe iz git-a (potreban je samo dump baze)
Cijela virtualna maลกina dostupna je kao ~325 Mb download: http://mjesec.ffzg.hr/~dpavlin/koha/koha-lxc-20091207.tar.bz2
*Oprez*: ova virtualna maลกina *nema root password* a svi ostali passwordi su dokumentirani na ovoj stranici, tako da je mudro promjeniti ih ako je ลพelite koristiti!!
{toc}
^ Virtualna maลกina
Instalacija u "LXC"<http://sysadmin-cookbook.rot13.org/#lxc> (Linux containers) ali bilo koja instalacija bi trebala biti jednako dobra.
.pre
root@t61p:~# lxc-debian create
What is the name for the container ? [debian] koha-lxc
What hostname do you wish for this container ? [koha-lxc]
What IP address do you wish for this container ? [172.20.0.21] 192.168.3.3
What is the gateway IP address ? [172.20.0.1] 192.168.3.1
What is the MTU size ? [1500]
Specify the location of the rootfs [./rootfs.koha-lxc] /virtual/koha-lxc
Specify the location for an extra fstab file [(none)]
Choose your architecture
1) amd64
2) i386
#? 2
Architecture i386 selected
Checking cache download ...Found.
Copying rootfs ...
...
.pre
Za locale bi bilo zgodno instalirati:
* en_US.UTF-8 UTF-8
* hr_HR.UTF-8 UTF-8
Default locale for the system environment: None
.pre
root@t61p:~# lxc-start --name koha-lxc
.pre
Naลกa virtualna maลกina se zove `koha-lxc` i da bi Koha testovi proลกli mora biti moguฤe resolvati to DNS ime. Provjerite da `/etc/hosts` ima zapis:
.pre
koha-lxc:/srv/koha# grep koha-lxc /etc/hosts
192.168.3.3 koha-lxc
.pre
^^ Dodatni paketi
.pre
koha-lxc:~# apt-get install vim less openssh-server git-core dselect
.pre
^ Zebra
.pre
koha-lxc:/srv/koha# cat > /etc/apt/sources.list.d/indexdata.list
deb http://ftp.indexdata.dk/debian lenny main
deb-src http://ftp.indexdata.dk/debian lenny main
.pre
^ GIT
.pre
koha-lxc:~# cd /srv/
koha-lxc:/srv# git clone git://git.koha.org/pub/scm/koha.git
Initialized empty Git repository in /srv/koha/.git/
...
.pre
Ostatak instalacije manje-viลกe slijedi upute od Kohe: "INSTALL.debian-lenny"<http://koha-dev.rot13.org:8081/cgi-bin/gitweb.cgi?p=koha-ffzg.git;a=blob;f=INSTALL.debian-lenny;hb=refs/heads/koha-lxc>
^^ Lokalni branch
Napraviti lokalni branch za ovu intalaciju:
.pre
koha-lxc:/srv/koha# git checkout -b koha-lxc origin
Branch koha-lxc set up to track remote branch refs/remotes/origin/master.
Switched to a new branch "koha-lxc"
.pre
^^ Push lokalnih promjena na drugi git server
*Opcionalno* dodajte svoj public git repozitorij u koji ฤe se spremati promjene:
.pre
koha-lxc:/srv/koha# git remote add koha-dev dpavlin@koha-dev.rot13.org:/srv/koha/
.pre
Prvi push mora imati `--all` parametar da prebaci i novo ime branch-a a ne samo promjene:
.pre
koha-lxc:/srv/koha# git push koha-dev --all
dpavlin@koha-dev.rot13.org's password:
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 339 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To dpavlin@koha-dev.rot13.org:/srv/koha/
* [new branch] koha-lxc -> koha-lxc
.pre
^ Debian paketi
.pre
dpkg --set-selections < install_misc/debian-lenny.packages
dselect
# Install, Quit
.pre
^ MySQL
U jednom trenutku instalacija ฤe pitati:
> New password for the MySQL "root" user:
npr. *mysqlroot*
^^ Kreirati bazu
.pre
koha-lxc:~# mysqladmin -uroot -pmysqlroot create koha
.pre
^^ Kreirati korisnika
.pre
koha-lxc:~# mysql -uroot -pmysqlroot
mysql> grant all on koha.* to 'kohaadmin'@'localhost' identified by 'katikoan' ;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
.pre
Provjerite da se moลพete povezati sa kohaadmin korisnikom:
.pre
koha-lxc:/srv/koha# mysql -h localhost -ukohaadmin -pkatikoan koha
.pre
^ korisnik i grupa
.pre
koha-lxc:/srv/koha# addgroup koha
Adding group `koha' (GID 1000) ...
Done.
koha-lxc:/srv/koha# adduser --no-create-home --disabled-login --ingroup koha --gecos Koha koha
Adding user `koha' ...
Adding new user `koha' (1000) with group `koha' ...
Not creating home directory `/home/koha'.
.pre
^ perl
^^ Debian paketi
.pre
koha-lxc:~# apt-get install libgd-gd2-perl libgd-barcode-perl libnumber-format-perl libcache-memcached-perl libparams-util-perl libmodule-install-perl
.pre
^^ CPAN
.pre
koha-lxc:~# cpan Algorithm::CheckDigits HTTP::OAI IPC::Cmd IPC::Cmd Memoize::Memcached PDF::API2::Simple PDF::Reuse::Barcode PDF::Table SMS::Send Storable Test::More Authen::CAS::Client
.pre
^^ Authen::CAS::Client
Trenutna development koha ima bug zbog kojeg je CAS autorizacija po defaultu ukljuฤena, pa zahtijeva joลก nekoliko dodatnih modula
.pre
koha-lxc:~# apt-get install libtest-mockobject-perl
koha-lxc:~# cpan Authen::CAS::Client
.pre
^^ SAX parser
.pre
koha-lxc:/srv/koha# apt-get remove libxml-sax-expat-perl
koha-lxc:/srv/koha# misc/sax_parser_print.pl
Koha wants something like:
XML::LibXML::SAX::Parser=HASH(0x81fe220)
You have:
XML::LibXML::SAX::Parser=HASH(0x9858cc0)
Looks good.
.pre
^ Koha install
.pre
koha-lxc:/srv/koha# perl Makefile.PL
...
koha-lxc:/srv/koha# make test
...
koha-lxc:/srv/koha# make install
/usr/bin/perl "-Iblib/arch" "-Iblib/lib" fix-perl-path.PL blib
Koha's files have now been installed.
In order to use Koha's command-line batch jobs,
you should set the following environment variables:
export KOHA_CONF=/etc/koha/koha-conf.xml
export PERL5LIB=/usr/share/koha/lib
.pre
^ Apache
.pre
ln -s /etc/koha/koha-httpd.conf /etc/apache2/sites-available/koha
.pre
Enable port 8080 for Koha intranet
.pre
koha-lxc:/srv/koha# echo 'Listen 8080' > /etc/apache2/conf.d/port-8080.conf
.pre
And finish Apache configuration:
.pre
koha-lxc:/srv/koha# a2enmod rewrite
koha-lxc:/srv/koha# a2ensite koha
koha-lxc:/srv/koha# /etc/init.d/apache2 restart
.pre
^ Zebra
.pre
koha-lxc:/srv/koha# ln -s /usr/share/koha/bin/koha-zebra-ctl.sh /etc/init.d/koha-zebra-daemon
koha-lxc:/srv/koha# update-rc.d koha-zebra-daemon defaults
koha-lxc:/srv/koha# /etc/init.d/koha-zebra-daemon start
.pre
^ Finish Koha instalation
http://192.168.3.3:8080/
* login: kohaadmin
* password: katikoan
from `/etc/koha/koha.conf.xml`
.pre
koha-lxc:/srv/koha# egrep '(user|pass)' /etc/koha/koha-conf.xml | tail -2
<user>kohaadmin</user>
<pass>katikoan</pass>
.pre
---
*Prebacivanje postojece instalacije na cisti Squeeze i upgrade na 3.2.x*
Konacno sam uhvatio vremena testirati upgrade 3.1 na 3.2.x iz Git-a (na IRB-u)
1. prebacio sam cijelu bazu i aplikaciju na virtualni server na kojem je Debian Squeeze
2. Instalirao sam sve potrebno i upogonio tu "staru" verziju KOHA-e na novom serveru
- Squeeze sad ima gotovo sve Perl module u dostupne u paketima
- putem CPAN-a sam instalirao samo NET::Z3950::ZOOM jer Debian paket ima neke konflikte u dependency-ima
3. gotovo sve je proradilo iz druge - bilo je naravno nekih tipfelera u apache konfiguraciji :)
4. tada sam povukao promjene iz gita, napravio rebase i mergao to u svoj branch
5. nakon toga sam napravio postupak upgrade-a kako je opisano u INSTALL.debian
6. vecina stvari je proradila ok, potrebno je u administraciji pokrenuti upgrade baze
7. LDAP nije proradio.. imam neki cudan problem i morao sam mijenjati lib/C4/Auth_with_ldap.pl
120c121
< my $res = $db->bind( $principal_name, password => $password );
---
> my $res = $db->bind( "uid=$principal_name,dc=irb,dc=hr", password => $password );
- i u koha-conf.xml sam kod ldap konfigracije morao staviti:
<update>0</update>
Sad to radi, buduci da nije danas bilo promjena u bazi, zaswitchat cu samo IP adrese servera, promijeniti hostname i valjda ce biti ok :)
_contributed by {user: alen.vodopijevec@gmail.com} on {date: 2011-01-06 14:22:30 GMT}_
* KohaCon 2010 videos: http://anitsirk.blip.tv/posts?view=archive
Teme za danas:
* Z39.50 screen scraping http://github.com/dpavlin/Biblio-Z3950
* popis dostupnih Z39.50 servera: http://irspy.indexdata.com/
* KohaCon 10 http://www.kohacon10.org.nz/
* <angular/> http://angularjs.org
Git sustav za praฤenje promjena koji koristi Koha.
Mnogo bolje i potpunije upute: http://wiki.koha-community.org/wiki/Version_Control_Using_Git
*DON'T PANIC!*
{toc: }
^ podaci o korisniku
Da bi vaลกi commiti imali lijepo ime korisnika, morate prvo konfigurirati git
.pre
$ git config --global user.name "Dobrica Pavlinusic"
$ git config --global user.email "dpavlin@rot13.org"
.pre
Ovo je potrebno napraviti *samo jednom* za korisnika i primjenjuje se na svim repozitorijima na istoj maลกini.
^ repozitoriji
Repozitoriji su jednostavno serveri koji nam omoguฤavaju da na njih ลกaljemo (push) ili sa njih vuฤemo (pull) promjene koje su u njima napravljene.
Kako je svaki checkout git-a potpuni repozitorij, svaki od njih moลพe postati javni repozitorij koji moลพe dijeliti promjene.
^^ Upstream Koha development
* http://git.koha.org/
* git://git.koha.org/pub/scm/koha.git
^^ Checkout (lokalna kopija)
.pre
git clone git://git.koha.org/pub/scm/koha.git
.pre
^^ FFZG promjene
* http://git.rot13.org/?p=koha.git;a=summary
* git://git.rot13.org/koha.git
* ssh://git.rot13.org/git/koha/
^^ promjene iz drugog repozitorija
Ako ลพelimo povuฤi promjene iz drugog repozitorija (npr. druge instalacije unutar KOHA CUG-a) trebamo dodati novi remote repozitorij.
Na repozitoriju koji je napravljen od upstream Koha repozitorija, imamo jedan remote repozitorij `origin` za push i pull:
.pre
dpavlin@t61p:/srv/koha$ git remote -v
origin git://git.koha.org/pub/scm/koha.git (fetch)
origin git://git.koha.org/pub/scm/koha.git (push)
.pre
Sada ฤemo dodati repozitorij sa FFZG development-a koristeฤi obiฤnu ssh konekciju:
.pre
dpavlin@t61p:/srv/koha$ git remote add ffzg ssh://koha-dev.rot13.org/srv/koha/
dpavlin@t61p:/srv/koha$ git remote -v
ffzg ssh://koha-dev.rot13.org/srv/koha/ (fetch)
ffzg ssh://koha-dev.rot13.org/srv/koha/ (push)
origin git://git.koha.org/pub/scm/koha.git (fetch)
origin git://git.koha.org/pub/scm/koha.git (push)
.pre
i povuฤi sve promjene lokalno:
.pre
dpavlin@t61p:/srv/koha$ git fetch ffzg
remote: Counting objects: 2019, done.
remote: Compressing objects: 100% (1440/1440), done.
remote: Total 1790 (delta 1116), reused 587 (delta 317)
Receiving objects: 100% (1790/1790), 1.40 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (1116/1116), completed with 67 local objects.
From ssh://koha-dev.rot13.org/srv/koha
* [new branch] ffzg -> ffzg/ffzg
* [new branch] ffzg2 -> ffzg/ffzg2
* [new branch] koha-lxc -> ffzg/koha-lxc
* [new branch] master -> ffzg/master
* [new branch] origin -> ffzg/origin
* [new branch] rt-390-signatura-zatvorenog-spremista -> ffzg/rt-390-signatura-zatvorenog-spremista
From ssh://koha-dev.rot13.org/srv/koha
* [new tag] ffzg -> ffzg
.pre
^ branches
Branches su mjesta na kojima se povjest promjena grana u dva dijela. Jedan je development koji rade upstream developeri Kohe, a drugi su naลกe lokalne promjene za neลกto.
Nakon nekog vremena, potrebno je dva branch-a spojiti u jedan da bi preuzeli promjene. `gitk` nam moลพe pokazati to kao stablo:
{image: git-branch-merge.png}
Promjene se mogu preuzeti (merge) iz jednog branch-a u drugi.
^^ imenovanje
Branches nisu niลกta drugo nego ime za svaku toฤku i kojoj se razvoj dijeli u dva toka.
Dobri nazivi za branch:
* DNS hostname produkcijske ili develpment maลกine na kojoj je branch checkoutan
* veza na bug tracking (prefix-broj-kratak-opis)
^^ pregled
.pre
dpavlin@t61p:/srv/koha$ git branch -a
* master
remotes/ffzg/ffzg
remotes/ffzg/ffzg2
remotes/ffzg/koha-lxc
remotes/ffzg/master
remotes/ffzg/origin
remotes/ffzg/rt-390-signatura-zatvorenog-spremista
remotes/origin/3.0.x
remotes/origin/HEAD -> origin/master
remotes/origin/biblibre-acq-preview-only
remotes/origin/biblibre-integration
remotes/origin/biblibre-sopac
remotes/origin/labels_recon
remotes/origin/master
remotes/origin/rfid-direct-tagging
remotes/origin/sysprefs_editor
.pre
^^ kreiranje
Pretpostavimo da ลพelimo kreirati branch za instalaciju na `koha.ffzg.hr`:
.pre
dpavlin@t61p:/srv/koha$ git checkout -b koha.ffzg.hr remotes/ffzg/ffzg2
Branch koha.ffzg.hr set up to track remote branch ffzg2 from ffzg.
Switched to a new branch 'koha.ffzg.hr'
.pre
^ patches
^^ format-patch
"git format-patch"<http://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html>
Naลก cilj je napraviti patcheve od promjena koje smo napravili u naลกem branch-u:
{image: git-branch-sip-debug.png}
Iz slike vidimo da smo napravili `sip-debug` branch iz postojeฤeg `3.0.x`
.pre
koha-lxc:/srv/koha# git format-patch -o sip2-changes 3.0.x
sip2-changes/0001-disable-PreFork-to-enable-easy-debugging.patch
sip2-changes/0002-remove-eval-so-it-won-t-hide-errors.patch
sip2-changes/0003-warn-about-missing-institutions-entry-in-config-xm.patch
.pre
Ovo ฤe napraviti onoliko patcheva koliko imamo commita na naลกem branch-u koji smo napravili od `3.0.x`
^^ am (apply mail patch)
Prvo ฤemo napraviti novi branch u naลกem repozitoriju `sip2-debug` u koji ฤemo importati naลกe patcheve:
.pre
koha-lxc:/srv/koha# git checkout -b sip2-debug master
Switched to a new branch "sip2-debug"
.pre
Nakon toga moลพemo applyati samo one promjene koje su nam interesantne:
.pre
koha-lxc:/srv/koha# git am sip2-changes/0001-disable-PreFork-to-enable-easy-debugging.patch
Applying disable PreFork to enable easy debugging
koha-lxc:/srv/koha# git am sip2-changes/0002-remove-eval-so-it-won-t-hide-errors.patch
Applying remove eval so it won't hide errors
koha-lxc:/srv/koha# git am sip2-changes/0003-warn-about-missing-institutions-entry-in-config-xm.patch
Applying warn about missing <institutions> entry in config xml
.pre
^^ slanje na koha-patches listu
Koha prima patcheve preko "koha-patches liste"<http://lists.koha.org/pipermail/koha-patches/>
*yada, yada, nije testirano!*
.pre
# create all changes against master in patches dir:
git format-patch -p patches master
git send-mail --to koha-patches@koha.org patches
# reciving side would just pull whole mbox
git am mbox
.pre
^^ ne ลพelim viลกe svoje lokalne promjene!
.pre
git reset --hard
.pre
*Oprez* ovo ฤe pobrisati *sve promjene koje su razliฤite od zadnjeg commit-a*
^ Viลกe informacija
* "RailsConf Git Talk"<http://www.gitcasts.com/posts/railsconf-git-talk> (mnogo zgodnih animacija ลกto se deลกava sa pojedinim komandama)
* "Koha wiki ima upute za koriลกtenje git-a"<http://wiki.koha-community.org/wiki/Version_Control_Using_Git>
^ Javni repozitorij
Da bi drugi korisnici mogli kopirati promjene, dovoljan je samo ssh. Meฤutim, za anonimne korisnike treba podesiti git-daemon
Dobar savjet je *prvo* instalirati "gitweb"<http://git.rot13.org/> za overview.
^^ git-daemon
.pre
git-daemon --verbose --export-all --base-path=/var/cache/git
.pre
U Debian-u postoji paket `git-daemon-run` koji koristi runit (YMMV) koji se podeลกava u
.pre
dpavlin@mjesec:~$ cat /etc/sv/git-daemon/run
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec git-daemon --verbose --export-all --base-path=/var/cache/git
.pre
Dodan je `--export-all` i popravljen `--base-path` (sic!)
Obradom serijskih publikacija i nakladnickih cjelina, i opcenito o pravilima katalogiziacije i standardu MARC21.
.pre
# 100 | | 100a () (100B) (100C) (100d) (110A) (110b) (110c) (110d) (110e) (110f) (110g) (130A) (130d) (130f)) ((130 g 130h () 130k) (130l) (130) (130n) (130o) (130p) (130r) (130) (130t) | <br/> <br/>
# 245 | | 245a () (245B) (245f) (245g) (245k) (245n) (245p) (245s) () 245h |
# 246 | | (: 246i) (246a) (246b) (246f) (246g) (246n) (246p) () 246h |
# 242 | | (= 242a) (242b) (242n) (242p) () 242h |
245 # | | () 245c |
242 # | | 242c) (= |
# 250 | - | (250A) () 250b |
# 254 |, | () 254a |
# 255 |, | (255a) (255b) (255c) (255d) (255e) (255f) () 255g |
# 256 |, | () 256a |
# 257 |, | () 257a |
# 258 |, | 258a () () 258b |
# 260 | - | (260A) (260b)) (260c |
# 300 | - | (300A) (300B) (300C) (300d) 300e () () (300F) 300g |
# 306 | - |) (306a |
# 307 | - | 307a () () 307b |
# 310 | - | 310a (()) 310b |
# 321 | - | 321a () () 321b |
# 340 | - | (3403) (340A) (340b) (340C) (340d) (340e) (340f) (340h) () 340i |
# 342 | - | 342a () (342b) (342c) (342d) (342e) (342f) (342g) (342h) (342i) (342j) (342k) (342l) (342m) (342n) (342o) (342p) (342q) (342r) (342s) (342t) (342u) (342v) () 342w |
# 343 | - | 343a () (343b) (343c) (343d) (343e) (343f) (343g) (343h) () 343i |
# 351 | - | (3513) (351a) (351b) () 351c |
# 352 | - | 352a () (352b) (352c) (352d) (352e) (352f) (352g) (352i) () 352q |
# 362 | - | 362a () () 351z |
# 440 | - | 440a () (440n) (440p) (440V) (440x) |.
# 490 | - | 490a () () (490V) 490x |.
# 800 | - | 800a () (800b) (800c) (800d (800E)) ((800F) 800g) (800h) (800j) (800k) (800l) (800) (800n) (800o) () 800p (800q) (800R) (800s) (800t) (800u) (800V) |.
# 810 | - | 810a () (810b) (810c) (810d) (810e) (810F) 810g () (810h) (810k) (810l) (810m) (810n) (810o) (810p) () 810r (810s) 810t () () 810u (810v) |.
# 811 | - | 811a () (811c) (811d) (811e) (811f) (811g) (811h) (811k) (811l) (811n) (811p) (811q) (811s) (811t) () 811u (811v) |.
# 830 | - | 830a () (830d) (830f) (830g) (830h) (830k) (830l) (830m) (830n) (830o) (830p) (830r) (830s) (830t) () 830v |.
# 500 | <br/> <br/> | (5003)) (500a |
# 501 | <br/> <br/> | (501A) |
# 502 | <br/> <br/> | () 502a |
# 504 | <br/> <br/> | () 504a |
# 505 | <br/> <br/> | 505a () (505t) (505r) (505g) () 505u |
# 506 | <br/> <br/> | (5063) (506a) (506b) (506c) (506d) () 506u |
# 507 | <br/> <br/> | 507a (()) 507b |
# 508 | <br/> <br/> | 508a () () 508a |
# 510 | <br/> <br/> | (5103) 510a () (510x) (510c) () 510b |
# 511 | <br/> <br/> | () 511a |
# 513 | <br/> <br/> | 513a () () 513b |
# 514 | <br/> <br/> | 514z () (514a) (514b) (514c) (514d) (514e) (514f) (514g) (514h) (514i) (514j) (514k) (514m 514u ()) |
# 515 | <br/> <br/> | () 515a |
# 516 | <br/> <br/> | () 516a |
# 518 | <br/> <br/> | (5183) (518a) |
# 520 | <br/> <br/> | (5203) (520a) (520b) () 520u |
# 521 | <br/> <br/> | (5213) (521a)) (521b |
# 522 | <br/> <br/> | () 522a |
# 524 | <br/> <br/> | () 524a |
# 525 | <br/> <br/> | () 525a |
# 526 | <br/> <br/> | (\) (n510i \ n510a) 510b () () (510c) 510d (\) n510x |
# 530 | <br/> <br/> | (\ n5063) (\ n506a) (506b) (506c) (506d) (\) n506u |
# 533 | <br/> <br/> | (\ n5333) (\ n533a) (\ n533b) (\ n533c) (\ n533d) (\ n533e) (\ n533f) (\ n533m) (\) n533n |
# 534 | <br/> <br/> | (\ (n533p) \ (n533a) \) (n533b \ n533c () \) (n533d \ (n533e) \) (n533f \ (n533m) \) (n533n \ () n533t \) (n533x \ n533z) |
# 535 | <br/> <br/> | (\ n5353) (\ n535a) (\ n535b) (\ n535c) (\) n535d |
# 538 | <br/> <br/> | (\ n5383) (\ n538a) (\ n538i) (\) n538u |
# 540 | <br/> <br/> | (\) (n5403 \ n540a) 540b () () (540c) 540d (\) n520u |
# 544 | <br/> <br/> | (\ n5443) (\ n544a) (\ n544b) (\ n544c) (\ n544d) (\ n544e) (\) n544n |
# 545 | <br/> <br/> | (\ n545a) (545b) (\) n545u |
# 546 | <br/> <br/> | (\ n5463) (\ n546a) () 546b |
# 547 | <br/> <br/> | (\) n547a |
# 550 | <br/> <br/> | () 550a |
# 552 | <br/> <br/> | 552z () (552a) (552b) (552c) (552d) (552e) (552f) (552g) (552h) (552i) (552j) (552k) (552l 552m) () () (552n) 562o (552p)) (552u |
# 555 | <br/> <br/> | (5553) (555a) (555b) 555c () () (555d) 555u |
# 556 | <br/> <br/> | (556A) () 506z |
# 563 | <br/> <br/> | (5633) (563a)) (563u |
# 565 | <br/> <br/> | (5653) 565a () (565b) (565c) (565d) () 565e |
# 567 | <br/> <br/> | () 567a |
# 580 | <br/> <br/> | () 580a |
# 581 | <br/> <br/> | (5633) (581a)) (581z |
# 584 | <br/> <br/> | (5843) (584a) () 584b |
# 585 | <br/> <br/> | (5853) (585a) |
# 586 | <br/> <br/> | (5863) (586a) |
# 020 | ISBN <br/> <br/> <label>: </ label> | 020a () () 020c |
022 # | <br/> <br/> <label> ISSN: </ label> |) (022a |
# 222 | = | (222a)) (222b |
# 210 | = | (210a) () 210b |
# 024 | <br/> <br/> <label> Standardni broj: </ label> | (024a) (024c) (024d) (0242) |
# 027 | <br/> <br/> <label> Standard Tech. Report. No: </ label> |) (027a |
# 028 | <br/> <br/> <label> Publisher. No: </ label> | 028a () () 028b |
# 013 | <br/> <br/> <label> Patent No: </ label> | (013a) (013b) (013c) (013d) (013e) () 013f |
# 030 | <br/> <br/> <label> CODEN: </ label> |) (030a |
# 037 | <br/> <br/> <label> Izvor: </ label> | (037a) (037b) (037c) (037f) (037g) () 037n |
# 010 | <br/> <br/> <label> LCCN: </ label> |) (010a |
# 015 | <br/> <br/> <label> Nat. Bib. No: </ label> | (015a) (0152) |
# 016 | <br/> <br/> <label> Nat. Bib. Agencija za kontrolu broj: </ label> | (016a) (0162) |
# 600 | <br/> <br/> <label> Subjects - Osobna imena: </ label> | (\ n6003) (\ n600a) (600b) (600c) (600D) (600e) (600f) (600g 600h)) ((- 600k) (600l) (600) (600n) () (600o - 600p) (600R) (600s) (600T) () (600u - 600x) (-) (600z -- -600y) (-) 600V |
# 610 | <br/> <br/> <label> Subjects - Corporate Imena: </ label> | (\ n6103) (\ n610a) (610b) (610c) (610d) (610e) (610f) (610g 610h)) ((- 610k (610l)) (610m) (610n)) ((610o - 610p) 610r () (610-ih) 610t () () (610u - 610x () - () 610z -- -610y) (-) 610v |
# 611 | <br/> <br/> <label> Subjects - Skup Imena: </ label> | (\ n6113) (\ n611a) (611b) (611c) (611d) (611e) (611f) (611g () () 611h - 611k) 611l () (611m) 611n () () (611o - 611p) 611r () (611s) 611t () () (611u - 611x () - () 611z -- -611y) (-) 611v |
# 630 | <br/> <br/> <label> Subjects - Uniform naslova: </ label> | (\ n630a) 630b () () 630c (630d) 630e () (630f) 630g () () 630h (- 630k) (630l) (630m) (630n) () (630o - 630p) (630r) (630s) () (630t - 630x) (-) (630z - 630y) (- 630v ) |
# 648 | <br/> <br/> <label> Subjects - Kronoloลกki Uvjeti: </ label> | (\ n6483) (\) (n648a - 648x) (-) (648z - 648y) (-- -648v) |
# 650 | <br/> <br/> <label> Subjects - aktuelno Uvjeti: </ label> | (\ n6503) (\ n650a) (650b) (650c) (650d) () (650e - 650x) (-) 650z (-) 650y (-) 650v |
# 651 | <br/> <br/> <label> Subjects - Geographic Terms: </ label> | (\ n6513) (\ n651a) (651b) (651c) (651d) () (651e - 651x) (-) 651z (-) 651y (-) 651v |
# 653 | <br/> <br/> <label> Subjects - Index Terms: </ label> |) (653a |
# 654 | <br/> <br/> <label> Subjects - Facted Index Terms: </ label> | (\ n6543) (\) (n654a - 654b) (- 654x) (-) (654z - 654y) (-) 654v |
# 655 | <br/> <br/> <label> Index Terms--Genre/Form: </ label> | (\ n6553) (\) (n655a - 655b) (-) (655x - 655z) (-) (655y - 655v) |
# 656 | <br/> <br/> <label> Indeks Uvjeti koriลกtenja - Occupation: </ label> | (\ n6563) (\) (n656a - 656k) (-) (656x - 656z) (-- -656y) (-) 656v |
# 657 | <br/> <br/> <label> Indeks Uvjeti koriลกtenja - Funkcija: </ label> | (\ n6573) (\) (n657a - 657x) (-) (657z - 657y) (-- -657v) |
# 658 | <br/> <br/> <label> Indeks Uvjeti koriลกtenja - Curriculum Cilj: </ label> | (\) (n658a - 658b) (-) (658c - 658d) (-) 658v |
# 050 | <br/> <br/> <label> LC klase. No: </ label> |) ((050a / 050b) |
# 082 | <br/> <br/> <label> Dewey klase. No: </ label> |) ((082a / 082b) |
# 080 | <br/> <br/> <label> Univerzalna decimalna klase. No: </ label> | 080a (() () 080x / 080b) |
# 070 | <br/> <br/> <label> National Agricultural Library Poziv na broj: </ label> |) ((070a / 070b) |
# 060 | <br/> <br/> <label> National Library of Medicine Poziv na broj: </ label> |) ((060a / 060b) |
# 074 | <br/> <br/> <label> GPO predmeta broj: </ label> |) (074a |
# 086 | <br/> <br/> <label> Gov Doc. Klasa. No: </ label> |) (086a |
# 088 | <br/> <br/> <label> izvjeลกฤe. No: </ label> |) (088a |
.pre
Ovdje se nalaze poveznice na lokalnu dokumentaciju nastalu u pojedinim ustanovama koje su implementirale i planiraju implementirati Kohu.
Za sad nudimo:
* "Filozofski fakultet u Zagrebu"<http://saturn.ffzg.hr/koha>
Pozivamo i druge ustanove da ovdje stave linkove na svoju dokumentaciju.
Tko nema vlastiti prostor (web ili wiki) za objavljivanje svoje dokumentacije, moลพe otvoriti novi _workspace_ na ovom wikiju.
[Dubrovnik]
Koha CUG (Koha Croatian User Group) je grupa ustanova i pojedinaca zainteresiranih za koriลกtenje, prilagodbu i razvoj knjiลพniฤnog sustava Koha. Osnivaฤki sastanak potencijalnih ฤlanica odrลพan je 03.12.2009. godine, a prisustvovali su mu predstavnici ovih ustanova: Knjiลพnica Filozofskog fakulteta u Zagrebu, Knjiลพnica Instituta Ruฤer Boลกkoviฤ, Knjiลพnica Uฤiteljskog fakulteta u Zagrebu - podruลพnica u Petrinji, Knjiลพnica Instituta za migracije i narodnosti, Knjiลพnica Fakulteta elektrotehnike i raฤunarstva. Formalno je osnovana 27. sijeฤnja 2010. kao ekspertna skupina unutar udruge HrOpen, sa sljedeฤim ciljevima:
* okupljanje osoba i institucija zainteresiranih za koriลกtenje prilagodbu i razvoj knjiลพniฤnog sustava Koha
* organiziranje savjetovanja o instalaciji i koriลกtenju Kohe
* odrลพavanje wiki stranica s uputama
* pruลพanje usluge koriลกtenja Kohe na posluลพitelju udruge (Software as a service model)
Na prvom osnivaฤkom sastanku uspostavljena je mailing lista za komunikaciju i wiki stranice (<http://saturn.ffzg.hr/koha-cug>) s informacijama o radu grupe te dokumentacijom i uputama za koriลกtenje Koha knjiลพniฤnog softvera. Dogovoreni su redovni mjeseฤni sastanci grupe i do sad je odrลพano ลกest takvih sastanaka. Teme za sastanke predlaลพu se nekoliko dana prije sastanka ili na samim sastancima i uglavnom su vezane uz tekuฤe aktivnosti kojima se bave ฤlanovi grupe.
U trenutku osnivanja grupe, dvije knjiลพnice su imale aktivne instalacije Koha knjiลพniฤnog softvera (Knjiลพnica Filozofskog fakulteta u Zagrebu i Knjiลพnica Instituta Ruฤer Boลกkoviฤ), a do danas su uz podrลกku grupe joลก dvije knjiลพnice krenule s radom (Knjiลพnica Instituta za migracije i narodnosti i Knjiลพnica Biblijskog instituta u Zagrebu). ฤlanovi grupe pruลพaju informacije i savjete o Koha softveru svim zainteresiranim knjiลพnicama u Hrvatskoj, a sadrลพaj je namijenjen knjiลพniฤarima i sistem administratorima. Komunikacija se odvija na redovitim sastancima ali i drugim naฤinima komunikacije (e-mail, telefon, chat), naroฤito u sluฤaju kad knjiลพnice nisu u Zagrebu, kao ลกto je to sluฤaj s dvije knjiลพnice Sveuฤiliลกta u Dubrovniku - Knjiลพnica Odjela za ekonomiju i poslovnu ekonomiju i Knjiลพnica Centra za turistiฤku dokumentaciju i informaciju koje su trenutno u probnoj fazi rada.
U ovome trenutku Koha CUG okuplja ustanove koje imaju vlastitu sistemsku podrลกku, a u buduฤnosti se planira razviti centralna instalacija na posluลพitelju udruge, kako bi se pruลพila podrลกka i onim ustanovama koje nemaju moguฤnost instalacije softvera na vlastitim serverima. U narednom periodu, kao i do sada, grupa ฤe biti orijentirana na organiziranje savjetovanja i pisanje dokumentacije na wiki stranicama.
U zagreb, 17.5.2010.
Prvo smo ovaj sastanak pomaknuli sa tjedan dana a sada nemamo ni neke naroฤite teme :-)
^ Za knjiลพniฤare
ฤavrljanje
^ Za sistemske knjiลพniฤare
Pokuลกati ฤemo pogledati [SQL reports utf-8 encoding] probleme u MySQL-u, a moลพemo pogledati i kako "ubrzati MySQL"<http://blog.rot13.org/2010/04/mysql_is_slow_did_you_tune_your_settings.html> ili kako izvuฤi podatke iz [MARCXML] zapisa u bazi.
^ SQL
* jednostavan jezik za postavljanje upita u relacijskim bazama
* [SQL joins - vizualna reprezentacija]
^ Koha reports
* "Koha 3.0 dokumnetacija"<http://koha.org/documentation/manual/3.0/reports/referencemanual-all-pages>
* "Koha SQL Report Library"<http://wiki.koha.org/doku.php?id=sql_library>
^^ Katalogizacija
^^ Prikaz podataka u Kohi
* prikaz ISBD - polja 110, 111 i 246
^^ Backup
* mysql dump za bazu
* rsync/tar/cpio za datoteke
* backup takav da sa njega moลพete podiฤi produkcijsku maลกinu u virtualizatoru (vmware, VirtualBox, qemu, kvm...)
> Mislim da ฤemo ovu temu prebaciti za slijedeฤi put, a ovaj puta razgovarati o Koha upgrade-u koji smo upravo proลกli :-)
Komentar "Community Handover IRC Meeting, 2 February 2010"<http://wiki.koha.org/doku.php?id=en:events:meetings:irc_meetings:meetingnotes10feb02>
^^ Zebra
* [Z39.50] server koji koristi koha
* http://wiki.code4lib.org/index.php/Getting_Started_with_Zebra
* Pretvaranje COBISS-a u Z39.50: http://svn.rot13.org/index.cgi/Z3950-HTML-Scraper
^^ IRC
ili kako najlakลกe komunicirati s grupom ljudi u realnom vremenu?
valjalo bi se dogovoriti da otvorimo neki IRC kanal na kojem bi se poruke arhivirale
^^ Osnivanje ekspertne skupine pri HrOpen-u
[2010-01-27]
----
Naลกa malenkost iz Petrinje dolazi pa se vidimo... Lijep pozdrav...
_contributed by {user: tstankovic@vusp.hr} on {date: 2010-02-02 08:02:56 GMT}_
Dohvaฤanje podataka iz MARCXML zapisa u Kohi zahtjeva MySQL server 5.1 koji se nalazi u backports za debian lenny.
Primjeri XPATH upita:
.pre
mysql> SELECT ExtractValue((SELECT marcxml FROM biblioitems WHERE biblionumber=14), '//datafield[@tag="260"]/subfield[@code>="b"]') AS ITEM\G
*************************** 1. row ***************************
ITEM: Z. ล eลกo, 1978.
1 row in set (0.00 sec)
.pre
Prenosim poruku koju je Nicole Engard danas poslala na Koha user listu:
> Hi all,
> Just wanted you to know that there is a new Koha YouTube Group at
> http://www.youtube.com/group/kohails (well not new apparently I
> created it ages ago and never added anything to it)
> It has 26 videos I found on YouTube for Koha - so if I missed any add
> yours - and feel free to join the group
> I also set one up on Vimeo to be fair - but there is only one video on
> there ... http://vimeo.com/channels/kohails
> I have added both of these to the social networking page on the wiki
> as well: http://wiki.koha.org/doku.php?id=kohasocialnetworks
> Thanks
> Nicole
Nisam joลก detaljno pogledala, ลกaljem ovdje da imamo te linkove pri ruci. Neki video materijali odnose se na staru verziju Kohe (2.2), ali vidim da ima dosta toga za novu verziju.
Za reporte iz Koha baze nuลพno je koristiti `join` u SQL-u. Evo ลกalabahtera:
{image: Visual_SQL_JOINS_orig.jpg}
*izvori*:
* http://koha-community.org/help-with-sql-joins/
* http://www.codeproject.com/KB/database/Visual_SQL_Joins.aspx
Naziv: Korisnici Koha knjiลพniฤnog softvera
Engleski naziv: Croatian Koha user group
^^ Podruฤje djelovanja
* okupljanje osoba i institucija zainteresiranih za koriลกtenje prilagodbu i razvoj knjiลพniฤnog sustava Koha
* organiziranje savjetovanja o instalaciji i koriลกtenju Kohe
* odrลพavanje wiki stranica s uputama
* pruลพanje usluge koriลกtenja Kohe na posluลพitelju udruge (_Software as a service_ model)
^^ Potrebni resursi
Pruลพanje usluge koriลกtenja Kohe na centranom posluลพitelju zatjeva hardverske resurse (Debian Linux operacijski sustav, MySQL baza podatka, Zebra pretraลพivaฤ). Iako trenutno ne posoji interes za takvu uslugu, poznato je da mnoge manje knjiลพnice nemaju moguฤnost samostalne instalacije i odrลพavanja Kohe, pa bi takva usluga mogla biti zanimljiva u buduฤnosti.
Koha podrลพava viลกe razliฤitih kniลพnica na jednoj instalaciji i zahtjeva relativno male resurse (oko 1Gb RAM-a i oko 200 Gb mjesta na disku), i radi dobro kao virtualni stroj ili container.
----
Prvi sastanak potencijalnih ฤlanica i ฤlanova ove grupe odrลพan je 3.12.2009. u 12:00 sati u raฤunalnoj uฤionici Knjiznice FF-a.
----
{include: [2010-01-27]}
Problem:
*treba pobrisati sve bibliografske zapise na kojima nema niti jednog primjerka*.
^^^ Uz pomoฤ skripte
`scrub_orphaned_biblios.pl`
(dodati link na izvor za ovu skriptu !!)
isprobali na koha-dev.rot13.org, ne radi.
ova skripta bi trebala uredno pobrisati zapise, tako da ih sve pospremi u tablice `deletedbiblio` i `deletedbiblioitems`
takoฤer, trebala bi neลกto uฤiniti sa zebra indeksima.
koristi koha modul C4::Biblio
^^^ Ruฤno
moลพe i ovako, ali tako niลกta neฤe ostati u deleted* tablicama (ลกto je ponekad poลพeljno)
uฤi u bazu:
.pre
$ mysql -u _kohauser_ -p koha
.pre
izlistaj sve biblionumbere koje treba obrisati, ovako:
.pre
mysql> SELECT biblio.biblionumber, biblioitems.itemtype, items.biblionumber as items_biblionumber
from biblio
RIGHT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber
LEFT JOIN items ON biblio.biblionumber = items.biblionumber
WHERE items.biblionumber IS NULL ;
.pre
zapoฤni transakciju:
.pre
mysql> begin ;
.pre
obriลกi zapise:
.pre
mysql> delete biblio.* from biblio LEFT JOIN items ON biblio.biblionumber = items.biblionumber WHERE items.biblionumber IS NULL ;
.pre
pa onda provjeri, npr. ponovo napiลกi onaj gore select, prebroji koliko sada ima zapisa u tablicama items,biblio i bilioitems i sliฤne stvari..
.pre
mysql> select count(*) from biblio ;
.pre
nakon toga potvrdi promjene:
.pre
mysql> commit;
.pre
onda treba rebuld zebra indeksa:
.pre
koha@koha-dev:/usr/share/koha/bin/migration_tools$ ./rebuild_zebra.pl -b -a -v -r
.pre
{toc: }
^ ฤemu sluลพi MARC bibliographic framework?
Sluลพi za konfiguraciju suฤelja za unos bibliografskih podatka pri katalogizaciji --- {link: koha [Katalogizacija] }
Podrลพani standardi: UNIMARC i MARC21. Iskustva u HR postoje za MARC21.
Definiranje MARC predloลพaka kljuฤni je proces tijekom implementacije. Prije poฤetka rada obavezno je pokrenuti *MARC Bibliographic framework test*.
Omoguฤuje:
* difiniranje potrebnih MARC polja i potpolja
* prikaz polja u formi za unos
* definiranje default vrijednosti
* mapiranje polja u koha bazu
* koriลกtenje alata za normiranje podataka i dodataka koji olakลกavaju toฤan unos podataka
^ Upute za konfiguraciju
`Koha administration -> MARC Bibliographic framework`
* "Koha User Manual"<http://koha.org/documentation/manual/3.2/administration/catalog-administration/marc-bibliographic-frameworks>
^ Zaลกto ลพelimo imati iste predloลกke?
*1. opฤeniti razlog - standardi*
Standardizirani unos podataka olakลกava razmjenu podataka
*2. Koha specifiฤan razlog:*
Moguฤnost razmjene SQL upita za potrebe razliฤitih izvjeลกtaja.
Koha wiki: http://wiki.koha.org/doku.php?id=sql_library
Sastavni dio predloลกka su mapiranja MARC polja u Koha bazu. U Koha bazi ne nalaze se sva MARC polja, nego samo ona koja smo mapirali.
Interne funckije u Kohi (npr. cirkulacija, reporting) odvijaju se uz pomoฤ podataka u Koha bazi.
Prikaz podataka nije limitiran mapiranjem, ali do verzije 3.2 nije postojala elegantna metoda za dodavanje polja za display u intranetu, pa je display u intranetu bio limitiran na polja iz baze. Od verzije 3.2 postoji "Keywords to MARC mapping"[Prikaz podataka u intranetu - Keywords to MARC mapping].
^ Kako importati framework?
Trebaju nam:
a) *podaci* koji se nalaze u tablicama:
`biblio_framework`
`marc_tag_structure`
`marc_subfield_structure`
b) *plugini* za unos podataka (_value builder_).
^^ 1. backup lokalnih tablica
.pre
$ mysqldump --add-drop-table -u _root_ -p_password_ koha marc_tag_structure > 2009-12-10_marc_tag_structure.sql
$ mysqldump --add-drop-table -u _root_ -p_password_ koha marc_subfield_structure > 2009-12-10_marc_subfield_structure.sql
.pre
^^ 2. download
* {link: koha [FFZG MARC frameworks] }
^^ 3. napraviti framework
Preko Koha admin suฤelja:
Administration -- MARC Bibliographic framework -- New Framework
upisati Framework Code i Description
Pod frameworkcode piลกe se kod koji odgovra kodu frameworka koji se zeli importati.
Npr. za LIB framework preuzet s FFZG, treba upisati LIB. Description moลพe biti bilo ลกta.
Ako se stavi neลกto drugo pod frameworkcode onda u preuzetim fajlovima treba LIB promijeniti u to neลกto drugo.
^^ 4. import podataka
.pre
mysql> LOAD DATA LOCAL INFILE '/tmp/mysql/lib-tags.csv'
INTO TABLE marc_tag_structure
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n' ;
mysql> LOAD DATA LOCAL INFILE '/tmp/mysql/lib-subfields.csv'
INTO TABLE marc_subfield_structure
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n' ;
.pre
----
Ako neลกto poฤe krivo, ovo ฤe rekreirati originalne podatke u tablicama:
.pre
$ mysql -u _root_ -p_password_ koha.marc_tag_structure < 2009-12-10_marc_tag_structure.sql
$ mysql -u _root_ -p_password_ koha.marc_subfield_structure < 2009-12-10_marc_subfield_structure.sql
.pre
^^ 5. provjeriti i promijenti default vrijednosti
Koha Administration -> MARC Bibliographic framework
Preuzeti podaci sadrลพe default vrijednosti koje se odnose na ustanovu iz koje su podaci za framework preuzeti.
.pre
mysql> select tagfield, tagsubfield, liblibrarian, mandatory, frameworkcode, defaultvalue from marc_subfield_structure where defaultvalue = 'HR-ZaFF' ;
+----------+-------------+-----------------------------------------------+-----------+---------------+--------------+
| tagfield | tagsubfield | liblibrarian | mandatory | frameworkcode | defaultvalue |
+----------+-------------+-----------------------------------------------+-----------+---------------+--------------+
| 040 | a | Srediลกte koje obavlja izvornu katalogizaciju | 0 | LIB | HR-ZaFF |
| 040 | c | Srediลกte koje transkribira zapis | 1 | LIB | HR-ZaFF |
| 040 | a | Srediลกte koje obavlja izvornu katalogizaciju | 0 | MIN | HR-ZaFF |
| 040 | c | Srediลกte koje transkribira zapis | 0 | MIN | HR-ZaFF |
| 040 | a | Srediลกte koje obavlja izvornu katalogizaciju | 0 | OCJ | HR-ZaFF |
| 040 | c | Srediลกte koje transkribira zapis | 1 | OCJ | HR-ZaFF |
| 040 | a | Srediลกte koje obavlja izvornu katalogizaciju | 0 | PER | HR-ZaFF |
| 040 | c | Srediลกte koje transkribira zapis | 1 | PER | HR-ZaFF |
+----------+-------------+-----------------------------------------------+-----------+---------------+--------------+
8 rows in set (0.05 sec)
.pre
^^ 6. instalirati _value builder_
_Value builder_ dolazi u obliku plugina. Olakลกava unos podataka i osigurava toฤnost unesenih podataka.
Redovito se koristi za unos kodiranih podataka (polje LDR, 008, i sl), ali moguฤe ga je kristiti za razliฤita druga poboljลกanja forme za unos podataka.
*Download*: {link: koha [FFZG MARC frameworks plugins] }
Gdje se se moraju smjestiti dateteke plugina?
Template: `/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/modules/cataloguing/value_builder/`
Skripta: `/usr/share/koha/intranet/cgi-bin/cataloguing/value_builder/`
Vidi i:
* [Pisanje Koha plugina]
^^ 7. premapirati polja (opcionalno)
Nakon toga treba obavezno pokrenuti skriptu *batchRebuildBiblioTables.pl*
.pre
mglavica@koha-upgrade:/srv/koha/misc$ ./batchRebuildBiblioTables.pl -h
This script rebuilds the non-MARC DB from the MARC values.
You can/must use it when you change your mapping.
Example: you decide to map biblio.title to 200$a (it was previously mapped to 610$a).
Run this script or you will have strange results in OPAC !
Syntax:
./batchRebuildBiblioTables.pl -h (or without arguments => shows this screen)
./batchRebuildBiblioTables.pl -c (c like confirm => rebuild non marc DB (may be long)
-t => test only, change nothing in DB
.pre
Ova skripta rekreira non-MARC DB iz MARC vrijednosti. Obavezno ju je pokreniti nakon svake promjene u mapiranju polja.
Ako se ne pokrene u OPAC-u ฤe se pojaviti ฤudni rezultati.
Ova skripta ฤe rekreirati samo polja u biblio zapisu (sve osim podataka u 952, odnosno u items tablici). Master verzija podataka o primjercima nalazi se u items tablici.
Ako neลกto mijenjamo u polju 952, pokreฤe se skripta
*`maintenance/sync_items_in_marc_bib.pl`*
*Ne pokretati* ovu skriptu ako nije nuลพno!
.pre
mglavica@koha-upgrade:/srv/koha/misc/maintenance$ ./sync_items_in_marc_bib.pl -h
./sync_items_in_marc_bib.pl: synchronize item data embedded in MARC bibs
Replaces the item data embedded in the MARC bib
records (for indexing) with the authoritative
item data as stored in the items table.
If Zebra is used, run rebuild_zebra.pl -b -r after
running this script.
NOTE: this script should be run only if there is
reason to suspect that the embedded item tags are
not in sync with the items table.
Parameters:
--run-update run the synchronization
--where condition selects the biblios on a criterium (Repeatable)
--help or -h show this message.
.pre
^^ 8. testirati
U Admin suฤelju intraneta:
* pokrenuti `MARC Bibliographic framework test`
* pogledati `MARC links`
^ ล to ako test javi greลกke?
primjer:
.pre
OK itemnum : the field itemnumber is mapped to a field in tab -1
item fields ALL items fields MUST :
* be mapped to the same tag,
* and they must all be in the 10 (items) tab
OK Only 1 MARC tag mapped to items
OK biblioitems.itemtype defined
OK homebranch defined
OK holdingbranch defined
OK at least 1 item type defined
OK at least 1 branch defined
OK biblionumber and biblioitemnumber mapped correctly
OK no NULL value in frameworkcode
OK all subfields for each tag are in the same tab (or ignored)
OK all authority types used in the frameworks are defined
TOTAL You have 1 error(s) in your MARC configuration. Please fix them before using Koha
.pre
Ovo ฤe pokazati u koja MARC polja (tagfield) i potpolja (tagsubfield) su mapirana polja iz items tablice, za svaki framework.
^ Reineksiranje Zebre bez zebra-queue
.pre
KOHA_CONF=/etc/koha/koha-conf.xml
PERL5LIB=/usr/share/koha/lib
# m h dom mon dow command
*/4* * * * ps ax | grep -v grep | grep rebuild_zebra.pl || /srv/koha/misc/migration_tools/rebuild_zebra.pl -b -z >/dev/null
.pre
^^ Kako aลพurirati Zebra index
Nakon veฤih promjena u bazi ili MARC zapisu, potrebno je reindeksirati zebra index kako bi se promjene reflektirale i u rezultatima pretraลพivanja u web suฤelju.
Treba jednostavno izbrisati postojeฤe index fajlove i kreirati nove:
.pre
zebraidx -c /etc/koha/zebradb/zebra-biblios.cfg -g iso2709 -d biblios init
zebraidx -c /etc/koha/zebradb/zebra-authorities-dom.cfg -g iso2709 -d authorities init
.pre
i onda
.pre
migration_tools/rebuild_zebra.pl -a -b -k -s โreset
.pre
Opฤenito kod generiranja zebra indexa pripazite da imate dovoljno mjesta na fajlsistemu (defaultni direktorij je /var/lib/koha/zebradb) jer ฤe u protivnom doฤi do greลกke. Nama na IRB trosi oko 1GB prostora (za 25000 zapisa).
^ Cron
[Koha cronjobs]
----
_Vidi i:_ {link: koha [Zebra indexing]}
Na sastanku upravnog odbora HrOpen-a uvojena je odluka o formiranju ekspertne skupine za Kohu.
Dakle, sada imamo i formalni organizacijski oblik :-)
Predloลพene teme:
* [MARC bibliographic framework]
* [git] - kako ga efikasno koristiti za praฤenje promjena
Odrลพan je prvi sastanak potencijalnih ฤlanica i ฤlanova ove grupe u 12:00 sati u raฤunalnoj uฤionici Knjiznice FF-a.
{tag_list: uloga:sistemski-knjiลพniฤar}
{tag_list: uloga:knjiลพniฤar}
LiveCD vam omoguฤuje da racunalo pokrenete uz pomoฤ CD-a i isprobate operativni sustav bez da ga morate instalirati i konfigurirati. Takav CD, uz operativni sustav moลพe sadrลพavati bilo koji softver kojeg tvorac CD-a odluฤi ukljuฤiti.
Mizstik je sloลพio live CD s Ubuntu serverom i instalacijom Koha knjiลพniฤnog softvera i nazvao ga Koha LiveCD. Uz pomoฤ Koha LiveCD-a moลพete instalirati Kohu ili ju samo isprobati iz RAM-a, bez da ju instalirate.
Adresa projekta je <http://mizstik.com/projects/koha-livecd/>.
* dodano u verziji *3.2*
{toc: }
^^ ฤemu sluลพi Keywords to MARC mapping?
Ovo je veliko poboljลกanje u naฤinu prikaza podataka u intranetu (testirati OPAC) u sluฤaju kad display nije definiran uz pomoฤ XSLT.
Omoguฤuje prikazivanje bilo kojeg polja iz MARC formata, a ne samo onih polja koja su mapirana u Koha bazu.
^^ Kako se koristi?
U admin suฤelju intraneta, za svaki framework se odrede kljuฤne rijeฤi uparene s pojedinim MARC poljima.
Nakon toga se dodaju potrebna polja u ove dvije datoteke:
`/usr/share/koha/intranet/cgi-bin/catalogue/detail.pl`
`/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl`
^^ Primjer za dodavanje podataka o odgovornosti (MARC 245c)
dodati varijablu responsibility:
.pre
mglavica@koha-upgrade:/usr/share/koha/intranet/cgi-bin/catalogue$ diff -u detail.pl-before detail.pl
--- detail.pl-before 2009-12-08 22:45:28.740439368 +0100
+++ detail.pl 2009-12-08 21:26:47.280689653 +0100
@@ -90,6 +90,7 @@
my $marcseriesarray = GetMarcSeries($record,$marcflavour);
my $marcurlsarray = GetMarcUrls ($record,$marcflavour);
my $subtitle = GetRecordValue('subtitle', $record, $fw);
+my $responsibility = GetRecordValue('responsibility', $record, $fw);
# Get Branches, Itemtypes and Locations
my $branches = GetBranches();
@@ -206,6 +207,7 @@
MARCSERIES => $marcseriesarray,
MARCURLS => $marcurlsarray,
subtitle => $subtitle,
+ responsibility => $responsibility,
itemdata_ccode => $itemfields{ccode},
itemdata_enumchron => $itemfields{enumchron},
itemdata_uri => $itemfields{uri},
.pre
u template dodati:
.pre
<!-- TMPL_LOOP NAME="responsibility" -->
<!-- TMPL_VAR NAME="subfield" -->
<!-- /TMPL_LOOP -->
.pre
{toc: }
^ Format broja
Odabran je 10-tero znamenkasti broj (3+7 znamenki)
.pre
III1234567
.pre
* III - zadnje tri znamenke iz broja ministarstva
** 130 - Filozofski fakultet
** 098 - Institut Ruฤer Boลกkoviฤ
* 1234567 = oznaka primjerka
7 zmaneki omoguฤava omoguฤava 9,999,999 primjeraka po ustanovi, a troznamenkasni prefix je odabran jer Crolist veฤ koristi dvije znamenke za ustanovu i 7 za primjerak (ukupno 9 znamenki), pa je moguฤe razlikovati barcode iz Crolista od barcoda iz Kohe prema broju znamenki
^ Barcode standardi
Nadopisati lijepi opis, a do tada, {link: rot13 [Barcode journy] } opisuje Dobricine eksperimente sa barcode softverom.
^ Iskustva sa opermom
* Zebra barcode printer
{toc: }
^ Gdje se koriste plugini?
Koha plugin je funkcionalnost skrivena iza lika `...` (tri toฤkice) u poljima za editiranje:
{image: koha-tag-editor.png}
Plugin je u osnovi pop-up prozor koji se otvara klikom na link i koji moลพe vratiti podatke u polje iz kojeg je otvoren.
^ Dijelovi
Sastoji se od dvije datoteke:
* "cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.pl"<http://koha-dev.rot13.org:8081/cgi-bin/gitweb.cgi?p=koha-ffzg.git;a=blob;f=cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.pl;h=c54a0b33a9a29cc769bcfc760bcd835437d8542c;hb=ff60f4a71d8aca3ae247ab5615c7224da308b599>
* "koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tmpl"<http://koha-dev.rot13.org:8081/cgi-bin/gitweb.cgi?p=koha-ffzg.git;a=blob;f=koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tmpl;h=d1bafae5c5c555d13919b543c2641519bf14e54d;hb=ff60f4a71d8aca3ae247ab5615c7224da308b599>
^ Instalacija
https://10.60.0.252:8443/cgi-bin/koha/admin/marc_subfields_structure.pl
{image: koha-subfield-display_more_constraints.png}
{image: koha-subfield-other-options-plugin.png}
^ Editiranje
Ako se plugin editira u koha checkout direktoriju `/srv/koha` treba ga prvo instalirati na sistem:
.pre
cp -v ./koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tmpl \
/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/en/modules/cataloguing/value_builder/
cp -v ./cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.pl \
/usr/share/koha/intranet/cgi-bin/cataloguing/value_builder/
.pre
http://koha-dev.rot13.org:8081/cgi-bin/gitweb.cgi?p=koha-ffzg.git;a=blob;f=ffzg-signatura-zatvoreno-spremiste.sh;h=ec124c67830420273483e60ce0eea81720c72c1d;hb=ff60f4a71d8aca3ae247ab5615c7224da308b599
{image: koha-cug-gray.png}
{image: koha-cug.png}
{file: koha-cug-2009-11-15.svg}
Stilizirana sliฤica vlaka sa natpisom Koha i oblaฤiฤima sa loga
Up: [Workspace Tour - Table of Contents]
Back: [Meeting agendas]
Share information about projects and tasks with your team.
| ^^^ Widget project summary
^^^^ Recent Updates
11-14-05: Added the Top 5 Requirements
11-14-05: Added a draft of an [Evaluation document]
^^^^ Widget Development Tasks
10-22-2005 100% [Integrated Top 5 Requirements]
10-29-2005 095% [Requirements for Widget]
10-31-2005 080% [Evaluation Document] |
... you can use pages in a Workspace to build "collections of pages"[lists of pages]...
Up: [Workspace Tour - Table of Contents]
Back: [Documents that people are working on]
Here's an example of what a conversation page might look like...
| ^^^ Group-forming metrics
[Adina] - I spoke this afternoon to Anil Gupta over at CyberProteins, Inc. They are interested in the groupforming metrics reports, and are interested in additional metrics about network growth.
[Ed] - It would also be useful to configure these reports more rapidly in the field. We should also consider think about providing services helping customers to choose and implement the right metrics. I'll bring this up at the next business-plan meeting. |
Follow us to see how you can use workspace pages for [meeting agendas]...
This is the people directory, a list of people working in this workspace. It is built by you, as a place to [introduce yourself]. Please add yourself below and then create your own homepage.
>> *Find out more: [Introduce yourself].*
* _[your name here]_ (e.g. [John] or [Jane Doe])
----
*Meet your fellow socialtext users.* You're not alone! Meet other Socialtext customers and support representatives on the {link: exchange [Socialtext Customer Exchange]}. If you have a question, this is the place to go.
Up: [Workspace Tour - Table of Contents]
Back: [How Do I Make a New Page?]
You're now ready to use your workspace! Now, think about how you want to use it for you and your workgroup, and start creating and editing pages.
To start, you might want to create a personal page for yourself. Just visit the dashboard and click the *New Page* button. Or, you can start with any other page you'd like.
For more ideas, check out the collection of "Best Practices"<http://www.socialtext.net/exchange/index.cgi?best_practices> over at the "Socialtext Customer Exchange"<http://www.socialtext.net/exchange/>.
Enjoy!
_The Socialtext Crew_
Up: [Workspace Tour - Table of Contents]
Back: [Lists of pages]
* *"Home"* at the top left sends you to the dashboard or to the top page.
>> {image: Navbar-Home.png}
* *Click links* to browse around through the pages.
* Click *"What's new"* right next to *"Quick jump"* to see what's new and what has recently changed in the space.
>> {image: View-Page-What's-new.png}
* *Search* from the top left to find pages with specific words in them.
>> {image: Search.png}
Let's look at some more [advanced getting around]
Up: [Workspace Tour - Table of Contents]
Back: [Project plans]
Here are links to some of the pages in this workspace.
| ^^^ Things you might find in a workspace
> [Meeting Agendas]
> [Project Plans]
> [Conversations] |
Now that I know about some of the things I can use a Workspace for, [how do I find my way around?]
Up: [Workspace Tour - Table of Contents]
Back: [How do I find my way around?]
Here are some more advanced workspace navigation techniques. If you like, you can go back to the basic page, called [How do I find my way around?]
You can use tags to group pages that are related. Anyone can put a tag on a page by clicking the *Add tag* button in the sidebar. You can find pages with a given tag by clicking the tag if it appears in the sidebar, or by going to the dashboard, then clicking on the *"All tags"* link.
>> {image: Navbar-All-tags.png}
Next: [Can I change something?]