mirror of
				https://github.com/ether/etherpad-lite.git
				synced 2025-10-31 08:11:10 +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
					
				| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user