mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-01-31 19:02:59 +01:00
formatting: bulk remove trailing whitespaces
Do not touch vendorized files (e.g. libraries that were imported from external projects). No functional changes. Command: find . -name '*.<EXTENSION>' -type f -print0 | xargs -0 sed -i 's/[[:space:]]*$//'
This commit is contained in:
parent
24abd9ca07
commit
312c72c364
28 changed files with 156 additions and 156 deletions
|
@ -10,7 +10,7 @@
|
||||||
* contain meaningful and detailed **commit messages** in the form:
|
* contain meaningful and detailed **commit messages** in the form:
|
||||||
```
|
```
|
||||||
submodule: description
|
submodule: description
|
||||||
|
|
||||||
longer description of the change you have made, eventually mentioning the
|
longer description of the change you have made, eventually mentioning the
|
||||||
number of the issue that is being fixed, in the form: Fixes #someIssueNumber
|
number of the issue that is being fixed, in the form: Fixes #someIssueNumber
|
||||||
```
|
```
|
||||||
|
@ -131,4 +131,4 @@ Etherpad is much more than software. So if you aren't a developer then worry no
|
||||||
* Work with SFC to maintain legal side of project
|
* Work with SFC to maintain legal side of project
|
||||||
* Maintain TODO page - https://github.com/ether/etherpad-lite/wiki/TODO#IMPORTANT_TODOS
|
* Maintain TODO page - https://github.com/ether/etherpad-lite/wiki/TODO#IMPORTANT_TODOS
|
||||||
* Replying to messages on IRC / The Mailing list / Emails
|
* Replying to messages on IRC / The Mailing list / Emails
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# IMPORTANT
|
# IMPORTANT
|
||||||
# Protect against misspelling a var and rm -rf /
|
# Protect against misspelling a var and rm -rf /
|
||||||
set -u
|
set -u
|
||||||
set -e
|
set -e
|
||||||
|
|
|
@ -11,21 +11,21 @@ if [ -d "../bin" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Is wget installed?
|
#Is wget installed?
|
||||||
hash wget > /dev/null 2>&1 || {
|
hash wget > /dev/null 2>&1 || {
|
||||||
echo "Please install wget" >&2
|
echo "Please install wget" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
#Is zip installed?
|
#Is zip installed?
|
||||||
hash zip > /dev/null 2>&1 || {
|
hash zip > /dev/null 2>&1 || {
|
||||||
echo "Please install zip" >&2
|
echo "Please install zip" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
#Is zip installed?
|
#Is zip installed?
|
||||||
hash unzip > /dev/null 2>&1 || {
|
hash unzip > /dev/null 2>&1 || {
|
||||||
echo "Please install unzip" >&2
|
echo "Please install unzip" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
START_FOLDER=$(pwd);
|
START_FOLDER=$(pwd);
|
||||||
|
|
138
bin/convert.js
138
bin/convert.js
|
@ -26,10 +26,10 @@ log("open output file...");
|
||||||
var sqlOutput = fs.openSync(sqlOutputFile, "w");
|
var sqlOutput = fs.openSync(sqlOutputFile, "w");
|
||||||
var sql = "SET CHARACTER SET UTF8;\n" +
|
var sql = "SET CHARACTER SET UTF8;\n" +
|
||||||
"CREATE TABLE IF NOT EXISTS `store` ( \n" +
|
"CREATE TABLE IF NOT EXISTS `store` ( \n" +
|
||||||
"`key` VARCHAR( 100 ) NOT NULL , \n" +
|
"`key` VARCHAR( 100 ) NOT NULL , \n" +
|
||||||
"`value` LONGTEXT NOT NULL , \n" +
|
"`value` LONGTEXT NOT NULL , \n" +
|
||||||
"PRIMARY KEY ( `key` ) \n" +
|
"PRIMARY KEY ( `key` ) \n" +
|
||||||
") ENGINE = INNODB;\n" +
|
") ENGINE = INNODB;\n" +
|
||||||
"START TRANSACTION;\n\n";
|
"START TRANSACTION;\n\n";
|
||||||
fs.writeSync(sqlOutput, sql);
|
fs.writeSync(sqlOutput, sql);
|
||||||
log("done");
|
log("done");
|
||||||
|
@ -52,7 +52,7 @@ async.series([
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
log("get all padIds out of the database...");
|
log("get all padIds out of the database...");
|
||||||
|
|
||||||
etherpadDB.query("SELECT ID FROM PAD_META", [], function(err, _padIDs)
|
etherpadDB.query("SELECT ID FROM PAD_META", [], function(err, _padIDs)
|
||||||
{
|
{
|
||||||
padIDs = _padIDs;
|
padIDs = _padIDs;
|
||||||
|
@ -62,9 +62,9 @@ async.series([
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
log("done");
|
log("done");
|
||||||
|
|
||||||
//create a queue with a concurrency 100
|
//create a queue with a concurrency 100
|
||||||
var queue = async.queue(function (padId, callback)
|
var queue = async.queue(function (padId, callback)
|
||||||
{
|
{
|
||||||
convertPad(padId, function(err)
|
convertPad(padId, function(err)
|
||||||
{
|
{
|
||||||
|
@ -72,10 +72,10 @@ async.series([
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
}, 100);
|
}, 100);
|
||||||
|
|
||||||
//set the step callback as the queue callback
|
//set the step callback as the queue callback
|
||||||
queue.drain = callback;
|
queue.drain = callback;
|
||||||
|
|
||||||
//add the padids to the worker queue
|
//add the padids to the worker queue
|
||||||
for(var i=0,length=padIDs.length;i<length;i++)
|
for(var i=0,length=padIDs.length;i<length;i++)
|
||||||
{
|
{
|
||||||
|
@ -85,25 +85,25 @@ async.series([
|
||||||
], function(err)
|
], function(err)
|
||||||
{
|
{
|
||||||
if(err) throw err;
|
if(err) throw err;
|
||||||
|
|
||||||
//write the groups
|
//write the groups
|
||||||
var sql = "";
|
var sql = "";
|
||||||
for(var proID in proID2groupID)
|
for(var proID in proID2groupID)
|
||||||
{
|
{
|
||||||
var groupID = proID2groupID[proID];
|
var groupID = proID2groupID[proID];
|
||||||
var subdomain = proID2subdomain[proID];
|
var subdomain = proID2subdomain[proID];
|
||||||
|
|
||||||
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape("group:" + groupID) + ", " + etherpadDB.escape(JSON.stringify(groups[groupID]))+ ");\n";
|
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape("group:" + groupID) + ", " + etherpadDB.escape(JSON.stringify(groups[groupID]))+ ");\n";
|
||||||
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape("mapper2group:subdomain:" + subdomain) + ", " + etherpadDB.escape(groupID)+ ");\n";
|
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape("mapper2group:subdomain:" + subdomain) + ", " + etherpadDB.escape(groupID)+ ");\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
//close transaction
|
//close transaction
|
||||||
sql+="COMMIT;";
|
sql+="COMMIT;";
|
||||||
|
|
||||||
//end the sql file
|
//end the sql file
|
||||||
fs.writeSync(sqlOutput, sql, undefined, "utf-8");
|
fs.writeSync(sqlOutput, sql, undefined, "utf-8");
|
||||||
fs.closeSync(sqlOutput);
|
fs.closeSync(sqlOutput);
|
||||||
|
|
||||||
log("finished.");
|
log("finished.");
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
|
@ -118,7 +118,7 @@ var padsDone = 0;
|
||||||
function incrementPadStats()
|
function incrementPadStats()
|
||||||
{
|
{
|
||||||
padsDone++;
|
padsDone++;
|
||||||
|
|
||||||
if(padsDone%100 == 0)
|
if(padsDone%100 == 0)
|
||||||
{
|
{
|
||||||
var averageTime = Math.round(padsDone/((Date.now() - startTime)/1000));
|
var averageTime = Math.round(padsDone/((Date.now() - startTime)/1000));
|
||||||
|
@ -149,10 +149,10 @@ function convertPad(padId, callback)
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
var sql = "SELECT * FROM `PAD_CHAT_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_CHAT_META` WHERE ID=?)";
|
var sql = "SELECT * FROM `PAD_CHAT_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_CHAT_META` WHERE ID=?)";
|
||||||
|
|
||||||
etherpadDB.query(sql, [padId], function(err, results)
|
etherpadDB.query(sql, [padId], function(err, results)
|
||||||
{
|
{
|
||||||
if(!err)
|
if(!err)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -163,7 +163,7 @@ function convertPad(padId, callback)
|
||||||
}
|
}
|
||||||
}catch(e) {err = e}
|
}catch(e) {err = e}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -171,10 +171,10 @@ function convertPad(padId, callback)
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
var sql = "SELECT * FROM `PAD_REVS_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_REVS_META` WHERE ID=?)";
|
var sql = "SELECT * FROM `PAD_REVS_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_REVS_META` WHERE ID=?)";
|
||||||
|
|
||||||
etherpadDB.query(sql, [padId], function(err, results)
|
etherpadDB.query(sql, [padId], function(err, results)
|
||||||
{
|
{
|
||||||
if(!err)
|
if(!err)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -185,7 +185,7 @@ function convertPad(padId, callback)
|
||||||
}
|
}
|
||||||
}catch(e) {err = e}
|
}catch(e) {err = e}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -193,10 +193,10 @@ function convertPad(padId, callback)
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
var sql = "SELECT * FROM `PAD_REVMETA_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_REVMETA_META` WHERE ID=?)";
|
var sql = "SELECT * FROM `PAD_REVMETA_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_REVMETA_META` WHERE ID=?)";
|
||||||
|
|
||||||
etherpadDB.query(sql, [padId], function(err, results)
|
etherpadDB.query(sql, [padId], function(err, results)
|
||||||
{
|
{
|
||||||
if(!err)
|
if(!err)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -207,7 +207,7 @@ function convertPad(padId, callback)
|
||||||
}
|
}
|
||||||
}catch(e) {err = e}
|
}catch(e) {err = e}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -215,7 +215,7 @@ function convertPad(padId, callback)
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
var sql = "SELECT `JSON` FROM `PAD_APOOL` WHERE `ID` = ?";
|
var sql = "SELECT `JSON` FROM `PAD_APOOL` WHERE `ID` = ?";
|
||||||
|
|
||||||
etherpadDB.query(sql, [padId], function(err, results)
|
etherpadDB.query(sql, [padId], function(err, results)
|
||||||
{
|
{
|
||||||
if(!err)
|
if(!err)
|
||||||
|
@ -225,7 +225,7 @@ function convertPad(padId, callback)
|
||||||
apool=JSON.parse(results[0].JSON).x;
|
apool=JSON.parse(results[0].JSON).x;
|
||||||
}catch(e) {err = e}
|
}catch(e) {err = e}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -233,10 +233,10 @@ function convertPad(padId, callback)
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
var sql = "SELECT * FROM `PAD_AUTHORS_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_AUTHORS_META` WHERE ID=?)";
|
var sql = "SELECT * FROM `PAD_AUTHORS_TEXT` WHERE NUMID = (SELECT `NUMID` FROM `PAD_AUTHORS_META` WHERE ID=?)";
|
||||||
|
|
||||||
etherpadDB.query(sql, [padId], function(err, results)
|
etherpadDB.query(sql, [padId], function(err, results)
|
||||||
{
|
{
|
||||||
if(!err)
|
if(!err)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -247,7 +247,7 @@ function convertPad(padId, callback)
|
||||||
}
|
}
|
||||||
}catch(e) {err = e}
|
}catch(e) {err = e}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -255,17 +255,17 @@ function convertPad(padId, callback)
|
||||||
function(callback)
|
function(callback)
|
||||||
{
|
{
|
||||||
var sql = "SELECT JSON FROM `PAD_META` WHERE ID=?";
|
var sql = "SELECT JSON FROM `PAD_META` WHERE ID=?";
|
||||||
|
|
||||||
etherpadDB.query(sql, [padId], function(err, results)
|
etherpadDB.query(sql, [padId], function(err, results)
|
||||||
{
|
{
|
||||||
if(!err)
|
if(!err)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
padmeta = JSON.parse(results[0].JSON).x;
|
padmeta = JSON.parse(results[0].JSON).x;
|
||||||
}catch(e) {err = e}
|
}catch(e) {err = e}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -278,19 +278,19 @@ function convertPad(padId, callback)
|
||||||
callback();
|
callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//get the proID out of this padID
|
//get the proID out of this padID
|
||||||
var proID = padId.split("$")[0];
|
var proID = padId.split("$")[0];
|
||||||
|
|
||||||
var sql = "SELECT subDomain FROM pro_domains WHERE ID = ?";
|
var sql = "SELECT subDomain FROM pro_domains WHERE ID = ?";
|
||||||
|
|
||||||
etherpadDB.query(sql, [proID], function(err, results)
|
etherpadDB.query(sql, [proID], function(err, results)
|
||||||
{
|
{
|
||||||
if(!err)
|
if(!err)
|
||||||
{
|
{
|
||||||
subdomain = results[0].subDomain;
|
subdomain = results[0].subDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -300,105 +300,105 @@ function convertPad(padId, callback)
|
||||||
{
|
{
|
||||||
//saves all values that should be written to the database
|
//saves all values that should be written to the database
|
||||||
var values = {};
|
var values = {};
|
||||||
|
|
||||||
//this is a pro pad, let's convert it to a group pad
|
//this is a pro pad, let's convert it to a group pad
|
||||||
if(padId.indexOf("$") != -1)
|
if(padId.indexOf("$") != -1)
|
||||||
{
|
{
|
||||||
var padIdParts = padId.split("$");
|
var padIdParts = padId.split("$");
|
||||||
var proID = padIdParts[0];
|
var proID = padIdParts[0];
|
||||||
var padName = padIdParts[1];
|
var padName = padIdParts[1];
|
||||||
|
|
||||||
var groupID
|
var groupID
|
||||||
|
|
||||||
//this proID is not converted so far, do it
|
//this proID is not converted so far, do it
|
||||||
if(proID2groupID[proID] == null)
|
if(proID2groupID[proID] == null)
|
||||||
{
|
{
|
||||||
groupID = "g." + randomString(16);
|
groupID = "g." + randomString(16);
|
||||||
|
|
||||||
//create the mappers for this new group
|
//create the mappers for this new group
|
||||||
proID2groupID[proID] = groupID;
|
proID2groupID[proID] = groupID;
|
||||||
proID2subdomain[proID] = subdomain;
|
proID2subdomain[proID] = subdomain;
|
||||||
groups[groupID] = {pads: {}};
|
groups[groupID] = {pads: {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
//use the generated groupID;
|
//use the generated groupID;
|
||||||
groupID = proID2groupID[proID];
|
groupID = proID2groupID[proID];
|
||||||
|
|
||||||
//rename the pad
|
//rename the pad
|
||||||
padId = groupID + "$" + padName;
|
padId = groupID + "$" + padName;
|
||||||
|
|
||||||
//set the value for this pad in the group
|
//set the value for this pad in the group
|
||||||
groups[groupID].pads[padId] = 1;
|
groups[groupID].pads[padId] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var newAuthorIDs = {};
|
var newAuthorIDs = {};
|
||||||
var oldName2newName = {};
|
var oldName2newName = {};
|
||||||
|
|
||||||
//replace the authors with generated authors
|
//replace the authors with generated authors
|
||||||
// we need to do that cause where the original etherpad saves pad local authors, the new (lite) etherpad uses them global
|
// we need to do that cause where the original etherpad saves pad local authors, the new (lite) etherpad uses them global
|
||||||
for(var i in apool.numToAttrib)
|
for(var i in apool.numToAttrib)
|
||||||
{
|
{
|
||||||
var key = apool.numToAttrib[i][0];
|
var key = apool.numToAttrib[i][0];
|
||||||
var value = apool.numToAttrib[i][1];
|
var value = apool.numToAttrib[i][1];
|
||||||
|
|
||||||
//skip non authors and anonymous authors
|
//skip non authors and anonymous authors
|
||||||
if(key != "author" || value == "")
|
if(key != "author" || value == "")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//generate new author values
|
//generate new author values
|
||||||
var authorID = "a." + randomString(16);
|
var authorID = "a." + randomString(16);
|
||||||
var authorColorID = authors[i].colorId || Math.floor(Math.random()*32);
|
var authorColorID = authors[i].colorId || Math.floor(Math.random()*32);
|
||||||
var authorName = authors[i].name || null;
|
var authorName = authors[i].name || null;
|
||||||
|
|
||||||
//overwrite the authorID of the attribute pool
|
//overwrite the authorID of the attribute pool
|
||||||
apool.numToAttrib[i][1] = authorID;
|
apool.numToAttrib[i][1] = authorID;
|
||||||
|
|
||||||
//write the author to the database
|
//write the author to the database
|
||||||
values["globalAuthor:" + authorID] = {"colorId" : authorColorID, "name": authorName, "timestamp": timestamp};
|
values["globalAuthor:" + authorID] = {"colorId" : authorColorID, "name": authorName, "timestamp": timestamp};
|
||||||
|
|
||||||
//save in mappers
|
//save in mappers
|
||||||
newAuthorIDs[i] = authorID;
|
newAuthorIDs[i] = authorID;
|
||||||
oldName2newName[value] = authorID;
|
oldName2newName[value] = authorID;
|
||||||
}
|
}
|
||||||
|
|
||||||
//save all revisions
|
//save all revisions
|
||||||
for(var i=0;i<changesets.length;i++)
|
for(var i=0;i<changesets.length;i++)
|
||||||
{
|
{
|
||||||
values["pad:" + padId + ":revs:" + i] = {changeset: changesets[i],
|
values["pad:" + padId + ":revs:" + i] = {changeset: changesets[i],
|
||||||
meta : {
|
meta : {
|
||||||
author: newAuthorIDs[changesetsMeta[i].a],
|
author: newAuthorIDs[changesetsMeta[i].a],
|
||||||
timestamp: changesetsMeta[i].t,
|
timestamp: changesetsMeta[i].t,
|
||||||
atext: changesetsMeta[i].atext || undefined
|
atext: changesetsMeta[i].atext || undefined
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
//save all chat messages
|
//save all chat messages
|
||||||
for(var i=0;i<chatMessages.length;i++)
|
for(var i=0;i<chatMessages.length;i++)
|
||||||
{
|
{
|
||||||
values["pad:" + padId + ":chat:" + i] = {"text": chatMessages[i].lineText,
|
values["pad:" + padId + ":chat:" + i] = {"text": chatMessages[i].lineText,
|
||||||
"userId": oldName2newName[chatMessages[i].userId],
|
"userId": oldName2newName[chatMessages[i].userId],
|
||||||
"time": chatMessages[i].time}
|
"time": chatMessages[i].time}
|
||||||
}
|
}
|
||||||
|
|
||||||
//generate the latest atext
|
//generate the latest atext
|
||||||
var fullAPool = (new AttributePool()).fromJsonable(apool);
|
var fullAPool = (new AttributePool()).fromJsonable(apool);
|
||||||
var keyRev = Math.floor(padmeta.head / padmeta.keyRevInterval) * padmeta.keyRevInterval;
|
var keyRev = Math.floor(padmeta.head / padmeta.keyRevInterval) * padmeta.keyRevInterval;
|
||||||
var atext = changesetsMeta[keyRev].atext;
|
var atext = changesetsMeta[keyRev].atext;
|
||||||
var curRev = keyRev;
|
var curRev = keyRev;
|
||||||
while (curRev < padmeta.head)
|
while (curRev < padmeta.head)
|
||||||
{
|
{
|
||||||
curRev++;
|
curRev++;
|
||||||
var changeset = changesets[curRev];
|
var changeset = changesets[curRev];
|
||||||
atext = Changeset.applyToAText(changeset, atext, fullAPool);
|
atext = Changeset.applyToAText(changeset, atext, fullAPool);
|
||||||
}
|
}
|
||||||
|
|
||||||
values["pad:" + padId] = {atext: atext,
|
values["pad:" + padId] = {atext: atext,
|
||||||
pool: apool,
|
pool: apool,
|
||||||
head: padmeta.head,
|
head: padmeta.head,
|
||||||
chatHead: padmeta.numChatMessages }
|
chatHead: padmeta.numChatMessages }
|
||||||
|
|
||||||
}
|
}
|
||||||
catch(e)
|
catch(e)
|
||||||
{
|
{
|
||||||
|
@ -407,13 +407,13 @@ function convertPad(padId, callback)
|
||||||
callback();
|
callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var sql = "";
|
var sql = "";
|
||||||
for(var key in values)
|
for(var key in values)
|
||||||
{
|
{
|
||||||
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape(key) + ", " + etherpadDB.escape(JSON.stringify(values[key]))+ ");\n";
|
sql+="REPLACE INTO store VALUES (" + etherpadDB.escape(key) + ", " + etherpadDB.escape(JSON.stringify(values[key]))+ ");\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.writeSync(sqlOutput, sql, undefined, "utf-8");
|
fs.writeSync(sqlOutput, sql, undefined, "utf-8");
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
@ -429,24 +429,24 @@ function parsePage(array, pageStart, offsets, data, json)
|
||||||
{
|
{
|
||||||
var start = 0;
|
var start = 0;
|
||||||
var lengths = offsets.split(",");
|
var lengths = offsets.split(",");
|
||||||
|
|
||||||
for(var i=0;i<lengths.length;i++)
|
for(var i=0;i<lengths.length;i++)
|
||||||
{
|
{
|
||||||
var unitLength = lengths[i];
|
var unitLength = lengths[i];
|
||||||
|
|
||||||
//skip empty units
|
//skip empty units
|
||||||
if(unitLength == "")
|
if(unitLength == "")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//parse the number
|
//parse the number
|
||||||
unitLength = Number(unitLength);
|
unitLength = Number(unitLength);
|
||||||
|
|
||||||
//cut the unit out of data
|
//cut the unit out of data
|
||||||
var unit = data.substr(start, unitLength);
|
var unit = data.substr(start, unitLength);
|
||||||
|
|
||||||
//put it into the array
|
//put it into the array
|
||||||
array[pageStart + i] = json ? JSON.parse(unit) : unit;
|
array[pageStart + i] = json ? JSON.parse(unit) : unit;
|
||||||
|
|
||||||
//update start
|
//update start
|
||||||
start+=unitLength;
|
start+=unitLength;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"etherpadDB":
|
"etherpadDB":
|
||||||
{
|
{
|
||||||
"host": "localhost",
|
"host": "localhost",
|
||||||
"port": 3306,
|
"port": 3306,
|
||||||
|
|
|
@ -12,9 +12,9 @@ try:
|
||||||
assert(os.path.exists(dirtydb_input))
|
assert(os.path.exists(dirtydb_input))
|
||||||
assert(not os.path.exists(dirtydb_output))
|
assert(not os.path.exists(dirtydb_output))
|
||||||
except:
|
except:
|
||||||
print()
|
print()
|
||||||
print('Usage: %s /path/to/dirty.db' % sys.argv[0])
|
print('Usage: %s /path/to/dirty.db' % sys.argv[0])
|
||||||
print()
|
print()
|
||||||
print('Note: Will create a file named dirty.db.new in the same folder,')
|
print('Note: Will create a file named dirty.db.new in the same folder,')
|
||||||
print(' please make sure permissions are OK and a file by that')
|
print(' please make sure permissions are OK and a file by that')
|
||||||
print(' name does not exist already. This script works by omitting')
|
print(' name does not exist already. This script works by omitting')
|
||||||
|
|
|
@ -65,7 +65,7 @@ function processIncludes(inputFile, input, cb) {
|
||||||
console.error(includes);
|
console.error(includes);
|
||||||
var incCount = includes.length;
|
var incCount = includes.length;
|
||||||
if (incCount === 0) cb(null, input);
|
if (incCount === 0) cb(null, input);
|
||||||
|
|
||||||
includes.forEach(function(include) {
|
includes.forEach(function(include) {
|
||||||
var fname = include.replace(/^@include\s+/, '');
|
var fname = include.replace(/^@include\s+/, '');
|
||||||
if (!fname.match(/\.md$/)) fname += '.md';
|
if (!fname.match(/\.md$/)) fname += '.md';
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
ERROR_HANDLING=0
|
ERROR_HANDLING=0
|
||||||
# Your email address which should receive the error messages
|
# Your email address which should receive the error messages
|
||||||
EMAIL_ADDRESS="no-reply@example.com"
|
EMAIL_ADDRESS="no-reply@example.com"
|
||||||
# Sets the minimum amount of time between the sending of error emails.
|
# Sets the minimum amount of time between the sending of error emails.
|
||||||
# This ensures you do not get spammed during an endless reboot loop
|
# This ensures you do not get spammed during an endless reboot loop
|
||||||
# It's the time in seconds
|
# It's the time in seconds
|
||||||
TIME_BETWEEN_EMAILS=600 # 10 minutes
|
TIME_BETWEEN_EMAILS=600 # 10 minutes
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ do
|
||||||
if [ ! -f ${LOG} ]; then
|
if [ ! -f ${LOG} ]; then
|
||||||
touch ${LOG} || ( echo "Logfile '${LOG}' is not writeable" && exit 1 )
|
touch ${LOG} || ( echo "Logfile '${LOG}' is not writeable" && exit 1 )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Check if the file is writeable
|
#Check if the file is writeable
|
||||||
if [ ! -w ${LOG} ]; then
|
if [ ! -w ${LOG} ]; then
|
||||||
echo "Logfile '${LOG}' is not writeable"
|
echo "Logfile '${LOG}' is not writeable"
|
||||||
|
@ -48,21 +48,21 @@ do
|
||||||
|
|
||||||
#Start the application
|
#Start the application
|
||||||
bin/run.sh $@ >>${LOG} 2>>${LOG}
|
bin/run.sh $@ >>${LOG} 2>>${LOG}
|
||||||
|
|
||||||
#Send email
|
#Send email
|
||||||
if [ $ERROR_HANDLING = 1 ]; then
|
if [ $ERROR_HANDLING = 1 ]; then
|
||||||
TIME_NOW=$(date +%s)
|
TIME_NOW=$(date +%s)
|
||||||
TIME_SINCE_LAST_SEND=$(($TIME_NOW - $LAST_EMAIL_SEND))
|
TIME_SINCE_LAST_SEND=$(($TIME_NOW - $LAST_EMAIL_SEND))
|
||||||
|
|
||||||
if [ $TIME_SINCE_LAST_SEND -gt $TIME_BETWEEN_EMAILS ]; then
|
if [ $TIME_SINCE_LAST_SEND -gt $TIME_BETWEEN_EMAILS ]; then
|
||||||
printf "Server was restarted at: $(date)\nThe last 50 lines of the log before the error happens:\n $(tail -n 50 ${LOG})" | mail -s "Pad Server was restarted" $EMAIL_ADDRESS
|
printf "Server was restarted at: $(date)\nThe last 50 lines of the log before the error happens:\n $(tail -n 50 ${LOG})" | mail -s "Pad Server was restarted" $EMAIL_ADDRESS
|
||||||
|
|
||||||
LAST_EMAIL_SEND=$TIME_NOW
|
LAST_EMAIL_SEND=$TIME_NOW
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "RESTART!" >>${LOG}
|
echo "RESTART!" >>${LOG}
|
||||||
|
|
||||||
#Sleep 10 seconds before restart
|
#Sleep 10 seconds before restart
|
||||||
sleep 10
|
sleep 10
|
||||||
done
|
done
|
||||||
|
|
|
@ -70,11 +70,11 @@ This creates an empty apool. An apool saves which attributes were used during th
|
||||||
```
|
```
|
||||||
> apool.fromJsonable({"numToAttrib":{"0":["author","a.kVnWeomPADAT2pn9"],"1":["bold","true"],"2":["italic","true"]},"nextNum":3});
|
> apool.fromJsonable({"numToAttrib":{"0":["author","a.kVnWeomPADAT2pn9"],"1":["bold","true"],"2":["italic","true"]},"nextNum":3});
|
||||||
> console.log(apool)
|
> console.log(apool)
|
||||||
{ numToAttrib:
|
{ numToAttrib:
|
||||||
{ '0': [ 'author', 'a.kVnWeomPADAT2pn9' ],
|
{ '0': [ 'author', 'a.kVnWeomPADAT2pn9' ],
|
||||||
'1': [ 'bold', 'true' ],
|
'1': [ 'bold', 'true' ],
|
||||||
'2': [ 'italic', 'true' ] },
|
'2': [ 'italic', 'true' ] },
|
||||||
attribToNum:
|
attribToNum:
|
||||||
{ 'author,a.kVnWeomPADAT2pn9': 0,
|
{ 'author,a.kVnWeomPADAT2pn9': 0,
|
||||||
'bold,true': 1,
|
'bold,true': 1,
|
||||||
'italic,true': 2 },
|
'italic,true': 2 },
|
||||||
|
|
|
@ -62,7 +62,7 @@ Example: `lang=ar` (translates the interface into Arabic)
|
||||||
|
|
||||||
## rtl
|
## rtl
|
||||||
* Boolean
|
* Boolean
|
||||||
|
|
||||||
Default: true
|
Default: true
|
||||||
Displays pad text from right to left.
|
Displays pad text from right to left.
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ Returns: {SelectButton}
|
||||||
* {String} value - The value of this option
|
* {String} value - The value of this option
|
||||||
* {String} text - the label text used for this option
|
* {String} text - the label text used for this option
|
||||||
* {Object} attributes - any additional html attributes go here (e.g. `data-l10n-id`)
|
* {Object} attributes - any additional html attributes go here (e.g. `data-l10n-id`)
|
||||||
|
|
||||||
## registerButton(name, item)
|
## registerButton(name, item)
|
||||||
* {String} name - used to reference the item in the toolbar config in settings.json
|
* {String} name - used to reference the item in the toolbar config in settings.json
|
||||||
* {Button|SelectButton} item - the button to add
|
* {Button|SelectButton} item - the button to add
|
|
@ -124,7 +124,7 @@ If your plugin adds or modifies the front end HTML (e.g. adding buttons or chang
|
||||||
|
|
||||||
## Writing and running front-end tests for your plugin
|
## Writing and running front-end tests for your plugin
|
||||||
|
|
||||||
Etherpad allows you to easily create front-end tests for plugins.
|
Etherpad allows you to easily create front-end tests for plugins.
|
||||||
|
|
||||||
1. Create a new folder
|
1. Create a new folder
|
||||||
```
|
```
|
||||||
|
|
|
@ -460,7 +460,7 @@ Pad.prototype.remove = async function remove() {
|
||||||
// none of the operations except getting the group depended on callbacks
|
// none of the operations except getting the group depended on callbacks
|
||||||
// so the database operations here are just started and then left to
|
// so the database operations here are just started and then left to
|
||||||
// run to completion
|
// run to completion
|
||||||
|
|
||||||
// is it a group pad? -> delete the entry of this pad in the group
|
// is it a group pad? -> delete the entry of this pad in the group
|
||||||
if (padID.indexOf("$") >= 0) {
|
if (padID.indexOf("$") >= 0) {
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ function getAllLocales() {
|
||||||
|
|
||||||
//add core supported languages first
|
//add core supported languages first
|
||||||
extractLangs(npm.root+"/ep_etherpad-lite/locales");
|
extractLangs(npm.root+"/ep_etherpad-lite/locales");
|
||||||
|
|
||||||
//add plugins languages (if any)
|
//add plugins languages (if any)
|
||||||
for(var pluginName in plugins) extractLangs(path.join(npm.root, pluginName, 'locales'));
|
for(var pluginName in plugins) extractLangs(path.join(npm.root, pluginName, 'locales'));
|
||||||
|
|
||||||
|
@ -94,11 +94,11 @@ exports.expressCreateServer = function(n, args) {
|
||||||
res.status(404).send('Language not available');
|
res.status(404).send('Language not available');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
args.app.get('/locales.json', function(req, res) {
|
args.app.get('/locales.json', function(req, res) {
|
||||||
res.setHeader('Content-Type', 'application/json; charset=utf-8');
|
res.setHeader('Content-Type', 'application/json; charset=utf-8');
|
||||||
res.send(localeIndex);
|
res.send(localeIndex);
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ td, th {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0; left: 0; bottom:0; right:0;
|
top: 0; left: 0; bottom:0; right:0;
|
||||||
padding: auto;
|
padding: auto;
|
||||||
|
|
||||||
background: rgb(255,255,255);
|
background: rgb(255,255,255);
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ body,
|
||||||
#tbl_context_menu ul .yuimenuitemlabel,
|
#tbl_context_menu ul .yuimenuitemlabel,
|
||||||
.yui-skin-sam .yui-split-button button em:not(.color-picker-button),
|
.yui-skin-sam .yui-split-button button em:not(.color-picker-button),
|
||||||
#yui-picker-panel .button-group .yui-button:first-child button,
|
#yui-picker-panel .button-group .yui-button:first-child button,
|
||||||
#newComment .sidebar-comment input[type=reset], #newComment .sidebar-comment input[type=reset]:hover,
|
#newComment .sidebar-comment input[type=reset], #newComment .sidebar-comment input[type=reset]:hover,
|
||||||
#newComment .sidebar-comment input[type=submit]:hover,
|
#newComment .sidebar-comment input[type=submit]:hover,
|
||||||
.suggestion, .comment-reply-input, .reply-suggestion p:not(.reply-comment-suggest-from-p), .comment-text,
|
.suggestion, .comment-reply-input, .reply-suggestion p:not(.reply-comment-suggest-from-p), .comment-text,
|
||||||
.sidebar-comment textarea, .reply-comment-suggest label, .comment-suggest label, .comment-reply-input
|
.sidebar-comment textarea, .reply-comment-suggest label, .comment-suggest label, .comment-reply-input
|
||||||
|
@ -53,7 +53,7 @@ body,
|
||||||
.suggestion .comment-suggest-from,
|
.suggestion .comment-suggest-from,
|
||||||
.hyperlink-dialog>.hyperlink-url,
|
.hyperlink-dialog>.hyperlink-url,
|
||||||
.timeslider #padcontent span ,
|
.timeslider #padcontent span ,
|
||||||
.exporttype, .timeslider #export > p
|
.exporttype, .timeslider #export > p
|
||||||
{ color: #2E3338 !important; }
|
{ color: #2E3338 !important; }
|
||||||
|
|
||||||
/* MENUS ICONS */
|
/* MENUS ICONS */
|
||||||
|
@ -61,7 +61,7 @@ body,
|
||||||
#tbl-menu:before
|
#tbl-menu:before
|
||||||
{ color: #767676 !important; }
|
{ color: #767676 !important; }
|
||||||
/* MENU BUTTONS */
|
/* MENU BUTTONS */
|
||||||
.timeslider #editbar .buttontext
|
.timeslider #editbar .buttontext
|
||||||
{ background-color: #767676 !important; }
|
{ background-color: #767676 !important; }
|
||||||
|
|
||||||
/* PRIMARY BUTTONS */
|
/* PRIMARY BUTTONS */
|
||||||
|
@ -74,13 +74,13 @@ body,
|
||||||
.comment-changeTo-approve input[type=submit],
|
.comment-changeTo-approve input[type=submit],
|
||||||
.hyperlink-dialog>.hyperlink-save,
|
.hyperlink-dialog>.hyperlink-save,
|
||||||
#importsubmitinput, #forcereconnect
|
#importsubmitinput, #forcereconnect
|
||||||
{
|
{
|
||||||
background-color: #64d29b;
|
background-color: #64d29b;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PRIMARY COLOR */
|
/* PRIMARY COLOR */
|
||||||
h1,
|
h1,
|
||||||
#titlelabel,
|
#titlelabel,
|
||||||
.yui-skin-sam .yui-panel .hd,
|
.yui-skin-sam .yui-panel .hd,
|
||||||
p[data-l10n-id="ep_comments_page.comment"],
|
p[data-l10n-id="ep_comments_page.comment"],
|
||||||
|
@ -88,7 +88,7 @@ p[data-l10n-id="ep_comments_page.comment"],
|
||||||
.stepper, #importmessageabiword, #importmessageabiword > a
|
.stepper, #importmessageabiword, #importmessageabiword > a
|
||||||
{ color: #64d29b; }
|
{ color: #64d29b; }
|
||||||
#ui-slider-handle, #playpause_button_icon {
|
#ui-slider-handle, #playpause_button_icon {
|
||||||
background-color: #64d29b;
|
background-color: #64d29b;
|
||||||
}
|
}
|
||||||
.stepper {
|
.stepper {
|
||||||
border-color: #64d29b;
|
border-color: #64d29b;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#chatbox.stickyChat {
|
#chatbox.stickyChat {
|
||||||
width: 193px !important;
|
width: 193px !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
#titlelabel, #chatlabel {
|
#titlelabel, #chatlabel {
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#titlelabel { font-size: 16px; }
|
#titlelabel { font-size: 16px; }
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#chattext {
|
#chattext {
|
||||||
top: 45px;
|
top: 45px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
bottom: 52px;
|
bottom: 52px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
@ -49,13 +49,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.plugin-ep_author_neat #chattext {
|
.plugin-ep_author_neat #chattext {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.plugin-ep_author_neat #chattext.authorColors p,
|
.plugin-ep_author_neat #chattext.authorColors p,
|
||||||
.plugin-ep_author_neat #chattext.authorColors span {
|
.plugin-ep_author_neat #chattext.authorColors span {
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#chattext p b {
|
#chattext p b {
|
||||||
color: #4c4c4c;
|
color: #4c4c4c;
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#chatbox.stickyChat #chattext {
|
#chatbox.stickyChat #chattext {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#chatinputbox {
|
#chatinputbox {
|
||||||
|
@ -85,7 +85,7 @@
|
||||||
|
|
||||||
#chatinput {
|
#chatinput {
|
||||||
width: calc(100% - 20px);
|
width: calc(100% - 20px);
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.plugin-ep_author_neat #chatbox.stickyChat #chattext {
|
.plugin-ep_author_neat #chatbox.stickyChat #chattext {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
width: calc(50% - 20px);
|
width: calc(50% - 20px);
|
||||||
}
|
}
|
||||||
|
|
||||||
#importmessageabiword {
|
#importmessageabiword {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
border-right: 5px solid transparent;
|
border-right: 5px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidedivinner>div {
|
#sidedivinner>div {
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
font-size: 10px !important;
|
font-size: 10px !important;
|
||||||
color: #a0a0a0;
|
color: #a0a0a0;
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
.toolbar ul li a:hover,
|
.toolbar ul li a:hover,
|
||||||
.toolbar ul li a.selected,
|
.toolbar ul li a.selected,
|
||||||
.toolbar ul li a:focus {
|
.toolbar ul li a:focus {
|
||||||
background: none !important;
|
background: none !important;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ table#otheruserstable {
|
||||||
bottom: 42px;
|
bottom: 42px;
|
||||||
left: initial;
|
left: initial;
|
||||||
top: initial !important;
|
top: initial !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#users.chatAndUsers {
|
#users.chatAndUsers {
|
||||||
|
@ -87,7 +87,7 @@ table#otheruserstable {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#users.chatAndUsers #myusernameedit {
|
#users.chatAndUsers #myusernameedit {
|
||||||
|
|
|
@ -9,26 +9,26 @@
|
||||||
|
|
||||||
#editorcontainer {
|
#editorcontainer {
|
||||||
top: 41px !important;
|
top: 41px !important;
|
||||||
padding-top: 0 !important;
|
padding-top: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#outerdocbody, .timeslider #editorcontainerbox {
|
#outerdocbody, .timeslider #editorcontainerbox {
|
||||||
max-width: 900px;
|
max-width: 900px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#outerdocbody {
|
#outerdocbody {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
padding-left: 40px; /* space for side div */
|
padding-left: 40px; /* space for side div */
|
||||||
}
|
}
|
||||||
|
|
||||||
#outerdocbody.plugin-ep_author_neat {
|
#outerdocbody.plugin-ep_author_neat {
|
||||||
padding-left: 120px; /* more space for sidediv */
|
padding-left: 120px; /* more space for sidediv */
|
||||||
}
|
}
|
||||||
@media (max-width:600px) {
|
@media (max-width:600px) {
|
||||||
#outerdocbody.plugin-ep_author_neat { padding-left: 0; }
|
#outerdocbody.plugin-ep_author_neat { padding-left: 0; }
|
||||||
#options-linenoscheck { display:none; }
|
#options-linenoscheck { display:none; }
|
||||||
#options-linenoscheck ~ label { display:none; }
|
#options-linenoscheck ~ label { display:none; }
|
||||||
|
@ -42,16 +42,16 @@
|
||||||
display: block;
|
display: block;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 0 !important;
|
left: 0 !important;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#outerdocbody iframe, .timeslider #editorcontainerbox {
|
#outerdocbody iframe, .timeslider #editorcontainerbox {
|
||||||
padding: 55px;
|
padding: 55px;
|
||||||
box-shadow: 0 0 0 0.5px rgba(209, 209, 209, 0.32), 0 0 7pt 0pt rgba(204, 204, 204, 0.52);
|
box-shadow: 0 0 0 0.5px rgba(209, 209, 209, 0.32), 0 0 7pt 0pt rgba(204, 204, 204, 0.52);
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
width: calc(100% - 110px) !important; /* 100% - padding */
|
width: calc(100% - 110px) !important; /* 100% - padding */
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidediv {
|
#sidediv {
|
||||||
|
@ -62,8 +62,8 @@
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#outerdocbody.plugin-ep_author_neat #sidediv {
|
#outerdocbody.plugin-ep_author_neat #sidediv {
|
||||||
right: calc(100% - 113px);
|
right: calc(100% - 113px);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fixs comments_page & author_hover does not take in account the document padding */
|
/* Fixs comments_page & author_hover does not take in account the document padding */
|
||||||
|
@ -73,22 +73,22 @@
|
||||||
|
|
||||||
#outerdocbody.plugin-ep_author_neat .authortooltip{ margin-left: 145px; }
|
#outerdocbody.plugin-ep_author_neat .authortooltip{ margin-left: 145px; }
|
||||||
#outerdocbody.plugin-ep_author_neat .caretindicator{ margin-left: 52px; margin-top: 65px!important;}
|
#outerdocbody.plugin-ep_author_neat .caretindicator{ margin-left: 52px; margin-top: 65px!important;}
|
||||||
@media (max-width:1000px) {
|
@media (max-width:1000px) {
|
||||||
#outerdocbody.plugin-ep_author_neat .authortooltip{ margin-left: 115px; }
|
#outerdocbody.plugin-ep_author_neat .authortooltip{ margin-left: 115px; }
|
||||||
.caretindicator{ margin-left: 13px; }
|
.caretindicator{ margin-left: 13px; }
|
||||||
#outerdocbody.plugin-ep_author_neat .caretindicator{ margin-left: 17px; }
|
#outerdocbody.plugin-ep_author_neat .caretindicator{ margin-left: 17px; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 1381px) {
|
@media (min-width: 1381px) {
|
||||||
#outerdocbody.plugin-ep_comments_page { padding-right: 150px; } }
|
#outerdocbody.plugin-ep_comments_page { padding-right: 150px; } }
|
||||||
#outerdocbody.plugin-ep_comments_page #comments { left: calc(100% - 150px) }
|
#outerdocbody.plugin-ep_comments_page #comments { left: calc(100% - 150px) }
|
||||||
@media (max-width: 1380px) {
|
@media (max-width: 1380px) {
|
||||||
#outerdocbody.plugin-ep_comments_page #comments { left: calc(100% - 220px) }
|
#outerdocbody.plugin-ep_comments_page #comments { left: calc(100% - 220px) }
|
||||||
#outerdocbody.plugin-ep_comments_page { padding-right: 220px; }
|
#outerdocbody.plugin-ep_comments_page { padding-right: 220px; }
|
||||||
}
|
}
|
||||||
@media (max-width: 1278px) {
|
@media (max-width: 1278px) {
|
||||||
#outerdocbody.plugin-ep_comments_page #comments { display: none; }
|
#outerdocbody.plugin-ep_comments_page #comments { display: none; }
|
||||||
#outerdocbody.plugin-ep_comments_page { padding-right: 0px; }
|
#outerdocbody.plugin-ep_comments_page { padding-right: 0px; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width:1000px) {
|
@media (max-width:1000px) {
|
||||||
|
@ -101,17 +101,17 @@
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
width: calc(100% - 40px) !important; /* 100% - padding */
|
width: calc(100% - 40px) !important; /* 100% - padding */
|
||||||
}
|
}
|
||||||
#sidediv {
|
#sidediv {
|
||||||
top: 20px !important; /* = #outerdocbody iframe padding-top */
|
top: 20px !important; /* = #outerdocbody iframe padding-top */
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment-modal, .authortooltip { margin-top: 20px !important; }
|
.comment-modal, .authortooltip { margin-top: 20px !important; }
|
||||||
.caretindicator { margin-top: 0px !important; }
|
.caretindicator { margin-top: 0px !important; }
|
||||||
#outerdocbody.plugin-ep_author_neat .caretindicator { margin-top: 10px !important; }
|
#outerdocbody.plugin-ep_author_neat .caretindicator { margin-top: 10px !important; }
|
||||||
|
|
||||||
#outerdocbody.plugin-ep_author_neat #sidedivinner>div:before { padding-right: 10px !important; }
|
#outerdocbody.plugin-ep_author_neat #sidedivinner>div:before { padding-right: 10px !important; }
|
||||||
#outerdocbody.plugin-ep_author_neat #sidedivinner.authorColors>div,
|
#outerdocbody.plugin-ep_author_neat #sidedivinner.authorColors>div,
|
||||||
#outerdocbody.plugin-ep_author_neat #sidedivinner.authorColors>div.primary-none,
|
#outerdocbody.plugin-ep_author_neat #sidedivinner.authorColors>div.primary-none,
|
||||||
#outerdocbody.plugin-ep_author_neat #sidedivinner>div { padding-right: 6px!important; }
|
#outerdocbody.plugin-ep_author_neat #sidedivinner>div { padding-right: 6px!important; }
|
||||||
#outerdocbody.plugin-ep_author_neat #sidediv { padding-right: 0 !important; }
|
#outerdocbody.plugin-ep_author_neat #sidediv { padding-right: 0 !important; }
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@
|
||||||
padding: 15px !important;
|
padding: 15px !important;
|
||||||
width: calc(100% - 30px) !important; /* 100% - padding */
|
width: calc(100% - 30px) !important; /* 100% - padding */
|
||||||
}
|
}
|
||||||
#sidediv {
|
#sidediv {
|
||||||
display: none;
|
display: none;
|
||||||
top: 15px !important; /* = #outerdocbody iframe padding-top */
|
top: 15px !important; /* = #outerdocbody iframe padding-top */
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#innerdocbody, #padcontent {
|
#innerdocbody, #padcontent {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width:720px) {
|
@media (max-width:720px) {
|
||||||
#pad_title { display: none !important; }
|
#pad_title { display: none !important; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#edit_title {
|
#edit_title {
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
background: none !important;
|
background: none !important;
|
||||||
width: 18px !important;
|
width: 18px !important;
|
||||||
padding-left: 2px !important;
|
padding-left: 2px !important;
|
||||||
}
|
}
|
||||||
#tbl-menu:before {
|
#tbl-menu:before {
|
||||||
content: "\F0CE";
|
content: "\F0CE";
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
border: none;
|
border: none;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
padding-top: 4px;
|
padding-top: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tbl_insert .yuimenuitemlabel { text-align: center; }
|
#tbl_insert .yuimenuitemlabel { text-align: center; }
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
.timeslider #timeslider-top {
|
.timeslider #timeslider-top {
|
||||||
position: relative;
|
position: relative;
|
||||||
border-bottom: 1px solid #e4e4e4;
|
border-bottom: 1px solid #e4e4e4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.timeslider-bar { background: none; }
|
.timeslider-bar { background: none; }
|
||||||
|
@ -60,8 +60,8 @@
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
#timeslider, #timeslider-left, #timeslider-right {
|
#timeslider, #timeslider-left, #timeslider-right {
|
||||||
height: 57px;
|
height: 57px;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
height: 25px;
|
height: 25px;
|
||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.timeslider #authorsList .author {
|
.timeslider #authorsList .author {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
@media (max-width:600px) {
|
@media (max-width:600px) {
|
||||||
#sidediv {
|
#sidediv {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
html {
|
html {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
|
@ -60,7 +60,7 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
#mocha h1 a:visited
|
#mocha h1 a:visited
|
||||||
{
|
{
|
||||||
color: #00E;
|
color: #00E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue