Merge branch 'develop' of github.com:ether/etherpad-lite into develop
|
@ -54,7 +54,7 @@ You'll need gzip, git, curl, libssl develop libraries, python and gcc.
|
|||
- *For Fedora/CentOS*: `yum install gzip git-core curl python openssl-devel && yum groupinstall "Development Tools"`
|
||||
- *For FreeBSD*: `portinstall node, npm, git (optional)`
|
||||
|
||||
Additionally, you'll need [node.js](http://nodejs.org) installed, Ideally the latest stable version, be careful of installing nodejs from apt.
|
||||
Additionally, you'll need [node.js](http://nodejs.org) installed, Ideally the latest stable version, we recommend installing/compiling nodejs from source (avoiding apt).
|
||||
|
||||
**As any user (we recommend creating a separate user called etherpad):**
|
||||
|
||||
|
@ -74,6 +74,10 @@ You can initially modify the settings in `settings.json`. (If you need to handle
|
|||
|
||||
You should use a dedicated database such as "mysql", if you are planning on using etherpad-in a production environment, since the "dirtyDB" database driver is only for testing and/or development purposes.
|
||||
|
||||
## Plugins and themes
|
||||
|
||||
Etherpad is very customizable through plugins. Instructions for installing themes and plugins can be found in [the plugin wiki article](https://github.com/ether/etherpad-lite/wiki/Available-Plugins).
|
||||
|
||||
## Helpful resources
|
||||
The [wiki](https://github.com/ether/etherpad-lite/wiki) is your one-stop resource for Tutorials and How-to's, really check it out! Also, feel free to improve these wiki pages.
|
||||
|
||||
|
|
|
@ -74,19 +74,22 @@
|
|||
/* This is the path to the Abiword executable. Setting it to null, disables abiword.
|
||||
Abiword is needed to advanced import/export features of pads*/
|
||||
"abiword" : null,
|
||||
|
||||
/* Allow import of file types other than the supported types: txt, doc, docx, rtf, odt, html & htm */
|
||||
"allowUnknownFileEnds" : true,
|
||||
|
||||
/* This setting is used if you require authentication of all users.
|
||||
Note: /admin always requires authentication. */
|
||||
"requireAuthentication": false,
|
||||
"requireAuthentication" : false,
|
||||
|
||||
/* Require authorization by a module, or a user with is_admin set, see below. */
|
||||
"requireAuthorization": false,
|
||||
"requireAuthorization" : false,
|
||||
|
||||
/*when you use NginX or another proxy/ load-balancer set this to true*/
|
||||
"trustProxy": false,
|
||||
"trustProxy" : false,
|
||||
|
||||
/* Privacy: disable IP logging */
|
||||
"disableIPlogging": false,
|
||||
"disableIPlogging" : false,
|
||||
|
||||
/* Users for basic authentication. is_admin = true gives access to /admin.
|
||||
If you do not uncomment this, /admin will not be available! */
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
"pad.toolbar.bold.title": "Fett (Strg-B)",
|
||||
"pad.toolbar.italic.title": "Kursiv (Strg-I)",
|
||||
"pad.toolbar.underline.title": "Unterstrichen (Strg-U)",
|
||||
"pad.toolbar.strikethrough.title": "Durchgestrichen",
|
||||
"pad.toolbar.ol.title": "Nummerierte Liste",
|
||||
"pad.toolbar.ul.title": "Ungeordnete Liste",
|
||||
"pad.toolbar.strikethrough.title": "Durchgestrichen (Strg+5)",
|
||||
"pad.toolbar.ol.title": "Nummerierte Liste (Strg+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Ungeordnete Liste (Strg+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Einrücken (TAB)",
|
||||
"pad.toolbar.unindent.title": "Ausrücken (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Rückgängig (Strg-Z)",
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"Beta16",
|
||||
"Gianfranco",
|
||||
"Muxator",
|
||||
"Vituzzu"
|
||||
"Vituzzu",
|
||||
"Macofe"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nuovo Pad",
|
||||
|
@ -12,9 +13,9 @@
|
|||
"pad.toolbar.bold.title": "Grassetto (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Corsivo (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Sottolineato (Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "Barrato",
|
||||
"pad.toolbar.ol.title": "Elenco numerato",
|
||||
"pad.toolbar.ul.title": "Elenco puntato",
|
||||
"pad.toolbar.strikethrough.title": "Barrato (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Elenco numerato (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Elenco puntato (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Rientro (TAB)",
|
||||
"pad.toolbar.unindent.title": "Riduci rientro (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Annulla (Ctrl-Z)",
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
]
|
||||
},
|
||||
"index.newPad": "Neie Pad",
|
||||
"pad.toolbar.ol.title": "Numeréiert Lëscht",
|
||||
"pad.toolbar.ul.title": "Net-numeréiert Lëscht",
|
||||
"pad.toolbar.ol.title": "Numeréiert Lëscht (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Net-numeréiert Lëscht (Ctrl+Shift+L)",
|
||||
"pad.toolbar.undo.title": "Réckgängeg (Ctrl-Z)",
|
||||
"pad.toolbar.redo.title": "Widderhuelen (Ctrl-Y)",
|
||||
"pad.toolbar.savedRevision.title": "Versioun späicheren",
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
"pad.toolbar.bold.title": "Задебелено (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Косо (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Подвлечено (Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "Прецртано",
|
||||
"pad.toolbar.ol.title": "Подреден список",
|
||||
"pad.toolbar.ul.title": "Неподреден список",
|
||||
"pad.toolbar.strikethrough.title": "Прецртано (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Подреден список (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Неподреден список (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Вовлекување (TAB)",
|
||||
"pad.toolbar.unindent.title": "Отстап (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Врати (Ctrl-Z)",
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
"pad.toolbar.bold.title": "Fet (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Kursiv (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Understruken (Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "Genomstruken",
|
||||
"pad.toolbar.ol.title": "Numrerad lista",
|
||||
"pad.toolbar.ul.title": "Osorterad lista",
|
||||
"pad.toolbar.strikethrough.title": "Genomstruken (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Numrerad lista (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Onumrerad lista (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Öka indrag (TABB)",
|
||||
"pad.toolbar.unindent.title": "Minska indrag (Shift+TABB)",
|
||||
"pad.toolbar.undo.title": "Ångra (Ctrl-Z)",
|
||||
|
@ -52,7 +52,7 @@
|
|||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.exportdokuwiki": "DokuWiki",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan endast importera från oformaterad text eller html-format. För mer avancerade importeringsfunktioner, var god <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">installera abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan endast importera från oformaterad text eller HTML-format. För mer avancerade importeringsfunktioner, var god <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">installera abiword</a>.",
|
||||
"pad.modals.connected": "Ansluten.",
|
||||
"pad.modals.reconnecting": "Återansluter till ditt block...",
|
||||
"pad.modals.forcereconnect": "Tvinga återanslutning",
|
||||
|
@ -60,7 +60,7 @@
|
|||
"pad.modals.userdup.explanation": "Detta block verkar vara öppet i mer än ett fönster på denna dator.",
|
||||
"pad.modals.userdup.advice": "Återanslut för att använda detta fönster istället.",
|
||||
"pad.modals.unauth": "Inte godkänd",
|
||||
"pad.modals.unauth.explanation": "Din behörighet ändrades medan du visar denna sida. Försök att återansluta.",
|
||||
"pad.modals.unauth.explanation": "Din behörighet ändrades medan du visade denna sida. Försök att återansluta.",
|
||||
"pad.modals.looping.explanation": "Kommunikationsproblem med synkroniseringsservern har uppstått.",
|
||||
"pad.modals.looping.cause": "Kanske du är ansluten via en inkompatibel brandvägg eller proxy.",
|
||||
"pad.modals.initsocketfail": "Servern kan inte nås.",
|
||||
|
@ -69,7 +69,7 @@
|
|||
"pad.modals.slowcommit.explanation": "Servern svarar inte.",
|
||||
"pad.modals.slowcommit.cause": "Detta kan bero på problem med nätverksanslutningen.",
|
||||
"pad.modals.badChangeset.explanation": "En redigering som du gjort klassificerades som otillåten av synkroniseringsservern.",
|
||||
"pad.modals.badChangeset.cause": "Detta kan bero på en felaktig konfiguration av servern eller något annat oväntad beteende. Var god kontakta tjänstadministratören om du anser att detta är ett fel. Försök ansluta igen för att fortsätta redigera.",
|
||||
"pad.modals.badChangeset.cause": "Detta kan bero på en felaktig konfiguration av servern eller något annat oväntad beteende. Var god kontakta tjänsteadministratören om du upplever att detta är ett fel. Försök att ansluta igen för att fortsätta redigera.",
|
||||
"pad.modals.corruptPad.explanation": "Blocket du försöker komma åt är skadat.",
|
||||
"pad.modals.corruptPad.cause": "Detta kan bero på en felaktig konfiguration av servern eller något annat oväntad beteende. Var god kontakta tjänstadministratören.",
|
||||
"pad.modals.deleted": "Raderad.",
|
||||
|
@ -84,7 +84,7 @@
|
|||
"pad.chat": "Chatt",
|
||||
"pad.chat.title": "Öppna chatten för detta block.",
|
||||
"pad.chat.loadmessages": "Läs in fler meddelanden",
|
||||
"timeslider.pageTitle": "Tidsreglage för {{appTitle}}",
|
||||
"timeslider.pageTitle": "{{appTitle}} tidsreglage",
|
||||
"timeslider.toolbar.returnbutton": "Återvänd till blocket",
|
||||
"timeslider.toolbar.authors": "Författare:",
|
||||
"timeslider.toolbar.authorsList": "Inga författare",
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
"authors": [
|
||||
"Baonguyen21022003",
|
||||
"Minh Nguyen",
|
||||
"Tuankiet65"
|
||||
"Tuankiet65",
|
||||
"Max20091"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Tạo một Pad mới",
|
||||
|
@ -11,9 +12,9 @@
|
|||
"pad.toolbar.bold.title": "In đậm (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "In nghiêng (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Gạch chân (Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "Gạch ngang",
|
||||
"pad.toolbar.ol.title": "Danh sách Có Đánh số",
|
||||
"pad.toolbar.ul.title": "Danh sách Không Đánh số",
|
||||
"pad.toolbar.strikethrough.title": "Gạch ngang (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Danh sách Có Đánh số (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Danh sách Không Đánh số (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Tăng lề (TAB)",
|
||||
"pad.toolbar.unindent.title": "Giảm lề (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Hoàn tác (Ctrl-Z)",
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
"pad.toolbar.bold.title": "粗體(Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "斜體(Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "底線(Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "刪除線",
|
||||
"pad.toolbar.ol.title": "有序清單",
|
||||
"pad.toolbar.ul.title": "無序清單",
|
||||
"pad.toolbar.strikethrough.title": "刪除線(Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "有序清單(Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "無序清單(Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "縮排(TAB)",
|
||||
"pad.toolbar.unindent.title": "凸排(Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "撤銷(Ctrl-Z)",
|
||||
|
@ -94,7 +94,7 @@
|
|||
"timeslider.toolbar.exportlink.title": "匯出",
|
||||
"timeslider.exportCurrent": "匯出當前版本為:",
|
||||
"timeslider.version": "版本{{version}}",
|
||||
"timeslider.saved": "{{year}}年{{month}}月{{day}}日儲存",
|
||||
"timeslider.saved": "{{year}}年{{month}}{{day}}日儲存",
|
||||
"timeslider.dateformat": "{{year}}年{{month}}月{{day}}日 {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "1月",
|
||||
"timeslider.month.february": "2月",
|
||||
|
|
|
@ -575,6 +575,117 @@ exports.deletePad = function(padID, callback)
|
|||
pad.remove(callback);
|
||||
});
|
||||
}
|
||||
/**
|
||||
restoreRevision(padID, [rev]) Restores revision from past as new changeset
|
||||
|
||||
Example returns:
|
||||
|
||||
{code:0, message:"ok", data:null}
|
||||
{code: 1, message:"padID does not exist", data: null}
|
||||
*/
|
||||
exports.restoreRevision = function (padID, rev, callback)
|
||||
{
|
||||
var Changeset = require("ep_etherpad-lite/static/js/Changeset");
|
||||
var padMessage = require("ep_etherpad-lite/node/handler/PadMessageHandler.js");
|
||||
|
||||
//check if rev is a number
|
||||
if (rev !== undefined && typeof rev != "number")
|
||||
{
|
||||
//try to parse the number
|
||||
if (!isNaN(parseInt(rev)))
|
||||
{
|
||||
rev = parseInt(rev);
|
||||
}
|
||||
else
|
||||
{
|
||||
callback(new customError("rev is not a number", "apierror"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//ensure this is not a negativ number
|
||||
if (rev !== undefined && rev < 0)
|
||||
{
|
||||
callback(new customError("rev is a negativ number", "apierror"));
|
||||
return;
|
||||
}
|
||||
|
||||
//ensure this is not a float value
|
||||
if (rev !== undefined && !is_int(rev))
|
||||
{
|
||||
callback(new customError("rev is a float value", "apierror"));
|
||||
return;
|
||||
}
|
||||
|
||||
//get the pad
|
||||
getPadSafe(padID, true, function (err, pad)
|
||||
{
|
||||
if (ERR(err, callback)) return;
|
||||
|
||||
|
||||
//check if this is a valid revision
|
||||
if (rev > pad.getHeadRevisionNumber())
|
||||
{
|
||||
callback(new customError("rev is higher than the head revision of the pad", "apierror"));
|
||||
return;
|
||||
}
|
||||
|
||||
pad.getInternalRevisionAText(rev, function (err, atext)
|
||||
{
|
||||
if (ERR(err, callback)) return;
|
||||
|
||||
var oldText = pad.text();
|
||||
atext.text += "\n";
|
||||
function eachAttribRun(attribs, func)
|
||||
{
|
||||
var attribsIter = Changeset.opIterator(attribs);
|
||||
var textIndex = 0;
|
||||
var newTextStart = 0;
|
||||
var newTextEnd = atext.text.length;
|
||||
while (attribsIter.hasNext())
|
||||
{
|
||||
var op = attribsIter.next();
|
||||
var nextIndex = textIndex + op.chars;
|
||||
if (!(nextIndex <= newTextStart || textIndex >= newTextEnd))
|
||||
{
|
||||
func(Math.max(newTextStart, textIndex), Math.min(newTextEnd, nextIndex), op.attribs);
|
||||
}
|
||||
textIndex = nextIndex;
|
||||
}
|
||||
}
|
||||
|
||||
// create a new changeset with a helper builder object
|
||||
var builder = Changeset.builder(oldText.length);
|
||||
|
||||
// assemble each line into the builder
|
||||
eachAttribRun(atext.attribs, function (start, end, attribs)
|
||||
{
|
||||
builder.insert(atext.text.substring(start, end), attribs);
|
||||
});
|
||||
|
||||
var lastNewlinePos = oldText.lastIndexOf('\n');
|
||||
if (lastNewlinePos < 0)
|
||||
{
|
||||
builder.remove(oldText.length - 1, 0);
|
||||
} else
|
||||
{
|
||||
builder.remove(lastNewlinePos, oldText.match(/\n/g).length - 1);
|
||||
builder.remove(oldText.length - lastNewlinePos - 1, 0);
|
||||
}
|
||||
|
||||
var changeset = builder.toString();
|
||||
|
||||
//append the changeset
|
||||
pad.appendRevision(changeset);
|
||||
//
|
||||
padMessage.updatePadClients(pad, function ()
|
||||
{
|
||||
});
|
||||
callback(null, null);
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
copyPad(sourceID, destinationID[, force=false]) copies a pad. If force is true,
|
||||
|
|
|
@ -351,7 +351,15 @@ function listSessionsWithDBKey (dbkey, callback)
|
|||
{
|
||||
exports.getSessionInfo(sessionID, function(err, sessionInfo)
|
||||
{
|
||||
if(ERR(err, callback)) return;
|
||||
if (err == "apierror: sessionID does not exist")
|
||||
{
|
||||
console.warn("Found bad session " + sessionID + " in " + dbkey + ".");
|
||||
}
|
||||
else if(ERR(err, callback))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
sessions[sessionID] = sessionInfo;
|
||||
callback();
|
||||
});
|
||||
|
|
|
@ -345,10 +345,56 @@ var version =
|
|||
, "getChatHistory" : ["padID", "start", "end"]
|
||||
, "getChatHead" : ["padID"]
|
||||
}
|
||||
, "1.2.11":
|
||||
{ "createGroup" : []
|
||||
, "createGroupIfNotExistsFor" : ["groupMapper"]
|
||||
, "deleteGroup" : ["groupID"]
|
||||
, "listPads" : ["groupID"]
|
||||
, "listAllPads" : []
|
||||
, "createDiffHTML" : ["padID", "startRev", "endRev"]
|
||||
, "createPad" : ["padID", "text"]
|
||||
, "createGroupPad" : ["groupID", "padName", "text"]
|
||||
, "createAuthor" : ["name"]
|
||||
, "createAuthorIfNotExistsFor": ["authorMapper" , "name"]
|
||||
, "listPadsOfAuthor" : ["authorID"]
|
||||
, "createSession" : ["groupID", "authorID", "validUntil"]
|
||||
, "deleteSession" : ["sessionID"]
|
||||
, "getSessionInfo" : ["sessionID"]
|
||||
, "listSessionsOfGroup" : ["groupID"]
|
||||
, "listSessionsOfAuthor" : ["authorID"]
|
||||
, "getText" : ["padID", "rev"]
|
||||
, "setText" : ["padID", "text"]
|
||||
, "getHTML" : ["padID", "rev"]
|
||||
, "setHTML" : ["padID", "html"]
|
||||
, "getAttributePool" : ["padID"]
|
||||
, "getRevisionsCount" : ["padID"]
|
||||
, "getRevisionChangeset" : ["padID", "rev"]
|
||||
, "getLastEdited" : ["padID"]
|
||||
, "deletePad" : ["padID"]
|
||||
, "copyPad" : ["sourceID", "destinationID", "force"]
|
||||
, "movePad" : ["sourceID", "destinationID", "force"]
|
||||
, "getReadOnlyID" : ["padID"]
|
||||
, "getPadID" : ["roID"]
|
||||
, "setPublicStatus" : ["padID", "publicStatus"]
|
||||
, "getPublicStatus" : ["padID"]
|
||||
, "setPassword" : ["padID", "password"]
|
||||
, "isPasswordProtected" : ["padID"]
|
||||
, "listAuthorsOfPad" : ["padID"]
|
||||
, "padUsersCount" : ["padID"]
|
||||
, "getAuthorName" : ["authorID"]
|
||||
, "padUsers" : ["padID"]
|
||||
, "sendClientsMessage" : ["padID", "msg"]
|
||||
, "listAllGroups" : []
|
||||
, "checkToken" : []
|
||||
, "getChatHistory" : ["padID"]
|
||||
, "getChatHistory" : ["padID", "start", "end"]
|
||||
, "getChatHead" : ["padID"]
|
||||
, "restoreRevision" : ["padID", "rev"]
|
||||
}
|
||||
};
|
||||
|
||||
// set the latest available API version here
|
||||
exports.latestApiVersion = '1.2.10';
|
||||
exports.latestApiVersion = '1.2.11';
|
||||
|
||||
// exports the versions so it can be used by the new Swagger endpoint
|
||||
exports.version = version;
|
||||
|
|
|
@ -92,9 +92,14 @@ exports.doImport = function(req, res, padId)
|
|||
}
|
||||
//we need to rename this file with a .txt ending
|
||||
else {
|
||||
var oldSrcFile = srcFile;
|
||||
srcFile = path.join(path.dirname(srcFile),path.basename(srcFile, fileEnding)+".txt");
|
||||
fs.rename(oldSrcFile, srcFile, callback);
|
||||
if(settings.allowUnknownFileEnds === true){
|
||||
var oldSrcFile = srcFile;
|
||||
srcFile = path.join(path.dirname(srcFile),path.basename(srcFile, fileEnding)+".txt");
|
||||
fs.rename(oldSrcFile, srcFile, callback);
|
||||
}else{
|
||||
console.warn("Not allowing unknown file type to be imported", fileEnding);
|
||||
callback("uploadFailed");
|
||||
}
|
||||
}
|
||||
},
|
||||
function(callback){
|
||||
|
|
|
@ -37,6 +37,7 @@ var _ = require('underscore');
|
|||
var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js");
|
||||
var channels = require("channels");
|
||||
var stats = require('../stats');
|
||||
var remoteAddress = require("../utils/RemoteAddress").remoteAddress;
|
||||
|
||||
/**
|
||||
* A associative array that saves informations about a session
|
||||
|
@ -115,14 +116,16 @@ exports.handleDisconnect = function(client)
|
|||
//if this connection was already etablished with a handshake, send a disconnect message to the others
|
||||
if(session && session.author)
|
||||
{
|
||||
client.get('remoteAddress', function(er, ip) {
|
||||
//Anonymize the IP address if IP logging is disabled
|
||||
if(settings.disableIPlogging) {
|
||||
ip = 'ANONYMOUS';
|
||||
}
|
||||
|
||||
accessLogger.info('[LEAVE] Pad "'+session.padId+'": Author "'+session.author+'" on client '+client.id+' with IP "'+ip+'" left the pad')
|
||||
})
|
||||
// Get the IP address from our persistant object
|
||||
var ip = remoteAddress[client.id];
|
||||
|
||||
// Anonymize the IP address if IP logging is disabled
|
||||
if(settings.disableIPlogging) {
|
||||
ip = 'ANONYMOUS';
|
||||
}
|
||||
|
||||
accessLogger.info('[LEAVE] Pad "'+session.padId+'": Author "'+session.author+'" on client '+client.id+' with IP "'+ip+'" left the pad')
|
||||
|
||||
//get the author color out of the db
|
||||
authorManager.getAuthorColorId(session.author, function(err, color)
|
||||
|
@ -753,7 +756,13 @@ function handleUserChanges(data, cb)
|
|||
exports.updatePadClients = function(pad, callback)
|
||||
{
|
||||
//skip this step if noone is on this pad
|
||||
var roomClients = socketio.sockets.clients(pad.id);
|
||||
var roomClients = [], room = socketio.sockets.adapter.rooms[pad.id];
|
||||
if (room) {
|
||||
for (var id in room) {
|
||||
roomClients.push(socketio.sockets.adapter.nsp.connected[id]);
|
||||
}
|
||||
}
|
||||
|
||||
if(roomClients.length==0)
|
||||
return callback();
|
||||
|
||||
|
@ -766,10 +775,8 @@ exports.updatePadClients = function(pad, callback)
|
|||
var revCache = {};
|
||||
|
||||
//go trough all sessions on this pad
|
||||
async.forEach(roomClients, function(client, callback)
|
||||
{
|
||||
async.forEach(roomClients, function(client, callback){
|
||||
var sid = client.id;
|
||||
|
||||
//https://github.com/caolan/async#whilst
|
||||
//send them all new changesets
|
||||
async.whilst(
|
||||
|
@ -1015,7 +1022,13 @@ function handleClientReady(client, message)
|
|||
return callback();
|
||||
|
||||
//Check if this author is already on the pad, if yes, kick the other sessions!
|
||||
var roomClients = socketio.sockets.clients(padIds.padId);
|
||||
var roomClients = [], room = socketio.sockets.adapter.rooms[pad.id];
|
||||
if (room) {
|
||||
for (var id in room) {
|
||||
roomClients.push(socketio.sockets.adapter.nsp.connected[id]);
|
||||
}
|
||||
}
|
||||
|
||||
for(var i = 0; i < roomClients.length; i++) {
|
||||
var sinfo = sessioninfos[roomClients[i].id];
|
||||
if(sinfo && sinfo.author == author) {
|
||||
|
@ -1032,19 +1045,19 @@ function handleClientReady(client, message)
|
|||
sessioninfos[client.id].readonly = padIds.readonly;
|
||||
|
||||
//Log creation/(re-)entering of a pad
|
||||
client.get('remoteAddress', function(er, ip) {
|
||||
//Anonymize the IP address if IP logging is disabled
|
||||
if(settings.disableIPlogging) {
|
||||
ip = 'ANONYMOUS';
|
||||
}
|
||||
var ip = remoteAddress[client.id];
|
||||
|
||||
if(pad.head > 0) {
|
||||
accessLogger.info('[ENTER] Pad "'+padIds.padId+'": Client '+client.id+' with IP "'+ip+'" entered the pad');
|
||||
}
|
||||
else if(pad.head == 0) {
|
||||
accessLogger.info('[CREATE] Pad "'+padIds.padId+'": Client '+client.id+' with IP "'+ip+'" created the pad');
|
||||
}
|
||||
})
|
||||
//Anonymize the IP address if IP logging is disabled
|
||||
if(settings.disableIPlogging) {
|
||||
ip = 'ANONYMOUS';
|
||||
}
|
||||
|
||||
if(pad.head > 0) {
|
||||
accessLogger.info('[ENTER] Pad "'+padIds.padId+'": Client '+client.id+' with IP "'+ip+'" entered the pad');
|
||||
}
|
||||
else if(pad.head == 0) {
|
||||
accessLogger.info('[CREATE] Pad "'+padIds.padId+'": Client '+client.id+' with IP "'+ip+'" created the pad');
|
||||
}
|
||||
|
||||
//If this is a reconnect, we don't have to send the client the ClientVars again
|
||||
if(message.reconnect == true)
|
||||
|
@ -1165,7 +1178,14 @@ function handleClientReady(client, message)
|
|||
client.broadcast.to(padIds.padId).json.send(messageToTheOtherUsers);
|
||||
|
||||
//Run trough all sessions of this pad
|
||||
async.forEach(socketio.sockets.clients(padIds.padId), function(roomClient, callback)
|
||||
var roomClients = [], room = socketio.sockets.adapter.rooms[pad.id];
|
||||
if (room) {
|
||||
for (var id in room) {
|
||||
roomClients.push(socketio.sockets.adapter.nsp.connected[id]);
|
||||
}
|
||||
}
|
||||
|
||||
async.forEach(roomClients, function(roomClient, callback)
|
||||
{
|
||||
var author;
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ var log4js = require('log4js');
|
|||
var messageLogger = log4js.getLogger("message");
|
||||
var securityManager = require("../db/SecurityManager");
|
||||
var readOnlyManager = require("../db/ReadOnlyManager");
|
||||
var remoteAddress = require("../utils/RemoteAddress").remoteAddress;
|
||||
var settings = require('../utils/Settings');
|
||||
|
||||
/**
|
||||
|
@ -56,11 +57,15 @@ exports.setSocketIO = function(_socket) {
|
|||
|
||||
socket.sockets.on('connection', function(client)
|
||||
{
|
||||
|
||||
// Broken: See http://stackoverflow.com/questions/4647348/send-message-to-specific-client-with-socket-io-and-node-js
|
||||
// Fixed by having a persistant object, ideally this would actually be in the database layer
|
||||
// TODO move to database layer
|
||||
if(settings.trustProxy && client.handshake.headers['x-forwarded-for'] !== undefined){
|
||||
client.set('remoteAddress', client.handshake.headers['x-forwarded-for']);
|
||||
remoteAddress[client.id] = client.handshake.headers['x-forwarded-for'];
|
||||
}
|
||||
else{
|
||||
client.set('remoteAddress', client.handshake.address.address);
|
||||
remoteAddress[client.id] = client.handshake.address;
|
||||
}
|
||||
var clientAuthorized = false;
|
||||
|
||||
|
|
|
@ -1,10 +1,17 @@
|
|||
var log4js = require('log4js');
|
||||
var socketio = require('socket.io');
|
||||
var settings = require('../../utils/Settings');
|
||||
var socketIORouter = require("../../handler/SocketIORouter");
|
||||
var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks");
|
||||
var webaccess = require("ep_etherpad-lite/node/hooks/express/webaccess");
|
||||
|
||||
// there shouldn't be a browser that isn't compatible to all
|
||||
// transports in this list at once
|
||||
// e.g. XHR is disabled in IE by default, so in IE it should use jsonp-polling
|
||||
|
||||
var socketio = require('socket.io')({
|
||||
transports: settings.socketTransportProtocols
|
||||
});
|
||||
|
||||
var padMessageHandler = require("../../handler/PadMessageHandler");
|
||||
|
||||
var connect = require('connect');
|
||||
|
@ -16,7 +23,9 @@ exports.expressCreateServer = function (hook_name, args, cb) {
|
|||
/* Require an express session cookie to be present, and load the
|
||||
* session. See http://www.danielbaulig.de/socket-ioexpress for more
|
||||
* info */
|
||||
io.set('authorization', function (data, accept) {
|
||||
|
||||
io.use(function(socket, accept) {
|
||||
var data = socket.request;
|
||||
if (!data.headers.cookie) return accept('No session cookie transmitted.', false);
|
||||
|
||||
// Use connect's cookie parser, because it knows how to parse signed cookies
|
||||
|
@ -36,35 +45,17 @@ exports.expressCreateServer = function (hook_name, args, cb) {
|
|||
});
|
||||
});
|
||||
|
||||
// there shouldn't be a browser that isn't compatible to all
|
||||
// transports in this list at once
|
||||
// e.g. XHR is disabled in IE by default, so in IE it should use jsonp-polling
|
||||
io.set('transports', settings.socketTransportProtocols );
|
||||
|
||||
var socketIOLogger = log4js.getLogger("socket.io");
|
||||
io.set('logger', {
|
||||
debug: function (str)
|
||||
{
|
||||
socketIOLogger.debug.apply(socketIOLogger, arguments);
|
||||
},
|
||||
info: function (str)
|
||||
{
|
||||
socketIOLogger.info.apply(socketIOLogger, arguments);
|
||||
},
|
||||
warn: function (str)
|
||||
{
|
||||
socketIOLogger.warn.apply(socketIOLogger, arguments);
|
||||
},
|
||||
error: function (str)
|
||||
{
|
||||
socketIOLogger.error.apply(socketIOLogger, arguments);
|
||||
},
|
||||
});
|
||||
// var socketIOLogger = log4js.getLogger("socket.io");
|
||||
// Debug logging now has to be set at an environment level, this is stupid.
|
||||
// https://github.com/Automattic/socket.io/wiki/Migrating-to-1.0
|
||||
// This debug logging environment is set in Settings.js
|
||||
|
||||
//minify socket.io javascript
|
||||
if(settings.minify)
|
||||
io.enable('browser client minification');
|
||||
|
||||
// Due to a shitty decision by the SocketIO team minification is
|
||||
// no longer available, details available at:
|
||||
// http://stackoverflow.com/questions/23981741/minify-socket-io-socket-io-js-with-1-0
|
||||
// if(settings.minify) io.enable('browser client minification');
|
||||
|
||||
//Initalize the Socket.IO Router
|
||||
socketIORouter.setSocketIO(io);
|
||||
socketIORouter.addComponent("pad", padMessageHandler);
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
exports.remoteAddress = {};
|
|
@ -129,6 +129,11 @@ exports.minify = true;
|
|||
*/
|
||||
exports.abiword = null;
|
||||
|
||||
/**
|
||||
* Should we support none natively supported file types on import?
|
||||
*/
|
||||
exports.allowUnknownFileEnds = true;
|
||||
|
||||
/**
|
||||
* The log level of log4js
|
||||
*/
|
||||
|
@ -228,6 +233,7 @@ exports.reloadSettings = function reloadSettings() {
|
|||
|
||||
log4js.configure(exports.logconfig);//Configure the logging appenders
|
||||
log4js.setGlobalLogLevel(exports.loglevel);//set loglevel
|
||||
process.env['DEBUG'] = 'socket.io:' + exports.loglevel; // Used by SocketIO for Debug
|
||||
log4js.replaceConsole();
|
||||
|
||||
if(!exports.sessionKey){ // If the secretKey isn't set we also create yet another unique value here
|
||||
|
|
|
@ -15,9 +15,9 @@
|
|||
"request" : "2.9.100",
|
||||
"require-kernel" : "1.0.5",
|
||||
"resolve" : ">=1.0.0",
|
||||
"socket.io" : "0.9.x",
|
||||
"socket.io" : ">=1.2.0",
|
||||
"ueberDB" : ">=0.2.9",
|
||||
"express" : "3.1.0",
|
||||
"express" : ">3.1.0 <3.9.0",
|
||||
"async" : "0.1.x",
|
||||
"connect" : "2.7.x",
|
||||
"clean-css" : "0.3.2",
|
||||
|
@ -31,13 +31,13 @@
|
|||
"ejs" : "0.6.1",
|
||||
"graceful-fs" : "1.1.5",
|
||||
"slide" : "1.1.3",
|
||||
"semver" : "1.0.13",
|
||||
"semver" : ">2.3.0",
|
||||
"security" : "1.0.0",
|
||||
"tinycon" : "0.0.1",
|
||||
"underscore" : "1.5.1",
|
||||
"unorm" : "1.0.0",
|
||||
"languages4translatewiki" : "0.1.3",
|
||||
"swagger-node-express" : "1.2.3",
|
||||
"swagger-node-express" : ">=2.1.0",
|
||||
"channels" : "0.0.x",
|
||||
"jsonminify" : "0.2.2",
|
||||
"measured" : "0.1.3"
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
@font-face {
|
||||
font-family: 'fontawesome-etherpad';
|
||||
src: url('../font/fontawesome-etherpad.eot?81419457');
|
||||
src: url('../font/fontawesome-etherpad.eot?81419457#iefix') format('embedded-opentype'),
|
||||
url('../font/fontawesome-etherpad.woff?81419457') format('woff'),
|
||||
url('../font/fontawesome-etherpad.ttf?81419457') format('truetype'),
|
||||
url('../font/fontawesome-etherpad.svg?81419457#fontawesome-etherpad') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
|
||||
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
|
||||
/*
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: 'fontawesome-etherpad';
|
||||
src: url('../font/fontawesome-etherpad.svg?81419457#fontawesome-etherpad') format('svg');
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
[class^="icon-"]:before, [class*=" icon-"]:before {
|
||||
font-family: "fontawesome-etherpad";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
speak: none;
|
||||
|
||||
display: inline-block;
|
||||
text-decoration: inherit;
|
||||
width: 1em;
|
||||
margin-right: .2em;
|
||||
text-align: center;
|
||||
/* opacity: .8; */
|
||||
|
||||
/* For safety - reset parent styles, that can break glyph codes*/
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
|
||||
/* fix buttons height, for twitter bootstrap */
|
||||
line-height: 1em;
|
||||
|
||||
/* Animation center compensation - margins should be symmetric */
|
||||
/* remove if not needed */
|
||||
margin-left: .2em;
|
||||
|
||||
/* you can be more comfortable with increased icons size */
|
||||
/* font-size: 120%; */
|
||||
|
||||
/* Uncomment for 3D effect */
|
||||
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
|
||||
}
|
||||
|
||||
.icon-users:before { content: '\e800'; } /* '' */
|
||||
.icon-star:before { content: '\e801'; } /* '' */
|
||||
.icon-cog:before { content: '\e802'; } /* '' */
|
||||
.icon-bold:before { content: '\e803'; } /* '' */
|
||||
.icon-italic:before { content: '\e804'; } /* '' */
|
||||
.icon-indent-left:before { content: '\e805'; } /* '' */
|
||||
.icon-indent-right:before { content: '\e806'; } /* '' */
|
||||
.icon-list-bullet:before { content: '\e807'; } /* '' */
|
||||
.icon-list-numbered:before { content: '\e808'; } /* '' */
|
||||
.icon-strike:before { content: '\e809'; } /* '' */
|
||||
.icon-underline:before { content: '\e80a'; } /* '' */
|
||||
.icon-cw:before { content: '\e80b'; } /* '' */
|
||||
.icon-ccw:before { content: '\e80c'; } /* '' */
|
||||
.icon-clock:before { content: '\e80d'; } /* '' */
|
||||
.icon-eye-off:before { content: '\e80e'; } /* '' */
|
||||
.icon-eye:before { content: '\e80f'; } /* '' */
|
||||
.icon-play:before { content: '\e810'; } /* '' */
|
||||
.icon-fast-bw:before { content: '\e811'; } /* '' */
|
||||
.icon-fast-fw:before { content: '\e812'; } /* '' */
|
||||
.icon-pause:before { content: '\e813'; } /* '' */
|
||||
.icon-glass:before { content: '\e814'; } /* '' */
|
||||
.icon-code:before { content: '\e815'; } /* '' */
|
||||
.icon-exchange:before { content: '\e816'; } /* '' */
|
||||
.icon-chat:before { content: '\e817'; } /* '' */
|
|
@ -59,7 +59,7 @@ a img {
|
|||
height: 32px;
|
||||
}
|
||||
.toolbar ul {
|
||||
position: relative;
|
||||
position: absolute;
|
||||
list-style: none;
|
||||
padding-right: 3px;
|
||||
padding-left: 1px;
|
||||
|
@ -67,9 +67,6 @@ a img {
|
|||
overflow: hidden;
|
||||
float: left
|
||||
}
|
||||
.toolbar ul.menu_right {
|
||||
float: right
|
||||
}
|
||||
.toolbar ul li {
|
||||
float: left;
|
||||
margin-left: 2px;
|
||||
|
@ -84,6 +81,7 @@ a img {
|
|||
visibility: hidden;
|
||||
width: 0px;
|
||||
padding: 5px;
|
||||
height:20px;
|
||||
}
|
||||
.toolbar ul li a:hover {
|
||||
text-decoration: none;
|
||||
|
@ -164,6 +162,15 @@ a img {
|
|||
border: 1px solid #ccc;
|
||||
outline: none;
|
||||
}
|
||||
.toolbar ul.menu_left {
|
||||
left:0px;
|
||||
right:250px;
|
||||
}
|
||||
|
||||
.toolbar ul.menu_right {
|
||||
right:0px;
|
||||
}
|
||||
|
||||
li[data-key=showusers] > a {
|
||||
min-width: 30px;
|
||||
text-align: left;
|
||||
|
@ -175,6 +182,9 @@ li[data-key=showusers] > a #online_count {
|
|||
top: 2px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
#editbar{
|
||||
display:none;
|
||||
}
|
||||
#editorcontainer {
|
||||
position: absolute;
|
||||
top: 37px; /* + 1px border */
|
||||
|
@ -214,6 +224,41 @@ li[data-key=showusers] > a #online_count {
|
|||
padding:10px;
|
||||
}
|
||||
|
||||
.loadingAnimation{
|
||||
-webkit-animation: loadingAnimation 2s infinite linear;
|
||||
animation: loadingAnimation 2s infinite linear;
|
||||
font-family: "fontawesome-etherpad";
|
||||
font-size:24px;
|
||||
z-index:150;
|
||||
width:25px;
|
||||
height:25px;
|
||||
}
|
||||
|
||||
.loadingAnimation:before{
|
||||
content: "\e80e";
|
||||
}
|
||||
|
||||
@-webkit-keyframes loadingAnimation {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
@keyframes loadingAnimation {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(359deg);
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
#editorcontainerbox {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
|
@ -601,38 +646,49 @@ table#otheruserstable {
|
|||
margin-top: 4px;
|
||||
background-repeat: no-repeat;
|
||||
padding-left: 25px;
|
||||
background-image: url("../../static/img/etherpad_lite_icons.png");
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
padding-bottom:2px;
|
||||
display:inline;
|
||||
padding-left:5px;
|
||||
font-family: "Arial";
|
||||
}
|
||||
#exporthtml {
|
||||
background-position: 0px -299px
|
||||
.exportlink{
|
||||
font-family: "fontawesome-etherpad";
|
||||
display:block;
|
||||
margin:5px;
|
||||
color:#666;
|
||||
}
|
||||
#exportplain {
|
||||
background-position: 0px -395px
|
||||
#exporthtmla:before {
|
||||
content: "\e826";
|
||||
}
|
||||
#exportword {
|
||||
background-position: 0px -275px
|
||||
#exportplaina:before {
|
||||
content: "\e802";
|
||||
}
|
||||
#exportpdf {
|
||||
background-position: 0px -371px
|
||||
#exportworda:before {
|
||||
content: "\e804";
|
||||
}
|
||||
#exportopen {
|
||||
background-position: 0px -347px
|
||||
#exportpdfa:before {
|
||||
content: "\e803";
|
||||
}
|
||||
#exportdokuwiki {
|
||||
background-position: 0px -459px
|
||||
#exportopena:before {
|
||||
content: "\e805";
|
||||
}
|
||||
#exportdokuwikia:before {
|
||||
content: "\e805";
|
||||
}
|
||||
|
||||
/* hidden element */
|
||||
#importstatusball,
|
||||
#importarrow,
|
||||
#importmessagesuccess,
|
||||
#importmessageabiword {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.throbbold{
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
#importmessageabiword {
|
||||
color: #900;
|
||||
font-size: small;
|
||||
|
@ -679,58 +735,58 @@ table#otheruserstable {
|
|||
color: #666;
|
||||
}
|
||||
.buttonicon-bold:before {
|
||||
content: "\e803";
|
||||
content: "\e81c";
|
||||
}
|
||||
.buttonicon-italic:before {
|
||||
content: "\e804";
|
||||
content: "\e81d";
|
||||
}
|
||||
.buttonicon-underline:before {
|
||||
content: "\e80a";
|
||||
}
|
||||
.buttonicon-strikethrough:before {
|
||||
content: "\e809";
|
||||
}
|
||||
.buttonicon-insertorderedlist:before {
|
||||
content: "\e808";
|
||||
}
|
||||
.buttonicon-insertunorderedlist:before {
|
||||
content: "\e807";
|
||||
}
|
||||
.buttonicon-indent:before {
|
||||
content: "\e806";
|
||||
}
|
||||
.buttonicon-outdent:before {
|
||||
content: "\e805";
|
||||
}
|
||||
.buttonicon-undo:before {
|
||||
content: "\e80c";
|
||||
}
|
||||
.buttonicon-redo:before {
|
||||
content: "\e80b";
|
||||
}
|
||||
.buttonicon-clearauthorship:before {
|
||||
content: "\e80e";
|
||||
}
|
||||
.buttonicon-settings:before {
|
||||
content: "\e802";
|
||||
}
|
||||
.buttonicon-import_export:before {
|
||||
content: "\e816";
|
||||
}
|
||||
.buttonicon-embed:before {
|
||||
content: "\e815";
|
||||
}
|
||||
.buttonicon-history:before {
|
||||
content: "\e80d";
|
||||
}
|
||||
.buttonicon-chat:before {
|
||||
content: "\e817";
|
||||
}
|
||||
.buttonicon-strikethrough:before {
|
||||
content: "\e818";
|
||||
}
|
||||
.buttonicon-insertorderedlist:before {
|
||||
content: "\e816";
|
||||
}
|
||||
.buttonicon-insertunorderedlist:before {
|
||||
content: "\e815";
|
||||
}
|
||||
.buttonicon-indent:before {
|
||||
content: "\e814";
|
||||
}
|
||||
.buttonicon-outdent:before {
|
||||
content: "\e813";
|
||||
}
|
||||
.buttonicon-undo:before {
|
||||
content: "\e823";
|
||||
}
|
||||
.buttonicon-redo:before {
|
||||
content: "\e824";
|
||||
}
|
||||
.buttonicon-clearauthorship:before {
|
||||
content: "\e80d";
|
||||
}
|
||||
.buttonicon-settings:before {
|
||||
content: "\e833";
|
||||
}
|
||||
.buttonicon-import_export:before {
|
||||
content: "\e834";
|
||||
}
|
||||
.buttonicon-embed:before {
|
||||
content: "\e827";
|
||||
}
|
||||
.buttonicon-history:before {
|
||||
content: "\e837";
|
||||
}
|
||||
.buttonicon-chat:before {
|
||||
content: "\e829";
|
||||
}
|
||||
.buttonicon-showusers:before {
|
||||
content: "\e800";
|
||||
content: "\e808";
|
||||
}
|
||||
.buttonicon-savedRevision:before {
|
||||
content: "\e801";
|
||||
content: "\e835";
|
||||
}
|
||||
#focusprotector {
|
||||
z-index: 100;
|
||||
|
@ -843,12 +899,16 @@ input[type=checkbox] {
|
|||
width: 185px !important;
|
||||
}
|
||||
@media screen and (max-width: 600px) {
|
||||
.toolbar ul li.separator {
|
||||
display: none;
|
||||
}
|
||||
.toolbar ul li a {
|
||||
padding: 4px 1px
|
||||
}
|
||||
.toolbar ul li.separator {
|
||||
display: none;
|
||||
}
|
||||
.toolbar ul li a {
|
||||
padding: 4px 1px
|
||||
}
|
||||
.toolbar ul.menu_left {
|
||||
left:0px;
|
||||
right:150px;
|
||||
}
|
||||
}
|
||||
@media all and (max-width: 400px){
|
||||
#gritter-notice-wrapper{
|
||||
|
@ -894,9 +954,13 @@ input[type=checkbox] {
|
|||
#editbar {
|
||||
height: 62px;
|
||||
}
|
||||
.toolbar ul.menu_left {
|
||||
left:0px;
|
||||
right:100px;
|
||||
}
|
||||
|
||||
.toolbar ul.menu_right {
|
||||
float: left;
|
||||
margin-top:2px;
|
||||
right:0px;
|
||||
}
|
||||
.popup {
|
||||
width:100%;
|
||||
|
@ -917,6 +981,9 @@ input[type=checkbox] {
|
|||
#editorcontainer {
|
||||
margin-bottom: 33px
|
||||
}
|
||||
.toolbar ul.menu_left {
|
||||
right:0px;
|
||||
}
|
||||
.toolbar ul.menu_right {
|
||||
background: #f7f7f7;
|
||||
background: -webkit-linear-gradient(#f7f7f7, #f1f1f1 80%);
|
||||
|
@ -1075,5 +1142,43 @@ input[type=checkbox] {
|
|||
.gritter-light .gritter-title {
|
||||
text-shadow: none;
|
||||
}
|
||||
/* End of gritter stuff */
|
||||
|
||||
@font-face {
|
||||
font-family: "fontawesome-etherpad";
|
||||
src:url("../font/fontawesome-etherpad.eot");
|
||||
src:url("../font/fontawesome-etherpad.eot?#iefix") format("embedded-opentype"),
|
||||
url("../font/fontawesome-etherpad.woff") format("woff"),
|
||||
url("../font/fontawesome-etherpad.ttf") format("truetype"),
|
||||
url("../font/fontawesome-etherpad.svg#fontawesome-etherpad") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
[data-icon]:before {
|
||||
font-family: "fontawesome-etherpad" !important;
|
||||
content: attr(data-icon);
|
||||
font-style: normal !important;
|
||||
font-weight: normal !important;
|
||||
font-variant: normal !important;
|
||||
text-transform: none !important;
|
||||
speak: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
[class^="icon-"]:before,
|
||||
[class*=" icon-"]:before {
|
||||
font-family: "fontawesome-etherpad" !important;
|
||||
font-style: normal !important;
|
||||
font-weight: normal !important;
|
||||
font-variant: normal !important;
|
||||
text-transform: none !important;
|
||||
speak: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* End of gritter stuff */
|
|
@ -14,14 +14,14 @@
|
|||
top: 0;
|
||||
}
|
||||
#timeslider-left {
|
||||
background-image: url(../../static/img/timeslider_left.png);
|
||||
background-color:#fff;
|
||||
height: 63px;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
width: 134px;
|
||||
}
|
||||
#timeslider-right {
|
||||
background-image: url(../../static/img/timeslider_right.png);
|
||||
background-color:#fff;
|
||||
height: 63px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
|
@ -29,7 +29,6 @@
|
|||
width: 155px;
|
||||
}
|
||||
#timeslider {
|
||||
background-image: url(../../static/img/timeslider_background.png);
|
||||
height: 63px;
|
||||
margin: 0 9px;
|
||||
-webkit-touch-callout: none;
|
||||
|
@ -50,7 +49,7 @@
|
|||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
background-image: url(../../static/img/crushed_current_location.png);
|
||||
background-color: #666;
|
||||
cursor: pointer;
|
||||
height: 61px;
|
||||
left: 0;
|
||||
|
@ -63,66 +62,97 @@
|
|||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
cursor: pointer;
|
||||
height: 35px;
|
||||
height: 60px;
|
||||
margin-left: 5px;
|
||||
margin-right: 150px;
|
||||
position: relative;
|
||||
top: 20px;
|
||||
top: 0px;
|
||||
}
|
||||
|
||||
#playpause_button,
|
||||
#playpause_button_icon {
|
||||
height: 47px;
|
||||
height: 44px;
|
||||
position: absolute;
|
||||
width: 47px;
|
||||
width: 44px;
|
||||
text-align:center;
|
||||
vertical-align:middle;
|
||||
}
|
||||
#playpause_button {
|
||||
background-image: url(../../static/img/crushed_button_undepressed.png);
|
||||
right: 77px;
|
||||
top: 9px;
|
||||
height:50px;
|
||||
height:50px;
|
||||
background: background-linear-gradient( #F7F7F7, #F1F1F1 80%) repeat scroll 0 0 transparent;
|
||||
border-radius:24px;
|
||||
cursor:hand;
|
||||
}
|
||||
#playpause_button_icon:before {
|
||||
line-height:44px;
|
||||
padding-left:2px;
|
||||
font-family: fontawesome-etherpad;
|
||||
content: "\e82c";
|
||||
font-size:24px;
|
||||
color:#666;
|
||||
}
|
||||
|
||||
#playpause_button_icon {
|
||||
background-image: url(../../static/img/play.png);
|
||||
left: 0;
|
||||
top: 0;
|
||||
border-radius:48px;
|
||||
border: solid 1px #666;
|
||||
}
|
||||
.pause#playpause_button_icon {
|
||||
background-image: url(../../static/img/pause.png)
|
||||
.pause:before {
|
||||
line-height:44px;
|
||||
padding-left:2px;
|
||||
font-family: fontawesome-etherpad;
|
||||
content: "\e82e" !important;
|
||||
font-size:24px;
|
||||
color:#666;
|
||||
padding-left:0 !important;
|
||||
}
|
||||
#leftstar,
|
||||
#rightstar,
|
||||
#leftstep,
|
||||
#rightstep {
|
||||
background: url(../../static/img/stepper_buttons.png) 0 0 no-repeat;
|
||||
height: 21px;
|
||||
background-color: white;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
}
|
||||
#leftstar {
|
||||
background-position: 0 -44px;
|
||||
right: 34px;
|
||||
top: 8px;
|
||||
width: 30px;
|
||||
|
||||
.stepper{
|
||||
font-family: fontawesome-etherpad;
|
||||
border-radius:2px;
|
||||
border: #666 solid 1px;
|
||||
line-height:18px;
|
||||
text-align:center;
|
||||
height:22px;
|
||||
color:#666;
|
||||
}
|
||||
#rightstar {
|
||||
background-position: -29px -44px;
|
||||
right: 5px;
|
||||
top: 8px;
|
||||
width: 29px;
|
||||
|
||||
stepper:active{
|
||||
color:#000;
|
||||
}
|
||||
|
||||
#leftstep {
|
||||
background-position: 0 -22px;
|
||||
right: 34px;
|
||||
right: 38px;
|
||||
top: 20px;
|
||||
width: 30px;
|
||||
width: 25px;
|
||||
}
|
||||
#leftstep:before{
|
||||
content: '\e821';
|
||||
vertical-align:middle;
|
||||
}
|
||||
#rightstep:before{
|
||||
content: "\e822";
|
||||
vertical-align:middle;
|
||||
}
|
||||
|
||||
#rightstep {
|
||||
background-position: -29px -22px;
|
||||
right: 5px;
|
||||
right: 12px;
|
||||
top: 20px;
|
||||
width: 30px;
|
||||
width: 25px;
|
||||
}
|
||||
#timeslider .star {
|
||||
background-image: url(../../static/img/star.png);
|
||||
cursor: pointer;
|
||||
height: 16px;
|
||||
position: absolute;
|
||||
|
@ -130,7 +160,9 @@
|
|||
width: 15px;
|
||||
}
|
||||
#timeslider #timer {
|
||||
color: #fff;
|
||||
background: linear-gradient(#F7F7F7, #F1F1F1 80%) repeat scroll 0% 0% transparent;
|
||||
padding:2px;
|
||||
border-radius:2px;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
left: 7px;
|
||||
|
@ -291,16 +323,3 @@ OL {
|
|||
.list-number6 {
|
||||
list-style-type: lower-roman
|
||||
}
|
||||
/* IE 6/7 fixes */
|
||||
* HTML #ui-slider-handle {
|
||||
background-image: url(../../static/img/current_location.gif)
|
||||
}
|
||||
* HTML #timeslider .star {
|
||||
background-image: url(../../static/img/star.gif)
|
||||
}
|
||||
* HTML #playpause_button_icon {
|
||||
background-image: url(../../static/img/play.gif)
|
||||
}
|
||||
* HTML .pause#playpause_button_icon {
|
||||
background-image: url(../../static/img/pause.gif)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,346 @@
|
|||
{
|
||||
"name": "fontawesome-etherpad",
|
||||
"css_prefix_text": "icon-",
|
||||
"css_use_suffix": false,
|
||||
"hinting": true,
|
||||
"units_per_em": 1000,
|
||||
"ascent": 850,
|
||||
"glyphs": [
|
||||
{
|
||||
"uid": "bf882b30900da12fca090d9796bc3030",
|
||||
"css": "mail",
|
||||
"code": 59402,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "474656633f79ea2f1dad59ff63f6bf07",
|
||||
"css": "star",
|
||||
"code": 59446,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "d17030afaecc1e1c22349b99f3c4992a",
|
||||
"css": "star-empty",
|
||||
"code": 59445,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "8b80d36d4ef43889db10bc1f0dc9a862",
|
||||
"css": "user",
|
||||
"code": 59401,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "31972e4e9d080eaa796290349ae6c1fd",
|
||||
"css": "users",
|
||||
"code": 59400,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "0f99ab40ab0b4d64a74f2d0deeb03e42",
|
||||
"css": "videocam",
|
||||
"code": 59403,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "381da2c2f7fd51f8de877c044d7f439d",
|
||||
"css": "picture",
|
||||
"code": 59404,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "7fd683b2c518ceb9e5fa6757f2276faa",
|
||||
"css": "eye-off",
|
||||
"code": 59405,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "7034e4d22866af82bef811f52fb1ba46",
|
||||
"css": "code",
|
||||
"code": 59431,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "7277ded7695b2a307a5f9d50097bb64c",
|
||||
"css": "print",
|
||||
"code": 59393,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "dcedf50ab1ede3283d7a6c70e2fe32f3",
|
||||
"css": "chat",
|
||||
"code": 59432,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "9c1376672bb4f1ed616fdd78a23667e9",
|
||||
"css": "comment-empty",
|
||||
"code": 59433,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "f48ae54adfb27d8ada53d0fd9e34ee10",
|
||||
"css": "trash-empty",
|
||||
"code": 59434,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "1b5a5d7b7e3c71437f5a26befdd045ed",
|
||||
"css": "doc",
|
||||
"code": 59394,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "9daa1fdf0838118518a7e22715e83abc",
|
||||
"css": "file-pdf",
|
||||
"code": 59395,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "310ffd629da85142bc8669f010556f2d",
|
||||
"css": "file-word",
|
||||
"code": 59396,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "f761c3bbe16ba2d332914ecb28e7a042",
|
||||
"css": "file-excel",
|
||||
"code": 59397,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "edcd4022de8d8df266ef7c42d2658ca5",
|
||||
"css": "file-powerpoint",
|
||||
"code": 59398,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "3c961c1a8d874815856fc6637dc5a13c",
|
||||
"css": "file-image",
|
||||
"code": 59399,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "26613a2e6bc41593c54bead46f8c8ee3",
|
||||
"css": "file-code",
|
||||
"code": 59430,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "e99461abfef3923546da8d745372c995",
|
||||
"css": "cog",
|
||||
"code": 59443,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "19c50c52858a81de58f9db488aba77bc",
|
||||
"css": "mic",
|
||||
"code": 59435,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "598a5f2bcf3521d1615de8e1881ccd17",
|
||||
"css": "clock",
|
||||
"code": 59447,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "bc71f4c6e53394d5ba46b063040014f1",
|
||||
"css": "cw",
|
||||
"code": 59428,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "f9c3205df26e7778abac86183aefdc99",
|
||||
"css": "ccw",
|
||||
"code": 59427,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "a73c5deb486c8d66249811642e5d719a",
|
||||
"css": "arrows-cw",
|
||||
"code": 59429,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "6020aff067fc3c119cdd75daa5249220",
|
||||
"css": "exchange",
|
||||
"code": 59444,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "ce06b5805120d0c2f8d60cd3f1a4fdb5",
|
||||
"css": "play",
|
||||
"code": 59436,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "b624a1e512819d410ddbee84e6918b9d",
|
||||
"css": "stop",
|
||||
"code": 59437,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "0b28050bac9d3facf2f0226db643ece0",
|
||||
"css": "pause",
|
||||
"code": 59438,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "c47efa0e3e74f6ba4c2562c1258fff1f",
|
||||
"css": "to-end",
|
||||
"code": 59426,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "12052b30d23a1a70d6b32962d5464cae",
|
||||
"css": "to-start",
|
||||
"code": 59425,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "f9cbf7508cd04145ade2800169959eef",
|
||||
"css": "font",
|
||||
"code": 59419,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "02cca871bb69da75e8ee286b7055832c",
|
||||
"css": "bold",
|
||||
"code": 59420,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "a8cb1c217f02b073db3670c061cc54d2",
|
||||
"css": "italic",
|
||||
"code": 59421,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "0c708edd8fae2376b3370aa56d40cf9e",
|
||||
"css": "header",
|
||||
"code": 59422,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "c009d417f87d6a27bb5a1cefd30b6cbd",
|
||||
"css": "text-height",
|
||||
"code": 59423,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "13a971bcccd2dda26d4d4eccd8593f8a",
|
||||
"css": "text-width",
|
||||
"code": 59424,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "f4f0e849b805be1f6d76b65581cb3b8b",
|
||||
"css": "align-left",
|
||||
"code": 59392,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "ae6336c46d73af999fe7460c089abb4d",
|
||||
"css": "align-center",
|
||||
"code": 59407,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "e1e7306b47c3c5e6faecce9d32571381",
|
||||
"css": "align-right",
|
||||
"code": 59408,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "25a81737628d1e654a30ad412d7d6dd7",
|
||||
"css": "align-justify",
|
||||
"code": 59409,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "48b87105bd38c20315f1b705b8c7b38c",
|
||||
"css": "list",
|
||||
"code": 59410,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "594e9271c08ff732c04b3bf3117b9040",
|
||||
"css": "indent-left",
|
||||
"code": 59411,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "4d2dfc45d8176b1f26aed973fa84a91e",
|
||||
"css": "indent-right",
|
||||
"code": 59412,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "a2a74f5e7b7d9ba054897d8c795a326a",
|
||||
"css": "list-bullet",
|
||||
"code": 59413,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "f6766a8b042c2453a4e153af03294383",
|
||||
"css": "list-numbered",
|
||||
"code": 59414,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "61c242c9e2134d5864d7fdd57b3c9289",
|
||||
"css": "strike",
|
||||
"code": 59416,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "d4a4a38a40b728f46dad1de4ac950231",
|
||||
"css": "underline",
|
||||
"code": 59415,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "4e88371fb8857dacc1f66afe6314e426",
|
||||
"css": "superscript",
|
||||
"code": 59417,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "3d1c929dbc966992185ce749548c1b2c",
|
||||
"css": "subscript",
|
||||
"code": 59418,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "9396b2d8849e0213a0f11c5fd7fcc522",
|
||||
"css": "tasks",
|
||||
"code": 59442,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "0bda4bc779d4c32623dec2e43bd67ee8",
|
||||
"css": "gauge",
|
||||
"code": 59439,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "cda0cdcfd38f5f1d9255e722dad42012",
|
||||
"css": "spinner",
|
||||
"code": 59406,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "fa9a0b7e788c2d78e24cef1de6b70e80",
|
||||
"css": "brush",
|
||||
"code": 59440,
|
||||
"src": "fontawesome"
|
||||
},
|
||||
{
|
||||
"uid": "be13b8c668eb18839d5d53107725f1de",
|
||||
"css": "slideshare",
|
||||
"code": 59441,
|
||||
"src": "fontawesome"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -6,30 +6,62 @@
|
|||
<font id="fontawesome-etherpad" horiz-adv-x="1000" >
|
||||
<font-face font-family="fontawesome-etherpad" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
||||
<missing-glyph horiz-adv-x="1000" />
|
||||
<glyph glyph-name="users" unicode="" d="m0 367q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143-90-3-148-72h-75q-45 0-77 23t-31 66z m71 340q0 59 42 101t101 42 101-42 42-101-42-101-101-42-101 42-42 101z m72-713q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 23 12q35 0 63-11t47-30 35-45 24-54 15-61 8-61 2-58q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105z m178 499q0 89 63 151t152 63 151-63 63-151-63-152-151-63-152 63-63 152z m393 214q0 59 42 101t101 42 101-42 42-101-42-101-101-42-101 42-42 101z m27-357q45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197 0-43-31-66t-77-22h-75q-57 68-147 71z" horiz-adv-x="1071.4" />
|
||||
<glyph glyph-name="star" unicode="" d="m0 489q0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26 0-12-15-27l-203-197 48-279q1-4 1-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-13-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="cog" unicode="" d="m0 289v124q0 7 5 13t10 7l104 16q8 25 22 51-23 32-60 77-6 7-6 14 0 5 5 12 15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21 9 76 17 104 3 15 20 15h124q7 0 13-4t7-12l15-103q28-9 50-21l80 60q5 5 13 5 7 0 14-5 72-67 92-95 4-5 4-13 0-6-4-12-9-12-29-38t-30-39q14-28 23-55l102-15q7-1 12-7t4-13v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51 19-28 59-77 6-6 6-14t-5-12q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21-9-76-16-104-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 20l-79-59q-6-5-14-5-8 0-14 6-70 63-92 94-4 5-4 12 0 7 5 13 8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13z m286 61q0-59 42-101t101-42 101 42 41 101-41 101-101 42-101-42-42-101z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="bold" unicode="" d="m0-79l1 53q9 2 48 9t59 15q4 7 7 15t4 19 4 18 1 21 0 19v36q0 548-12 572-2 5-12 8t-25 6-28 4-27 3-17 2l-2 46q55 1 190 6t208 5q13 0 38 0t38 0q39 0 76-7t72-24 60-39 41-59 16-76q0-29-9-54t-22-40-36-32-41-25-47-22q86-20 144-75t57-139q0-55-20-100t-52-73-77-47-91-27-98-8q-25 0-74 2t-74 1q-59 0-171-6t-129-7z m297 793q0-28 3-84t2-85q0-15 0-45t-1-44q0-26 1-38 23-4 61-4 46 0 80 7t61 25 41 50 15 79q0 39-16 68t-45 46-60 24-69 8q-28 0-73-7z m4-629q0-21 2-47t7-37q41-18 78-18 210 0 210 187 0 64-23 101-15 24-35 41t-37 26-45 14-47 6-53 1q-40 0-56-6 0-29 0-88t-1-89q0-4 0-37t0-54z" horiz-adv-x="785.7" />
|
||||
<glyph glyph-name="italic" unicode="" d="m0-78l10 48q3 1 45 12t62 21q16 19 23 56 1 4 35 162t63 303 29 165v14q-13 7-30 11t-39 4-32 3l10 58q19-2 67-4t84-4 67-1q27 0 55 1t67 4 55 4q-2-22-10-50-17-6-57-16t-60-19q-5-10-8-23t-5-23-4-25-4-24q-15-82-49-234t-43-198q-1-5-7-32t-11-51-9-46-4-32l1-10q9-3 103-18-2-24-9-55-6 0-18-1t-18-1q-16 0-49 6t-48 6q-77 1-115 1-28 0-79-5t-68-6z" horiz-adv-x="571.4" />
|
||||
<glyph glyph-name="indent-left" unicode="" d="m0 11v107q0 7 5 12t13 6h964q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-964q-7 0-13 5t-5 13z m0 643v107q0 7 5 12t13 6h964q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-964q-7 0-13 5t-5 13z m18-268q0 8 5 13l161 160q5 5 12 5 8 0 13-5t5-13v-321q0-7-5-13t-13-5q-7 0-12 5l-161 161q-5 5-5 13z m339-161v107q0 7 5 13t13 5h607q7 0 13-5t5-13v-107q0-7-5-13t-13-5h-607q-7 0-13 5t-5 13z m0 214v107q0 8 5 13t13 5h607q7 0 13-5t5-13v-107q0-7-5-12t-13-6h-607q-7 0-13 6t-5 12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="indent-right" unicode="" d="m0 11v107q0 7 5 12t13 6h964q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-964q-7 0-13 5t-5 13z m0 214v321q0 8 5 13t13 5q8 0 13-5l160-160q5-5 5-13t-5-13l-160-161q-5-5-13-5-7 0-13 5t-5 13z m0 429v107q0 7 5 12t13 6h964q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-964q-7 0-13 5t-5 13z m357-429v107q0 7 5 13t13 5h607q7 0 13-5t5-13v-107q0-7-5-13t-13-5h-607q-7 0-13 5t-5 13z m0 214v107q0 8 5 13t13 5h607q7 0 13-5t5-13v-107q0-7-5-12t-13-6h-607q-7 0-13 6t-5 12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="list-bullet" unicode="" d="m0 64q0 45 31 76t76 31 76-31 31-76-31-76-76-31-76 31-31 76z m0 286q0 45 31 76t76 31 76-31 31-76-31-76-76-31-76 31-31 76z m0 286q0 44 31 76t76 31 76-31 31-76-31-76-76-31-76 31-31 76z m286-625v107q0 7 5 12t13 6h678q7 0 13-6t5-12v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13z m0 285v108q0 7 5 12t13 5h678q7 0 13-5t5-12v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12z m0 286v107q0 8 5 13t13 5h678q7 0 13-5t5-13v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="list-numbered" unicode="" d="m8 237q0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59v-89h-202q-4 20-4 30z m3-350l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49q0-45-31-70t-75-26q-60 0-96 37z m8 887l76 71h59v-225h60v-56h-187v56h60q0 22 0 68t1 67v7h-1q-5-10-28-30z m267-763v107q0 8 5 13t13 5h678q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-678q-8 0-13 5t-5 13z m0 285v108q0 7 5 12t13 5h678q7 0 13-5t5-12v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12z m0 286v107q0 8 5 13t13 5h678q7 0 13-5t5-13v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="strike" unicode="" d="m0 296v36q0 8 5 13t13 5h964q8 0 13-5t5-13v-36q0-7-5-12t-13-5h-964q-8 0-13 5t-5 12z m214 239q0 101 75 173 74 71 219 71 28 0 94-11 36-7 98-27 6-21 12-66 8-68 8-102 0-10-3-25l-7-2-46 4-8 1q-28 83-58 114-49 51-117 51-64 0-102-33-37-32-37-81 0-41 37-79t156-72q38-11 96-36 33-16 53-29h-414q-16 19-29 44-27 54-27 105z m17-456q0 17 0 38l1 20v25l57 1q8-19 17-40t12-31 7-15q20-32 45-52 24-20 59-32 33-12 73-12 36 0 78 15 43 14 68 48 26 34 26 72 0 47-45 87-19 16-77 40h230q4-22 4-51 0-62-23-119-13-30-40-58-20-19-61-45-44-27-85-37-45-12-113-12-64 0-109 13l-78 23q-32 9-40 15-5 5-5 13v7q0 60-1 87z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="underline" unicode="" d="m0-25v-36q0-8 5-13t13-5h821q8 0 13 5t5 13v36q0 8-5 13t-13 5h-821q-8 0-13-5t-5-13z m0 802q7 0 22 0 34 0 63-2 74-4 92-4 48 0 94 2 65 2 82 3 31 0 48 1l-1-8 1-36v-5q-33-5-69-5-33 0-44-14-7-7-7-73 0-8 0-18t0-15l1-128 8-156q3-69 28-112 20-33 54-52 49-26 98-26 58 0 107 16 31 10 55 28 27 20 37 36 20 31 29 63 12 41 12 128 0 44-2 72t-6 68-8 89l-2 33q-3 37-13 49-19 20-43 19l-56-1-8 2 1 48h47l114-6q43-2 110 6l10-2q3-21 3-28 0-4-2-17-25-7-47-8-41-6-44-9-8-9-8-23 0-4 0-15t1-17q5-11 13-221 3-109-9-170-8-42-23-68-21-36-62-69-42-32-102-49-61-19-142-19-93 0-159 26-66 26-99 68-34 42-47 109-9 44-9 132v186q0 105-9 119-14 20-82 21-21 2-25 3z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="cw" unicode="" d="m0 350q0 87 34 166t92 137 136 92 167 34q82 0 158-31t137-88l72 72q16 18 39 8 22-9 22-33v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-62-91-22-111 22-111 62-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="ccw" unicode="" d="m0 457v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166-34-166-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 12t5 12l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="clock" unicode="" d="m0 350q0 117 58 215t155 156 216 58 215-58 156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215z m125 0q0-83 41-152t110-111 153-41 152 41 110 111 41 152-41 152-110 111-152 41-153-41-110-111-41-152z m161-54v36q0 8 5 13t13 5h125v196q0 8 5 13t12 5h36q8 0 13-5t5-13v-250q0-7-5-12t-13-5h-178q-8 0-13 5t-5 12z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="eye-off" unicode="" d="m0 314q0 22 11 39 86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15 0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 48-80 37-147 97t-117 137q-11 17-11 38z m71 0q94-144 239-209l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197z m259 72q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19-8 19-19 7q-70 0-120-50t-50-119z m170-393l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-86t81-102q11-19 11-39t-11-38q-22-36-61-81-84-96-194-149t-234-53z m89 159l157 281q4-26 4-47 0-78-44-142t-117-92z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="eye" unicode="" d="m0 314q0 19 11 39 78 128 210 205t279 78 279-78 210-205q11-20 11-39t-11-38q-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38z m71 0q75-114 187-182t242-68 242 68 187 182q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197z m259 72q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19-8 19-19 7q-70 0-120-50t-50-119z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="play" unicode="" d="m0-61v822q0 14 9 20t22-2l741-412q13-7 13-17t-13-17l-741-412q-13-7-22-2t-9 20z" horiz-adv-x="785.7" />
|
||||
<glyph glyph-name="fast-bw" unicode="" d="m68 350q0 15 11 25l396 396q11 11 18 8t7-18v-396q3 6 7 10l396 396q11 11 18 8t8-18v-822q0-14-8-18t-18 8l-396 396q-4 5-7 11v-397q0-14-7-18t-18 8l-396 396q-11 11-11 25z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="fast-fw" unicode="" d="m0-61v822q0 14 7 18t18-8l396-396q5-4 8-11v397q0 14 7 18t18-8l396-396q10-11 10-25t-10-25l-396-396q-11-11-18-8t-7 18v396q-3-5-8-10l-396-396q-10-11-18-8t-7 18z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="pause" unicode="" d="m0-43v786q0 14 11 25t25 11h285q15 0 26-11t10-25v-786q0-14-10-25t-26-11h-285q-15 0-25 11t-11 25z m500 0v786q0 14 11 25t25 11h285q15 0 26-11t10-25v-786q0-14-10-25t-26-11h-285q-15 0-25 11t-11 25z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="glass" unicode="" d="m52 746q0 13 10 21t21 9 24 3h786q13 0 24-3t21-9 10-21q0-19-24-43l-353-353v-429h179q15 0 25-10t11-25-11-25-25-11h-500q-14 0-25 11t-11 25 11 25 25 10h179v429l-353 353q-24 24-24 43z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="code" unicode="" d="m25 314q0 8 6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13l-28-28q-5-5-12-5t-13 5l-260 260q-6 6-6 13z m372-350l208 720q3 8 9 11t13 2l35-10q7-2 11-9t1-13l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14z m325 118q0 7 5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-13l-260-260q-6-5-13-5t-13 5l-28 28q-5 6-5 13z" horiz-adv-x="1071.4" />
|
||||
<glyph glyph-name="exchange" unicode="" d="m0 136q0 8 5 13l179 178q5 5 12 5 8 0 13-5t5-13v-107h768q7 0 13-5t5-13v-107q0-7-5-12t-13-6h-768v-107q0-7-5-12t-13-6q-6 0-13 6l-178 178q-5 5-5 13z m0 303v107q0 8 5 13t13 5h768v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13t-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107h-768q-7 0-13 6t-5 12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="chat" unicode="" d="m0 421q0 78 53 144t143 104 197 38 197-38 143-104 53-144-53-143-143-104-197-38q-48 0-98 9-70-50-155-72-21-5-48-9h-2q-6 0-12 5t-6 11q-1 2-1 4t1 4 1 3l1 3t2 3 2 3 3 2 2 3q3 3 13 14t15 16 12 17 14 21 11 25q-69 40-108 98t-40 125z m344-354q32-3 49-3 90 0 172 25t148 72q69 52 107 119t37 141q0 43-13 85 72-39 114-99t42-128q0-67-40-126t-108-98q5-14 11-25t14-21 13-16 14-17 13-14q0 0 2-2t3-3 2-3 2-3l1-3t1-3 1-4-1-3q-2-8-7-13t-13-4q-27 4-48 9-85 23-155 72-50-9-98-9-151 0-263 74z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="align-left" unicode="" d="m1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-714q-15 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-857q-15 0-25 11t-11 25v72q0 14 11 25t25 10h857q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-643q-15 0-25 10t-11 25v72q0 14 11 25t25 11h643q14 0 25-11t10-25z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="print" unicode="" d="m214-7h500v143h-500v-143z m0 357h500v214h-89q-22 0-38 16t-16 38v89h-357v-357z m643-36q0 15-10 25t-26 11-25-11-10-25 10-25 25-10 26 10 10 25z m72 0v-232q0-7-6-12t-12-6h-125v-89q0-22-16-38t-38-16h-536q-22 0-37 16t-16 38v89h-125q-7 0-13 6t-5 12v232q0 44 32 76t75 31h36v304q0 22 16 38t37 16h375q23 0 50-12t42-26l85-85q15-16 27-43t11-49v-143h35q45 0 76-31t32-76z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="doc" unicode="" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="file-pdf" unicode="" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-287 331q18-14 47-31 33 4 65 4 82 0 99-27 9-13 1-29 0-1-1-1l-1-2v0q-3-21-39-21-27 0-65 11t-72 29q-123-13-219-46-85-146-135-146-8 0-15 4l-14 6q0 1-3 3-6 6-4 20 5 23 32 51t73 54q8 5 13-3 1-1 1-2 29 47 60 110 38 76 58 146-13 46-17 89t4 71q6 22 23 22h12q13 0 20-8 10-12 5-38-1-3-2-4 0-2 0-5v-17q-1-68-8-107 31-91 82-133z m-322-229q30 13 77 88-29-22-49-47t-28-41z m223 513q-9-23-2-73 1 4 4 24 0 2 4 24 1 3 3 5-1 0-1 1t0 1-1 1q0 12-7 20 0-1 0-1v-2z m-70-368q76 30 159 45-1 0-7 5t-9 8q-43 37-71 98-15-48-47-110-16-31-25-46z m361 8q-14 14-78 14 42-16 69-16 8 0 10 1 0 0-1 1z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="file-word" unicode="" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-656 500v-59h39l92-369h88l72 271q4 11 5 25 1 9 1 14h3l1-14q1-1 2-11t3-14l72-271h89l91 369h39v59h-167v-59h50l-55-245q-3-11-4-25l-1-12h-3l-1 12q-1 2-2 11t-3 14l-81 304h-63l-81-304q-1-5-2-13t-2-12l-2-12h-2l-2 12q-1 14-4 25l-55 245h50v59h-167z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="file-excel" unicode="" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-547 131v-59h157v59h-42l58 90q3 4 5 9t5 8 2 2h1q0-2 2-6 2-2 3-4t3-4 4-5l60-90h-43v-59h163v59h-38l-107 152 108 158h38v59h-156v-59h41l-57-89q-2-4-6-9t-5-8l-1-1h-1q-1 2-3 5-3 6-9 13l-59 89h42v59h-162v-59h38l106-152-109-158h-38z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="file-powerpoint" unicode="" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-554 131v-59h183v59h-52v93h76q43 0 66 9 37 12 59 48t23 82q0 45-21 78t-56 49q-27 10-72 10h-206v-59h52v-310h-52z m197 156h-66v150h67q29 0 46-10 31-19 31-64 0-50-34-67-18-9-44-9z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="file-image" unicode="" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-72 250v-178h-571v107l107 107 71-71 215 214z m-464 108q-45 0-76 31t-31 76 31 76 76 31 76-31 31-76-31-76-76-31z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="users" unicode="" d="m331 350q-90-3-148-71h-75q-45 0-77 22t-31 66q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143z m598-356q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 23 12q35 0 63-11t47-30 35-45 24-54 15-61 8-61 2-58z m-572 713q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m393-214q0-89-63-152t-151-62-152 62-63 152 63 151 152 63 151-63 63-151z m321-126q0-43-31-66t-77-22h-75q-57 68-147 71 45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197z m-71 340q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z" horiz-adv-x="1071.4" />
|
||||
<glyph glyph-name="user" unicode="" d="m786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" />
|
||||
<glyph glyph-name="mail" unicode="" d="m929 11v428q-18-20-39-37-149-114-238-188-28-24-46-38t-48-27-57-13h-2q-26 0-57 13t-48 27-46 38q-88 74-238 188-21 17-39 37v-428q0-8 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 82-159 108-85 224-177 4-2 20-16t25-21 25-18 28-15 24-5h2q11 0 24 5t28 15 25 18 25 21 20 16q116 92 224 177 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="videocam" unicode="" d="m1000 654v-608q0-23-22-32-7-3-14-3-15 0-25 10l-225 225v-92q0-67-47-114t-113-47h-393q-67 0-114 47t-47 114v392q0 67 47 114t114 47h393q66 0 113-47t47-114v-92l225 225q10 10 25 10 7 0 14-3 22-9 22-32z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="picture" unicode="" d="m357 529q0-45-31-76t-76-32-76 32-31 76 31 75 76 32 76-32 31-75z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-8 6-13t12-5h893q7 0 13 5t5 13v678q0 7-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" />
|
||||
<glyph glyph-name="eye-off" unicode="" d="m310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-92l157 281q4-26 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-86t81-102q11-19 11-39z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="spinner" unicode="" d="m277 100q0-33-24-57t-57-23q-33 0-56 23t-24 57 24 57 56 23q33 0 57-23t24-57z m241-107q0-30-21-51t-51-21-50 21-21 51 21 50 50 21 51-21 21-50z m-339 357q0-37-27-63t-63-26-63 26-26 63 26 63 63 26 63-26 27-63z m580-250q0-26-18-44t-45-18-44 18-18 44 18 44 44 19 45-19 18-44z m-464 500q0-41-29-69t-70-29-69 29-29 69 29 69 69 29 70-29 29-69z m259 107q0-45-32-76t-76-31-75 31-32 76 32 76 75 31 76-31 32-76z m303-357q0-22-15-38t-38-16-38 16-16 38 16 38 38 16 38-16 15-38z m-116 250q0-18-13-32t-32-13-31 13-13 32 13 31 31 14 32-14 13-31z" horiz-adv-x="875" />
|
||||
<glyph glyph-name="align-center" unicode="" d="m1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-500q-14 0-25 11t-11 25v71q0 15 11 25t25 11h500q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-786q-14 0-25 11t-11 25v72q0 14 11 25t25 10h786q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-358q-14 0-25 10t-10 25v72q0 14 10 25t25 11h358q14 0 25-11t10-25z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="align-right" unicode="" d="m1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 214v-71q0-15-11-25t-25-11h-714q-14 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m0 215v-72q0-14-11-25t-25-11h-857q-14 0-25 11t-11 25v72q0 14 11 25t25 10h857q15 0 25-10t11-25z m0 214v-72q0-14-11-25t-25-10h-643q-14 0-25 10t-10 25v72q0 14 10 25t25 11h643q15 0 25-11t11-25z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="align-justify" unicode="" d="m1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 214v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 215v-72q0-14-11-25t-25-11h-928q-15 0-25 11t-11 25v72q0 14 11 25t25 10h928q15 0 25-10t11-25z m0 214v-72q0-14-11-25t-25-10h-928q-15 0-25 10t-11 25v72q0 14 11 25t25 11h928q15 0 25-11t11-25z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="list" unicode="" d="m143 118v-107q0-7-5-13t-13-5h-107q-7 0-13 5t-5 13v107q0 7 5 12t13 6h107q7 0 13-6t5-12z m0 214v-107q0-7-5-13t-13-5h-107q-7 0-13 5t-5 13v107q0 7 5 13t13 5h107q7 0 13-5t5-13z m0 214v-107q0-7-5-12t-13-6h-107q-7 0-13 6t-5 12v107q0 8 5 13t13 5h107q7 0 13-5t5-13z m857-428v-107q0-7-5-13t-13-5h-750q-7 0-12 5t-6 13v107q0 7 6 12t12 6h750q7 0 13-6t5-12z m-857 643v-107q0-8-5-13t-13-5h-107q-7 0-13 5t-5 13v107q0 7 5 12t13 6h107q7 0 13-6t5-12z m857-429v-107q0-7-5-13t-13-5h-750q-7 0-12 5t-6 13v107q0 7 6 13t12 5h750q7 0 13-5t5-13z m0 214v-107q0-7-5-12t-13-6h-750q-7 0-12 6t-6 12v107q0 8 6 13t12 5h750q7 0 13-5t5-13z m0 215v-107q0-8-5-13t-13-5h-750q-7 0-12 5t-6 13v107q0 7 6 12t12 6h750q7 0 13-6t5-12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="indent-left" unicode="" d="m214 546v-321q0-7-5-13t-13-5q-7 0-12 5l-161 161q-5 5-5 13t5 13l161 160q5 5 12 5 8 0 13-5t5-13z m786-428v-107q0-7-5-13t-13-5h-964q-7 0-13 5t-5 13v107q0 7 5 12t13 6h964q7 0 13-6t5-12z m0 214v-107q0-7-5-13t-13-5h-607q-7 0-13 5t-5 13v107q0 7 5 13t13 5h607q7 0 13-5t5-13z m0 214v-107q0-7-5-12t-13-6h-607q-7 0-13 6t-5 12v107q0 8 5 13t13 5h607q7 0 13-5t5-13z m0 215v-107q0-8-5-13t-13-5h-964q-7 0-13 5t-5 13v107q0 7 5 12t13 6h964q7 0 13-6t5-12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="indent-right" unicode="" d="m196 386q0-8-5-13l-160-161q-5-5-13-5-7 0-13 5t-5 13v321q0 8 5 13t13 5q8 0 13-5l160-160q5-5 5-13z m804-268v-107q0-7-5-13t-13-5h-964q-7 0-13 5t-5 13v107q0 7 5 12t13 6h964q7 0 13-6t5-12z m0 214v-107q0-7-5-13t-13-5h-607q-7 0-13 5t-5 13v107q0 7 5 13t13 5h607q7 0 13-5t5-13z m0 214v-107q0-7-5-12t-13-6h-607q-7 0-13 6t-5 12v107q0 8 5 13t13 5h607q7 0 13-5t5-13z m0 215v-107q0-8-5-13t-13-5h-964q-7 0-13 5t-5 13v107q0 7 5 12t13 6h964q7 0 13-6t5-12z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="list-bullet" unicode="" d="m214 64q0-44-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m0 286q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 7 5 12t13 6h678q7 0 13-6t5-12z m-786 518q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="list-numbered" unicode="" d="m213-54q0-45-31-70t-75-26q-60 0-96 37l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49z m1 350v-89h-202q-4 20-4 30 0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59z m786-178v-107q0-8-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 8 5 13t13 5h678q7 0 13-6t5-12z m-786 502v-56h-187v56h60q0 22 0 68t1 67v7h-1q-5-10-28-30l-40 42 76 71h59v-225h60z m786-216v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="underline" unicode="" d="m27 726q-21 1-25 2l-2 49q7 0 22 0 34 0 63-2 74-4 92-4 48 0 94 2 65 2 82 3 31 0 48 1l-1-8 1-36v-5q-33-5-69-5-33 0-44-14-7-7-7-73 0-8 0-18t0-15l1-128 8-156q3-69 28-112 20-33 54-52 49-26 98-26 58 0 107 16 31 10 55 28 27 20 37 36 20 31 29 63 12 41 12 128 0 44-2 72t-6 68-8 89l-2 33q-3 37-13 49-19 20-43 19l-56-1-8 2 1 48h47l114-6q43-2 110 6l10-2q3-21 3-28 0-4-2-17-25-7-47-8-41-6-44-9-8-9-8-23 0-4 0-15t1-17q5-11 13-221 3-109-9-170-8-42-23-68-21-36-62-69-42-32-102-49-61-19-142-19-93 0-159 26-66 26-99 68-34 42-47 109-9 44-9 132v186q0 105-9 119-14 20-82 21z m830-787v36q0 8-5 13t-13 5h-821q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h821q8 0 13 5t5 13z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="strike" unicode="" d="m982 350q8 0 13-5t5-13v-36q0-7-5-12t-13-5h-964q-8 0-13 5t-5 12v36q0 8 5 13t13 5h964z m-712 36q-16 19-29 44-27 54-27 105 0 101 75 173 74 71 219 71 28 0 94-11 36-7 98-27 6-21 12-66 8-68 8-102 0-10-3-25l-7-2-46 4-8 1q-28 83-58 114-49 51-117 51-64 0-102-33-37-32-37-81 0-41 37-79t156-72q38-11 96-36 33-16 53-29h-414z m282-143h230q4-22 4-51 0-62-23-119-13-30-40-58-20-19-61-45-44-27-85-37-45-12-113-12-64 0-109 13l-78 23q-32 8-40 15-5 5-5 12v8q0 60-1 87 0 17 0 38l1 20v25l57 1q8-19 17-40t12-31 7-15q20-32 45-52 24-20 59-32 33-12 73-12 36 0 78 15 43 14 68 48 26 34 26 72 0 47-45 87-19 16-77 40z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="superscript" unicode="" d="m501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2l-5-12q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m355 379v-115h-287l-1 15q-3 16-3 26 0 35 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-29 0-54-21-8-7-20-22l-59 52q15 20 35 37 46 36 105 36 61 0 99-33t38-89q0-31-13-57t-35-43-45-33-46-28-37-29-17-35h130v45h70z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="subscript" unicode="" d="m501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2l-5-12q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m356-121v-115h-287l-2 15q-2 25-2 26 0 35 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-29 0-54-21-8-6-20-22l-59 52q15 20 35 37 45 36 105 36 62 0 99-33t38-89q0-37-19-66t-47-48-55-35-49-35-23-41h130v45h70z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="font" unicode="" d="m405 538l-95-251q18 0 76-1t89-1q11 0 32 1-48 141-102 252z m-405-617l1 44q13 4 31 7t32 6 28 8 25 17 17 28l132 344 156 404h72q4-8 6-12l114-268q19-44 60-144t63-153q9-19 33-81t40-94q11-25 19-31 11-9 49-17t47-11q4-22 4-32 0-2-1-7t0-8q-35 0-106 5t-107 4q-42 0-120-4t-99-4q0 24 2 43l73 16q1 0 7 1t9 2 8 3 9 4 6 4 5 6 1 8q0 9-17 54t-40 99-24 56l-251 1q-14-33-43-109t-28-91q0-12 8-21t24-14 27-7 32-5 23-2q1-11 1-32 0-5-2-16-32 0-97 6t-97 6q-5 0-15-3t-12-2q-45-8-105-8z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="bold" unicode="" d="m310 1q41-18 78-18 210 0 210 187 0 64-23 101-15 24-35 41t-37 26-45 14-47 6-53 1q-40 0-56-6 0-29 0-88t-1-89q0-4 0-37t0-54 2-47 7-37z m-8 417q23-4 61-4 46 0 80 7t61 25 41 50 15 79q0 39-16 68t-45 46-60 24-69 8q-28 0-73-7 0-28 3-84t2-85q0-15 0-45t-1-44q0-26 1-38z m-302-497l1 53q9 2 48 9t59 15q4 7 7 15t4 19 4 18 1 21 0 19v36q0 548-12 572-2 5-12 8t-25 6-28 4-27 3-17 2l-2 46q55 1 190 6t208 5q13 0 38 0t38 0q39 0 76-7t72-24 60-39 41-59 16-76q0-29-9-54t-22-40-36-32-41-25-47-22q86-20 144-75t57-139q0-55-20-100t-52-73-77-47-91-27-98-8q-25 0-74 2t-74 1q-59 0-171-6t-129-7z" horiz-adv-x="785.7" />
|
||||
<glyph glyph-name="italic" unicode="" d="m0-78l10 48q3 1 45 12t62 21q16 19 23 56 1 4 35 162t63 303 29 165v14q-13 7-30 11t-39 4-32 3l10 58q19-2 67-4t84-4 67-1q27 0 55 1t67 4 55 4q-2-22-10-50-17-6-57-16t-60-19q-5-10-8-23t-5-23-4-25-4-24q-15-82-49-234t-43-198q-1-5-7-32t-11-51-9-46-4-32l1-10q9-3 103-18-2-24-9-55-6 0-18-1t-18-1q-16 0-49 6t-48 6q-77 1-115 1-28 0-79-5t-68-6z" horiz-adv-x="571.4" />
|
||||
<glyph glyph-name="header" unicode="" d="m939-79q-25 0-74 2t-75 2q-24 0-73-2t-74-2q-14 0-21 12t-7 25q0 17 9 26t22 9 29 4 25 9q18 11 18 78l0 218q0 12-1 17-7 3-28 3h-376q-22 0-29-3 0-5 0-17l-1-207q0-79 21-92 9-5 26-7t32-2 25-8 11-26q0-14-7-26t-20-13q-26 0-78 2t-77 2q-24 0-71-2t-71-2q-13 0-20 12t-7 25q0 17 9 25t20 10 26 4 24 9q18 13 18 80l-1 31v454q0 2 1 14t0 21-1 21-2 24-4 20-6 18-9 10q-8 5-25 6t-29 2-23 7-10 26q0 14 6 26t20 13q26 0 78-2t77-2q23 0 71 2t70 2q14 0 21-13t7-26q0-17-9-25t-22-8-28-2-24-7q-19-12-19-90l1-178q0-12 0-18 7-2 22-2h390q14 0 21 2 1 6 1 18l0 178q0 78-19 90-10 6-33 7t-37 7-14 28q0 14 7 26t21 13q24 0 74-2t73-2q24 0 72 2t72 2q14 0 21-13t7-26q0-17-10-25t-22-8-29-2-24-7q-20-13-20-90l1-526q0-66 19-78 9-6 25-7t30-3 23-9 10-24q0-15-6-27t-20-13z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="text-height" unicode="" d="m973 64q19 0 24-10t-6-25l-71-90q-11-15-27-15t-27 15l-71 90q-11 15-6 25t23 10h45v572h-45q-18 0-23 10t6 25l71 90q11 15 27 15t27-15l71-90q11-15 6-25t-24-10h-44v-572h44z m-928 714l30-15q7-3 118-3 25 0 74 1t73 1q21 0 60 0t60 0h164q3 0 12 0t11 0 9 1 10 5 8 10l24 1q2 0 7-1t8 0q1-62 1-187 0-45-2-61-22-8-38-10-14 24-31 71-1 5-6 27t-8 41-4 20q-3 4-7 7t-8 3-8 1-10 1-9-1q-9 0-37 1t-42 0-35-1-40-4q-5-45-4-75 0-53 1-217t1-254q0-9-1-40t0-51 7-38q22-12 69-24t67-21q2-22 2-28 0-8-1-16l-19-1q-43-1-122 5t-115 5q-28 0-85-5t-84-5q-2 29-2 29v5q9 15 34 24t55 17 44 15q10 23 10 213 0 57-1 169t-2 170v65q0 1 0 8t1 14-1 15-2 13-3 8q-6 7-90 7-18 0-52-7t-44-15q-11-7-19-40t-18-62-24-30q-23 15-31 25v213z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="text-width" unicode="" d="m45 778l30-15q7-3 118-3 25 0 74 1t73 1q39 0 138 1t170 0 138-2q18-1 31 17l23 0q3 0 8 0t8 0q1-63 1-188 0-44-3-60-21-8-38-10-14 24-30 71-1 5-6 26t-8 41-4 21q-6 7-15 10-3 1-37 1-17 0-52 1t-57 1-53-2-53-4q-5-45-5-75l1-85v29q0-31 0-86t1-101 0-85q0-9-1-40t0-51 7-38q22-12 69-24t67-21q3-22 3-28 0-8-2-16l-19-1q-42-1-121 5t-116 5q-28 0-84-5t-85-5q-2 29-2 29v5q10 15 35 24t55 16 43 16q4 8 7 41t3 81 1 86-1 86 0 50q0 4-1 12t-2 12q0 4 1 25t0 41 0 42-1 38-4 18q-6 7-90 7-23 0-91-8t-77-14q-11-6-19-40t-18-62-24-30q-23 15-31 25v213z m686-715q7 0 23-11t33-23 33-28 20-17q14-11 14-27t-14-27q-2-2-20-17t-33-27-33-23-23-11q-7 0-11 5t-6 16-1 19 0 18 1 11h-571q0-1 1-11t1-18-2-19-5-16-12-5q-7 0-23 11t-32 23-34 27-20 17q-14 11-14 27t14 27q3 2 20 17t34 28 32 23 23 11q7 0 12-6t5-16 2-19-1-18-1-11h571q0 1-1 11t0 18 1 19 6 16 11 6z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="to-start" unicode="" d="m546 771q11 11 18 8t7-18v-822q0-14-7-18t-18 8l-396 396q-5 5-7 11v-379q0-14-11-25t-25-11h-71q-15 0-25 11t-11 25v786q0 14 11 25t25 11h71q15 0 25-11t11-25v-379q2 7 7 11z" horiz-adv-x="571.4" />
|
||||
<glyph glyph-name="to-end" unicode="" d="m25-71q-10-11-18-8t-7 18v822q0 14 7 18t18-8l396-396q5-4 8-11v379q0 14 10 25t25 11h72q14 0 25-11t10-25v-786q0-14-10-25t-25-11h-72q-14 0-25 11t-10 25v379q-3-6-8-11z" horiz-adv-x="571.4" />
|
||||
<glyph glyph-name="ccw" unicode="" d="m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="cw" unicode="" d="m857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-62-91-22-111 22-111 62-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q16 18 39 8 22-9 22-33z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="arrows-cw" unicode="" d="m843 261q0-3 0-4-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11-11 25v250q0 14 11 25t25 11h250q14 0 25-11t10-25-10-25l-77-77q40-37 90-57t105-20q74 0 139 37t104 99q6 10 29 66 5 13 17 13h107q8 0 13-6t5-12z m14 446v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25 10 25l77 77q-82 77-194 77-75 0-140-37t-104-99q-6-10-29-66-5-13-17-13h-111q-7 0-13 6t-5 12v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11 10-25z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="file-code" unicode="" d="m819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 16-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 15t-16 38v233h-429v-858h715z m-518 500q4 7 12 7t13-3l28-21q7-5 7-12t-3-14l-102-135 102-136q4-6 3-13t-7-12l-28-21q-6-4-13-4t-12 7l-126 168q-8 11 0 21z m447-168q8-10 0-21l-126-168q-4-6-11-7t-14 4l-28 21q-6 5-7 12t3 13l102 136-102 135q-4 7-3 14t7 12l28 21q6 4 14 3t11-7z m-346-257q-7 1-11 7t-3 14l77 464q1 7 7 11t14 3l35-5q7-2 11-8t3-13l-77-464q-1-7-7-11t-13-3z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="code" unicode="" d="m344 69l-28-28q-5-5-12-5t-13 5l-260 260q-6 6-6 13t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l208 720q3 8 9 11t13 2l35-10q7-2 11-9t1-13z m367-364l-260-260q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-13z" horiz-adv-x="1071.4" />
|
||||
<glyph glyph-name="chat" unicode="" d="m786 421q0-77-53-143t-143-104-197-38q-48 0-98 9-70-49-155-72-21-5-48-9h-2q-6 0-12 5t-6 12q-1 1-1 3t1 4 1 3l1 3t2 3 2 3 3 3 2 2q3 3 13 14t15 16 12 17 14 21 11 25q-69 40-108 98t-40 125q0 78 53 144t143 104 197 38 197-38 143-104 53-144z m214-142q0-67-40-126t-108-98q5-14 11-25t14-21 13-16 14-17 13-14q0 0 2-2t3-3 2-3 2-3l1-3t1-3 1-4-1-3q-2-8-7-13t-13-4q-27 4-48 9-85 23-155 72-50-9-98-9-151 0-263 74 32-3 49-3 90 0 172 25t148 72q69 52 107 119t37 141q0 43-13 85 72-39 114-99t42-128z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="comment-empty" unicode="" d="m500 636q-114 0-213-39t-157-105-59-142q0-62 40-119t113-98l48-28-15-54q-13-50-39-95 85 35 154 95l24 21 31-3q39-5 73-5 114 0 213 39t157 105 59 142-59 142-157 105-213 39z m500-286q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-7-63-12h-3q-8 0-15 6t-9 15v1q-2 2 0 7t1 5 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 97 67 179t182 130 251 48 251-48 182-130 67-179z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="trash-empty" unicode="" d="m286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q22 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
|
||||
<glyph glyph-name="mic" unicode="" d="m643 457v-71q0-124-82-215t-204-104v-74h143q15 0 25-11t11-25-11-25-25-11h-357q-15 0-25 11t-11 25 11 25 25 11h143v74q-121 13-204 104t-82 215v71q0 15 11 25t25 11 25-11 10-25v-71q0-104 74-177t176-73 177 73 73 177v71q0 15 11 25t25 11 25-11 11-25z m-143 214v-285q0-74-52-126t-127-53-126 53-52 126v285q0 74 52 127t126 52 127-52 52-127z" horiz-adv-x="642.9" />
|
||||
<glyph glyph-name="play" unicode="" d="m772 333l-741-412q-13-7-22-2t-9 20v822q0 14 9 20t22-2l741-412q13-7 13-17t-13-17z" horiz-adv-x="785.7" />
|
||||
<glyph glyph-name="stop" unicode="" d="m857 743v-786q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v786q0 14 11 25t25 11h785q15 0 26-11t10-25z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="pause" unicode="" d="m857 743v-786q0-14-10-25t-26-11h-285q-15 0-25 11t-11 25v786q0 14 11 25t25 11h285q15 0 26-11t10-25z m-500 0v-786q0-14-10-25t-26-11h-285q-15 0-25 11t-11 25v786q0 14 11 25t25 11h285q15 0 26-11t10-25z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="gauge" unicode="" d="m214 207q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m107 250q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m239-268l57 213q3 14-5 27t-21 16-27-3-17-22l-56-213q-33-3-60-25t-35-55q-11-43 11-81t66-50 81 11 50 66q9 33-4 65t-40 51z m369 18q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-358 357q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m250-107q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m179-250q0-145-79-269-10-17-30-17h-782q-20 0-30 17-79 123-79 269 0 102 40 194t106 160 160 107 194 39 194-39 160-107 106-160 40-194z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="brush" unicode="" d="m901 850q39 0 69-26t29-65q0-35-25-84-185-351-260-420-54-51-121-51-71 0-121 52t-51 122q0 72 52 119l356 323q33 30 72 30z m-507-577q22-42 59-73t84-42l1-40q2-119-72-193t-195-75q-68 0-121 26t-86 71-48 102-16 123q4-3 23-17t35-25 32-20 26-9q23 0 31 20 14 37 32 63t39 42 49 27 57 14 70 6z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="slideshare" unicode="" d="m487 437q0-46-35-79t-85-34-85 34-36 79q0 47 36 80t85 33 85-33 35-80z m280 0q0-46-35-79t-85-34q-50 0-85 34t-36 79q0 47 36 80t85 33q50 0 85-33t35-80z m126-100v372q0 48-18 69t-62 20h-620q-47 0-63-19t-17-70v-376q24-13 50-22t45-16 45-10 40-6 39-2 32-1 32 1 25 1q38 1 53-15 3-3 5-5 15-14 34-28 4 51 66 48 3 0 21 0t24-1 25-1 30 1 30 2 34 5 35 7 37 11 38 15 40 20z m91 2q-68-83-208-140 47-159-13-260-36-63-102-82-58-18-101 8-48 28-46 92l-1 182v0q-4 1-13 3t-13 3l-1-188q2-64-46-92-44-26-102-8-66 20-102 83-59 101-12 259-140 57-208 140-14 21-2 36t33-1q2-1 7-4t6-4v387q0 40 26 69t64 28h701q37 0 64-28t26-69v-387l12 8q21 15 33 0t-2-35z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="tasks" unicode="" d="m571 64h358v72h-358v-72z m-214 286h572v71h-572v-71z m357 286h215v71h-215v-71z m286-465v-142q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v142q0 15 11 26t25 10h928q15 0 25-10t11-26z m0 286v-143q0-14-11-25t-25-10h-928q-15 0-25 10t-11 25v143q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 286v-143q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v143q0 14 11 25t25 11h928q15 0 25-11t11-25z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="cog" unicode="" d="m571 350q0 59-41 101t-101 42-101-42-42-101 42-101 101-42 101 42 41 101z m286 61v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51 19-27 59-77 6-6 6-13t-5-13q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21-9-76-16-104-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 21l-79-60q-6-5-14-5-8 0-14 6-70 64-92 94-4 5-4 13 0 6 5 12 8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13v124q0 7 5 13t10 7l104 16q8 25 22 51-23 32-60 77-6 7-6 14 0 5 5 12 15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21 9 76 17 104 3 15 20 15h124q7 0 13-4t7-12l15-103q28-9 50-21l80 60q5 5 13 5 7 0 14-5 72-67 92-95 4-5 4-13 0-6-4-12-9-12-29-38t-30-39q14-28 23-55l102-15q7-1 12-7t4-13z" horiz-adv-x="857.1" />
|
||||
<glyph glyph-name="exchange" unicode="" d="m1000 189v-107q0-7-5-12t-13-6h-768v-107q0-7-5-12t-13-6q-6 0-13 6l-178 178q-5 5-5 13 0 8 5 13l179 178q5 5 12 5 8 0 13-5t5-13v-107h768q7 0 13-5t5-13z m0 304q0-8-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107h-768q-7 0-13 6t-5 12v107q0 8 5 13t13 5h768v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z" horiz-adv-x="1000" />
|
||||
<glyph glyph-name="star-empty" unicode="" d="m634 290l171 165-235 35-106 213-105-213-236-35 171-165-41-235 211 111 211-111z m295 199q0-12-15-27l-203-197 48-279q1-4 1-12 0-28-23-28-10 0-22 7l-251 132-250-132q-13-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="star" unicode="" d="m929 489q0-12-15-27l-203-197 48-279q1-4 1-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-13-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
|
||||
<glyph glyph-name="clock" unicode="" d="m500 546v-250q0-7-5-12t-13-5h-178q-8 0-13 5t-5 12v36q0 8 5 13t13 5h125v196q0 8 5 13t12 5h36q8 0 13-5t5-13z m232-196q0 83-41 152t-110 111-152 41-153-41-110-111-41-152 41-152 110-111 153-41 152 41 110 111 41 152z m125 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
|
||||
</font>
|
||||
</defs>
|
||||
</svg>
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 697 B |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 1009 B |
Before Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 494 B |
Before Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 131 B |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 182 B |
Before Width: | Height: | Size: 686 B |
Before Width: | Height: | Size: 517 B |
|
@ -152,7 +152,6 @@ function Ace2Inner(){
|
|||
var dmesg = noop;
|
||||
window.dmesg = noop;
|
||||
|
||||
|
||||
var scheduler = parent; // hack for opera required
|
||||
|
||||
var textFace = 'monospace';
|
||||
|
@ -597,6 +596,13 @@ function Ace2Inner(){
|
|||
fixView();
|
||||
});
|
||||
}, 0);
|
||||
|
||||
// Chrome can't handle the truth.. If CSS rule white-space:pre-wrap
|
||||
// is true then any paste event will insert two lines..
|
||||
if(browser.chrome){
|
||||
$("#innerdocbody").css({"white-space":"normal"});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function setStyled(newVal)
|
||||
|
@ -3601,6 +3607,26 @@ function Ace2Inner(){
|
|||
return;
|
||||
}
|
||||
|
||||
// Is caret potentially hidden by the chat button?
|
||||
var myselection = document.getSelection(); // get the current caret selection
|
||||
var caretOffsetTop = myselection.focusNode.parentNode.offsetTop | myselection.focusNode.offsetTop; // get the carets selection offset in px IE 214
|
||||
|
||||
if(myselection.focusNode.wholeText){ // Is there any content? If not lineHeight will report wrong..
|
||||
var lineHeight = myselection.focusNode.parentNode.offsetHeight; // line height of populated links
|
||||
}else{
|
||||
var lineHeight = myselection.focusNode.offsetHeight; // line height of blank lines
|
||||
}
|
||||
var heightOfChatIcon = parent.parent.$('#chaticon').height(); // height of the chat icon button
|
||||
lineHeight = (lineHeight *2) + heightOfChatIcon;
|
||||
var viewport = getViewPortTopBottom();
|
||||
var viewportHeight = viewport.bottom - viewport.top - lineHeight;
|
||||
var relCaretOffsetTop = caretOffsetTop - viewport.top; // relative Caret Offset Top to viewport
|
||||
if (viewportHeight < relCaretOffsetTop){
|
||||
parent.parent.$("#chaticon").css("opacity",".3"); // make chaticon opacity low when user types near it
|
||||
}else{
|
||||
parent.parent.$("#chaticon").css("opacity","1"); // make chaticon opacity back to full (so fully visible)
|
||||
}
|
||||
|
||||
//dmesg("keyevent type: "+type+", which: "+which);
|
||||
// Don't take action based on modifier keys going up and down.
|
||||
// Modifier keys do not generate "keypress" events.
|
||||
|
|
|
@ -379,16 +379,16 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded)
|
|||
{
|
||||
var self = this;
|
||||
|
||||
$(self).css('background-image', 'url(/static/img/crushed_button_depressed.png)');
|
||||
// $(self).css('background-image', 'url(/static/img/crushed_button_depressed.png)');
|
||||
$(self).mouseup(function(evt2)
|
||||
{
|
||||
$(self).css('background-image', 'url(/static/img/crushed_button_undepressed.png)');
|
||||
// $(self).css('background-image', 'url(/static/img/crushed_button_undepressed.png)');
|
||||
$(self).unbind('mouseup');
|
||||
BroadcastSlider.playpause();
|
||||
});
|
||||
$(document).mouseup(function(evt2)
|
||||
{
|
||||
$(self).css('background-image', 'url(/static/img/crushed_button_undepressed.png)');
|
||||
// $(self).css('background-image', 'url(/static/img/crushed_button_undepressed.png)');
|
||||
$(document).unbind('mouseup');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -23,28 +23,16 @@
|
|||
window.html10n = (function(window, document, undefined) {
|
||||
|
||||
// fix console
|
||||
var console = window.console
|
||||
function interceptConsole(method){
|
||||
if (!console) return function() {}
|
||||
|
||||
var original = console[method]
|
||||
|
||||
// do sneaky stuff
|
||||
if (original.bind){
|
||||
// Do this for normal browsers
|
||||
return original.bind(console)
|
||||
}else{
|
||||
return function() {
|
||||
// Do this for IE
|
||||
var message = Array.prototype.slice.apply(arguments).join(' ')
|
||||
original(message)
|
||||
}
|
||||
(function() {
|
||||
var noop = function() {};
|
||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
||||
var console = (window.console = window.console || {});
|
||||
for (var i = 0; i < names.length; ++i) {
|
||||
if (!console[names[i]]) {
|
||||
console[names[i]] = noop;
|
||||
}
|
||||
}
|
||||
var consoleLog = interceptConsole('log')
|
||||
, consoleWarn = interceptConsole('warn')
|
||||
, consoleError = interceptConsole('warn')
|
||||
|
||||
}
|
||||
}());
|
||||
|
||||
// fix Array#forEach in IE
|
||||
// taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
|
||||
|
@ -148,7 +136,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
for (var i=0, n=this.resources.length; i < n; i++) {
|
||||
this.fetch(this.resources[i], lang, function(e) {
|
||||
reqs++;
|
||||
if(e) consoleWarn(e)
|
||||
if(e) console.warn(e)
|
||||
|
||||
if (reqs < n) return;// Call back once all reqs are completed
|
||||
cb && cb()
|
||||
|
@ -647,7 +635,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
// return a function that gives the plural form name for a given integer
|
||||
var index = locales2rules[lang.replace(/-.*$/, '')];
|
||||
if (!(index in pluralRules)) {
|
||||
consoleWarn('plural form unknown for [' + lang + ']');
|
||||
console.warn('plural form unknown for [' + lang + ']');
|
||||
return function() { return 'other'; };
|
||||
}
|
||||
return pluralRules[index];
|
||||
|
@ -727,7 +715,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
var i = 0
|
||||
, n = list.length
|
||||
iterator(list[i], i, function each(err) {
|
||||
if(err) consoleLog(err)
|
||||
if(err) console.error(err)
|
||||
i++
|
||||
if (i < n) return iterator(list[i],i, each);
|
||||
cb()
|
||||
|
@ -750,8 +738,8 @@ window.html10n = (function(window, document, undefined) {
|
|||
|
||||
html10n.get = function(id, args) {
|
||||
var translations = html10n.translations
|
||||
if(!translations) return consoleWarn('No translations available (yet)')
|
||||
if(!translations[id]) return consoleWarn('Could not find string '+id)
|
||||
if(!translations) return console.warn('No translations available (yet)')
|
||||
if(!translations[id]) return console.warn('Could not find string '+id)
|
||||
|
||||
// apply macros
|
||||
var str = translations[id]
|
||||
|
@ -781,7 +769,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
} else if (arg in translations) {
|
||||
sub = translations[arg]
|
||||
} else {
|
||||
consoleWarn('Could not find argument {{' + arg + '}}')
|
||||
console.warn('Could not find argument {{' + arg + '}}')
|
||||
return str
|
||||
}
|
||||
|
||||
|
@ -840,7 +828,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
str.id = node.getAttribute('data-l10n-id')
|
||||
if (!str.id) return
|
||||
|
||||
if(!translations[str.id]) return consoleWarn('Couldn\'t find translation key '+str.id)
|
||||
if(!translations[str.id]) return console.warn('Couldn\'t find translation key '+str.id)
|
||||
|
||||
// get args
|
||||
if(window.JSON) {
|
||||
|
@ -849,7 +837,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
try{
|
||||
str.args = eval(node.getAttribute('data-l10n-args'))
|
||||
}catch(e) {
|
||||
consoleWarn('Couldn\'t parse args for '+str.id)
|
||||
console.warn('Couldn\'t parse args for '+str.id)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -887,7 +875,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
}
|
||||
}
|
||||
if (!found) {
|
||||
consoleWarn('Unexpected error: could not translate element content for key '+str.id, node)
|
||||
console.warn('Unexpected error: could not translate element content for key '+str.id, node)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ function createCookie(name, value, days, path){ /* Warning Internet Explorer doe
|
|||
}
|
||||
|
||||
//Check if the browser is IE and if so make sure the full path is set in the cookie
|
||||
if(navigator.appName=='Microsoft Internet Explorer'){
|
||||
if((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))){
|
||||
document.cookie = name + "=" + value + expires + "; path="+document.location;
|
||||
}
|
||||
else{
|
||||
|
@ -386,7 +386,6 @@ var pad = {
|
|||
diagnosticInfo: {},
|
||||
initTime: 0,
|
||||
clientTimeOffset: null,
|
||||
preloadedImages: false,
|
||||
padOptions: {},
|
||||
|
||||
// these don't require init; clientVars should all go through here
|
||||
|
@ -728,19 +727,6 @@ var pad = {
|
|||
},
|
||||
handleIsFullyConnected: function(isConnected, isInitialConnect)
|
||||
{
|
||||
// load all images referenced from CSS, one at a time,
|
||||
// starting one second after connection is first established.
|
||||
if (isConnected && !pad.preloadedImages)
|
||||
{
|
||||
window.setTimeout(function()
|
||||
{
|
||||
if (!pad.preloadedImages)
|
||||
{
|
||||
pad.preloadImages();
|
||||
pad.preloadedImages = true;
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
pad.determineChatVisibility(isConnected && !isInitialConnect);
|
||||
pad.determineAuthorshipColorsVisibility();
|
||||
|
@ -837,34 +823,6 @@ var pad = {
|
|||
{
|
||||
pad.collabClient.addHistoricalAuthors(data);
|
||||
}
|
||||
},
|
||||
preloadImages: function()
|
||||
{
|
||||
var images = ["../static/img/connectingbar.gif"];
|
||||
|
||||
function loadNextImage()
|
||||
{
|
||||
if (images.length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var img = new Image();
|
||||
img.src = images.shift();
|
||||
if (img.complete)
|
||||
{
|
||||
scheduleLoadNextImage();
|
||||
}
|
||||
else
|
||||
{
|
||||
$(img).bind('error load onreadystatechange', scheduleLoadNextImage);
|
||||
}
|
||||
}
|
||||
|
||||
function scheduleLoadNextImage()
|
||||
{
|
||||
window.setTimeout(loadNextImage, 0);
|
||||
}
|
||||
scheduleLoadNextImage();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -937,4 +895,3 @@ exports.handshake = handshake;
|
|||
exports.pad = pad;
|
||||
exports.init = init;
|
||||
exports.alertBar = alertBar;
|
||||
|
||||
|
|
|
@ -140,7 +140,12 @@ var padeditbar = (function()
|
|||
init: function() {
|
||||
var self = this;
|
||||
self.dropdowns = [];
|
||||
|
||||
// Listen for resize events (sucks but needed as iFrame ace_inner has to be position absolute
|
||||
// A CSS fix for this would be nice but I'm not sure how we'd do it.
|
||||
$(window).resize(function(){
|
||||
self.redrawHeight();
|
||||
});
|
||||
|
||||
$("#editbar .editbarbutton").attr("unselectable", "on"); // for IE
|
||||
$("#editbar").removeClass("disabledtoolbar").addClass("enabledtoolbar");
|
||||
$("#editbar [data-key]").each(function () {
|
||||
|
@ -149,6 +154,10 @@ var padeditbar = (function()
|
|||
});
|
||||
});
|
||||
|
||||
$('#editbar').show();
|
||||
|
||||
this.redrawHeight();
|
||||
|
||||
registerDefaultCommands(self);
|
||||
|
||||
hooks.callAll("postToolbarInit", {
|
||||
|
@ -170,6 +179,12 @@ var padeditbar = (function()
|
|||
this.commands[cmd] = callback;
|
||||
return this;
|
||||
},
|
||||
redrawHeight: function(){
|
||||
var editbarHeight = $('.menu_left').height() + 2 + "px";
|
||||
var containerTop = $('.menu_left').height() + 7 + "px";
|
||||
$('#editbar').css("height", editbarHeight);
|
||||
$('#editorcontainer').css("top", containerTop);
|
||||
},
|
||||
registerDropdownCommand: function (cmd, dropdown) {
|
||||
dropdown = dropdown || cmd;
|
||||
self.dropdowns.push(dropdown)
|
||||
|
|
|
@ -35,32 +35,10 @@ var padimpexp = (function()
|
|||
|
||||
function fileInputUpdated()
|
||||
{
|
||||
$('#importsubmitinput').addClass('throbbold');
|
||||
$('#importformfilediv').addClass('importformenabled');
|
||||
$('#importsubmitinput').removeAttr('disabled');
|
||||
$('#importmessagefail').fadeOut("fast");
|
||||
$('#importarrow').show();
|
||||
$('#importarrow').animate(
|
||||
{
|
||||
paddingLeft: "0px"
|
||||
}, 500).animate(
|
||||
{
|
||||
paddingLeft: "10px"
|
||||
}, 150, 'swing').animate(
|
||||
{
|
||||
paddingLeft: "0px"
|
||||
}, 150, 'swing').animate(
|
||||
{
|
||||
paddingLeft: "10px"
|
||||
}, 150, 'swing').animate(
|
||||
{
|
||||
paddingLeft: "0px"
|
||||
}, 150, 'swing').animate(
|
||||
{
|
||||
paddingLeft: "10px"
|
||||
}, 150, 'swing').animate(
|
||||
{
|
||||
paddingLeft: "0px"
|
||||
}, 150, 'swing');
|
||||
$('#importmessagefail').fadeOut('fast');
|
||||
}
|
||||
|
||||
function fileInputSubmit()
|
||||
|
|
|
@ -55,7 +55,7 @@ function createCookie(name, value, days, path){ /* Used by IE */
|
|||
}
|
||||
|
||||
//Check if the browser is IE and if so make sure the full path is set in the cookie
|
||||
if(navigator.appName=='Microsoft Internet Explorer'){
|
||||
if((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))){
|
||||
document.cookie = name + "=" + value + expires + "; path=/"; /* Note this bodge fix for IE is temporary until auth is rewritten */
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
var plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins");
|
||||
var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks");
|
||||
var npm = require("npm");
|
||||
var request = require("request");
|
||||
|
||||
var npmIsLoaded = false;
|
||||
var withNpm = function (npmfn) {
|
||||
|
@ -60,17 +61,20 @@ exports.availablePlugins = null;
|
|||
var cacheTimestamp = 0;
|
||||
|
||||
exports.getAvailablePlugins = function(maxCacheAge, cb) {
|
||||
withNpm(function (er) {
|
||||
request("http://etherpad.org/plugins.json", function(er, response, plugins){
|
||||
if (er) return cb && cb(er);
|
||||
if(exports.availablePlugins && maxCacheAge && Math.round(+new Date/1000)-cacheTimestamp <= maxCacheAge) {
|
||||
return cb && cb(null, exports.availablePlugins)
|
||||
}
|
||||
npm.commands.search(['ep_'], /*silent?*/true, function(er, results) {
|
||||
if(er) return cb && cb(er);
|
||||
exports.availablePlugins = results;
|
||||
cacheTimestamp = Math.round(+new Date/1000);
|
||||
cb && cb(null, results)
|
||||
})
|
||||
try {
|
||||
plugins = JSON.parse(plugins);
|
||||
} catch (err) {
|
||||
console.error('error parsing plugins.json:', err);
|
||||
plugins = [];
|
||||
}
|
||||
exports.availablePlugins = plugins;
|
||||
cacheTimestamp = Math.round(+new Date/1000);
|
||||
cb && cb(null, plugins)
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
<td>
|
||||
<div class="actions">
|
||||
<input type="button" value="Uninstall" class="do-uninstall">
|
||||
<div class="progress"><p><img src="../static/img/loading.gif"/></p><p><span class="message"></span></p></div>
|
||||
<div class="progress"><p class="loadingAnimation"></p><p><span class="message"></span></p></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -59,7 +59,7 @@
|
|||
<tbody class="messages">
|
||||
<tr><td></td><td>
|
||||
<p class="nothing-installed">You haven't installed any plugins yet.</p>
|
||||
<p class="fetching"><img src="../static/img/loading.gif"/><br/>Fetching installed plugins...</p>
|
||||
<p class="fetching"><p class="loadingAnimation"></p><br/>Fetching installed plugins...</p>
|
||||
</td><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -89,7 +89,7 @@
|
|||
<td>
|
||||
<div class="actions">
|
||||
<input type="button" value="Install" class="do-install">
|
||||
<div class="progress"><p><img src="../static/img/loading.gif"/></p><p><span class="message"></span></p></div>
|
||||
<div class="progress"><p><p class="loadingAnimation"></p></p><p><span class="message"></span></p></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -101,7 +101,7 @@
|
|||
<div class="messages">
|
||||
<div id="search-progress" class="progress"><p> </p></div>
|
||||
<p class="nothing-found">No plugins found.</p>
|
||||
<p class="fetching"><img src="../static/img/loading.gif"/><br/>Fetching...</p>
|
||||
<p class="fetching"><p class="loadingAnimation"></p><br/>Fetching...</p>
|
||||
</div>
|
||||
</td><td></td></tr>
|
||||
</tbody>
|
||||
|
|
|
@ -40,9 +40,12 @@
|
|||
<link rel="shortcut icon" href="<%=settings.faviconPad%>">
|
||||
|
||||
<% e.begin_block("styles"); %>
|
||||
<link href="../static/css/fontawesome-etherpad.css" rel="stylesheet">
|
||||
<link href="../static/css/pad.css" rel="stylesheet">
|
||||
|
||||
<% e.begin_block("customStyles"); %>
|
||||
<link href="../static/custom/pad.css" rel="stylesheet">
|
||||
<% e.end_block(); %>
|
||||
|
||||
<style title="dynamicsyntax"></style>
|
||||
<% e.end_block(); %>
|
||||
|
||||
|
@ -191,8 +194,7 @@
|
|||
<div class="importformdiv" id="importformsubmitdiv">
|
||||
<span class="nowrap">
|
||||
<input type="submit" name="submit" value="Import Now" disabled="disabled" id="importsubmitinput">
|
||||
<img alt="" id="importstatusball" src="../static/img/loading.gif" align="top">
|
||||
<img alt="" id="importarrow" src="../static/img/leftarrow.png" align="top">
|
||||
<div alt="" id="importstatusball" class="loadingAnimation" align="top"></div>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -218,7 +220,7 @@
|
|||
</div>
|
||||
<div class="reconnecting">
|
||||
<h1 data-l10n-id="pad.modals.reconnecting"></h1>
|
||||
<p><img alt="" border="0" src="../static/img/connectingbar.gif" /></p>
|
||||
<p class='loadingAnimation'></p>
|
||||
</div>
|
||||
<div class="userdup">
|
||||
<h1 data-l10n-id="pad.modals.userdup"></h1>
|
||||
|
@ -309,7 +311,7 @@
|
|||
<a id="titlesticky" onClick="chat.stickToScreen(true);$('#options-stickychat').prop('checked', true);return false;" title="Stick chat to screen">█ </a>
|
||||
</div>
|
||||
<div id="chattext" class="authorColors">
|
||||
<img alt="loading.." id="chatloadmessagesball" class="chatloadmessages" src="../static/img/loading.gif" align="top">
|
||||
<div alt="loading.." id="chatloadmessagesball" class="chatloadmessages loadingAnimation" align="top"></div>
|
||||
<button id="chatloadmessagesbutton" class="chatloadmessages" data-l10n-id="pad.chat.loadmessages"></button>
|
||||
</div>
|
||||
<div id="chatinputbox">
|
||||
|
@ -347,7 +349,9 @@
|
|||
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define"></script>
|
||||
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define"></script>
|
||||
|
||||
<% e.begin_block("customScripts"); %>
|
||||
<script type="text/javascript" src="../static/custom/pad.js"></script>
|
||||
<% e.end_block(); %>
|
||||
|
||||
<!-- Bootstrap page -->
|
||||
<script type="text/javascript">
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
</div>
|
||||
<div class="reconnecting">
|
||||
<h1 data-l10n-id="pad.modals.reconnecting"></h1>
|
||||
<p><img alt="" border="0" src="../../static/img/connectingbar.gif" /></p>
|
||||
<p class="loadingAnimation"></p>
|
||||
</div>
|
||||
<div class="userdup">
|
||||
<h1 data-l10n-id="pad.modals.userdup"></h1>
|
||||
|
|