/** * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ /** * Copyright 2009 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS-IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // These jQuery things should create local references, but for now `require()` // assigns to the global `$` and augments it with plugins. require('/jquery'); JSON = require('/json2'); require('/undo-xpopup'); function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function randomString() { var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var string_length = 20; var randomstring = ''; for (var i=0; iYou have no permission to access this pad") } }); //get all the export links export_links = $('#export > .exportlink') if(document.referrer.length > 0 && document.referrer.substring(document.referrer.lastIndexOf("/")-1,document.referrer.lastIndexOf("/")) === "p") { $("#returnbutton").attr("href", document.referrer); } else { $("#returnbutton").attr("href", document.location.href.substring(0,document.location.href.lastIndexOf("/"))); } }); } //sends a message over the socket function sendSocketMsg(type, data) { var sessionID = readCookie("sessionID"); var password = readCookie("password"); var msg = { "component" : "timeslider", "type": type, "data": data, "padId": padId, "token": token, "sessionID": sessionID, "password": password, "protocolVersion": 2}; socket.json.send(msg); } var fireWhenAllScriptsAreLoaded = []; var BroadcastSlider, changesetLoader; function handleClientVars(message) { //save the client Vars clientVars = message.data; //load all script that doesn't work without the clientVars BroadcastSlider = require('/broadcast_slider').loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded); require('/broadcast_revisions').loadBroadcastRevisionsJS(); changesetLoader = require('/broadcast').loadBroadcastJS(socket, sendSocketMsg, fireWhenAllScriptsAreLoaded, BroadcastSlider); //initialize export ui require('/pad_impexp').padimpexp.init(); //change export urls when the slider moves var export_rev_regex = /(\/\d+)?\/export/ BroadcastSlider.onSlider(function(revno) { export_links.each(function() { this.setAttribute('href', this.href.replace(export_rev_regex, '/' + revno + '/export')); }); }); //fire all start functions of these scripts, formerly fired with window.load for(var i=0;i < fireWhenAllScriptsAreLoaded.length;i++) { fireWhenAllScriptsAreLoaded[i](); } } exports.init = init;