App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/simpleedit15.pl view on Meta::CPAN
SocialCalc.Callbacks.expand_wiki = function(displayvalue, sheetobj, linkstyle, valueformat) {
var subtype = valueformat.substring(9); // stuff after text-wiki
var result = "";
var matches, url, scestring;
switch (subtype) {
case "":
result = SocialCalc.default_expand_markup(displayvalue, sheetobj, linkstyle);
break;
case "-pagelink":
matches = displayvalue.match(/\\[(\\S+)\\s+(.+)\\]/);
if (matches) {
url = encodeURI(matches[1]);
scestring = SocialCalc.special_chars(matches[2]);
}
else {
matches = displayvalue.match(/\\[(.*)\\]/);
if (matches) {
url = encodeURI(matches[1]);
scestring = SocialCalc.special_chars(matches[1]);
}
else {
url = encodeURI(displayvalue);
scestring = SocialCalc.special_chars(displayvalue);
}
}
result = '<a href="?pagename='+url+'" target="_blank">'+scestring+'</a>';
return result+ '<img src="'+spreadsheet.imagePrefix+'sc-wikilinkflag.gif" title="Link to other wiki page" alt="Link to other wiki page">';
default:
result = SocialCalc.special_chars(valueformat+": "+displayvalue);
break;
}
return '<img src="'+spreadsheet.imagePrefix+'sc-wikiflag.gif" alt="Wikitext" title="Wikitext">' + result;
}
// Page link code
SocialCalc.Callbacks.MakePageLink = function(pagename, workspace, linktyle, valueformat) {
var result = "";
if (workspace) {
result = "?&workspace=" + encodeURI(workspace) + "&pagename=" + encodeURI(pagename);
}
else {
result = "?&pagename=" + encodeURI(pagename);
}
return result;
}
// Additional formula functions
var funccache = {};
var functimer = null;
var funcquery = "";
SocialCalc.Formula.SocialtextFunction = function(fname, operand, foperand, sheet) {
var value1, t;
var scf = SocialCalc.Formula;
var query = "a="+foperand.length;
var num = 0;
while (foperand.length > 0) {
value1 = scf.OperandValueAndType(sheet, foperand);
t = encodeURI(value1.type);
num++;
query += "&a"+num+"="+t+":"+encodeURI(value1.value);
}
if (funccache[query]) { // got this already
t = funccache[query].indexOf(":");
if (t) {
scf.PushOperand(operand, funccache[query].substring(0,t), funccache[query].substring(t+1));
}
else {
scf.PushOperand(operand, "t", "Server Error? "+funccache[query]);
}
return null;
}
scf.RemoteFunctionInfo.waitingForServer = "SOCIALTEXT"; // say what waiting for
funcquery = query; // remember for setting when get it
ajaxrequest2("", "&rpc=socialtext&"+query);
return "Waiting for server"; // return an error for function
}
// Add to function list
SocialCalc.Formula.FunctionList["SOCIALTEXT"] = [SocialCalc.Formula.SocialtextFunction, -1];
// define functions
function loadsheet(sheetname) {
addmsg("loadsheet:"+sheetname);
return ajaxrequest("", "&loadsheet="+encodeURIComponent(sheetname));
}
SocialCalc.RecalcInfo.LoadSheet = loadsheet;
// function
var http_request;
function ajaxrequest(url, contents) {
http_request = null;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE
( run in 0.809 second using v1.01-cache-2.11-cpan-39bf76dae61 )