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:"razmjenavjestina" wikiformat:socialtext'>><<newJournal 'DD MMM YYYY' fields:'server.host:"https://saturn.ffzg.hr%2C%20saturn.ffzg.hr:443" server.workspace:"razmjenavjestina" wikiformat:socialtext'>><<saveChanges>><<backstage sync>><<slider chkSliderOptionsPanel OptionsPanel 'options ยป' 'Change TiddlyWiki advanced options'>>
https://saturn.ffzg.hr/razmjenavjestina/
[[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:''|razmjenavjestina|
|''WorkspaceList:''||
|''Description:''|RazmjenaVjestina|
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");
}
//}}}
ja ju napravim
test
----
"original"<http://www.razmjenavjestina.org/MarcellMars/NovaStranica> {date: 2005-04-30 10:50:14 +0200}
^ Draft #1:
A: Jedan tebi, jedan meni, drugi tebi, jedan-dva meni, treฤi tebi, jen-dva-tri meni...
B: EEej, jel ti to varaลก?
A: ล ta ti je? Dat ฤu ti root password pa provjeri...
B: Aaaaa, ruuut password.. da da da... onda ok.
A: ฤetvrti tebi, jen-dva-tri-ฤetri meni...
Razmjeni vjeลกtine, svakodnevne dovitljivosti i pokaลพi ลกto znaลก u ___ 11.06. od __ do __. Haker je hakeru drug. http://www.razmjenavjestina.org
----
^ Draft #2
ovaj je bez veze, ali neka ga...
"Ove subote instaliranje linuxa na sve ลกto na struju gmiลพe, pa s gmizavcem u rex, a s dual butom doma."
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsJingleRazmjenaVjestina> {date: 2007-10-31 12:59:37 +0100}
^ GamepadX
at the moment i try to get account at savannah.gnu.org with this project:
*"topot" is python scripting environment to allow classic input devices, gamepads/joysticks and midi/osc gears to mimic each other... to use mouse/keyboard as midi/osc controlers and vice versa...
visualisations of the parameters in charge is an extra layer.
the code written till now is at wiki page:
http://www.razmjenavjestina.org/[MarcellMars]/[MarcellMarsCodeGamepadX]
it allows user to use gamepad as mouse, keyboard or any other system call written in XAction class.. also there is a draft class which allows user to use MIDI controller as a regular mouse...*
GamepadX is a little python script which prepares gamepad (in my case "Logitech Cordless Rumble Pad"<http://www.logitech.com/index.cfm/gaming/pc_gaming/gamepads/devices/287&cl=us,en>) to act as mouse, arrows, backspace, delete, enter, escape... whatever u put in methods of class XAction ;)
if you are looking for the "real app" for making your joystick the new mouse in X try http://qjoypad.sourceforge.net/... unfortunately i didn't test it but it seems quite matured :*
at the moment the configuration is in konf list where the first member of the list is pseudo-modifier, second is axe or button of the gamepad, third the number of ax or button and finally forth is the name of the method of class Kontroler which will be called after particular axe or button is pressed. modifiers should be used to bring extra functionality for axis or buttons and therefore should be placed before other (non-modifiers) functionalities in the conf list... when modifier is pressed the particular axe or button when pressed gets different job than when pressed without the modifier.. as easy as that ;)
the future plans are to make "while 1:" separated thread + make python OSC/MIDI server (open sound control) which will call then methods of XAction so it will be possible to use MIDI gears to cheat X server ;)
_UPDATE: the proof of concept regarding MIDI is in the code.. and at the moment MIDI controllers 72 and 73 are mouse axis and notes 49, 50 and 51 are left/middle/right click of the mouse... it is easy to catch any other midi event and make it do whatever is in XAction class... if testing just be sure that your MIDI controller is connected to GetMIDI midi device... i recommend qjackctl for doing that_
the other thing is to make this also controller of "rvwm"<http://www.bljak.org/rvwm> fork of "evilwm"<http://www.6809.org.uk/evilwm/>. "rvwm"<http://www.bljak.org/rvwm> are python bindings of "evilwm"<http://www.6809.org.uk/evilwm/> controllable from interactive python sessions (separated thread)...
whatever...
it depends on "pyJSW"<http://freshmeat.net/projects/pyjsw/> responsible for communication to gamepad and
"pyseq"<http://www.sci.ccny.cuny.edu/~brinkman/software/pyseq/> responsible for communication to X server.
.pre
from pyrobot import *
import JSW,sys,time
from pyseq import *
class GetMIDI(PySeq):
def __init__(self):
PySeq.__init__(self,'GetMIDI')
self.iport = self.createInPort('')
def startGetMIDI(self):
self.mt=MidiThread(self)
self.mt.start()
def callback(self, ev):
if ev.type =
^ SND_SEQ_EVENT_NOTEON and ev.getData().note
= 48 \
and ev.getData().velocity > 0:
K.leftClick(1, 'midi00')
if ev.type =
^ SND_SEQ_EVENT_NOTEON and ev.getData().note
= 48 \
and ev.getData().velocity == 0:
K.leftClick(0, 'midi00')
if ev.type =
^ SND_SEQ_EVENT_NOTEON and ev.getData().note
= 49 \
and ev.getData().velocity > 0:
K.middleClick(1, 'midi01')
if ev.type =
^ SND_SEQ_EVENT_NOTEON and ev.getData().note
= 49 \
and ev.getData().velocity == 0:
K.middleClick(0, 'midi01')
if ev.type =
^ SND_SEQ_EVENT_NOTEON and ev.getData().note
= 50 \
and ev.getData().velocity > 0:
K.rightClick(1, 'midi02')
if ev.type =
^ SND_SEQ_EVENT_NOTEON and ev.getData().note
= 50 \
and ev.getData().velocity == 0:
K.rightClick(0, 'midi02')
if ev.type =
^ SND_SEQ_EVENT_CONTROLLER and ev.getData().param
= 73:
K.mouseX = (ev.getData().value + 1)*(1024/128)
K.moveMouse()
if ev.type
^^ SND_SEQ_EVENT_CONTROLLER and ev.getData().param
72:
K.mouseY = (ev.getData().value + 1)*(1024/128)
K.moveMouse()
return 1
class XAction:
def __init__(self):
self.R = PyRobot()
self.dev = "/dev/input/js0"
self.cal = "/tmp/.joystick"
self.jsd = JSW.Joystick(self.dev,self.cal)
self.ax = self.jsd.getAxisCoeff
self.bt = self.jsd.getButtonState
self.mouseX = 0
self.mouseY = 0
self.states = {}
for i in range(self.jsd.axisCount):
self.states['ax'+str(i)] = 0
for i in range(self.jsd.buttonCount):
self.states['bt'+str(i)] = 0
self.states['ax4b'] = 0
self.states['ax5b'] = 0
for i in range(3):
self.states['midi0'+str(i)] = 0
def getMouseCoord(self):
self.R.grabAll()
ev = self.R.getEvent()
dat = ev.getData()
self.mouseX, self.mouseY = dat.x, dat.y
self.R.releaseAll()
def setMouseX(self, x, state):
step = self.getMouseStep(x)
if x > 0:
self.mouseX += step + 1
if self.mouseX > 1024: self.mouseX = 1024
elif x < 0:
self.mouseX += step - 1
if self.mouseX < 0: self.mouseX = 0
def setMouseY(self, y, state):
step = self.getMouseStep(y)
if y > 0:
self.mouseY -= step + 1
if self.mouseY > 768: self.mouseY = 768
elif y < 0:
self.mouseY -= step - 1
if self.mouseY < 0: self.mouseY = 0
def getMouseStep(self, s):
return int(((round(s,2)*100)**3)/20000)
def moveMouse(self):
self.R.sendMotionEvent(self.mouseX, self.mouseY)
def leftClick(self, click, state):
if click
^^ 1 and self.states[state]
0:
self.R.sendButtonEvent(1,1)
self.states[state] = 1
elif click =
^ 0 and self.states[state]
= 1:
self.R.sendButtonEvent(1,0)
self.states[state] = 0
def rightClick(self, click, state):
if click
^^ 1 and self.states[state]
0:
self.R.sendButtonEvent(3,1)
self.states[state] = 1
elif click =
^ 0 and self.states[state]
= 1:
self.R.sendButtonEvent(3,0)
self.states[state] = 0
def middleClick(self, click, state):
if click
^^ 1 and self.states[state]
0:
self.R.sendButtonEvent(2,1)
self.states[state] = 1
elif click =
^ 0 and self.states[state]
= 1:
self.R.sendButtonEvent(2,0)
self.states[state] = 0
def arrowUpDownAx(self, click, state):
if click
^^ 1 and self.states[state]
0:
self.R.sendKeyEvent(98,1)
self.states[state] = 1
elif click =
^ -1 and self.states[state+'b']
= 0:
self.R.sendKeyEvent(104,1)
self.states[state+'b'] = 1
elif click
^^ 0 and self.states[state]
1:
self.R.sendKeyEvent(98,0)
self.states[state] = 0
elif click =
^ 0 and self.states[state+'b']
= 1:
self.R.sendKeyEvent(104,0)
self.states[state+'b'] = 0
def arrowLeftRightAx(self, click, state):
if click
^^ 1 and self.states[state]
0:
self.R.sendKeyEvent(102,1)
self.states[state] = 1
elif click =
^ -1 and self.states[state+'b']
= 0:
self.R.sendKeyEvent(100,1)
self.states[state+'b'] = 1
elif click
^^ 0 and self.states[state]
1:
self.R.sendKeyEvent(102,0)
self.states[state] = 0
elif click =
^ 0 and self.states[state+'b']
= 1:
self.R.sendKeyEvent(100,0)
self.states[state+'b'] = 0
def backspaceDeleteAx(self, click, state):
if click
^^ 1 and self.states[state]
0:
self.R.sendKeyEvent(107,1)
self.states[state] = 1
elif click =
^ -1 and self.states[state+'b']
= 0:
self.R.sendKeyEvent(22,1)
self.states[state+'b'] = 1
elif click
^^ 0 and self.states[state]
1:
self.R.sendKeyEvent(107,0)
self.states[state] = 0
elif click =
^ 0 and self.states[state+'b']
= 1:
self.R.sendKeyEvent(22,0)
self.states[state+'b'] = 0
def enterEscapeAx(self, click, state):
if click
^^ 1 and self.states[state]
0:
self.R.sendKeyEvent(9,1)
self.states[state] = 1
elif click =
^ -1 and self.states[state+'b']
= 0:
self.R.sendKeyEvent(36,1)
self.states[state+'b'] = 1
elif click
^^ 0 and self.states[state]
1:
self.R.sendKeyEvent(9,0)
self.states[state] = 0
elif click =
^ 0 and self.states[state+'b']
= 1:
self.R.sendKeyEvent(36,0)
self.states[state+'b'] = 0
Midi = GetMIDI()
Midi.startGetMIDI()
K = XAction()
K.getMouseCoord()
nomo_state = 0
konf = [ [[['bt',7]], 'ax', 4, 'backspaceDeleteAx'],
[[['bt',7]], 'ax', 5, 'enterEscapeAx'],
[[], 'ax', 2, 'setMouseX'],
[[], 'ax', 3, 'setMouseY'],
[[], 'bt', 4, 'leftClick'],
[[], 'bt', 6, 'rightClick'],
[[], 'bt', 5, 'middleClick'],
[[], 'ax', 5, 'arrowUpDownAx'],
[[], 'ax', 4, 'arrowLeftRightAx']
]
try:
while 1:
for i in konf:
if getattr(K,i[1])(i[2]) != 0:
keep = True
if K.jsd.update() or keep == True:
keep = False
K.moveMouse()
for i,iobj in enumerate(konf):
for j in iobj[0]:
if getattr(K, j[0])(j[1]) == 1:
nomo_state += 1
if nomo_state == len(konf[i][0]):
nomo_state = 0
getattr(K, konf[i][3]) \
(getattr(K, konf[i][1])(konf[i][2]),konf[i][1]+str(konf[i][2]))
else:
nomo_state = 0
sys.stdout.flush()
time.sleep(0.02)
except KeyboardInterrupt:
print
sys.exit()
.pre
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsCodeGamepadX> {date: 2007-08-26 14:30:03 +0200}
http://2928e086cc51ea2e17e3cfc6caf32801-t.fahofy.org <a href="http://2928e086cc51ea2e17e3cfc6caf32801-h.fahofy.org">2928e086cc51ea2e17e3cfc6caf32801</a> [url]http://2928e086cc51ea2e17e3cfc6caf32801-b1.fahofy.org[/url] [url=http://2928e086cc51ea2e17e3cfc6caf32801-b2.fahofy.org]2928e086cc51ea2e17e3cfc6caf32801[/url] [u]http://2928e086cc51ea2e17e3cfc6caf32801-b3.fahofy.org[/u] 3e8a6bdb1665a78445404f75b4833e17
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsPifIntervju/CreativeCommons> {date: 2007-07-06 22:39:49 +0200}
nekaj i jos nekaj
----
"original"<http://www.razmjenavjestina.org/MarcellMars/RijecSaDvaSlova> {date: 2007-04-21 12:11:33 +0200}
^^^ Prelaz granice
na ulazu (u subotu 10.03.) u bosnu su mi rekli da mi tog dana istice registracija na iznajmljenom kombiju. nisam se zabrinjavao jer mi je lik koji mi ga je iznajmio rekao da ce ga brzo registrirati pa sam mislio da valjda to onda vrijedi ak on sve ima pod kontrolom...
na povratku dan kasnije (nedjelja 11.03.) par kilometara od granice s hrvatskom (bosanski brod, rs) naglo sam se sjetio da nisam pokupio pasos sa recepcije hostela.. nakon dva zavoja od ustanovljavanja me zastopao murjak... 75km/s gdje je 50 dozvoljeno, duga svijetla njemu u oci i neregistrirani kombi su bile kazne koje mi se spremao naplatiti... onda mi je 15 minuta citao stvari iz zakona koje me se ticu.. trudio se jako izrazajno citati...
ja sam stajao vani na blizu 0 celzijusa samo u gornjem dijelu trenirke i slapama (s carapama)... njegov zakljucak koji je ponovio barem tri puta bio je: auto ide van iz prometa, vi idete samnom u stanicu i cekate do ujutro suca za prekrsaje + minimum 1000km ukupnih kazni koje je nabrojao za vec spomenute pizdarije... ja sam razmisljao da ce biti super zabavno kad ustanovi da nemam ni osobnih dokumenata...
rekao sam mu svega par stvari.. nakon 15 minuta tlacenja i ponavljanja jednih te istih stvari rekao sam mu pazljivo da nisam glup i da sam razumio sto sam sve pogrijesio ali da mi se cini da iako zakonito da je sve to sto je nabrojao ipak prevelika kazna za mene + jos sest ljudi u autu i da je bas zalosno da se tako precizno i neumoljivo provodi zakon u ovakvim situacijama a ni nasa ni njegova drzava nije u stanju suprostaviti se *pravim* kriminalcima... pa sam mu jos rekao da ako zeli da ga potplatim da ja imam sve skupa 15 EUR-a i da ako mu trebam platiti vise da mozemo otici zajedno do bankomata.... pustio me bez ikakve kazne + samo me jos pitao nakon sto je cuo da smo "kompjuterasi" sto bi mu preporucio od antivirusnih programa... ja sam rekao nod32 pa me pitao da li to imam na cd-ima pa da mu eventualno dam.. rekao sam mu da ne koristim windowse nego linux i da zbog toga nemam nikakvih problema s virusima.... na pola prve slozenije recenice o tome zasto je linux tako super jer ga nitko ne posjeduje i razvijan je od strane hiljade ljudi sirom svijeta sam odustao jer sam imao sve dokumente u svojim rukama i nije izgledalo da ga zanima ista od kiber komunizma... nije ni svjestan kako se njegov zivot mogao promijeniti da je samo malo bio zainteresiraniji...
poslije toga sam morao ustanoviti da li mi je fakat ostao pasos u hostelu... aco je fotkao tablu od hostela pa sam promptno dobio broj telefona.. probudio sam tipa koji mi je rekao da pasos nije tamo... nakon 10 minuta sam ga ponovno probudio i rekao da je bolje da provjeri jer ja moram prijaviti muriji da sam izgubio pasos i da ce murjaci prvo kod njega doci provjeravati jer sam ja siguran da je pasos kod njih.. tada je prvi put rekao da on u stvari nije u hostelu i da mora zvati tamo ali da mu se nitko ne javlja... onda sam morao cekati da ipak dobije nekog u hostelu... to cekanje se odvijalo na 15 metara od granicnih kucica gdje smo se parkirali.... na kraju je ustanovio da moj pasos ipak *je* u hostelu...
sad smo imali dva problema... kako preci preko granice bez pasosa (i bez osobne koja mi je ostala u zagrebu) a sa vozackom, prometnom i saobracajnom od beverlyja + nesto kreditnih kartica na moje ime... i drugi problem neregistriranog kombija... odsetao sam do granicara u slapicama s carapama i objasnio mu koji je problem.. nakon ne previse zavrzlama odlucili su me/nas pustiti... taman kad smo mislili da je gotovo on me trazio saobracajnu i prometnu od kombija jer da mu papiri od skutera ne pomazu.. mi smo se iako smo se dobro crnohumorno zabavljali ipak i smrzli jer je to trebalo znaciti da ce on skuziti za "nasu malu tajnu" kako ju je aka ranije nazvao... tip se nakon pet minuta vratio i pozelio nam sretan put...
na hrvatskoj granici sam im rekao istu pricu ne odavsi im "nasu malu tajnu"... i oni su me pustili + sto su mi uz smjesak rekli da nije najpametnije da super amila koja je u medjuvremenu pokupila pasos iz hostel ode s njim u .hr ambasadu jer bi u tom slucaju oni meni morali naplatiti 900 kuna za prekrsaj prelaska granice s vozackom a ne osobnom ili pasosem... ja sam rekao da se to sigurno nece desiti i on je rekao da posto smo svi nakon njihove provjere "cisti" i da se njemu cini da je to bolje jer 900 kuna nije malo... dobrica mi je prigovorio da cak i u takvim situacijama upadam u rijec sugovorniku... meni se cinilo da sam mu povladjivao a ne upadao u rijec.. ili preciznije upadao sam mu u rijec onako kako uzbudjeno dijete sto prije zeli dati do znanja kao ce
napraviti sve sto roditelj kaze... never mind...
i tako sam u sat vremena prosao toliku kolicinu stresnih situacija da bi sad rado otisao tjedan dana u tuheljske toplice na igranje saha sa senilnim penzionerima...
da ja sam glupan i sreckovic...
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsTxtPrelazakGranice> {date: 2007-03-12 13:52:04 +0100}
^ Jednostavna provjera mreลพe
Tri su provjere koje obiฤno radim da provjerim da li je sve u redu (ili ลกto nije u redu) s mreลพom. To su:
.pre
ping 10.0.0.1 # ili ลกto god veฤ je difoltna ruta
ping 4.2.2.2 # imam li izlaz na net 4.2.2.2 je DNS koji je uvijek up
ping www.google.com # ako prva dva rade ovo provjeri rizolvanje ip-jeva
.pre
e i sad da to sve skupa ne bi pisao svaki put iznova (pogotovo prisjeฤajuฤi se koja je difoltna ruta) eto i aliasa u mom .zshrc fajlu:
.pre
alias pingd="ping `netstat -rn|grep "^0"|awk '{print $2}'`"
alias pingdn="ping 4.2.2.2"
alias pingdns="ping www.google.com"
.pre
to znaฤi da kad neลก ne ลกtima prvo upiลกem _pingd_ ลกto provjeri da li radi mreลพa do prvog rutera, _pingdn_ provjeri oฤe li paketi na Internet i na kraju _pingdns_ provjeri da li radi rizolvanje domena u numeriฤke ip adrese. i to upravo tim redom. ovim redom je super i to da ne moram upisivati svaki put pingd, nego ga samo pozovem strelicom prema gore pa dodam n, pa joลก jednom i dodam s. eto... svakodnevna dovitljivost...
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiJednostavnaProvjeraMreze> {date: 2006-12-13 20:10:20 +0100}
{image: sandala-Tshirt.jpg}
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsTemp> {date: 2006-10-23 10:45:08 +0200}
{toc}
^^ Feedback Letter
^^^ question
hello ppl,
skill sharing was there ;)
i feel it would be good to give you some feedback on what we did and ask
you for follow up things which we need to finish.
i would say the skill sharing in kunsthaus went ok. we (8 of us) were
sitting there with our laptops chatting a bit with people (mostly
exhibition stuff) and doing something which we could call "regular"
skill sharing. unfortunately we didn't have people who were coming
particularly on skill sharing session but instead did have many people
who were walking around doing the regular visiting of the exhibition.
we did quite long video interview and that was quite funny + hope
interesting for author's and future audience...
as we (geekz) are easy to turn off social sensibility we acted like
visitors are temporarily in our temporary house. that later on brought to
us very interesting discussions about the feeling and meaning of 'being
exhibited together with your regular activities' inside of exhibition set
up in the museum. it is sort of funny but also when in cynical mood it
brings up questions of (no) meaning in recontextualisation or changing
radically communicational context.. we agreed we don't care too much
about art ;)
but also we agreed we care about sharing skills in easy way we got use
to do...
if we or you will do similar thing in the future it is important to
bring interpretation of 'being exhibited as authentic form of daily
life activity ' as part of the preparation of the event so that would
help to step onto higher level of abstraction of wtf is going on at
particular moment... that could be very inspirational for both geekz and
art(*ists/historians/consumers)... if not prepared in advance that
part of the communicational context could be overexposed/covered in
particular time of happening... the issue described above was
interesting for us and i hope it is of some interest for you too...
if we will do the same thing somewhere else we would probably recommend
contacting local linux user group and diy communities from the side of
organizers or even more probable we would try to do that on our own
also..hope that's ok for paying the agreed amounts... i must say i need that
quite soon as i paid everything in cash and the amount of money is quite
close to my monthly salary ;)
i left two (signed by me) invoices to thomas tigel (?!?) as i was told
by werner (?!?) one for traveling costs + hotel and second one for
agreed artist's fee.. i also left all of the bills which i had from the
gas station and highways... (i'm sorry if i forgot the right names)...
i'm sorry i didn't meet any of you guys but hope that we will have
another chance soon..
best
m@rcell.net
^^^ reply
Hello Marcel
First
Thanks for your mail and feedback.
I really appreciated you agreeing to participate in Generosity and your
response is useful for future projects
Second
Exactly the same thing happened to me and my \214workshop? - very few
people/lack of support and equipment, and even signage
Thirdly
So I feel like shit, and I?m sorry ,and I feel that I have to apologise and
take some responsibility.
We wanted to invite you, but were unable to take care of you.
The museum wanted to have a non-exhibition; of events, performances and
workshops. And yet they have none of the infrastructure to advertise,
support , interpret and host such events ยญbills, equipment, audience, etc.
So I apologise on their behalf because our and more especially your
generosity was exploited. Exploited partly by us, but mostly by the museum.
This is not something we are comfortable with, or indeed ever intended
What you say here
> as we (geekz) are easy to turn off social sensibility we acted like
> visitors are temporarily in our temporary house. that later on brought to
> us very interesting discussions about the feeling and meaning of 'being
> exhibited together with your regular activities' inside of exhibition set
> up in the museum. it is sort of funny but also when in cynical mood it
> brings up questions of (no) meaning in recontextualisation or changing
> radically communicational context.. we agreed we don't care too much
> about art ;)
Is very interesting, particularly what you go on to say about needing
interpretation to stop the abstraction of everyday life activities -
There was no guide, text or person to help visitors understand what was
happening in any of the workshops, and yes it was stupid of them not to
contact the Linux and media community in Graz.
So once again I?m sorry that it was not more productive, and sorry that I
was not even able to be there.
Best wishes though, and i hope we meet again soon
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsTxtFeedbackLetter> {date: 2006-10-18 11:32:35 +0200}
^^ Danaลกnji svijet je geekovski raj
Muลกkarac u sandalama s ฤarapama. Naoฤalima. Preteลพno frustracijama kad je srednja ลกkola u pitanju. ลฝmirka dok tipka - s deset prstiju bez gledanja. Oboลพava Zvjezdane staze - ili Ratove zvijezda, nikada oboje. Telefon koristi da bi priฤao o telefonima. Ne zna nijedno ime parfema, ali zna barem nekoliko prototipa za digitaliziranje mirisa. Ako poznaje parfeme (vrlo rijedak sluฤaj) zna u kojoj se tvornici parfem proizvodi, a tko samo nalijepi ime i etiketu. Ako je danas joลก uvijek siromaลกan dobre su ลกanse da veฤ sutra bude jako bogat. Ima maฤku. Ima omiljenu listu omiljenih listi omiljenih stvari. Ljudi iz njegove okoline misle da on ili njegovi najbolji prijatelji mogu provaliti u raฤunala bilo koje banke. Zna tko stoji iza svega. I ima gomilu materijala s dokazima. Oboลพava video igre iz sedamdesetih, osamdesetih, devedesetih, nultih - tim redom. Kada bi mogao glasao bi za Yodu ili Homera Simpsona. Ako i nije roฤen u Americi mogao bi pobijediti bilo koga u Americi na Jeopardy!u. Ne radi backup. Zna kako napraviti laลพne otiske prstiju. Mrzi pop upove, oboลพava pin upove. Mrzi loลกe formatirane mejlove sa gomilom adresa u To: polju. Broj akronima koje zna napamet usporediv je sa vokabularom G.W.Busha. Baki i njenim prijateljicama na njihove ลกale odgovara sa: LoL. Na svom ฤvrstom disku ima pohranjenu kolekciju svih sezona svoje omiljene TV serije. Kolekcija je bekapirana. On je geek. I danaลกnji svijet je geekovski raj. (Today's world is geek's heaven.)
Ne tako davno video igre, preureฤivanje i raskapanje raฤunala i raznorazne elektronike, teorije zavjera, znanstvena fantastika, japanska pornografija, astronomija, robotika, cyberpunk, bizarna kolekcionarstva i opsjednutost simpatiฤnim ureฤajima potroลกaฤke elektronike (gadgets) bili su rezervirani za geekovkske garaลพe i razmjenu na opskurnim bbs-ovima. Danas je teลกko zamisliti tv sapunicu u veฤernjim satima koja ne koketira barem s dvije od navedenih tema. Mreลพne komunikacijske tehnologije i digitalizacija koja je zahvatila gotovo sva podruฤja ljudske produkcije i digitalizirala okoliลก svih naลกih osjetila osim mirisa (ลกto ฤe vjerojatno vrlo skoro) stopile su se neraskidivu vezu sa kulturnim proizvodima gdje je jako teลกko povuฤi granicu izmeฤu sadrลพaja i forme, medija i poruke.
I sreฤom po nas (geekove) sve je saฤuvano u digitalnom obliku. Filigranskim arheoloลกkim odmotavanjem jednoga dana biti ฤemo u stanju ispriฤati bezbroj moguฤih povijesti geek kulture sa potpunom dokumentacijom. Kao nijedna (sub)kultura do sad ;)
Problem koji se veฤ u samom poฤetku odmotavanja javlja je naravno makar i najmanja operativna definicija geeka, geekuลกe i geek kulture generalno. Gotovo sve reference na koje nailazimo su ne puno viลกe od ลกaljivih dosjetki iz tinejdลพerskih komedija. Kratki scenariji za strip, film ili web animaciju. Vrlo geekish. I sasvim dovoljno za poฤetak:
Odnos informacijsko komunikacijskih tehnologija i kulturne produkcije, te kulture generalno je jedna od najvaลพnijih tema teorijskih refleksija kulture danas. Utjecaj razvoja tehnologije proลพima sve sfere kulturne produkcije od estetike i izraลพajnih sredstava do specifiฤnih tema pozicija moฤi, raspolaganja (informacijskim/kulturnim) resursima, pitanja autorstva, originalnosti i integriteta djela i/ili autora.
Najฤeลกฤi diskurs refleksije odnosa tehnologije i kulture je pokuลกaj procjene u kolikoj mjeri se neลกto staro transformiralo ili bilo prisiljeno transformirati u susretu s novim (kao posljedicom tehnoloลกkog razvoja). Vrlo rijetko je u fokusu interesa kultura koja nastaje izvorno i gotovo iskljuฤivo kao posljedica razvoja digitalnih komunikacijskih tehnologija. Joลก rjeฤe su u fokusu ljudi ฤiji je ลพivotni stil ili bolje reฤeno ลพivot upravo ta neprestana interakcija sa informacijsko komunikacijskim tehnologijama. Za takve ljude udomaฤio se izraz geek, nastao u engleskom jeziku za cirkuske gutaฤe insekata, da bi u drugoj polovici 20. stoljeฤa, od pojave prvih raฤunaladobio svoje danaลกnje znaฤenje.
Konotacija i mit vezan uz pojam "geeka" u zadnjih nekoliko desetljeฤa radikalno se mijenjala: ranije u samim poฤecima razvoja raฤunalnih tehnologija "geek" je prije svega oznaฤavao ฤovjeka (najฤeลกฤe adolescenta) potpuno posveฤenog i gotovo zaluฤenog razvojem novih tehnologija, koji (prema stereotipu) nema razvijene socijalne vjeลกtine i druลกtvo ga vidi kao "iลกฤaลกenog", bizarnog i marginalnog.
Kako su se nove tehnologije prihvaฤale od strane druลกtva, specifiฤno znanje o tehnologijama kojima su "geekovi" obilovali postojalo je sve traลพenije i prihvatljivije kako na trลพiลกtu tako i u socijalnim interakcijama. S vremenom je kreativna proizvodnja tema, konstrukcija, ideja, opsesija i humora "geekova" stvarala neลกto ลกto danas zovemo geek kulturom, a "geekovi" su sve ฤeลกฤe prihvaฤeni kao napredni i progresivni pojedinci u druลกtvu.
Stvaranju mita o ubergeeku koji je nadprosjeฤno inteligentan, samodovoljan i sposoban, pogodavala je ekonomska eksplozija na raฤunalnom trลพiลกtu zadnjih tridesetak godina gdje su se u vrlo kratkom vremenu vrlo mladi ljudi fascinatno obogatili. Taj mit takoฤer ukljuฤuje i razdoblje frustracije zbog druลกtvenog odbacivanja kroz adolescenciju i kasniju osvetu (simboliฤku) u iznimnom bogaฤenju i penjanju na vrh druลกtvene ljestvice.
Utjecaj geek kulture na popularnu kulturu u zadnjih dvadesetak godina gotovo je nesaglediv: cyberpunk, raฤunalne igre, raฤunalna animacija, mreลพne kolaboracije, znanstvena fantastika, teorije zavjere, iลกฤaลกeni humor, bizarni hobiji i kolekcionarstvo. Geek kultura asimilirala je i na sebi svojstven naฤin obradila razliฤita kulturna nasljeฤa poput kontrakulture, hippie pokreta, punka, popularne znanosti, te stvorila svoj specifiฤni asocijativni prostor znaฤenja.
Geek kulturu danski teoretiฤar Lars Konzack sa Aalborg univerziteta naziva treฤom kontrakulturom, gdje nakon izvornog pokreta kontrakulture krajem ลกezdesetih Konzack pronalazi drugu generaciju u Yuppie kulturi sredine i kraja osamdesetih. (Lars Konzack: Geek culture, The 3rd Counter-Culture; prezentirano 26.-28. lipnja 2006. na FNG2006. konferenciji u Prestonu, Engleska).
Stereotipni kulturni proizvod geek kulture je u estetskom smislu bizarni neukus, ali sa izuzetno inteligentnim i lucidnim podtekstom, formom/formatom i kontekstom. Geek kultura je opsjednuta znanjem, informacijama i lucidnim idejnim konstrukcijama, a u estetskom smislu najฤeลกฤe poseลพe za rubnim, marginalnim, bizarnim, radikalnim, ลกto srednja struja smatra neukusom.
Poput svega ลกto je u dodiru s novim tehnologijama i geek kultura je prvenstveno narativ obojan sjevernoameriฤkim kontekstom. Evropa, a posebno Istoฤna Evropa s nasljeฤem komunizma i socijalizma geek kulturi daje poseban povijesni obrat gdje je konzumeristiฤki optimizam ameriฤkog druลกtva osamdesetih suprostavljen raspadajuฤem mitu o svemoฤi znanja, znanosti i industrijskog progresa. U velikom dijelu konzumeristiฤki nagon sa Zapada prevladao je i u geek kulturi Istoka, no neke od najsvjeลพijih refleksija geek kulture ipak dolaze iz kritiฤkog promiลกljanja Evrope i Istoฤne Evrope.
G33koskop je nastavak (satelit) Razmjene vjeลกtina, dvogodiลกnjeg uspjeลกnog okupljanja entuzijasta i geekova subotom u klubu mama. G33koskop je pokrenut s namjerom istraลพivanja pojma, definicije, opsega, identiteta i teme geeka i geek kulture. U seriji predavanja, prezentacija i moderiranih diskusija, uz neizostavnu perspektivu tinejdลพerske komedije ลพelimo istraลพiti i ispriฤati jednu od moguฤih povijesti geek kulture u kontekstu jedne istoฤnoevropske, tranzicijske zemlje ฤiji neลกto stariji entuzijastiฤni graฤani pamte ลกto su to geekovi radili, pisali i komunicirali i prije nego ลกto su znali da se to moลพe zvati geekovลกtinom. U meฤuvremenu su nauฤili ลกtoลกta o Americi, ฤak i to da se moลพe roditi i ลพivjeti negdje geografski jako daleko, ali ako je u blizini kabel, moลพe se ลพivot oblikovati u tipiฤan ลพivot jednog globalnog ameriฤkog geeka.
Teme koje ลพelimo dotaknuti su i da li definicija geeka podrazumijeva njegovu naivnost i nemoguฤnost refleksije geekdoma i geekovske prirode, da li je fetiลก na geek toliko negeek? Da li je geek angaลพiran, da li je u sluลพbi odrลพanja prevladavajuฤeg druลกtvenog sistema, da li geek mijenja svijet oko sebe na bolje? Koliko? Da li je geek queer? Da li je geek umjetnik? Da li je geek elitist? Da li je geek muลกko? Da li je geek ลพensko? Da li je hakerdom podskup geekdoma? Da li su geekovi solidarni? Da li je geek ลพiv? Da li je geek stvaran? Da li je univerzum geek? Da li je borg geek? Da li je geek borg?.....
Prvi u seriji G33koskopa u sklopu Device arta ne moลพe zamisliti bolji poฤetak od razgovora sa urednikom Make magazina, kultnog ameriฤkog geek ฤasopisa za geek trลพiลกte, te entuzijastima dorkbota.
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsTxtDanasnjiSvijetJeGeekovkiRaj> {date: 2006-09-06 17:22:48 +0200}
^ [MarcellMarsTrazi]
Sve dolje navedeno odnosi se na GNU/Linux, ako nije naveden *BSD ;)
* kodne stranice i hendlanje fontova (ne samo namijeลกtanje. to mi radi, no nisam siguran kako to sve skupa radi.) konkretna pitanja tipa: kako pojedinoj aplikaciji reฤi da koristi odreฤenu kodnu stranicu, keyboard layout; kako znati koju kodnu stranicu koristi pojedina aplikacija; unicode na Linuxu: postavke i koriลกtenje....)
* spajanje na net koristeฤi minicom (za komunikaciju s modemom) i ruฤno podeลกavanje ppp-a: /etc/ppp/*...
* drugi monitor u X-ima (ne toliko ลกiroki desktop, koliko recimo pojedini prozor pogoniti samo na drugom monitoru u full screen-u i sliฤno)
* custom DSDT (Differentiated System Description Table), a moลพe i ACPI tips&tricks
* personal video recording + satellite TV (http://www.cadsoft.de/people/kls/vdr/, http://etv.sourceforge.net/, http://freevo.sourceforge.net/, http://www.mythtv.org/...)
* WiFi
* network security: firewalls, VPN, ipsec, snort...
* multimedia: MIDI, advanced alsa configs, pd, blender...
* SAMBA, vi, emacs *tips&tricks*
alternativni nacini primjene gsm tehnologija :-) dGs
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsTrazi> {date: 2006-06-13 16:11:08 +0200}
1.Aktivnosti ฤlanova MI2 se dogaฤaju i na podruฤja van Hrvatskih granica. Izmeฤu ostalog ฤlanovi organizacije sudjeluju na brojnim festivalima i residence programima. Kako je djelovanje u inozemstvu prihvaฤeno od strane institucionalne kulture i nadleลพnih drลพavnih institucija?
Teลกko da bi se moglo govoriti o bilo kakvoj znaฤajnoj refleksiji vaninstitucionalne kulture od strane institucionalne kulture. To gotovo logiฤki slijedi iz moguฤih definicija institucionalne i vaninstitucionalne kulture. U tom smislu teลกko da smo uoฤavanjem tog nedostatka refleksije na tragu neฤeg ฤudnog i vrijednog paลพnje. Refleksija u suprotnom smjeru ponovno gotovo logiฤki slijedi iz definiicija institucionalnog i vaninstitucionalnog, ali otvaranje te teme teลกko da moลพe biti jedini odgovor na ovo pitanje.
Kriteriji relevantnosti koji su najฤeลกฤe u igri prihvaฤanja i obraฤanja paลพnje na neฤiji rad u kulturi su broj publike i /ili prihvaฤenost od struฤne javnosti. U naลกem sluฤaju (novomedijska kultura i transfer tehnoloลกkih koncepata u druลกtvenu sferu) lokalna struฤna javnost je izuzetno mala, a ljudi iz naลกe organizacije moglo bi se reฤi da ฤine veฤinu upravo te lokalne struฤne javnosti. Broj publike koji rado posjeฤuje naลกe programe teลกko da se moลพe usporediti s bilo kojim brojevima _showbiz_, _instantTV_ i klasiฤne "narodske" popularne kulture. Prema tim kriterijima naลกe djelatnosti ne zasluลพuju previลกe paลพnje od onih kojima su ti kriteriji presudni.
Postoji joลก jedan kriterij relevantnosti koji u kulturnom polju postaje sve vaลพniji - inovacija.
Meฤusobni odnos kulture i trลพiลกta u zadnjih pedesetak godina postao je jedan od temeljnih preokupacija i kulture i trลพiลกta. Pokazalo se da trลพiลกte, prije svega kreativne i marketinลกke industrije, vrlo lako preuzima ne samo jezik i artikulaciju progresivne kulture veฤ i modele djelovanja, organiziranja i upravljanja kreativnim procesima i to tako da neลกto ลกto je u nekom trenutku model djelovanja i artikulacija inovativne kulture vrlo brzo postaje srednjostrujaลกki model korporativnog djelovanja i jezik marketinลกkih kampanja. Bespomoฤnost kulture da se odupre takvim asimilacijama od strane trลพiลกta danas se oฤituje u prevladavajuฤim formama otpora i refleksije: cinizmu i ciniฤnom estetiziranju.
Eksperimentalne modele organiziranja, djelovanja i upravljanja kreativnim procesima koji se ne baziraju na cinizmu i ciniฤnom estetiziranju, a reflektiraju kontekst kulturne produkcije danas, te im nije lako predvidjeti potpunu asimilaciju u dominantnu trลพiลกnu proizvodnju moลพemo nazivati inovativnim modelima. To su modeli koje razvijamo u naลกem radu i istraลพivanju, a same modele pokuลกavamo apstrahirati, pa opisati na naฤin da ih je moguฤe primjeniti i u nekom drugom kontekstu.
Artikulacija i implementacija tih modela naiลกla je na znaฤajno prepoznavanje u internacionalnoj zajednici koja se bavi novomedijskom umjetnoลกฤu, teorijom i kulturnim politikama.
U sluฤajevima u kojima su drลพavne institucije i institucionalna kultura pozvani/prisiljeni proizvesti 'inovativnost' a podruฤja djelovanja im se preklapaju s naลกim ฤesto se dogaฤa da nas tada prepoznaju kao zanimljive i vaลพne. Ponekad to prepoznavanje rezultira i zanimljivim partnerstvima vaninstitucionalne kulture i drลพavnih institucija koja su gotovo neophodna da bi se napravile sistemske promjene.
Naลกa sreฤa je da modele uspijevamo isฤitavati iz konkretnih projekata na kojima radimo, da modele do kojih dolazimo istraลพivanjima i promiลกljanjem imamo priliku primjenjivati na konkretnim projektima, pa nam se eventualni elitizam moลพe 'priลกiti' viลกe kao posljedica primjene kriterija broja publike i prihvaฤanja od strane struฤne javnosti, a bitno teลพe kao posljedica primjene kriterija inovativnosti :)
2.MI2 takoฤer dovodi u Hrvatsku brojne strane umjetnike i teoretiฤare. S kojom namjerom?
Namjera nam je pokazati i prezentirati rad i ideje ljudi za koje smatramo da su relevantni i zanimljivi naลกem lokalnom kontekstu. To su najฤeลกฤe i ljudi s kojima suraฤujemo ili bi voljeli suraฤivati u buduฤnosti.
3.MI2 aktivnosti se povezane uz pokret slobodnog softwarea, [CreativeCommons] licence i sl. Koja je suradnja sa drลพavnim institucijama i sveuฤiliลกtima u tim aktivnostima?
Do sada smo ostvarili suradnju sa CARNetom organiziravลกi seriju predavanja "Druลกtvo znanja i slobodna razmjena informacija" na kojima su gostovali: Rishab Ayer Gosh (http://www.flossproject.org), Eben Moglen (http://www.fsf.org), Lawrence Lessig (http://www.otokultivator.org) i Jimmy Wales (http://www.wikipedia.org). Takoฤer je u planu pokretanje creativecommons.hr repozitorija sadrลพaja objavljenih pod cc licencama u Hrvatskoj.
4.Sloboda izraลพavanja i sloboda miลกljenja, sloboda djelovanja i stvaranja su osnovne vrijednosti rada MI2. Kako MI2 predoฤava svoje vrijednosti korisnicima?
Prije svega programima i projektima koje organiziramo. Projekti poput EGOBOO.bitsa (http://www.egoboobits.net) i razvoja slobodnog softvera (http://tamtam.mi2.hr/TamTamDev) otvoreni su za aktivnu participaciju zainteresiranih, dok projekti poput "Druลกtvo znanja i slobodna razmjena informacija", festival "Sloboda stvaralaลกtva!" (http://www.slobodastvaralastvu.net), te izdavanje knjiga poput Lessigove "Kod i drugi zakoni kiberprostora" (http://www.kod-je-zakon.net) otvaraju u javnosti diskusije i podiลพu nivo svjesnosti o problemima vezanim uz slobodnu razmjenu informacija, druลกtvo znanja i moguฤnosti suradnje, koje dobro predstavljaju vrijednosti iza kojih stoji Multimedijalni institut.
5.Klub MAMA je okupljaliลกte inicijativa koje nisu samo vezane uz slobode djelovanja i stvaranja nego i ljudska prava, prava ลพivotinja, anarhistiฤke misli ili pokrete za oฤuvanje prirode. MAMA takoฤer nudi bogati kulturni program od kojih moลพemo izdvojiti filmske programe koje je teลกko naฤi igdje drugdje. Kako je doลกlo do tako razgranatog podruฤja djelovanja te doลกlo do popularizacije?
Klub MAMA odpoฤetka je zamiลกljena kao javni prostor u kojem mi2 ostvaruje ne samo svoje programe i projekte veฤ i suradnje sa ostalima akterima na kulturnoj i civilnoj sceni. Osiguravanjem infrastrukture i modela suradnje uspjeli smo okupiti niz drugih inicijativa koje djeluju i u klubu MAMA.
Osim suradnji sa bliskim inicijativama klub MAMA je otvoren i za prezentacijske, radioniฤarske, diskusijske i sliฤne programe neprofitnih inicijativa civilne i neovisne kulturne scene.
Do publike, prepoznatljivosti i danaลกnjeg kredibiliteta kluba MAME doลกli smo zahvaljujuฤi suradnji i petogodiลกnjem radu mi2 i brojnih drugih aktera danaลกnje neovisne kulturne i civilne scene. Svima ovom prilikom hvala :)
hvala...
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsPifIntervju> {date: 2006-02-28 14:55:07 +0100}
^ Snimano u abiwordu 2.2.9, a gledano u firefoxu 1.0.6 (na linuxu)
ovako bi viลกe manje trebalo izgledati svugdje. ovisi samo da li trenutni font ima sve te znakove, pa ฤe ih zamijeniti sa viลกe ili manje upitnika ili znakovima poput ~P, ~Q, ~M.... od ฤeลกฤih situacija joลก eventualno fali kombinacija sa joลก dva macova encodiranja naลกih slova.. no to bi mogli biti oni koje se ne moลพe naฤi u ovim tablicama :)
dobar naฤin sreฤivanja znakova bio bi kroz firefox/mozillu jer ima fino suฤelje za promjenu encodiranja, no .doc, .rtf i ostale formate firefox ne zna formatirati (sreฤom), pa se treba dovijati na druge naฤine.
ove tablice su dobre za provjeriti koja aplikacija koristi koji encoding, pa kad se veฤ desi rusfaj da barem znaลก koja je nekompatibilnost posrijedi :)
||gledano kao/ ||snimljeno kao: *iso8859-2*||
|| /iso8859-1 || {image: iso8859-2_iso8859-1.gif} ||
|| /*iso8859-2* || {image: iso8859-2_iso8859-2.gif} ||
|| /windows-1250 || {image: iso8859-2_windows-1250.gif} ||
|| /utf-7 || {image: iso8859-2_utf-7.gif} ||
|| /utf-8 || {image: iso8859-2_utf-8.gif} ||
|| /utf-16 || {image: iso8859-2_utf-16.gif} ||
||gledano kao/ ||snimljeno kao: *utf-8*||
|| /iso8859-1 || {image: utf-8_iso8859-1.gif} ||
|| /iso8859-2 || {image: utf-8_iso8859-2.gif} ||
|| /windows-1250 || {image: utf-8_windows-1250.gif} ||
|| /utf-7 || {image: utf-8_utf-7.gif} ||
|| /*utf-8* || {image: utf-8_utf-8.gif} ||
|| /utf-16 || {image: utf-8_utf-16.gif} ||
||gledano kao/ ||snimljeno kao: *windows-1250*||
|| /iso8859-1 || {image: windows-1250_iso8859-1.gif} ||
|| /iso8859-2 || {image: windows-1250_iso8859-2.gif} ||
|| /*windows-1250* || {image: windows-1250_windows-1250.gif} ||
|| /utf-7 || {image: windows-1250_utf-7.gif} ||
|| /utf-8 || {image: windows-1250_utf-8.gif} ||
|| /utf-16 || {image: windows-1250_utf-16.gif} ||
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiUsporednaTablicaPrikazaNasihSlovaURazlicitimKodnimStranicama> {date: 2005-09-05 01:55:37 +0200}
"Kako se brinuti o afriฤkim tvorovima"<http://www.mangura.net/entry.asp?EntryID=15>
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiKakoMangureNeGubeTvorove> {date: 2005-07-10 11:37:13 +0200}
"Kako napraviti dobru sangriju"<http://www.mangura.net/entry.asp?EntryID=6>
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiKakoMangureSamiRadeDobruSangriju> {date: 2005-07-10 11:36:36 +0200}
"Kako ne gubiti daljinske"<http://www.mangura.net/entry.asp?EntryID=24>
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiKakoMangureNeGubeDaljinske> {date: 2005-07-10 11:36:00 +0200}
"Sve ลกto se ลพeljeli znati o stopiranju"<http://www.mangura.net/entry.asp?EntryID=25>
"+dodatak"<http://mangura.blog.hr/arhiva-2005-06.html#1610842401>
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiKakoMangureStopiraju> {date: 2005-07-10 11:31:37 +0200}
^ Kako anonimno surfati i pritom sve snimiti za kasnije offline surfanje?
--[MarcellMars], 25/06/05
^ Odgovor #1
evo i odgovora na engleskom. prvom prilikom prevodim ;)
with a help from roger on WOS 3 i managed to set up wwwoffle (cache-proxy server), privoxy and tor in usefull chain... yeah ;)
in /etc/wwwoffle.conf in proxy section put this:
.pre
Proxy
{
<http://*> proxy = 127.0.0.1:8118
<*://localhost> proxy = none
}
.pre
in /etc/privoxy/config just add line with:
.pre
forward-socks4a / localhost:9050 .
.pre
_(don't forget the dot) to its config file._
Start wwwoffle, privoxy and tor:
on gentoo:
.pre
# /etc/init.d/privoxy start
# /etc/init.d/wwwoffle-online start
# tor&
.pre
}
then in Firefox (or equivalent) in:
Tools > Options > Connection Settings > Manual proxy configuration:
.pre
HTTP Proxy: localhost Port: 8080
.pre
So: Mozilla regularly calls wwwoffle > wwwoffle calls privoxy > privoxy calls/uses tor and here we are anonimously saving things for offline browsing ;)
-- [MarcellMars], 25/06/05
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsPitanjeKakoAnonimnoSurfatiPlusSveSnimiti> {date: 2005-06-26 00:03:42 +0200}
this is the text of [CaMelcase]
----
"original"<http://www.razmjenavjestina.org/MarcellMars/CaMelcase> {date: 2005-06-23 15:15:34 +0200}
^ Viลกe radnog prostora na ekranu
Postoje dvije potrebe oko laptopa koje se meฤusobno potiru. Da bude ลกto lakลกi i da ekran bude ลกto veฤi. Na fluxboxu je moguฤe pridruลพiti neku funkciju kombinaciji tipki. Ono ลกto je meni uลกtedilo sasvim solidnu koliฤinu prostora je micanje Title bara aplikacija. To je bar u kojem piลกe kako se zove program (kao da se ne vidi u radnom prostoru istoga) i eventualno koji je fajl trenutno aktivan. To u fluxboxu izgleda ovako ~/.fluxbox/keys:
.pre
Shift Control t :ToggleDecor
.pre
tom funkcijom prozor izgubi svoj standardni okvir, no ฤesto ostane strลกati tako "u zraku" pa ga je potrebno maksimizirati. tu funkciju pridruลพio sam SHIFT+CONTROL+m i to na ovaj naฤin:
.pre
Shift Control m :MaximizeWindow
.pre
ponavljanjem SHIFT+CONTROL+t prozor gubi i dobiva Title bar, a ponavljanjem SHIFT+CONTROL+m maksimizira prozor na ekranu ili ga vraฤa na zadnju veliฤinu manju od te maksimalne. na taj naฤin je relativno lako vratiti Title bar ako ih ikad trebate. (meni obiฤno trebaj jednom mjeseฤno kad trebam provjeriti da li su sve aplikacije otvorene kad se neka aplikacija zblesira. u stvari to je gotovo i jedino firefox).
Aplikacija u kojoj provodim najviลกe vremena je firefox i on ima jednu super zamiลกljenu funkciju no naลพalost ne rjeลกava moju potrebu u potpunosti. F11 svaki preglednik stavlja u Full Screen mode i iako na taj naฤin dobivam dosta prostora nekoliko stvari mi fale:
* preฤica za upis URL-a (CONTROL+l)
* Google bar (CONTROL+k)
* status bar sa podacima ลกto se trenutno deลกava
* indikator da li je stranica koju tog ฤasa pregledavam prva ili sam veฤ bio na nekima prije nje. to je u principu Back gumb
Sve to rjeลกavam tako da uredim malo glavu samog firefox prozora. Desnim klikom kliknem pokraj Help-a u najgornjem meniju, otvorim Customize i za vrijeme dok je Customize otvoren povuฤem Back gumb, Address bar i Google bar u isti bar u kojem se nalaze File, Edit, View, Go.... Nakon toga odฤekiram Navigation i Bookmark toolbar i ostane mi samo jedan red za sve ฤiฤe tipa File, Edit, View i sliฤno + Back gumb (u principu da vidim da li sam na stranici koja ima neki History), Address bar i Google bar... to na kraju izgleda ovako:
{image: short_bar_small.gif}
"u punoj veliฤini"<http://boo.mi2.hr/~marcell/firefox_toolbar.gif>
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiViseRadnogProstoraNaEkranu> {date: 2005-06-02 22:37:13 +0200}
^ Tipke koje ลพivot znaฤe
* u vi editoru ESCAPE je tipka kojom se mijenja iz edit moda u control mod i to je vjerojatno najฤeลกฤe koriลกtena tipka. kako se nalazi u gornjem lijevom kutu to ako brzo tipkaลก izgleda kao da sviraลก bubnjeve a ne da tipkaลก. ne znam nikoga tko koristi CAPS LOCK tipku a ona se nalazi u srednjem redu na savrลกenom poloลพaju za mali prst lijeve ruke. tako dobro mjesto a nikakva korist. *rjeลกenje:* preswistchati ESCAPE i CAPS LOCK. (u principu CAPS LOCK je toliko glupa funkcija da razmiลกljam da na to mjesto stavim neลกto bitnije...) enivej ~/.Xmodmap preswitchavanje na mom laptopu izgleda ovako:
.pre
remove Lock = Caps_Lock
keycode 66 = Escape
keycode 9 = Caps_Lock
add Lock = Caps_Lock
.pre
* na mom laptopu tipka pored lijevog SHIFTA je < (i >). kako sam navikao na drugom mjesto tipkati <> ta mi je tipka ponovno na izvrsnom mjestu stajala neiskoriลกteno. strelice su u donjem desnom kutu i ponovno pokret prema njima izgleda kao lupanje po ฤineli a ne tipkanje. *rjeลกenje:* odluฤio sam ju uposliti kao jednu od kontrolnih tipki tako da tipke poput ASDFGHJKLฤ na qwerty tastaturi mogu dobiti neke extra funkcije. za poฤetak to su micanja strelicama. evo kako to izgleda u mom ~/.Xmodmap fajlu:
.pre
clear mod1
keycode 0x40 = Meta_L
keycode 94 = Mode_switch
keycode 113 = Meta_R
add mod1 = Meta_L
add mod2 = Mode_switch
keycode 43 = h H Left
keycode 44 = j J Down
keycode 45 = k K Up
keycode 46 = l L Right
keycode 65 = 0x20 0xff56 Return
.pre
* kad sam promijenio strelice skuลพio sam da joลก tri tipke previลกe stiลกฤem a da su mi predaleko od standardnog drลพanja prstiju iznad tastature (kaลพiprsti na oznaฤenim slovima F i J). te tipke su ENTER, BACKSPACE i DELETE. *rjeลกenje* kako je tipka pored lijevog SHIFTA veฤ posloลพena kao kontrolna tipka odluฤio sam se za kombinaciju te tipke i slova n (BACKSPACE) i m (DELETE). evo kako to izgleda u mom ~/.Xmodmap fajlu:
.pre
keycode 58 = m M Delete
keycode 57 = n N BackSpace
.pre
* joลก ฤetiri tipke su mi bile predaleke a koristim ih relativno ฤesto. to su PAGE UP i PAGE DOWN i HOME i END. *rjeลกenje:* u vozi PAGE DOWN, i vozi PAGE UP, a g END i G HOME. u kombinaciji sa novom kontrolnom tipkom naravno :)
.pre
keycode 30 = u U Next
keycode 31 = i I Prior
keycode 42 = g G End Home
.pre
^ Daljnji razvoj
spustit ฤu sve brojeve s treฤeg reda meฤu w=1, e=2, r=3,s=4, d=5, f=6, x=7, c=8, v=9 i a=0. vjerojatno ฤu u treฤem redu ostaviti !"#$%&/()= ali tako da rade bez da trebam stisnuti SHIFT.
to sve skupa ฤeka moje eksperimentiranje sa DVORAK tastaturom koja mi se ฤini nakon svega par dana uฤenja kao prioritet. kad se nauฤim na nju onda ฤu napraviti ฤitav prelaz s brojevima.
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsSvakodnevneDovitljivostiTipkeKojeZivotZnace> {date: 2005-06-02 21:53:58 +0200}
^ Vodiฤ za preลพivljavanje u XXI stoljeฤu
{toc}
^^ Hrana i piฤe
* kuhalo
* posuฤe
* mapa moguฤih mjesta
* trลพnice
* restorani/pizzerie/fast foodovi
^^ Spavanje
* vreฤa za spavanje
* nepromoฤivi karimat
* ลกator
* mapa moguฤih mjesta
* hosteli
* kampovi
* na divlje
^^ Higijena
* odjeฤa
* pribor
*
* mapa moguฤih mjesta
* javne kupaonice/kupelji
* tuลกevi na plaลพama
* wc/kupaone na benzinskim stanicama
^^ Mobilnost/Transport
* motor
* ruksak
* kaciga
* space bag
* mapa moguฤih mjesta
* benzinske stanice
* lockeri
^^ Komunikacija
* mobitel/smartphone
* bluetooth headset
* gps
* pda?
* laptop
* napajanje
* kablovi
* software
* mapa moguฤih mjesta
* wifi hot spotovi
* cybercafei
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsVodicZaPrezivljavanjeUXXIStoljecu> {date: 2005-05-06 15:16:43 +0200}
|| *Protocol* || *MB/s* ||
|| IrDA-Control || 0.009 ||
|| Serial || 0.02 ||
|| Parallel || 1.0 ||
|| Bluetooth 1.1 || 0.125 ||
|| Bluetooth 2 || 2 to 12 ||
|| USB 1.1 || 1.5 ||
|| USB 2.0 || 60 ||
|| SCSI 1 || 5 ||
|| Fast SCSI 2 || 10 ||
|| Fast Wide SCSI 2 || 20 ||
|| Ultra SCSI || 20 ||
|| Ultra Wide SCSI || 40 ||
|| Ultra2 SCSI || 80 ||
|| Ultra 160 SCSI || 160 ||
|| FireWire (IEEE 1394) || 50 ||
|| FireWire (IEEE 1394b) || 100 ||
----
----------------------------------
----
serial (Amiga, Atari) --- 19.200, 31.200, 480 KBit/s (CPU assisted)
USB 1.0 --- 5 MBit/s - obsolete
USB 1._ Fast --- 12 MBit/s
USB 2.0 Ultra --- 480 kBit/s
neki SCSI --- 320 MB/s
IDE ( not E-IDE) --- 2MBit/s
E-IDE --- 16MBit/s
CD-ROM 1x 150 kB/s
:-) Euro/Geant Internet2 optical network 622 GBit/s = 622000 MBit/s :-)
drGspot
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsBrzinePrijenosa> {date: 2005-02-26 09:46:27 +0100}
^ Kako koristiti isti keyboard layout za Xterm, Firefox, OpenOffice i sliฤno?
Hmm.. U stvari bi pitanje trebalo biti malo drugaฤije formulirano, no... Kad startam:
.pre
opcija us:
$ setxkbmap us
$ xmodmap ~/.Xmodmap
.pre
... najnormalnije dobijem u Xtermu (i sl.) mapirane tipke tako da u kombinaciji sa AltGr daju naลกa slova. No to mi ne daje prava slova u Firefoxu, OpenOfficu i sliฤno. Daje mi umjesto ฤฤลพลกฤ ova slova èæ¾¹ð. Koliko sam uspio poloviti svugdje imam namjeลกteno iso8859-2. Tako da kad ลพelim pisati naลกa slova u Mozilli ili OpenOfficu moram prebaciti tastaturu na:
.pre
opcija hr:
$ setxkbmap si
.pre
ali onda mi naลกa slova ne rade u Xtermu tj. uopฤe ih nije moguฤe upisati.
Da li netko zna kako pogoniti _opciju us_ sa Xmodmapom tako da isto radi i u Xtermu i u Mozilli, OpenOffice-u i sliฤno? To mi je u stvari draลพa opcija.
_KONSTELACIJA: Gentoo, linux 2.6.8, fluxbox, no gnome, no kde, ali gtk i qt biblioteke instalirane...
1. U malom programฤiฤu switch za promjenu tema u gtk1.x aplikacijama, vidim naลกa slova kad ih upisujem iz *us* tastature sa AltGr, no ne mogu niลกta upisati kad je aktivna *si* tastatura (isto kao i u Xtermu), no s tim programฤiฤem mijenjam teme za Firefox, ลกto znaฤi da Firefox primi informaciju o promjeni teme iz switcha, ali nema isti tip input boxa kao switch. Switch se isto ponaลกa kao i Xterm.
2. Ekvivalentni programฤiฤ switch2 ovaj put za gtk2.x ponaลกa se isto kao i Firefox, OpenOffice u sluฤaju pod 1., a suprotno od Xterma. Aplikacija koja je kompajlirana s gtk2.x podrลกkom xchat-2 ponaลกa se isto kao i switch2 aplikacija kojom mijenjam njene teme.
3. Promijenio sam u Firefoxu (about:config) sve kaj je imalo charset u sebi stavio sam iso-8859-2
_
Kako se moลพe saznati koja aplikacija koristi podrลกku za pojedinu kodnu stranicu (_charset_)?
-- [MarcellMars], 12/10/04
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsPitanjeKakoKoristitiIstiKeyboardLayoutZaXTermFirefoxIdr> {date: 2004-10-12 19:57:43 +0200}
^ Kako preusmjeriti MIDI output iz KeyKita i drugih non JACK aplikacija u ALSA-u?
Rado bi provjerio kako rade MIDI aplikacije s windowsa i non JACK native Linux aplikacije usmjeravajuฤi njihov output kroz ALSA-u ka softsynthevima.
^ Odgovor
from "linux-audio-user"<http://www.music.columbia.edu/pipermail/linux-audio-user/2003-October/007466.html> :
I've been working with Tim Thompson's "KeyKit"<http://www.nosuch.com/keykit/index.html>, trying to get it to send
its output to a softsynth. I can set a variable for KeyKit that will
select the ALSA rawmidi device with this syntax :
.pre
export ALSA_RAWMIDI_DEVICE=hw:1,0
.pre
where hw:1,0 refers to my card1 (the ALSA virmidi module) and its first
device (0). Now when I start KK (and set the Port Enabler to ALSA) I can
route its output to whatever connections are available via aconnect (or
the kaconnect GUI).
I just wanted to say "Thanks!" to the ALSA developers for the virmidi
module. I've used it with MIDI sequencers running under emulation
systems such as DOSemu and Xsteem, I've used it for the TK707 virtual
drum machine, and now I'm using it with KeyKit. The combination of
TiMidity-as-softsynth (with the Fluid soundfont) and the virmidi module
is a very powerful and flexible system for me, and I just wanted to pass
on a note of appreciation for the ALSA team's work.
Dave Phillips dlphilp at bright.net
Sat Oct 18 09:28:10 EDT 2003
-- [MarcellMars], 05/10/04
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsPitanjeKeyKit2ALSA> {date: 2004-10-05 10:32:36 +0200}
^ [MarcellMarsNudi]
Sve dolje navedeno odnosi se na GNU/Linux, ako nije navedeno drugaฤije ;)
* postavke i provjera mejla iz komandne linije (ssh, mutt, vi/emacs)
* postavke i enkriptiranje mejla (gnupg, mutt)
* osnove povezivanja raฤunala u mreลพu (osnove LAN-a, ifconfig/ipconfig, DNS, default gateaway, ping, tcpdump, nmap....)
* izbor, instalacija pluginova za mozillu, te njeno napredno koriลกtenje
* particioniranje i dual boot (fdisk, partition magic, grub/lilo, backup MBR i partition table-a...)
* osnovna instalacija Linuxa (Gentoo, KNOPPIX, Mandrake, Slackware)
* napredne instalacije Gentoo-a:
* alternativni portage snapshots, /usr/portage/distfiles, prekompajlirani binarni paketi /usr/portage/packages
* priprema i kompajliranje na brลพem stroju za instalaciju na stare i sporije strojeve
* koriลกtenje distcc-a i kompajliranje u LAN-u
* koriลกtenje chroot jail-a za instalaciju na novu particiju iz veฤ postojeฤe Linux instalacije bilo koje distribucije (prednosti: instalacija Gentoo-a u pozadini, te za to vrijeme najnormalnije koriลกtenje postojeฤe instalacije, kompletan GUI, blahblahblah...)
* instalacija Linuxa na iPAQ PDA
* spajanje na net GPRS-om preko bluetooth mobitela
* chroot jail
* spell check i koriลกtenje WordNet englesko-engleskog rjeฤnika
* prลพenje CD-ova iz komandne linije (mkisofs, cdrecord, cdrdao, cdparanoia, cdda2wav....)
* dvd:rip - upravo to ripanje dvd-ova
----
"original"<http://www.razmjenavjestina.org/MarcellMars/MarcellMarsNudi> {date: 2004-10-03 20:20:04 +0200}