Kaynağa Gözat

8.5.2 release

David Benson 7 yıl önce
ebeveyn
işleme
7a7e167f66

+ 10 - 0
ChangeLog

@@ -1,3 +1,13 @@
+31-MAR-2018: 8.5.2
+
+- Add mass gliffy import in Confluence Cloud
+- Fixes importing Gliffy sitemap stencils
+- Adds workaround for Confluence Cloud saveMacro problem
+
+28-MAR-2018: 8.5.1
+
+- Confluence Cloud integration improvements
+
 23-MAR-2018: 8.5.0
 
 - Adds shapes in Basic sidebar

+ 1 - 1
VERSION

@@ -1 +1 @@
-8.5.0
+8.5.2

+ 25 - 2
src/main/java/com/mxgraph/io/gliffy/model/GliffyObject.java

@@ -121,9 +121,32 @@ public class GliffyObject implements PostDeserializable
 		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.home");
 		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.gliffy");
 		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.form");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.shopping_cart");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.text");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.video");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.upload");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.slideshow");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.sitemap");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.settings");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.search");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.script");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.print");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.pricing");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.photo");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.map");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.login");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.game");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.gallery");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.download");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.document");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.chat");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.calendar");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.audio");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.profile");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.error");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.success");
+		GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.cloud");
 
-		/*GRAPHICLESS_SHAPES.add("com.gliffy.shape.sitemap.sitemap_v2.page");
-		*/
 
 		GROUP_SHAPES.add("com.gliffy.shape.basic.basic_v1.default.group");
 		GROUP_SHAPES.add("com.gliffy.shape.erd.erd_v1.default.entity_with_attributes");

+ 1 - 1
src/main/webapp/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 03/23/2018 11:58 AM
+# 03/31/2018 02:35 PM
 
 app.html
 index.html?offline=1

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 270
src/main/webapp/connect/confluence/connect-dev.json


+ 9 - 0
src/main/webapp/connect/confluence/connect.json

@@ -19,6 +19,15 @@
     },
     "modules": 
     {
+		"adminPages": [
+			{
+                "key": "gliffyImport",
+                "url": "/connect/confluence/admin.html",
+                "name": {
+                    "value": "Gliffy - draw.io Conversion"
+                }
+            }
+		],
 		"generalPages": [
             {
                 "key": "lightbox",

+ 106 - 6
src/main/webapp/connect/confluence/connectUtils-1-4-8.js

@@ -1172,15 +1172,103 @@ AC.init = function(baseUrl, location, pageId, editor, diagramName, initialXml, d
 	});
 };
 
-AC.loadDiagram = function (pageId, diagramName, revision, success, error, owningPageId, tryRev1) {
+AC.loadDiagram = function (pageId, diagramName, revision, success, error, owningPageId, tryRev1, dontCheckVer) {
 	// TODO: Get binary
 	
-	AP.require('request', function(request) {
+	AP.require(['request', 'confluence'], function(request, confluence) {
+		//Confirm that the macro is in sync with the diagram
+		//Sometimes the diagram is saved but the macro is not updated
+		var attInfo = null;
+		var pageInfo = null;
+		
+		function confirmDiagramInSync()
+		{
+			if (attInfo == null || pageInfo == null) 
+				return;
+			
+			//TODO is this condition enough or we need to check timestamps also?
+			if (attInfo.version.number > revision 
+					&& (pageInfo.version.message == null || pageInfo.version.message.indexOf("Reverted") < 0)) 
+			{
+				AC.loadDiagram(pageId, diagramName, attInfo.version.number, success, error, owningPageId, tryRev1, true);
+				//Update the macro
+				//Custom Content version will be fixed on next save, this will not affect correctness 
+				confluence.getMacroData(function (macroData) 
+		    	{
+					if (macroData != null) 
+					{
+						confluence.saveMacro(
+						{
+							diagramName: macroData.diagramName,
+							revision: attInfo.version.number,
+							pageId: macroData.pageId,
+							contentId: macroData.contentId,
+							contentVer: macroData.contentVer,
+							baseUrl: macroData.baseUrl,
+							width: macroData.width,
+							height: macroData.height,
+							tbstyle: macroData.tbstyle,
+							links: macroData.links,
+							lbox: macroData.lbox != null ? macroData.lbox : '1',
+							zoom: macroData.zoom != null ? macroData.zoom : '1'
+						});
+					}
+		    	});
+			}
+		}
+		
+		//To avoid race we do the version check after loading the diagram in the macro 
+		var localSuccess = function()
+		{
+			success.apply(this, arguments);
+			
+			if (!dontCheckVer && revision != null)
+			{
+	            request({
+	                type: 'GET',
+	                url: '/rest/api/content/' + pageId + '?expand=version',
+	                contentType: 'application/json;charset=UTF-8',
+	                success: function (resp) 
+	                {
+	                	pageInfo = JSON.parse(resp);
+	                    
+	                	confirmDiagramInSync();
+	                },
+	                error: function (resp) 
+	                {
+	                    //Ignore
+	                }
+	            });
+	
+	            request({
+	                type: 'GET',
+	                url: '/rest/api/content/' + pageId + '/child/attachment?filename=' + 
+	                		encodeURIComponent(diagramName) + '&expand=version',
+	                contentType: 'application/json;charset=UTF-8',
+	                success: function (resp) 
+	                {
+	                	var tmp = JSON.parse(resp);
+	                    
+	                	if (tmp.results && tmp.results.length == 1)
+	                	{
+	                		attInfo = tmp.results[0];
+	                	}
+	                	
+	                	confirmDiagramInSync();
+	                },
+	                error: function (resp) 
+	                {
+	                    //Ignore
+	                }
+	            });
+			}
+		}
+		
 		request({
 			//TODO find out the ID of the page that actually holds the attachments because historical revisions do not have attachments
 			url: '/download/attachments/' + pageId + '/' + encodeURIComponent(diagramName) +
 				((revision != null) ? '?version=' + revision : ''),
-			success: success,
+			success: localSuccess,
 			error : function(resp) 
 			{
 				//When a page is copied, attachments are reset to version 1 while the revision parameter remains the same
@@ -1188,14 +1276,14 @@ AC.loadDiagram = function (pageId, diagramName, revision, success, error, owning
 				{
 					request({
 						url: '/download/attachments/' + pageId + '/' + encodeURIComponent(diagramName),
-						success: success,
+						success: localSuccess,
 						error : function(resp) { //If revesion 1 failed, then try the owningPageId
 							if (owningPageId && resp.status == 404)
 							{
 								request({
 									url: '/download/attachments/' + owningPageId + '/' + encodeURIComponent(diagramName)
 										+'?version=' + revision, //this version should exists in the original owning page
-									success: success,
+									success: localSuccess,
 									error : error
 								});
 							}
@@ -1206,7 +1294,7 @@ AC.loadDiagram = function (pageId, diagramName, revision, success, error, owning
 				{
 					request({
 						url: '/download/attachments/' + owningPageId + '/' + encodeURIComponent(diagramName),
-						success: success,
+						success: localSuccess,
 						error : error
 					});
 				}
@@ -1268,6 +1356,18 @@ AC.saveCustomContent = function(spaceKey, pageId, pageType, diagramName, revisio
                {
                    AC.saveCustomContent(spaceKey, pageId, pageType, diagramName, revision, null, null, success, error);
                }
+               //Sometimes the macro is not updated such that the version is not correct. The same happens when a page version is restored
+               else if (err.statusCode == 409 && err.message.indexOf("Current version is:") > 0)
+        	   {
+            	   //We will use the error message to detect the correct version instead of doing another request. 
+            	   //It should be safe as long as error messages are not translated or changed
+            	   var curContentVer = err.message.match(/\d+/);
+            	   
+            	   if (curContentVer != null)
+        		   {
+            		   AC.saveCustomContent(spaceKey, pageId, pageType, diagramName, revision, contentId, curContentVer[0], success, error);
+        		   }
+        	   }
                else
                {
                    error(resp);

+ 1 - 1
src/main/webapp/connect/confluence/macroEditor-1-4-8.html

@@ -38,7 +38,7 @@
 	
 	if (license != null && license == 'none')
 	{
-		if (xdm_e != null && (xdm_e == "https://drawio.atlassian.net" || xdm_e.indexOf('ngrok') > -1))
+		if (xdm_e != null && (xdm_e == "https://drawio.atlassian.net" || xdm_e.indexOf('ngrok') > -1 || xdm_e.indexOf('incura') > -1))
 		{
 			console.log("License status = ", license);
 		}

+ 2 - 0
src/main/webapp/connect/confluence/macroEditor.html

@@ -34,6 +34,8 @@
 	var script = document.createElement('script');
 	script.setAttribute('data-options', 'resize:false;margin:false');
 	
+	alert("Unsupported draw.io version, please upgrade.");
+	
 	// Main
 	script.onload = function()
 	{

+ 71 - 1
src/main/webapp/connect/confluence/viewer-1-4-8.html

@@ -233,11 +233,19 @@ if (lang != null)
 										}
 										else
 										{
+											//In case we want to load another diagram
+											var oldContainer = document.getElementById("drawIODiagram");
+											
+											if (oldContainer != null)
+											{
+												oldContainer.parentNode.removeChild(oldContainer);
+											}
 											// LATER: Fix horizontal alignment ignored with 100% width of iframe
 											// LATER: Fix page scrolling on touch device if trigger event on diagram
 											// LATER: Hide toolbar after second container click for iOS
 											// LATER: Disable responsive resize while lightbox shows
 											var container = document.createElement('div');
+											container.id = "drawIODiagram";
 											container.style.cssText = 'position:absolute;box-sizing:border-box;' +
 												'max-width:100%;border:1px solid transparent;';
 											document.body.appendChild(container);
@@ -322,6 +330,68 @@ if (lang != null)
 											};
 
 										}
+										//Confirm that the macro is in sync with the diagram
+										//Sometimes the diagram is saved but the macro is not updated
+										var attInfo = null;
+										var pageInfo = null;
+										
+										function confirmDiagramInSync()
+										{
+											if (attInfo == null || pageInfo == null) 
+												return;
+											
+											var loadedVer = parseInt(revision);
+											
+											//TODO is this condition enough or we need to check timestamps also?
+											if (attInfo.version.number > loadedVer 
+													&& (pageInfo.version.message == null || pageInfo.version.message.indexOf("Reverted") < 0)) 
+											{
+												showDiagram(id, backupId, name, attInfo.version.number + '', page, links, {dontCheckVer: true});
+												//I think updating macro here is too risky since calling confluence.getMacroData returns null
+											}
+										}
+										
+										if (!retryParams.dontCheckVer && revision != null && revision.length > 0)
+										{
+						                    request({
+						                        type: 'GET',
+						                        url: '/rest/api/content/' + id + '?expand=version',
+						                        contentType: 'application/json;charset=UTF-8',
+						                        success: function (resp) 
+						                        {
+						                        	pageInfo = JSON.parse(resp);
+						                            
+						                        	confirmDiagramInSync();
+						                        },
+						                        error: function (resp) 
+						                        {
+						                            //Ignore
+						                        }
+						                    });
+	
+						                    request({
+						                        type: 'GET',
+						                        url: '/rest/api/content/' + id + '/child/attachment?filename=' + 
+						                        		encodeURIComponent(name) + '&expand=version',
+						                        contentType: 'application/json;charset=UTF-8',
+						                        success: function (resp) 
+						                        {
+						                        	var tmp = JSON.parse(resp);
+						                            
+						                        	if (tmp.results && tmp.results.length == 1)
+						                        	{
+						                        		attInfo = tmp.results[0];
+						                        	}
+						                        	
+						                        	confirmDiagramInSync();
+						                        },
+						                        error: function (resp) 
+						                        {
+						                            //Ignore
+						                        }
+						                    });
+										}
+										
 										//Saving the diagram to this page negates page linking feature!
 										//May be we should ask the user first or saving is not needed all together
 										/*if (retryParams.saveIt)
@@ -401,7 +471,7 @@ if (lang != null)
                             
                             var info = JSON.parse(decodeURIComponent(resp.body.storage.value));
                             
-                            showDiagram(info.pageId, info.pageId, info.diagramName, info.version, null, links);
+                            showDiagram(info.pageId, info.pageId, info.diagramName, info.version, null, links, {dontCheckVer: true}); //custom content can load old versions which will be overridden by version check
                         },
                         error: function (resp) 
                         {

+ 0 - 93
src/main/webapp/connect/jira/connect-dev.json

@@ -1,93 +0,0 @@
-{
-     "name": "Draw.io gaudenz",
-     "description": "Draw.io add-on for JIRA",
-     "key": "com.mxgraph.jira.plugins.drawio.gaudenz",
-     "baseUrl": "https://0d961297.ngrok.io/",
-     "vendor": {
-         "name": "JGraph Ltd.",
-         "url": "https://www.jgraph.com"
-     },
-     "authentication": 
-     {
-         "type": "none"
-     },
-     "version": "1.0.4",
-     "scopes": 
-     [
-     	"READ",
-     	"WRITE",
-     	"DELETE"
-	 ],
-     "modules": 
-     {
-      "generalPages": 
-      [
-      	{
-			"url":"/connect/jira/editor2.html?issueId=${issue.id}",
-			"key":"drawioEditor",
-			"name":
-			{
-				"value":"Draw.io Editor"
-			},
-			"location":"hidden"
-		},
-		{
-			"url":"/connect/jira/fullScreenViewer2.html?issueId=${issue.id}",
-			"key":"drawioFullScreenViewer",
-			"name":
-			{
-				"value":"Draw.io Full Screen Viewer"
-			},
-			"location":"hidden"
-		}
-      ],
-	  "webItems": [
-	    {
-	      "location": "operations-attachments",
-	      "weight": 50,
-	      "key": "drawioEditorBlank",
-	      "url": "/connect/jira/editor2.html?issueId=${issue.id}",
-	      "name": {
-	        "value": "Add Draw.io Diagram"
-	      },
-	      "target": 
-	      {
-			"type":"dialog",
-			"options": 
-			{
-				"width":"100%",
-				"height":"100%",
-				"chrome":false
-			}
-		  }
-	    }, 
-	    {
-       	   "key": "drawioEditorDialog",
-	        "name": 
-	        {
-	            "value": "Draw.io Editor"
-	        },
-	        "url": "/connect/jira/editor2.html?issueId=${issue.id}",
-	        "location": "none",
-	        "context": "addon"
-	    }
-	  ],
-	  "webPanels": 
-	  [
-      {
-        "url": "/connect/jira/viewerPanel2.html?issueId=${issue.id}",
-        "location": "atl.jira.view.issue.right.context",
-        "layout": 
-        {
-          "width": "300px"
-        },
-        "weight": 50,
-        "key": "drawioViewerPanel",
-        "name": 
-        {
-          "value": "Draw.io Diagrams"
-        }
-      }
-    ] 
-	}
- }

BIN
src/main/webapp/images/logo-quip.png


BIN
src/main/webapp/images/sidebar-basic.png


BIN
src/main/webapp/images/sidebar-flowchart.png


+ 3 - 3
src/main/webapp/index.html

@@ -397,10 +397,10 @@
 						width="26" height="20" src="images/youtube.png"/>Quick Start Video</a>
 			</td>
 			<td id="geFooterItem1" align="center" style="width:260px;">
-				<a id="geFooterLink1" title="#1 Rated Confluence Add-on" target="_blank"
-					href="https://about.draw.io/integrations/confluence-integration/">
+				<a id="geFooterLink1" title="draw.io for Quip" target="_blank"
+					href="https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000FH8dSUAT">
 					<img border="0" width="24" height="24" align="absmiddle" style="padding-right:10px;"
-						src="images/logo-confluence.png"/>#1 Rated Confluence App
+						src="images/logo-quip.png"/>Announcing draw.io for Quip
 				</a>
 			</td>
 		</tr>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 55 - 50
src/main/webapp/js/app.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 26 - 26
src/main/webapp/js/atlas-viewer.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 55 - 50
src/main/webapp/js/atlas.min.js


+ 1 - 0
src/main/webapp/js/diagramly/Editor.js

@@ -1487,6 +1487,7 @@
 	mxStencilRegistry.libraries['atlassian'] = [STENCIL_PATH + '/atlassian.xml'];
 	mxStencilRegistry.libraries['bpmn'] = [SHAPES_PATH + '/bpmn/mxBpmnShape2.js', STENCIL_PATH + '/bpmn.xml'];
 	mxStencilRegistry.libraries['er'] = [SHAPES_PATH + '/er/mxER.js'];
+	mxStencilRegistry.libraries['flowchart'] = [SHAPES_PATH + '/mxFlowchart.js', STENCIL_PATH + '/flowchart.xml'];
 	mxStencilRegistry.libraries['ios'] = [SHAPES_PATH + '/mockup/mxMockupiOS.js'];
 	mxStencilRegistry.libraries['rackGeneral'] = [SHAPES_PATH + '/rack/mxRack.js', STENCIL_PATH + '/rack/general.xml'];
 	mxStencilRegistry.libraries['rackF5'] = [STENCIL_PATH + '/rack/f5.xml'];

+ 17 - 2
src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js

@@ -24,6 +24,7 @@
 			this.createVertexTemplateEntry(s2 + 'cone', w, h, '', 'Cone', null, null, this.getTagsForStencil(gn, 'cone', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'cone2;dx=0.5;dy=0.9;', w, h, '', 'Cone (adjustable)', null, null, this.getTagsForStencil(gn, 'cone', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'document', w, h, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'donut;dx=25;', w, h, '', 'Donut', null, null, this.getTagsForStencil(gn, 'donut', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'drop', w * 0.7, h, '', 'Drop', null, null, this.getTagsForStencil(gn, 'drop', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'flash', w * 0.6, h, '', 'Flash', null, null, this.getTagsForStencil(gn, 'flash', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'half_circle', w, h * 0.5, '', 'Half Circle', null, null, this.getTagsForStencil(gn, 'half_circle', dt).join(' ')),
@@ -40,15 +41,29 @@
 			this.createVertexTemplateEntry(s + 'pentagon', w, h * 0.9, '', 'Pentagon', null, null, this.getTagsForStencil(gn, 'pentagon', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'pointed_oval', w * 0.5, h, '', 'Pointed Oval', null, null, this.getTagsForStencil(gn, 'pointed oval', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;', w, h, '', 'Pyramid', null, null, this.getTagsForStencil(gn, 'pyramid', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'diag_snip_rect;dx=6;', w, h * 0.6, '', 'Diagonal Snip Rectangle', null, null, this.getTagsForStencil(gn, 'diag_snip_rect', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'diag_round_rect;dx=6;', w, h * 0.6, '', 'Diagonal Rounded Rectangle', null, null, this.getTagsForStencil(gn, 'diag_round_rect', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'corner_round_rect;dx=6;', w, h * 0.6, '', 'Corner Rounded Rectangle', null, null, this.getTagsForStencil(gn, 'corner_round_rect', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'plaque;dx=6;', w, h * 0.6, '', 'Plaque', null, null, this.getTagsForStencil(gn, 'plaque', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'frame;dx=10;', w, h * 0.6, '', 'Frame', null, null, this.getTagsForStencil(gn, 'frame', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'rounded_frame;dx=10;', w, h * 0.6, '', 'Rounded Frame', null, null, this.getTagsForStencil(gn, 'rounded_frame', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'plaque_frame;dx=10;', w, h * 0.6, '', 'Plaque Frame', null, null, this.getTagsForStencil(gn, 'plaque_frame', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'frame_corner;dx=10;', w, h * 0.6, '', 'Frame Corner', null, null, this.getTagsForStencil(gn, 'frame_corner', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'diag_stripe;dx=10;', w, h * 0.6, '', 'Diagonal Stripe', null, null, this.getTagsForStencil(gn, 'diag_stripe', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'rectCallout;dx=30;dy=15;boundedLbl=1;', w, h * 0.6, '', 'Rectangular Callout', null, null, this.getTagsForStencil(gn, 'rectangular_callout', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;', w, h * 0.6, '', 'Rounded Rectangular Callout', null, null, this.getTagsForStencil(gn, 'rectangular_callout', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'layered_rect;dx=10;', w, h * 0.6, '', 'Layered Rectangle', null, null, this.getTagsForStencil(gn, 'layered_rect', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'smiley', w, h, '', 'Smiley', null, null, this.getTagsForStencil(gn, 'smiley', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'star', w, h * 0.95, '', 'Star', null, null, this.getTagsForStencil(gn, 'star', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'sun', w, h, '', 'Sun', null, null, this.getTagsForStencil(gn, 'sun', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'tick', w * 0.85, h, '', 'Tick', null, null, this.getTagsForStencil(gn, 'tick', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'wave2;dy=0.3;', w, h * 0.6, '', 'Wave', null, null, this.getTagsForStencil(gn, 'wave', dt).join(' ')),
-			this.createVertexTemplateEntry(s2 + 'x', w, h, '', 'X', null, null, this.getTagsForStencil(gn, 'x', dt).join(' '))
-			
+			this.createVertexTemplateEntry('labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.button;dx=10;', w, h * 0.6, 'Button', 'Button', null, null, this.getTagsForStencil(gn, 'button', dt).join(' ')),
+			this.createVertexTemplateEntry('labelPosition=center;verticalLabelPosition=middle;html=1;strokeWidth=2;shape=mxgraph.basic.shaded_button;dx=10;fillColor=#E6E6E6;strokeColor=none;', w, h * 0.6, 'Button', 'Button (shaded)', null, null, this.getTagsForStencil(gn, 'button', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'x', w, h, '', 'X', null, null, this.getTagsForStencil(gn, 'x', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'pie;startAngle=0.2;endAngle=0.9;', w, h, '', 'Pie', null, null, this.getTagsForStencil(gn, 'pie', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'arc;startAngle=0.3;endAngle=0.1;', w, h, '', 'Arc', null, null, this.getTagsForStencil(gn, 'arc', dt).join(' ')),
+			this.createVertexTemplateEntry(s2 + 'partConcEllipse;startAngle=0.25;endAngle=0.1;arcWidth=0.5;', w, h, '', 'Partial Concentric Ellipse', null, null, this.getTagsForStencil(gn, 'partConcEllipse', dt).join(' '))
 		]);
 	};
 

+ 9 - 8
src/main/webapp/js/diagramly/sidebar/Sidebar-Flowchart.js

@@ -6,6 +6,7 @@
 		var h = 100;
 		var s = 'strokeWidth=2;html=1;shape=mxgraph.flowchart.';
 		var s2 = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;html=1;strokeWidth=2;shape=mxgraph.flowchart.';
+		var s3 = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;html=1;strokeWidth=2;shape=';
 		var gn = 'mxgraph.flowchart';
 		var dt = '';
 		
@@ -13,29 +14,29 @@
 		[
 			this.createVertexTemplateEntry(s + 'annotation_1;align=left;', w * 0.5, h, '', 'Annotation', null, null, this.getTagsForStencil(gn, 'annotation_1', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'annotation_2;align=left;', w * 0.5, h, '', 'Annotation', null, null, this.getTagsForStencil(gn, 'annotation_2', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'card;whiteSpace=wrap;', w, h * 0.6, '', 'Card', null, null, this.getTagsForStencil(gn, 'card', dt).join(' ')),
+			this.createVertexTemplateEntry(s3 + 'card;whiteSpace=wrap;size=20;arcSize=12;', w, h * 0.6, '', 'Card', null, null, this.getTagsForStencil(gn, 'card', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'collate;', w, h, '', 'Collate', null, null, this.getTagsForStencil(gn, 'collate', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'data;whiteSpace=wrap;', w, h * 0.6, '', 'Data', null, null, this.getTagsForStencil(gn, 'data', dt).join(' ')),
+			this.createVertexTemplateEntry(s3 + 'parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;rounded=1;arcSize=12;size=0.23;', w, h * 0.6, '', 'Data', null, null, this.getTagsForStencil(gn, 'data', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'database;whiteSpace=wrap;', w * 0.6, h * 0.6, '', 'Database', null, null, this.getTagsForStencil(gn, 'database', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'decision;whiteSpace=wrap;', w, h, '', 'Decision', null, null, this.getTagsForStencil(gn, 'decision', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'delay;whiteSpace=wrap;', w, h * 0.6, '', 'Delay', null, null, this.getTagsForStencil(gn, 'delay', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'direct_data;whiteSpace=wrap;', w, h * 0.6, '', 'Direct Data', null, null, this.getTagsForStencil(gn, 'direct_data', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'display;whiteSpace=wrap;', w, h * 0.6, '', 'Display', null, null, this.getTagsForStencil(gn, 'display', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'document;whiteSpace=wrap;', w, h * 0.6, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
+			this.createVertexTemplateEntry(s + 'document2;whiteSpace=wrap;size=0.25;', w, h * 0.6, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'extract_or_measurement;whiteSpace=wrap;', w * 0.95, h * 0.6, '', 'Extract or Measurement', null, null, this.getTagsForStencil(gn, 'extract_or_measurement', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'internal_storage;whiteSpace=wrap;', w * 0.7, h * 0.7, '', 'Internal Storage', null, null, this.getTagsForStencil(gn, 'internal_storage', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'loop_limit;whiteSpace=wrap;', w, h * 0.6, '', 'Loop Limit', null, null, this.getTagsForStencil(gn, 'loop_limit', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'manual_input;whiteSpace=wrap;', w, h * 0.6, '', 'Manual Input', null, null, this.getTagsForStencil(gn, 'manual_input', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'manual_operation;whiteSpace=wrap;', w, h * 0.6, '', 'Manual Operation', null, null, this.getTagsForStencil(gn, 'manual_operation', dt).join(' ')),
+			this.createVertexTemplateEntry(s3 + 'manualInput;whiteSpace=wrap;rounded=1;size=26;arcSize=11;', w, h * 0.6, '', 'Manual Input', null, null, this.getTagsForStencil(gn, 'manual_input', dt).join(' ')),
+			this.createVertexTemplateEntry(s3 + 'trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;size=0.23;arcSize=10;flipV=1;', w, h * 0.6, '', 'Manual Operation', null, null, this.getTagsForStencil(gn, 'manual_operation', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'merge_or_storage;whiteSpace=wrap;', w * 0.95, h * 0.6, '', 'Merge or Storage', null, null, this.getTagsForStencil(gn, 'merge_or_storage', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'multi-document;whiteSpace=wrap;', w * 0.88, h * 0.6, '', 'Multi-Document', null, null, this.getTagsForStencil(gn, 'multi-document', dt).join(' ')),
-			this.createVertexTemplateEntry(s2 + 'off-page_reference;', w * 0.6, h * 0.6, '', 'Off-Page Reference', null, null, this.getTagsForStencil(gn, 'off-page_reference', dt).join(' ')),
+			this.createVertexTemplateEntry(s3 + 'offPageConnector;rounded=0;size=0.5;', w * 0.6, h * 0.6, '', 'Off-Page Reference', null, null, this.getTagsForStencil(gn, 'off-page_reference', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'on-page_reference;', w * 0.6, h * 0.6, '', 'On-Page Reference', null, null, this.getTagsForStencil(gn, 'on-page_reference', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'summing_function;', w * 0.7, h * 0.7, '', 'Or', null, null, this.getTagsForStencil(gn, 'summing_function', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'paper_tape;whiteSpace=wrap;', w, h * 0.65, '', 'Paper Tape', null, null, this.getTagsForStencil(gn, 'paper_tape', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'parallel_mode;', w * 0.95, h * 0.4, '', 'Parallel Mode', null, null, this.getTagsForStencil(gn, 'parallel_mode', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'predefined_process;whiteSpace=wrap;', w, h * 0.6, '', 'Predefined Process', null, null, this.getTagsForStencil(gn, 'predefined_process', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'preparation;whiteSpace=wrap;', w, h * 0.6, '', 'Preparation', null, null, this.getTagsForStencil(gn, 'preparation', dt).join(' ')),
+			this.createVertexTemplateEntry(s3 + 'process;whiteSpace=wrap;rounded=1;size=0.14;arcSize=6;', w, h * 0.6, '', 'Predefined Process', null, null, this.getTagsForStencil(gn, 'predefined_process', dt).join(' ')),
+			this.createVertexTemplateEntry(s3 + 'hexagon;perimeter=hexagonPerimeter2;arcSize=6;size=0.27;', w, h * 0.6, '', 'Preparation', null, null, this.getTagsForStencil(gn, 'preparation', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'process;whiteSpace=wrap;', w, h, '', 'Process', null, null, this.getTagsForStencil(gn, 'process', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'sequential_data;whiteSpace=wrap;', w, h, '', 'Sequential Data', null, null, this.getTagsForStencil(gn, 'sequential_data', dt).join(' ')),
 			this.createVertexTemplateEntry(s2 + 'sort;', w, h, '', 'Sort', null, null, this.getTagsForStencil(gn, 'sort', dt).join(' ')),

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 1
src/main/webapp/js/embed-static.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 1
src/main/webapp/js/reader.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 69 - 4
src/main/webapp/js/shapes.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 26 - 26
src/main/webapp/js/viewer.min.js


+ 2 - 20
src/main/webapp/plugins/cConf-1-4-8.js

@@ -156,8 +156,8 @@ Draw.loadPlugin(function(ui)
 		
 		if (td != null)
 		{
-			td.innerHTML = '<a title="faq" href="https://marketplace.atlassian.com/plugins/com.mxgraph.confluence.plugins.diagramly/cloud/reviews" target="_blank">' +
-			'<img border="0" align="absmiddle" style="margin-top:-4px;"/>Enjoying this free plugin? Please help us to 4 stars.</a>';
+			td.innerHTML = '<a title="faq" href="/wiki/plugins/servlet/upm" target="_blank">' +
+			'<img border="0" align="absmiddle" style="margin-top:-4px;"/>Please license draw.io to enable all functionality</a>';
 		}
 		
 		td = document.getElementById('geFooterItem1');	
@@ -174,22 +174,4 @@ Draw.loadPlugin(function(ui)
 			td.parentNode.removeChild(td);
 		}
 	}
-	
-	var lang = urlParams['lang'];
-	var site = urlParams['site'];
-	var user = urlParams['user'];
-	
-	try
-	{
-		var img = new Image();
-		img.src = 'https://log.draw.io/log?severity=CONFIG&msg=conf-cloud-edit' +
-				((lang != null) ? ':lang=' + encodeURIComponent(lang) : '') + 
-				((site != null) ? ':site=' + encodeURIComponent(site) : '') + 
-				((user != null) ? ':user=' + encodeURIComponent(user) : '') +
-				'&v=' + encodeURIComponent(EditorUi.VERSION);
-	}
-	catch (e)
-	{
-		// not important, just don't break editing because of a log
-	}
 });

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1367 - 3
src/main/webapp/shapes/mxBasic.js


+ 74 - 0
src/main/webapp/shapes/mxFlowchart.js

@@ -0,0 +1,74 @@
+/**
+ * $Id: mxFlowchart.js,v 1.5 2016/04/1 12:32:06 mate Exp $
+ * Copyright (c) 2006-2018, JGraph Ltd
+ */
+//**********************************************************************************************************************************************************
+// Document 2
+//**********************************************************************************************************************************************************
+/**
+* Extends mxShape.
+*/
+function mxShapeFlowchartDocument2(bounds, fill, stroke, strokewidth)
+{
+	mxShape.call(this);
+	this.bounds = bounds;
+	this.fill = fill;
+	this.stroke = stroke;
+	this.strokewidth = (strokewidth != null) ? strokewidth : 1;
+	this.size = 0.5;
+};
+
+/**
+* Extends mxShape.
+*/
+mxUtils.extend(mxShapeFlowchartDocument2, mxActor);
+
+mxShapeFlowchartDocument2.prototype.cst = {DOCUMENT2 : 'mxgraph.flowchart.document2'};
+
+/**
+* Function: paintVertexShape
+* 
+* Paints the vertex shape.
+*/
+mxShapeFlowchartDocument2.prototype.paintVertexShape = function(c, x, y, w, h)
+{
+	c.translate(x, y);
+
+	var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size))));
+	var fy = 1.4;
+	var r = 5;
+	
+	c.begin();
+	c.moveTo(w - r, 0);
+	c.arcTo(r, r, 0, 0, 1, w, r);
+	c.lineTo(w, h - dy / 2);
+	c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2);
+	c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2);
+	c.lineTo(0, dy / 2);
+	c.lineTo(0, r);
+	c.arcTo(r, r, 0, 0, 1, r, 0);
+	c.close();
+	c.fillAndStroke();
+
+};
+
+mxCellRenderer.registerShape(mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2, mxShapeFlowchartDocument2);
+
+mxShapeFlowchartDocument2.prototype.constraints = null;
+
+Graph.handleFactory[mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2] = function(state)
+{
+	var handles = [Graph.createHandle(state, ['size'], function(bounds)
+	{
+		var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size))));
+
+		return new mxPoint(bounds.x + 3 * bounds.width / 4, bounds.y + (1 - size) * bounds.height);
+
+	}, function(bounds, pt)
+	{
+		this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height));
+	})];
+			
+	return handles;
+};
+