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 )