David Benson 3 лет назад
Родитель
Сommit
c7122cad61
87 измененных файлов с 7866 добавлено и 7891 удалено
  1. 1 0
      .github/workflows/build-release.yml
  2. 14 0
      ChangeLog
  3. 1 1
      VERSION
  4. 0 3
      src/main/java/com/mxgraph/online/AbsAuthServlet.java
  5. 2 35
      src/main/java/com/mxgraph/online/DropboxAuthServlet.java
  6. 4 45
      src/main/java/com/mxgraph/online/GitHubAuthServlet.java
  7. 4 45
      src/main/java/com/mxgraph/online/GitlabAuthServlet.java
  8. 2 35
      src/main/java/com/mxgraph/online/GoogleAuthServlet.java
  9. 2 35
      src/main/java/com/mxgraph/online/MSGraphAuthServlet.java
  10. BIN
      src/main/webapp/WEB-INF/lib/gae-stub-1.0.8.jar
  11. BIN
      src/main/webapp/WEB-INF/lib/gae-stub-1.0.9.jar
  12. 0 0
      src/main/webapp/WEB-INF/pusher_properties
  13. 1964 1950
      src/main/webapp/js/app.min.js
  14. 3 3
      src/main/webapp/js/diagramly/App.js
  15. 27 5
      src/main/webapp/js/diagramly/DrawioFile.js
  16. 40 22
      src/main/webapp/js/diagramly/Editor.js
  17. 3 81
      src/main/webapp/js/diagramly/Minimal.js
  18. 0 2
      src/main/webapp/js/diagramly/P2PCollab.js
  19. 8 0
      src/main/webapp/js/grapheditor/Editor.js
  20. 121 74
      src/main/webapp/js/grapheditor/Format.js
  21. 2293 2279
      src/main/webapp/js/integrate.min.js
  22. 167 167
      src/main/webapp/js/stencils.min.js
  23. 1491 1478
      src/main/webapp/js/viewer-static.min.js
  24. 1491 1478
      src/main/webapp/js/viewer.min.js
  25. 41 27
      src/main/webapp/mxgraph/mxClient.js
  26. 1 0
      src/main/webapp/resources/dia.txt
  27. 1 0
      src/main/webapp/resources/dia_am.txt
  28. 1 0
      src/main/webapp/resources/dia_ar.txt
  29. 1 0
      src/main/webapp/resources/dia_bg.txt
  30. 1 0
      src/main/webapp/resources/dia_bn.txt
  31. 1 0
      src/main/webapp/resources/dia_bs.txt
  32. 1 0
      src/main/webapp/resources/dia_ca.txt
  33. 1 0
      src/main/webapp/resources/dia_cs.txt
  34. 1 0
      src/main/webapp/resources/dia_da.txt
  35. 1 0
      src/main/webapp/resources/dia_de.txt
  36. 1 0
      src/main/webapp/resources/dia_el.txt
  37. 1 0
      src/main/webapp/resources/dia_eo.txt
  38. 1 0
      src/main/webapp/resources/dia_es.txt
  39. 125 124
      src/main/webapp/resources/dia_et.txt
  40. 1 0
      src/main/webapp/resources/dia_eu.txt
  41. 1 0
      src/main/webapp/resources/dia_fa.txt
  42. 1 0
      src/main/webapp/resources/dia_fi.txt
  43. 1 0
      src/main/webapp/resources/dia_fil.txt
  44. 1 0
      src/main/webapp/resources/dia_fr.txt
  45. 1 0
      src/main/webapp/resources/dia_gl.txt
  46. 1 0
      src/main/webapp/resources/dia_gu.txt
  47. 1 0
      src/main/webapp/resources/dia_he.txt
  48. 1 0
      src/main/webapp/resources/dia_hi.txt
  49. 1 0
      src/main/webapp/resources/dia_hr.txt
  50. 1 0
      src/main/webapp/resources/dia_hu.txt
  51. 1 0
      src/main/webapp/resources/dia_i18n.txt
  52. 1 0
      src/main/webapp/resources/dia_id.txt
  53. 1 0
      src/main/webapp/resources/dia_it.txt
  54. 1 0
      src/main/webapp/resources/dia_ja.txt
  55. 1 0
      src/main/webapp/resources/dia_kn.txt
  56. 1 0
      src/main/webapp/resources/dia_ko.txt
  57. 1 0
      src/main/webapp/resources/dia_lt.txt
  58. 1 0
      src/main/webapp/resources/dia_lv.txt
  59. 1 0
      src/main/webapp/resources/dia_ml.txt
  60. 1 0
      src/main/webapp/resources/dia_mr.txt
  61. 1 0
      src/main/webapp/resources/dia_ms.txt
  62. 1 0
      src/main/webapp/resources/dia_my.txt
  63. 1 0
      src/main/webapp/resources/dia_nl.txt
  64. 1 0
      src/main/webapp/resources/dia_no.txt
  65. 1 0
      src/main/webapp/resources/dia_pl.txt
  66. 1 0
      src/main/webapp/resources/dia_pt-br.txt
  67. 1 0
      src/main/webapp/resources/dia_pt.txt
  68. 1 0
      src/main/webapp/resources/dia_ro.txt
  69. 1 0
      src/main/webapp/resources/dia_ru.txt
  70. 1 0
      src/main/webapp/resources/dia_si.txt
  71. 1 0
      src/main/webapp/resources/dia_sk.txt
  72. 1 0
      src/main/webapp/resources/dia_sl.txt
  73. 1 0
      src/main/webapp/resources/dia_sr.txt
  74. 1 0
      src/main/webapp/resources/dia_sv.txt
  75. 1 0
      src/main/webapp/resources/dia_sw.txt
  76. 1 0
      src/main/webapp/resources/dia_ta.txt
  77. 1 0
      src/main/webapp/resources/dia_te.txt
  78. 1 0
      src/main/webapp/resources/dia_th.txt
  79. 1 0
      src/main/webapp/resources/dia_tr.txt
  80. 1 0
      src/main/webapp/resources/dia_uk.txt
  81. 1 0
      src/main/webapp/resources/dia_vi.txt
  82. 1 0
      src/main/webapp/resources/dia_zh-tw.txt
  83. 1 0
      src/main/webapp/resources/dia_zh.txt
  84. 1 1
      src/main/webapp/service-worker.js
  85. 1 1
      src/main/webapp/service-worker.js.map
  86. 2 0
      src/main/webapp/workbox-4768a546.js
  87. 1 0
      src/main/webapp/workbox-4768a546.js.map

+ 1 - 0
.github/workflows/build-release.yml

@@ -4,6 +4,7 @@ on:
   push:
     paths:
       - VERSION
+
 jobs:
   build:
     runs-on: ubuntu-18.04

+ 14 - 0
ChangeLog

@@ -1,3 +1,17 @@
+12-JUL-2022: 20.1.1
+
+- Closes secret manager resources
+
+11-JUL-2022: 20.1.0
+
+- [conf cloud] Trial to add archived spaces support to Gliffy mass import
+- Improves performance for CSV parsing (RFC 4180)
+- Uses gcloud secret manager
+- [conf cloud] Changed page IDs export name to draw.io Export
+- [conf cloud] Using Page IDs import/export in cloud/server
+- [conf cloud] Added archived spaces support to Gliffy mass import
+- Changes  pusher.properties to pusher_properties
+
 29-JUN-2022: 20.0.4
 
 - [conf cloud] Adds tags to viewer/lightbox toolbar

+ 1 - 1
VERSION

@@ -1 +1 @@
-20.0.4
+20.1.1

+ 0 - 3
src/main/java/com/mxgraph/online/AbsAuthServlet.java

@@ -46,9 +46,6 @@ abstract public class AbsAuthServlet extends HttpServlet
 	protected static final int STATE_COOKIE_AGE = 600; //10 min
 	protected static final int TOKEN_COOKIE_AGE = 31536000; //One year
 	public static boolean IS_GAE = (System.getProperty("com.google.appengine.runtime.version") == null) ? false : true;
-	public static String SECRETS_DIR_PATH = IS_GAE ? "/WEB-INF/secrets/" : "/WEB-INF/";
-
-	
 	
 	public static final SecureRandom random = new SecureRandom();
 	protected static Cache tokenCache;

+ 2 - 35
src/main/java/com/mxgraph/online/DropboxAuthServlet.java

@@ -17,31 +17,8 @@ public class DropboxAuthServlet extends AbsAuthServlet
 	{
 		if (CONFIG == null)
 		{
-			String clientSerets, clientIds;
-			
-			try
-			{
-				clientSerets = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getSecretPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client secrets path invalid");
-			}
-
-			try
-			{
-				clientIds = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getIdPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client IDs path invalid");
-			}
+			String clientSerets = SecretFacade.getSecret(CLIENT_SECRET_FILE_PATH, getServletContext()), 
+					clientIds = SecretFacade.getSecret(CLIENT_ID_FILE_PATH, getServletContext());
 			
 			CONFIG = new Config(clientIds, clientSerets);
 			CONFIG.AUTH_SERVICE_URL = "https://api.dropboxapi.com/oauth2/token";
@@ -51,16 +28,6 @@ public class DropboxAuthServlet extends AbsAuthServlet
 		return CONFIG;
 	}
 
-	protected String getSecretPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_SECRET_FILE_PATH;
-	}
-
-	protected String getIdPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_ID_FILE_PATH;
-	}
-
 	public DropboxAuthServlet()
 	{
 		super();

+ 4 - 45
src/main/java/com/mxgraph/online/GitHubAuthServlet.java

@@ -18,42 +18,16 @@ public class GitHubAuthServlet extends AbsAuthServlet
 	{
 		if (CONFIG == null)
 		{
-			String clientSerets, clientIds;
-			
-			try
-			{
-				clientSerets = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getSecretPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client secrets path invalid");
-			}
-
-			try
-			{
-				clientIds = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getIdPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client IDs path invalid");
-			}
+			String clientSerets = SecretFacade.getSecret(CLIENT_SECRET_FILE_PATH, getServletContext()), 
+					clientIds = SecretFacade.getSecret(CLIENT_ID_FILE_PATH, getServletContext());
 			
 			CONFIG = new Config(clientIds, clientSerets);
 
 			try
 			{
-				CONFIG.AUTH_SERVICE_URL = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getServiceUrlPath()))
-						.replaceAll("\n", "");
+				CONFIG.AUTH_SERVICE_URL = SecretFacade.getSecret(AUTH_SERVICE_URL_FILE_PATH, getServletContext());
 			}
-			catch (IOException e)
+			catch (Exception e)
 			{
 				CONFIG.AUTH_SERVICE_URL = "https://github.com/login/oauth/access_token";
 			}
@@ -64,21 +38,6 @@ public class GitHubAuthServlet extends AbsAuthServlet
 		return CONFIG;
 	}
 
-	protected String getSecretPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_SECRET_FILE_PATH;
-	}
-
-	protected String getIdPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_ID_FILE_PATH;
-	}
-
-	protected String getServiceUrlPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + AUTH_SERVICE_URL_FILE_PATH;
-	}
-
 	public GitHubAuthServlet()
 	{
 		super();

+ 4 - 45
src/main/java/com/mxgraph/online/GitlabAuthServlet.java

@@ -18,42 +18,16 @@ public class GitlabAuthServlet extends AbsAuthServlet
 	{
 		if (CONFIG == null)
 		{
-			String clientSerets, clientIds;
-			
-			try
-			{
-				clientSerets = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getSecretPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client secrets path invalid");
-			}
-
-			try
-			{
-				clientIds = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getClientIdPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client IDs path invalid");
-			}
+			String clientSerets = SecretFacade.getSecret(CLIENT_SECRET_FILE_PATH, getServletContext()), 
+					clientIds = SecretFacade.getSecret(CLIENT_ID_FILE_PATH, getServletContext());
 			
 			CONFIG = new Config(clientIds, clientSerets);
 
 			try
 			{
-				CONFIG.AUTH_SERVICE_URL = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getServiceUrlPath()))
-						.replaceAll("\n", "");
+				CONFIG.AUTH_SERVICE_URL = SecretFacade.getSecret(AUTH_SERVICE_URL_FILE_PATH, getServletContext());
 			}
-			catch (IOException e)
+			catch (Exception e)
 			{
 				CONFIG.AUTH_SERVICE_URL = "https://gitlab.com/oauth/token";
 			}
@@ -63,21 +37,6 @@ public class GitlabAuthServlet extends AbsAuthServlet
 		
 		return CONFIG;
 	}
-	
-	protected String getSecretPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_SECRET_FILE_PATH;
-	}
-
-	protected String getClientIdPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_ID_FILE_PATH;
-	}
-
-	protected String getServiceUrlPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + AUTH_SERVICE_URL_FILE_PATH;
-	}
 
 	public GitlabAuthServlet()
 	{

+ 2 - 35
src/main/java/com/mxgraph/online/GoogleAuthServlet.java

@@ -28,31 +28,8 @@ public class GoogleAuthServlet extends AbsAuthServlet
 	{
 		if (CONFIG == null)
 		{
-			String clientSerets, clientIds;
-			
-			try
-			{
-				clientSerets = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getSecretPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client secrets path invalid");
-			}
-
-			try
-			{
-				clientIds = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getClientIdPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client IDs path invalid");
-			}
+			String clientSerets = SecretFacade.getSecret(CLIENT_SECRET_FILE_PATH, getServletContext()), 
+				clientIds = SecretFacade.getSecret(CLIENT_ID_FILE_PATH, getServletContext());
 			
 			CONFIG = new Config(clientIds, clientSerets);
 			CONFIG.REDIRECT_PATH = "/google";
@@ -62,16 +39,6 @@ public class GoogleAuthServlet extends AbsAuthServlet
 		return CONFIG;
 	}
 
-	protected String getSecretPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_SECRET_FILE_PATH;
-	}
-
-	protected String getClientIdPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_ID_FILE_PATH;
-	}
-
 	public GoogleAuthServlet()
 	{
 		super();

+ 2 - 35
src/main/java/com/mxgraph/online/MSGraphAuthServlet.java

@@ -17,31 +17,8 @@ public class MSGraphAuthServlet extends AbsAuthServlet
 	{
 		if (CONFIG == null)
 		{
-			String clientSerets, clientIds;
-			
-			try
-			{
-				clientSerets = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getSecretPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client secrets path invalid.");
-			}
-			
-			try
-			{
-				clientIds = Utils
-						.readInputStream(getServletContext()
-								.getResourceAsStream(getIdPath()))
-						.replaceAll("\n", "");
-			}
-			catch (IOException e)
-			{
-				throw new RuntimeException("Client IDs path invalid.");
-			}
+			String clientSerets = SecretFacade.getSecret(CLIENT_SECRET_FILE_PATH, getServletContext()), 
+					clientIds = SecretFacade.getSecret(CLIENT_ID_FILE_PATH, getServletContext());
 			
 			CONFIG = new Config(clientIds, clientSerets);
 			CONFIG.REDIRECT_PATH = "/microsoft";
@@ -51,16 +28,6 @@ public class MSGraphAuthServlet extends AbsAuthServlet
 		return CONFIG;
 	}	
 
-	protected String getSecretPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_SECRET_FILE_PATH;
-	}
-
-	protected String getIdPath()
-	{
-		return AbsAuthServlet.SECRETS_DIR_PATH + CLIENT_ID_FILE_PATH;
-	}
-
 	public MSGraphAuthServlet() 
 	{
 		super();

BIN
src/main/webapp/WEB-INF/lib/gae-stub-1.0.8.jar


BIN
src/main/webapp/WEB-INF/lib/gae-stub-1.0.9.jar


src/main/webapp/WEB-INF/pusher.properties → src/main/webapp/WEB-INF/pusher_properties


Разница между файлами не показана из-за своего большого размера
+ 1964 - 1950
src/main/webapp/js/app.min.js


+ 3 - 3
src/main/webapp/js/diagramly/App.js

@@ -604,9 +604,9 @@ App.main = function(callback, createUi)
 
 	// Blocks stand-alone mode for certain subdomains
 	if (window.top == window.self &&
-		(/ac\.draw\.io$/.test(window.location.hostname) ||
-		/ac-ent\.draw\.io$/.test(window.location.hostname) ||
-		/aj\.draw\.io$/.test(window.location.hostname)))
+		('import.diagrams.net' === window.location.hostname ||
+		'ac.draw.io' === window.location.hostname ||
+		'aj.draw.io' === window.location.hostname))
 	{
 		document.body.innerHTML = '<div style="margin-top:10%;text-align:center;">Stand-alone mode not allowed for this domain.</div>';
 		

+ 27 - 5
src/main/webapp/js/diagramly/DrawioFile.js

@@ -553,13 +553,36 @@ DrawioFile.prototype.checksumError = function(error, patches, details, etag, fun
 			var uid = (user != null) ? user.id : 'unknown';
 			var id = (this.getId() != '') ? this.getId() :
 				('(' + this.ui.hashValue(this.getTitle()) + ')');
+			var bytes = JSON.stringify(patches).length;
+			var data = null;
 			
-			EditorUi.logError('Checksum Error in ' + functionName + ' ' + id,
+			if (patches != null && this.constructor == DriveFile && bytes < 400)
+			{
+				for (var i = 0; i < patches.length; i++)
+				{
+					this.ui.anonymizePatch(patches[i]);
+				}
+	
+				data = JSON.stringify(patches);
+	
+				if (data != null && data.length < 250)
+				{
+					data = Graph.compress(data);
+				}
+				else
+				{
+					data = null;
+				}
+			}
+
+			var type = (data != null) ? 'Report' : 'Error';
+			
+			EditorUi.logError('Checksum ' + type + ' in ' + functionName + ' ' + id,
 				null, this.getMode() + '.' + this.getId(),
 				'user_' + uid + ((this.sync != null) ?
 				'-client_' + this.sync.clientId : '-nosync') +
-				'-bytes_' + JSON.stringify(patches).length +
-				'-patches_' + patches.length +
+				'-bytes_' + bytes + '-patches_' + patches.length +
+				((data != null) ? ('-json_' + data) : '') +
 				'-size_' + this.getSize());
 			
 			// Logs checksum error for file
@@ -568,8 +591,7 @@ DrawioFile.prototype.checksumError = function(error, patches, details, etag, fun
 				EditorUi.logEvent({category: 'CHECKSUM-ERROR-SYNC-FILE-' + id,
 					action: functionName, label: 'user_' + uid + ((this.sync != null) ?
 					'-client_' + this.sync.clientId : '-nosync') +
-					'-bytes_' + JSON.stringify(patches).length +
-					'-patches_' + patches.length +
+					'-bytes_' + bytes + '-patches_' + patches.length +
 					'-size_' + this.getSize()});
 			}
 			catch (e)

+ 40 - 22
src/main/webapp/js/diagramly/Editor.js

@@ -2553,27 +2553,43 @@
 	};
 
 	/**
-	 * Return array of string values, or NULL if CSV string not well formed.
+	 * Parses line of CSV values according to RFC 4180.
 	 */
 	Editor.prototype.csvToArray = function(text)
 	{
-	    var re_valid = /^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/;
-	    var re_value = /(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g;
-	    // Return NULL if input string is not well formed CSV string.
-	    if (!re_valid.test(text)) return null;
-	    var a = [];                     // Initialize array to receive values.
-	    text.replace(re_value, // "Walk" the string using replace with callback.
-	        function(m0, m1, m2, m3) {
-	            // Remove backslash from \' in single quoted values.
-	            if      (m1 !== undefined) a.push(m1.replace(/\\'/g, "'"));
-	            // Remove backslash from \" in double quoted values.
-	            else if (m2 !== undefined) a.push(m2.replace(/\\"/g, '"'));
-	            else if (m3 !== undefined) a.push(m3);
-	            return ''; // Return empty string.
-	        });
-	    // Handle special case of empty last value.
-	    if (/,\s*$/.test(text)) a.push('');
-	    return a;
+		if (text.length > 0)
+		{
+			var p = '', row = [''], i = 0, s = !0, l;
+
+			for (l of text)
+			{
+				if ('"' === l)
+				{
+					if (s && l === p)
+					{
+						row[i] += l;
+					}
+
+					s = !s;
+				}
+				else if (',' === l && s)
+				{
+					l = row[++i] = '';
+				}
+				else
+				{
+					row[i] += l;
+				}
+
+				p = l;
+			}
+			
+			return row;
+		}
+		else
+		{
+			return [];
+		}
 	};
 
 	/**
@@ -2607,7 +2623,7 @@
 			url.substring(0, 29) === 'https://fonts.googleapis.com/' ||
 			url.substring(0, 26) === 'https://fonts.gstatic.com/';
 	};
-	
+
 	/**
 	 * Converts all images in the SVG output to data URIs for immediate rendering
 	 */
@@ -7197,8 +7213,8 @@
 	/**
 	 * Returns the tags for the given cell as a string.
 	 */
-	 Graph.prototype.toggleHiddenTag = function(tag)
-	 {
+	Graph.prototype.toggleHiddenTag = function(tag)
+	{
 		var idx = mxUtils.indexOf(this.hiddenTags, tag);
 									
 		if (idx < 0)
@@ -7211,7 +7227,7 @@
 		}
 		
 		this.fireEvent(new mxEventObject('hiddenTagsChanged'));
-	 };
+	};
  
 	/**
 	 * Returns the cells in the model (or given array) that have all of the
@@ -8758,6 +8774,8 @@
 	{
 		// ignore
 	}
+
+	Editor.prototype.useCanvasForExport = false;
 	
 })();
 

+ 3 - 81
src/main/webapp/js/diagramly/Minimal.js

@@ -1034,54 +1034,7 @@ EditorUi.initMinimalTheme = function()
 	
     // Disables centering of graph after iframe resize
 	EditorUi.prototype.chromelessWindowResize = function() {};
-
-	/**
-	 * Adds sketch toggle.
-	 */
-	var diagramFormatPanelAddView = DiagramFormatPanel.prototype.addView;
-	DiagramFormatPanel.prototype.addView = function(div)
-	{
-		div = diagramFormatPanelAddView.apply(this, arguments);
-		var ui = this.editorUi;
-		var graph = ui.editor.graph;
-
-		if (graph.isEnabled() && urlParams['sketch'] == '1')
-		{
-			var opt = this.createOption(mxResources.get('sketch'), function()
-			{
-				return Editor.sketchMode;
-			}, function(checked, evt)
-			{
-				ui.setSketchMode(!Editor.sketchMode);
-
-				if (evt == null || !mxEvent.isShiftDown(evt))
-				{
-					graph.updateCellStyles({'sketch': (checked) ? '1' : null},
-						graph.getVerticesAndEdges());
-				}
-			},
-			{
-				install: function(apply)
-				{
-					this.listener = function()
-					{
-						apply(Editor.sketchMode);
-					};
-					
-					ui.addListener('sketchModeChanged', this.listener);
-				},
-				destroy: function()
-				{
-					ui.removeListener(this.listener);
-				}
-			});
-
-			div.appendChild(opt);
-		}
-
-		return div;
-	};
- 
+	
 	// Adds actions and menus
 	var menusInit = Menus.prototype.init;
 	Menus.prototype.init = function()
@@ -1550,12 +1503,7 @@ EditorUi.initMinimalTheme = function()
 			}
 			
 			menu.addSeparator(parent);
-
-			if (ui.mode != App.MODE_ATLAS) 
-			{
-				this.addMenuItems(menu, ['fullscreen'], parent);
-			}
-
+			
 			if (urlParams['embedInline'] != '1' && Editor.isDarkMode() ||
 				(!mxClient.IS_IE && !mxClient.IS_IE11))
 			{
@@ -2095,7 +2043,7 @@ EditorUi.initMinimalTheme = function()
 		viewZoomMenu.funct = function(menu, parent)
 		{
 			viewZoomMenuFunct.apply(this, arguments);
-			ui.menus.addMenuItems(menu, ['-', 'outline'], parent);
+			ui.menus.addMenuItems(menu, ['-', 'outline', '-', 'fullscreen', 'toggleDarkMode'], parent);
 		};
 		
 		var insertImage = (urlParams['sketch'] != '1') ? Editor.plusImage : Editor.shapesImage;
@@ -2205,25 +2153,14 @@ EditorUi.initMinimalTheme = function()
 			footer.style.visibility = '';
 		});
 
-		var inlineFullscreenChanged = mxUtils.bind(this, function()
-		{
-			fullscreenElt.style.backgroundImage = 'url(' + ((!Editor.inlineFullscreen) ?
-				Editor.fullscreenImage : Editor.fullscreenExitImage) + ')';
-			this.diagramContainer.style.background = (Editor.inlineFullscreen) ?
-				(Editor.isDarkMode() ? Editor.darkColor : '#ffffff') : 'transparent';
-			inlineSizeChanged();
-		});
-
 		var editInlineStart = mxUtils.bind(this, function()
 		{
-			inlineFullscreenChanged();
 			toggleFormat(ui, true);
 			ui.initFormatWindow();
 			var r  = this.diagramContainer.getBoundingClientRect();
 			this.formatWindow.window.setLocation(r.x + r.width + 4, r.y);
 		});
 
-		ui.addListener('inlineFullscreenChanged', inlineFullscreenChanged);
 		ui.addListener('editInlineStart', editInlineStart);
 
 		if (urlParams['embedInline'] == '1')
@@ -2587,11 +2524,9 @@ EditorUi.initMinimalTheme = function()
         	var redoAction = ui.actions.get('redo');        	
 	        var undoElt = addMenuItem('', undoAction.funct, null, mxResources.get('undo') + ' (' + undoAction.shortcut + ')', undoAction, Editor.undoImage);
 	        var redoElt = addMenuItem('', redoAction.funct, null, mxResources.get('redo') + ' (' + redoAction.shortcut + ')', redoAction, Editor.redoImage);
-			var fullscreenElt = addMenuItem('', fullscreenAction.funct, null, mxResources.get('fullscreen'), fullscreenAction, Editor.fullscreenImage);
 
 			if (footer != null)
 			{
-				fullscreenElt.parentNode.removeChild(fullscreenElt);
 				var deleteAction = ui.actions.get('delete');
 				var deleteElt = addMenuItem('', deleteAction.funct, null, mxResources.get('delete'), deleteAction, Editor.trashImage);
 				deleteElt.style.opacity = '0.1';
@@ -2703,19 +2638,6 @@ EditorUi.initMinimalTheme = function()
 					' (' + Editor.ctrlKey + ' +/Alt+Mousewheel)', zoomInAction, Editor.zoomInImage);
 				footer.appendChild(zoomInElt);
 
-				if (fullscreenAction.visible)
-				{
-					footer.appendChild(fullscreenElt);
-
-					mxEvent.addListener(document, 'fullscreenchange', function()
-					{
-						fullscreenElt.style.backgroundImage = 'url(' +
-							((document.fullscreenElement != null) ?
-								Editor.fullscreenExitImage :
-								Editor.fullscreenImage) + ')';
-					});
-				}
-
 				if (urlParams['embedInline'] == '1')
 				{
 					var exitAction = ui.actions.get('exit');

+ 0 - 2
src/main/webapp/js/diagramly/P2PCollab.js

@@ -330,8 +330,6 @@ function P2PCollab(ui, sync, channelId)
 				cursor.style.position = 'absolute';
 				cursor.style.display = 'none';
 				cursor.style.opacity = '0.9';
-				cursor.style.zIndex = 5000;
-
 				var img = document.createElement('img');
 				mxUtils.setPrefixedStyle(img.style, 'transform', 'rotate(-45deg)translateX(-14px)');
 				img.setAttribute('src', createCursorImage(clr));

+ 8 - 0
src/main/webapp/js/grapheditor/Editor.js

@@ -172,6 +172,14 @@ Editor.roughFillStyles = [{val: 'auto', dispName: 'Auto'}, {val: 'hachure', disp
 	{val: 'cross-hatch', dispName: 'Cross Hatch'}, {val: 'dashed', dispName: 'Dashed'},
 	{val: 'zigzag-line', dispName: 'ZigZag Line'}];
 
+/**
+ * Fill styles for normal mode.
+ */
+Editor.fillStyles = [{val: 'auto', dispName: 'Auto'}, {val: 'hatch', dispName: 'Hatch'},
+	{val: 'solid', dispName: 'Solid'}, {val: 'dots', dispName: 'Dots'}, 
+	{val: 'cross-hatch', dispName: 'Cross Hatch'}, {val: 'dashed', dispName: 'Dashed'},
+	{val: 'zigzag-line', dispName: 'ZigZag Line'}];
+
 /**
  * Graph themes for the format panel.
  */

+ 121 - 74
src/main/webapp/js/grapheditor/Format.js

@@ -4527,14 +4527,39 @@ StyleFormatPanel.prototype.addFill = function(container)
 	
 	gradientPanel.appendChild(gradientSelect);
 	
-	for (var i = 0; i < Editor.roughFillStyles.length; i++)
+	var curFillStyle;
+
+	function populateFillStyle()
 	{
-		var fillStyleOption = document.createElement('option');
-		fillStyleOption.setAttribute('value', Editor.roughFillStyles[i].val);
-		mxUtils.write(fillStyleOption, Editor.roughFillStyles[i].dispName);
-		fillStyleSelect.appendChild(fillStyleOption);
-	}
-	
+		fillStyleSelect.innerHTML = '';
+		curFillStyle = 1;
+		
+		for (var i = 0; i < Editor.fillStyles.length; i++)
+		{
+			var fillStyleOption = document.createElement('option');
+			fillStyleOption.setAttribute('value', Editor.fillStyles[i].val);
+			mxUtils.write(fillStyleOption, Editor.fillStyles[i].dispName);
+			fillStyleSelect.appendChild(fillStyleOption);
+		}
+	};
+
+	function populateRoughFillStyle()
+	{
+		fillStyleSelect.innerHTML = '';
+		curFillStyle = 2;
+
+		for (var i = 0; i < Editor.roughFillStyles.length; i++)
+		{
+			var fillStyleOption = document.createElement('option');
+			fillStyleOption.setAttribute('value', Editor.roughFillStyles[i].val);
+			mxUtils.write(fillStyleOption, Editor.roughFillStyles[i].dispName);
+			fillStyleSelect.appendChild(fillStyleOption);
+		}
+
+		fillStyleSelect.value = 'auto';
+	};
+
+	populateFillStyle();
 	fillPanel.appendChild(fillStyleSelect);
 
 	var listener = mxUtils.bind(this, function()
@@ -4550,7 +4575,6 @@ StyleFormatPanel.prototype.addFill = function(container)
 		}
 		
 		gradientSelect.value = value;
-		fillStyleSelect.value = fillStyle;
 		container.style.display = (ss.fill) ? '' : 'none';
 		
 		var fillColor = mxUtils.getValue(ss.style, fillKey, null);
@@ -4562,7 +4586,28 @@ StyleFormatPanel.prototype.addFill = function(container)
 		}
 		else
 		{
-			fillStyleSelect.style.display = (ss.style.sketch == '1') ? '' : 'none';
+			if (ss.style.sketch == '1')
+			{
+				if (curFillStyle != 2)
+				{
+					populateRoughFillStyle()
+				}
+			}
+			else if (curFillStyle != 1)
+			{
+				populateFillStyle();
+			}
+			
+			fillStyleSelect.value = fillStyle;
+
+			//In case of switching from sketch to regular and fill type is not there
+			if (!fillStyleSelect.value)
+			{
+				fillStyle = 'auto';
+				fillStyleSelect.value = fillStyle;
+			}
+
+			fillStyleSelect.style.display = ss.style.sketch == '1' || gradientSelect.style.display == 'none'? '' : 'none';
 			gradientPanel.style.display = (!ss.containsImage && (ss.style.sketch != '1' ||
 				fillStyle == 'solid' || fillStyle == 'auto')) ? '' : 'none';
 		}
@@ -5622,17 +5667,25 @@ DiagramStylePanel.prototype.addView = function(div)
 	
 	var right = left.cloneNode(true);
 	right.style.paddingLeft = '8px';
+	opts.style.paddingBottom = '12px';
+	row.appendChild(left);
 
-	// Sketch
-	if (urlParams['sketch'] != '1')
+	left.appendChild(this.createOption(mxResources.get('sketch'), function()
 	{
-		opts.style.paddingBottom = '12px';
-		row.appendChild(left);
-
-		left.appendChild(this.createOption(mxResources.get('sketch'), function()
+		return (urlParams['sketch'] == '1') ? Editor.sketchMode : sketch;
+	}, function(checked)
+	{
+		if (urlParams['sketch'] == '1')
 		{
-			return sketch;
-		}, function(checked)
+			ui.setSketchMode(!Editor.sketchMode);
+
+			//if (evt == null || !mxEvent.isShiftDown(evt))
+			{
+				graph.updateCellStyles({'sketch': (checked) ? '1' : null},
+					graph.getVerticesAndEdges());
+			}
+		}
+		else
 		{
 			sketch = checked;
 			
@@ -5648,11 +5701,11 @@ DiagramStylePanel.prototype.addView = function(div)
 			}
 			
 			graph.updateCellStyles({'sketch': (checked) ? '1' : null}, graph.getVerticesAndEdges());
-		}, null, function(div)
-		{
-			div.style.width = 'auto';
-		}));
-	}
+		}
+	}, null, function(div)
+	{
+		div.style.width = 'auto';
+	}));
 	
 	row.appendChild(right);
 	tbody.appendChild(row);
@@ -5684,37 +5737,34 @@ DiagramStylePanel.prototype.addView = function(div)
 	}));
 	
 	// Curved
-	if (urlParams['sketch'] != '1')
-	{
-		left = left.cloneNode(false);
-		right = right.cloneNode(false);
-		row = row.cloneNode(false);
-		row.appendChild(left);
-		row.appendChild(right);
-		tbody.appendChild(row);
+	left = left.cloneNode(false);
+	right = right.cloneNode(false);
+	row = row.cloneNode(false);
+	row.appendChild(left);
+	row.appendChild(right);
+	tbody.appendChild(row);
 
-		left.appendChild(this.createOption(mxResources.get('curved'), function()
-		{
-			return curved;
-		}, function(checked)
+	left.appendChild(this.createOption(mxResources.get('curved'), function()
+	{
+		return curved;
+	}, function(checked)
+	{
+		curved = checked;
+		
+		if (checked)
 		{
-			curved = checked;
-			
-			if (checked)
-			{
-				graph.currentEdgeStyle['curved'] = '1';
-			}
-			else
-			{
-				delete graph.currentEdgeStyle['curved'];
-			}
-			
-			graph.updateCellStyles({'curved': (checked) ? '1' : null}, graph.getVerticesAndEdges(false, true));
-		}, null, function(div)
+			graph.currentEdgeStyle['curved'] = '1';
+		}
+		else
 		{
-			div.style.width = 'auto';
-		}));
-	}
+			delete graph.currentEdgeStyle['curved'];
+		}
+		
+		graph.updateCellStyles({'curved': (checked) ? '1' : null}, graph.getVerticesAndEdges(false, true));
+	}, null, function(div)
+	{
+		div.style.width = 'auto';
+	}));
 
 	opts.appendChild(table);
 	div.appendChild(opts);
@@ -5817,35 +5867,32 @@ DiagramStylePanel.prototype.addView = function(div)
 			}
 		}
 	});
-	
-	if (urlParams['sketch'] != '1')
+
+	var btn = mxUtils.button(mxResources.get('reset'), mxUtils.bind(this, function(evt)
 	{
-		var btn = mxUtils.button(mxResources.get('reset'), mxUtils.bind(this, function(evt)
+		var all = graph.getVerticesAndEdges(true, true);
+		
+		if (all.length > 0)
 		{
-			var all = graph.getVerticesAndEdges(true, true);
-			
-			if (all.length > 0)
+			model.beginUpdate();
+			try
 			{
-				model.beginUpdate();
-				try
-				{
-					graph.updateCellStyles({'sketch': null, 'rounded': null}, all);
-					graph.updateCellStyles({'curved': null}, graph.getVerticesAndEdges(false, true));
-				}
-				finally
-				{
-					model.endUpdate();
-				}
+				graph.updateCellStyles({'sketch': null, 'rounded': null}, all);
+				graph.updateCellStyles({'curved': null}, graph.getVerticesAndEdges(false, true));
 			}
-			
-			ui.clearDefaultStyle();
-		}));
+			finally
+			{
+				model.endUpdate();
+			}
+		}
 		
-		btn.setAttribute('title', mxResources.get('reset'));
-		btn.style.textOverflow = 'ellipsis';
-		btn.style.maxWidth = '90px';
-		right.appendChild(btn);
-	}
+		ui.clearDefaultStyle();
+	}));
+	
+	btn.setAttribute('title', mxResources.get('reset'));
+	btn.style.textOverflow = 'ellipsis';
+	btn.style.maxWidth = '90px';
+	right.appendChild(btn);
 	
 	var createPreview = mxUtils.bind(this, function(commonStyle, vertexStyle, edgeStyle, graphStyle, container)
 	{

Разница между файлами не показана из-за своего большого размера
+ 2293 - 2279
src/main/webapp/js/integrate.min.js


Разница между файлами не показана из-за своего большого размера
+ 167 - 167
src/main/webapp/js/stencils.min.js


Разница между файлами не показана из-за своего большого размера
+ 1491 - 1478
src/main/webapp/js/viewer-static.min.js


Разница между файлами не показана из-за своего большого размера
+ 1491 - 1478
src/main/webapp/js/viewer.min.js


Разница между файлами не показана из-за своего большого размера
+ 41 - 27
src/main/webapp/mxgraph/mxClient.js


+ 1 - 0
src/main/webapp/resources/dia.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_am.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ar.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_bg.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_bn.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_bs.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ca.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_cs.txt

@@ -1203,3 +1203,4 @@ drafts=Koncepty
 draftSaveInt=Ukládat koncept v intervalu [sek] (0 – nula – vypíná)
 pluginsDisabled=Externí zásuvné moduly vypnuty
 extExpNotConfigured=Externí služba obrázků není nastavena
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_da.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_de.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_el.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_eo.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_es.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 125 - 124
src/main/webapp/resources/dia_et.txt

@@ -33,7 +33,7 @@ ensureDataSaved=Kontrolli enne sulgemist andmete salvestumist.
 allChangesSaved=Kõik muudatused salvestatud
 allChangesSavedInDrive=Kõik muudatused salvestatud Drive'i
 allowPopups=Selle dialoogi vältimiseks luba hüpikaknad.
-allowRelativeUrl=Allow relative URL
+allowRelativeUrl=Luba suhteline URL
 alreadyConnected=Punktid on juba ühendatud
 apply=Rakenda
 archiMate21=ArchiMate 2.1
@@ -59,7 +59,7 @@ background=Taust
 backgroundColor=Taustavärv
 backgroundImage=Taustapilt
 basic=Lihtne
-beta=beta
+beta=beeta
 blankDrawing=Tühi joonistus
 blankDiagram=Tühi diagramm
 block=Blokk
@@ -112,8 +112,8 @@ diagramPngDesc=Muudetav bitmap pilt
 diagramSvgDesc=Muudetav vektorpilt
 didYouMeanToExportToPdf=Kas soovisid PDFi eksportida?
 draftFound=Mustand {1} jaoks on leitud. Lae see töötluskeskkonda või tühista jätkamiseks.
-draftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.
-selectDraft=Select a draft to continue editing:
+draftRevisionMismatch=Selle lehe jagatud mustandis on selle diagrammi erinev versioon. Muutke diagrammi mustandist, et tagada uusima versiooni kasutamine.
+selectDraft=Valige redigeerimise jätkamiseks mustand:
 dragAndDropNotSupported=Piltidele puudub pukseerimise tugi. Kas sooviksid selle asemel importida?
 dropboxCharsNotAllowed=Järgnevad tähemärgid pole lubatud:  \ / : ? * " |
 check=Kontrolli
@@ -126,7 +126,7 @@ clearWaypoints=Tühjenda teepunktid
 clipart=Clipart
 close=Sulge
 closingFile=Sulgeb faili
-realtimeCollaboration=Real-Time Collaboration
+realtimeCollaboration=Reaalajas koostöö
 collaborator=Osaleja
 collaborators=Osalejad
 collapse=Vähenda
@@ -150,7 +150,7 @@ copiedToClipboard=Kopeeritud lõikelauale
 copy=Kopeeri
 copyConnect=Kopeeri ühendamisel
 copyCreated=Failist loodi koopia.
-copyData=Copy Data
+copyData=Kopeeri andmed
 copyOf=Koopia {1}
 copyOfDrawing=Joonise koopia
 copySize=Kopeeri suurus
@@ -170,16 +170,16 @@ decideLater=Otsusta hiljem
 default=Vaikesäte
 delete=Kustuta
 deleteColumn=Kustuta tulp
-deleteLibrary401=Puudub luba selle raamatukogu kustutamiseks
-deleteLibrary404=Valitud raamatukogu ei leitud
-deleteLibrary500=Viga raamatukogu kustutamisel
-deleteLibraryConfirm=Oled seda raamatukogu jäädavalt kustutamas. Oled kindel, et soovid seda teha?
+deleteLibrary401=Puudub luba selle kogumiku kustutamiseks
+deleteLibrary404=Valitud kogumikku ei leitud
+deleteLibrary500=Viga kogumiku kustutamisel
+deleteLibraryConfirm=Oled seda kogumikku jäädavalt kustutamas. Oled kindel, et soovid seda teha?
 deleteRow=Kustuta rida
 description=Kirjeldus
 device=Seade
 diagram=Diagramm
 diagramContent=Diagrammi sisu
-diagramLocked=Diagramm on lukustatud edasise andmekadu vältimiseks
+diagramLocked=Diagramm on lukustatud edasise andmekao vältimiseks
 diagramLockedBySince=Diagrammi lukustas {1} {2} tagasi
 diagramName=Diagrammi nimi
 diagramIsPublic=Diagramm on avalik
@@ -298,10 +298,10 @@ fileNotFoundOrDenied=Faili ei leitud. Seda pole olemas või sul pole ligipääsu
 fileNotLoaded=Faili ei laetud
 fileNotSaved=Faili ei salvestatud
 fileOpenLocation=Kuidas sooviksid faili(e) avada?
-filetypeHtml=.html causes file to save as HTML with redirect to cloud URL
-filetypePng=.png causes file to save as PNG with embedded data
-filetypeSvg=.svg causes file to save as SVG with embedded data
-fileWillBeSavedInAppFolder={1} salvestatakse aplikatsiooni kausta.
+filetypeHtml=.html teeb faili kirje HTML-vormingus ja otse pilve URL-i aadressile
+filetypePng=.png salvestab faili PNG -vormingus koos manustatud andmetega
+filetypeSvg=.svg salvestab faili SVG -vormingus koos manustatud andmetega
+fileWillBeSavedInAppFolder={1} salvestatakse rakenduse kausta.
 fill=Täida
 fillColor=Täitevärv
 filterCards=Filtreeri kaardid
@@ -343,7 +343,7 @@ formatVsdx=VSDX
 formatVssx=VSSX
 formatXmlPlain=XML (tavaline)
 formatXml=XML
-forum=Diskussiooni-abifoorumid
+forum=Arutelu/ Abi foorumid
 freehand=Vabakäega
 fromTemplate=Mallist
 fromTemplateUrl=Malli URList
@@ -354,7 +354,7 @@ fullscreen=Täisekraan
 gap=Gap
 gcp=GCP
 general=Üldine
-getNotionChromeExtension=Get the Notion Chrome Extension
+getNotionChromeExtension=Hangi Notion Chrome lisa
 github=GitHub
 gitlab=GitLab
 gliffy=Gliffy
@@ -363,7 +363,7 @@ googleDocs=Google Docs
 googleDrive=Google Drive
 googleGadget=Google Gadget
 googlePlus=Google+
-googleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:
+googleSharingNotAvailable=Jagamine on saadaval ainult Google Drive kaudu. Klõpsake allpool nuppu „Ava” ja jagage Lisategevused menüüs:
 googleSlides=Google Slides
 googleSites=Google Sites
 googleSheets=Google Sheets
@@ -378,7 +378,7 @@ hateApp=Ma vihkan draw.io'd
 heading=Päis
 height=Kõrgus
 help=Abi
-helpTranslate=Aita meil seda aplikatsiooni tõlkida
+helpTranslate=Aita meil seda rakendust tõlkida
 hide=Peida
 hideIt=Peida {1}
 hidden=Peidetud
@@ -476,7 +476,7 @@ maps=Kaardid
 mathematicalTypesetting=Matemaatiline vormistus
 makeCopy=Tee koopia
 manual=Manuaalne
-merge=Merge
+merge=Ühenda
 mermaid=Mermaid
 microsoftOffice=Microsoft Office
 microsoftExcel=Microsoft Excel
@@ -500,7 +500,7 @@ navigation=Navigatsioon
 network=Võrk
 networking=Võrgustumine
 new=Uus
-newLibrary=Uus raamatukogu
+newLibrary=Uus kogumik
 nextPage=Järgmine lehekülg
 no=Ei
 noPickFolder=Ei, vali kaust
@@ -508,7 +508,7 @@ noAttachments=Manuseid ei leitud
 noColor=Ilma värvita
 noFiles=Ilma failideta
 noFileSelected=Ühtki faili pole valitud
-noLibraries=Raamatukogusid ei leitud
+noLibraries=Kogumikke ei leitud
 noMoreResults=Rohkem tulemusi pole
 none=Mitte ühtki
 noOtherViewers=Muid vaatajaid pole
@@ -522,13 +522,13 @@ noPageContentOrNotSaved=Ankruid ei leitud sellelt lehelt või seda pole veel sal
 normal=Normaalne
 north=Põhi
 notADiagramFile=Pole diagrammi fail
-notALibraryFile=Pole raamatukogu fail
+notALibraryFile=Pole kogumiku fail
 notAvailable=Pole saadaval
 notAUtf8File=Pole UTF-8 fail
 notConnected=Pole ühendust
 note=Märge
 notion=Notion
-notSatisfiedWithImport=Not satisfied with the import?
+notSatisfiedWithImport=Pole impordiga rahul?
 notUsingService=Ei kasuta {1}?
 numberedList=Nummerdatud nimekiri
 offline=Võrguühenduseta
@@ -541,8 +541,8 @@ openArrow=Ava noole
 openExistingDiagram=Ava olemasolev diagramm
 openFile=Ava fail
 openFrom=Ava...
-openLibrary=Ava raamatukogu
-openLibraryFrom=Ava raamatukogu...
+openLibrary=Ava kogumik
+openLibraryFrom=Ava kogumik...
 openLink=Ava link
 openInNewWindow=Ava uues aknas
 openInThisWindow=Ava selles aknas
@@ -551,7 +551,7 @@ openRecent=Ava hiljutine
 openSupported=Toetatud formaadid on selle tarkvara abil salvestatud failid (.xml), .vsdx ja .gliffy
 options=Valikud
 organic=Orgaaniline
-orgChart=Org Chart
+orgChart=Organisatsiooni skeem
 orthogonal=Ortogonaalne
 otherViewer=teine vaataja
 otherViewers=teised vaatajad
@@ -579,7 +579,7 @@ perimeter=Perimeeter
 permissionAnyone=Igaüks saab toimetada
 permissionAuthor=Ainult mina saan toimetada
 pickFolder=Vali kaust
-pickLibraryDialogTitle=Vali raamatukogu
+pickLibraryDialogTitle=Vali kogumik
 publicDiagramUrl=Diagrammi avalik URL
 placeholders=Kohahoidjad
 plantUml=PlantUML
@@ -659,9 +659,9 @@ saveAsXmlFile=Salvesta XML failina?
 saved=Salvestatud
 saveDiagramFirst=Palun salvesta enne diagramm
 saveDiagramsTo=Salvesta diagrammid...
-saveLibrary403=Puuduvad õigused selle raamatukogu muutmiseks
-saveLibrary500=Viga raamatukogu salvestamisel
-saveLibraryReadOnly=Could not save library while read-only mode is active
+saveLibrary403=Puuduvad õigused selle kogumiku muutmiseks
+saveLibrary500=Viga kogumiku salvestamisel
+saveLibraryReadOnly=Ei saanud kogumikku salvestada, kui kirjutuskaitse on aktiivne
 saving=Salvestan
 scratchpad=Märkmik
 scrollbars=Kerimisriba
@@ -688,12 +688,12 @@ shadow=Vari
 shape=Kujund
 shapes=Kujundid
 share=Jaga
-shareCursor=Share Mouse Cursor
+shareCursor=Jaga hiirekursorit
 shareLink=Link jagatud toimetamiseks
-sharingAvailable=Sharing available for Google Drive and OneDrive files.
+sharingAvailable=Jagamine on saadaval Google Drive ja OneDrive'i failide jaoks.
 sharp=Terav
 show=Näita
-showRemoteCursors=Show Remote Mouse Cursors
+showRemoteCursors=Näita jagaja hiirekursorit
 showStartScreen=Näita algusekraani
 sidebarTooltip=Kliki laiendamiseks. Pukseeri kujundid diagrammi. Shift+klikk valiku muutmiseks. Alt+klikk sisestamiseks ja ühendamiseks.
 signs=Märgid
@@ -703,7 +703,7 @@ simpleArrow=Lihtne nool
 simpleViewer=Lihtne vaade
 size=Suurus
 sketch=Sketš
-snapToGrid=Snap to Grid
+snapToGrid=Kinnita ruudustiku külge
 solid=Katkematu
 sourceSpacing=Allika vahekaugus
 south=Lõuna
@@ -723,7 +723,7 @@ subscript=Alaindeks
 summary=Kokkuvõte
 superscript=Ülaindeks
 support=Tugi
-swimlaneDiagram=Swimlane Diagram
+swimlaneDiagram=Tegevusskeem
 sysml=SysML
 tags=Sildid
 table=Tabel
@@ -760,13 +760,13 @@ uml=UML
 underline=Alljoonda
 undo=Võta tagasi
 ungroup=Eemalda rühmitus
-unmerge=Unmerge
+unmerge=Eemalda ühendamine
 unsavedChanges=Salvestamata muudatused
 unsavedChangesClickHereToSave=Salvestamata muudatused. Kliki siia salvestamiseks.
 untitled=Pealkirjata
 untitledDiagram=Pealkirjata diagramm
 untitledLayer=Pealkirjata kiht
-untitledLibrary=Pealkirjata raamatukogu
+untitledLibrary=Pealkirjata kogumik
 unknownError=Ootamatu viga
 updateFile=Uuenda {1}
 updatingDocument=Uuendan dokumenti. Palun oota...
@@ -834,7 +834,7 @@ officeFailedAuthMsg=Ei õnnestu kasutaja autentimine või rakenduse autoriseerim
 convertingDiagramFailed=Diagrammi teisendamine ei õnnestunud.
 officeCopyImgErrMsg=Pildi lisamine "Lisa" funktsiooniga ei õnnestunud vastava programmi piirangute tõttu.  Palun kopeeri ja kleebi pilt käsitsi.
 insertingImageFailed=Pildi lisamine ei õnnestunud
-officeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.
+officeCopyImgInst=Juhised: tehke parem klõps alloleval pildil. Valige kontekstimenüüst "Kopeeri pilt". Seejärel tehke dokumendis parem klõps ja valige kontekstimenüüst "Kleebi".
 folderEmpty=Kaust on tühi
 recent=Hiljutised
 sharedWithMe=Minuga jagatud
@@ -855,23 +855,23 @@ officeManualUpdateInst=Juhised: Kopeeri draw.io diagramm dokumendis.  Seejärel
 officeClickToEdit=Muutmiseks kliki ikoonil:
 pasteDiagram=Kleebi draw.io diagramm siia
 connectOD=Ühenda OneDrive
-selectChildren=Select Children
-selectSiblings=Select Siblings
-selectParent=Select Parent
-selectDescendants=Select Descendants
+selectChildren=Valige madalama taseme üksused
+selectSiblings=Valige paralleelsed üksused
+selectParent=Valige ülemise taseme üksused
+selectDescendants=Valige alumise taseme üksused
 lastSaved=Viimati salvestati {1} tagasi
-resolve=Resolve
-reopen=Re-open
-showResolved=Show Resolved
+resolve=Lahenda
+reopen=Ava uuesti
+showResolved=Näita lahendatuid
 reply=Vasta
 objectNotFound=Objekti ei leitud
-reOpened=Re-opened
-markedAsResolved=Marked as resolved
+reOpened=Uuesti avatud
+markedAsResolved=Lahendatuks märgitud
 noCommentsFound=Kommentaare pole
 comments=Kommentaarid
 timeAgo={1} tagasi
 confluenceCloud=Confluence Cloud
-libraries=Libraries
+libraries=Kogumid
 confAnchor=Confluence lehe ankur
 confTimeout=Ühendus aegus
 confSrvTakeTooLong=Serveri {1} vastamien võtab liiga kaua aega.
@@ -885,38 +885,38 @@ confExtEditNotPossible=Seda diagrammi ei saa väliselt muuta. Palun proovi seda
 confEditedExt=Diagrammi / Lehte muudeti mujalt
 diagNotFound=Diagrammi ei leitud
 confEditedExtRefresh=Diagrammi / Lehte muudetakse mujalt. Palun värskenda lehte.
-confCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.
+confCannotEditDraftDelOrExt=Diagramme ei saa redigeerida mustandilehel, skeem kustutatakse lehelt või redigeeritakse diagrammi väliselt. Palun kontrollige lehte.
 retBack=Mine tagasi
-confDiagNotPublished=The diagram does not belong to a published page
-createdByDraw=Created by draw.io
+confDiagNotPublished=Diagramm ei kuulu avaldatud lehele
+createdByDraw=Loodud draw.io abil
 filenameShort=Liiga lühike failinimi
 invalidChars=Sobimatud sümbolid
 alreadyExst={1} on juba olemas
-draftReadErr=Draft Read Error
+draftReadErr=Mustandi lugemise viga
 diagCantLoad=Diagrammi laadimine ei õnnestunud
 draftWriteErr=Diagrammi kirjutamise viga
-draftCantCreate=Draft could not be created
-confDuplName=Duplicate diagram name detected. Please pick another name.
-confSessionExpired=Looks like your session expired. Log in again to keep working.
+draftCantCreate=Diagrammi loomine ei õnnestunud
+confDuplName=Diagrammi nimi on juba kasutusel. Sisesta teine nimi.
+confSessionExpired=Paistab, et teie seanss on aegunud. Jätkamiseks logi uuesti sisse.
 login=Sisselogimine
 drawPrev=draw.io eelvaade
 drawDiag=draw.io diagramm
-invalidCallFnNotFound=Invalid Call: {1} not found
-invalidCallErrOccured=Invalid Call: An error occurred, {1}
+invalidCallFnNotFound=Vale päring: {1} ei leitud
+invalidCallErrOccured=Vale päring: ilmnes tõrge, {1}
 anonymous=Anonüümne
-confGotoPage=Go to containing page
+confGotoPage=Mine sisalduvale lehele
 showComments=Näita kommentaare
 confError=Viga: {1}
-gliffyImport=Gliffy Import
-gliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.
-gliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.
+gliffyImport=Gliffy import
+gliffyImportInst1=Kõigi Gliffy diagrammide importimiseks klõpsake nuppu "Alusta Import".
+gliffyImportInst2=Pange tähele, et impordiprotseduur võtab natuke aega ja brauseri aken peab jääma avatuks, kuni import on lõpule viidud.
 startImport=Alusta importi
 drawConfig=draw.io Seaded
 customLib=Custom Libraries
 customTemp=Custom Templates
 pageIdsExp=Page IDs Export
 drawReindex=draw.io re-indexing (beta)
-working=Working
+working=Tegutsetakse
 drawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.
 createConfSp=Create Config Space
 unexpErrRefresh=Unexpected error, please refresh the page and try again.
@@ -969,52 +969,52 @@ confAErrOccured=Viga!
 savedSucc=Salvestatud
 confASaveFailedErr=Salvestamine ei õnnestunud (Ootamatu viga)
 character=Sümbol
-confAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment
-confALibPageDesc=This page contains draw.io custom libraries as attachments
-confATempPageDesc=This page contains draw.io custom templates as attachments
-working=Working
-confAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates
-confANoCustLib=No Custom Libraries
+confAConfPageDesc=See leht sisaldab manusena draw.io konfiguratsiooni faili
+confALibPageDesc=See leht sisaldab manustena kohandatud draw.io kogumikke
+confATempPageDesc=See leht sisaldab manustena kohandatud draw.io malle
+working=Toimetatakse
+confAConfSpaceDesc=Seda ruumi kasutatakse draw.io konfiguratsioonifailide ja kohandatud kogumike/ mallide salvestamiseks
+confANoCustLib=Kohandatud kogumikke pole
 delFailed=Kustutamine ei õnnestunud!
 showID=Näita ID
 confAIncorrectLibFileType=Vale failitüüp. Teegid peavad olema XML failidena.
 uploading=Üleslaadimine
-confALibExist=This library already exists
+confALibExist=See kogumik on juba olemas
 confAUploadSucc=Üleslaadimine õnnestus
 confAUploadFailErr=Üleslaadimine ei õnnestunud (Ootamatu viga)
-hiResPreview=High Res Preview
+hiResPreview=Kõrge resolutsiooniga eelvaade
 officeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.
 officePopupInfo=Palun lõpeta protsess hüpikaknas.
 pickODFile=Vali OneDrive fail
-createODFile=Create OneDrive File
+createODFile=Tee OneDrive fail
 pickGDriveFile=Vali Google Drive fail
-createGDriveFile=Create Google Drive File
+createGDriveFile=Tee Google Drive fail
 pickDeviceFile=Vali fail seadmelt
-vsdNoConfig="vsdurl" is not configured
+vsdNoConfig="vsdurl" pole määratud seadetes
 ruler=Joonlaud
 units=Ühikud
-points=Points
-inches=Inches
-millimeters=Millimeters
-confEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.
-confDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session's modifications.
+points=Punktid
+inches=Tollid
+millimeters=Millimeetrid
+confEditDraftDelOrExt=See diagramm on mustandi lehel, kustutatakse lehelt või redigeeritakse väliselt. See salvestatakse uue manuseversioonina ja seda ei pruugi lehel kajastada.
+confDiagEditedExt=Diagrammi redigeeritakse teisel sessioonil. See salvestatakse uue manuseversioonina, kuid lehel kuvatakse muu seansi muudatused.
 macroNotFound=Makrot ei leitud
-confAInvalidPageIdsFormat=Incorrect Page IDs file format
-confACollectingCurPages=Collecting current pages
-confABuildingPagesMap=Building pages mapping
-confAProcessDrawDiag=Started processing imported draw.io diagrams
-confAProcessDrawDiagDone=Finished processing imported draw.io diagrams
-confAProcessImpPages=Started processing imported pages
-confAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"
-confAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"
-confAImpDiagram=Importing diagram "{1}"
-confAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.
-confAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.
-confAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.
-confImpDiagramSuccess=Updating diagram "{1}" done successfully.
-confANoLnksInDrgm=No links to update in: {1}
-confAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"
-confAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"
+confAInvalidPageIdsFormat=Vale Lehe ID faili formaat
+confACollectingCurPages=Olemasolevate lehtede kogumine
+confABuildingPagesMap=Lehtede vastavuse koostamine
+confAProcessDrawDiag=Alustas tegelemist: imporditud draw.io diagrammid
+confAProcessDrawDiagDone=Lõpetas tegelemise: draw.io diagrammide import
+confAProcessImpPages=Alustati tegelemist: imporditud lehed
+confAErrPrcsDiagInPage=Viga tegelemisel: draw.io diagrammid lehel "{1}"
+confAPrcsDiagInPage=Tegeltakse: draw.io diagrammid lehel "{1}"
+confAImpDiagram=Imporditakse diagrammi "{1}"
+confAImpDiagramFailed=Diagrammi "{1}" importimine ebaõnnestus. Selle uue lehe ID -d ei leita. Võibolla osutab see lehele, mida hetkel ei impordita.
+confAImpDiagramError=Viga diagrammi "{1}" importimisel. Diagrammi ei saa kätte või salvestada. Selle diagrammi linke ei saa parandada.
+confAUpdateDgrmCCFailed=Lingi muutmine diagrammile "{1}" ebaõnnestus.
+confImpDiagramSuccess=Diagrammi "{1}" muutmine oli edukas.
+confANoLnksInDrgm=Pole muudetavaid linke diagrammil: {1}
+confAUpdateLnkToPg=Uuendatud link: "{1}" diagrammil: "{2}"
+confAUpdateLBLnkToPg=Uuendatud valguskasti link: "{1}" diagrammil: "{2}"
 confAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"
 confAPageIdsImpDone=Page IDs Import finished
 confAPrcsMacrosInPage=Processing draw.io macros in page "{1}"
@@ -1030,19 +1030,19 @@ confGetInfoFailed=Fetching file info from {1} failed.
 confCheckCacheFailed=Cannot get cached file info.
 confReadFileErr=Cannot read "{1}" file from {2}.
 confSaveCacheFailed=Unexpected error. Cannot save cached file
-orgChartType=Org Chart Type
-linear=Linear
-hanger2=Hanger 2
-hanger4=Hanger 4
-fishbone1=Fishbone 1
-fishbone2=Fishbone 2
-1ColumnLeft=Single Column Left
-1ColumnRight=Single Column Right
-smart=Smart
-parentChildSpacing=Parent Child Spacing
-siblingSpacing=Sibling Spacing
+orgChartType=Organisatsiooni diagrammi tüüp
+linear=Lineaarne
+hanger2=Riidepuu 2
+hanger4=Riidepuu 4
+fishbone1=Kalaluu ​​1
+fishbone2=Kalaluu ​​2
+1ColumnLeft=Üks veerg vasakule
+1ColumnRight=Üks veerg paremale
+smart=Nutikas
+parentChildSpacing=Ülema alama vahekaugus
+siblingSpacing=Samal tasemel vahekaugus
 confNoPermErr=Sorry, you don't have enough permissions to view this embedded diagram from page {1}
-copyAsImage=Copy as Image
+copyAsImage=Kopeerige pildina
 lucidImport=Lucidchart Import
 lucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.
 installFirst=Please install {1} first
@@ -1157,27 +1157,27 @@ matchesRepl={1} matches replaced
 draftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.
 ibm=IBM
 linkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.
-linkToDiagram=Link to Diagram
-changedBy=Changed By
-lastModifiedOn=Last modified on
-searchResults=Search Results
-showAllTemps=Show all templates
+linkToDiagram=Link diagrammile
+changedBy=Muutja
+lastModifiedOn=Viimati muudetud
+searchResults=Otsingu tulemused
+showAllTemps=Näita kõiki mudeleid
 notionToken=Notion Token
-selectDB=Select Database
-noDBs=No Databases
+selectDB=Vali andmebaas
+noDBs=Andmebaas puudub
 diagramEdited={1} diagram "{2}" edited
-confDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?
-confDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?
+confDraftPermissionErr=Mustandit ei saa kirjutada. Kas teil on sellel lehel manuse kirjutamise/lugemise õigused?
+confDraftTooBigErr=Mustandi maht on liiga suur. Kontrolli Confluences "Manuse seaded" - "Manuse maksimaalne suurus".
 owner=Omanik
-repository=Repository
+repository=Hoidla
 branch=Haru
-meters=Meters
-teamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)
-contactOwner=Contact Owner
-viewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.
-website=Website
-check4Updates=Check for updates
-attWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...
+meters=Meetrit
+teamsNoEditingMsg=Toimetaja funktsioon on saadaval ainult töölauakeskkonnas (MS Teams rakendus või veebibrauser)
+contactOwner=Võtke ühendust omanikuga
+viewerOnlyMsg=Te ei saa redigeerida diagramme mobiiliplatvormil. Kasuta töölauaprogrammi või veebibrauserit.
+website=Veebileht
+check4Updates=Kontrolli värskendusi
+attWriteFailedRetry={1}: manuse kirjutamine ebaõnnestus, proovige uuesti {2} sekundi pärast ...
 confPartialPageList=We couldn't fetch all pages due to an error in Confluence. Continuing using {1} pages only.
 spellCheck=Spell checker
 noChange=No Change
@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_eu.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_fa.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_fi.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_fil.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_fr.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_gl.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_gu.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_he.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_hi.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_hr.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_hu.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_i18n.txt

@@ -1203,3 +1203,4 @@ drafts=drafts
 draftSaveInt=draftSaveInt
 pluginsDisabled=pluginsDisabled
 extExpNotConfigured=extExpNotConfigured
+pathFilename=pathFilename

+ 1 - 0
src/main/webapp/resources/dia_id.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_it.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ja.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_kn.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ko.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_lt.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_lv.txt

@@ -1203,3 +1203,4 @@ drafts=Melnraksti
 draftSaveInt=Melnraksta saglabāšanas intervāls [s] (0, lai atspējotu)
 pluginsDisabled=Ārējie spraudņi ir atspējoti.
 extExpNotConfigured=Ārējā attēla pakalpojums nav konfigurēts
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ml.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_mr.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ms.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_my.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_nl.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_no.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_pl.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_pt-br.txt

@@ -1203,3 +1203,4 @@ drafts=Rascunhos
 draftSaveInt=Intervalo de salvamento de rascunhos [s] (0 para desabilitar)
 pluginsDisabled=Extensões externas desabilitadas.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_pt.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ro.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ru.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_si.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_sk.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_sl.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_sr.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_sv.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_sw.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_ta.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_te.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_th.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_tr.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_uk.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_vi.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_zh-tw.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

+ 1 - 0
src/main/webapp/resources/dia_zh.txt

@@ -1203,3 +1203,4 @@ drafts=Drafts
 draftSaveInt=Draft save interval [sec] (0 to disable)
 pluginsDisabled=External plugins disabled.
 extExpNotConfigured=External image service is not configured
+pathFilename=Path/Filename

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
src/main/webapp/service-worker.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
src/main/webapp/service-worker.js.map


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
src/main/webapp/workbox-4768a546.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
src/main/webapp/workbox-4768a546.js.map