浏览代码

6.1.0.0 release

Former-commit-id: 42bd774df356a2d904b3bbf9c9b378cbe9d1133f
Gaudenz Alder 8 年之前
父节点
当前提交
f77e6d93ac
共有 93 个文件被更改,包括 4147 次插入1984 次删除
  1. 7 0
      ChangeLog
  2. 1 1
      VERSION
  3. 3 0
      etc/build/build.xml
  4. 0 1
      src/com/mxgraph/online/EmbedServlet2.java
  5. 162 0
      src/com/mxgraph/online/GitHubServlet.java
  6. 1 0
      war/WEB-INF/github_client_secret
  7. 1 0
      war/WEB-INF/github_dev_client_secret
  8. 11 0
      war/WEB-INF/web.xml
  9. 1 1
      war/cache.manifest
  10. 25 0
      war/github.html
  11. 6 0
      war/images/github-logo-white.svg
  12. 17 0
      war/images/github-logo.svg
  13. 509 475
      war/js/app.min.js
  14. 270 265
      war/js/atlas-viewer.min.js
  15. 587 575
      war/js/atlas.min.js
  16. 177 53
      war/js/diagramly/App.js
  17. 3 0
      war/js/diagramly/Devel.js
  18. 67 10
      war/js/diagramly/Dialogs.js
  19. 10 8
      war/js/diagramly/DrawioFile.js
  20. 2 10
      war/js/diagramly/DrawioUser.js
  21. 3 11
      war/js/diagramly/DriveClient.js
  22. 31 10
      war/js/diagramly/DriveFile.js
  23. 2 8
      war/js/diagramly/DriveLibrary.js
  24. 3 11
      war/js/diagramly/DropboxClient.js
  25. 7 10
      war/js/diagramly/DropboxFile.js
  26. 2 8
      war/js/diagramly/DropboxLibrary.js
  27. 7 4
      war/js/diagramly/Editor.js
  28. 215 49
      war/js/diagramly/EditorUi.js
  29. 649 0
      war/js/diagramly/GitHubClient.js
  30. 233 0
      war/js/diagramly/GitHubFile.js
  31. 39 0
      war/js/diagramly/GitHubLibrary.js
  32. 53 8
      war/js/diagramly/Menus.js
  33. 6 14
      war/js/diagramly/OneDriveClient.js
  34. 8 11
      war/js/diagramly/OneDriveFile.js
  35. 2 8
      war/js/diagramly/OneDriveLibrary.js
  36. 3 3
      war/js/embed-static.min.js
  37. 8 1
      war/js/mxgraph/Dialogs.js
  38. 2 2
      war/js/mxgraph/Graph.js
  39. 3 3
      war/js/reader.min.js
  40. 428 424
      war/js/viewer.min.js
  41. 11 0
      war/resources/dia.txt
  42. 11 0
      war/resources/dia_am.txt
  43. 11 0
      war/resources/dia_ar.txt
  44. 11 0
      war/resources/dia_bg.txt
  45. 11 0
      war/resources/dia_bn.txt
  46. 11 0
      war/resources/dia_bs.txt
  47. 11 0
      war/resources/dia_ca.txt
  48. 11 0
      war/resources/dia_cs.txt
  49. 11 0
      war/resources/dia_da.txt
  50. 11 0
      war/resources/dia_de.txt
  51. 11 0
      war/resources/dia_el.txt
  52. 11 0
      war/resources/dia_es.txt
  53. 11 0
      war/resources/dia_et.txt
  54. 11 0
      war/resources/dia_fa.txt
  55. 11 0
      war/resources/dia_fi.txt
  56. 11 0
      war/resources/dia_fil.txt
  57. 11 0
      war/resources/dia_fr.txt
  58. 11 0
      war/resources/dia_gu.txt
  59. 11 0
      war/resources/dia_he.txt
  60. 11 0
      war/resources/dia_hi.txt
  61. 11 0
      war/resources/dia_hr.txt
  62. 11 0
      war/resources/dia_hu.txt
  63. 11 0
      war/resources/dia_i18n.txt
  64. 11 0
      war/resources/dia_id.txt
  65. 11 0
      war/resources/dia_it.txt
  66. 11 0
      war/resources/dia_ja.txt
  67. 11 0
      war/resources/dia_kn.txt
  68. 11 0
      war/resources/dia_ko.txt
  69. 11 0
      war/resources/dia_lt.txt
  70. 11 0
      war/resources/dia_lv.txt
  71. 11 0
      war/resources/dia_ml.txt
  72. 11 0
      war/resources/dia_mr.txt
  73. 11 0
      war/resources/dia_ms.txt
  74. 11 0
      war/resources/dia_nl.txt
  75. 11 0
      war/resources/dia_no.txt
  76. 11 0
      war/resources/dia_pl.txt
  77. 11 0
      war/resources/dia_pt-br.txt
  78. 11 0
      war/resources/dia_pt.txt
  79. 11 0
      war/resources/dia_ro.txt
  80. 11 0
      war/resources/dia_ru.txt
  81. 11 0
      war/resources/dia_sk.txt
  82. 11 0
      war/resources/dia_sl.txt
  83. 11 0
      war/resources/dia_sr.txt
  84. 11 0
      war/resources/dia_sv.txt
  85. 11 0
      war/resources/dia_sw.txt
  86. 11 0
      war/resources/dia_ta.txt
  87. 11 0
      war/resources/dia_te.txt
  88. 11 0
      war/resources/dia_th.txt
  89. 11 0
      war/resources/dia_tr.txt
  90. 11 0
      war/resources/dia_uk.txt
  91. 11 0
      war/resources/dia_vi.txt
  92. 11 0
      war/resources/dia_zh-tw.txt
  93. 11 0
      war/resources/dia_zh.txt

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+11-FEB-2017: 6.1.0.0
+
+- Fixes HTML export
+- Adds GitHub support
+- Fixes processing order in CSV import
+- Fixes checks for valid HTTP responses
+
 08-FEB-2017: 6.0.3.7
 
 - Fixes preview for Embed HTML dialog

+ 1 - 1
VERSION

@@ -1 +1 @@
-6.0.3.7
+6.1.0.0

+ 3 - 0
etc/build/build.xml

@@ -329,6 +329,9 @@
 				<file name="OneDriveFile.js" />
 				<file name="OneDriveLibrary.js" />
 				<file name="OneDriveClient.js" />
+				<file name="GitHubFile.js" />
+				<file name="GitHubLibrary.js" />
+				<file name="GitHubClient.js" />
 				<file name="ChatWindow.js" />
 			</sources>
 			

+ 0 - 1
src/com/mxgraph/online/EmbedServlet2.java

@@ -390,7 +390,6 @@ public class EmbedServlet2 extends HttpServlet
 					// Checks if URL already fetched to avoid duplicates
 					if (!completed.contains(urls[i]))
 					{
-
 						completed.add(urls[i]);
 						URL url = new URL(urls[i]);
 						URLConnection connection = url.openConnection();

+ 162 - 0
src/com/mxgraph/online/GitHubServlet.java

@@ -0,0 +1,162 @@
+/**
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
+ */
+package com.mxgraph.online;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Servlet implementation ProxyServlet
+ */
+@SuppressWarnings("serial")
+public class GitHubServlet extends HttpServlet
+{
+
+	/**
+	 * Path component under war/ to locate iconfinder_key file.
+	 */
+	public static final String DEV_CLIENT_SECRET_FILE_PATH = "/WEB-INF/github_dev_client_secret";
+
+
+	/**
+	 * Path component under war/ to locate iconfinder_key file.
+	 */
+	public static final String CLIENT_SECRET_FILE_PATH = "/WEB-INF/github_client_secret";
+
+	/**
+	 * 
+	 */
+	private static String DEV_CLIENT_SECRET = "be6810bd6b8d6a47c65a8b141e0dce8aaabcd4f5";
+
+	/**
+	 * 
+	 */
+	private static String CLIENT_SECRET = "6fb1cff7690db9ac066db5bbde8e3c078efdabcf";
+
+	/**
+	 * @see HttpServlet#HttpServlet()
+	 */
+	public GitHubServlet()
+	{
+		super();
+	}
+
+	/**
+	 * Loads the key.
+	 */
+	protected void updateKeys()
+	{
+		if (DEV_CLIENT_SECRET == null)
+		{
+			try
+			{
+				DEV_CLIENT_SECRET = Utils
+						.readInputStream(getServletContext()
+								.getResourceAsStream(DEV_CLIENT_SECRET_FILE_PATH))
+						.replaceAll("\n", "");
+			}
+			catch (IOException e)
+			{
+				throw new RuntimeException("Dev client secret path invalid.");
+			}
+		}
+
+		if (CLIENT_SECRET == null)
+		{
+			try
+			{
+				CLIENT_SECRET = Utils
+						.readInputStream(getServletContext()
+								.getResourceAsStream(CLIENT_SECRET_FILE_PATH))
+						.replaceAll("\n", "");
+			}
+			catch (IOException e)
+			{
+				throw new RuntimeException("Client secret path invalid.");
+			}
+		}
+	}
+
+	/**
+	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
+	 */
+	protected void doGet(HttpServletRequest request,
+			HttpServletResponse response) throws ServletException, IOException
+	{
+		String client = request.getParameter("client_id");
+		String code = request.getParameter("code");
+		updateKeys();
+		
+		if (client != null && code != null)
+		{
+			String secret = client.equals("23bc97120b9035515661") ? DEV_CLIENT_SECRET : CLIENT_SECRET; 
+
+			String url = "https://github.com/login/oauth/access_token";
+			URL obj = new URL(url);
+			HttpURLConnection con = (HttpURLConnection) obj.openConnection();
+
+			con.setRequestMethod("POST");
+			con.setRequestProperty("User-Agent", "draw.io");
+
+			String urlParameters = "client_id=" + client + "&client_secret="
+					+ secret + "&code=" + code;
+
+			// Send post request
+			con.setDoOutput(true);
+			DataOutputStream wr = new DataOutputStream(con.getOutputStream());
+			wr.writeBytes(urlParameters);
+			wr.flush();
+			wr.close();
+
+			int responseCode = con.getResponseCode();
+			System.out.println("\nSending 'POST' request to URL : " + url);
+			System.out.println("Post parameters : " + urlParameters);
+			System.out.println("Response Code : " + responseCode);
+
+			BufferedReader in = new BufferedReader(
+					new InputStreamReader(con.getInputStream()));
+			String inputLine;
+			StringBuffer res = new StringBuffer();
+
+			while ((inputLine = in.readLine()) != null)
+			{
+				res.append(inputLine);
+			}
+			in.close();
+
+			//print result
+			System.out.println(res.toString());
+
+			OutputStream out = response.getOutputStream();
+
+			// Creates XML for stencils
+			PrintWriter writer = new PrintWriter(out);
+
+			// Writes JavaScript and adds function call with
+			// stylesheet and stencils as arguments 
+			writer.println(res.toString());
+			response.setStatus(HttpServletResponse.SC_OK);
+
+			writer.flush();
+			writer.close();
+		}
+		else
+		{
+			response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+		}
+	}
+
+}

+ 1 - 0
war/WEB-INF/github_client_secret

@@ -0,0 +1 @@
+Replace_with_your_own_github_client_secret

+ 1 - 0
war/WEB-INF/github_dev_client_secret

@@ -0,0 +1 @@
+Replace_with_your_own_dev_github_client_secret

+ 11 - 0
war/WEB-INF/web.xml

@@ -91,6 +91,17 @@
     <servlet-name>ImgurRedirect</servlet-name>
     <url-pattern>/i/*</url-pattern>
   </servlet-mapping>
+  <servlet>
+    <description/>
+    <display-name>GitHubServlet</display-name>
+    <servlet-name>GitHubServlet</servlet-name>
+    <servlet-class>com.mxgraph.online.GitHubServlet</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>GitHubServlet</servlet-name>
+    <url-pattern>/github</url-pattern>
+  </servlet-mapping>
+
   <servlet>
     <description/>
     <display-name>EmailServlet</display-name>

+ 1 - 1
war/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 02/08/2017 04:10 PM
+# 02/11/2017 09:23 AM
 
 /app.html
 /index.html?offline=1

+ 25 - 0
war/github.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title></title>
+	</head>
+	<body>
+		<script>
+			try
+			{
+				if (window.opener != null)
+				{
+					var search = window.location.search;
+					var code = search.substring(search.indexOf('code=') + 5);
+
+					// Continues execution of main program flow
+					window.opener.onGitHubCallback(code, window);
+				}
+			}
+			catch (e)
+			{
+				// ignore
+			}
+		</script>
+	</body>
+</html>

文件差异内容过多而无法显示
+ 6 - 0
war/images/github-logo-white.svg


文件差异内容过多而无法显示
+ 17 - 0
war/images/github-logo.svg


文件差异内容过多而无法显示
+ 509 - 475
war/js/app.min.js


文件差异内容过多而无法显示
+ 270 - 265
war/js/atlas-viewer.min.js


文件差异内容过多而无法显示
+ 587 - 575
war/js/atlas.min.js


+ 177 - 53
war/js/diagramly/App.js

@@ -62,7 +62,7 @@ App = function(editor, container, lightbox)
 	// Sets help link for placeholders
 	if (!this.isOffline())
 	{
-		EditDataDialog.placeholderHelpLink = 'https://support.draw.io/questions/9338941';
+		EditDataDialog.placeholderHelpLink = 'https://desk.draw.io/support/solutions/articles/16000051979-how-to-work-with-placeholders-';
 	}
 
 	// Gets recent colors from settings
@@ -128,6 +128,11 @@ App.MODE_DROPBOX = 'dropbox';
  */
 App.MODE_ONEDRIVE = 'onedrive';
 
+/**
+ * Sets the delay for autosave in milliseconds. Default is 2000.
+ */
+App.MODE_GITHUB = 'github';
+
 /**
  * Sets the delay for autosave in milliseconds. Default is 2000.
  */
@@ -684,6 +689,21 @@ App.prototype.init = function()
 	 * Holds the listener for description changes.
 	 */	
 	this.descriptorChangedListener = mxUtils.bind(this, this.descriptorChanged);
+	
+	/**
+	 * Creates github client.
+	 */
+	this.gitHub = (urlParams['gh'] != '0' && (urlParams['embed'] != '1'
+		|| urlParams['gh'] == '1')) ? new GitHubClient(this) : null;
+	
+	if (this.gitHub != null)
+	{
+		this.gitHub.addListener('userChanged', mxUtils.bind(this, function()
+		{
+			this.updateUserElement();
+			this.restoreLibraries();
+		}))
+	}
 
 	/**
 	 * Lazy-loading for individual backends
@@ -1122,7 +1142,7 @@ App.prototype.checkLicense = function()
 				
 				try
 				{
-					if (req.getStatus() == 200)
+					if (req.getStatus() >= 200 && req.getStatus() <= 299)
 					{
 						var value = req.getText();
 						registered = true;
@@ -1572,41 +1592,6 @@ App.prototype.getThumbnail = function(width, success)
 	return result;
 };
 
-/**
- * Tries to find a public URL for the given file.
- */
-App.prototype.getPublicUrl = function(file, fn)
-{
-	if (file != null && file.constructor == DriveFile)
-	{
-		gapi.client.drive.permissions.list(
-		{
-			'fileId': file.desc.id
-		}).execute(function(resp)
-		{
-			if (resp != null)
-			{
-				for (var i = 0; i < resp.items.length; i++)
-				{
-					if (resp.items[i].id === 'anyoneWithLink' ||
-						resp.items[i].id === 'anyone')
-					{
-						fn(file.desc.webContentLink);
-						
-						return;
-					}
-				}
-			}
-			
-			fn(null);
-		  });
-	}
-	else
-	{
-		fn(null);
-	}
-};
-
 /**
  * Translates this point by the given vector.
  * 
@@ -1725,6 +1710,17 @@ App.prototype.appIconClicked = function(evt)
 		{
 			window.open('https://onedrive.live.com/');
 		}
+		else if (mode == App.MODE_GITHUB)
+		{
+			if (file != null && file.constructor == GitHubFile)
+			{
+				window.open(file.meta.html_url);
+			}
+			else
+			{
+				window.open('https://github.com/');
+			}
+		}
 	}
 	
 	mxEvent.consume(evt);
@@ -2195,8 +2191,9 @@ App.prototype.start = function()
 							{
 								this.createFile(filename, this.getFileData(true), null, mode);
 							}
-						}));
-						this.showDialog(dlg.container, 380, 270, true, false, mxUtils.bind(this, function(cancel)
+						}), null, null, null, null, urlParams['browser'] == '1', null, null, true);
+						this.showDialog(dlg.container, 380, (this.getServiceCount(true) < 4) ? 270 : 390,
+							true, false, mxUtils.bind(this, function(cancel)
 						{
 							if (cancel && this.getCurrentFile() == null)
 							{
@@ -2280,11 +2277,12 @@ App.prototype.start = function()
  */
 App.prototype.showSplash = function(force)
 {
+	var serviceCount = this.getServiceCount(false);
+	
 	var showSecondDialog = mxUtils.bind(this, function()
 	{
 		var dlg = new SplashDialog(this);
-		var serviceCount = this.getServiceCount();
-
+		
 		this.showDialog(dlg.container, 340, (serviceCount < 2) ? 180 : 260, true, true,
 			mxUtils.bind(this, function(cancel)
 			{
@@ -2310,13 +2308,15 @@ App.prototype.showSplash = function(force)
 	}
 	else if (this.mode == null || force)
 	{
+		var rowLimit = (serviceCount <= 4) ? 4 : 3;
+		
 		var dlg = new StorageDialog(this, mxUtils.bind(this, function()
 		{
 			this.hideDialog();
 			showSecondDialog();
-		}));
+		}), rowLimit);
 		
-		this.showDialog(dlg.container, (isLocalStorage && urlParams['browser'] == '1') ? 480 : 380, 300, true, false);
+		this.showDialog(dlg.container, rowLimit * 100, (serviceCount > rowLimit) ? 420 : 300, true, false);
 		dlg.init();
 	}
 	else if (urlParams['create'] == null)
@@ -2430,6 +2430,13 @@ App.prototype.pickFile = function(mode)
 			this.dropbox.pickFile();
 		}
 	}
+	else if (mode == App.MODE_GITHUB)
+	{
+		if (this.gitHub != null)
+		{
+			this.gitHub.pickFile();
+		}
+	}
 	else if (mode == App.MODE_ONEDRIVE)
 	{
 		if (this.oneDrive != null)
@@ -2516,9 +2523,12 @@ App.prototype.pickLibrary = function(mode)
 {
 	mode = (mode != null) ? mode : this.mode;
 	
-	if (mode == App.MODE_GOOGLE || mode == App.MODE_DROPBOX || mode == App.MODE_ONEDRIVE)
+	if (mode == App.MODE_GOOGLE || mode == App.MODE_DROPBOX || mode == App.MODE_ONEDRIVE || mode == App.MODE_GITHUB)
 	{
-		var peer = (mode == App.MODE_GOOGLE) ? this.drive : ((mode == App.MODE_ONEDRIVE) ? this.oneDrive : this.dropbox);
+		var peer = (mode == App.MODE_GOOGLE) ? this.drive :
+			((mode == App.MODE_ONEDRIVE) ? this.oneDrive :
+			((mode == App.MODE_GITHUB) ? this.gitHub :
+			this.dropbox));
 		
 		if (peer != null)
 		{
@@ -2669,6 +2679,15 @@ App.prototype.saveLibrary = function(name, images, file, mode, noSpin, noReload,
 					this.libraryLoaded(newFile, images);
 				}), error, this.drive.libraryMimeType);
 			}
+			else if (mode == App.MODE_GITHUB && this.gitHub != null && this.spinner.spin(document.body, mxResources.get('inserting')))
+			{
+				this.gitHub.insertLibrary(name, xml, mxUtils.bind(this, function(newFile)
+				{
+					this.spinner.stop();
+					this.hideDialog(true);
+					this.libraryLoaded(newFile, images);
+				}), error, folderId);
+			}
 			else if (mode == App.MODE_DROPBOX && this.dropbox != null && this.spinner.spin(document.body, mxResources.get('inserting')))
 			{
 				this.dropbox.insertLibrary(name, xml, mxUtils.bind(this, function(newFile)
@@ -2803,6 +2822,8 @@ App.prototype.saveFile = function(forceDialog)
 			var allowTab = !mxClient.IS_IOS || !navigator.standalone;
 			var prev = this.mode;
 			
+			var serviceCount = this.getServiceCount(true);
+			
 			var dlg = new CreateDialog(this, filename, mxUtils.bind(this, function(name, mode)
 			{
 				if (name != null && name.length > 0)
@@ -2848,7 +2869,7 @@ App.prototype.saveFile = function(forceDialog)
 				this.hideDialog();
 			}), mxResources.get('saveAs'), mxResources.get('download'), null, null, allowTab,
 				(this.isOffline()) ? null : 'https://support.draw.io/questions/9338901', true);
-			this.showDialog(dlg.container, 440, 380, true, true);
+			this.showDialog(dlg.container, 460, (serviceCount < 4) ? 270 : 390, true, true);
 			dlg.init();
 		}
 	}
@@ -2862,14 +2883,22 @@ App.prototype.saveFile = function(forceDialog)
  */
 EditorUi.prototype.loadTemplate = function(url, onload, onerror)
 {
-	this.loadUrl(PROXY_URL + '?url=' + encodeURIComponent(url), mxUtils.bind(this, function(data)
+	var realUrl = url;
+	
+	if (!this.isCorsEnabledForUrl(realUrl))
+	{
+		realUrl = PROXY_URL + '?url=' + encodeURIComponent(url);
+	}
+	
+	this.loadUrl(realUrl, mxUtils.bind(this, function(data)
 	{
 		if (!this.isOffline() && new XMLHttpRequest().upload && this.isRemoteFileFormat(data, url))
 		{
 			// Asynchronous parsing via server
 			this.parseFile(new Blob([data], {type: 'application/octet-stream'}), mxUtils.bind(this, function(xhr)
 			{
-				if (xhr.readyState == 4 && xhr.status == 200 && xhr.responseText.substring(0, 13) == '<mxGraphModel')
+				if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status <= 299 &&
+					xhr.responseText.substring(0, 13) == '<mxGraphModel')
 				{
 					onload(xhr.responseText);
 				}
@@ -2930,6 +2959,17 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 				this.fileCreated(file, libs, replace, done);
 			}), error);
 		}
+		else if (mode == App.MODE_GITHUB && this.gitHub != null)
+		{
+			this.pickFolder(mode, mxUtils.bind(this, function(folderId)
+			{
+				this.gitHub.insertFile(title, data, mxUtils.bind(this, function(file)
+				{
+					complete();
+					this.fileCreated(file, libs, replace, done);
+				}), error, false, folderId);
+			}));
+		}
 		else if (mode == App.MODE_DROPBOX && this.dropbox != null)
 		{
 			this.dropbox.insertFile(title, data, mxUtils.bind(this, function(file)
@@ -3262,7 +3302,11 @@ App.prototype.loadFile = function(id, sameWindow, file)
 				{
 					peer = this.oneDrive;
 				}
-
+				else if (id.charAt(0) == 'H')
+				{
+					peer = this.gitHub;
+				}
+				
 				if (peer == null)
 				{
 					this.handleError({message: mxResources.get('serviceUnavailableOrBlocked')}, mxResources.get('errorLoadingFile'), mxUtils.bind(this, function()
@@ -3432,10 +3476,17 @@ App.prototype.restoreLibraries = function()
 								
 								if (!this.isOffline())
 								{
+									var realUrl = url;
+									
+									if (!this.isCorsEnabledForUrl(realUrl))
+									{
+										realUrl = PROXY_URL + '?url=' + encodeURIComponent(url);
+									}
+									
 									// Uses proxy to avoid CORS issues
-									mxUtils.get(PROXY_URL + '?url=' + encodeURIComponent(url), mxUtils.bind(this, function(req)
+									mxUtils.get(realUrl, mxUtils.bind(this, function(req)
 									{
-										if (req.getStatus() == 200)
+										if (req.getStatus() >= 200 && req.getStatus() <= 299)
 										{
 											try
 											{
@@ -3468,6 +3519,14 @@ App.prototype.restoreLibraries = function()
 										peer = this.drive;
 									}
 								}
+								else if (service == 'H')
+								{
+									if (this.gitHub != null && this.gitHub.getUser() != null)
+									{
+										peer = this.gitHub;
+									}
+								}
+
 								else if (service == 'D')
 								{
 									if (this.dropbox != null && this.dropbox.getUser() != null)
@@ -3644,12 +3703,15 @@ App.prototype.save = function(name, done)
 App.prototype.pickFolder = function(mode, fn, enabled)
 {
 	enabled = (enabled != null) ? enabled : true;
+	var resume = this.spinner.pause();
 	
 	if (enabled && mode == App.MODE_GOOGLE && this.drive != null)
 	{
 		// Shows a save dialog
 		this.drive.pickFolder(mxUtils.bind(this, function(evt)
 		{
+			resume();
+			
 			if (evt.action == google.picker.Action.PICKED)
 			{
 				var folderId = null;
@@ -3668,6 +3730,7 @@ App.prototype.pickFolder = function(mode, fn, enabled)
 		this.oneDrive.pickFolder(mxUtils.bind(this, function(evt)
 		{
 			var folderId = null;
+			resume();
 			
 			if (evt != null && evt.data != null && evt.data.folders != null &&
 				evt.data.folders.length > 0)
@@ -3678,6 +3741,14 @@ App.prototype.pickFolder = function(mode, fn, enabled)
 			}
 		}));
 	}
+	else if (enabled && mode == App.MODE_GITHUB && this.gitHub != null)
+	{
+		this.gitHub.pickFolder(mxUtils.bind(this, function(folderPath)
+		{
+			resume();
+			fn(folderPath);
+		}));
+	}
 	else
 	{
 		EditorUi.prototype.pickFolder.apply(this, arguments);
@@ -3762,6 +3833,20 @@ App.prototype.exportFile = function(data, filename, mimeType, base64Encoded, mod
 			}), false, folderId);
 		}
 	}
+	else if (mode == App.MODE_GITHUB)
+	{
+		if (this.gitHub != null && this.spinner.spin(document.body, mxResources.get('saving')))
+		{
+			this.gitHub.insertFile(filename, data, mxUtils.bind(this, function()
+			{
+				this.spinner.stop();
+			}), mxUtils.bind(this, function(resp)
+			{
+				this.spinner.stop();
+				this.handleError(resp);
+			}), false, folderId, base64Encoded);
+		}
+	}
 };
 
 /**
@@ -3886,7 +3971,7 @@ App.prototype.loadUrl = function(url, success, error, forceBinary, retry)
 		{
 			mxUtils.get(url, mxUtils.bind(this, function(req)
 			{
-				if (req.getStatus() == 200)
+				if (req.getStatus() >= 200 && req.getStatus() <= 299)
 				{
 			    	if (success != null)
 			    	{
@@ -3998,6 +4083,10 @@ App.prototype.updateHeader = function()
 				{
 					this.appIcon.style.backgroundImage = 'url(' + IMAGE_PATH + '/onedrive-logo-white.svg)';
 				}
+				else if (mode == App.MODE_GITHUB)
+				{
+					this.appIcon.style.backgroundImage = 'url(' + IMAGE_PATH + '/github-logo-white.svg)';
+				}
 			}
 		}));
 		
@@ -4235,7 +4324,8 @@ App.prototype.updateUserElement = function()
 {
 	if ((this.drive == null || this.drive.getUser() == null) &&
 		(this.oneDrive == null || this.oneDrive.getUser() == null) &&
-		(this.dropbox == null || this.dropbox.getUser() == null))
+		(this.dropbox == null || this.dropbox.getUser() == null) &&
+		(this.gitHub == null || this.gitHub.getUser() == null))
 	{
 		if (this.userElement != null)
 		{
@@ -4471,6 +4561,36 @@ App.prototype.updateUserElement = function()
 							}
 						}));
 					}
+
+					if (this.gitHub != null)
+					{
+						addUser(this.gitHub.getUser(), IMAGE_PATH + '/github-logo.svg', mxUtils.bind(this, function()
+						{
+							var file = this.getCurrentFile();
+
+							if (file != null && file.constructor == GitHubFile)
+							{
+								var doLogout = mxUtils.bind(this, function()
+								{
+									this.gitHub.logout();
+									window.location.hash = '';
+								});
+								
+								if (!file.isModified())
+								{
+									doLogout();
+								}
+								else
+								{
+									this.confirm(mxResources.get('allChangesLost'), doLogout);
+								}
+							}
+							else
+							{
+								this.gitHub.logout();
+							}
+						}));
+					}
 					
 					if (!connected)
 					{
@@ -4511,6 +4631,10 @@ App.prototype.updateUserElement = function()
 		{
 			user = this.dropbox.getUser();
 		}
+		else if (this.gitHub != null && this.gitHub.getUser() != null)
+		{
+			user = this.gitHub.getUser();
+		}
 		
 		if (user != null)
 		{

+ 3 - 0
war/js/diagramly/Devel.js

@@ -83,6 +83,9 @@ mxscript(drawDevUrl + 'js/diagramly/DriveClient.js');
 mxscript(drawDevUrl + 'js/diagramly/DropboxFile.js');
 mxscript(drawDevUrl + 'js/diagramly/DropboxLibrary.js');
 mxscript(drawDevUrl + 'js/diagramly/DropboxClient.js');
+mxscript(drawDevUrl + 'js/diagramly/GitHubFile.js');
+mxscript(drawDevUrl + 'js/diagramly/GitHubLibrary.js');
+mxscript(drawDevUrl + 'js/diagramly/GitHubClient.js');
 mxscript(drawDevUrl + 'js/diagramly/OneDriveFile.js');
 mxscript(drawDevUrl + 'js/diagramly/OneDriveLibrary.js');
 mxscript(drawDevUrl + 'js/diagramly/OneDriveClient.js');

+ 67 - 10
war/js/diagramly/Dialogs.js

@@ -1,9 +1,11 @@
-/*
- * $Id: Dialogs.js,v 1.103 2014/02/11 14:08:15 gaudenz Exp $
- * Copyright (c) 2006-2010, JGraph Ltd
+/**
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
-var StorageDialog = function(editorUi, fn)
+var StorageDialog = function(editorUi, fn, rowLimit)
 {
+	rowLimit = (rowLimit != null) ? rowLimit : 3;
+	
 	var div = document.createElement('div');
 	div.style.textAlign = 'center';
 	div.style.whiteSpace = 'nowrap';
@@ -87,6 +89,7 @@ var StorageDialog = function(editorUi, fn)
 	cb.setAttribute('type', 'checkbox');
 	cb.setAttribute('checked', 'checked');
 	cb.defaultChecked = true;
+	var count = 0;
 	
 	function addLogo(img, title, mode, clientName)
 	{
@@ -198,6 +201,12 @@ var StorageDialog = function(editorUi, fn)
 		}
 
 		buttons.appendChild(button);
+		
+		if (++count >= rowLimit)
+		{
+			mxUtils.br(buttons);
+			count = 0;
+		}
 	};
 
 	var hd = document.createElement('p');
@@ -214,7 +223,12 @@ var StorageDialog = function(editorUi, fn)
 	{
 		addLogo(IMAGE_PATH + '/google-drive-logo.svg', mxResources.get('googleDrive'), App.MODE_GOOGLE, 'drive');
 	}
-
+	
+	if (editorUi.gitHub != null)
+	{
+		addLogo(IMAGE_PATH + '/github-logo.svg', mxResources.get('github'), App.MODE_GITHUB, 'gitHub');
+	}
+	
 	if (typeof window.DropboxClient === 'function')
 	{
 		addLogo(IMAGE_PATH + '/dropbox-logo.svg', mxResources.get('dropbox'), App.MODE_DROPBOX, 'dropbox');
@@ -224,7 +238,7 @@ var StorageDialog = function(editorUi, fn)
 	{
 		addLogo(IMAGE_PATH + '/onedrive-logo.svg', mxResources.get('oneDrive'), App.MODE_ONEDRIVE, 'oneDrive');
 	}
-	
+
 	if (!mxClient.IS_IOS || urlParams['storage'] == 'device')
 	{
 		addLogo(IMAGE_PATH + '/osa_drive-harddisk.png', mxResources.get('device'), App.MODE_DEVICE);
@@ -357,6 +371,11 @@ var SplashDialog = function(editorUi)
 			help.setAttribute('href', 'https://support.draw.io/display/DO/Using+draw.io+with+OneDrive');
 		}
 	}
+	else if (editorUi.mode == App.MODE_GITHUB)
+	{
+		logo.src = IMAGE_PATH + '/github-logo.svg';
+		service = mxResources.get('github');
+	}
 	else if (editorUi.mode == App.MODE_BROWSER)
 	{
 		logo.src = IMAGE_PATH + '/osa_database.png';
@@ -443,6 +462,10 @@ var SplashDialog = function(editorUi)
 	{
 		storage = mxResources.get('oneDrive');
 	}
+	else if (editorUi.mode == App.MODE_GITHUB)
+	{
+		storage = mxResources.get('github');
+	}
 	else if (editorUi.mode == App.MODE_DEVICE)
 	{
 		storage = mxResources.get('device');
@@ -2298,6 +2321,10 @@ var NewDialog = function(editorUi, compact, showName, callback)
 	{
 		logo.src = IMAGE_PATH + '/onedrive-logo.svg';
 	}
+	else if (editorUi.mode == App.MODE_GITHUB)
+	{
+		logo.src = IMAGE_PATH + '/github-logo.svg';
+	}
 	else if (editorUi.mode == App.MODE_BROWSER)
 	{
 		logo.src = IMAGE_PATH + '/osa_database.png';
@@ -2332,6 +2359,10 @@ var NewDialog = function(editorUi, compact, showName, callback)
 	{
 		ext = editorUi.oneDrive.extension;
 	}
+	else if (editorUi.mode == App.MODE_GITHUB && editorUi.gitHub != null)
+	{
+		ext = editorUi.gitHub.extension;
+	}
 	
 	var nameInput = document.createElement('input');
 	nameInput.setAttribute('value', editorUi.defaultFilename + ext);
@@ -2471,7 +2502,7 @@ var NewDialog = function(editorUi, compact, showName, callback)
 				
 				mxUtils.get(TEMPLATE_PATH + '/' + url, mxUtils.bind(this, function(req)
 				{
-					if (req.getStatus() == 200)
+					if (req.getStatus() >= 200 && req.getStatus() <= 299)
 					{
 						createButton.removeAttribute('disabled');
 						selectElement(elt, req.getText(), libs);
@@ -2731,10 +2762,11 @@ var NewDialog = function(editorUi, compact, showName, callback)
  * Constructs a dialog for creating new files from a template URL.
  */
 var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLabel, overrideExtension,
-		allowBrowser, allowTab, helpLink, showDeviceButton)
+		allowBrowser, allowTab, helpLink, showDeviceButton, rowLimit)
 {
 	overrideExtension = (overrideExtension != null) ? overrideExtension : true;
 	allowBrowser = (allowBrowser != null) ? allowBrowser : true;
+	rowLimit = (rowLimit != null) ? rowLimit : 3;
 	var div = document.createElement('div');
 	var showButtons = true;
 	
@@ -2776,6 +2808,7 @@ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLa
 	
 	var buttons = document.createElement('div');
 	buttons.style.textAlign = 'center';
+	var count = 0;
 
 	function addLogo(img, title, mode, clientName)
 	{
@@ -2873,6 +2906,12 @@ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLa
 		}
 
 		buttons.appendChild(button);
+		
+		if (++count == rowLimit)
+		{
+			mxUtils.br(buttons);
+			count = 0;
+		}
 	};
 
 	if (!showButtons)
@@ -2901,6 +2940,16 @@ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLa
 			addLogo(IMAGE_PATH + '/google-drive-logo.svg', mxResources.get('googleDrive'), App.MODE_GOOGLE, 'drive');
 		}
 	
+		if (editorUi.gitHub != null)
+		{
+			var gitHubOption = document.createElement('option');
+			gitHubOption.setAttribute('value', App.MODE_GITHUB);
+			mxUtils.write(gitHubOption, mxResources.get('github'));
+			serviceSelect.appendChild(gitHubOption);
+			
+			addLogo(IMAGE_PATH + '/github-logo.svg', mxResources.get('github'), App.MODE_GITHUB, 'gitHub');
+		}
+	
 		if (typeof window.DropboxClient === 'function')
 		{
 			var dropboxOption = document.createElement('option');
@@ -2947,7 +2996,6 @@ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLa
 		
 		if (showDeviceButton)
 		{
-			mxUtils.br(buttons);
 			addLogo(IMAGE_PATH + '/osa_drive-harddisk.png', mxResources.get('device'), App.MODE_DEVICE);
 		}
 	}
@@ -2983,6 +3031,10 @@ var CreateDialog = function(editorUi, title, createFn, cancelFn, dlgTitle, btnLa
 				{
 					ext = editorUi.drive.extension;
 				}
+				else if (newMode == App.MODE_GITHUB)
+				{
+					ext = editorUi.gitHub.extension;
+				}
 				else if (newMode == App.MODE_DROPBOX)
 				{
 					ext = editorUi.dropbox.extension;
@@ -4517,7 +4569,7 @@ var FeedbackDialog = function(editorUi)
 					{
 						editorUi.spinner.stop();
 					
-						if (req.getStatus() == 200)
+						if (req.getStatus() >= 200 && req.getStatus() <= 299)
 						{
 							editorUi.alert(mxResources.get('feedbackSent'));
 						}
@@ -6457,6 +6509,11 @@ var AuthDialog = function(editorUi, peer, showRememberOption, fn)
 		service = mxResources.get('oneDrive');
 		img.src = IMAGE_PATH + '/onedrive-logo-white.svg';
 	}
+	else if (peer == editorUi.gitHub)
+	{
+		service = mxResources.get('github');
+		img.src = IMAGE_PATH + '/github-logo-white.svg';
+	}
 	
 	var p = document.createElement('p');
 	mxUtils.write(p, mxResources.get('authorizeThisAppIn', [service]));

+ 10 - 8
war/js/diagramly/DrawioFile.js

@@ -1,12 +1,6 @@
-// $Id = DrawioFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $
-// Copyright (c) 2006-2014, JGraph Ltd
 /**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DrawioFile = function(ui, data)
 {
@@ -128,6 +122,14 @@ DrawioFile.prototype.saveAs = function(filename, success, error) { };
  */
 DrawioFile.prototype.saveFile = function(title, revision, success, error) { };
 
+/**
+ * Returns true if copy, export and print are not allowed for this file.
+ */
+DrawioFile.prototype.getPublicUrl = function(fn)
+{
+	fn(null);
+};
+
 /**
  * Returns true if copy, export and print are not allowed for this file.
  */

+ 2 - 10
war/js/diagramly/DrawioUser.js

@@ -1,14 +1,6 @@
 /**
- * Copyright (c) 2006-2016, JGraph Ltd
- * Copyright (c) 2006-2016, Gaudenz Alder
- */
-/**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DrawioUser = function(id, email, displayName, pictureUrl)
 {

+ 3 - 11
war/js/diagramly/DriveClient.js

@@ -1,14 +1,6 @@
 /**
- * Copyright (c) 2006-2016, JGraph Ltd
- * Copyright (c) 2006-2016, Gaudenz Alder
- */
-/**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DriveClient = function(editorUi)
 {
@@ -625,7 +617,7 @@ DriveClient.prototype.convertFile = function(resp, success, error)
 		{
 			if (xhr.readyState == 4)
 			{
-				if (xhr.status == 200 && xhr.responseText.substring(0, 13) == '<mxGraphModel')
+				if (xhr.status >= 200 && xhr.status <= 299 && xhr.responseText.substring(0, 13) == '<mxGraphModel')
 				{
 					this.insertFile(name, xhr.responseText, (resp.parents != null && resp.parents.length > 0) ?
 						resp.parents[0].id : null, success, error);

+ 31 - 10
war/js/diagramly/DriveFile.js

@@ -1,12 +1,6 @@
-// $Id = DriveFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $
-// Copyright (c) 2006-2014, JGraph Ltd
 /**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DriveFile = function(ui, data, desc, doc)
 {
@@ -48,6 +42,34 @@ DriveFile.prototype.getMode = function()
 	return App.MODE_GOOGLE;
 };
 
+/**
+ * Returns true if copy, export and print are not allowed for this file.
+ */
+DriveFile.prototype.getPublicUrl = function(fn)
+{
+	gapi.client.drive.permissions.list(
+	{
+		'fileId': this.desc.id
+	}).execute(mxUtils.bind(this, function(resp)
+	{
+		if (resp != null)
+		{
+			for (var i = 0; i < resp.items.length; i++)
+			{
+				if (resp.items[i].id === 'anyoneWithLink' ||
+					resp.items[i].id === 'anyone')
+				{
+					fn(this.desc.webContentLink);
+					
+					return;
+				}
+			}
+		}
+		
+		fn(null);
+	}));
+};
+
 /**
  * Overridden to enable the autosave option in the document properties dialog
  * if realtime is not used.
@@ -186,8 +208,7 @@ DriveFile.prototype.saveFile = function(title, revision, success, error, unloadi
 					error();
 				}
 			}
-		}),
-		mxUtils.bind(this, function(resp)
+		}), mxUtils.bind(this, function(resp)
 		{
 			this.savingFile = false;
 			this.isModified = prevModified;

+ 2 - 8
war/js/diagramly/DriveLibrary.js

@@ -1,12 +1,6 @@
-// $Id = DriveFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $
-// Copyright (c) 2006-2014, JGraph Ltd
 /**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DriveLibrary = function(ui, data, desc)
 {

+ 3 - 11
war/js/diagramly/DropboxClient.js

@@ -1,14 +1,6 @@
 /**
- * Copyright (c) 2006-2016, JGraph Ltd
- * Copyright (c) 2006-2016, Gaudenz Alder
- */
-/**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DropboxClient = function(editorUi)
 {
@@ -713,7 +705,7 @@ DropboxClient.prototype.createFile = function(file, success, error)
 			{
 				if (xhr.readyState == 4)
 				{
-					if (xhr.status == 200 && xhr.responseText.substring(0, 13) == '<mxGraphModel')
+					if (xhr.status >= 200 && xhr.status <= 299 && xhr.responseText.substring(0, 13) == '<mxGraphModel')
 					{
 						doInsert(name, xhr.responseText);
 					}

+ 7 - 10
war/js/diagramly/DropboxFile.js

@@ -1,12 +1,6 @@
-// $Id = DropboxFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $
-// Copyright (c) 2006-2014, JGraph Ltd
 /**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DropboxFile = function(ui, data, stat)
 {
@@ -100,7 +94,11 @@ DropboxFile.prototype.saveAs = function(title, success, error)
  */
 DropboxFile.prototype.doSave = function(title, success, error)
 {
+	// Forces update of data for new extensions
+	var prev = this.stat.name;
+	this.stat.name = title;
 	DrawioFile.prototype.save.apply(this, arguments);
+	this.stat.name = prev;
 	
 	this.saveFile(title, false, success, error);
 };
@@ -149,8 +147,7 @@ DropboxFile.prototype.saveFile = function(title, revision, success, error)
 					{
 						success();
 					}
-				}),
-				mxUtils.bind(this, function(resp)
+				}), mxUtils.bind(this, function(resp)
 				{
 					this.savingFile = false;
 					this.isModified = prevModified;

+ 2 - 8
war/js/diagramly/DropboxLibrary.js

@@ -1,12 +1,6 @@
-// $Id = DriveFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $
-// Copyright (c) 2006-2014, JGraph Ltd
 /**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 DropboxLibrary = function(ui, data, stat)
 {

+ 7 - 4
war/js/diagramly/Editor.js

@@ -1,6 +1,6 @@
 /**
- * Copyright (c) 2006-2016, JGraph Ltd
- * Copyright (c) 2006-2016, Gaudenz Alder
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 (function()
 {
@@ -39,6 +39,8 @@
 	 */
 	Editor.defaultCsvValue = '##\n' +
 		'## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n' +
+		'## The following names are reserved and should not be used (or ignored):\n' +
+		'## id, tooltip, placeholder(s), link and label (see below)\n' +
 		'##\n' +
 		'#\n' +
 		'## Node label with placeholders and HTML.\n' +
@@ -72,7 +74,8 @@
 		'#\n' +
 		'# padding: -26\n' +
 		'#\n' +
-		'## Comma-separated list of ignored columns for metadata.\n' +
+		'## Comma-separated list of ignored columns for metadata. (These can be\n' +
+		'## used for connections and styles but will not be added as metadata.)\n' +
 		'#\n' +
 		'# ignore: id,image,fill,stroke\n' +
 		'#\n' +
@@ -93,7 +96,7 @@
 		'#\n' +
 		'# layout: auto\n' +
 		'#\n' +
-		'## ---- CSV below this line ----\n' +
+		'## ---- CSV below this line. First line are column names. ----\n' +
 		'name,position,id,location,manager,email,fill,stroke,refs,url,image\n' +
 		'Evan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n' +
 		'Edward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\n' +

+ 215 - 49
war/js/diagramly/EditorUi.js

@@ -1,6 +1,6 @@
 /**
- * Copyright (c) 2006-2016, JGraph Ltd
- * Copyright (c) 2006-2016, Gaudenz Alder
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 (function()
 {
@@ -939,7 +939,7 @@
 		}
 		
 		// Creates tabbed file structure if enforced by URL
-		if (urlParams['pages'] != '0' && this.fileNode == null)
+		if (urlParams['pages'] != '0' && this.fileNode == null && node != null)
 		{
 			this.fileNode = node.ownerDocument.createElement('mxfile');
 			this.currentPage = new DiagramPage(node.ownerDocument.createElement('diagram'));
@@ -1354,6 +1354,25 @@
 		
 		return result;
 	};
+
+	/**
+	 * Updates action states depending on the selection.
+	 */
+	EditorUi.prototype.restoreLibraries = function()
+	{
+		// hook for subclassers
+	};
+
+	/**
+	 * Translates this point by the given vector.
+	 * 
+	 * @param {number} dx X-coordinate of the translation.
+	 * @param {number} dy Y-coordinate of the translation.
+	 */
+	EditorUi.prototype.saveLibrary = function(name, images, file, mode, noSpin, noReload, fn)
+	{
+		// hook for subclassers
+	};
 	
 	/**
 	 * Shows or hides the scratchpad library.
@@ -1658,7 +1677,7 @@
 			
 			var saveLibrary = mxUtils.bind(this, function(evt)
 			{
-				if (file.constructor != LocalLibrary || file.isAutosave())
+				if (file.constructor != LocalLibrary && file.isAutosave())
 				{
 					if (spinBtn != null && spinBtn.parentNode != null)
 					{
@@ -1692,7 +1711,8 @@
 					
 					mxEvent.addListener(saveBtn, 'click', mxUtils.bind(this, function(evt)
 					{
-						this.saveLibrary(file.getTitle(), images, file, file.getMode(), true, true);
+						this.saveLibrary(file.getTitle(), images, file, file.getMode(),
+							file.constructor == LocalLibrary, true);
 						saveBtn.parentNode.removeChild(saveBtn);
 						saveBtn = null;
 						title.style.paddingRight = (buttons.childNodes.length * btnWidth) + 'px';
@@ -2573,10 +2593,6 @@
 	EditorUi.prototype.saveLocalFile = function(data, filename, mimeType, base64Encoded, format)
 	{
 		var allowTab = !mxClient.IS_IOS || !navigator.standalone;
-		var backends = !this.isOfflineApp() && !this.isOffline() &&
-			(typeof window.DriveClient === 'function' ||
-			typeof window.DropboxClient === 'function' ||
-			typeof window.OneDriveClient === 'function');
 		
 		var dlg = new CreateDialog(this, filename, mxUtils.bind(this, function(newTitle, mode)
 		{
@@ -2652,8 +2668,8 @@
 		}), mxUtils.bind(this, function()
 		{
 			this.hideDialog();
-		}), mxResources.get('saveAs'), mxResources.get('download'), false, false, allowTab);
-		this.showDialog(dlg.container, 380, (backends) ? 280 : 160, true, true);
+		}), mxResources.get('saveAs'), mxResources.get('download'), false, false, allowTab, null, null, 4);
+		this.showDialog(dlg.container, 380, (this.getServiceCount(false) - 1 < 5) ? 270 : 390, true, true);
 		dlg.init();
 	};
 
@@ -2687,10 +2703,6 @@
 	EditorUi.prototype.saveRequest = function(filename, format, fn)
 	{
 		var allowTab = !mxClient.IS_IOS || !navigator.standalone;
-		var backends = !this.isOfflineApp() && !this.isOffline() &&
-			(typeof window.DriveClient === 'function' ||
-			typeof window.DropboxClient === 'function' ||
-			typeof window.OneDriveClient === 'function');
 		
 		var dlg = new CreateDialog(this, filename, mxUtils.bind(this, function(newTitle, mode)
 		{
@@ -2717,11 +2729,7 @@
 								{
 									this.spinner.stop();
 									
-									if (xhr.getStatus() < 200 || xhr.getStatus() > 299)
-									{
-										this.handleError({message: mxResources.get('errorSavingFile')});
-									}
-									else
+									if (xhr.getStatus() >= 200 && xhr.getStatus() <= 299)
 									{
 										try
 										{
@@ -2733,6 +2741,10 @@
 											this.handleError(e);
 										}
 									}
+									else
+									{
+										this.handleError({message: mxResources.get('errorSavingFile')});
+									}
 								}), function(resp)
 								{
 									this.spinner.stop();
@@ -2747,7 +2759,7 @@
 		{
 			this.hideDialog();
 		}), mxResources.get('saveAs'), mxResources.get('download'), false, false, allowTab);
-		this.showDialog(dlg.container, 380, (backends) ? 280 : 160, true, true);
+		this.showDialog(dlg.container, 380, (this.getServiceCount(false) - 1 < 4) ? 270 : 390, true, true);
 		dlg.init();
 	};
 		
@@ -3157,6 +3169,135 @@
 		fn(value, scr);
 	};
 	
+	/**
+	 * 
+	 */
+	EditorUi.prototype.showGitHubDialog = function(filePath, fn, defaultPath)
+	{
+		if (this.gitHubDialog == null)
+		{
+			var div = document.createElement('div');
+			div.style.whiteSpace = 'nowrap';
+			var graph = this.editor.graph;
+			
+			var hd = document.createElement('h3');
+			mxUtils.write(hd, mxResources.get('github'));
+			hd.style.cssText = 'width:100%;text-align:center;margin-top:0px;margin-bottom:12px';
+			div.appendChild(hd);
+			
+			var table = document.createElement('table');
+			var tbody = document.createElement('tbody');
+			table.style.marginBottom = '16px';
+			
+			var addRow = mxUtils.bind(this, function(label, placeholder, value)
+			{
+				var row = document.createElement('tr');
+				var td1 = document.createElement('td');
+				td1.style.padding = '4px';
+				var td2 = td1.cloneNode(true);
+				
+				mxUtils.write(td1, label || '');
+				var input = document.createElement('input');
+				input.setAttribute('type', 'text');
+				input.style.width = '230px';
+				input.style.marginLeft = '4px';
+				input.value = value || '';
+				td2.appendChild(input);
+				
+				if (placeholder != null)
+				{
+					input.setAttribute('placeholder', placeholder);
+				}
+				
+				mxEvent.addListener(input, 'keypress', mxUtils.bind(this, function(evt)
+				{
+					if (evt.keyCode == 13 && !mxEvent.isConsumed(evt))
+					{
+						mxEvent.consume(evt);
+						this.hideDialog();
+						invokeFn();
+					}
+				}));
+				
+				row.appendChild(td1);
+				row.appendChild(td2);
+				tbody.appendChild(row);
+				
+				return input;
+			});
+			
+			var org = null;
+			var repo = null;
+			
+			var file = this.getCurrentFile();
+			
+			if (file != null && file.constructor == GitHubFile && file.meta.drawio != null)
+			{
+				org = file.meta.drawio.org;
+				repo = file.meta.drawio.repo;
+			}
+			
+			var orgInput = addRow(mxResources.get('organisation') + ':', 'org', org);
+			var repoInput = addRow(mxResources.get('repository') + ':', 'repo', repo);
+			var pathInput = addRow();
+			var refInput = addRow(mxResources.get('ref') + ':', 'master');
+			
+			table.appendChild(tbody);
+			div.appendChild(table);
+			
+			var invokeFn = mxUtils.bind(this, function()
+			{
+				// Checks path for leading/trailing slashes
+				var path = pathInput.value;
+				
+				if (path.charAt(0) == '/')
+				{
+					path = path.substring(1);
+				}
+				
+				if (!filePath && path.charAt(path.length) == '/')
+				{
+					path = path.substring(0, path.length - 1);
+				}
+				
+				var ref = refInput.value;
+				
+				if (ref == '')
+				{
+					ref = 'master';
+				}
+				
+				this.gitHubDialog.fn(orgInput.value, repoInput.value, ref, path);
+			});
+			
+			this.gitHubDialog = new CustomDialog(this, div, invokeFn);
+			
+			this.gitHubDialog.init = function(thisFn, fPath, dPath)
+			{
+				var td = pathInput.parentNode.previousSibling;
+				td.innerHTML = '';
+				mxUtils.write(td, mxResources.get((fPath) ? 'path' : 'folder'));
+				pathInput.setAttribute('placeholder', (fPath) ? 'folder/filename.ext' : 'root');
+				pathInput.value = dPath || '';
+				orgInput.focus();
+				
+				if (mxClient.IS_FF || document.documentMode >= 5 || mxClient.IS_QUIRKS)
+				{
+					orgInput.select();
+				}
+				else
+				{
+					document.execCommand('selectAll', false, null);
+				}
+				
+				this.fn = thisFn;
+			};
+		}
+		
+		this.showDialog(this.gitHubDialog.container, 340, 200, true, true);
+		this.gitHubDialog.init(fn, filePath, defaultPath);
+	};
+	
 	/**
 	 * 
 	 */
@@ -3675,7 +3816,7 @@
 				// LATER: Updates on each change, add a delay
 				req.send(mxUtils.bind(this, function()
 				{
-					if (req.getStatus() == 200)
+					if (req.getStatus() >= 200 && req.getStatus() <= 299)
 					{
 						// Fixes possible "incorrect function" for select() on
 						// DOM node which is no longer in document with IE11
@@ -4245,7 +4386,16 @@
 			callback(svgRoot);
 		}
 	};
-	
+
+	/**
+	 * Returns true if the given URL is known to have CORS headers.
+	 */
+	EditorUi.prototype.isCorsEnabledForUrl = function(url)
+	{	
+		return url.substring(0, 34) === 'https://raw.githubusercontent.com/' ||
+			/^https:\/\/.*\.github\.io\//.test(url);
+	};
+
 	/**
 	 * Translates this point by the given vector.
 	 * 
@@ -4476,7 +4626,7 @@
 				// Fixes possible parsing problems with ASCII 160 (non-breaking space)
 				this.parseFile(new Blob([text.replace(/\s+/g,' ')], {type: 'application/octet-stream'}), mxUtils.bind(this, function(xhr)
 				{
-					if (xhr.readyState == 4 && xhr.status == 200)
+					if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status <= 299)
 					{
 						this.editor.graph.setSelectionCells(this.insertTextAt(xhr.responseText, dx, dy, true));
 					}
@@ -4758,7 +4908,7 @@
 				{
 					var importedCells = null;
 					
-					if (xhr.status == 200)
+					if (xhr.status >= 200 && xhr.status <= 299)
 					{
 						importedCells = this.importXml(xhr.responseText, dx, dy, crop);
 					}
@@ -6339,7 +6489,7 @@
 									{
 							    		new mxXmlRequest(OPEN_URL, 'format=xml&data=' + encodeURIComponent(data)).send(mxUtils.bind(this, function(req)
 										{
-							    			if (req.getStatus() == 200)
+							    			if (req.getStatus() >= 200 && req.getStatus() <= 299)
 							    			{
 							    				this.openLocalFile(req.getText());
 							    			}
@@ -6493,7 +6643,7 @@
 									{
 										this.spinner.stop();
 										
-										if (xhr.status == 200)
+										if (xhr.status >= 200 && xhr.status <= 299)
 										{
 											this.openLocalFile(xhr.responseText, name);
 										}
@@ -6746,7 +6896,14 @@
 	 */
 	EditorUi.prototype.getPublicUrl = function(file, fn)
 	{
-		fn(null);
+		if (file != null)
+		{
+			file.getPublicUrl(fn);
+		}
+		else
+		{
+			fn(null);
+		}
 	};
 
 	/**
@@ -7062,7 +7219,7 @@
 									this.editor.graph.setEnabled(true);
 									this.spinner.stop();
 									
-									if (req.getStatus() == 200)
+									if (req.getStatus() >= 200 && req.getStatus() <= 299)
 									{
 										postDataBack(req.getText());
 									}
@@ -7560,16 +7717,7 @@
 								// Removes attribute
 								graph.setAttributeForCell(cell, link, null);
 							}
-							
-							// Removes ignored attributes after processing above
-							if (ignore != null)
-							{
-								for (var j = 0; j < ignore.length; j++)
-					    		{
-									graph.setAttributeForCell(cell, mxUtils.trim(ignore[j]), null);
-					    		}
-							}
-							
+
 							// Sets the size
 							var size = this.editor.graph.getPreferredSizeForCell(cell);
 							
@@ -7621,6 +7769,20 @@
     					}
     				}
 					
+					// Removes ignored attributes after processing above
+					if (ignore != null)
+					{
+						for (var i = 0; i < cells.length; i++)
+	    				{
+							var cell = cells[i];
+							
+							for (var j = 0; j < ignore.length; j++)
+				    		{
+								graph.setAttributeForCell(cell, mxUtils.trim(ignore[j]), null);
+				    		}
+	    				}
+					}
+					
 					var edgeLayout = new mxParallelEdgeLayout(graph);
     				edgeLayout.spacing = edgespacing;
 					
@@ -7940,27 +8102,31 @@
 	/**
 	 * Returns the number of storage options enabled
 	 */
-	EditorUi.prototype.getServiceCount = function()
+	EditorUi.prototype.getServiceCount = function(allowBrowser)
 	{
-		var allowTab = !mxClient.IS_IOS || !navigator.standalone;
-		var backends = !this.isOfflineApp() && !this.isOffline() &&
-			(typeof window.DriveClient === 'function' ||
-			typeof window.DropboxClient === 'function' ||
-			typeof window.OneDriveClient === 'function');
-		
 		var serviceCount = 0;
 		
-		if (this.drive != null)
+		if (this.drive != null || typeof window.DriveClient === 'function')
+		{
+			serviceCount++
+		}
+		
+		if (this.dropbox != null || typeof window.DropboxClient === 'function')
+		{
+			serviceCount++
+		}
+
+		if (this.oneDrive != null || typeof window.OneDriveClient === 'function')
 		{
 			serviceCount++
 		}
 		
-		if (this.dropbox != null)
+		if (this.gitHub != null)
 		{
 			serviceCount++
 		}
 		
-		if (isLocalStorage && urlParams['browser'] != '0')
+		if (allowBrowser && isLocalStorage && urlParams['browser'] == '1')
 		{
 			serviceCount++
 		}

+ 649 - 0
war/js/diagramly/GitHubClient.js

@@ -0,0 +1,649 @@
+/**
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
+ */
+GitHubClient = function(editorUi)
+{
+	mxEventSource.call(this);
+	
+	/**
+	 * Holds a reference to the UI. Needed for the sharing client.
+	 */
+	this.ui = editorUi;
+	this.token = this.getPersistentToken();
+};
+
+// Extends mxEventSource
+mxUtils.extend(GitHubClient, mxEventSource);
+
+/**
+ * Specifies if thumbnails should be enabled. Default is true.
+ * LATER: If thumbnails are disabled, make sure to replace the
+ * existing thumbnail with the placeholder only once.
+ */
+GitHubClient.prototype.clientId = (window.location.hostname == 'test.draw.io') ? '23bc97120b9035515661' : '89c9e4624ca416554489';
+
+/**
+ * OAuth scope.
+ */
+GitHubClient.prototype.scope = 'repo';
+
+/**
+ * Default extension for new files.
+ */
+GitHubClient.prototype.extension = '.xml';
+
+/**
+ * Base URL for API calls.
+ */
+GitHubClient.prototype.baseUrl = 'https://api.github.com';
+
+/**
+ * Token for the current user.
+ */
+GitHubClient.prototype.token = null;
+
+/**
+ * Authorizes the client, gets the userId and calls <open>.
+ */
+GitHubClient.prototype.setUser = function(user)
+{
+	this.user = user;
+	this.fireEvent(new mxEventObject('userChanged'));
+};
+
+/**
+ * Authorizes the client, gets the userId and calls <open>.
+ */
+GitHubClient.prototype.getUser = function()
+{
+	return this.user;
+};
+
+/**
+ * 
+ */
+GitHubClient.prototype.clearPersistentToken = function()
+{
+	var expiration = new Date();
+	expiration.setYear(expiration.getFullYear() - 1);
+	document.cookie = 'ghauth=; expires=' + expiration.toUTCString();	
+};
+
+/**
+ * Authorizes the client, gets the userId and calls <open>.
+ */
+GitHubClient.prototype.getPersistentToken = function()
+{
+	var cookies = document.cookie;
+	var name = 'ghauth=';
+	var start = cookies.indexOf(name);
+
+	if (start >= 0)
+	{
+		start += name.length;
+		var end = cookies.indexOf(';', start);
+	    
+		if (end < 0)
+		{
+			end = cookies.length;
+		}
+		else
+		{
+			postCookie = cookies.substring(end);
+	    }
+
+		var value = cookies.substring(start, end);
+		
+		return (value.length > 0) ? value : null;
+	}
+
+	return null;
+};
+
+/**
+ * Authorizes the client, gets the userId and calls <open>.
+ */
+GitHubClient.prototype.setPersistentToken = function(token)
+{
+	if (token != null)
+	{
+		var expiration = new Date();
+		expiration.setYear(expiration.getFullYear() + 10);
+		var cookie = 'ghauth=' + token +'; path=/; expires=' + expiration.toUTCString();
+
+		if (document.location.protocol.toLowerCase() == 'https')
+		{
+			cookie = cookie + ';secure';
+		}
+
+		document.cookie = cookie;
+	}
+	else
+	{
+		this.clearPersistentToken();
+	}
+};
+
+/**
+ * Authorizes the client, gets the userId and calls <open>.
+ */
+GitHubClient.prototype.updateUser = function(success, error)
+{
+	var fn = mxUtils.bind(this, function()
+	{
+		var acceptResponse = true;
+		
+		var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
+		{
+			acceptResponse = false;
+			error({code: App.ERROR_TIMEOUT, retry: fn});
+		}), this.ui.timeout);
+		
+		mxUtils.get(this.baseUrl + '/user?access_token=' + this.token, mxUtils.bind(this, function(userReq)
+		{
+			window.clearTimeout(timeoutThread);
+			
+			if (acceptResponse)
+			{
+				if (userReq.getStatus() === 401)
+				{
+					this.authorizeRequest(fn, error);
+				}
+				else
+				{
+					var userInfo = JSON.parse(userReq.getText());
+					this.setUser(new DrawioUser(userInfo.id, userInfo.email, userInfo.name));
+					success();
+				}
+			}
+		}));
+	});
+	
+	fn();
+};
+
+/**
+ * Authorizes the client, gets the userId and calls <open>.
+ */
+GitHubClient.prototype.authorizeRequest = function(success, error)
+{
+	this.ui.showAuthDialog(this, true, mxUtils.bind(this, function(remember, authSuccess)
+	{
+		if (authSuccess != null)
+		{
+			authSuccess();
+		}
+		
+		// Initializes oauth flow
+		window.open('https://github.com/login/oauth/authorize?client_id=' + this.clientId + '&scope=' + this.scope);
+		
+		window.onGitHubCallback = mxUtils.bind(this, function(code, authWindow)
+		{
+			window.onGitHubCallback = null;
+
+			if (authWindow != null)
+			{
+				authWindow.close();
+			}
+			
+			// Gets token for code via servlet
+			var fn = mxUtils.bind(this, function()
+			{
+				var acceptResponse = true;
+				
+				var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
+				{
+					acceptResponse = false;
+					error({code: App.ERROR_TIMEOUT, retry: fn});
+				}), this.ui.timeout);
+				
+				mxUtils.get('/github?client_id=' + this.clientId + '&code=' + code, mxUtils.bind(this, function(authReq)
+				{
+					window.clearTimeout(timeoutThread);
+					
+					if (acceptResponse)
+					{
+						var res = authReq.getText();
+						this.token = res.substring(res.indexOf('=') + 1, res.indexOf('&'));
+						
+						if (remember)
+						{
+							this.setPersistentToken(this.token);
+						}
+						
+						success();
+					}
+				}));
+			});
+			
+			fn();
+		});
+	}));
+};
+
+/**
+ * Authorizes the client, gets the userId and calls <open>.
+ */
+GitHubClient.prototype.executeRequest = function(req, success, error, refresh, overwrite)
+{
+	var doExecute = mxUtils.bind(this, function()
+	{
+		var acceptResponse = true;
+		
+		var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
+		{
+			acceptResponse = false;
+			error({code: App.ERROR_TIMEOUT, retry: fn});
+		}), this.ui.timeout);
+		
+		var temp = this.token;
+		
+		req.setRequestHeaders = function(request, params)
+		{
+			request.setRequestHeader('Authorization', 'token ' + temp);
+		};
+		
+		req.send(mxUtils.bind(this, function()
+		{
+			window.clearTimeout(timeoutThread);
+			
+			if (acceptResponse)
+			{
+				if (req.getStatus() >= 200 && req.getStatus() <= 299)
+				{
+					success(req);
+				}
+				else if (req.getStatus() === 401)
+				{
+					this.authorizeRequest(fn, error);
+				}
+				else if (req.getStatus() === 404)
+				{
+					error({message: mxResources.get('fileNotFound')});
+				}
+				else if (req.getStatus() === 409)
+				{
+					// Special case: flag to the caller that there was a conflict
+					error({status: 409});
+				}
+				else
+				{
+					error({message: mxResources.get('error') + ' ' + req.getStatus()});
+				}
+			}
+		}), error);
+	});
+	
+	var fn = mxUtils.bind(this, function()
+	{
+		if (this.user == null)
+		{
+			this.updateUser(doExecute, error);
+		}
+		else
+		{
+			doExecute();
+		}
+	});
+
+	if (this.token === null)
+	{
+		this.authorizeRequest(fn, error);
+	}
+	else
+	{
+		fn();
+	}
+};
+
+/**
+ * Checks if the client is authorized and calls the next step.
+ */
+GitHubClient.prototype.getLibrary = function(path, success, error)
+{
+	this.getFile(path, success, error, true);
+};
+
+/**
+ * Checks if the client is authorized and calls the next step.
+ */
+GitHubClient.prototype.getFile = function(path, success, error, asLibrary)
+{
+	asLibrary = (asLibrary != null) ? asLibrary : false;
+	
+	var tokens = path.split('/');
+	var org = tokens[0];
+	var repo = tokens[1];
+	var ref = tokens[2];
+	var path = tokens.slice(3, tokens.length).join('/');
+	
+	var req = new mxXmlRequest(this.baseUrl + '/repos/' + org + '/' + repo +
+		'/contents/' + path + '?ref=' + encodeURIComponent(ref), null, 'GET');
+	
+	this.executeRequest(req, mxUtils.bind(this, function(req)
+	{
+		try
+		{
+			success(this.createGitHubFile(org, repo, ref, req, asLibrary));
+		}
+		catch (e)
+		{
+			error(e);
+		}
+	}), error);
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubClient.prototype.createGitHubFile = function(org, repo, ref, req, asLibrary)
+{
+	var data = JSON.parse(req.getText());
+	var meta = {'org': org, 'repo': repo, 'ref': ref, 'name': data.name,
+		'path': data.path, 'sha': data.sha, 'download_url': data.download_url};
+	var content = data.content;
+	
+	if (data.encoding === 'base64')
+	{
+		if ((/(\.png)$/i.test(data.name)))
+		{
+			content = 'data:image/png;base64,' + content;
+		}
+		else
+		{
+			content = (window.atob) ? atob(content) : Base64.decode(content, true);
+		}
+	}
+	
+	return (asLibrary) ? new GitHubLibrary(this.ui, content, meta) : new GitHubFile(this.ui, content, meta);
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubClient.prototype.insertLibrary = function(filename, data, success, error, folderId)
+{
+	this.insertFile(filename, data, success, error, true, folderId, false);
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubClient.prototype.insertFile = function(filename, data, success, error, asLibrary, folderId, base64Encoded)
+{
+	asLibrary = (asLibrary != null) ? asLibrary : false;
+
+	var tokens = folderId.split('/');
+	var org = tokens[0];
+	var repo = tokens[1];
+	var ref = tokens[2];
+	var path = tokens.slice(3, tokens.length).join('/');
+
+	if (path.length > 0)
+	{
+		path = path + '/';
+	}
+	
+	path = path + filename;
+
+	this.checkExists(org + '/' + repo + '/' + ref + '/' + path, true, mxUtils.bind(this, function(checked, sha)
+	{
+		if (checked)
+		{
+			// Does not insert file here as there is another writeFile implicit via fileCreated
+			if (!asLibrary)
+			{
+				success(new GitHubFile(this.ui, data, {'org': org, 'repo': repo,
+					'ref': ref, 'name': filename, 'path': path}));
+			}
+			else
+			{
+				if (!base64Encoded)
+				{
+					data = (window.btoa) ? btoa(data) : Base64.encode(data);
+				}
+				
+				this.showCommitDialog(filename, true, mxUtils.bind(this, function(message)
+				{
+					this.writeFile(org, repo, ref, path, message, data, sha, mxUtils.bind(this, function(req)
+					{
+						this.getFile(org + '/' + repo + '/' + ref + '/' + path, success, error, asLibrary);
+					}), error);
+				}), mxUtils.bind(this, function()
+				{
+					// do nothing
+				}));
+			}
+		}
+		else if (error != null)
+		{
+			error();
+		}
+	}))
+};
+
+/**
+ * 
+ */
+GitHubClient.prototype.showCommitDialog = function(filename, isNew, success, cancel)
+{
+	// Pauses spinner while commit message dialog is shown
+	var resume = this.ui.spinner.pause();
+	
+	var dlg = new FilenameDialog(this.ui, mxResources.get((isNew) ? 'addedFile' : 'updateFile',
+		[filename]), mxResources.get('ok'), mxUtils.bind(this, function(message)
+	{
+		resume();
+		success(message);
+	}), mxResources.get('changes'), null, null, null, null, mxUtils.bind(this, function()
+	{
+		cancel();
+	}));
+	this.ui.showDialog(dlg.container, 300, 80, true, false);
+	dlg.init();
+};
+
+/**
+ * 
+ */
+GitHubClient.prototype.writeFile = function(org, repo, ref, path, message, data, sha, success, error)
+{
+	var entity =
+	{
+		path: path,
+		message: message,
+		content: data
+	};
+	
+	if (sha != null)
+	{
+		entity.sha = sha;
+	}
+	
+	var req = new mxXmlRequest(this.baseUrl + '/repos/' + org + '/' + repo +
+		'/contents/' + path + '?ref=' + encodeURIComponent(ref),
+		JSON.stringify(entity), 'PUT');
+	
+	this.executeRequest(req, mxUtils.bind(this, function(req)
+	{
+		success(req);
+	}), error);
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubClient.prototype.checkExists = function(path, askReplace, fn)
+{
+	this.getFile(path, mxUtils.bind(this, function(file)
+	{
+		if (askReplace)
+		{
+			var resume = this.ui.spinner.pause();
+			
+			this.ui.confirm(mxResources.get('replaceIt', [path]), function()
+			{
+				resume();
+				fn(true, file.meta.sha);
+			}, function()
+			{
+				resume();
+				fn(false);
+			});
+		}
+		else
+		{
+			this.ui.spinner.stop();
+			
+			this.ui.showError(mxResources.get('error'), mxResources.get('fileExists'), mxResources.get('ok'), function()
+			{
+				fn(false);						
+			});
+		}
+	}), mxUtils.bind(this, function(err)
+	{
+		fn(true);
+	}));
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubClient.prototype.saveFile = function(file, success, error)
+{
+	var org = file.meta.org;
+	var repo = file.meta.repo;
+	var ref = file.meta.ref;
+	var path = file.meta.path;
+	
+	this.showCommitDialog(file.meta.name, file.meta.sha == null, mxUtils.bind(this, function(message)
+	{
+		var data = (window.btoa) ? btoa(file.getData()) : Base64.encode(file.getData());
+		
+		var fn = mxUtils.bind(this, function(sha)
+		{
+			this.writeFile(org, repo, ref, path, message, data, sha, mxUtils.bind(this, function(req)
+			{
+				var data = JSON.parse(req.getText());
+				success(data.content.sha);
+			}), mxUtils.bind(this, function(err)
+			{
+				// Handles special conflict case where overwrite needs an update of the sha
+				if (err != null && err.status == 409)
+				{
+					resume = this.ui.spinner.pause();
+					
+					var dlg = new ErrorDialog(this.ui, mxResources.get('errorSavingFile'),
+						mxResources.get('fileChangedOverwrite'), mxResources.get('cancel'), mxUtils.bind(this, function()
+						{
+							success(null);
+						}), null, mxResources.get('overwrite'), mxUtils.bind(this, function()
+						{
+							resume();
+							
+							// Gets the latest sha and tries again
+							this.getFile(org + '/' + repo + '/' + ref + '/' + path, mxUtils.bind(this, function(tempFile)
+							{
+								fn(tempFile.meta.sha);
+							}));
+						}));
+					this.ui.showDialog(dlg.container, 340, 150, true, false);
+					dlg.init();
+				}
+				else
+				{
+					error(err);
+				}
+			}));
+		});
+		
+		fn(file.meta.sha);
+	}), mxUtils.bind(this, function()
+	{
+		success(null);
+	}));
+};
+
+/**
+ * Checks if the client is authorized and calls the next step.
+ */
+GitHubClient.prototype.pickLibrary = function(fn)
+{
+	this.pickFile(fn);
+};
+
+/**
+ * Checks if the client is authorized and calls the next step.
+ */
+GitHubClient.prototype.pickFolder = function(fn)
+{
+	var ask = mxUtils.bind(this, function(defaultPath)
+	{
+		this.ui.showGitHubDialog(false, mxUtils.bind(this, function(org, repo, ref, path)
+		{
+			if (this.ui.spinner.spin(document.body, mxResources.get('loading')))
+			{
+				var req = new mxXmlRequest(this.baseUrl + '/repos/' + org + '/' + repo +
+					'/contents/' + path + '?ref=' + encodeURIComponent(ref), null, 'GET');
+				
+				this.executeRequest(req, mxUtils.bind(this, function(req)
+				{
+					this.ui.spinner.stop();
+					fn(org + '/' + repo + '/' + ref + '/' + path);
+				}), mxUtils.bind(this, function(err)
+				{
+					this.ui.spinner.stop();
+					
+					this.ui.handleError({message: mxResources.get('folderNotFound')}, null, function()
+					{
+						ask(path);
+					});
+				}));
+			}
+		}), defaultPath);
+	});
+	
+	ask('');
+};
+
+/**
+ * Checks if the client is authorized and calls the next step.
+ */
+GitHubClient.prototype.pickFile = function(fn)
+{
+	fn = (fn != null) ? fn : mxUtils.bind(this, function(path)
+	{
+		this.ui.loadFile('H' + encodeURIComponent(path));
+	});
+	
+	this.ui.showGitHubDialog(true, mxUtils.bind(this, function(org, repo, ref, path)
+	{
+		fn(org + '/' + repo + '/' + ref + '/' + path);
+	}));
+};
+
+/**
+ * Checks if the client is authorized and calls the next step.
+ */
+GitHubClient.prototype.logout = function()
+{
+	this.setUser(null);
+	this.clearPersistentToken();
+	this.token = null;
+};

+ 233 - 0
war/js/diagramly/GitHubFile.js

@@ -0,0 +1,233 @@
+/**
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
+ */
+GitHubFile = function(ui, data, meta)
+{
+	DrawioFile.call(this, ui, data);
+	
+	this.meta = meta;
+};
+
+//Extends mxEventSource
+mxUtils.extend(GitHubFile, DrawioFile);
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.getHash = function()
+{
+	return encodeURIComponent('H' + encodeURIComponent(this.meta.org) + '/' +
+		((this.meta.repo != null) ?
+			encodeURIComponent(this.meta.repo) + '/' +
+			((this.meta.ref != null) ?
+				encodeURIComponent(this.meta.ref) +
+				((this.meta.path != null) ? '/' + this.meta.path
+				: '') : '') : ''));
+};
+
+/**
+ * Returns true if copy, export and print are not allowed for this file.
+ */
+GitHubFile.prototype.getPublicUrl = function(fn)
+{
+	// LATER: Check if download_url is always null for private repos
+	if (this.meta.download_url != null)
+	{
+		mxUtils.get(this.meta.download_url, mxUtils.bind(this, function(req)
+		{
+			fn((req.getStatus() >= 200 && req.getStatus() <= 299) ? this.meta.download_url : null);	
+		}), mxUtils.bind(this, function()
+		{
+			fn(null);
+		}));
+	}
+	else
+	{
+		fn(null);
+	}
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.getMode = function()
+{
+	return App.MODE_GITHUB;
+};
+
+/**
+ * Overridden to enable the autosave option in the document properties dialog.
+ */
+GitHubFile.prototype.isAutosave = function()
+{
+	return false;
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.getTitle = function()
+{
+	return this.meta.name;
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.isRenamable = function()
+{
+	return false;
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.save = function(revision, success, error)
+{
+	this.doSave(this.getTitle(), success, error);
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.saveAs = function(title, success, error)
+{
+	this.doSave(title, success, error);
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.doSave = function(title, success, error)
+{
+	// Forces update of data for new extensions
+	var prev = this.meta.name;
+	this.meta.name = title;
+	DrawioFile.prototype.save.apply(this, arguments);
+	this.meta.name = prev;
+	
+	this.saveFile(title, false, success, error);
+};
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubFile.prototype.saveFile = function(title, revision, success, error)
+{
+	if (!this.isEditable())
+	{
+		if (success != null)
+		{
+			success();
+		}
+	}
+	else if (!this.savingFile)
+	{
+		this.savingFile = true;
+		
+		if (this.getTitle() == title)
+		{
+			// Makes sure no changes get lost while the file is saved
+			var prevModified = this.isModified;
+			var modified = this.isModified();
+			this.setModified(false);
+			
+			this.ui.gitHub.saveFile(this, mxUtils.bind(this, function(sha)
+			{
+				this.savingFile = false;
+				this.isModified = prevModified;
+
+				if (success != null)
+				{
+					success();
+				}
+				
+				// No sha means save was cancelled
+				if (sha == null)
+				{
+					this.setModified(modified || this.isModified());
+					
+					if (this.isModified())
+					{
+						this.addUnsavedStatus();
+					}
+				}
+				else
+				{
+					this.meta.sha = sha;
+					this.contentChanged();
+				}
+			}),
+			mxUtils.bind(this, function(err)
+			{
+				this.savingFile = false;
+				this.isModified = prevModified;
+				this.setModified(modified || this.isModified());
+				
+				if (this.isModified())
+				{
+					this.addUnsavedStatus();
+				}
+				
+				if (error != null)
+				{
+					error(err);
+				}
+			}));
+		}
+		else
+		{
+			this.ui.pickFolder(App.MODE_GITHUB, mxUtils.bind(this, function(folderId)
+			{
+				this.ui.gitHub.insertFile(title, this.getData(), mxUtils.bind(this, function(file)
+				{
+					this.savingFile = false;
+					
+					if (success != null)
+					{
+						success();
+					}
+					
+					this.ui.fileLoaded(file);
+				}), mxUtils.bind(this, function()
+				{
+					this.savingFile = false;
+					
+					if (error != null)
+					{
+						error();
+					}
+				}), false, folderId);
+			}));
+		}
+	}
+	else if (error != null)
+	{
+		error({code: App.ERROR_BUSY});
+	}
+};

+ 39 - 0
war/js/diagramly/GitHubLibrary.js

@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
+ */
+GitHubLibrary = function(ui, data, meta)
+{
+	GitHubFile.call(this, ui, data, meta);
+};
+
+//Extends mxEventSource
+mxUtils.extend(GitHubLibrary, GitHubFile);
+
+/**
+ * Translates this point by the given vector.
+ * 
+ * @param {number} dx X-coordinate of the translation.
+ * @param {number} dy Y-coordinate of the translation.
+ */
+GitHubLibrary.prototype.isAutosave = function()
+{
+	return false;
+};
+
+/**
+ * Overridden to avoid updating data with current file.
+ */
+GitHubLibrary.prototype.doSave = function(title, success, error)
+{
+	this.saveFile(title, false, success, error);
+};
+
+/**
+ * Returns the location as a new object.
+ * @type mx.Point
+ */
+GitHubLibrary.prototype.open = function()
+{
+	// Do nothing - this should never be called
+};

+ 53 - 8
war/js/diagramly/Menus.js

@@ -1,6 +1,6 @@
-/*
- * $Id: Menus.js,v 1.29 2014/02/11 13:56:10 gaudenz Exp $
- * Copyright (c) 2006-2014, JGraph Ltd
+/**
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 (function()
 {
@@ -787,7 +787,7 @@
 						{
 							editorUi.spinner.stop();
 							
-							if (req.getStatus() == 200)
+							if (req.getStatus() >= 200 && req.getStatus() <= 299)
 							{
 								editorUi.saveLocalFile(req.getText(), 'realtime.txt', 'text/plain');
 							}
@@ -1246,8 +1246,11 @@
 							editorUi.createHtml(publicUrl, zoomEnabled, initialZoom, linkTarget, linkColor,
 								fit, allPages, layers, lightbox, edit, mxUtils.bind(this, function(html, scriptTag)
 								{
-									editorUi.saveData(editorUi.getBaseFilename() + '.html',
-										'html', html + '\n' + scriptTag, 'text/html');
+									var basename = editorUi.getBaseFilename();
+									var result = '<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->\n' +
+										'<!DOCTYPE html>\n<html>\n<head>\n<title>' + mxUtils.htmlEntities(basename) + '</title>\n' +
+										'<meta charset="utf-8"/>\n</head>\n<body>' + html + '\n' + scriptTag + '\n</body>\n</html>';
+									editorUi.saveData(basename + '.html', 'html', result, 'text/html');
 								}));
 						});
 					});
@@ -1394,6 +1397,9 @@
 								graph.setSelectionCells(cells);
 							});
 	    				}), true);
+	    			}), mxUtils.bind(this, function()
+	    			{
+	    				editorUi.handleError({message: mxResources.get('cannotOpenFile')});
 	    			}));
 				}
 				else
@@ -1463,6 +1469,14 @@
 					}, parent, null, false);
 				}
 			}
+			
+			if (editorUi.gitHub != null)
+			{
+				menu.addItem(mxResources.get('github') + '...', null, function()
+				{
+					pickFileFromService(editorUi.gitHub);
+				}, parent);
+			}
 
 			if (editorUi.dropbox != null)
 			{
@@ -1907,6 +1921,14 @@
 					// do nothing
 				}, parent, null, false);
 			}
+
+			if (editorUi.gitHub != null)
+			{
+				menu.addItem(mxResources.get('github') + '...', null, function()
+				{
+					editorUi.pickFile(App.MODE_GITHUB);
+				}, parent);
+			}
 			
 			if (editorUi.dropbox != null)
 			{
@@ -2004,6 +2026,14 @@
 				}
 			}
 			
+			if (editorUi.gitHub != null)
+			{
+				menu.addItem(mxResources.get('github') + '...', null, function()
+				{
+					editorUi.showLibraryDialog(null, null, null, null, App.MODE_GITHUB);
+				}, parent);
+			}
+			
 			if (editorUi.dropbox != null)
 			{
 				menu.addItem(mxResources.get('dropbox') + '...', null, function()
@@ -2073,6 +2103,14 @@
 				}
 			}
 			
+			if (editorUi.gitHub != null)
+			{
+				menu.addItem(mxResources.get('github') + '...', null, function()
+				{
+					editorUi.pickLibrary(App.MODE_GITHUB);
+				}, parent);
+			}
+			
 			if (editorUi.dropbox != null)
 			{
 				menu.addItem(mxResources.get('dropbox') + '...', null, function()
@@ -2131,10 +2169,17 @@
 					{
 						if (fileUrl != null && fileUrl.length > 0 && editorUi.spinner.spin(document.body, mxResources.get('loading')))
 						{
+							var realUrl = fileUrl;
+							
+							if (!editorUi.isCorsEnabledForUrl(fileUrl))
+							{
+								realUrl = PROXY_URL + '?url=' + encodeURIComponent(fileUrl);
+							}
+							
 							// Uses proxy to avoid CORS issues
-							mxUtils.get(PROXY_URL + '?url=' + encodeURIComponent(fileUrl), function(req)
+							mxUtils.get(realUrl, function(req)
 							{
-								if (req.getStatus() == 200)
+								if (req.getStatus() >= 200 && req.getStatus() <= 299)
 								{
 									editorUi.spinner.stop();
 									

+ 6 - 14
war/js/diagramly/OneDriveClient.js

@@ -1,14 +1,6 @@
 /**
- * Copyright (c) 2006-2016, JGraph Ltd
- * Copyright (c) 2006-2016, Gaudenz Alder
- */
-/**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 OneDriveClient = function(editorUi)
 {
@@ -135,7 +127,7 @@ OneDriveClient.prototype.execute = function(fn, userEvent)
 					// Gets the user data to display a logout button in the UI
 					mxUtils.get(this.baseUrl + '/drive?access_token=' + newToken, mxUtils.bind(this, function(req)
 					{
-						if (req.getStatus() == 200)
+						if (req.getStatus() >= 200 && req.getStatus() <= 299)
 						{
 							var data = JSON.parse(req.getText());
 							this.setUser(new DrawioUser(data.owner.user.id, null, data.owner.user.displayName));
@@ -277,7 +269,7 @@ OneDriveClient.prototype.getFile = function(id, success, error, denyConvert, asL
 			    	
 			    	if (acceptResponse)
 			    	{
-			    		if (req.getStatus() == 200)
+			    		if (req.getStatus() >= 200 && req.getStatus() <= 299)
 			    		{
 							var meta = JSON.parse(req.getText());
 
@@ -354,7 +346,7 @@ OneDriveClient.prototype.convertFile = function(meta, success, error)
 			{
 				if (xhr.readyState == 4)
 				{
-					if (xhr.status == 200 && xhr.responseText.substring(0, 13) == '<mxGraphModel')
+					if (xhr.status >= 200 && xhr.status <= 299 && xhr.responseText.substring(0, 13) == '<mxGraphModel')
 					{
 						this.insertFile(name, xhr.responseText, success, error);
 					}
@@ -578,7 +570,7 @@ OneDriveClient.prototype.writeFile = function(url, data, method, contentType, su
 						this.writingFile = false;
 						
 						// Returns 201 (created) for new resources
-			    		if (req.getStatus() == 200 || req.getStatus() == 201)
+			    		if (req.getStatus() >= 200 && req.getStatus() <= 299)
 			    		{
 			    			if (success != null)
 			    			{

+ 8 - 11
war/js/diagramly/OneDriveFile.js

@@ -1,12 +1,6 @@
-// $Id = DropboxFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $
-// Copyright (c) 2006-2014, JGraph Ltd
 /**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 OneDriveFile = function(ui, data, meta)
 {
@@ -100,7 +94,11 @@ OneDriveFile.prototype.saveAs = function(title, success, error)
  */
 OneDriveFile.prototype.doSave = function(title, success, error)
 {
+	// Forces update of data for new extensions
+	var prev = this.meta.name;
+	this.meta.name = title;
 	DrawioFile.prototype.save.apply(this, arguments);
+	this.meta.name = prev;
 	
 	this.saveFile(title, false, success, error);
 };
@@ -167,8 +165,7 @@ OneDriveFile.prototype.saveFile = function(title, revision, success, error)
 				}
 				
 				this.ui.fileLoaded(file);
-			}),
-			function()
+			}), mxUtils.bind(this, function()
 			{
 				this.savingFile = false;
 				
@@ -176,7 +173,7 @@ OneDriveFile.prototype.saveFile = function(title, revision, success, error)
 				{
 					error();
 				}
-			});
+			}));
 		}
 	}
 	else if (error != null)

+ 2 - 8
war/js/diagramly/OneDriveLibrary.js

@@ -1,12 +1,6 @@
-// $Id = DriveFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $
-// Copyright (c) 2006-2014, JGraph Ltd
 /**
- * Constructs a new point for the optional x and y coordinates. If no
- * coordinates are given, then the default values for <x> and <y> are used.
- * @constructor
- * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}.
- * @param {number} x X-coordinate of the point.
- * @param {number} y Y-coordinate of the point.
+ * Copyright (c) 2006-2017, JGraph Ltd
+ * Copyright (c) 2006-2017, Gaudenz Alder
  */
 OneDriveLibrary = function(ui, data, meta)
 {

文件差异内容过多而无法显示
+ 3 - 3
war/js/embed-static.min.js


+ 8 - 1
war/js/mxgraph/Dialogs.js

@@ -1231,7 +1231,7 @@ PrintDialog.createPrintPreview = function(graph, scale, pf, border, x0, y0, auto
 /**
  * Constructs a new filename dialog.
  */
-var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validateFn, content, helpLink, closeOnBtn)
+var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validateFn, content, helpLink, closeOnBtn, cancelFn)
 {
 	closeOnBtn = (closeOnBtn != null) ? closeOnBtn : true;
 	var row, td;
@@ -1243,6 +1243,7 @@ var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validat
 	row = document.createElement('tr');
 	
 	td = document.createElement('td');
+	td.style.whiteSpace = 'nowrap';
 	td.style.fontSize = '10pt';
 	td.style.width = '120px';
 	mxUtils.write(td, (label || mxResources.get('filename')) + ':');
@@ -1251,6 +1252,7 @@ var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validat
 	
 	var nameInput = document.createElement('input');
 	nameInput.setAttribute('value', filename || '');
+	nameInput.style.marginLeft = '4px';
 	nameInput.style.width = '180px';
 	
 	var genericBtn = mxUtils.button(buttonText, function()
@@ -1367,6 +1369,11 @@ var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validat
 	var cancelBtn = mxUtils.button(mxResources.get('cancel'), function()
 	{
 		editorUi.hideDialog();
+		
+		if (cancelFn != null)
+		{
+			cancelFn();
+		}
 	});
 	cancelBtn.className = 'geBtn';
 	

+ 2 - 2
war/js/mxgraph/Graph.js

@@ -3361,7 +3361,7 @@ mxStencilRegistry.getStencil = function(name)
 							{
 								var req = mxUtils.load(fname);
 								
-								if (req != null && req.getStatus() == 200)
+								if (req != null && req.getStatus() >= 200 && req.getStatus() <= 299)
 								{
 									eval.call(window, req.getText());
 								}
@@ -3442,7 +3442,7 @@ mxStencilRegistry.loadStencilSet = function(stencilFile, postStencilLoad, force,
 				{
 					var req = mxUtils.get(stencilFile, mxUtils.bind(this, function(req)
 					{
-						if (req.getStatus() == 200)
+						if (req.getStatus() >= 200 && req.getStatus() <= 299)
 						{
 							xmlDoc = req.getXml();
 							mxStencilRegistry.packages[stencilFile] = xmlDoc;

文件差异内容过多而无法显示
+ 3 - 3
war/js/reader.min.js


文件差异内容过多而无法显示
+ 428 - 424
war/js/viewer.min.js


+ 11 - 0
war/resources/dia.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_am.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_ar.txt

@@ -4,6 +4,7 @@ aboutDrawio=‫عن تطبيق draw.io‬
 accessDenied=Access Denied
 actualSize=‫الحجم الحقيقي‬
 add=‫إضافة‬
+addedFile=Added {1}
 addImages=‫إضافة صور‬
 addImageUrl=‫إضافة رابط صورة‬
 addLayer=‫إضافة طبقة‬
@@ -76,6 +77,7 @@ cannotLoad=‫لقد فشلت محاولات الرفع. المرجو المحا
 cannotLogin=‫لقد فشلت محاولات تسجيل الدخول. المرجو المحاولة لاحقا‬
 cannotOpenFile=‫تعذر فتح الملف‬
 change=‫تغيير‬
+changes=Changes
 changeOrientation=‫تغيير الاتجاه‬
 changeUser=‫تغيير المستخدم‬
 changesNotSaved=‫لم يتم حفظ التغييرات‬
@@ -233,10 +235,13 @@ feedback=‫تعليق‬
 feedbackSent=‫تم إرسال التعليق بنجاح.‬
 floorplans=Floorplans
 file=‫ملف‬
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=‫اسم الملف‬
 fileExists=‫الملف موجود مسبقا‬
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=‫الملف غير موجود‬
+folderNotFound=Folder not found
 fileNotFoundOrDenied=‫تعذر إيجاد الملف. الملف غير موجود أو أذونات القراءة غير متوفرة.‬
 fileNotLoaded=‫لم يتم تحميل الملف‬
 fileNotSaved=‫لم يتم حفظ الملف‬
@@ -260,6 +265,7 @@ flip=‫انعكاس‬
 flipH=‫انعكاس أفقي‬
 flipV=‫انعكاس عمودي‬
 flowchart=Flowchart
+folder=Folder
 font=‫خط‬
 fontColor=‫لون الخط‬
 fontFamily=‫الخط‬
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=‫الصيغة المعتمدة هي الملفات ذات امتداد .XML المحفوظة من هذا البرنامج‬
 options=‫الخيارات‬
 organic=‫عضوي‬
+organisation=Organisation
 orthogonal=‫متعامد‬
 otherViewer=‫مشاهد آخر‬
 otherViewers=‫مشاهدون آخرون‬
@@ -467,6 +474,7 @@ pageSetup=‫إعداد الصفحة‬
 pageScale=‫مقياس الصفحة‬
 pan=‫تحريك‬
 panTooltip=‫اضغط على مسافة ثم اسحب للتحريك‬
+path=Path
 paperSize=‫حجم الصفحة‬
 pattern=‫نموذج‬
 paste=‫لصق‬
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=‫تم إنجاز أو تعديل هذا الملف باستخدام draw.io pro. تتم الآن إعادة التوجيه.‬
 realtimeTimeout=‫يبدو أنك قمت ببعض التعجيلات في وضع غير الاتصال. نعتذر عن عدم إمكانية حفظ التغييرات.‬
 redo=‫إعادة تنفيذ الأمر‬
+ref=Ref
 refresh=‫إعادة تحميل‬
 regularExpression=Regular Expression
 rememberMe=‫تذكرني‬
@@ -527,6 +536,7 @@ renaming=‫تتم الآن إعادة التسمية‬
 replace=Replace
 replaceIt=‫{1} موجود بالفعل. هل تريد استبداله؟‬
 replaceExistingDrawing=‫استبدال الرسم الحالي‬
+repository=Repository
 required=‫مطلوب‬
 reset=‫إعادة تعيين‬
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=‫مخطط دون اسم‬
 untitledLayer=Untitled Layer
 untitledLibrary=‫مكتبة دون اسم‬
 unknownError=‫حدث خطأ ما‬
+updateFile=Update {1}
 updatingDocument=‫تحديث الوثيقة. برجاء الانتظار...‬
 updatingPreview=‫تحديث المعاينة. المرجو الانتظار...‬
 updatingSelection=‫تحديث الاختيار. برجاء الانتظار...‬

+ 11 - 0
war/resources/dia_bg.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_bn.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_bs.txt

@@ -4,6 +4,7 @@ aboutDrawio=O draw.io
 accessDenied=Access Denied
 actualSize=Prirodna veličina
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Promjeni orijentaciju
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=Datoteka
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Ime datoteke
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Datoteka nije pronađena
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=Datoteka nije učitana
 fileNotSaved=Datoteka nije uskladištena
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Preokreni vodoravno
 flipV=Preokreni uspravno
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Boja fonta
 fontFamily=Font
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Podržani format je .XML datoteka sačuvana iz ovog softvera
 options=Opcije
 organic=Organski
+organisation=Organisation
 orthogonal=Pravougaoni
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Podešavanje strane
 pageScale=Razmjera strane
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Veličina papira
 pattern=Pattern
 paste=Zalijepi
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Ponovi
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} već postoji. Da li želite da ga zamjenite?
 replaceExistingDrawing=Zamjeni postojeći crtež
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Ažuriranje dokumenta. Molimo sačekajte...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Ažuriranje selekcije. Molimo sačekajte...

+ 11 - 0
war/resources/dia_ca.txt

@@ -4,6 +4,7 @@ aboutDrawio=Sobre draw.io
 accessDenied=Access Denied
 actualSize=Mida real
 add=Afegeix
+addedFile=Added {1}
 addImages=Afegeix imatges
 addImageUrl=Afegeix l'URL de la imatge
 addLayer=Afegeix una capa
@@ -76,6 +77,7 @@ cannotLoad=Els intents de càrrega han fallat. Si-us-plau, torneu a intentar-ho
 cannotLogin=Els intents d'inici de sessió han fallat. Si-us-plau, torneu a intentar-ho més tard.
 cannotOpenFile=No es pot obrir el ftxer
 change=Canvia
+changes=Changes
 changeOrientation=Canvia l'orientació
 changeUser=Canvia d'usuari
 changesNotSaved=No s'han desat els canvis
@@ -233,10 +235,13 @@ feedback=Opinió
 feedbackSent=S'ha enviat la seva opinió correctament.
 floorplans=Floorplans
 file=fitxer
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nom del fitxer
 fileExists=Aquest fitxer ja existeix
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=No s'ha trobat el fitxer
+folderNotFound=Folder not found
 fileNotFoundOrDenied=No s'ha trobat el fitxer. No existeix o no teniu permís de lectura.
 fileNotLoaded=No s'ha carregat el fitxer 
 fileNotSaved=No s'ha desat el fitxer
@@ -260,6 +265,7 @@ flip=Inverteix
 flipH=Inverteix horitzontalment
 flipV=Inverteix verticalment
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Color de la font
 fontFamily=Família de la font
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Els formats suportats inclouen els fitxers desats des del programari actual (.xml), .vsdx i .gliffy
 options=Opcions
 organic=Orgànic
+organisation=Organisation
 orthogonal=Ortogonal
 otherViewer=altre usuari
 otherViewers=altres usuaris
@@ -467,6 +474,7 @@ pageSetup=Configuració de la pàgina
 pageScale=Escala de la pàgina
 pan=Panorama
 panTooltip=Espai+Arrosega per moure
+path=Path
 paperSize=Mida del paper
 pattern=Patró
 paste=Enganxa
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Aquest fitxer va ser creat o modificat a draw.io pro. Sereu redireccionats.
 realtimeTimeout=Sembla que heu fet canvis mentres estaveu desconnectats. Disculpeu les molèsties, no es poden desar aquests canvis.
 redo=Refés
+ref=Ref
 refresh=Actualiza
 regularExpression=Regular Expression
 rememberMe=Recorda'm
@@ -527,6 +536,7 @@ renaming=Renomenant
 replace=Replace
 replaceIt={1} ja existeix. Desitgeu substituir-lo?
 replaceExistingDrawing=Substitueix el dibuix existent
+repository=Repository
 required=requerit
 reset=Restableix
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Diagrama sense nom
 untitledLayer=Untitled Layer
 untitledLibrary=Biblioteca sense nom
 unknownError=Error desconegut
+updateFile=Update {1}
 updatingDocument=Actualitzant el Document. Si-us-plau, espereu..
 updatingPreview=Actualitzant la vista prèvia. Si-us-plau, espereu...
 updatingSelection=Actualitzant la selecció. Si-us-plau, espereu...

+ 11 - 0
war/resources/dia_cs.txt

@@ -4,6 +4,7 @@ aboutDrawio=O aplikaci draw.io
 accessDenied=Access Denied
 actualSize=Skutečná velikost
 add=Přidat
+addedFile=Added {1}
 addImages=Přidat obrázky
 addImageUrl=Přidat URL obrázku
 addLayer=Přidat vrstvu
@@ -76,6 +77,7 @@ cannotLoad=Pokus o načtení selhal. Prosím zkuste to znovu později.
 cannotLogin=Pokus o přihlášení selhal. Prosím zkuste to znovu později.
 cannotOpenFile=Nelze otevřít soubor
 change=Změnit 
+changes=Changes
 changeOrientation=Změnit orientaci
 changeUser=Změnit uživatele
 changesNotSaved=Změny nebyly uloženy
@@ -233,10 +235,13 @@ feedback=Zpětná vazba
 feedbackSent=Zpětná vazby úspěšně odeslána
 floorplans=Floorplans
 file=Soubor
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Název souboru
 fileExists=Soubor již existuje
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Soubor nebyl nalezen
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Soubor nebyl nalezen. Buď neexistuje a nebo nemáte k jeho čtení přístup.
 fileNotLoaded=Soubor nebyl nahrán
 fileNotSaved=Soubor nebyl uložen
@@ -260,6 +265,7 @@ flip=Převrátit
 flipH=Převrátit vodorovně
 flipV=Převrátit svisle
 flowchart=Flowchart
+folder=Folder
 font=Písmo
 fontColor=Barva písma
 fontFamily=Rodina písma
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Podporovaný formát je soubor .XML uložený z této aplikace
 options=Možnosti
 organic=Organický
+organisation=Organisation
 orthogonal=Pravoúhlý
 otherViewer=další divák
 otherViewers=další diváci
@@ -467,6 +474,7 @@ pageSetup=Nastavení stránky
 pageScale=Škála stránky
 pan=Pan
 panTooltip=Mezerník+přetáhnout do panelu
+path=Path
 paperSize=Rozměry papíru
 pattern=Vzor
 paste=Vložit
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Tento soubor byl vytvořen nebo upraven v draw.io pro. Budete nyní přesměrováni.
 realtimeTimeout=Vypadá to, že jste provedli několik změn, když jste byli offline. Je nám líto, tyto změny nemohou být uloženy.
 redo=Opakovat
+ref=Ref
 refresh=Obnovit
 regularExpression=Regular Expression
 rememberMe=Pamatovat si mě
@@ -527,6 +536,7 @@ renaming=Přejmenovávám
 replace=Replace
 replaceIt={1} již existuje. Chcete jej nahradit?
 replaceExistingDrawing=Nahradit existující výkres
+repository=Repository
 required=vyžadováno
 reset=Resetovat
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Diagram bez názvu
 untitledLayer=Untitled Layer
 untitledLibrary=Knihovna bez názvu
 unknownError=Neznámá chyba
+updateFile=Update {1}
 updatingDocument=Aktualizuji dokument. Prosím počkejte...
 updatingPreview=Aktualizuji náhled. Prosím počkejte...
 updatingSelection=Aktualizuji výběr. Prosím počkejte...

+ 11 - 0
war/resources/dia_da.txt

@@ -4,6 +4,7 @@ aboutDrawio=Om draw.io
 accessDenied=Adgang nægtet
 actualSize=Faktisk størrelse
 add=Tilføj
+addedFile=Added {1}
 addImages=Tilføj billeder
 addImageUrl=Tilføj billed-URL
 addLayer=Tilføj lag
@@ -76,6 +77,7 @@ cannotLoad=Forsøg på indlæsning mislykkedes. Prøv igen senere
 cannotLogin=Login-forøg mislykkedes. Prøv igen senere
 cannotOpenFile=Kan ikke åbne fil
 change=Skift
+changes=Changes
 changeOrientation=Skift Orientering
 changeUser=Skift bruger
 changesNotSaved=Ændringerne blev ikke gemt
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback blev sendt.
 floorplans=Floorplans
 file=Fil
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filnavn
 fileExists=Filen findes allerede
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Fil ikke fundet
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Filen blev ikke fundet. Den findes ikke eller du har ikke læserettigheder.
 fileNotLoaded=Fil ikke indlæst
 fileNotSaved=Fil ikke gemt
@@ -260,6 +265,7 @@ flip=Vend
 flipH=Vend horisontalt
 flipV=Vend vertikalt
 flowchart=Flowchart
+folder=Folder
 font=Skrifttype
 fontColor=Skiftfarve
 fontFamily=Font-familie
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Understøttede formater er filer gemt fra dette software (.xml), .vsxd og .gliffy
 options=Indstillinger
 organic=Organisk
+organisation=Organisation
 orthogonal=Ortogonal
 otherViewer=anden, der kigger med
 otherViewers=andre, der kigger med
@@ -467,6 +474,7 @@ pageSetup=Sideopsætning
 pageScale=Sideskalering 
 pan=Panorér
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Papirstørrelse 
 pattern=Mønster
 paste=Indsæt
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Denne fil er oprettet eller ændret i draw.io pro. Du bliver omdirigeret nu.
 realtimeTimeout=Det ser ud til, at du har foretaget ændringer, mens du var offline. Vi beklager, men disse ændringer kan ikke gemmes.
 redo=Gentag
+ref=Ref
 refresh=Genindlæs
 regularExpression=Regular Expression
 rememberMe=Husk mig
@@ -527,6 +536,7 @@ renaming=Omdøber
 replace=Replace
 replaceIt={1} findes allerede. Ønsker du at erstatte den?
 replaceExistingDrawing=Erstat eksisterende tegning
+repository=Repository
 required=påkrævet
 reset=Nulstil
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Unavngivet diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Unavngivet bibliotek
 unknownError=Ukendt fejl
+updateFile=Update {1}
 updatingDocument=Opdaterer Dokument. Vent venligst...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Opdaterer Valg. Vent venligst...

+ 11 - 0
war/resources/dia_de.txt

@@ -4,6 +4,7 @@ aboutDrawio=Über draw.io
 accessDenied=Zugriff verweigert
 actualSize=Tatsächliche Größe
 add=Einfügen
+addedFile={1} eingefügt
 addImages=Bilder hinzufügen
 addImageUrl=Bild URL hinzufügen
 addLayer=Ebene hinzufügen
@@ -76,6 +77,7 @@ cannotLoad=Ladeversuche fehlgeschlagen. Bitte versuchen Sie es später noch einm
 cannotLogin=Anmeldeversuche fehlgeschlagen. Bitte versuchen Sie es später noch einmal.
 cannotOpenFile=Kann Datei nicht öffnen
 change=Ändern
+changes=Änderungen
 changeOrientation=Orientierung ändern
 changeUser=Benutzer ändern
 changesNotSaved=Änderungen wurden nicht gespeichert
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback erfolgreich versendet.
 floorplans=Grundriss
 file=Datei
+fileChangedOverwrite=Datei wurde geändert. Änderungen überschreiben?
+overwrite=Überschreiben
 filename=Dateiname
 fileExists=Datei existiert bereits
 fileNearlyFullSeeFaq=Maximale Dateigröße fast erreicht, bitte lesen Sie die FAQ
 fileNotFound=Datei nicht gefunden
+folderNotFound=Ordner nicht gefunden
 fileNotFoundOrDenied=Die Datei wurde nicht gefunden. Entweder sie existiert nicht oder Sie haben keine Leseberechtigung.
 fileNotLoaded=Datei nicht geladen
 fileNotSaved=Datei nicht gespeichert
@@ -260,6 +265,7 @@ flip=Spiegeln
 flipH=Horizontal Spiegeln
 flipV=Vertikal Spiegeln
 flowchart=Ablaufdiagramm
+folder=Ordner
 font=Schrift
 fontColor=Schriftfarbe
 fontFamily=Schriftart
@@ -454,6 +460,7 @@ openRecent=Zuletzt geöffnet
 openSupported=Unterstützte Formate sind mit dieser Anwendung erstellte Dateien (.xml), .vsdx und .gliffy
 options=Optionen
 organic=Organisch
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=weiterer Betrachter
 otherViewers=weitere Betrachter
@@ -467,6 +474,7 @@ pageSetup=Seite einrichten
 pageScale=Seitenskalierung
 pan=Verschieben
 panTooltip=Leertaste+Ziehen um zu verschieben
+path=Pfad
 paperSize=Papiergröße
 pattern=Muster
 paste=Einfügen
@@ -512,6 +520,7 @@ recentlyViewed=Kürzlich angesehen
 redirectToNewApp=Diese Datei wurde mit einer neueren Version dieser App erstellt oder verändert. Sie werden nun weitergeleitet.
 realtimeTimeout=Es wurden Änderungen gemacht während Sie offline waren. Diese können leider nicht gespeichert werden.
 redo=Wiederherstellen
+ref=Ref
 refresh=Aktualisieren
 regularExpression=Regulärer Ausdruck
 rememberMe=Angemeldet bleiben
@@ -527,6 +536,7 @@ renaming=Wird umbenannt
 replace=Ersetzen
 replaceIt={1} existiert bereits. Soll die Datei überschrieben werden?
 replaceExistingDrawing=Vorhandene Zeichnung ersetzen
+repository=Repository
 required=erforderlich
 reset=Zurücksetzen
 resetView=Ansicht zurücksetzen
@@ -640,6 +650,7 @@ untitledDiagram=Unbenanntes Diagramm
 untitledLayer=Unbenannte Ebene
 untitledLibrary=Unbenannte Bibliothek
 unknownError=Unbekannter Fehler
+updateFile={1} aktualisiert
 updatingDocument=Aktualisiere Dokument. Bitte warten...
 updatingPreview=Aktualisiere Vorschau. Bitte warten...
 updatingSelection=Aktualisiere Markierung. Bitte warten...

+ 11 - 0
war/resources/dia_el.txt

@@ -4,6 +4,7 @@ aboutDrawio=Σχετικά με το draw.io
 accessDenied=Access Denied
 actualSize=Πραγματικό Μέγεθος
 add=Προσθήκη
+addedFile=Added {1}
 addImages=Προσθήκη εικόνων
 addImageUrl=Προσθήκη εικόνας URL
 addLayer=Προσθήκη επιπέδου
@@ -76,6 +77,7 @@ cannotLoad=Οι προσπάθειες φόρτωσης απέτυχαν. Παρ
 cannotLogin=Οι προσπάθειες σύνδεσης απέτυχαν. Παρακαλούμε, δοκιμάστε αργότερα.
 cannotOpenFile=Το αρχείο δεν μπορεί να ανοίξει
 change=Αλλαγή
+changes=Changes
 changeOrientation=Αλλαγή Προσανατολισμού
 changeUser=Αλλαγή χρήστη
 changesNotSaved=Οι αλλαγές δεν έχουν αποθηκευτεί
@@ -233,10 +235,13 @@ feedback=Κριτική
 feedbackSent= Η κριτική απεστάλη επιτυχώς.
 floorplans=Floorplans
 file=Αρχείο
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Όνομα αρχείου
 fileExists=Το αρχείο υπάρχει ήδη
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Το αρχείο δεν βρέθηκε
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Το αρχείο δεν βρέθηκε. Είτε δεν υπάρχει, είτε δεν έχετε πρόσβαση ανάγνωσης.
 fileNotLoaded=Δεν έγινε φόρτωση αρχείου
 fileNotSaved=Δεν έγινε αποθήκευση αρχείου
@@ -260,6 +265,7 @@ flip=Αναστροφή
 flipH=Οριζόντια αναστροφή
 flipV=Κάθετη αναστροφή
 flowchart=Flowchart
+folder=Folder
 font=Γραμματοσειρά
 fontColor=Χρώμα γραμματοσειράς
 fontFamily=Οικογένεια γραμματοσειράς
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Οι υποστηριζόμενοι τύποι είναι αρχεία αποθηκευμένα από αυτό το λογισμικό (.xml), .vsdx και .gliffy 
 options=Επιλογές
 organic=Οργανικό
+organisation=Organisation
 orthogonal=Ορθογώνιο
 otherViewer=άλλος θεατής
 otherViewers=άλλοι θεατές
@@ -467,6 +474,7 @@ pageSetup=Ρύθμιση Σελίδας
 pageScale=Κλίμακα Σελίδας
 pan=Πανοραμικό
 panTooltip=Κενό+Σύρετε για πανοραμική εμφάνιση
+path=Path
 paperSize=Μέγεθος χαρτιού
 pattern=Μοτίβο
 paste=Επικόλληση
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Αυτό το αρχείο δημιουργήθηκε ή τροποποιήθηκε στο draw.io pro. Θα ανακατευθυνθείτε τώρα.
 realtimeTimeout=Φαίνεται, ότι έχετε κάνει μερικές αλλαγές, ενόσω βρισκόσασταν εκτός δικτύου. Λυπούμαστε, αυτές οι αλλαγές δεν μπορούν να αποθηκευτούν.
 redo=Επανάληψη
+ref=Ref
 refresh=Ανανέωση
 regularExpression=Regular Expression
 rememberMe=Να με θυμάσαι
@@ -527,6 +536,7 @@ renaming=Μετονομάζεται
 replace=Replace
 replaceIt={1} υπάρχει ήδη. Θέλετε να το αντικαταστήσετε;
 replaceExistingDrawing=Αντικατάσταση υπάρχουσας σχεδίασης
+repository=Repository
 required=απαιτείται
 reset=Επανεκκίνηση
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Ανώνυμο διάγραμμα
 untitledLayer=Untitled Layer
 untitledLibrary=Ανώνυμη Βιβλιοθήκη
 unknownError=Άγνωστο σφάλμα
+updateFile=Update {1}
 updatingDocument=Ενημέρωση Εγγράφου. Παρακαλούμε περιμένετε...
 updatingPreview=Ενημέρωση Προεπισκόπησης. Παρακαλούμε περιμένετε...
 updatingSelection=Ενημέρωση Επιλογής. Παρακαλούμε περιμένετε...

+ 11 - 0
war/resources/dia_es.txt

@@ -4,6 +4,7 @@ aboutDrawio=Acerca de draw.io
 accessDenied=Access Denied
 actualSize=Tamaño real
 add=Añadir
+addedFile=Added {1}
 addImages=Añadir imágenes
 addImageUrl=Añadir URL de imagen
 addLayer=Añadir capa
@@ -76,6 +77,7 @@ cannotLoad=Los intentos de carga han fallado. Por favor, inténtalo más tarde.
 cannotLogin=Los intentos de inicio de sesión han fallado. Por favor, inténtalo más tarde
 cannotOpenFile=No se puede abrir el archivo
 change=Cambiar
+changes=Changes
 changeOrientation=Cambiar orientación
 changeUser=Cambiar de usuario
 changesNotSaved=Los cambios no se han guardado
@@ -233,10 +235,13 @@ feedback=Opinión
 feedbackSent=Su opinión ha sido enviada correctamente.
 floorplans=Floorplans
 file=Archivo
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nombre del archivo
 fileExists=El archivo ya existe
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Archivo no encontrado
+folderNotFound=Folder not found
 fileNotFoundOrDenied=No se ha encontrado el archivo. No existe o no tienes permiso de lectura.
 fileNotLoaded=Archivo no cargado
 fileNotSaved=Archivo no guardado
@@ -260,6 +265,7 @@ flip=Voltear
 flipH=Voltear horizontalmente
 flipV=Voltear verticalmente
 flowchart=Flowchart
+folder=Folder
 font=Fuente
 fontColor=Color de la fuente
 fontFamily=Familia de la fuente
@@ -454,6 +460,7 @@ openRecent=Abrir reciente
 openSupported=Los formatos soportados son los archivos guardados desde este software (.xml), .vsdx y .gliffy
 options=Opciones
 organic=Orgánico
+organisation=Organisation
 orthogonal=Ortogonal
 otherViewer=otro usuario
 otherViewers=otros usuarios
@@ -467,6 +474,7 @@ pageSetup=Configuración de página
 pageScale=Escala de página
 pan=Panorama
 panTooltip=Espacio+Arrastrar para mover
+path=Path
 paperSize=Tamaño del papel
 pattern=Patrón
 paste=Pegar
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Este archivo fue creado o modificado en draw.io pro. Serás redirigido.
 realtimeTimeout=Parece que has realizado algunos cambios mientras estabas desconectado/a. Lo sentimos, no es posible guardar estos cambios.
 redo=Rehacer
+ref=Ref
 refresh=Actualizar
 regularExpression=Regular Expression
 rememberMe=Recúerdame
@@ -527,6 +536,7 @@ renaming=Renombrando
 replace=Replace
 replaceIt={1} ya existe. ¿Deseas reemplazarlo?
 replaceExistingDrawing=Reemplazar el dibujo existente
+repository=Repository
 required=requerido
 reset=Restablecer
 resetView=Restaurar zoom
@@ -640,6 +650,7 @@ untitledDiagram=Diagrama sin nombre
 untitledLayer=Untitled Layer
 untitledLibrary=Biblioteca sin nombre
 unknownError=Error desconocido
+updateFile=Update {1}
 updatingDocument=Actualizando Documento. Por favor, espere..
 updatingPreview=Actualizando Vista Previa. Por favor, espere...
 updatingSelection=Actualizando Selección. Por favor, espere..

+ 11 - 0
war/resources/dia_et.txt

@@ -4,6 +4,7 @@ aboutDrawio=Info draw.io kohta
 accessDenied=Access Denied
 actualSize=Tegelik suurus
 add=Lisa
+addedFile=Added {1}
 addImages=Lisa pilte
 addImageUrl=Lisa pildi URL
 addLayer=Lisa kiht
@@ -76,6 +77,7 @@ cannotLoad=Laadimine ebaõnnestus. Proovi hiljem uuesti.
 cannotLogin=Sisselogimine ebaõnnestus. Proovi hiljem uuesti.
 cannotOpenFile=Faili ei saa avada
 change=Muuda
+changes=Changes
 changeOrientation=Muuda suunda
 changeUser=Muuda kasutajat
 changesNotSaved=Muudatused on salvestamata
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_fa.txt

@@ -4,6 +4,7 @@ aboutDrawio=‫درباره draw.io‬
 accessDenied=‫دسترسی مجاز نیست.‬
 actualSize=‫سایز واقعی‬
 add=‫افزودن‬
+addedFile=Added {1}
 addImages=‫افزودن تصاویر‬
 addImageUrl=‫افزودن URL تصویر‬
 addLayer=‫افزودن لایه‬
@@ -76,6 +77,7 @@ cannotLoad=‫تلاش برای لود اطلاعات شکست خورد. لطف
 cannotLogin=‫تلاش برای وارد شدن شکست خورد. لطفا کمی دیرتر دوباره اقدام نمایید.‬
 cannotOpenFile=‫باز نمون فایل امکان‌پذیر نیست‬
 change=‫تغییر‬
+changes=Changes
 changeOrientation=‫تغییر جهت‬
 changeUser=‫تغییر کاربر‬
 changesNotSaved=‫تغییرات ذخیره نشده‌اند.‬
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=‫فایل‬
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=‫نام فایل‬
 fileExists=‫فایل از قبل وجود دارد‬
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=‫فایل یافت نشد‬
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=‫فایل لود نشد‬
 fileNotSaved=‫فایل ذخیره نشد‬
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=‫فونت‬
 fontColor=‫رنگ فونت‬
 fontFamily=‫خانواده فونت‬
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_fi.txt

@@ -4,6 +4,7 @@ aboutDrawio=Tietoa draw.io:sta
 accessDenied=Pääsy kielletty
 actualSize=Oikea koko
 add=Lisää
+addedFile=Added {1}
 addImages=Lisää kuvia
 addImageUrl=Lisää kuvan URL
 addLayer=Lisää kerros
@@ -76,6 +77,7 @@ cannotLoad=Lataaminen epäonnistui. Ole hyvä ja yritä uudelleen.
 cannotLogin=Sisään kirjautuminen epäonnistui. Ole hyvä ja yritä uudelleen.
 cannotOpenFile=Tiedostoa ei voida avata
 change=Muuta
+changes=Changes
 changeOrientation=Vaihda suuntaa
 changeUser=Vaihda käyttäjää
 changesNotSaved=Muutoksia ei tallennettu
@@ -233,10 +235,13 @@ feedback=Palaute
 feedbackSent=Palaute lähetetty onnistuneesti.
 floorplans=Pohjapiirrokset
 file=Tiedosto
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Tiedostonimi
 fileExists=Tiedosto on jo olemassa
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Tiedostoa ei löydy
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Tiedostoa ei löydy. Sitä ei ole olemassa tai sinulla ei ole tarpeeksi lukuoikeuksia.
 fileNotLoaded=Tiedostoa ei ladattu
 fileNotSaved=Tiedostoa ei tallennettu
@@ -260,6 +265,7 @@ flip=Käännä
 flipH=Käännä vaakasuunnassa
 flipV=Käännä pystysuunnassa
 flowchart=Vuokaavio
+folder=Folder
 font=Fontti
 fontColor=Fontin väri
 fontFamily=Fonttiperhe
@@ -454,6 +460,7 @@ openRecent=Avaa viimeaikainen
 openSupported=Tuetut tiedostomuodot ovat tällä ohjelmistolla tallennettuja, (.xml), .vsdx ja .gliffy
 options=Vaihtoehdot
 organic=Orgaaninen
+organisation=Organisation
 orthogonal=Ortogonaalinen
 otherViewer=toinen katselija
 otherViewers=toiset katselijat
@@ -467,6 +474,7 @@ pageSetup=Sivun asetukset
 pageScale=Sivuasteikko
 pan=Panoraama
 panTooltip=Välilyönti+vedä liikuttaaksesi
+path=Path
 paperSize=Paperin koko
 pattern=Kuvio
 paste=Liitä
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Tämä tiedosto on luotu tai muokattu draw.io pro:ssa. Sinut uudelleenohjataan nyt.
 realtimeTimeout=Näyttää siltä, että olet tehnyt muutoksia offline-tilassa. Olemme pahoillamme, mutta näitä muutoksia ei voida tallentaa.
 redo=Toista
+ref=Ref
 refresh=Virkistä
 regularExpression=Regular Expression
 rememberMe=Muista minut
@@ -527,6 +536,7 @@ renaming=Nimetään uudelleen
 replace=Korvaa
 replaceIt={1} on jo olemassa. Haluatko korvata sen?
 replaceExistingDrawing=Korvaa olemassa oleva piirustus
+repository=Repository
 required=vaaditaan
 reset=Tyhjennä
 resetView=Nollaa zoomaus
@@ -640,6 +650,7 @@ untitledDiagram=Nimeämätön kaavio
 untitledLayer=Nimeämätön taso
 untitledLibrary=Nimeämätön kokoelma
 unknownError=Tuntematon virhe
+updateFile=Update {1}
 updatingDocument=Dokumenttia päivitetään. Ole hyvä ja odota...
 updatingPreview=Esikatselua päivitetään. Ole hyvä ja odota...
 updatingSelection=Valintaa päivitetään. Ole hyvä ja odota...

+ 11 - 0
war/resources/dia_fil.txt

@@ -4,6 +4,7 @@ aboutDrawio=Tungkol sa draw.io
 accessDenied=Access Denied
 actualSize=Aktwal na laki
 add=Dagdag
+addedFile=Added {1}
 addImages=Magdagdag ng mga imahe
 addImageUrl=Magdagdag ng imahe ng URL
 addLayer=Magdagdag ng palapag
@@ -76,6 +77,7 @@ cannotLoad=Ang mga pagsubok sa pag-lowd ay nabigo.  Paki subok na lang ulit mama
 cannotLogin=Ang mga pagsubok sa pag- log in ay nabigo.  Paki subok na lang ulit mamaya.
 cannotOpenFile=Hindi mabuksan ang payl
 change=Baguhin
+changes=Changes
 changeOrientation=Baguhin ang oryentasyon
 changeUser=Baguhin ang gumagamit
 changesNotSaved=Ang mga pagbabago ay hindi nai- seyb
@@ -233,10 +235,13 @@ feedback=Kumento
 feedbackSent=Ang Kumento ay matagumpay na naipadala
 floorplans=Floorplans
 file=Payl
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Pangalan ng Payl
 fileExists=Payl ay mayroon na
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Payl ay hindi makita
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Ang payl ay hindi nakita.  Ito ay wala o kaya ay wala kang akses sa pagbasa.
 fileNotLoaded=Payl ay hindi nailowd
 fileNotSaved=Payl ay hindi naiseyb
@@ -260,6 +265,7 @@ flip=Pumitik
 flipH=Pumitik pahalang
 flipV=Pumitik patayo
 flowchart=Flowchart
+folder=Folder
 font=Istilo ng titik
 fontColor=Kulay ng istilo ng titik
 fontFamily=Pamilya ng istilo ng titik
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Ang mga suportadong pormat ay ang mga payl na naiseyb mula sa software na ito (.xml), .vsdx at .gliffy
 options=Mga opsyon
 organic=Organiko
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=ibang tumitingin
 otherViewers=ibang mga tumitingin
@@ -467,6 +474,7 @@ pageSetup=Setup ng pahina
 pageScale=Sukatan ng pahina
 pan=Pan
 panTooltip=Espasyo+Ilakad papunta sa pan
+path=Path
 paperSize=Laki ng papel
 pattern=Porma
 paste=Idikit
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Ang payl na ito ay ginawa o minodipika sa draw.io pro.  Ikaw ay dadalhin na ngayon.
 realtimeTimeout=Mukhang ikaw ay gumawa ng konting mga pagbabago ng ikaw ay wala sa linya o naka oplayn.  Kami po ay humihingi ng tawad, itong mga pagbabago ay hindi maiseseyb.
 redo=Gawing muli
+ref=Ref
 refresh=Sariwain
 regularExpression=Regular Expression
 rememberMe=Tandaan mo ako
@@ -527,6 +536,7 @@ renaming=Pinapangalanang muli
 replace=Replace
 replaceIt={1} ay mayroon na.  Gusto mo bang palitan ito?
 replaceExistingDrawing=Palitan ang kasalukuyan guhit
+repository=Repository
 required=kinakailangan
 reset=Magsimulang muli
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Walang titulong Dayagram
 untitledLayer=Untitled Layer
 untitledLibrary=Walang titulong Libraryo
 unknownError=Hindi malaman na pagkakamali
+updateFile=Update {1}
 updatingDocument=Ina-apdeyt ang Dokumento.  Paki hintay...
 updatingPreview=Ina-apdeyt ang Paunang tingin.  Paki hintay...
 updatingSelection=Ina-apdeyt ang Seleksyon.  Paki hintay...

+ 11 - 0
war/resources/dia_fr.txt

@@ -4,6 +4,7 @@ aboutDrawio=À propos de draw.io
 accessDenied=Accès refusé
 actualSize=Taille réelle
 add=Ajouter
+addedFile=Added {1}
 addImages=Ajouter des images
 addImageUrl=Ajouter l'URL d'une image
 addLayer=Ajouter une couche
@@ -76,6 +77,7 @@ cannotLoad=Erreur lors du chargement. Merci de réessayer plus tard.
 cannotLogin=Erreur lors de la connexion. Merci de réessayer plus tard.
 cannotOpenFile=Impossible d'ouvrir le fichier
 change=Modifier
+changes=Changes
 changeOrientation=Modifier l’orientation
 changeUser=Modifier l'utilisateur
 changesNotSaved=Les modifcations n'ont pas été enregistrées
@@ -233,10 +235,13 @@ feedback=Commentaire
 feedbackSent=Commentaire envoyé.
 floorplans=Floorplans
 file=Fichier
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nom de fichier
 fileExists=Le fichier existe déjà
 fileNearlyFullSeeFaq=Fichier presque plein, veuillez consulter la FAQ
 fileNotFound=Fichier non trouvé
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Le fichier est introuvable. Le fichier n'existe pas ou vous n'avez pas le droit d'accès en lecture.
 fileNotLoaded=Fichier non chargé
 fileNotSaved=Fichier non sauvegardé
@@ -260,6 +265,7 @@ flip=Retourner
 flipH=Retourner horizontalement
 flipV=Retourner verticalement
 flowchart=Diagramme de flux
+folder=Folder
 font=Police
 fontColor=Couleur de la police
 fontFamily=Police
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Les formats supportés sont les fichiers sauvegardés depuis ce logiciel (.xml), .vsdx et .gliffy
 options=Options
 organic=Organique
+organisation=Organisation
 orthogonal=Orthogonale
 otherViewer=autre lecteur
 otherViewers=autres lecteurs
@@ -467,6 +474,7 @@ pageSetup=Paramètres de la page
 pageScale=Échelle de la page
 pan=Panoramique
 panTooltip=Espace+Glisser pour déplacer
+path=Path
 paperSize=Taille du papier
 pattern=Modèle
 paste=Coller
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Fichier créé ou modifié dans draw.io pro. Vous allez être redirigé maintenant.
 realtimeTimeout=Des modifications hors ligne ont été effectuées. Ces modifications ne peuvent être enregistrées.
 redo=Refaire
+ref=Ref
 refresh=Rafraichir
 regularExpression=Regular Expression
 rememberMe=Se souvenir de moi
@@ -527,6 +536,7 @@ renaming=Renommage
 replace=Replace
 replaceIt={1} existe déjà. Voulez-vous le remplacer?
 replaceExistingDrawing=Remplacer le diagramme existant
+repository=Repository
 required=obligatoire
 reset=Réinitialiser
 resetView=Réinitialiser la vue
@@ -640,6 +650,7 @@ untitledDiagram=Diagramme sans nom
 untitledLayer=Untitled Layer
 untitledLibrary=Librairie sans nom
 unknownError=Erreur inconnue
+updateFile=Update {1}
 updatingDocument=Mise à jour du document. Veuillez patienter...
 updatingPreview=Mise à jour de l'aperçu. Veuillez patienter...
 updatingSelection=Mise à jour de la sélection. Veuillez patienter...

+ 11 - 0
war/resources/dia_gu.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_he.txt

@@ -4,6 +4,7 @@ aboutDrawio=‫אודות Draw.io‬
 accessDenied=Access Denied
 actualSize=‫גודל אמיתי‬
 add=‫הוסף‬
+addedFile=Added {1}
 addImages=‫הוסף תמונות‬
 addImageUrl=‫הוסף קישור לתמונה‬
 addLayer=‫הוסף שכבה‬
@@ -76,6 +77,7 @@ cannotLoad=‫ניסיונות הטעינה נכשלו. אנא נסה שוב מ
 cannotLogin=‫ניסיונות ההתחברות נכשלו. אנא נסה שוב מאוחר יותר.‬
 cannotOpenFile=‫לא ניתן לפתוח את הקובץ‬
 change=‫שנה‬
+changes=Changes
 changeOrientation=‫שנה אוריינטציה‬
 changeUser=‫שנה משתמש‬
 changesNotSaved=‫השינויים לא נשמרו‬
@@ -233,10 +235,13 @@ feedback=‫משוב‬
 feedbackSent=‫המשוב נשלח בהצלחה.‬
 floorplans=Floorplans
 file=‫קובץ‬
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=‫שם קובץ‬
 fileExists=‫הקובץ כבר קיים‬
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=‫הקובץ לא נמצא‬
+folderNotFound=Folder not found
 fileNotFoundOrDenied=‫הקובץ לא נמצא. ייתכן שהוא לא קיים או שאין לך הרשאת קריאה.‬
 fileNotLoaded=‫הקובץ לא נטען‬
 fileNotSaved=‫הקובץ לא נשמר‬
@@ -260,6 +265,7 @@ flip=‫הפוך‬
 flipH=‫הפוך אופקית‬
 flipV=‫הפוך אנכית‬
 flowchart=Flowchart
+folder=Folder
 font=‫גופן‬
 fontColor=‫צבע גופן‬
 fontFamily=‫משפחת גופן‬
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=‫הפורמטים הנתמכים הם קבצים מהתוכנה הזאת (.xml), קבצי   .vsdx gliffy.‬
 options=‫אפשרויות‬
 organic=‫אורגני‬
+organisation=Organisation
 orthogonal=‫ניצב ‬
 otherViewer=‫צופה אחר‬
 otherViewers=‫צופים אחרים‬
@@ -467,6 +474,7 @@ pageSetup=‫הגדרת עמוד‬
 pageScale=‫קנה מידת העמוד‬
 pan=‫צידוד‬
 panTooltip=‫מקש ארוך + גרירה כדי לצדד‬
+path=Path
 paperSize=‫גודל הנייר‬
 pattern=‫דפוס‬
 paste=‫הדבק‬
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=‫הקובץ הזה נוצר או שונה באמצעות draw.io pro. אתה תנותב עכשיו.‬
 realtimeTimeout=‫נראה שביצעת מספר שינויים במצב לא מקוון. אנחנו מצטערים, לא ניתן לשמור שינויים אלו.‬
 redo=‫בצע שוב‬
+ref=Ref
 refresh=‫רענן‬
 regularExpression=Regular Expression
 rememberMe=‫זכור אותי‬
@@ -527,6 +536,7 @@ renaming=‫משנה שם‬
 replace=Replace
 replaceIt=‫{1} כבר קיים. האם ברצונך להחליף אותו? ‬
 replaceExistingDrawing=‫החלף סקיצה קיימת‬
+repository=Repository
 required=‫נדרש‬
 reset=‫אפס ‬
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=‫דיאגרמה ללא שם‬
 untitledLayer=Untitled Layer
 untitledLibrary=‫ספרייה ללא שם‬
 unknownError=‫שגיאה לא מוכרת‬
+updateFile=Update {1}
 updatingDocument=‫מעדכן מסמך. אנא המתן...‬
 updatingPreview=‫מעדכן תצוגה מקדימה. אנא המתן...‬
 updatingSelection=‫מעדכן בחירה. אנא המתן...‬

+ 11 - 0
war/resources/dia_hi.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_hr.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_hu.txt

@@ -4,6 +4,7 @@ aboutDrawio=Draw.io névjegy
 accessDenied=Access Denied
 actualSize=Aktuális méret
 add=Hozzáad
+addedFile=Added {1}
 addImages=Képet hozzáad
 addImageUrl=Kép URL hozzáadás
 addLayer=Réteget hozzáad
@@ -76,6 +77,7 @@ cannotLoad=A betöltési próbálkozások sikertelenek. Kérjük próbálja ism
 cannotLogin=A bejelentkezési próbálkozások sikertelenek. Kérjük próbálja ismét később...
 cannotOpenFile=Fájl nem nyitható
 change=Változtat
+changes=Changes
 changeOrientation=Irányultságváltoztatás
 changeUser=Felhasználó váltás
 changesNotSaved=A változtatások nincsenek mentve
@@ -233,10 +235,13 @@ feedback=Visszajelzés
 feedbackSent=Visszajelzés sikeresen elküldve.
 floorplans=Floorplans
 file=Fájl
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Fájlnév
 fileExists=Létező fájl
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Fájl nem található
+folderNotFound=Folder not found
 fileNotFoundOrDenied=A fájl nem található. Nem létezik, vagy nincs olvasási hozzáférése.
 fileNotLoaded=Fájl nincs betöltve
 fileNotSaved=Fájl nincs mentve
@@ -260,6 +265,7 @@ flip=Tükröz
 flipH=Vízszintesen tükröz
 flipV=Merőlegesen tükröz
 flowchart=Flowchart
+folder=Folder
 font=Betűtípus
 fontColor=Betűkészlet szín
 fontFamily=Betűcsalád
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=A támogatott formátum .XML fájlok ebből a programból mentve
 options=Beállítások
 organic=Szerves
+organisation=Organisation
 orthogonal=Merőleges
 otherViewer=másik néző
 otherViewers=másik néző
@@ -467,6 +474,7 @@ pageSetup=Oldal beállítás
 pageScale=Oldal méretarány
 pan=Pan
 panTooltip=Gördítéshez jobb klikk és húz
+path=Path
 paperSize=Oldalméret
 pattern=Minta
 paste=Beilleszt
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Ez a fájl a draw.io pro-ban lett készítve vagy módosítva. Azonnal át lesz irányítva.
 realtimeTimeout=Úgy látszik néhány változást csinált miközben le volt kapcsolva. Sajnáljuk, ezek a változtatások nem menthetők.
 redo=Helyrehoz
+ref=Ref
 refresh=Frissít
 regularExpression=Regular Expression
 rememberMe=Emlékezz rám
@@ -527,6 +536,7 @@ renaming=Átnevezés
 replace=Replace
 replaceIt={1} már létezik. Helyettesíti?
 replaceExistingDrawing=Helyettesiti a meglévő rajzot
+repository=Repository
 required=szükséges
 reset=Újrakezd
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Megnevezetlen diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Megnevezetlen könyvtár
 unknownError=Ismeretlen hiba
+updateFile=Update {1}
 updatingDocument=Dokumentum frissítése. Kérem várjon...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Kiválasztás frissítése. Kérem várjon...

+ 11 - 0
war/resources/dia_i18n.txt

@@ -4,6 +4,7 @@ aboutDrawio=aboutDrawio
 accessDenied=accessDenied
 actualSize=actualSize
 add=add
+addedFile=addedFile
 addImages=addImages
 addImageUrl=addImageUrl
 addLayer=addLayer
@@ -76,6 +77,7 @@ cannotLoad=cannotLoad
 cannotLogin=cannotLogin
 cannotOpenFile=cannotOpenFile
 change=change
+changes=changes
 changeOrientation=changeOrientation
 changeUser=changeUser
 changesNotSaved=changesNotSaved
@@ -233,10 +235,13 @@ feedback=feedback
 feedbackSent=feedbackSent
 floorplans=floorplans
 file=file
+fileChangedOverwrite=fileChangedOverwrite
+overwrite=overwrite
 filename=filename
 fileExists=fileExists
 fileNearlyFullSeeFaq=fileNearlyFullSeeFaq
 fileNotFound=fileNotFound
+folderNotFound=folderNotFound
 fileNotFoundOrDenied=fileNotFoundOrDenied
 fileNotLoaded=fileNotLoaded
 fileNotSaved=fileNotSaved
@@ -260,6 +265,7 @@ flip=flip
 flipH=flipH
 flipV=flipV
 flowchart=flowchart
+folder=folder
 font=font
 fontColor=fontColor
 fontFamily=fontFamily
@@ -454,6 +460,7 @@ openRecent=openRecent
 openSupported=openSupported
 options=options
 organic=organic
+organisation=organisation
 orthogonal=orthogonal
 otherViewer=otherViewer
 otherViewers=otherViewers
@@ -467,6 +474,7 @@ pageSetup=pageSetup
 pageScale=pageScale
 pan=pan
 panTooltip=panTooltip
+path=path
 paperSize=paperSize
 pattern=pattern
 paste=paste
@@ -512,6 +520,7 @@ recentlyViewed=recentlyViewed
 redirectToNewApp=redirectToNewApp
 realtimeTimeout=realtimeTimeout
 redo=redo
+ref=ref
 refresh=refresh
 regularExpression=regularExpression
 rememberMe=rememberMe
@@ -527,6 +536,7 @@ renaming=renaming
 replace=replace
 replaceIt=replaceIt
 replaceExistingDrawing=replaceExistingDrawing
+repository=repository
 required=required
 reset=reset
 resetView=resetView
@@ -640,6 +650,7 @@ untitledDiagram=untitledDiagram
 untitledLayer=untitledLayer
 untitledLibrary=untitledLibrary
 unknownError=unknownError
+updateFile=updateFile
 updatingDocument=updatingDocument
 updatingPreview=updatingPreview
 updatingSelection=updatingSelection

+ 11 - 0
war/resources/dia_id.txt

@@ -4,6 +4,7 @@ aboutDrawio=Tentang draw.io
 accessDenied=Access Denied
 actualSize=Ukuran Aktual
 add=Tambah
+addedFile=Added {1}
 addImages=Tambah gambar
 addImageUrl=Tambah URL gambar
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Percobaan load tidak berhasil. Silahkan coba lagi beberapa saat
 cannotLogin=Percobaan login tidak berhasil. Silahkan coba lagi beberapa saat
 cannotOpenFile=Tidak bisa membuka file
 change=Rubah
+changes=Changes
 changeOrientation=Rubah orientasi
 changeUser=Ganti user
 changesNotSaved=Perubahan belum tersimpan
@@ -233,10 +235,13 @@ feedback=Saran
 feedbackSent=Feedback telah terkirim
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nama file
 fileExists=File sudah ada
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File tidak ditemukan
+folderNotFound=Folder not found
 fileNotFoundOrDenied=File tidak diketemukan. File tidak ada atau tidak memliki akses
 fileNotLoaded=File tidak dimuat
 fileNotSaved=File tidak disimpan
@@ -260,6 +265,7 @@ flip=Balik
 flipH=Balik Horisontal
 flipV=Balik Vertikal
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Warna font
 fontFamily=Kumpulan font
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Format didukung adalah file .XML yang disimpan dari software ini
 options=Opsi
 organic=Organik
+organisation=Organisation
 orthogonal=Ortogonal
 otherViewer=Pengunjung lain
 otherViewers=Pengunjung-pengunjung lain
@@ -467,6 +474,7 @@ pageSetup=Pengaturan Halaman
 pageScale=Skala Halaman
 pan=Pan
 panTooltip=spasi + tarik untuk menggerakkan
+path=Path
 paperSize=Ukuran Kertas
 pattern=Pola
 paste=Sisip
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=File ini dibuat atau diubah oleh draw.io pro. Anda akan diarahkan sekarang 
 realtimeTimeout=Sepertinya Anda telah membuat beberapa perubahan selagi offline. Kami minta maaf, perubahan ini tidak dapat disimpan.
 redo=Ulangi
+ref=Ref
 refresh=refresh
 regularExpression=Regular Expression
 rememberMe=Mengingat saya
@@ -527,6 +536,7 @@ renaming=Menamakan kembali
 replace=Replace
 replaceIt={1} sudah ada. Anda ingin menimpanya?
 replaceExistingDrawing=Hapus gambar yang ada
+repository=Repository
 required=Diperlukan
 reset=Setel Ulang
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Librari
 unknownError=error tidak diketahui
+updateFile=Update {1}
 updatingDocument=Memperbarui Dokumen. Silakan tunggu...
 updatingPreview=Memperbarui Tinjauan. Harap tunggu
 updatingSelection=Memperbarui Pilihan. Silakan tunggu...

+ 11 - 0
war/resources/dia_it.txt

@@ -4,6 +4,7 @@ aboutDrawio=Informazioni su draw.io
 accessDenied=Access Denied
 actualSize=Dimensioni attuali
 add=Aggiungi
+addedFile=Added {1}
 addImages=Aggiungi immagini
 addImageUrl=Aggiungi immagine da URL
 addLayer=Aggiungi layer
@@ -76,6 +77,7 @@ cannotLoad=Tentativo di caricamento non riuscito. Per favore, riprova più tardi
 cannotLogin=Tentativo di login non riuscito. Per favore, riprova più tardi
 cannotOpenFile=Impossibile aprire il file
 change=Cambia  
+changes=Changes
 changeOrientation=Cambia orientamento
 changeUser=Cambia utente
 changesNotSaved=Le modifiche non sono state salvate
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback inviato con successo
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nome del file
 fileExists=Il file esiste già
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File non trovato
+folderNotFound=Folder not found
 fileNotFoundOrDenied=File non trovato. Non esiste o non hai accesso alla lettura
 fileNotLoaded=File non caricato
 fileNotSaved=File non salvato
@@ -260,6 +265,7 @@ flip=Capovolgi
 flipH=Capovolgi orizzontalmente
 flipV=Capovolgi verticalmente
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Colore font
 fontFamily=Famiglia font
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=I formati supportati sono i file .xml, .vsdx e .gliffy
 options=Opzioni
 organic=Organico
+organisation=Organisation
 orthogonal=Ortogonale
 otherViewer=altro visitatore
 otherViewers=altri visitatori
@@ -467,6 +474,7 @@ pageSetup=Impostazioni della pagina
 pageScale=Misura della pagina
 pan=Pan
 panTooltip=Barra spazio e sposta per visione panoramica
+path=Path
 paperSize=Dimensione della carta
 pattern=Modello
 paste=Incolla
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Questo file è stato creato o modificato in draw.io pro. Sarai reindirizzato ora.
 realtimeTimeout=Sembra che tu abbia fatto alcune modifiche mentre eri offline. Purtroppo queste modifiche non possono essere salvate.
 redo=Ripeti
+ref=Ref
 refresh=Aggiorna
 regularExpression=Regular Expression
 rememberMe=Ricordati di me
@@ -527,6 +536,7 @@ renaming=Rinomina in corso
 replace=Replace
 replaceIt={1} esiste già. Vuoi sostituirlo?
 replaceExistingDrawing=Sostituisci il disegno esistente
+repository=Repository
 required=richiesto
 reset=Resetta
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Diagramma non titolato
 untitledLayer=Untitled Layer
 untitledLibrary=Libreria non titolata
 unknownError=Errore sconosciuto
+updateFile=Update {1}
 updatingDocument=Aggiornamento del documento in corso. Ti preghiamo di attendere...
 updatingPreview=Aggiornamento dell'anteprima in corso. Ti preghiamo di attendere...
 updatingSelection=Aggiornamento della selezione in corso. Ti preghiamo di attendere...

+ 11 - 0
war/resources/dia_ja.txt

@@ -4,6 +4,7 @@ aboutDrawio=draw.ioについて
 accessDenied=アクセス拒否
 actualSize=実寸
 add=追加
+addedFile=Added {1}
 addImages=画像を追加
 addImageUrl=画像のURLを追加
 addLayer=レイヤーを追加
@@ -76,6 +77,7 @@ cannotLoad=ロードは失敗しました。しばらく後に再試行してく
 cannotLogin=ログインは失敗しました。しばらく後に再試行してください。
 cannotOpenFile=ファイルを開けません
 change=変更
+changes=Changes
 changeOrientation=向きを変更
 changeUser=ユーザーを変更
 changesNotSaved=変更は保存されませんでした。
@@ -233,10 +235,13 @@ feedback=フィードバック
 feedbackSent=フィードバックは正しく送信されました。
 floorplans=Floorplans
 file=ファイル
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=ファイル名
 fileExists=ファイルはすでに存在します。
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=ファイルが見つかりません
+folderNotFound=Folder not found
 fileNotFoundOrDenied=ファイルが見つかりません。存在しないかアクセス権限がありません。
 fileNotLoaded=ファイルが読み込まれません
 fileNotSaved=ファイルが保存されていません
@@ -260,6 +265,7 @@ flip=反転
 flipH=水平方向に反転
 flipV=縦方向に反転
 flowchart=フローチャート
+folder=Folder
 font=フォント
 fontColor=フォントの色
 fontFamily=フォント
@@ -454,6 +460,7 @@ openRecent=最近開いたドキュメント
 openSupported=このソフトを使って保存された.XMLフォーマットのファイルのみ開くことが出来ます。
 options=オプション
 organic=オーガニック
+organisation=Organisation
 orthogonal=直角
 otherViewer=他の閲覧者
 otherViewers=他の閲覧者
@@ -467,6 +474,7 @@ pageSetup=ページ設定
 pageScale=ページスケール
 pan=画面移動
 panTooltip=スペースキー+ドラッグでパン
+path=Path
 paperSize=用紙サイズ
 pattern=パターン
 paste=ペースト
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=このファイルはdraw.io Proで作成されました。リダイレクトします。
 realtimeTimeout=オフライン時にいくつかの修正があったようですが、それらは保存されません。申し訳ございません。
 redo=やり直し
+ref=Ref
 refresh=リフレッシュ
 regularExpression=Regular Expression
 rememberMe=保存する
@@ -527,6 +536,7 @@ renaming=名前変更中
 replace=置き換え
 replaceIt={1}はすでに存在します。上書きしますか?
 replaceExistingDrawing=既存の図を上書き
+repository=Repository
 required=必須
 reset=リセット
 resetView=ビューをリセット
@@ -640,6 +650,7 @@ untitledDiagram=名称未設定ダイアグラム
 untitledLayer=名称未設定レイヤ
 untitledLibrary=名称未設定ライブラリ
 unknownError=不明のエラー
+updateFile=Update {1}
 updatingDocument=更新中です。しばらくお待ちください...
 updatingPreview=プレビューを更新中です。お待ち下さい
 updatingSelection=選択を更新中です。しばらくお待ちください...

+ 11 - 0
war/resources/dia_kn.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_ko.txt

@@ -4,6 +4,7 @@ aboutDrawio=draw.io 정보
 accessDenied=Access Denied
 actualSize=실제 크기
 add=추가
+addedFile=Added {1}
 addImages=이미지 추가
 addImageUrl=이미지 URL 추가
 addLayer=레이어 추가
@@ -76,6 +77,7 @@ cannotLoad=불러오기 실패. 나중에 다시 시도하십시오.
 cannotLogin=로그인 실패. 나중에 다시 시도하십시오.
 cannotOpenFile=파일을 열 수 없습니다
 change=변경
+changes=Changes
 changeOrientation=방향 변경
 changeUser=사용자 변경
 changesNotSaved=변경내용이 저장되지 않았습니다
@@ -233,10 +235,13 @@ feedback=의견
 feedbackSent=의견 보내기 성공.
 floorplans=Floorplans
 file=파일
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=파일 이름
 fileExists=파일이 이미 존재합니다
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=파일을 찾을 수 없습니다
+folderNotFound=Folder not found
 fileNotFoundOrDenied=파일을 찾지 못했습니다. 파일이 존재하지 않거나 읽기 권한이 없습니다.
 fileNotLoaded=파일 불러오기 안됨
 fileNotSaved=파일 저장 안됨
@@ -260,6 +265,7 @@ flip=뒤집기
 flipH=가로로 뒤집기
 flipV=세로로 뒤집기
 flowchart=Flowchart
+folder=Folder
 font=글꼴
 fontColor=글꼴 색
 fontFamily=글꼴 집합
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=본 프로그램 저장 파일 (.xml) 및 .vsdx, .gliffy 파일 형식을 지원합니다.
 options=옵션
 organic=유기적 객체
+organisation=Organisation
 orthogonal=직각
 otherViewer=다른 뷰어
 otherViewers=다른 뷰어
@@ -467,6 +474,7 @@ pageSetup=페이지 설정
 pageScale=페이지 크기
 pan=화면 이동
 panTooltip=Space + 드래그하여 화면 이동
+path=Path
 paperSize=용지 크기
 pattern=패턴
 paste=붙여넣기
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=이 파일은 draw.io pro에서 생성 또는 수정되었습니다. 지금 페이지를 이동합니다.
 realtimeTimeout=일부 변경내용이 오프라인 상태에서 입력되었습니다. 변경내용을 저장할 수 없습니다.
 redo=다시 실행
+ref=Ref
 refresh=새로 고침
 regularExpression=Regular Expression
 rememberMe=로그인 기억하기
@@ -527,6 +536,7 @@ renaming=이름 변경중
 replace=Replace
 replaceIt={1} 이미 존재함. 교체하시겠습니까?
 replaceExistingDrawing=기존 그림 교체
+repository=Repository
 required=필요
 reset=재설정
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=제목 없는 다이어그램
 untitledLayer=Untitled Layer
 untitledLibrary=제목 없는 라이브러리
 unknownError=알 수 없는 오류
+updateFile=Update {1}
 updatingDocument=문서 업데이트중. 잠시 기다려주십시오…
 updatingPreview=미리보기 업데이트중. 잠시 기다려주십시오…
 updatingSelection=선택내용 업데이트중. 잠시 기다려주십시오…

+ 11 - 0
war/resources/dia_lt.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_lv.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_ml.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_mr.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_ms.txt

@@ -4,6 +4,7 @@ aboutDrawio=Mengenai draw.io
 accessDenied=Access Denied
 actualSize=Saiz sebenar
 add=Tambah
+addedFile=Added {1}
 addImages=Tambah imej-imej
 addImageUrl=Tambah URL imej
 addLayer=Tambah lapisan
@@ -76,6 +77,7 @@ cannotLoad=Percubaan muatan gagal. Sila cuba sebentar lagi.
 cannotLogin=Percubaan daftar masuk gagal. Sila cuba sebentar lagi.
 cannotOpenFile=Tidak dapat membuka fail
 change=Tukar
+changes=Changes
 changeOrientation=Tukar orientasi
 changeUser=Tukar pengguna
 changesNotSaved=Perubahan belum disimpan
@@ -233,10 +235,13 @@ feedback=Maklum balas
 feedbackSent=Maklum balas telah berjaya dihantar.
 floorplans=Floorplans
 file=Fail
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nama fail
 fileExists=Fail telah wujud
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Fail tidak dapat dicari
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Fail ini tidak dapat dicari. Ia tidak wujud atau anda tiada akses pembacaan.
 fileNotLoaded=Fail tidak dimuatkan
 fileNotSaved=Fail tidak disimpan
@@ -260,6 +265,7 @@ flip=Membalikkan
 flipH=Membalikkan secara melintang
 flipV=Membalikkan secara menegak
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Warna font
 fontFamily=Keluarga font
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Format yang disokong adalah fail yang disimpan dari perisian ini(.xml), .vsdx dan .gliffy
 options=Opsyen
 organic=Organik
+organisation=Organisation
 orthogonal=Ortogon
 otherViewer=penonton lain
 otherViewers=Penonton-penonton lain
@@ -467,6 +474,7 @@ pageSetup=Persediaan muka surat
 pageScale=Skala muka surat
 pan=Gerakkan
 panTooltip=Jarak+Heret untuk menggerakkan objek
+path=Path
 paperSize=Saiz kertas
 pattern=Corak
 paste=Tampal
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Fail ini telah dicipta atau diubahsuai dalam draw.io pro. Anda akan diarahkan semula sekarang.
 realtimeTimeout=Ia kelihatan anda mempunyai perubahan semasa di luar talian. Kami meminta maaf bahawa perubahan ini tidak dapat disimpan.
 redo=Buat semula
+ref=Ref
 refresh=Segarkan semula
 regularExpression=Regular Expression
 rememberMe=Ingat aku
@@ -527,6 +536,7 @@ renaming=Sedang menamakan semula
 replace=Replace
 replaceIt={1} telah wujud. Adakah anda ingin menggantikannya?
 replaceExistingDrawing=Mengganti lukisan yang sedia ada
+repository=Repository
 required=Diperlukan
 reset=Menetapkan semula
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Gambarajah tanpa tajuk
 untitledLayer=Untitled Layer
 untitledLibrary=Perpustakaan tanpa tajuk
 unknownError=Ralat yang tidak diketahui
+updateFile=Update {1}
 updatingDocument=Sedang Kemaskini Dokumen. Sila tunggu...
 updatingPreview=Sedang Kemaskini Pratonton. Sila tunggu...
 updatingSelection=Sedang memuat naik pilihan. Sila tunggu...

+ 11 - 0
war/resources/dia_nl.txt

@@ -4,6 +4,7 @@ aboutDrawio=Over draw.io
 accessDenied=Toegang geweigerd
 actualSize=Oorspronkelijke grootte
 add=Toevoegen
+addedFile=Added {1}
 addImages=Afbeeldingen toevoegen
 addImageUrl=URL afbeelding toevoegen
 addLayer=Laag toevoegen
@@ -76,6 +77,7 @@ cannotLoad=Laadpogingen mislukt. Probeer het later nogmaals.
 cannotLogin=Inlogpogingen mislukt. Probeer het later nogmaals.
 cannotOpenFile=Kan bestand niet openen
 change=Wijzigen
+changes=Changes
 changeOrientation=Oriëntatie wijzigen
 changeUser=Van gebruiker wisselen
 changesNotSaved=Wijzigingen zijn niet opgeslagen
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback succesvol verstuurd.
 floorplans=Plattegronden
 file=Bestand
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Bestandsnaam
 fileExists=Bestand bestaat al
 fileNearlyFullSeeFaq=Bestand bijna vol, bekijk de FAQ
 fileNotFound=Bestand niet gevonden
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Het bestand was niet gevonden. Het bestaat niet of u heeft geen leesrechten.
 fileNotLoaded=Bestand niet geladen
 fileNotSaved=Bestand niet opgeslagen
@@ -260,6 +265,7 @@ flip=Spiegelen
 flipH=Horizontaal spiegelen
 flipV=Verticaal spiegelen
 flowchart=Stroomschema
+folder=Folder
 font=Lettertype
 fontColor=Tekstkleur
 fontFamily=Lettertype
@@ -454,6 +460,7 @@ openRecent=Recent openen
 openSupported=Ondersteunde formaten zijn bestanden opgeslagen uit deze software (,xml), .vsdx en .gliffy
 options=Opties
 organic=Organisch
+organisation=Organisation
 orthogonal=Orthogonaal
 otherViewer=andere bekijker
 otherViewers=andere bekijkers
@@ -467,6 +474,7 @@ pageSetup=Pagina instellen
 pageScale=Pagina schalen
 pan=Verschuiven
 panTooltip=Spatie+slepen om te verschuiven
+path=Path
 paperSize=Papiergrootte
 pattern=Patroon
 paste=Plakken
@@ -512,6 +520,7 @@ recentlyViewed=Recent bekeken
 redirectToNewApp=Dit bestand is aangemaakt of aangepast in een nieuwere versie van deze app. U wordt nu doorgestuurd.
 realtimeTimeout=Het lijkt erop dat u enkele wijzigingen hebt gedaan terwijl u offline was. Het spijt ons, maar deze wijzigingen kunnen niet worden opgeslagen.
 redo=Opnieuw doen
+ref=Ref
 refresh=Herladen
 regularExpression=Reguliere expressie
 rememberMe=Onthoud mij
@@ -527,6 +536,7 @@ renaming=Bezig met hernoemen
 replace=Vervangen
 replaceIt={1} bestaat al. Wilt u het vervangen?
 replaceExistingDrawing=Bestaande tekening vervangen
+repository=Repository
 required=vereist
 reset=Resetten
 resetView=Weergave resetten
@@ -640,6 +650,7 @@ untitledDiagram=Diagram zonder titel
 untitledLayer=Laag zonder titel
 untitledLibrary=Bibliotheek zonder titel
 unknownError=Onbekende fout
+updateFile=Update {1}
 updatingDocument=Document wordt bijgewerkt. Even wachten...
 updatingPreview=Voorbeeld wordt bijgewerkt. Even wachten...
 updatingSelection=Selectie wordt bijgewerkt. Even wachten...

+ 11 - 0
war/resources/dia_no.txt

@@ -4,6 +4,7 @@ aboutDrawio=Om draw.io
 accessDenied=Access Denied
 actualSize=Faktisk størrelse
 add=Legg til
+addedFile=Added {1}
 addImages=Legg til bilder
 addImageUrl=Legg til bilde-URL
 addLayer=Legg til lag
@@ -76,6 +77,7 @@ cannotLoad=Innlasting feilet. Vennligst prøv igjen senere.
 cannotLogin=Innlogging feilet. Vennligst prøv igjen senere.
 cannotOpenFile=Kan ikke åpne fil
 change=Endre
+changes=Changes
 changeOrientation=Endre retning
 changeUser=Endre bruker
 changesNotSaved=Endringer er ikke lagret
@@ -233,10 +235,13 @@ feedback=Tilbakemelding
 feedbackSent=Tilbakemelding sendt.
 floorplans=Plantegninger
 file=Fil
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filnavn
 fileExists=Filen finnes fra før
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Filen ble ikke funnet
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Filen ble ikke funnet. Enten eksisterer den ikke, eller du har ikke leserrettigheter.
 fileNotLoaded=Filen ble ikke lastet inn
 fileNotSaved=Filen ble ikke lagret
@@ -260,6 +265,7 @@ flip=Vend
 flipH=Vend horisontalt
 flipV=Vend vertikalt
 flowchart=Flytdiagram
+folder=Folder
 font=Skrifttype
 fontColor=Skriftfarge
 fontFamily=Skriftfamilie
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Støttede formater er filer lagret med denne programvaren (.xml), .vsdx og .gliffy
 options=Alternativer
 organic=Organisk
+organisation=Organisation
 orthogonal=Ortogonale
 otherViewer=annen leser
 otherViewers=andre lesere
@@ -467,6 +474,7 @@ pageSetup=Sideoppsett
 pageScale=Sideskalering
 pan=Panorer
 panTooltip=Mellomtast + dra for å panorere
+path=Path
 paperSize=Papirstørrelse
 pattern=Mønster
 paste=Lim inn
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Denne filen ble opprettet eller endret i draw.io pro. Du blir nå omdirigert dit.
 realtimeTimeout=Det ser ut til at du har foretatt endringer mens du var offline. Vi beklager, men disse endringene kan ikke lagres.
 redo=Gjør om
+ref=Ref
 refresh=Oppdater
 regularExpression=Regular Expression
 rememberMe=Husk meg
@@ -527,6 +536,7 @@ renaming=Endrer navn
 replace=Replace
 replaceIt={1} finnes fra før. Vil du erstatte den?
 replaceExistingDrawing=Erstatt eksisterende tegning
+repository=Repository
 required=påkrevd
 reset=Tilbakestill
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Diagram uten navn
 untitledLayer=Untitled Layer
 untitledLibrary=Bibliotek uten navn
 unknownError=Ukjent feil
+updateFile=Update {1}
 updatingDocument=Oppdaterer dokument. Vennligst vent...
 updatingPreview=Oppdaterer forhåndsvisning. Vennligst vent...
 updatingSelection=Oppdaterer utvalg. Vennligst vent...

+ 11 - 0
war/resources/dia_pl.txt

@@ -4,6 +4,7 @@ aboutDrawio=O aplikacji draw.io
 accessDenied=Brak dostępu
 actualSize=Rozmiar rzeczywisty
 add=Dodaj
+addedFile=Added {1}
 addImages=Dodaj obrazy
 addImageUrl=Dodaj adres URL obrazu
 addLayer=Dodaj warstwę
@@ -76,6 +77,7 @@ cannotLoad=Próba załadowania zakończona niepowodzeniem. Spróbuj później.
 cannotLogin=Próba logowania zakończona niepowodzeniem. Spróbuj później.
 cannotOpenFile=Nie mogę otworzyć pliku
 change=Zmień
+changes=Changes
 changeOrientation=Zmień orientację
 changeUser=Zmień użytkownika
 changesNotSaved=Zmiany nie zostały zapisanie
@@ -233,10 +235,13 @@ feedback=Opinia zwrotna
 feedbackSent=Przesyłanie opinii zwrotnej zakończone powodzeniem.
 floorplans=Rzuty pomieszczeń
 file=Plik
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nazwa pliku
 fileExists=Plik już istnieje
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Plik nie został odnaleziony
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Plik nie został odnaleziony. Plik nie istnieje lub nie posiadasz prawa dostępu do jego odczytu.
 fileNotLoaded=Plik nie załadowany
 fileNotSaved=Plik nie zapisany
@@ -260,6 +265,7 @@ flip=Odbij
 flipH=Odbij poziomo
 flipV=Odbij pionowo
 flowchart=Schemat blokowy
+folder=Folder
 font=Czcionka
 fontColor=Kolor czcionki
 fontFamily=Rodzaj czcionki
@@ -454,6 +460,7 @@ openRecent=Otwórz ostatnie
 openSupported=Wspierane są pliki utworzone w tym programie (.xml), .vsdx oraz .gliffy
 options=Opcje
 organic=Organiczny
+organisation=Organisation
 orthogonal=Prostopadły
 otherViewer=inny użytkownik
 otherViewers=inni użytkownicy
@@ -467,6 +474,7 @@ pageSetup=Ustawienia strony
 pageScale=Skalowanie strony
 pan=Panorama
 panTooltip=Spacja+przeciągnij do panoramy
+path=Path
 paperSize=Rozmiar papieru
 pattern=Wzór
 paste=Wklej
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Ten plik został utworzony w programie draw.io pro. Teraz nastąpi przekierowanie.
 realtimeTimeout=Wygląda na to, że dokonał-eś/aś kilku zmian w trybie offline. Bardzo nam przykro, ale te zmiany nie mogą zostać zapisane.
 redo=Powtórz
+ref=Ref
 refresh=Odśwież
 regularExpression=Regular Expression
 rememberMe=Zapamiętaj mnie 
@@ -527,6 +536,7 @@ renaming=Zmienianie nazwy
 replace=Zamień
 replaceIt={1} już istnieje. Chcesz go zastąpić?
 replaceExistingDrawing=Zastąp istniejący rysunek
+repository=Repository
 required=wymagany
 reset=Resetuj
 resetView=Resetuj widok
@@ -640,6 +650,7 @@ untitledDiagram=Diagram bez tytułu
 untitledLayer=Warstwa bez nazwy
 untitledLibrary=Biblioteka bez tytułu
 unknownError=Nieznany błąd
+updateFile=Update {1}
 updatingDocument=Aktualizowanie dokumentu. Proszę czekać...
 updatingPreview=Aktualizowanie podglądu. Proszę czekać...
 updatingSelection=Aktualizowanie wyboru. Proszę czekać...

+ 11 - 0
war/resources/dia_pt-br.txt

@@ -4,6 +4,7 @@ aboutDrawio=Sobre draw.io
 accessDenied=Acesso Negado
 actualSize=Tamanho real 
 add=Adicionar
+addedFile=Added {1}
 addImages=Adicionar imagens
 addImageUrl=Adicionar URL da imagem
 addLayer=Adicionar camada
@@ -76,6 +77,7 @@ cannotLoad=Falha em tentativa de carregamento. Por favor, tente novamente.
 cannotLogin=Falha em tentativa de login. Por favor, tente novamente.
 cannotOpenFile=Não é possível abrir arquivo
 change=Modificar
+changes=Changes
 changeOrientation=Modificar orientação
 changeUser=Modificar usuário
 changesNotSaved=Modificações não foram salvas
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback enviado com sucesso.
 floorplans=Floorplans
 file=Arquivo 
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nome do arquivo
 fileExists=Arquivo já existente
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Arquivo não encontrado
+folderNotFound=Folder not found
 fileNotFoundOrDenied=O arquivo não foi encontrado. Ele não existe ou você não tem acesso à leitura. 
 fileNotLoaded=Arquivo não carregado
 fileNotSaved=Arquivo não salvo
@@ -260,6 +265,7 @@ flip=Virar
 flipH=Virar horizontal
 flipV=Virar vertical
 flowchart=Flowchart
+folder=Folder
 font=Fonte
 fontColor=Cor da fonte 
 fontFamily=Família fonte
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Os formatos suportados são arquivos salvos deste software (.xml), .vsdx e .gliffy
 options=Opções
 organic=Orgânico
+organisation=Organisation
 orthogonal=Ortogonal
 otherViewer=outro usuário
 otherViewers=outros usuários
@@ -467,6 +474,7 @@ pageSetup=Configuração da Página
 pageScale=Escala da Página
 pan=Panorama
 panTooltip=Espaço+Arrastar para deslocar
+path=Path
 paperSize=Tamanho Papel 
 pattern=Padrão
 paste=Colar 
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Esse arquivo foi criado ou modificado em draw.io pro. Você será redirecionado agora.
 realtimeTimeout=Parece que você fez algumas mudanças enquanto estava offline. Infelizmente essas mudanças não podem ser salvas.
 redo=Refazer 
+ref=Ref
 refresh=Atualizar
 regularExpression=Regular Expression
 rememberMe=Lembre de mim
@@ -527,6 +536,7 @@ renaming=Renomeando
 replace=Substituir
 replaceIt={1} já existe. Você deseja substituí-lo? 
 replaceExistingDrawing=Substituir desenho já existente
+repository=Repository
 required=obrigatório
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Diagrama sem título
 untitledLayer=Camada sem título
 untitledLibrary=Biblioteca sem título
 unknownError=Erro desconhecido
+updateFile=Update {1}
 updatingDocument=Atualizando documento. Por favor, aguarde... 
 updatingPreview=Atualizando pré-visualização. Por favor, aguarde...
 updatingSelection=Atualizando seleção. Por favor, aguarde... 

+ 11 - 0
war/resources/dia_pt.txt

@@ -4,6 +4,7 @@ aboutDrawio=Sobre draw.io
 accessDenied=Access Denied
 actualSize=Tamanho real 
 add=Adicionar
+addedFile=Added {1}
 addImages=Adicionar imagens
 addImageUrl=Adicionar URL da imagem
 addLayer=Adicionar camada
@@ -76,6 +77,7 @@ cannotLoad=Ocorreu um erro ao tentar carregar. Por favor, tente novamente.
 cannotLogin=Ocorreu un erro ao iniciar sessão. Por favor, tente novamente.
 cannotOpenFile=Não é possível abrir o ficheiro
 change=Alterar
+changes=Changes
 changeOrientation=Alterar orientação
 changeUser=Alterar o usuário
 changesNotSaved=As alterações não foram guardadas
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback enviado com sucesso.
 floorplans=Floorplans
 file=Ficheiro
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nome do ficheiro
 fileExists=Ficheiro já existente
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Ficheiro não encontrado
+folderNotFound=Folder not found
 fileNotFoundOrDenied=O ficheiro não foi encontrado. Não existe ou não tem acesso à leitura. 
 fileNotLoaded=Ficheiro não carregado
 fileNotSaved=Ficheiro não guardado
@@ -260,6 +265,7 @@ flip=Inverter
 flipH=Inverter horizontalmente
 flipV=Inverter vertical
 flowchart=Flowchart
+folder=Folder
 font=Fonte
 fontColor=Cor da fonte 
 fontFamily=Família da fonte
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Os formatos suportados são os ficheiros guardados deste software (.xml), .vsdx e .gliffy
 options=Opções
 organic=Orgânico
+organisation=Organisation
 orthogonal=Ortogonal
 otherViewer=outro usuário
 otherViewers=outros usuários
@@ -467,6 +474,7 @@ pageSetup=Configuração da página
 pageScale=Escala da página
 pan=Panorama
 panTooltip=Espaço+Arrastar para deslocar 
+path=Path
 paperSize=Tamanho do papel 
 pattern=Padrão
 paste=Colar 
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Este ficheiro foi criado ou modificado em draw.io pro. Será redirecionado.
 realtimeTimeout=Parece que realizou algumas alterações enquanto estava desconetado. Lamentoamos, mas estas alterações não podem ser guardadas.
 redo=Refazer 
+ref=Ref
 refresh=Atualizar
 regularExpression=Regular Expression
 rememberMe=Lembre-se de mim
@@ -527,6 +536,7 @@ renaming=A renomear
 replace=Replace
 replaceIt={1} já existe. Deseja substituí-lo? 
 replaceExistingDrawing=Substituir desenho já existente
+repository=Repository
 required=obrigatório
 reset=Reiniciallizar
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Diagrama sem título
 untitledLayer=Untitled Layer
 untitledLibrary=Biblioteca sem título
 unknownError=Erro desconhecido
+updateFile=Update {1}
 updatingDocument=A atualizar o documento. Por favor, aguarde... 
 updatingPreview=A atualizar a pré-visualização. Por favor, aguarde...
 updatingSelection=A atualizar a seleção. Por favor, aguarde... 

+ 11 - 0
war/resources/dia_ro.txt

@@ -4,6 +4,7 @@ aboutDrawio=Despre draw.io
 accessDenied=Access Denied
 actualSize=Dimensiunea reală
 add=Adaugă
+addedFile=Added {1}
 addImages=Adaugă imagini
 addImageUrl=Adaugă imagine URL
 addLayer=Adaugă layer
@@ -76,6 +77,7 @@ cannotLoad=Încercarea de încărcare a eşuat. Te rugăm să încerci din nou m
 cannotLogin=Încercarea de logare a eşuat.Te rugăm să încerci mai târziu.
 cannotOpenFile=Fişierul nu se poate deschide
 change=Schimbă 
+changes=Changes
 changeOrientation=Schimbă orientarea
 changeUser=Schimbă utilizatorul
 changesNotSaved=Schimbările nu au fost salvate
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback trimis cu succes.
 floorplans=Floorplans
 file=Fișier
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Nume fișier
 fileExists=Fișierul există deja
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Fișierul nu a fost găsit
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Fișierul nu a fost găsit. Nu există sau nu ai permisiunea de a-l accesa.
 fileNotLoaded=Fișierul nu s-a încărcat
 fileNotSaved=Fișierul nu a fost salvat
@@ -260,6 +265,7 @@ flip=Rotire
 flipH=Rotire pe orizontală
 flipV=Rotire pe verticală
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Culoarea fontului
 fontFamily=Familia de fonturi
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Formatele suportate sunt fișiere salvate din acest software (.xml), .vsdx si .gliffy
 options=Opțiuni
 organic=Organic
+organisation=Organisation
 orthogonal=Ortogonal
 otherViewer=alt participant
 otherViewers=alţi participanţi
@@ -467,6 +474,7 @@ pageSetup=Reglaje pagină
 pageScale=Zoom pagină
 pan=Viziune panoramică
 panTooltip=Bara spaţiu+Trage pentru Viziune panoramică
+path=Path
 paperSize=Dimensiuni hârtie
 pattern=Model
 paste=Lipire
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Acest fişier a fost creat sau modificat cu draw.io pro. Acum vei fi redirecţionat.
 realtimeTimeout=Se pare că ai făcut nişte modificări în timp ce erai offline. Ne pare rău, aceste modificări nu pot fi salvate.
 redo=Refacere
+ref=Ref
 refresh=Reîncarcă
 regularExpression=Regular Expression
 rememberMe=Ţine-mă minte
@@ -527,6 +536,7 @@ renaming=Se redenumeşte
 replace=Replace
 replaceIt={1} există deja. Doreşti să îl înlocuieşti?
 replaceExistingDrawing=Înlocuire desen existent
+repository=Repository
 required=obligatoriu
 reset=Resetare
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Diagramă fără titlu
 untitledLayer=Untitled Layer
 untitledLibrary=Bibliotecă fără titlu
 unknownError=Eroare de origine necunoscută
+updateFile=Update {1}
 updatingDocument=Actualizare Document. Vă rugăm așteptați...
 updatingPreview=Actualizare Previzualizare.Vă rugăm așteptați...
 updatingSelection=Actualizare Selecție. Vă rugăm așteptați

+ 11 - 0
war/resources/dia_ru.txt

@@ -4,6 +4,7 @@ aboutDrawio=О программе draw.io
 accessDenied=Access Denied
 actualSize=Фактический размер
 add=Добавить
+addedFile=Added {1}
 addImages=Добавить картинку
 addImageUrl=Добавить ссылку на картинку
 addLayer=Добавить слой
@@ -76,6 +77,7 @@ cannotLoad=Загрузка не удалась. Пожалуйста, попр
 cannotLogin=Не удалось подключиться. Пожалуйста, попробуйте позже.
 cannotOpenFile=Не могу открыть файл
 change=Изменить
+changes=Changes
 changeOrientation=Изменить ориентацию
 changeUser=Сменить пользователя
 changesNotSaved=Изменения не сохранены
@@ -233,10 +235,13 @@ feedback=Обратная связь
 feedbackSent=Сообщение обратной связи успешно отправлено
 floorplans=Планы помещений
 file=Файл
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Имя файла
 fileExists=Файл уже существует
 fileNearlyFullSeeFaq=Файл почти заполнен. См. FAQ
 fileNotFound=Файл не найден
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Файл не найден. Он не существует или у вас нет прав на доступ для чтения
 fileNotLoaded=Файл не загружен
 fileNotSaved=Файл не сохранен
@@ -260,6 +265,7 @@ flip=Отразить
 flipH=Отразить слева направо
 flipV=Отразить сверху вниз
 flowchart=Схема процесса
+folder=Folder
 font=Шрифт
 fontColor=Цвет текста
 fontFamily=Семейство шрифтов
@@ -454,6 +460,7 @@ openRecent=Последние документы
 openSupported=Поддерживаемые форматы файлов: созданные в этой программе диаграммы (.xml), .vsdx, .gliffy
 options=Параметры
 organic=Радиальная диаграмма
+organisation=Organisation
 orthogonal=Ортогональная
 otherViewer=другой просматривающий
 otherViewers=другие просматривающие
@@ -467,6 +474,7 @@ pageSetup=Параметры страницы
 pageScale=Масштаб страницы
 pan=Панорама
 panTooltip=Удерживайте нажатой клавишу Пробел и перемещайте курсор для прокрутки диаграммы
+path=Path
 paperSize=Размер бумаги
 pattern=Шаблон
 paste=Вставить
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Файл был создан или изменен в более новой версии редактора. Выполняется перенаправление
 realtimeTimeout=Похоже, вы внесли некоторые правки, пока находились не в сети. Приносим свои извинения, эти изменения не могут быть сохранены.
 redo=Вернуть
+ref=Ref
 refresh=Обновить
 regularExpression=Regular Expression
 rememberMe=Запомнить меня
@@ -527,6 +536,7 @@ renaming=Идет переименование
 replace=Заменить
 replaceIt={1} уже существует.Заменить?
 replaceExistingDrawing=Заменить существующую диаграмму
+repository=Repository
 required=обязательно
 reset=Сбросить
 resetView=Исходный режим просмотра
@@ -640,6 +650,7 @@ untitledDiagram=Диаграмма без названия
 untitledLayer=Слой без названия
 untitledLibrary=Библиотека без названия
 unknownError=Неизвестная ошибка
+updateFile=Update {1}
 updatingDocument=Документ обновляется. Пожалуйста, подождите...
 updatingPreview=Подготовка к предварительному просмотру. Пожалуйста, подождите...
 updatingSelection=Выделенная область обновляется. Пожалуйста, подождите...

+ 11 - 0
war/resources/dia_sk.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_sl.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_sr.txt

@@ -4,6 +4,7 @@ aboutDrawio=O draw.io
 accessDenied=Access Denied
 actualSize=Prirodna veličina
 add=Dodaj
+addedFile=Added {1}
 addImages=Dodaj slike
 addImageUrl=Dodaj URL slike
 addLayer=Dodaj sloj
@@ -76,6 +77,7 @@ cannotLoad=Pokušaji učitavanja neuspešni. Molimo vas pokušajte kasnije.
 cannotLogin=Pokušaji logovanja neuspešni. Molimo vas pokušajte kasnije.
 cannotOpenFile=Neuspešno otvaranje dokumenta
 change=Promeni
+changes=Changes
 changeOrientation=Promena orijentacije
 changeUser=Promena korisnika
 changesNotSaved=Promene nisu sačuvane
@@ -233,10 +235,13 @@ feedback=Komentar
 feedbackSent=Povratna informacija uspešno poslata.
 floorplans=Floorplans
 file=Datoteka
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Ime datoteke
 fileExists=Već postojeći fajl
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Fajl nije pronađen
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Fajl nije pronađen. Nepostojeći dokument ili nemate pravo čitanja.
 fileNotLoaded=Datoteka nije učitana
 fileNotSaved=Datoteka nije snimljena
@@ -260,6 +265,7 @@ flip=Preokreni
 flipH=Preokreni vodoravno
 flipV=Preokreni uspravno
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Boja fonta
 fontFamily=Font
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Podržani format je .XML datoteka sačuvana iz ovog softvera
 options=Opcije
 organic=Organski
+organisation=Organisation
 orthogonal=Pravougaoni
 otherViewer=drugi posmatrač
 otherViewers=drugih posmatrača
@@ -467,6 +474,7 @@ pageSetup=Podešavanje strane
 pageScale=Razmera strane
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Veličina papira
 pattern=Obrazac
 paste=Zalepi
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Ovaj dokument je kreiran ili menjan u draw.io pro. Sada ćete biti preusmereni.
 realtimeTimeout=Izgleda da ste napravili nekoliko promena dok ste bili bez konekcije. Žao nam je, ove promene se ne mogu sačuvati.
 redo=Ponovi
+ref=Ref
 refresh=Osveži
 regularExpression=Regular Expression
 rememberMe=Zapamti me
@@ -527,6 +536,7 @@ renaming=Preimenovanje
 replace=Replace
 replaceIt={1} već postoji. Da li želite da ga zamenite?
 replaceExistingDrawing=Zameni postojeći crtež
+repository=Repository
 required=Potreban
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Neimenovani dijagram
 untitledLayer=Untitled Layer
 untitledLibrary=Neimenovana biblioteka
 unknownError=Nepoznata greška
+updateFile=Update {1}
 updatingDocument=Ažuriranje dokumenta. Molimo sačekajte...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Ažuriranje selekcije. Molimo sačekajte...

+ 11 - 0
war/resources/dia_sv.txt

@@ -4,6 +4,7 @@ aboutDrawio=Om draw.io
 accessDenied=Access Denied
 actualSize=Verklig storlek
 add=Lägg till
+addedFile=Added {1}
 addImages=Lägg till bilder
 addImageUrl=Lägg till URL för bild
 addLayer=Lägg till lager
@@ -76,6 +77,7 @@ cannotLoad=Kunde inte ladda, försök igen senare.
 cannotLogin=Kunde inte logga in, försök igen senare.
 cannotOpenFile=Kan inte öppna fil
 change=Ändra
+changes=Changes
 changeOrientation=Ändra riktning
 changeUser=Ändra användare
 changesNotSaved=Ändringar har inte sparats
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback har skickats korrekt.
 floorplans=Floorplans
 file=Fil
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filnamn
 fileExists=Fil existerar redan
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Fil kunde inte hittas
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Filen kunde inte hittas. Antingen så existerar den inte eller så har du inte läsrättigheter.
 fileNotLoaded=Fil har inte laddats
 fileNotSaved=Fil har inte sparats
@@ -260,6 +265,7 @@ flip=Rotera
 flipH=Vänd horisontellt
 flipV=Vänd vertikalt
 flowchart=Flowchart
+folder=Folder
 font=Teckensnitt
 fontColor=Textfärg
 fontFamily=Typsnitt
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Format som stöds är filer som sparats från det här programmet  (.xml), .vsdx och .gliffy
 options=Alternativ
 organic=Organisk
+organisation=Organisation
 orthogonal=Vinkelrät
 otherViewer=annan läsare
 otherViewers=andra läsare
@@ -467,6 +474,7 @@ pageSetup=Sidinställning
 pageScale=Sidskala
 pan=Panorera
 panTooltip=Mellanslag+Dra för panorering
+path=Path
 paperSize=Pappersstorlek
 pattern=Mönster
 paste=Klistra in
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Denna fil skapades eller modifierades i draw.io pro. Du kommer nu omdirigeras dit.
 realtimeTimeout=Det ser ut som du gjort några ändringar medan du varit offline. Vi beklagar men dessa ändringar kan inte sparas.
 redo=Gör om
+ref=Ref
 refresh=Uppdatera
 regularExpression=Regular Expression
 rememberMe=Kom ihåg mig
@@ -527,6 +536,7 @@ renaming=Ändrar namn
 replace=Replace
 replaceIt={1} finns redan. Vill du ersätta den?
 replaceExistingDrawing=Ersätt befintlig ritning
+repository=Repository
 required=obligatorisk
 reset=Återställ
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Inte namngivet diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Inte namngivet bibliotek
 unknownError=Okänt fel
+updateFile=Update {1}
 updatingDocument=Uppdaterar dokument, vänligen vänta…
 updatingPreview=Uppdaterar förhandsgranskning, vänligen vänta...
 updatingSelection=Uppdaterar markering, vänligen vänta…

+ 11 - 0
war/resources/dia_sw.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_ta.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_te.txt

@@ -4,6 +4,7 @@ aboutDrawio=About draw.io
 accessDenied=Access Denied
 actualSize=Actual Size
 add=Add
+addedFile=Added {1}
 addImages=Add Images
 addImageUrl=Add Image URL
 addLayer=Add Layer
@@ -76,6 +77,7 @@ cannotLoad=Load attempts failed. Please try again later.
 cannotLogin=Log in attempts failed. Please try again later.
 cannotOpenFile=Cannot open file
 change=Change
+changes=Changes
 changeOrientation=Change Orientation
 changeUser=Change user
 changesNotSaved=Changes have not been saved
@@ -233,10 +235,13 @@ feedback=Feedback
 feedbackSent=Feedback successfully sent.
 floorplans=Floorplans
 file=File
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Filename
 fileExists=File already exists
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=File not found
+folderNotFound=Folder not found
 fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
 fileNotLoaded=File not loaded
 fileNotSaved=File not saved
@@ -260,6 +265,7 @@ flip=Flip
 flipH=Flip Horizontal
 flipV=Flip Vertical
 flowchart=Flowchart
+folder=Folder
 font=Font
 fontColor=Font Color
 fontFamily=Font Family
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
 options=Options
 organic=Organic
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=other viewer
 otherViewers=other viewers
@@ -467,6 +474,7 @@ pageSetup=Page Setup
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=Paper Size
 pattern=Pattern
 paste=Paste
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=Redo
+ref=Ref
 refresh=Refresh
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=Renaming
 replace=Replace
 replaceIt={1} already exists. Do you want to replace it?
 replaceExistingDrawing=Replace existing drawing
+repository=Repository
 required=required
 reset=Reset
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Untitled Diagram
 untitledLayer=Untitled Layer
 untitledLibrary=Untitled Library
 unknownError=Unknown error
+updateFile=Update {1}
 updatingDocument=Updating Document. Please wait...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=Updating Selection. Please wait...

+ 11 - 0
war/resources/dia_th.txt

@@ -4,6 +4,7 @@ aboutDrawio=เกี่ยวกับ draw.io
 accessDenied=Access Denied
 actualSize=ขนาดปกติ
 add=เพิ่ม
+addedFile=Added {1}
 addImages=เพิ่มรูปภาพ
 addImageUrl=เพิ่ม URL รูปภาพ
 addLayer=เพิ่มชั้น
@@ -76,6 +77,7 @@ cannotLoad=โหลดไม่สำเร็จ กรุณาลองใ
 cannotLogin=การเข้าใช้งานไม่สำเร็จ กรุณาลองใหม่อีกครั้งภายหลัง
 cannotOpenFile=ไม่สามารถเปิดไฟล์ได้
 change=เปลี่ยนแปลง
+changes=Changes
 changeOrientation=เปลี่ยนตำแหน่ง
 changeUser=เปลี่ยนผู้ใช้
 changesNotSaved=ยังไม่ได้บันทึกการเปลี่ยนแปลง
@@ -233,10 +235,13 @@ feedback=ผลตอบรับ
 feedbackSent=การส่งผลตอบรับเสร็จสมบูรณ์
 floorplans=Floorplans
 file=ไฟล์
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=ชื่อไฟล์
 fileExists=ไฟล์นี้มีอยู่แล้ว
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=ไม่พบไฟล์
+folderNotFound=Folder not found
 fileNotFoundOrDenied=ไม่พบไฟล์นี้ ไฟล์นี้อาจจะไม่มีในระบบ หรือคุณไม่มิสิทธ์ในการเข้าอ่าน
 fileNotLoaded=ไฟล์ไม่ถูกโหลด
 fileNotSaved=ไฟล์ไม่ถูกบันทึก
@@ -260,6 +265,7 @@ flip=พลิก
 flipH=พลิกไปแนวนอน
 flipV=พลิกไปแนวตั้ง
 flowchart=Flowchart
+folder=Folder
 font=ตัวอักษร
 fontColor=สีตัวอักษร
 fontFamily=รูปแบบอักษร
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=รูปแบบที่ใช้ได้คือไฟล์ที่ถูกบันทึกจากซอฟท์แวร์นี้ (.xml), .vsdx and .gliffy
 options=ตัวเลือก
 organic=ออแกนิค
+organisation=Organisation
 orthogonal=ตั้งฉากกัน
 otherViewer=ผู้ดูอื่นๆ
 otherViewers=ผู้ดูอื่นๆ
@@ -467,6 +474,7 @@ pageSetup=ตั้งค่าหน้า
 pageScale=ขนาดหน้า
 pan=ดูมุมกว้าง
 panTooltip=สเปซ+ลากเพื่อดูมุมกว้าง
+path=Path
 paperSize=ขนาดกระดาษ
 pattern=รูปแบบ
 paste=วาง
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=ไฟล์นี้ถูกสร้างและปรับปรุงใน draw.io โปร คุณจะถูกนำไปที่นั่นเดี๋ยวนี้
 realtimeTimeout=คุณได้ทำการเปลี่ยนแปลงบางอย่างในขณะที่ออฟไลน์ เราต้องขออภัยด้วย การเปลี่ยนแปลงเหล่านี้ไม่สามารถถูกบันทึกได้
 redo=ทำอีกครั้ง
+ref=Ref
 refresh=รีเฟรช
 regularExpression=Regular Expression
 rememberMe=จำฉันไว้
@@ -527,6 +536,7 @@ renaming=กำลังเปลี่ยนชื่อ
 replace=Replace
 replaceIt={1} มีอยู่แล้ว คุณต้องการแทนที่หรือไม่?
 replaceExistingDrawing=แทนที่ Drawing ที่มีอยู่แล้ว
+repository=Repository
 required=จำเป็นต้องมี
 reset=ตั้งค่าใหม่
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=แบบแผนที่ยังไม่ได้ตั้
 untitledLayer=Untitled Layer
 untitledLibrary=ที่จัดเก็บเอกสารที่ยังไม่ได้ตั้งชื่อ
 unknownError=ความผิดพลาดที่ไม่ทราบสาเหตุ
+updateFile=Update {1}
 updatingDocument=กำลังอัพเดทข้อมูล กรุณารอสักครู่...
 updatingPreview=กำลังอัพเดทการแสดงตัวอย่าง กรุณารอ...
 updatingSelection=กำลังอัพเดทสิ่งที่เลือก กรุณารอสักครู่...

+ 11 - 0
war/resources/dia_tr.txt

@@ -4,6 +4,7 @@ aboutDrawio=draw.io hakkında
 accessDenied=Access Denied
 actualSize=Gerçek boyut
 add=Ekle
+addedFile=Added {1}
 addImages=Resim ekle
 addImageUrl=Resim URL'si ekle
 addLayer=Katman ekle
@@ -76,6 +77,7 @@ cannotLoad=Yükleme girişimleri başarısız. Lütfen daha sonra tekrar deneyin
 cannotLogin=Giriş girişimleri başarısız. Lütfen daha sonra tekrar deneyiniz.
 cannotOpenFile=Dosya açılamıyor
 change=Değiştir
+changes=Changes
 changeOrientation=Sayfa yönünü değiştir
 changeUser=Kullanıcıyı değiştir
 changesNotSaved=Değişiklikler kaydedilmedi
@@ -233,10 +235,13 @@ feedback=Geri-bildirim
 feedbackSent=Geri-bildirim başarıyla gönderildi.
 floorplans=Floorplans
 file=Dosya
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Dosya adı
 fileExists=Dosya zaten mevcut
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Dosya bulunamadı
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Dosya bulunamadı. Ya mevcut değil, ya da erişim hakkınız yok
 fileNotLoaded=Dosya yüklenemedi
 fileNotSaved=Dosya kaydedilemedi
@@ -260,6 +265,7 @@ flip=Çevir
 flipH=Yatay çevir
 flipV=Dikey çevir
 flowchart=Flowchart
+folder=Folder
 font=Yazı tipi
 fontColor=Yazı tipi rengi
 fontFamily=Yazı tipi
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Desteklenen formatlar bu yazılımda kaydedilebilen dosyalardır: (.xml), .vsdx ve .gliffy
 options=Seçenekler
 organic=Organik
+organisation=Organisation
 orthogonal=Dikgen
 otherViewer=diğer izleyici
 otherViewers=diğer izleyici
@@ -467,6 +474,7 @@ pageSetup=Sayfa ayarı
 pageScale=Sayfa ölçeği
 pan=Kaydır
 panTooltip=Kaydırmak için boşluk tuşu+sürükleme
+path=Path
 paperSize=Kağıt boyutu
 pattern=Desen 
 paste=Yapıştır
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Dosya draw.io pro sürümüyle oluşturulmuş veya değiştirilmiş. Şimdi yönlendirileceksiniz.
 realtimeTimeout=Görünüşe göre çevrimdışıyken bazı değişiklikler yapmışsınız. Üzgünüz, bu değişiklikler kaydedilemez. 
 redo=Yinele
+ref=Ref
 refresh=Yenile
 regularExpression=Regular Expression
 rememberMe=Beni hatırla
@@ -527,6 +536,7 @@ renaming=Yeniden isimlendiriliyor
 replace=Replace
 replaceIt={1} zaten mevcut. Değiştirmek istiyor musunuz?
 replaceExistingDrawing=Mevcut çizimi değiştirin
+repository=Repository
 required=gerekli
 reset=Sıfırla
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Başlıksız Diyagram
 untitledLayer=Untitled Layer
 untitledLibrary=Başlıksız Kütüphane 
 unknownError=Bilinmeyen hata
+updateFile=Update {1}
 updatingDocument=Belge güncelleniyor. Lütfen bekleyin...
 updatingPreview=Ön-görünüm güncelleniyor. Lütfen bekleyin... 
 updatingSelection=Seçimi güncelliyor. Lütfen bekleyin...

+ 11 - 0
war/resources/dia_uk.txt

@@ -4,6 +4,7 @@ aboutDrawio=Про програму draw.io
 accessDenied=Access Denied
 actualSize=Фактичний розмір
 add=Додати
+addedFile=Added {1}
 addImages=Додати малюнки
 addImageUrl=Додати URL-адресу малюнка
 addLayer=Додати шар
@@ -76,6 +77,7 @@ cannotLoad=Невдалі спроби завантаження. Будь лас
 cannotLogin=Невдалі спроби входу. Будь ласка, спробуйте ще раз пізніше. 
 cannotOpenFile=Неможливо відкрити файл
 change=Змінити
+changes=Changes
 changeOrientation=Змінити напрямок
 changeUser=Змінити користувача
 changesNotSaved=Зміни не було збережено
@@ -233,10 +235,13 @@ feedback=Зворотній зв'язок
 feedbackSent=Форма зворотнього зв'язку успішно надіслана.
 floorplans=Floorplans
 file=Файл
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Назва файлу
 fileExists=Файл вже існує
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Файл не знайдено
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Файл не знайдено. Він не існує або у вас немає прав доступу для читання.
 fileNotLoaded=Файл не завантажено
 fileNotSaved=Файл не збережено
@@ -260,6 +265,7 @@ flip=Відобразити
 flipH=Відобразити зліва направо
 flipV=Відобразити зверху вниз
 flowchart=Flowchart
+folder=Folder
 font=Шрифт
 fontColor=Колір тексту
 fontFamily=Сімейство шрифтів
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Підтримуються формати файлів, збережених за допомогою цього програмного забезпечення (.xml), .vsdx та .gliffy
 options=Параметри
 organic=Органічний
+organisation=Organisation
 orthogonal=Ортогональный
 otherViewer=це також переглядає
 otherViewers=це також переглядають
@@ -467,6 +474,7 @@ pageSetup=Налаштування сторінки
 pageScale=Масштаб сторінки
 pan=Панорама
 panTooltip=Пробіл+перетягніть у панораму
+path=Path
 paperSize=Розмір паперу
 pattern=Шаблон
 paste=Вставити
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Цей файл був створений чи змінений на draw.io pro. Зараз ви будете переміщені.
 realtimeTimeout=Схоже, що ви внесли деякі зміни, перебуваючи поза мережею. Вибачте, але ці зміни не можуть бути збережені. 
 redo=Повторити
+ref=Ref
 refresh=Поновити
 regularExpression=Regular Expression
 rememberMe=Запам'ятати мене
@@ -527,6 +536,7 @@ renaming=Перейменовую
 replace=Replace
 replaceIt={1} вже існує. Ви хочете замінити його?
 replaceExistingDrawing=Замінити існуючий документ
+repository=Repository
 required=необхідно
 reset=Скинути
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Діаграма без назви
 untitledLayer=Untitled Layer
 untitledLibrary=Бібліотека без назви
 unknownError=Невідома помилка
+updateFile=Update {1}
 updatingDocument=Документ оновлюється. Будь ласка, зачекайте...
 updatingPreview=Перегляд оновлюється. Будь ласка, зачекайте...
 updatingSelection=Виділена область оновлюється. Будь ласка, зачекайте...

+ 11 - 0
war/resources/dia_vi.txt

@@ -4,6 +4,7 @@ aboutDrawio=Giới thiệu draw.io
 accessDenied=Access Denied
 actualSize=Kích thước thực tế
 add=Thêm
+addedFile=Added {1}
 addImages=Thêm ảnh
 addImageUrl=Thêm đường dẫn ảnh
 addLayer=Thêm lớp
@@ -76,6 +77,7 @@ cannotLoad=Tải thất bại. Vui lòng thử lại sau.
 cannotLogin=Đăng nhập thất bại. Vui lòng thử lại sau.
 cannotOpenFile=Không thể mở tập tin
 change=Thay đổi
+changes=Changes
 changeOrientation=Đổi hướng
 changeUser=Đổi người dùng
 changesNotSaved=Thay đổi chưa được lưu
@@ -233,10 +235,13 @@ feedback=Phản hồi
 feedbackSent=Gửi phản hồi thành công.
 floorplans=Floorplans
 file=Tập tin
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=Tên tập tin
 fileExists=Tập tin đã tồn tại
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=Không tìm thấy tập tin
+folderNotFound=Folder not found
 fileNotFoundOrDenied=Không tìm thấy tập tin. Tập tin không tồn tại hoặc bạn không có quyền đọc.
 fileNotLoaded=Tập tin chưa tải
 fileNotSaved=Tập tin chưa lưu
@@ -260,6 +265,7 @@ flip=Lật
 flipH=Lật ngang
 flipV=Lật dọc
 flowchart=Flowchart
+folder=Folder
 font=Phông
 fontColor=Màu phông
 fontFamily=Họ phông
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=Định dạng được hỗ trợ là các tập tin lưu từ phần mềm này (.xml), .vsdx và .gliffy
 options=Tùy chọn
 organic=Hữu cơ
+organisation=Organisation
 orthogonal=Trực giao
 otherViewer=Người xem khác
 otherViewers=Người xem khác
@@ -467,6 +474,7 @@ pageSetup=Cài đặt trang
 pageScale=Tỉ lệ trang
 pan=Dịch chuyển
 panTooltip=Space+Kéo để dịch chuyển
+path=Path
 paperSize=Kích thước giấy
 pattern=Mô hình
 paste=Dán
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=Tập tin này được tạo hay sửa đổi trong draw.io pro. Bạn sẽ được chuyển hướng ngay bây giờ.
 realtimeTimeout=Có vẻ như bạn đã làm một số thay đổi khi đăng xuất. Xin lỗi, những thay đổi này không thể được lưu.
 redo=Làm lại
+ref=Ref
 refresh=Làm mới
 regularExpression=Regular Expression
 rememberMe=Ghi nhớ
@@ -527,6 +536,7 @@ renaming=Đang đổi tên
 replace=Replace
 replaceIt={1} đã tồn tại. Bạn có muốn thay thế nó?
 replaceExistingDrawing=Thay thế bản vẽ sẵn có
+repository=Repository
 required=yêu cầu
 reset=Đặt lại
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=Biểu đồ vô đề
 untitledLayer=Untitled Layer
 untitledLibrary=Thư viện vô đề
 unknownError=Lỗi không rõ
+updateFile=Update {1}
 updatingDocument=Đang cập nhật tài liệu. Xin đợi...
 updatingPreview=Đang cập nhật xem trước. Xin đợi...
 updatingSelection=Đang cập nhật lựa chọn. Xin đợi...

+ 11 - 0
war/resources/dia_zh-tw.txt

@@ -4,6 +4,7 @@ aboutDrawio=關於 draw.io
 accessDenied=拒絕存取
 actualSize=實際尺寸
 add=新增
+addedFile=Added {1}
 addImages=新增圖片
 addImageUrl=新增圖片超連結
 addLayer=新增圖層
@@ -76,6 +77,7 @@ cannotLoad=戴入失敗,請稍候重試
 cannotLogin=登入失敗,請稍候重試
 cannotOpenFile=無法開啟檔案
 change=修改
+changes=Changes
 changeOrientation=改變方向
 changeUser=變更使用者
 changesNotSaved=修改尚未儲存
@@ -233,10 +235,13 @@ feedback=回饋
 feedbackSent=回饋傳送成功
 floorplans=Floorplans
 file=檔案
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=檔案名稱
 fileExists=檔案已存在
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=找不到該檔案
+folderNotFound=Folder not found
 fileNotFoundOrDenied=找不到該檔案。該檔案不存在或您沒有存取權限。
 fileNotLoaded=檔案無法載入
 fileNotSaved=檔案無法儲存
@@ -260,6 +265,7 @@ flip=翻轉
 flipH=水平翻轉
 flipV=垂直翻轉
 flowchart=流程圖
+folder=Folder
 font=字型
 fontColor=文字顏色
 fontFamily=字型
@@ -454,6 +460,7 @@ openRecent=開啟最近使用檔案
 openSupported=本軟體支援的檔案格式為 本軟體產生之(.xml),.vsdx和.gliffy
 options=選項
 organic=有機排列
+organisation=Organisation
 orthogonal=Orthogonal
 otherViewer=其他檢視之使用者
 otherViewers=其他檢視之使用者
@@ -467,6 +474,7 @@ pageSetup=頁面設置
 pageScale=Page Scale
 pan=Pan
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=頁面尺寸
 pattern=Pattern
 paste=貼上
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
 realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
 redo=重作
+ref=Ref
 refresh=更新
 regularExpression=Regular Expression
 rememberMe=Remember me
@@ -527,6 +536,7 @@ renaming=重新命名中
 replace=取代
 replaceIt={1}已經存在,要取代它?
 replaceExistingDrawing=取代現有的圖形
+repository=Repository
 required=必填
 reset=重置
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=未命名表單
 untitledLayer=未命名圖層
 untitledLibrary=Untitled Library
 unknownError=未知錯誤
+updateFile=Update {1}
 updatingDocument=文件更新中,請稍候...
 updatingPreview=預覽更新中,請稍候...
 updatingSelection=選擇更新中,請稍候...

+ 11 - 0
war/resources/dia_zh.txt

@@ -4,6 +4,7 @@ aboutDrawio=关于 draw.io
 accessDenied=Access Denied
 actualSize=实际尺寸
 add=添加
+addedFile=Added {1}
 addImages=添加图像
 addImageUrl=添加图像链接
 addLayer=添加图层
@@ -76,6 +77,7 @@ cannotLoad=载入失败,请稍候重试。
 cannotLogin=登录失败,请稍候重试。
 cannotOpenFile=Cannot open file
 change=更改
+changes=Changes
 changeOrientation=改变方向
 changeUser=更改用户
 changesNotSaved=更改尚未保存
@@ -233,10 +235,13 @@ feedback=反馈
 feedbackSent=反馈发送成功
 floorplans=Floorplans
 file=文件
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
 filename=文件名
 fileExists=文件已存在
 fileNearlyFullSeeFaq=File nearly full, please see FAQ
 fileNotFound=没有此文件
+folderNotFound=Folder not found
 fileNotFoundOrDenied=文件未找到。不存在或者你没有读权限。
 fileNotLoaded=文件无法加载
 fileNotSaved=文件无法保存
@@ -260,6 +265,7 @@ flip=翻转
 flipH=水平翻转
 flipV=垂直翻转
 flowchart=Flowchart
+folder=Folder
 font=字体
 fontColor=字体颜色
 fontFamily=字体
@@ -454,6 +460,7 @@ openRecent=Open Recent
 openSupported=此软件支持的保存格式为.xml
 options=选项
 organic=有机排列
+organisation=Organisation
 orthogonal=正交
 otherViewer=其他观众
 otherViewers=其他观众
@@ -467,6 +474,7 @@ pageSetup=页面设置
 pageScale=页面比例
 pan=平移
 panTooltip=Space+Drag to pan
+path=Path
 paperSize=页面尺寸
 pattern=Pattern
 paste=粘贴
@@ -512,6 +520,7 @@ recentlyViewed=Recently Viewed
 redirectToNewApp=文件是由draw.io pro所创建或修改的,正在重定向。
 realtimeTimeout=似乎你在离线状态下做过更改。对不起,这些更改不能保存。
 redo=重做
+ref=Ref
 refresh=刷新
 regularExpression=Regular Expression
 rememberMe=记住我
@@ -527,6 +536,7 @@ renaming=正在重命名
 replace=Replace
 replaceIt={1}已经存在了。要替换它吗?
 replaceExistingDrawing=替换当前图形
+repository=Repository
 required=必填
 reset=重置
 resetView=Reset View
@@ -640,6 +650,7 @@ untitledDiagram=未命名的表单
 untitledLayer=Untitled Layer
 untitledLibrary=未命名的库
 unknownError=未知错误
+updateFile=Update {1}
 updatingDocument=更新文件。请稍候...
 updatingPreview=Updating Preview. Please wait...
 updatingSelection=更新选择。请稍候...