Browse Source

6.7.5 release

Gaudenz Alder 8 years ago
parent
commit
3a995d6e76
100 changed files with 3193 additions and 2742 deletions
  1. 6 0
      ChangeLog
  2. 1 1
      VERSION
  3. 5 4
      src/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java
  4. 1 1
      war/cache.manifest
  5. BIN
      war/images/android-chrome-144x144.png
  6. BIN
      war/images/android-chrome-192x192.png
  7. BIN
      war/images/android-chrome-36x36.png
  8. BIN
      war/images/android-chrome-48x48.png
  9. BIN
      war/images/android-chrome-512x512.png
  10. BIN
      war/images/android-chrome-72x72.png
  11. BIN
      war/images/android-chrome-96x96.png
  12. BIN
      war/images/apple-touch-icon-114x114.png
  13. BIN
      war/images/apple-touch-icon-120x120.png
  14. BIN
      war/images/apple-touch-icon-144x144.png
  15. BIN
      war/images/apple-touch-icon-152x152.png
  16. BIN
      war/images/apple-touch-icon-180x180.png
  17. BIN
      war/images/apple-touch-icon-57x57.png
  18. BIN
      war/images/apple-touch-icon-60x60.png
  19. BIN
      war/images/apple-touch-icon-72x72.png
  20. BIN
      war/images/apple-touch-icon-76x76.png
  21. BIN
      war/images/apple-touch-icon-precomposed.png
  22. BIN
      war/images/apple-touch-icon.png
  23. 9 12
      war/images/browserconfig.xml
  24. BIN
      war/images/favicon-16x16.png
  25. BIN
      war/images/favicon-194x194.png
  26. BIN
      war/images/favicon-32x32.png
  27. BIN
      war/images/favicon-96x96.png
  28. BIN
      war/images/favicon.ico
  29. 17 40
      war/images/manifest.json
  30. BIN
      war/images/mstile-144x144.png
  31. BIN
      war/images/mstile-150x150.png
  32. BIN
      war/images/mstile-310x150.png
  33. BIN
      war/images/mstile-310x310.png
  34. BIN
      war/images/mstile-70x70.png
  35. 15 17
      war/images/safari-pinned-tab.svg
  36. 11 22
      war/index.html
  37. 591 584
      war/js/app.min.js
  38. 554 549
      war/js/atlas-viewer.min.js
  39. 516 508
      war/js/atlas.min.js
  40. 1 1
      war/js/diagramly/App.js
  41. 118 13
      war/js/diagramly/Dialogs.js
  42. 24 4
      war/js/diagramly/DriveRealtime.js
  43. 8 0
      war/js/diagramly/Editor.js
  44. 121 2
      war/js/diagramly/EditorUi.js
  45. 75 32
      war/js/diagramly/GraphViewer.js
  46. 51 1
      war/js/diagramly/Pages.js
  47. 27 13
      war/js/diagramly/vsdx/mxVsdxCanvas2D.js
  48. 111 110
      war/js/embed-static.min.js
  49. 110 62
      war/js/mxgraph/Graph.js
  50. 111 110
      war/js/reader.min.js
  51. 557 551
      war/js/viewer.min.js
  52. 1 0
      war/resources/dia.txt
  53. 1 0
      war/resources/dia_am.txt
  54. 1 0
      war/resources/dia_ar.txt
  55. 1 0
      war/resources/dia_bg.txt
  56. 1 0
      war/resources/dia_bn.txt
  57. 1 0
      war/resources/dia_bs.txt
  58. 1 0
      war/resources/dia_ca.txt
  59. 101 100
      war/resources/dia_cs.txt
  60. 1 0
      war/resources/dia_da.txt
  61. 1 0
      war/resources/dia_de.txt
  62. 1 0
      war/resources/dia_el.txt
  63. 1 0
      war/resources/dia_eo.txt
  64. 1 0
      war/resources/dia_es.txt
  65. 1 0
      war/resources/dia_et.txt
  66. 1 0
      war/resources/dia_fa.txt
  67. 1 0
      war/resources/dia_fi.txt
  68. 1 0
      war/resources/dia_fil.txt
  69. 1 0
      war/resources/dia_fr.txt
  70. 1 0
      war/resources/dia_gu.txt
  71. 1 0
      war/resources/dia_he.txt
  72. 1 0
      war/resources/dia_hi.txt
  73. 1 0
      war/resources/dia_hr.txt
  74. 1 0
      war/resources/dia_hu.txt
  75. 1 0
      war/resources/dia_i18n.txt
  76. 1 0
      war/resources/dia_id.txt
  77. 1 0
      war/resources/dia_it.txt
  78. 1 0
      war/resources/dia_ja.txt
  79. 1 0
      war/resources/dia_kn.txt
  80. 1 0
      war/resources/dia_ko.txt
  81. 1 0
      war/resources/dia_lt.txt
  82. 1 0
      war/resources/dia_lv.txt
  83. 1 0
      war/resources/dia_ml.txt
  84. 1 0
      war/resources/dia_mr.txt
  85. 1 0
      war/resources/dia_ms.txt
  86. 1 0
      war/resources/dia_nl.txt
  87. 1 0
      war/resources/dia_no.txt
  88. 1 0
      war/resources/dia_pl.txt
  89. 1 0
      war/resources/dia_pt-br.txt
  90. 1 0
      war/resources/dia_pt.txt
  91. 1 0
      war/resources/dia_ro.txt
  92. 1 0
      war/resources/dia_ru.txt
  93. 1 0
      war/resources/dia_sk.txt
  94. 1 0
      war/resources/dia_sl.txt
  95. 6 5
      war/resources/dia_sr.txt
  96. 1 0
      war/resources/dia_sv.txt
  97. 1 0
      war/resources/dia_sw.txt
  98. 1 0
      war/resources/dia_ta.txt
  99. 1 0
      war/resources/dia_te.txt
  100. 0 0
      war/resources/dia_th.txt

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+06-JUN-2017: 6.7.5
+
+- Fixes links in labels for lightbox on touch devices
+- Adds links to pages
+- Adds zoom option for viewer in Confluence Connect
+
 05-JUN-2017: 6.7.4
 
 - Fixes overridden rounded style for non-rounded shapes

+ 1 - 1
VERSION

@@ -1 +1 @@
-6.7.4
+6.7.5

+ 5 - 4
src/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java

@@ -365,17 +365,18 @@ public class GliffyDiagramConverter
 				cell.setVertex(true);
 				style.append("shape=" + StencilTranslator.translate(gliffyObject.uid)).append(";");
 				style.append("shadow=" + (shape.dropShadow ? 1 : 0)).append(";");
-				style.append("strokeWidth=" + shape.strokeWidth).append(";");
+				
+				if(style.lastIndexOf("strokeWidth") == -1)
+					style.append("strokeWidth=" + shape.strokeWidth).append(";");
 				
 				if(style.lastIndexOf("fillColor") == -1)
 					style.append("fillColor=" + shape.fillColor).append(";");
+				
 				if(style.lastIndexOf("strokeColor") == -1)
 					style.append("strokeColor=" + shape.strokeColor).append(";");
 
-				if (shape.gradient && !gliffyObject.isGradientIgnored())
-				{
+				if(shape.gradient && !gliffyObject.isGradientIgnored() && style.lastIndexOf("gradient") == -1)
 					style.append("gradientColor=" + gliffyObject.getGradientColor() + ";gradientDirection=north;");
-				}
 
 				// opacity value is wrong for venn circles, so ignore it and use the one in the mapping
 				if (!gliffyObject.isVennCircle())

+ 1 - 1
war/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 06/05/2017 12:53 PM
+# 06/06/2017 01:24 PM
 
 app.html
 index.html?offline=1

BIN
war/images/android-chrome-144x144.png


BIN
war/images/android-chrome-192x192.png


BIN
war/images/android-chrome-36x36.png


BIN
war/images/android-chrome-48x48.png


BIN
war/images/android-chrome-512x512.png


BIN
war/images/android-chrome-72x72.png


BIN
war/images/android-chrome-96x96.png


BIN
war/images/apple-touch-icon-114x114.png


BIN
war/images/apple-touch-icon-120x120.png


BIN
war/images/apple-touch-icon-144x144.png


BIN
war/images/apple-touch-icon-152x152.png


BIN
war/images/apple-touch-icon-180x180.png


BIN
war/images/apple-touch-icon-57x57.png


BIN
war/images/apple-touch-icon-60x60.png


BIN
war/images/apple-touch-icon-72x72.png


BIN
war/images/apple-touch-icon-76x76.png


BIN
war/images/apple-touch-icon-precomposed.png


BIN
war/images/apple-touch-icon.png


+ 9 - 12
war/images/browserconfig.xml

@@ -1,12 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig>
-  <msapplication>
-    <tile>
-      <square70x70logo src="images/mstile-70x70.png"/>
-      <square150x150logo src="images/mstile-150x150.png"/>
-      <square310x310logo src="images/mstile-310x310.png"/>
-      <wide310x150logo src="images/mstile-310x150.png"/>
-      <TileColor>#da532c</TileColor>
-    </tile>
-  </msapplication>
-</browserconfig>
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+    <msapplication>
+        <tile>
+            <square150x150logo src="/images/mstile-150x150.png"/>
+            <TileColor>#d89000</TileColor>
+        </tile>
+    </msapplication>
+</browserconfig>

BIN
war/images/favicon-16x16.png


BIN
war/images/favicon-194x194.png


BIN
war/images/favicon-32x32.png


BIN
war/images/favicon-96x96.png


BIN
war/images/favicon.ico


+ 17 - 40
war/images/manifest.json

@@ -1,41 +1,18 @@
 {
-	"name": "draw.io",
-	"icons": [
-		{
-			"src": "\/images\/android-chrome-36x36.png",
-			"sizes": "36x36",
-			"type": "image\/png",
-			"density": 0.75
-		},
-		{
-			"src": "\/images\/android-chrome-48x48.png",
-			"sizes": "48x48",
-			"type": "image\/png",
-			"density": 1
-		},
-		{
-			"src": "\/images\/android-chrome-72x72.png",
-			"sizes": "72x72",
-			"type": "image\/png",
-			"density": 1.5
-		},
-		{
-			"src": "\/images\/android-chrome-96x96.png",
-			"sizes": "96x96",
-			"type": "image\/png",
-			"density": 2
-		},
-		{
-			"src": "\/images\/android-chrome-144x144.png",
-			"sizes": "144x144",
-			"type": "image\/png",
-			"density": 3
-		},
-		{
-			"src": "\/images\/android-chrome-192x192.png",
-			"sizes": "192x192",
-			"type": "image\/png",
-			"density": 4
-		}
-	]
-}
+    "name": "draw.io",
+    "icons": [
+        {
+            "src": "/images/android-chrome-192x192.png",
+            "sizes": "192x192",
+            "type": "image/png"
+        },
+        {
+            "src": "/images/android-chrome-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png"
+        }
+    ],
+    "theme_color": "#d89000",
+    "background_color": "#d89000",
+    "display": "standalone"
+}

BIN
war/images/mstile-144x144.png


BIN
war/images/mstile-150x150.png


BIN
war/images/mstile-310x150.png


BIN
war/images/mstile-310x310.png


BIN
war/images/mstile-70x70.png


+ 15 - 17
war/images/safari-pinned-tab.svg

@@ -2,27 +2,25 @@
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
 <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="451.000000pt" height="451.000000pt" viewBox="0 0 451.000000 451.000000"
+ width="719.000000pt" height="719.000000pt" viewBox="0 0 719.000000 719.000000"
  preserveAspectRatio="xMidYMid meet">
 <metadata>
 Created by potrace 1.11, written by Peter Selinger 2001-2013
 </metadata>
-<g transform="translate(0.000000,451.000000) scale(0.100000,-0.100000)"
+<g transform="translate(0.000000,719.000000) scale(0.100000,-0.100000)"
 fill="#000000" stroke="none">
-<path d="M99 4461 c-31 -19 -53 -44 -68 -73 l-21 -44 0 -2090 c0 -2005 1
--2091 19 -2129 22 -50 69 -91 119 -105 25 -7 717 -10 2116 -10 l2080 0 44 21
-c29 15 54 37 73 67 l29 46 0 2103 c0 2081 0 2104 -20 2143 -11 21 -36 51 -57
-67 l-36 28 -2117 3 -2116 2 -45 -29z m2652 -512 c53 -16 100 -58 134 -120 l30
--54 0 -370 c0 -288 -3 -379 -14 -409 -19 -53 -77 -115 -132 -140 l-46 -21 251
--427 250 -428 264 0 c290 0 308 -3 370 -63 19 -18 43 -50 55 -72 21 -39 22
--49 22 -425 0 -377 0 -386 -22 -426 -25 -48 -83 -101 -129 -120 -44 -19 -945
--20 -1005 -2 -52 15 -113 68 -138 121 -20 42 -21 58 -21 425 0 417 0 417 59
-484 45 51 94 72 183 78 l78 5 -248 422 -247 423 -191 0 -191 0 -247 -420
-c-135 -231 -246 -422 -246 -425 0 -3 29 -5 64 -5 113 0 186 -43 231 -134 l26
--53 -3 -385 -3 -385 -30 -49 c-19 -30 -49 -60 -79 -79 l-49 -30 -497 0 -497 0
--52 35 c-39 26 -59 50 -81 94 l-30 59 0 366 c0 363 0 366 24 416 29 62 61 97
-117 127 42 22 54 23 309 26 l265 4 247 421 246 422 -33 16 c-65 32 -95 61
--125 123 l-31 62 3 375 c3 365 4 375 25 416 26 48 86 102 134 119 47 17 945
-19 1000 3z"/>
+<path d="M0 3595 l0 -3595 3595 0 3595 0 0 3595 0 3595 -3595 0 -3595 0 0
+-3595z m4319 2735 c162 -27 286 -148 321 -313 7 -36 10 -238 8 -623 -3 -569
+-3 -569 -26 -626 -35 -86 -108 -160 -202 -206 l-78 -38 397 -677 396 -677 370
+0 c398 -1 493 -8 564 -42 71 -34 154 -119 187 -191 l29 -62 0 -620 0 -620 -32
+-66 c-40 -81 -102 -140 -191 -182 l-67 -32 -765 0 -765 0 -63 29 c-81 37 -171
+131 -204 213 l-23 58 0 605 0 605 32 67 c76 162 212 237 431 238 28 0 52 2 52
+4 0 1 -177 304 -393 672 l-394 669 -310 3 -310 2 -392 -668 c-215 -368 -391
+-671 -391 -674 0 -3 45 -8 101 -12 159 -11 251 -56 329 -159 77 -102 75 -79
+75 -757 l0 -605 -32 -67 c-54 -115 -150 -191 -273 -217 -40 -9 -250 -11 -785
+-9 l-730 3 -65 31 c-113 53 -171 119 -210 233 -20 61 -21 76 -18 659 l3 597
+27 57 c47 101 140 182 253 221 18 6 200 13 449 16 l419 6 393 670 c216 369
+393 674 394 678 0 4 -8 10 -17 13 -133 42 -226 133 -267 260 -15 45 -16 117
+-14 655 l3 604 27 56 c54 109 173 198 290 218 77 13 1388 13 1467 1z"/>
 </g>
 </svg>

+ 11 - 22
war/index.html

@@ -102,29 +102,18 @@
 			})();
 		}
 	</script>
-    <link rel="alternate" type="application/rss+xml" title="RSS Feed for draw.io" href="http://blog.draw.io/feed/">
     <link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/plgmlhohecdddhbmmkncjdmlhcmaachm">
-	<link rel="apple-touch-icon" sizes="57x57" href="images/apple-touch-icon-57x57.png">
-	<link rel="apple-touch-icon" sizes="60x60" href="images/apple-touch-icon-60x60.png">
-	<link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
-	<link rel="apple-touch-icon" sizes="76x76" href="images/apple-touch-icon-76x76.png">
-	<link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
-	<link rel="apple-touch-icon" sizes="120x120" href="images/apple-touch-icon-120x120.png">
-	<link rel="apple-touch-icon" sizes="144x144" href="images/apple-touch-icon-144x144.png">
-	<link rel="apple-touch-icon" sizes="152x152" href="images/apple-touch-icon-152x152.png">
-	<link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon-180x180.png">
-	<link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32">
-	<link rel="icon" type="image/png" href="images/favicon-194x194.png" sizes="194x194">
-	<link rel="icon" type="image/png" href="images/favicon-96x96.png" sizes="96x96">
-	<link rel="icon" type="image/png" href="images/android-chrome-192x192.png" sizes="192x192">
-	<link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16">
-	<link rel="manifest" href="images/manifest.json">
-	<link rel="mask-icon" href="images/safari-pinned-tab.svg" color="#f18808">
-	<meta name="msapplication-TileColor" content="#da532c">
-	<meta name="msapplication-TileImage" content="images/mstile-144x144.png">
-	<meta name="msapplication-config" content="images/browserconfig.xml">
-	<meta name="theme-color" content="#f18808">
-    <link rel="apple-touch-startup-image" href="images/logo-flat.png">
+	<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
+	<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
+	<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
+	<link rel="manifest" href="/images/manifest.json">
+	<link rel="mask-icon" href="/images/safari-pinned-tab.svg" color="#d89000">
+	<link rel="shortcut icon" href="/images/favicon.ico">
+	<meta name="apple-mobile-web-app-title" content="draw.io">
+	<meta name="application-name" content="draw.io">
+	<meta name="msapplication-config" content="/images/browserconfig.xml">
+	<meta name="theme-color" content="#d89000">
+    <link rel="apple-touch-startup-image" href="/images/logo-flat.png">
     <link rel="stylesheet" type="text/css" href="styles/grapheditor.css">
 	<style type="text/css">
 		body { overflow:hidden; }

File diff suppressed because it is too large
+ 591 - 584
war/js/app.min.js


File diff suppressed because it is too large
+ 554 - 549
war/js/atlas-viewer.min.js


File diff suppressed because it is too large
+ 516 - 508
war/js/atlas.min.js


+ 1 - 1
war/js/diagramly/App.js

@@ -1476,7 +1476,7 @@ App.prototype.updateDocumentTitle = function()
 
 		if (this.isOfflineApp())
 		{
-			title += ' ' + mxResources.get('offline');
+			title += ' app';
 		}
 		else
 		{

+ 118 - 13
war/js/diagramly/Dialogs.js

@@ -3677,7 +3677,7 @@ var ImageDialog = function(editorUi, title, initialValue, fn, ignoreExisting, co
 /**
  * Overrides link dialog to add Google Picker.
  */
-var LinkDialog = function(editorUi, initialValue, btnLabel, fn)
+var LinkDialog = function(editorUi, initialValue, btnLabel, fn, showPages)
 {
 	var div = document.createElement('div');
 	mxUtils.write(div, mxResources.get('editLink') + ':');
@@ -3694,9 +3694,8 @@ var LinkDialog = function(editorUi, initialValue, btnLabel, fn)
 	{
 		inner.style.paddingRight = '20px';
 	}
-	
+
 	var linkInput = document.createElement('input');
-	linkInput.setAttribute('value', initialValue);
 	linkInput.setAttribute('placeholder', mxResources.get('dragUrlsHere'));
 	linkInput.setAttribute('type', 'text');
 	linkInput.style.marginTop = '6px';
@@ -3713,7 +3712,7 @@ var LinkDialog = function(editorUi, initialValue, btnLabel, fn)
 	cross.style.width = '12px';
 	cross.style.height = '14px';
 	cross.style.cursor = 'pointer';
-
+	
 	// Workaround for inline-block not supported in IE
 	cross.style.display = (mxClient.IS_VML) ? 'inline' : 'inline-block';
 	cross.style.top = ((mxClient.IS_VML) ? 0 : 3) + 'px';
@@ -3726,32 +3725,135 @@ var LinkDialog = function(editorUi, initialValue, btnLabel, fn)
 		linkInput.value = '';
 		linkInput.focus();
 	});
+
+	var urlRadio = document.createElement('input');
+	urlRadio.style.cssText = 'margin-right:8px;margin-bottom:8px;';
+	urlRadio.setAttribute('value', 'url');
+	urlRadio.setAttribute('type', 'radio');
+	urlRadio.setAttribute('name', 'current-linkdialog');
+
+	var pageRadio = document.createElement('input');
+	pageRadio.style.cssText = 'margin-right:8px;margin-bottom:8px;';
+	pageRadio.setAttribute('value', 'url');
+	pageRadio.setAttribute('type', 'radio');
+	pageRadio.setAttribute('name', 'current-linkdialog');
+
+	var pageSelect = document.createElement('select');
+	pageSelect.style.width = '380px';
 	
-	inner.appendChild(linkInput);
-	inner.appendChild(cross);
+	if (showPages && editorUi.pages != null)
+	{
+		if (initialValue != null && editorUi.editor.graph.isPageLink(initialValue))
+		{
+			pageRadio.setAttribute('checked', 'checked');
+			pageRadio.defaultChecked = true;
+		}
+		else
+		{
+			linkInput.setAttribute('value', initialValue);
+			urlRadio.setAttribute('checked', 'checked');
+			urlRadio.defaultChecked = true;
+		}
+		
+		linkInput.style.width = '380px';
+		inner.appendChild(urlRadio);
+		inner.appendChild(linkInput);
+		inner.appendChild(cross);
+		mxUtils.br(inner);
+		inner.appendChild(pageRadio);
+		
+		var pageFound = false;
+		
+		for (var i = 0; i < editorUi.pages.length; i++)
+		{
+			var pageOption = document.createElement('option');
+			mxUtils.write(pageOption, editorUi.pages[i].getName() ||
+				mxResources.get('pageWithNumber', [i + 1]));
+			pageOption.setAttribute('value', 'data:page/id,' +
+				editorUi.pages[i].getId());
+			
+			if (initialValue == pageOption.getAttribute('value'))
+			{
+				pageOption.setAttribute('selected', 'selected');
+				pageFound = true;
+			}
+
+			pageSelect.appendChild(pageOption);
+		}
+
+		if (!pageFound && pageRadio.checked)
+		{
+			var notFoundOption = document.createElement('option');
+			mxUtils.write(notFoundOption, mxResources.get('pageNotFound'));
+			notFoundOption.setAttribute('disabled', 'disabled');
+			notFoundOption.setAttribute('selected', 'selected');
+			notFoundOption.setAttribute('value', 'pageNotFound');
+			pageSelect.appendChild(notFoundOption);
+			
+			mxEvent.addListener(pageSelect, 'change', function()
+			{
+				if (notFoundOption.parentNode != null && !notFoundOption.selected)
+				{
+					notFoundOption.parentNode.removeChild(notFoundOption);
+				}
+			});
+		}
+		
+		inner.appendChild(pageSelect);
+	}
+	else
+	{
+		linkInput.setAttribute('value', initialValue);
+		inner.appendChild(linkInput);
+		inner.appendChild(cross);
+	}
+
 	div.appendChild(inner);
 	
 	var mainBtn = mxUtils.button(btnLabel, function()
 	{
 		editorUi.hideDialog();
-		fn(linkInput.value, LinkDialog.selectedDocs);
+		var value = (pageRadio.checked) ? ((pageSelect.value !== 'pageNotFound') ?
+			pageSelect.value : initialValue) : linkInput.value;
+		fn(value, LinkDialog.selectedDocs);
 	});
 	mainBtn.style.verticalAlign = 'middle';
 	mainBtn.className = 'geBtn gePrimaryBtn';
 	
 	this.init = function()
 	{
-		linkInput.focus();
-		
-		if (mxClient.IS_FF || document.documentMode >= 5 || mxClient.IS_QUIRKS)
+		if (pageRadio.checked)
 		{
-			linkInput.select();
+			pageSelect.focus();
 		}
 		else
 		{
-			document.execCommand('selectAll', false, null);
+			linkInput.focus();
+			
+			if (mxClient.IS_FF || document.documentMode >= 5 || mxClient.IS_QUIRKS)
+			{
+				linkInput.select();
+			}
+			else
+			{
+				document.execCommand('selectAll', false, null);
+			}
 		}
 		
+		mxEvent.addListener(pageSelect, 'focus', function()
+		{
+			urlRadio.removeAttribute('checked');
+			pageRadio.setAttribute('checked', 'checked');
+			pageRadio.checked = true;
+		});
+		
+		mxEvent.addListener(linkInput, 'focus', function()
+		{
+			pageRadio.removeAttribute('checked');
+			urlRadio.setAttribute('checked', 'checked');
+			urlRadio.checked = true;
+		});
+
 		// Installs drag and drop handler for links
 		if (Graph.fileSupport)
 		{
@@ -3795,6 +3897,8 @@ var LinkDialog = function(editorUi, initialValue, btnLabel, fn)
 			    if (mxUtils.indexOf(evt.dataTransfer.types, 'text/uri-list') >= 0)
 			    {
 			    	linkInput.value = decodeURIComponent(evt.dataTransfer.getData('text/uri-list'));
+			    	urlRadio.setAttribute('checked', 'checked');
+			    	urlRadio.checked = true;
 			    	mainBtn.click();
 			    }
 
@@ -3991,7 +4095,8 @@ var LinkDialog = function(editorUi, initialValue, btnLabel, fn)
 		if (e.keyCode == 13)
 		{
 			editorUi.hideDialog();
-			fn(linkInput.value, LinkDialog.selectedDocs);
+			var value = (pageRadio.checked) ? pageSelect.value : linkInput.value;
+			fn(value, LinkDialog.selectedDocs);
 		}
 	});
 

+ 24 - 4
war/js/diagramly/DriveRealtime.js

@@ -228,6 +228,8 @@ DriveRealtime.prototype.start = function()
 				
 				if (this.file.isEditable())
 				{
+					diagramMap.set('id', page.getId());
+					
 					// Read or create name for page
 					if (page.getName() != '')
 					{
@@ -252,6 +254,7 @@ DriveRealtime.prototype.start = function()
 			this.page = new DiagramPage(document.createElement('diagram'));
 			this.page.mapping = new RealtimeMapping(this, this.diagramMap, this.page);
 			this.diagramMap.set('name', mxResources.get('pageWithNumber', [1]));
+			this.diagramMap.set('id', this.page.getId());
 			this.page.setName(this.diagramMap.get('name'));
 			this.page.mapping.init();
 		}
@@ -270,6 +273,7 @@ DriveRealtime.prototype.start = function()
 			if (this.file.isEditable() && !page.mapping.diagramMap.has('name'))
 			{
 				page.mapping.diagramMap.set('name', mxResources.get('pageWithNumber', [1]));
+				page.mapping.diagramMap.set('id', page.getId());
 			}
 			
 			page.setName(page.mapping.diagramMap.get('name') || mxResources.get('pageWithNumber', [1]));
@@ -294,8 +298,14 @@ DriveRealtime.prototype.start = function()
 			this.diagramMap = this.diagrams.get(0);
 		}
 		
-		// Dummy node, should be XML node if used
-		this.page = new DiagramPage(document.createElement('diagram'));
+		var node = document.createElement('diagram');
+		
+		if (this.diagramMap.has('id'))
+		{
+			node.setAttribute('id', this.diagramMap.get('id'));
+		}
+		
+		this.page = new DiagramPage(node);
 		this.page.mapping = new RealtimeMapping(this, this.diagramMap, this.page);
 		
 		if (!this.diagramMap.has('name'))
@@ -304,6 +314,7 @@ DriveRealtime.prototype.start = function()
 		}
 		
 		this.page.setName(this.page.mapping.diagramMap.get('name'));
+		this.diagramMap.set('id', this.page.getId());
 		
 		// Avoids scroll offset when switching page
 		this.page.mapping.init();
@@ -323,8 +334,16 @@ DriveRealtime.prototype.start = function()
 		
 		for (var i = 0; i < this.diagrams.length; i++)
 		{
-			var page = new DiagramPage(this.ui.fileNode.ownerDocument.createElement('diagram'));
-			page.mapping = new RealtimeMapping(this, this.diagrams.get(i), page);
+			var node = this.ui.fileNode.ownerDocument.createElement('diagram');
+			var diagramMap = this.diagrams.get(i);
+			
+			if (diagramMap.has('id'))
+			{
+				node.setAttribute('id', diagramMap.get('id'));
+			}
+			
+			var page = new DiagramPage(node);
+			page.mapping = new RealtimeMapping(this, diagramMap, page);
 			
 			if (this.file.isEditable() && !page.mapping.diagramMap.has('name'))
 			{
@@ -332,6 +351,7 @@ DriveRealtime.prototype.start = function()
 			}
 			
 			page.setName(page.mapping.diagramMap.get('name') || mxResources.get('pageWithNumber', [i + 1]));
+			diagramMap.set('id', page.getId());
 			this.ui.pages.push(page);
 		}
 

+ 8 - 0
war/js/diagramly/Editor.js

@@ -1115,6 +1115,14 @@
 		this.currentStyle = 'default-style2';
 	};
 
+	/**
+	 * Adds support for page links.
+	 */
+	Graph.prototype.isPageLink = function(href)
+	{
+		return href != null && href.substring(0, 10) == 'data:page/';
+	};
+
 	/**
 	 * Adds a shadow filter to the given svg root.
 	 */

+ 121 - 2
war/js/diagramly/EditorUi.js

@@ -5679,9 +5679,62 @@
 	var editorUiInit = EditorUi.prototype.init;
 	EditorUi.prototype.init = function()
 	{
-		editorUiInit.apply(this, arguments);
-		var graph = this.editor.graph;
 		var ui = this;
+		var graph = this.editor.graph;
+		
+		function pageLinkClicked(href)
+		{
+			var comma = href.indexOf(',');
+			
+			if (comma > 0)
+			{
+				var page = ui.getPageById(href.substring(comma + 1));
+				
+				if (page)
+				{
+					ui.selectPage(page)
+				}
+			}
+		};
+		
+		// For chromeless mode and lightbox mode in viewer
+		// Must be overridden before supercall to be applied
+		// in case of chromeless initialization
+		var graphAddClickHandler = graph.addClickHandler;
+
+		graph.addClickHandler = function(highlight, beforeClick, onClick)
+		{
+			var tmp = beforeClick;
+
+			beforeClick = function(evt, href)
+			{
+				if (href == null)
+				{
+					var source = mxEvent.getSource(evt);
+				
+					if (source.nodeName.toLowerCase() == 'a')
+					{
+						href = source.getAttribute('href');
+					}
+				}
+			
+				if (href != null && graph.isPageLink(href))
+				{
+					pageLinkClicked(href);
+					mxEvent.consume(evt);
+				}
+				
+				if (tmp != null)
+				{
+					tmp(evt);
+				}
+			};
+			
+			// For some reason, local argument override is not enough in this case...
+			graphAddClickHandler.call(this, highlight, beforeClick, onClick);
+		};
+
+		editorUiInit.apply(this, arguments);
 		
 		if (mxClient.IS_SVG)
 		{
@@ -5724,6 +5777,62 @@
 			return graphGetGlobalVariable.apply(this, arguments);
 		};
 
+		var graphCreateLinkForHint = graph.createLinkForHint;
+		
+		graph.createLinkForHint = function(href, label)
+		{
+			var pageLink = graph.isPageLink(href);
+			
+			if (pageLink)
+			{
+				var comma = href.indexOf(',');
+
+				if (comma > 0)
+				{
+					var page = ui.getPageById(href.substring(comma + 1));
+	
+					if (page != null)
+					{
+						label = page.getName();
+					}
+					else
+					{
+						label = mxResources.get('pageNotFound');
+					}
+				}
+			}
+			
+			var a = graphCreateLinkForHint.apply(this, arguments);
+			
+			if (pageLink)
+			{
+				mxEvent.addListener(a, 'click', function(evt)
+				{
+					pageLinkClicked(href);
+					mxEvent.consume(evt);
+				});
+			}
+			
+			return a;
+		};
+		
+		var graphLabelLinkClicked = graph.labelLinkClicked;
+		
+		graph.labelLinkClicked = function(state, elt, evt)
+		{
+			var href = elt.getAttribute('href');
+			
+			if (graph.isPageLink(href))
+			{
+				pageLinkClicked(href);
+				mxEvent.consume(evt);
+			}
+			else
+			{
+				graphLabelLinkClicked.apply(this, arguments);
+			}
+		};
+
 		// Overrides editor filename
 		this.editor.getOrCreateFilename = function()
 		{
@@ -8159,6 +8268,16 @@
 		return href;
 	};
 
+	/**
+	 * Overrides link dialog.
+	 */
+	EditorUi.prototype.showLinkDialog = function(value, btnLabel, fn)
+	{
+		var dlg = new LinkDialog(this, value, btnLabel, fn, true);
+		this.showDialog(dlg.container, 420, 120, true, true);
+		dlg.init();
+	};
+
 	/**
 	 * Overrides createOutline
 	 */

+ 75 - 32
war/js/diagramly/GraphViewer.js

@@ -175,7 +175,46 @@ GraphViewer.prototype.init = function(container, xmlNode, graphConfig)
 					};
 				}
 			}
-	
+			
+			this.diagrams = [];
+			var lastXmlNode = null;
+			
+			this.selectPage = function(number)
+			{
+				this.currentPage = mxUtils.mod(number, this.diagrams.length);
+				this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(
+					this.diagrams[this.currentPage]))).documentElement);
+			};
+			
+			this.selectPageById = function(id)
+			{
+				for (var i = 0; i < this.diagrams.length; i++)
+				{
+					if (this.diagrams[i].getAttribute('id') == id)
+					{
+						this.selectPage(i);
+						break;
+					}
+				}
+			};
+			
+			var update = mxUtils.bind(this, function()
+			{
+				if (this.xmlNode == null || this.xmlNode.nodeName != 'mxfile')
+				{
+					this.diagrams = [];
+				}
+				if (this.xmlNode != lastXmlNode)
+				{
+					this.diagrams = this.xmlNode.getElementsByTagName('diagram');
+					lastXmlNode = this.xmlNode;
+				}
+			});
+			
+			// LATER: Add event for setGraphXml
+			this.addListener('xmlNodeChanged', update);
+			update();
+
 			// Passes current page via urlParams global variable
 			// to let the parser know which page we're using
 			urlParams['page'] = self.currentPage;
@@ -217,7 +256,7 @@ GraphViewer.prototype.init = function(container, xmlNode, graphConfig)
 					translate: this.graph.view.translate.clone(),
 					scale: this.graph.view.scale
 				};
-		
+
 				if (this.graphConfig.toolbar != null)
 				{
 					this.addToolbar();
@@ -855,8 +894,6 @@ GraphViewer.prototype.addToolbar = function()
 		
 		if (token == 'pages')
 		{
-			var diagrams = [];
-
 			pageInfo = container.ownerDocument.createElement('div');
 			pageInfo.style.cssText = 'display:inline-block;position:relative;padding:3px 4px 0 4px;' +
 				'vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;'
@@ -864,11 +901,7 @@ GraphViewer.prototype.addToolbar = function()
 			
 			var prevButton = addButton(mxUtils.bind(this, function()
 			{
-				this.currentPage = mxUtils.mod(this.currentPage - 1, diagrams.length);
-				pageInfo.innerHTML = '';
-				mxUtils.write(pageInfo, (this.currentPage + 1) + ' / ' + diagrams.length);
-				this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(
-					diagrams[this.currentPage]))).documentElement);
+				this.selectPage(this.currentPage - 1);
 			}), Editor.previousImage, mxResources.get('previousPage') || 'Previous Page');
 
 			prevButton.style.borderRightStyle = 'none';
@@ -878,11 +911,7 @@ GraphViewer.prototype.addToolbar = function()
 
 			var nextButton = addButton(mxUtils.bind(this, function()
 			{
-				this.currentPage = mxUtils.mod(this.currentPage + 1, diagrams.length);
-				pageInfo.innerHTML = '';
-				mxUtils.write(pageInfo, (this.currentPage + 1) + ' / ' + diagrams.length);
-				this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(
-					diagrams[this.currentPage]))).documentElement);
+				this.selectPage(this.currentPage + 1);
 			}), Editor.nextImage, mxResources.get('nextPage') || 'Next Page');
 			
 			nextButton.style.paddingLeft = '0px';
@@ -892,25 +921,15 @@ GraphViewer.prototype.addToolbar = function()
 			
 			var update = mxUtils.bind(this, function()
 			{
-				if (this.xmlNode == null || this.xmlNode.nodeName != 'mxfile')
-				{
-					diagrams = [];
-				}
-				if (this.xmlNode != lastXmlNode)
-				{
-					diagrams = this.xmlNode.getElementsByTagName('diagram');
-					pageInfo.innerHTML = '';
-					mxUtils.write(pageInfo, (this.currentPage + 1) + ' / ' + diagrams.length);
-					lastXmlNode = this.xmlNode;
-				}
-				
-				pageInfo.style.display = (diagrams.length > 1) ? 'inline-block' : 'none';
+				pageInfo.innerHTML = '';
+				mxUtils.write(pageInfo, (this.currentPage + 1) + ' / ' + this.diagrams.length);
+				pageInfo.style.display = (this.diagrams.length > 1) ? 'inline-block' : 'none';
 				prevButton.style.display = pageInfo.style.display;
 				nextButton.style.display = pageInfo.style.display;
 			});
 			
 			// LATER: Add event for setGraphXml
-			this.addListener('xmlNodeChanged', update);
+			this.addListener('graphChanged', update);
 			update();
 		}
 		else if (token == 'zoom')
@@ -1116,13 +1135,13 @@ GraphViewer.prototype.addToolbar = function()
 GraphViewer.prototype.addClickHandler = function(graph, ui)
 {
 	graph.linkPolicy = this.graphConfig.target || graph.linkPolicy;
-	
-	graph.addClickHandler(this.graphConfig.highlight, function(evt)
+
+	graph.addClickHandler(this.graphConfig.highlight, mxUtils.bind(this, function(evt, href)
 	{
 		if (ui != null)
 		{
 			var elt = mxEvent.getSource(evt)
-			var href = elt.getAttribute('href');
+			href = elt.getAttribute('href');
 			
 			if (href != null && !(graph.isExternalProtocol(href) || graph.isBlankLink(href)))
 			{
@@ -1130,7 +1149,31 @@ GraphViewer.prototype.addClickHandler = function(graph, ui)
 				ui.destroy();
 			}
 		}
-	}, mxUtils.bind(this, function(evt)
+		else
+		{
+			if (href == null)
+			{
+				var source = mxEvent.getSource(evt);
+			
+				if (source.nodeName.toLowerCase() == 'a')
+				{
+					href = source.getAttribute('href');
+				}
+			}
+			
+			if (href != null && graph.isPageLink(href))
+			{
+				var comma = href.indexOf(',');
+				
+				if (comma > 0)
+				{
+					var id = href.substring(comma + 1);
+					this.selectPageById(id);
+					mxEvent.consume(evt);
+				}
+			}
+		}
+	}), mxUtils.bind(this, function(evt)
 	{
 		if (ui == null && this.lightboxClickEnabled &&
 			(!mxEvent.isTouchEvent(evt) ||

+ 51 - 1
war/js/diagramly/Pages.js

@@ -16,6 +16,26 @@
 function DiagramPage(node)
 {
 	this.node = node;
+	
+	// Create GUID for page
+	if (!this.node.hasAttribute('id'))
+	{
+		// Make global if used anywhere else
+		function guid()
+		{
+		  function s4()
+		  {
+		    return Math.floor((1 + Math.random()) * 0x10000)
+		      .toString(16)
+		      .substring(1);
+		  }
+		  
+		  return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
+		    s4() + '-' + s4() + s4() + s4();
+		};
+		
+		this.node.setAttribute('id', guid());
+	}
 }
 
 /**
@@ -33,6 +53,14 @@ DiagramPage.prototype.root = null;
  */
 DiagramPage.prototype.viewState = null;
 
+/**
+ * 
+ */
+DiagramPage.prototype.getId = function()
+{
+	return this.node.getAttribute('id');
+};
+
 /**
  * 
  */
@@ -232,6 +260,25 @@ ChangePage.prototype.execute = function()
 	SelectPage.prototype.execute.apply(this, arguments);
 };
 
+/**
+ * Returns true if the given string contains an mxfile.
+ */
+EditorUi.prototype.getPageById = function(id)
+{
+	if (this.pages != null)
+	{
+		for (var i = 0; i < this.pages.length; i++)
+		{
+			if (this.pages[i].getId() == id)
+			{
+				return this.pages[i];
+			}
+		}
+	}
+	
+	return null;
+};
+
 /**
  * Returns true if the given string contains an mxfile.
  */
@@ -721,7 +768,10 @@ EditorUi.prototype.duplicatePage = function(page, name)
 		}
 		
 		// Clones the current page and takes a snapshot of the graph model and view state
-		var newPage = new DiagramPage(page.node.cloneNode(false));
+		var node = page.node.cloneNode(false);
+		node.removeAttribute('id');
+		
+		var newPage = new DiagramPage(node);
 		newPage.root = graph.cloneCells([graph.model.root])[0];
 		newPage.viewState = graph.getViewState();
 		

+ 27 - 13
war/js/diagramly/vsdx/mxVsdxCanvas2D.js

@@ -558,7 +558,7 @@ mxVsdxCanvas2D.prototype.text = function(x, y, w, h, str, align, valign, wrap, f
 		}
 
 		//TODO support HTML text formatting and remaining attributes
-		if (this.cellState.style['html'] == '1')
+		if (format == 'html')
     	{
     		if (mxUtils.getValue(this.cellState.style, 'nl2Br', '1') != '0')
 			{
@@ -578,16 +578,30 @@ mxVsdxCanvas2D.prototype.text = function(x, y, w, h, str, align, valign, wrap, f
 		var s = this.state;
 		var geo = this.xmGeo;
 
-		var strRect;
-//		if (h == 0 || w == 0)
-//		{
-//			strRect = mxUtils.getSizeForString(str);
-//		}
+		var strRect = mxUtils.getSizeForString(str, null, null, w > 0? w : null);
+
+		var wShift = 0;
+		var hShift = 0;
+		
+		switch(align) 
+		{
+			case "right": wShift = strRect.width/4; break;
+			//case "center": wShift = 0; break;
+			case "left": wShift = -strRect.width/4; break;
+		}
 		
-//		h = h > 0 ? h : strRect.height; 
-//		w = w > 0 ? w : strRect.width;
-		h = h > 0 ? h : geo.height; 
-		w = w > 0 ? w : geo.width;
+		switch(valign) 
+		{
+			case "top": hShift = strRect.height/2; break;
+//			case "middle": hShift = 0; break;
+			case "bottom": hShift = -strRect.height/2; break;
+		}
+
+		h = h > 0 ? h : strRect.height; 
+		w = w > 0 ? w : strRect.width;
+			
+//		h = h > 0 ? h : geo.height; 
+//		w = w > 0 ? w : geo.width;
 		w = w * s.scale;
 		h = h * s.scale;
 		
@@ -599,14 +613,14 @@ mxVsdxCanvas2D.prototype.text = function(x, y, w, h, str, align, valign, wrap, f
 		this.shape.appendChild(this.createCellElemScaled("TxtPinY", y));
 		this.shape.appendChild(this.createCellElemScaled("TxtWidth", w));
 		this.shape.appendChild(this.createCellElemScaled("TxtHeight", h));
-		this.shape.appendChild(this.createCellElemScaled("TxtLocPinX", hw));
-		this.shape.appendChild(this.createCellElemScaled("TxtLocPinY", hh));
+		this.shape.appendChild(this.createCellElemScaled("TxtLocPinX", hw + wShift));
+		this.shape.appendChild(this.createCellElemScaled("TxtLocPinY", hh + hShift));
 
 		if (rotation != 0)
 			this.shape.appendChild(this.createCellElemScaled("TxtAngle", (360 - rotation) * Math.PI / 180));
 		
 		var text = this.xmlDoc.createElement("Text");
-		text.textContent = str + "\n";
+		text.textContent = str;
 		this.shape.appendChild(text);
 //		
 //		var elem = this.createElement('text');

File diff suppressed because it is too large
+ 111 - 110
war/js/embed-static.min.js


+ 110 - 62
war/js/mxgraph/Graph.js

@@ -986,7 +986,7 @@ Graph.prototype.init = function(container)
 	{
 		mxCellRenderer.prototype.initializeLabel.apply(this, arguments);
 		
-		mxEvent.addListener(shape.node, 'click', mxUtils.bind(this, function(evt)
+		var fn = mxUtils.bind(this, function(evt)
 		{
 			var elt = mxEvent.getSource(evt)
 			
@@ -994,38 +994,59 @@ Graph.prototype.init = function(container)
 			{
 				if (elt.nodeName == 'A')
 				{
-					var href = elt.getAttribute('href');
-					
-					if (href != null)
-					{
-						var target = state.view.graph.isBlankLink(href) ?
-							state.view.graph.linkTarget : '_top';
-						href = state.view.graph.getAbsoluteUrl(href);
-
-						// Workaround for blocking in same iframe
-						if (target == '_self' && window != window.top)
-						{
-							window.location.href = href;
-						}
-						else
-						{
-							window.open(href, target);
-						}
-						
-						mxEvent.consume(evt);
-					}
-	
+					state.view.graph.labelLinkClicked(state, elt, evt);
 					break;
 				}
 				
 				elt = elt.parentNode;
 			}
-		}));
+		});
+		
+		// Workaround for no click events on touch
+		if (mxClient.IS_TOUCH)
+		{
+			mxEvent.addGestureListeners(shape.node, null, null, fn);
+			mxEvent.addListener(shape.node, 'click', function(evt)
+			{
+				mxEvent.consume(evt);
+			});
+		}
+		else
+		{
+			mxEvent.addListener(shape.node, 'click', fn);
+		}
 	};
 	
 	this.initLayoutManager();
 };
 
+/**
+ * Installs automatic layout via styles
+ */
+Graph.prototype.labelLinkClicked = function(state, elt, evt)
+{
+	var href = elt.getAttribute('href');
+	
+	if (href != null)
+	{
+		var target = state.view.graph.isBlankLink(href) ?
+			state.view.graph.linkTarget : '_top';
+		href = state.view.graph.getAbsoluteUrl(href);
+
+		// Workaround for blocking in same iframe
+		if (target == '_self' && window != window.top)
+		{
+			window.location.href = href;
+		}
+		else
+		{
+			window.open(href, target);
+		}
+		
+		mxEvent.consume(evt);
+	}
+};
+
 /**
  * Installs automatic layout via styles
  */
@@ -1134,7 +1155,8 @@ Graph.prototype.getPageLayout = function()
 Graph.prototype.sanitizeHtml = function(value, editing)
 {
 	// Uses https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
-	// NOTE: Original minimized sanitizer was modified to support data URIs for images
+	// NOTE: Original minimized sanitizer was modified to support
+	// data URIs for images, and mailto and special data:-links.
 	// LATER: Add MathML to whitelisted tags
 	function urlX(link)
 	{
@@ -4466,7 +4488,19 @@ if (typeof mxVertexHandler != 'undefined')
 							
 							if (beforeClick != null)
 			    			{
-			    				mxEvent.addListener(links[i], 'click', beforeClick);
+								// Workaround for no click events on touch
+								if (mxClient.IS_TOUCH)
+								{
+									mxEvent.addGestureListeners(links[i], null, null, beforeClick);
+									mxEvent.addListener(links[i], 'click', function(evt)
+									{
+										mxEvent.consume(evt);
+									});
+								}
+								else
+								{
+									mxEvent.addListener(links[i], 'click', beforeClick);
+								}
 			    			}
 						}
 					}
@@ -4569,24 +4603,28 @@ if (typeof mxVertexHandler != 'undefined')
 				    	{
 				    		var blank = graph.isBlankLink(this.currentLink);
 				    		
-				    		if (!blank && beforeClick != null)
+				    		if ((this.currentLink.substring(0, 5) === 'data:' ||
+				    			!blank) && beforeClick != null)
 				    		{
-			    				beforeClick(me.getEvent());
+			    				beforeClick(me.getEvent(), this.currentLink);
 				    		}
 				    		
-				    		var target = (blank) ? graph.linkTarget : '_top';
-				    		
-				    		// Workaround for blocking in same iframe
-							if (target == '_self' && window != window.top)
-							{
-								window.location.href = this.currentLink;
-							}
-							else
-							{
-								window.open(this.currentLink, target);
-							}
-				    		
-				    		me.consume();
+				    		if (!mxEvent.isConsumed(me.getEvent()))
+				    		{
+					    		var target = (blank) ? graph.linkTarget : '_top';
+					    		
+					    		// Workaround for blocking in same iframe
+								if (target == '_self' && window != window.top)
+								{
+									window.location.href = this.currentLink;
+								}
+								else
+								{
+									window.open(this.currentLink, target);
+								}
+					    		
+					    		me.consume();
+				    		}
 				    	}
 				    	else if (onClick != null && !me.isConsumed() &&
 			    			(Math.abs(this.scrollLeft - graph.container.scrollLeft) < tol &&
@@ -5292,6 +5330,36 @@ if (typeof mxVertexHandler != 'undefined')
 		    }
 		};
 	
+		/**
+		 * Creates an anchor elements for handling the given link in the
+		 * hint that is shown when the cell is selected.
+		 */
+		Graph.prototype.createLinkForHint = function(link, label)
+		{
+			var a = document.createElement('a');
+			a.setAttribute('href', this.getAbsoluteUrl(link));
+			a.setAttribute('title', link);
+			
+			if (this.linkTarget != null)
+			{
+				a.setAttribute('target', this.linkTarget);
+			}
+			
+			// Adds shortened label to link
+			var max = 60;
+			var head = 36;
+			var tail = 20;
+			
+			if (label.length > max)
+			{
+				label = label.substring(0, head) + '...' + label.substring(label.length - tail);
+			}
+
+			mxUtils.write(a, label);
+			
+			return a;
+		};
+		
 		/**
 		 * Customized graph for touch devices.
 		 */
@@ -6787,28 +6855,8 @@ if (typeof mxVertexHandler != 'undefined')
 					
 					this.graph.container.appendChild(this.linkHint);
 				}
-				
-				var label = link;
-				var max = 60;
-				var head = 36;
-				var tail = 20;
-				
-				if (label.length > max)
-				{
-					label = label.substring(0, head) + '...' + label.substring(label.length - tail);
-				}
-				
-				var a = document.createElement('a');
-				a.setAttribute('href', this.graph.getAbsoluteUrl(link));
-				a.setAttribute('title', link);
-				
-				if (this.graph.linkTarget != null)
-				{
-					a.setAttribute('target', this.graph.linkTarget);
-				}
-				
-				mxUtils.write(a, label);
-				
+
+				var a = this.graph.createLinkForHint(link, link);
 				this.linkHint.innerHTML = '';
 				this.linkHint.appendChild(a);
 	

File diff suppressed because it is too large
+ 111 - 110
war/js/reader.min.js


File diff suppressed because it is too large
+ 557 - 551
war/js/viewer.min.js


+ 1 - 0
war/resources/dia.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_am.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_ar.txt

@@ -472,6 +472,7 @@ outline=‫حد‬
 oval=‫بيضاوي‬
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=‫صفحات‬
 pageView=‫مشاهدة الصفحة‬

+ 1 - 0
war/resources/dia_bg.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_bn.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_bs.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Ovalan
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Stranice
 pageView=Pregled strane

+ 1 - 0
war/resources/dia_ca.txt

@@ -472,6 +472,7 @@ outline=Contorn
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pàgines
 pageView=Vista de pàgina

+ 101 - 100
war/resources/dia_cs.txt

@@ -69,7 +69,7 @@ bottomRight=Pravý dolní
 bpmn=BPMN
 browser=Prohlížeč
 bulletedList=Bodový seznam
-business=Business
+business=Obchodní
 busy=Operace probíhá
 cabinets=Skříně
 cancel=Zrušit
@@ -87,12 +87,12 @@ chatWindowTitle=Chat
 chooseAnOption=Vyberte možnost
 chromeApp=Aplikace Chrome
 compressed=Komprimováno
-commitMessage=Odeslat zprávu
+commitMessage=Zpráva ke commitu
 csv=CSV
 draftFound=Byl nalezen koncept pro '{1}'. Abyste mohli pokračovat, nahrajte ho do editoru nebo jej zahoďte.
 dragAndDropNotSupported=Pro obrázky není funkce Drag & Drop k dispozici. Chcete ho místo toho naimportovat?
 dropboxCharsNotAllowed=Následující znaky nejsou povoleny: \ / : ? * " |
-check=Fajfka
+check=Zkontrolovat
 circle=Kruh
 cisco=Cisco
 classic=Klasické
@@ -106,7 +106,7 @@ collapse=Sbalit
 collapseExpand=Sbalit/Rozbalit
 collapse-expand=Sbalit/Rozbalit
 collapsible=Sbalovací
-comic=Komix
+comic=Komixový
 comment=Komentář
 commentsNotes=Komentáře/Poznámky
 connect=Připojit
@@ -156,7 +156,7 @@ direction=Směr
 discard=Zahodit
 discardChangesAndReconnect=Zahodit změny a znovu se připojit
 googleDriveMissingClickHere=Google Disk chybí? Klikněte zde!
-discardChanges=Discard Changes
+discardChanges=Zahodit změny
 disconnected=Odpojeno
 distribute=Rozložit
 done=Hotovo
@@ -200,13 +200,13 @@ eip=EIP
 embed=Vložit
 embedImages=Vložit obrázky
 mainEmbedNotice=Vložit toto na stránku
-electrical=Elektrická
+electrical=Elektrotechnika
 embedNotice=Vložit jednou na konec stránky
 enterGroup=Zadat skupinu
 enterName=Zadat jméno
 enterPropertyName=Zadat název vlastnosti
 enterValue=Zadat hodnotu
-entityRelation=Relace entity
+entityRelation=ER
 error=Chyba
 errorDeletingFile=Chyba při mazání souboru
 errorLoadingFile=Chyba při nahrávání souboru
@@ -363,14 +363,14 @@ keyboardShortcuts=Klávesové zkratky
 layers=Vrstvy
 landscape=Na šířku
 language=Jazyk
-leanMapping=Lean mapování
+leanMapping=Mapování toku hodnot
 lastChange=naposledy změněno před {1}
 lessThanAMinute=méně než 1 min.
 licensingError=Chyba licence
 licenseHasExpired=Licence pro {1} vypršela {2}. Klepněte sem.
 licenseWillExpire=Licence pro {1} vyprší {2}. Klepněte sem.
 linkAccountRequired=Pokud je diagram neveřejný, k jeho zobrazení je potřeba účet Google.
-linkText=Link Text
+linkText=Odkaz na text
 list=Seznam
 minute=minuta
 minutes=min.
@@ -404,7 +404,7 @@ makeCopy=Udělat kopii
 manual=Manuál
 middle=Střed
 misc=Různé
-mockups=Modely
+mockups=Mockup prototypy
 modificationDate=Datum změny
 modifiedBy=Změněno
 more=Více
@@ -416,7 +416,7 @@ moving=Přesouvání
 moveSelectionTo=Přesunout výběr do {1}
 name=Jméno
 navigation=Navigace
-networking=Síť
+networking=Síťování
 new=Nový
 newLibrary=Nová knihovna
 nextPage=Další stránka
@@ -455,14 +455,14 @@ openArrow=Otevřená šipka
 openExistingDiagram=Otevřít existující diagram
 openFile=Otevřít soubor
 openFrom=Otevřít z
-openLibrary=Open Library
+openLibrary=Otevřít knihovnu
 openLibraryFrom=Otevřít knihovnu z
 openLink=Otevřít odkaz
 openInNewWindow=Otevřít v novém okně
 openInThisWindow=Otevřít v tomto okně
 openIt=Otevřít {1}
-openRecent=Open Recent
-openSupported=Podporovaný formát je soubor .XML uložený z této aplikace
+openRecent=Otevřít poslední
+openSupported=Podporované formáty jsou soubory uložené touto aplikací (.xml), .vsdx a .gliffy
 options=Možnosti
 organic=Organický
 orthogonal=Pravoúhlý
@@ -470,9 +470,10 @@ otherViewer=další divák
 otherViewers=další diváci
 outline=Obrys
 oval=Ovál
-page=Page
-pageContent=Page Content
-pageWithNumber=Page-{1}
+page=Stránka
+pageContent=Obsah stránky
+pageNotFound=Page not found
+pageWithNumber=Stránka-
 pages=Stránky
 pageView=Zobrazení stránky
 pageSetup=Nastavení stránky
@@ -483,76 +484,76 @@ paperSize=Rozměry papíru
 pattern=Vzor
 paste=Vložit
 pasteHere=Vložit sem
-pasteStyle=Styl vložení
+pasteStyle=Vložit styl
 perimeter=Obvod
-permissionAnyone=Anyone can edit
-permissionAuthor=Only I can edit
-pickFolder=Pick a folder
-pickLibraryDialogTitle=Select Library
+permissionAnyone=Editovat může každý
+permissionAuthor=Editovat můžu já
+pickFolder=Vyberte složku
+pickLibraryDialogTitle=Vyberte knihovnu
 publicDiagramUrl=Veřejné URL diagramu
-placeholders=Placeholders
+placeholders=Zástupné symboly
 plantUml=PlantUML
 plugins=Pluginy
 pluginUrl=URL pluginu
 pluginWarning=Stránka vyžaduje načtení následujícího pluginu(ů):\n \n {1}\n \n   Přejete si načíst tento plugin(y) nyní?\n \n   POZNÁMKA: Povolte spuštění pluginů pouze pokud zcela rozumíte bezpečnostním opatřením. \n
-plusTooltip=Klikněte a přetáhněte pro připojení, klikněte pro klonování a připojení, shift-klik pro klonování
-portrait=Portrét
+plusTooltip=Pro připojení a klonování klepněte (ctrl+klik pro klonování, shift+klik pro připojení). Pro připojení přetáhněte (ctrl+přetažení pro klonování).
+portrait=Na výšku
 position=Pozice
 posterPrint=Tisk plakátu
 preferences=Předvolby
 preview=Náhled
-previousPage=Previous Page
+previousPage=Předchozí stránka
 print=Tisk
-printAllPages=Print All Pages
-procEng=Proc. Eng.
-project=Project
-priority=Priority
+printAllPages=Tisknout všechny stránky
+procEng=Proces. inženýrství
+project=Projekt
+priority=Priorita
 properties=Vlastnosti
-publish=Publish
-publishConfirmation=This will make your diagram public on imgur.com.
-published=Published
-publishedAt=Published at {1}
-publishing=Publishing
-deleteUrl=Link to delete: {1}
-quickStart=Rychlý start video
+publish=Publikovat
+publishConfirmation=Tímto váš diagram zvěřejníte ve službě imgur.com
+published=Publikováno
+publishedAt=Publikováno v {1}
+publishing=Publikuji
+deleteUrl=Smazat odkaz: {1}
+quickStart=Rychle spustit video
 rack=Rack
 radialTree=Radiální strom
 readOnly=Jen pro čtení
 reconnecting=Připojuji znovu
-recentlyUpdated=Recently Updated
-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.
+recentlyUpdated=Nedávno změněno
+recentlyViewed=Nedávno prohlíženo
+redirectToNewApp=Tento soubor byl vytvořen v novější verzi této aplikace. Budete nyní přesměrováni.
+realtimeTimeout=Vypadá to, že když jste byli offline, provedli jste nějaké změny. Je nám líto, tyto změny nemohou být uloženy.
 redo=Opakovat
 refresh=Obnovit
-regularExpression=Regular Expression
+regularExpression=Regulární výraz
 rememberMe=Pamatovat si mě
 rememberThisSetting=Pamatovat si toto nastavení
 removeFormat=Vymazat formátování
 removeFromGroup=Odstranit ze skupiny
 removeIt=Odstranit {1}
-removeWaypoint=Odebrat kontrolní bod
+removeWaypoint=Odebrat waypoint
 rename=Přejmenovat
 renamed=Přejmenováno
 renameIt=Přejmenovat {1}
 renaming=Přejmenovávám
-replace=Replace
+replace=Nahradit
 replaceIt={1} již existuje. Chcete jej nahradit?
 replaceExistingDrawing=Nahradit existující výkres
 required=vyžadováno
 reset=Resetovat
-resetView=Reset View
+resetView=Resetovat pohled
 resize=Změnit rozměry
 retina=Retina
-responsive=Responsive
+responsive=Responzivní
 restore=Obnovit
 restoring=Obnovuji
-retryingIn=Opětovný pokus za {1} vteřin
+retryingIn=Opětovný pokus za {1} s.
 retryingLoad=Načítání selhalo. Zkouším znovu...
 retryingLogin=Čas přihlášení vypršel. Zkouším znovu...
-reverse=Reverse
-revision=Revision
-revisionHistory=Historie prohlížení
+reverse=Převrátit
+revision=Revize
+revisionHistory=Historie revizí
 right=Vpravo
 rightAlign=Zarovnat vpravo
 rightToLeft=Zprava doleva
@@ -561,26 +562,26 @@ rotateTooltip=Klikněte a táhněte pro otočení, klikněte pro otočení o 90
 rotation=Otočení
 rounded=Zaoblený
 save=Uložit
-saveAndExit=Uložit & Ukončit
+saveAndExit=Uložit & ukončit
 saveAs=Uložit jako
-saveAsXmlFile=Save as XML file?
+saveAsXmlFile=Ulažit jako soubor XML?
 saved=Uloženo
 saveDiagramsTo=Uložit diagramy do
-saveLibrary403=Insufficient permissions to edit this library
-saveLibrary500=There was an error while saving the library
+saveLibrary403=K úpravě této knihovny nemáte dostatečné oprávnění.
+saveLibrary500=Při ukládání knihovny došlo k chybě.
 saving=Ukládám
-scratchpad=Scratchpad
+scratchpad=Poznámky
 scrollbars=Rolovací lišty
 search=Hledat
-searchShapes=Search Shapes
+searchShapes=Hledat tvary
 selectAll=Vybrat vše
-selectionOnly=Selection Only
+selectionOnly=Jen výběr
 selectEdges=Vybrat hrany
-selectFile=Select File
-selectFolder=Select Folder
+selectFile=Vybrat soubor
+selectFolder=Vybrat složku
 selectFont=Vybrat písmo
-selectNone=Select None
-selectVertices=Vybrat rohy
+selectNone=Nevybrat nic
+selectVertices=Vybrat vrcholy
 sendMessage=Odeslat
 sendYourFeedbackToDrawIo=Odeslat vaši zpětnou vazbu na draw.io
 serviceUnavailableOrBlocked=Služba není k dispozici nebo je blokována
@@ -591,35 +592,35 @@ shadow=Stín
 shape=Tvar
 shapes=Tvary
 share=Sdílet
-shareLink=Odkaz na sdílení
+shareLink=Odkaz pro sdílenou editaci
 sharp=Ostrý
 show=Zobrazit
-showEditButton=Show Edit Button
-showStartScreen=Show Start Screen
-sidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.
-signs=Signs
+showEditButton=Zobrazit tlačítko Editovat
+showStartScreen=Zobrazit úvodní obrazovku
+sidebarTooltip=Klepnutím zvětšíte. Přetáhněte tvary do diagramu. Shift+klik pro změnu výběru. Alt+klik pro vložení a připojení. 
+signs=Symboly
 signOut=Odhlásit se
-simple=Simple
+simple=Jednoduchý
 simpleArrow=Jednoduchá šipka
 size=Velikost
-solid=Pevný
+solid=Plná
 sourceSpacing=Odsazení zdroje
 south=Jih
 software=Software
-space=Space
+space=Prostor
 spacing=Odsazení
 specialLink=Speciální odkaz
-standard=Standard
+standard=Standard
 starting=Začínám
 straight=Přímý
 strokeColor=Barva čáry
 style=Styl
-subscript=Index
-summary=Summary
-superscript=Nadpis
+subscript=Dolní index
+summary=Souhrn
+superscript=Horní index
 support=Podpora
 sysml=SysML
-tags=Tags
+tags=Štítky
 table=Tabulka
 targetSpacing=Odsazení cíle
 template=Šablona
@@ -629,52 +630,52 @@ textAlignment=Zarovnání textu
 textOpacity=Průhlednost textu
 theme=Téma
 timeout=Vypršení času
-title=Title
-to=to
-toBack=Dozadu
-toFront=Dopředu
+title=Nadpis
+to=
+toBack=Do pozadí
+toFront=Do popředí
 tooltips=Popis nástrojů
 top=Horní
 topAlign=Zarovnání shora
-topLeft=Top Left
-topRight=Top Right
+topLeft=Levý horní
+topRight=Pravý horní
 transparent=Průhledný
-transparentBackground=Transparent Background
+transparentBackground=Průhledné pozadí
 tryAgain=Zkusit znovu
-tryOpeningViaThisPage=Try opening via this page.
-turn=Otočit
-type=Type
+tryOpeningViaThisPage=Zkuste otevřít přes tuto stránku.
+turn=Otočit o 90°
+type=Text
 twitter=Twitter
 uml=UML
 underline=Podtržení
 undo=Zpět
 ungroup=Rozdělit skupinu
 unsavedChanges=Neuložené změny
-unsavedChangesClickHereToSave=Unsaved changes. Click here to save.
-untitled=Untitled
+unsavedChangesClickHereToSave=Neuložené změny. Uložíte kliknutím sem.
+untitled=Bez názvu
 untitledDiagram=Diagram bez názvu
-untitledLayer=Untitled Layer
+untitledLayer=Vrstva bez názvu
 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...
+updateFile=Aktualizovat {1}
+updatingDocument=Aktualizuji dokument. Prosím čekejte...
+updatingPreview=Aktualizuji náhled. Prosím čekejte...
+updatingSelection=Aktualizuji výběr. Prosím čekejte...
 upload=Upload
 url=URL
-userManual=User Manual
+userManual=Uživatelský manuál
 vertical=Svisle
 verticalFlow=Svislý tok
 verticalTree=Svislý strom
 view=Náhled
-viewUrl=Link to view: {1}
-voiceAssistant=Voice Assistant (beta)
-warning=Warning
-waypoints=Waypoints
+viewUrl=Odkaz na pohled: {1}
+voiceAssistant=Hlasový asistent (beta)
+warning=Varování
+waypoints=Waypointy
 west=Západ
 width=Šířka
 wiki=Wiki
-wordWrap=Word wrap
+wordWrap=Zalamování textu
 writingDirection=Směr písma
 yourEmailAddress=Vaše e-mailová adresa
 zoom=Lupa
@@ -685,7 +686,7 @@ businessprocess=Obchodní postupy
 charts=Grafy
 engineering=Inženýrství
 flowcharts=Vývojové diagramy
-gmdl=Material Design
+gmdl=Návrh materiálu
 mindmaps=Myšlenkové mapy
 mockups=Makety
 networkdiagrams=Síťové diagramy
@@ -693,6 +694,6 @@ nothingIsSelected=Nic není vybráno
 other=Ostatní
 softwaredesign=Softwarový design
 venndiagrams=Vennovy diagramy
-webEmailOrOther=Web, email or any other internet address
-webLink=Web Link
+webEmailOrOther=Web, e-mail nebo jiná internetová adresa
+webLink=Webový odkaz
 wireframes=Skicy webu

+ 1 - 0
war/resources/dia_da.txt

@@ -472,6 +472,7 @@ outline=Oversigt
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Sider
 pageView=Sidevisning 

+ 1 - 0
war/resources/dia_de.txt

@@ -472,6 +472,7 @@ outline=Übersicht
 oval=Oval
 page=Seite
 pageContent=Seiteninhalt
+pageNotFound=Seite nicht gefunden
 pageWithNumber=Seite-{1}
 pages=Seiten
 pageView=Seitenansicht

+ 1 - 0
war/resources/dia_el.txt

@@ -472,6 +472,7 @@ outline=Περίγραμμα
 oval=Οβάλ
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Σελίδες
 pageView=Προβολή Σελίδας

+ 1 - 0
war/resources/dia_eo.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Paĝo
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Paĝo-{1}
 pages=Paĝoj
 pageView=Page View

+ 1 - 0
war/resources/dia_es.txt

@@ -472,6 +472,7 @@ outline=Contorno
 oval=Óvalo
 page=Página
 pageContent=Page Content
+pageNotFound=Página no encontrada
 pageWithNumber=Página-{1}
 pages=Páginas
 pageView=Vista de página

+ 1 - 0
war/resources/dia_et.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_fa.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_fi.txt

@@ -472,6 +472,7 @@ outline=Ääriviiva
 oval=Ovaali
 page=Sivu
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Sivu-{1}
 pages=Sivut
 pageView=Sivun katselu

+ 1 - 0
war/resources/dia_fil.txt

@@ -472,6 +472,7 @@ outline=Balangkas
 oval=Oblong
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Mga pahina
 pageView=Pagtingin sa pahina

+ 1 - 0
war/resources/dia_fr.txt

@@ -472,6 +472,7 @@ outline=Contour
 oval=Ovale
 page=Page
 pageContent=Page Content
+pageNotFound=Page non trouvée
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Mise en page

+ 1 - 0
war/resources/dia_gu.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_he.txt

@@ -472,6 +472,7 @@ outline=‫מתאר‬
 oval=‫אליפסי‬
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=‫עמודים‬
 pageView=‫תצוגת עמוד‬

+ 1 - 0
war/resources/dia_hi.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_hr.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_hu.txt

@@ -472,6 +472,7 @@ outline=Áttekintés
 oval=Ovális
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Oldalak
 pageView=Oldal elrendezés

+ 1 - 0
war/resources/dia_i18n.txt

@@ -472,6 +472,7 @@ outline=outline
 oval=oval
 page=page
 pageContent=pageContent
+pageNotFound=pageNotFound
 pageWithNumber=pageWithNumber
 pages=pages
 pageView=pageView

+ 1 - 0
war/resources/dia_id.txt

@@ -472,6 +472,7 @@ outline=Ikhtisar
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Halaman-Halaman
 pageView=Tampilan Halaman

+ 1 - 0
war/resources/dia_it.txt

@@ -472,6 +472,7 @@ outline=Contorno
 oval=Ovale
 page=Page
 pageContent=Page Content
+pageNotFound=Pagina non trovata
 pageWithNumber=Page-{1}
 pages=Pagine
 pageView=Vista pagina

+ 1 - 0
war/resources/dia_ja.txt

@@ -472,6 +472,7 @@ outline=アウトライン
 oval=丸
 page=ページ
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=ページ{1}
 pages=ページ
 pageView=ページのレイアウト

+ 1 - 0
war/resources/dia_kn.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_ko.txt

@@ -472,6 +472,7 @@ outline=윤곽
 oval=타원형
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=페이지
 pageView=페이지 보기

+ 1 - 0
war/resources/dia_lt.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_lv.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_ml.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_mr.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_ms.txt

@@ -472,6 +472,7 @@ outline=Garis
 oval=Bujur
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Muka surat
 pageView=Pandangan muka surat

+ 1 - 0
war/resources/dia_nl.txt

@@ -472,6 +472,7 @@ outline=Overzicht
 oval=Ovaal
 page=Pagina
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Pagina-{1}
 pages=Pagina's
 pageView=Weergave pagina

+ 1 - 0
war/resources/dia_no.txt

@@ -472,6 +472,7 @@ outline=Konturlinje
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Sider
 pageView=Sidevisning

+ 1 - 0
war/resources/dia_pl.txt

@@ -472,6 +472,7 @@ outline=Obramowanie
 oval=Owalny
 page=Strona
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Strona-{1}
 pages=Strony
 pageView=Widok strony

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

@@ -472,6 +472,7 @@ outline=Contorno
 oval=Oval 
 page=Página
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Página-{1}
 pages=Páginas
 pageView=Layout da Página 

+ 1 - 0
war/resources/dia_pt.txt

@@ -472,6 +472,7 @@ outline=Contorno
 oval=Oval 
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Páginas
 pageView=Layout da página 

+ 1 - 0
war/resources/dia_ro.txt

@@ -472,6 +472,7 @@ outline=Contur
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pagini
 pageView=Stil de pagină

+ 1 - 0
war/resources/dia_ru.txt

@@ -472,6 +472,7 @@ outline=Контур
 oval=Овал
 page=Страница
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Страница {1}
 pages=Страницы
 pageView=Отображать страницы

+ 1 - 0
war/resources/dia_sk.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_sl.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 6 - 5
war/resources/dia_sr.txt

@@ -20,7 +20,7 @@ allChangesLost=Sve promene će biti izgubljene!
 allPages=All Pages
 allProjects=All Projects
 allSpaces=All Spaces
-allTags=All Tags
+allTags=Sve oznake
 anchor=Anchor
 android=Android
 angle=Ugao
@@ -39,8 +39,8 @@ asNew=Kao novi
 atlas=Moderan
 author=Author
 authorizationRequired=Potrebna autorizacija
-authorizeThisAppIn=Autorizuj ovu aplikaciju u {1}:
-authorize=Autorizuj
+authorizeThisAppIn=Ovlasti ovu aplikaciju u {1}:
+authorize=Ovlasti
 authorizing=Autorizacija
 automatic=Automatski
 autosave=Auto-snimanje
@@ -64,8 +64,8 @@ borderColor=Boja okvira
 borderWidth=Širina okvira
 bottom=Dno
 bottomAlign=Poravnanje pri dnu
-bottomLeft=Bottom Left
-bottomRight=Bottom Right
+bottomLeft=Dole levo
+bottomRight=Dole desno
 bpmn=BPMN
 browser=Pretraživač
 bulletedList=Numerisana lista
@@ -472,6 +472,7 @@ outline=Pregled
 oval=Ovalan
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Stranice
 pageView=Pregled strane

+ 1 - 0
war/resources/dia_sv.txt

@@ -472,6 +472,7 @@ outline=Konturlinje
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Sidor
 pageView=Sidvisning

+ 1 - 0
war/resources/dia_sw.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_ta.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 1 - 0
war/resources/dia_te.txt

@@ -472,6 +472,7 @@ outline=Outline
 oval=Oval
 page=Page
 pageContent=Page Content
+pageNotFound=Page not found
 pageWithNumber=Page-{1}
 pages=Pages
 pageView=Page View

+ 0 - 0
war/resources/dia_th.txt


Some files were not shown because too many files changed in this diff