606 Commits

Author SHA1 Message Date
Paulo Gustavo Veiga
2b3fdf1196 Fix release version on master. 2014-09-21 22:20:48 -03:00
Paulo Gustavo Veiga
08d2403133 Merge branch 'develop' 2014-09-09 22:41:53 -03:00
Claudio Barril
802c9d3375 fix exporter to freemind issues (shape, font styles and font sizes) 2014-09-08 14:36:49 -03:00
Claudio Barril
81b138cf62 Merge remote-tracking branch 'origin/WISE-253-support-freemind-101' into develop 2014-09-07 23:31:57 -03:00
Claudio Barril
25ee14b7aa add default to import error manager 2014-09-07 23:16:00 -03:00
Claudio Barril
014d9334b3 fix nomenclature test name 2014-09-07 23:15:48 -03:00
Claudio Barril
7ee42468bd freemind constant 2014-09-07 23:15:27 -03:00
Claudio Barril
c83f4bd213 add test for version comparison 2014-09-07 21:02:04 -03:00
Claudio Barril
b0a6e7fac5 fixing files to test export 2014-09-07 20:20:03 -03:00
Claudio Barril
7d973c7a87 setting default version for freemind export 2014-09-07 20:16:23 -03:00
Claudio Barril
d8e255cac8 considering possibility of null positions 2014-09-07 20:16:09 -03:00
Claudio Barril
b45f874ce4 remove console printing for debugging 2014-09-07 18:51:19 -03:00
Claudio Barril
8b6764af17 hack fix for relationships when import/export for freemind 2014-09-07 16:58:14 -03:00
Claudio Barril
a6a79e9f94 fix vertical order when export to freemind versions. 2014-09-07 16:10:06 -03:00
Claudio Barril
94e76fad9c support both export versions for freemind (old and new 1.0.1) 2014-09-07 16:06:58 -03:00
Claudio Barril
3c9573c93e fix drawn and freemind test 2014-08-30 22:42:28 -03:00
Claudio Barril
663310b388 copy parent background color when a sibling or a child is created 2014-08-25 23:58:13 -03:00
Claudio Barril
4641c3cc5a fix side as first level nodes are drawn 2014-08-25 23:32:17 -03:00
Claudio Barril
1ff3cf2127 fixing import dialog, parameters modification and redirect 2014-08-20 23:31:14 -03:00
Claudio Barril
7b512ea2f6 removing comparasion hack and fixing order to compare versions 2014-08-20 23:30:24 -03:00
Ezequiel Bergamaschi
8318e897fe fix less update and restoring symblinks 2014-08-18 21:23:42 -03:00
Ezequiel Bergamaschi
99c909c69b Revert "fix alias checking for jetty 9.x"
This reverts commit fff27e1bb7.
2014-08-18 21:10:25 -03:00
Ezequiel Bergamaschi
704fb02d1a old jetty pom 2014-08-18 21:09:56 -03:00
Ezequiel Bergamaschi
8686eb0ad4 Revert "removing unnecesary build"
This reverts commit 52cac830ae.
2014-08-18 20:19:59 -03:00
Paulo Gustavo Veiga
5de02c8d51 Bug WISE-242 fixed
Add support for Firefox 3
2014-06-25 21:26:58 -03:00
Ezequiel Bergamaschi
fff27e1bb7 fix alias checking for jetty 9.x 2014-06-19 00:43:10 -03:00
Ezequiel Bergamaschi
c0abb0a71c adding wisemapping service script 2014-05-26 00:19:10 -03:00
Michael Magill
e273c52f59 I was getting a 404 because it was looking for en_us, not just en. The en template may need to be copied for other English locales like en_GB, en_CA, etc. The 404 only showed up in Firefox's developer console did not appear to affect functionality, so this is just cleanup. 2014-04-29 15:42:31 +00:00
Paulo Gustavo Veiga
d23bff3f09 Merge branch 'develop' 2014-04-29 11:30:12 -03:00
Michael Magill
d609f6f3d7 Syntax error, CHARACTER SET utf8; should have been at the end of the create r_label_mindmap enty, not the bottom of the file. Probably copy and paste error. 2014-04-29 14:23:29 +00:00
Paulo Gustavo Veiga
1d6adf177f Merge branch 'develop' 2014-04-29 11:19:18 -03:00
Paulo Gustavo Veiga
06004f73a8 Rename migration script ... 2014-04-29 11:17:20 -03:00
Paulo Gustavo Veiga
8542ef8b13 Merge branch 'develop' 2014-04-27 12:07:24 -03:00
Paulo Gustavo Veiga
72034aad1e Remove all used users for setup. Pending to define data set. 2014-04-27 12:05:49 -03:00
Paulo Gustavo Veiga
9efa963ec8 Fix SQL names. 2014-04-27 11:13:38 -03:00
Paulo Gustavo Veiga
55ab0f280f Merge branch 'develop' 2014-04-26 21:16:57 -03:00
Paulo Gustavo Veiga
a42811630d Merge branch 'develop' into feature/WISE-211-iconSupportOnLabels 2014-04-26 21:15:57 -03:00
Paulo Gustavo Veiga
5dd2440a73 Merge branch 'develop' 2014-04-26 21:11:35 -03:00
Paulo Gustavo Veiga
d7ca087182 Mir fix on label. 2014-04-26 21:08:13 -03:00
Claudio Barril
d2a99998b5 add update for label icon support with tag as default 2014-04-26 18:27:01 -03:00
Paulo Gustavo Veiga
d6a60636ed Merged feature/WISE-211-iconSupportOnLabels into develop 2014-04-26 15:44:36 -03:00
Paulo Gustavo Veiga
9ca2f6bb1e Merged in ldap-changes (pull request #1)
move 'ou=' from being hardcoded to part of security.ldap.subDn
2014-04-26 15:39:29 -03:00
Michael Magill
b886a5888a removed "ou=" from LDAP user search since it is now integrated with security.ldap.subDn 2014-04-25 20:41:50 +00:00
Michael Magill
cec140b1fd changed default security.ldap.subDn parameter to include "ou=" 2014-04-25 20:36:48 +00:00
Michael Magill
84cffac713 removed extra / from site.baseurl 2014-04-25 20:30:18 +00:00
Ezequiel Bergamaschi
754d4b3dcf fixing wrong reference variable 2014-04-19 14:18:35 -03:00
Paulo Gustavo Veiga
7ee577c400 Update ads codes. 2014-04-18 19:48:09 -03:00
Paulo Gustavo Veiga
c854c1b377 Update analitics tracking code. 2014-04-18 19:13:55 -03:00
Ezequiel Bergamaschi
bfe24b7dfb popovers for icons in label icon chooser 2014-04-17 01:29:44 -03:00
Claudio Barril
85c7e3ce5c fixing tests broken because refactor of label attribute icon 2014-04-16 10:29:36 -03:00
Claudio Barril
27304ea385 label icon list reduced 2014-04-16 03:00:00 -03:00
Claudio Barril
8a994ee6f5 jsp include for label icon list 2014-04-16 02:59:33 -03:00
Claudio Barril
5ec3b6cce1 label attribute icon to iconName refactor (because of eze code review) 2014-04-16 02:38:33 -03:00
Claudio Barril
8cd05ec37e adding icon to tags list (when tagging) and some style 2014-04-16 02:25:07 -03:00
Ezequiel Bergamaschi
5a00229390 adding css for color chooser 2014-04-16 01:57:42 -03:00
Ezequiel Bergamaschi
4b01f7c8ee removing fixme from dialogForm function 2014-04-16 01:48:09 -03:00
Claudio Barril
edb91b92bd fix tests 2014-04-16 00:25:32 -03:00
Claudio Barril
c6ae7be255 import label list from another jsp prototype 2014-04-14 18:14:56 -03:00
Claudio Barril
86ba19c120 sending icon data to api rest 2014-04-14 18:14:32 -03:00
Claudio Barril
183ab33729 add styles 2014-04-14 18:10:16 -03:00
Claudio Barril
9e992a8f61 add label icons back-end (model and database) 2014-04-14 18:09:34 -03:00
Claudio Barril
5d18283285 icon ui selection 2014-04-12 19:04:28 -03:00
Claudio Barril
d66666010d icon dropdown creation dialog 2014-04-12 19:04:19 -03:00
Claudio Barril
bddf867b63 icon message 2014-04-12 19:03:31 -03:00
Claudio Barril
d0d161e8ab fix padding and label in two lines 2014-04-09 00:13:38 -03:00
Claudio Barril
64c7198d50 update mysql schemas population 2014-03-19 23:29:00 -03:00
Claudio Barril
2fae012fd9 update hsql schemas population 2014-03-19 23:28:46 -03:00
Paulo Gustavo Veiga
e8ee76c5f8 Merged feature/WISE-220-mindmapListImprovements into develop 2014-03-16 11:34:38 -03:00
Ezequiel Bergamaschi
3d6df8a143 Revert "new header"
This reverts commit 251f0eca46.

Conflicts:

	wise-webapp/src/main/webapp/jsp/header.jsp
2014-03-14 23:59:16 -03:00
Ezequiel Bergamaschi
dec0fb7aef bootstrap 13px 2014-03-14 23:57:23 -03:00
Ezequiel Bergamaschi
980a984499 bootstrap 12px and 13px 2014-03-14 23:48:05 -03:00
Ezequiel Bergamaschi
1f8e251009 orange buttons new header 2014-03-13 00:41:45 -03:00
Ezequiel Bergamaschi
4729022d6a updating webdefault.xml 2014-03-12 23:42:30 -03:00
Ezequiel Bergamaschi
eb9a28603c updating jetty version and removing old config 2014-03-12 23:42:20 -03:00
Ezequiel Bergamaschi
d191aa9075 reducing delete dialog size 2014-03-12 01:53:47 -03:00
Ezequiel Bergamaschi
e585686bd2 bootstrap recompiled with base font size 12px 2014-03-12 01:41:36 -03:00
Ezequiel Bergamaschi
44b3707005 avoid override bootstrap nav-pills class 2014-03-11 23:43:45 -03:00
Ezequiel Bergamaschi
251f0eca46 new header 2014-03-10 01:22:30 -03:00
Ezequiel Bergamaschi
1bdf75e295 rows clickeables 2014-03-10 00:12:49 -03:00
Ezequiel Bergamaschi
ccdab5257b css and animation fadeIn 2014-03-09 23:41:39 -03:00
Ezequiel Bergamaschi
797a4adfd4 small searcher 2014-03-09 23:41:17 -03:00
Ezequiel Bergamaschi
3b64577d15 small buttons 2014-03-09 23:41:00 -03:00
Ezequiel Bergamaschi
06fc95c454 Revert "rename parameter"
This reverts commit 29894a276e.
2014-03-09 22:08:46 -03:00
Claudio Barril
0c15789c4b force linkLabel to use view security in mindmap service 2014-03-09 02:34:20 -03:00
Claudio Barril
ae31613fdd renaming method addLabel to linkLabel 2014-03-09 02:34:20 -03:00
Paulo Gustavo Veiga
6432fefa67 Merged WISE-217-fixMindmapsAreShowingOtherUserLabels into develop 2014-03-08 23:58:20 -03:00
Claudio Barril
29037e60d8 select only my labels from all mindmap labels 2014-03-08 16:29:43 -03:00
Claudio Barril
29894a276e rename parameter 2014-03-08 16:29:42 -03:00
Claudio Barril
db0595ac7e remove unused exception and class 2014-03-08 16:29:42 -03:00
Paulo Gustavo Veiga
bf8345908b Merge branch 'feature/WISE-15-mindmapListFolderSupport' into develop 2014-03-04 16:11:52 -03:00
Mariela Michalek
d111c54f15 add new label test 2014-02-25 22:19:52 -03:00
Paulo Gustavo Veiga
6a5eb910b5 Fix display lock message. 2014-02-17 09:05:54 -03:00
Ezequiel Bergamaschi
8462e54293 Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport
Conflicts:
	wise-webapp/src/main/webapp/jsp/mindmapList.jsp
2014-02-14 03:54:36 -03:00
Paulo Gustavo Veiga
7b45b4b633 Remove console.log messsage. 2014-02-12 14:37:04 -03:00
Paulo Gustavo Veiga
b7051d56c0 Fix modal dialogs loading ... 2014-02-12 14:37:04 -03:00
Paulo Gustavo Veiga
8be0f19792 Move adsense location 2014-02-12 01:00:12 -03:00
Paulo Gustavo Veiga
44dbce0801 Fix login color h1. 2014-02-12 00:55:04 -03:00
Paulo Gustavo Veiga
878fe464ea Reference bootstrap min.
Fin export dialog.
2014-02-12 00:20:06 -03:00
Paulo Gustavo Veiga
68fd71d300 Fix no closed div element on account settings. 2014-02-11 23:27:46 -03:00
Paulo Gustavo Veiga
73e955afac Fix table hover issue. 2014-02-11 21:45:29 -03:00
Ezequiel Bergamaschi
ea4684d9c8 get label by id with user and validate label exists on link to mindmap 2014-02-11 02:04:09 -03:00
Ezequiel Bergamaschi
0b021c7602 style change.. 2014-02-11 01:36:19 -03:00
Ezequiel Bergamaschi
1de1a9f55f warning in yellow 2014-02-11 01:05:31 -03:00
Ezequiel Bergamaschi
60d75b6f2d code indendt 2014-02-11 00:48:48 -03:00
Ezequiel Bergamaschi
ae71b1331f fix focus on modal 2014-02-11 00:43:20 -03:00
Ezequiel Bergamaschi
c56698d085 fix color picker on background 2014-02-11 00:43:04 -03:00
Ezequiel Bergamaschi
7299c7d506 fixing ui 2014-02-11 00:18:46 -03:00
Ezequiel Bergamaschi
9e8f73df99 Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport
Conflicts:
	wise-webapp/src/main/webapp/jsp/mindmapList.jsp
2014-02-10 22:16:48 -03:00
Ezequiel Bergamaschi
572eb44e7a Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport
Conflicts:
	wise-webapp/src/main/webapp/bootstrap/css/bootstrap.css
	wise-webapp/src/main/webapp/bootstrap/css/bootstrap.min.css
	wise-webapp/src/main/webapp/css/mindmapList.less
	wise-webapp/src/main/webapp/js/mindmapList.js
	wise-webapp/src/main/webapp/jsp/mindmapList.jsp
2014-02-10 01:07:50 -03:00
Ezequiel Bergamaschi
1d6e3ec4bf new tests added 2014-02-10 00:59:13 -03:00
Ezequiel Bergamaschi
83e51a6501 return location on header 2014-02-10 00:58:42 -03:00
Ezequiel Bergamaschi
5733dbf45e color validation 2014-02-10 00:58:29 -03:00
Ezequiel Bergamaschi
b110d338af attributes nullable 2014-02-10 00:58:19 -03:00
Paulo Gustavo Veiga
08a066271b Merged WISE-209-new-map-is-not-working-on-ie-10 into develop 2014-02-09 23:11:38 -03:00
Paulo Gustavo Veiga
8996df4cbb More minor fixes. 2014-02-09 22:44:58 -03:00
Paulo Gustavo Veiga
c5932dc0f8 Fix mindmap list navigator toolbar. 2014-02-09 22:14:53 -03:00
Paulo Gustavo Veiga
832fb6ce52 Enable MYSQL display message. 2014-02-09 22:04:01 -03:00
Paulo Gustavo Veiga
bbc380366f Fix login page. 2014-02-09 21:58:23 -03:00
Paulo Gustavo Veiga
95d9414ae3 Change sd to md styles. 2014-02-09 20:12:24 -03:00
Mariela Michalek
1a31e5ee99 Refactor Imports and Helper 2014-02-09 18:37:10 -03:00
Mariela Michalek
d48abe6121 refactor test - add helper class 2014-02-09 17:50:57 -03:00
Mariela Michalek
f564b4b34a rename test 2014-02-09 15:19:07 -03:00
Mariela Michalek
147a4ec06a adding new suite test 2014-02-09 13:57:00 -03:00
Mariela Michalek
c81439cae8 Revert "deleting unnecessary XML annotation"
This reverts commit f65149c948.
2014-02-09 12:25:21 -03:00
Paulo Gustavo Veiga
06d3f0cd25 Fix publish page. 2014-02-09 04:54:36 -03:00
Paulo Gustavo Veiga
2a37167b01 Fix import dialog... 2014-02-09 04:34:25 -03:00
Paulo Gustavo Veiga
2b89fdccca Fix registration, login 2014-02-09 04:19:39 -03:00
Paulo Gustavo Veiga
6624abb9ed Fix login. 2014-02-09 04:03:43 -03:00
Paulo Gustavo Veiga
726ffcd817 First corrections.
Fix more styling issues.

Conflicts:
	wise-webapp/src/main/webapp/jsp/accountSettings.jsp
2014-02-09 03:26:51 -03:00
Paulo Gustavo Veiga
356ab4b1c1 Created new branch WISE-209-new-map-is-not-working-on-ie-10 2014-02-09 06:18:36 +00:00
Ezequiel Bergamaschi
a9c1d42925 fix animate on delete 2014-02-08 18:54:14 -03:00
Ezequiel Bergamaschi
08a9289893 filter list appears all simultaneously 2014-02-08 18:25:32 -03:00
Ezequiel Bergamaschi
3df00e9e0e dialog modal with focus and submit on enter 2014-02-08 17:54:10 -03:00
Ezequiel Bergamaschi
b3e2e37929 fix animate bug 2014-02-08 17:53:47 -03:00
Ezequiel Bergamaschi
7f6d575c16 animation on bubble hover 2014-02-07 06:08:40 -03:00
Ezequiel Bergamaschi
10b9a4ceb2 bubbles 2014-02-07 06:08:40 -03:00
Ezequiel Bergamaschi
d23595a75c update 2014-02-07 06:08:40 -03:00
Ezequiel Bergamaschi
a3c6ce10c2 animation on create an delete tags 2014-02-07 06:08:40 -03:00
Ezequiel Bergamaschi
1444be36ce Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport
Conflicts:
	config/database/hsql/drop-schemas.sql
	config/database/mysql/drop-schemas.sql
	wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java
	wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java
	wise-webapp/src/main/webapp/js/mindmapList.js
2014-02-06 02:10:54 -03:00
Ezequiel Bergamaschi
ba90addad2 fixing the annoying duplicate key on link label to maps 2014-02-06 00:44:36 -03:00
Ezequiel Bergamaschi
cfa669fe2e adding hibernate config 2014-02-05 21:55:37 -03:00
Ezequiel Bergamaschi
efb7e0cc3b fix add label UI 2014-02-05 21:44:30 -03:00
Ezequiel Bergamaschi
668506ceb8 adding missing msgs 2014-02-05 21:25:59 -03:00
Ezequiel Bergamaschi
105c0544e1 removing comment line 2014-02-05 21:21:37 -03:00
Ezequiel Bergamaschi
29acc46d34 solving merge conflict 2014-02-05 21:21:00 -03:00
Ezequiel Bergamaschi
6fe9dcf578 comment save 2014-02-05 02:27:33 -03:00
Ezequiel Bergamaschi
d555309c22 moving api methods to MindmapController 2014-02-05 02:11:23 -03:00
Ezequiel Bergamaschi
d089b471fc remove classes of relationship 2014-02-05 02:10:12 -03:00
Claudio Barril
7525ba4820 Merge remote-tracking branch 'origin/develop' into feature/WISE-16-remove_user 2014-02-04 22:18:29 -03:00
Claudio Barril
58390dfb92 Merge remote-tracking branch 'origin/develop' into feature/WISE-16-remove_user 2014-02-04 22:18:29 -03:00
Paulo Gustavo Veiga
b765a21369 Bug https://wisemapping.atlassian.net/browse/WISE-209 fixed. 2014-02-03 22:01:38 -03:00
Paulo Gustavo Veiga
560ceffaaf Bug https://wisemapping.atlassian.net/browse/WISE-209 fixed. 2014-02-03 22:01:38 -03:00
Ezequiel Bergamaschi
f3cc90d9d0 removing unnecesaries js 2014-02-03 01:26:05 -03:00
Ezequiel Bergamaschi
434fb4c8f5 remove hex input of color picker 2014-02-03 01:07:24 -03:00
Ezequiel Bergamaschi
57e5fcac3a remove preventDefault 2014-02-03 00:46:51 -03:00
Ezequiel Bergamaschi
b99cb2f8a3 adding icons and change label msg 2014-02-03 00:46:35 -03:00
Ezequiel Bergamaschi
ea95ba0ec7 extract method 2014-02-02 23:34:40 -03:00
Ezequiel Bergamaschi
3cf726f928 fix multiple request (I hope) 2014-02-02 23:34:20 -03:00
Ezequiel Bergamaschi
460d8270c6 remove commented code 2014-02-02 23:33:41 -03:00
Paulo Gustavo Veiga
079606c4e7 Change the unexpecter error message. 2014-02-02 22:56:40 -03:00
Claudio Barril
d67a16f550 ui support of untag mindmap 2014-02-02 04:10:00 -03:00
Claudio Barril
8db7f5015f api for unlink mindmaps 2014-02-02 04:09:28 -03:00
Ezequiel Bergamaschi
734463d233 css on 'x' mouse over 2014-02-02 03:02:01 -03:00
Ezequiel Bergamaschi
fdf041e8b1 adding scrollbar support 2014-02-02 02:22:58 -03:00
Ezequiel Bergamaschi
23611c8d54 fix select all issue 2014-02-02 02:01:37 -03:00
Ezequiel Bergamaschi
729d2e98f7 palette with default value 2014-02-02 01:35:19 -03:00
Ezequiel Bergamaschi
baa8adacda datatype workaround 2014-02-02 01:28:14 -03:00
Ezequiel Bergamaschi
7a535b1dca css and fix jquery problems 2014-02-02 01:26:56 -03:00
Ezequiel Bergamaschi
632a9a6e00 ordering labels on mindmap retreive 2014-02-02 01:26:28 -03:00
Ezequiel Bergamaschi
a4aa1c5436 tag label with x to delete tag from mindmap 2014-02-01 23:33:38 -03:00
Ezequiel Bergamaschi
9a19e2a5eb some button actions 2014-02-01 23:33:38 -03:00
Paulo Gustavo Veiga
6d1a00291e Fix jQuery resturn status. 2014-02-01 22:48:01 -03:00
Paulo Gustavo Veiga
d6656dffc0 Fix jQuery resturn status. 2014-02-01 22:48:01 -03:00
Paulo Gustavo Veiga
3b23fead8e Fix another typo. 2014-02-01 19:54:31 -03:00
Paulo Gustavo Veiga
94b043ecf5 Fix another typo. 2014-02-01 19:54:31 -03:00
Paulo Gustavo Veiga
c8286c26aa Fix minor typo. 2014-02-01 19:50:37 -03:00
Paulo Gustavo Veiga
f567513468 Fix minor typo. 2014-02-01 19:50:37 -03:00
Paulo Gustavo Veiga
472bb38342 Change the unexpecter error message. 2014-02-01 19:47:33 -03:00
Paulo Gustavo Veiga
10fb98cdaa Change the unexpecter error message. 2014-02-01 19:47:33 -03:00
Claudio Barril
f65149c948 deleting unnecessary XML annotation 2014-02-01 19:36:42 -03:00
Claudio Barril
b4857ed99e drop R_LABEL_MINDMAP added 2014-02-01 19:36:42 -03:00
Claudio Barril
131a501508 adding delete on cascade and fixing identation 2014-02-01 19:36:42 -03:00
Paulo Gustavo Veiga
37e9676687 Merge branch 'develop' into feature/WISE-15-mindmapListFolderSupport 2014-02-01 19:18:57 -03:00
Paulo Gustavo Veiga
6ed7bc9154 Update jquery version. 2014-02-01 19:15:19 -03:00
Paulo Gustavo Veiga
d535fcc381 Update jquery version. 2014-02-01 19:15:19 -03:00
Ezequiel Bergamaschi
d28b439e62 remove stopPropagation 2014-02-01 18:54:49 -03:00
Ezequiel Bergamaschi
0738804d88 fix mindmapList filter problem on long labels names 2014-02-01 18:54:37 -03:00
Ezequiel Bergamaschi
f248a8c099 addding on delete cascade to R table 2014-02-01 18:53:54 -03:00
Ezequiel Bergamaschi
0891beeecd fix one click problem on empty input 2014-02-01 18:13:16 -03:00
Ezequiel Bergamaschi
4646ae15c4 adding missing css 2014-02-01 16:25:09 -03:00
Ezequiel Bergamaschi
54fb696090 hack removed 2014-02-01 16:24:57 -03:00
Ezequiel Bergamaschi
e5d9380699 change linkToMindmaps logic 2014-02-01 16:24:48 -03:00
Ezequiel Bergamaschi
5fe892abfd adding private methods 2014-02-01 16:23:30 -03:00
Ezequiel Bergamaschi
12ec295fe0 rename method 2014-02-01 16:22:54 -03:00
Ezequiel Bergamaschi
8936ef5008 btn actions 2014-02-01 15:46:18 -03:00
Ezequiel Bergamaschi
0eaa8c8638 more readable function 2014-02-01 15:46:18 -03:00
Ezequiel Bergamaschi
28010a85aa add label btn with dropdown 2014-02-01 15:46:18 -03:00
Ezequiel Bergamaschi
f1e4b1c8c0 remove add label dialog and btn 2014-02-01 15:46:18 -03:00
Ezequiel Bergamaschi
1a2ba04b76 fix filter by none 2014-02-01 15:46:18 -03:00
Claudio Barril
1ead555e09 fixing tag cascade delete when mindmap tagged is deleted 2014-02-01 04:19:39 -03:00
Claudio Barril
cf246f00c8 fix duplicate tags for a map in ui 2014-02-01 04:10:00 -03:00
Ezequiel Bergamaschi
4200d85cc0 adding delete action 2014-02-01 01:42:54 -03:00
Ezequiel Bergamaschi
a4ae253ae3 adding delete X button 2014-02-01 01:42:36 -03:00
Ezequiel Bergamaschi
640b8d7ed0 delete modal dialog 2014-02-01 01:41:02 -03:00
Ezequiel Bergamaschi
5429178a1c make static public attributes final 2014-02-01 01:38:40 -03:00
Ezequiel Bergamaschi
163bc960b3 Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport 2014-01-30 04:36:21 -03:00
Ezequiel Bergamaschi
b79930394d remove label api 2014-01-30 04:35:48 -03:00
Ezequiel Bergamaschi
c8e0b92ef5 column name changes 2014-01-30 04:35:06 -03:00
Ezequiel Bergamaschi
7d0e4dc35a replace deprecated live method 2014-01-30 04:34:25 -03:00
Ezequiel Bergamaschi
5f9b98324d css changes 2014-01-30 04:34:08 -03:00
Ezequiel Bergamaschi
95fcbb5888 removing empty lines 2014-01-30 01:54:48 -03:00
Ezequiel Bergamaschi
2f4efde017 add tag on add label to mindmap action 2014-01-30 01:54:36 -03:00
Paulo Gustavo Veiga
a62a053533 Adding Eze email address. 2014-01-30 04:47:14 +00:00
Paulo Gustavo Veiga
2d6a0c3e24 Adding Eze email address. 2014-01-30 04:47:14 +00:00
Paulo Gustavo Veiga
9897e69ee2 Add happily a new individual contributor. Welcome Claudio. 2014-01-30 04:02:57 +00:00
Paulo Gustavo Veiga
01fa9def4a Add happily a new individual contributor. Welcome Claudio. 2014-01-30 04:02:57 +00:00
Paulo Gustavo Veiga
71bba1c5ab Merge branch 'develop' into feature/WISE-16-remove_user 2014-01-30 00:24:06 -03:00
Paulo Gustavo Veiga
708b8eb355 Merge branch 'develop' into feature/WISE-16-remove_user 2014-01-30 00:24:06 -03:00
Claudio Barril
3e7ed53a2d Revert "changing jetty version"
This reverts commit 558aa31516.
2014-01-30 00:03:06 -03:00
Claudio Barril
136dc1154b Revert "changing jetty version"
This reverts commit 558aa31516.
2014-01-30 00:03:06 -03:00
Claudio Barril
301048ecad callback functions and type added to postChange function 2014-01-29 22:17:25 -03:00
Claudio Barril
26138188ea callback functions and type added to postChange function 2014-01-29 22:17:25 -03:00
Claudio Barril
558aa31516 changing jetty version 2014-01-29 22:15:45 -03:00
Claudio Barril
f0e056c298 changing jetty version 2014-01-29 22:15:45 -03:00
Claudio Barril
ccd5eb8e15 deleting user id field and adding collaborator foreing key from access 2014-01-29 22:15:26 -03:00
Claudio Barril
43d5779d5f deleting user id field and adding collaborator foreing key from access 2014-01-29 22:15:26 -03:00
Ezequiel Bergamaschi
148b56aecb refactor MindmapFilter to accept Label Filters 2014-01-29 03:59:42 -03:00
Ezequiel Bergamaschi
684c412e95 hasLabel method for mindmap 2014-01-29 03:59:05 -03:00
Ezequiel Bergamaschi
7d9ccaec91 Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport 2014-01-29 02:58:10 -03:00
Ezequiel Bergamaschi
b4c69133f5 api rest 2014-01-29 02:56:09 -03:00
Ezequiel Bergamaschi
9edea47dbd add label to mindmap ui logic 2014-01-29 02:55:44 -03:00
Ezequiel Bergamaschi
ed55fd824f insert tag on table load 2014-01-29 02:55:00 -03:00
Ezequiel Bergamaschi
eff063ca37 remove default option 2014-01-29 02:54:33 -03:00
Ezequiel Bergamaschi
a74f4158c6 css changes 2014-01-29 02:52:37 -03:00
Ezequiel Bergamaschi
d601a2818f remove unused method 2014-01-29 02:52:25 -03:00
Ezequiel Bergamaschi
81e9b5f59d add label modal dialog 2014-01-28 02:59:09 -03:00
Ezequiel Bergamaschi
f048d0adb7 fetchLabels with postUpdate callback 2014-01-28 02:58:39 -03:00
Ezequiel Bergamaschi
2ec941e1a0 link label to mindmaps 2014-01-28 02:57:40 -03:00
Ezequiel Bergamaschi
72a46367d6 label validator finished 2014-01-28 02:21:14 -03:00
Ezequiel Bergamaschi
b19ac2c4c3 label with colors in filter 2014-01-28 01:44:56 -03:00
Ezequiel Bergamaschi
acb3782561 js refactor 2014-01-28 01:44:56 -03:00
Ezequiel Bergamaschi
c7b193f43f remove duplicate labels on fetch 2014-01-28 01:44:55 -03:00
Ezequiel Bergamaschi
154db9d9e8 adding color properties to label 2014-01-28 00:13:29 -03:00
Ezequiel Bergamaschi
deb6c4be4d bootstrap color picker plugin 2014-01-27 23:48:11 -03:00
Paulo Gustavo Veiga
8b6ef7536e Bug WISE-205 fixed.
Fix IE 11 browser detection.
2014-01-26 22:09:00 -03:00
Paulo Gustavo Veiga
d0e07269c4 Bug WISE-205 fixed.
Fix IE 11 browser detection.
2014-01-26 22:09:00 -03:00
Paulo Gustavo Veiga
81e3cb590c Add Jira Issue Integration. 2014-01-26 20:12:56 -03:00
Paulo Gustavo Veiga
a70dd1e52e Add Jira Issue Integration. 2014-01-26 20:12:56 -03:00
Ezequiel Bergamaschi
194a7f200e retrieve label list on mindmapList 2014-01-26 18:21:55 -03:00
Ezequiel Bergamaschi
306a2a2ada retrieveList api for labels 2014-01-26 18:21:14 -03:00
Ezequiel Bergamaschi
0c43bb4ad3 adding final statements 2014-01-26 18:18:49 -03:00
Ezequiel Bergamaschi
829815f9e9 Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport 2014-01-26 12:18:37 -03:00
Claudio Barril
93a8647c6a Merge remote-tracking branch 'origin/develop' into feature/WISE-16-remove_user 2014-01-25 23:53:54 -03:00
Claudio Barril
6ac7948312 Merge remote-tracking branch 'origin/develop' into feature/WISE-16-remove_user 2014-01-25 23:53:54 -03:00
Claudio Barril
0dc426487d fix mysql populate file selected 2014-01-25 23:53:17 -03:00
Claudio Barril
b9e64e20e3 fix mysql populate file selected 2014-01-25 23:53:17 -03:00
Ezequiel Bergamaschi
561fb00ac2 WISE-199 #resolve 2014-01-25 23:39:55 -03:00
Ezequiel Bergamaschi
b774052e1d WISE-199 #close 2014-01-25 23:39:26 -03:00
Ezequiel Bergamaschi
367bcf084d close WISE-199 2014-01-25 23:32:18 -03:00
Ezequiel Bergamaschi
fe2b7225ef close #199 2014-01-25 23:30:34 -03:00
Ezequiel Bergamaschi
49d9820a44 create tag item on left list 2014-01-25 23:25:17 -03:00
Ezequiel Bergamaschi
3f2c687643 bug WISE-199 fixed 2014-01-25 23:24:04 -03:00
Ezequiel Bergamaschi
c68b4c90da removing unnecesary validation 2014-01-25 23:21:44 -03:00
Ezequiel Bergamaschi
1b480b566a rest api for label and hibernate mapping 2014-01-25 23:21:17 -03:00
Ezequiel Bergamaschi
504e3e18e6 sql scripts for label support 2014-01-25 23:07:35 -03:00
Claudio Barril
f2be251c8b Merge remote-tracking branch 'origin/develop' into feature/WISE-16-remove_user 2014-01-25 23:03:21 -03:00
Claudio Barril
cedd12314b Merge remote-tracking branch 'origin/develop' into feature/WISE-16-remove_user 2014-01-25 23:03:21 -03:00
Ezequiel Bergamaschi
02cb53d082 fixing merge conflicts 2014-01-25 19:54:28 -03:00
Claudio Barril
0acd0c097f fix typo 2014-01-25 19:50:46 -03:00
Claudio Barril
9a9dabc0ab fix typo 2014-01-25 19:50:46 -03:00
Paulo Gustavo Veiga
99be712a5f Add JCoco Coverage report. 2014-01-25 18:31:50 -03:00
Paulo Gustavo Veiga
ed4d50724a Add JCoco Coverage report. 2014-01-25 18:31:50 -03:00
Ezequiel Bergamaschi
94812cd96a adding missing db profiles due to a wrong merge 2014-01-25 18:16:21 -03:00
Ezequiel Bergamaschi
f39e82b016 adding missing db profiles due to a wrong merge 2014-01-25 18:16:21 -03:00
Paulo Gustavo Veiga
2f994be98d Remove unsed file. 2014-01-25 15:49:10 -03:00
Paulo Gustavo Veiga
40907bc479 Remove unsed file. 2014-01-25 15:49:10 -03:00
Paulo Gustavo Veiga
d4f9fb1756 Remove unsed files. 2014-01-25 15:47:44 -03:00
Paulo Gustavo Veiga
14d688b9bf Remove unsed files. 2014-01-25 15:47:44 -03:00
Paulo Gustavo Veiga
a745167c75 Minor fix on documentation. 2014-01-25 15:43:46 -03:00
Paulo Gustavo Veiga
2cb7ec9afb Minor fix on documentation. 2014-01-25 15:43:46 -03:00
Paulo Gustavo Veiga
540b575e54 Improve readme documentation. 2014-01-25 15:39:50 -03:00
Paulo Gustavo Veiga
7e5b3c51a8 Improve readme documentation. 2014-01-25 15:39:50 -03:00
Paulo Gustavo Veiga
5d4da27842 Fix Jetty hangs during install. 2014-01-25 15:27:03 -03:00
Paulo Gustavo Veiga
20a786460c Fix Jetty hangs during install. 2014-01-25 15:27:03 -03:00
Paulo Gustavo Veiga
07b18d9527 Improve delete message.
Add unit test.
2014-01-25 12:31:14 -03:00
Paulo Gustavo Veiga
adfc6c08f2 Improve delete message.
Add unit test.
2014-01-25 12:31:14 -03:00
Paulo Gustavo Veiga
9a1c0fe46d Merge branch 'develop' into feature/WISE-16-remove_user
Conflicts:
	wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java
	wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java
2014-01-25 11:33:31 -03:00
Paulo Gustavo Veiga
a8f7d28c11 Merge branch 'develop' into feature/WISE-16-remove_user
Conflicts:
	wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java
	wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java
2014-01-25 11:33:31 -03:00
Paulo Gustavo Veiga
5b1fb27ca2 Add Maven Tomcat Plugin. 2014-01-25 04:53:51 -03:00
Paulo Gustavo Veiga
cf0b3cf80d Add Maven Tomcat Plugin. 2014-01-25 04:53:51 -03:00
Paulo Gustavo Veiga
0493d66daa Fix mindmaping controller tests. 2014-01-25 04:21:59 -03:00
Paulo Gustavo Veiga
f66c476187 Fix mindmaping controller tests. 2014-01-25 04:21:59 -03:00
Paulo Gustavo Veiga
9b3f1c79a6 Enable MindmapController rests. 2014-01-25 03:13:51 -03:00
Paulo Gustavo Veiga
5e62eb3279 Enable MindmapController rests. 2014-01-25 03:13:51 -03:00
Paulo Gustavo Veiga
2ccb4bfb83 Remove HTML support for test ... 2014-01-24 22:58:25 -03:00
Paulo Gustavo Veiga
686e011f9b Remove HTML support for test ... 2014-01-24 22:58:25 -03:00
Paulo Gustavo Veiga
f610bfdfb3 Fix W3ORG logo url location on footer. 2014-01-24 22:42:05 -03:00
Paulo Gustavo Veiga
f0c6d944a8 Fix W3ORG logo url location on footer. 2014-01-24 22:42:05 -03:00
Paulo Gustavo Veiga
ebf4603889 Conflicts:
README.md
	config/database/mysql/apopulate-schemas.sql
	wise-webapp/pom.xml
2014-01-24 20:17:21 -03:00
Paulo Gustavo Veiga
706031a641 Conflicts:
README.md
	config/database/mysql/apopulate-schemas.sql
	wise-webapp/pom.xml
2014-01-24 20:17:21 -03:00
Paulo Gustavo Veiga
25e6e4de4f Bug WISE-190 fixed.
Implement REST Console support.
2014-01-24 09:45:22 -03:00
Paulo Gustavo Veiga
ae604b1c70 Bug WISE-190 fixed.
Implement REST Console support.
2014-01-24 09:45:22 -03:00
Ezequiel Bergamaschi
0d11dee06c format 2014-01-24 02:47:51 -03:00
Ezequiel Bergamaschi
00773ae3b9 adding missing version to tomcat plugin 2014-01-24 02:47:01 -03:00
ezequiel
88fed0af0a api rest call 2014-01-24 00:21:43 -03:00
ezequiel
31aab0bd48 api rest call 2014-01-24 00:21:43 -03:00
ezequiel
4f40431d55 adding warning msg on delete user popup 2014-01-24 00:21:27 -03:00
ezequiel
d1004f2919 adding warning msg on delete user popup 2014-01-24 00:21:27 -03:00
ezequiel
7151aa4e2c more users.. 2014-01-24 00:20:13 -03:00
ezequiel
c3d2739293 more users.. 2014-01-24 00:20:13 -03:00
Ezequiel Bergamaschi
091955255b Merge remote-tracking branch 'origin/develop' into feature/WISE-15-mindmapListFolderSupport 2014-01-21 01:47:39 -03:00
Ezequiel Bergamaschi
2aa68c3d4b Revert "adding directory table to sql scripts"
This reverts commit a7e0ef30fa8a061920c22e4cda6e6e92e83b7a92.
2014-01-21 01:46:04 -03:00
Ezequiel Bergamaschi
f4fb008f1b popup for label 2014-01-21 01:45:12 -03:00
Claudio Barril
da2594292b delete account lash in account settings 2014-01-20 23:10:57 -03:00
Claudio Barril
f30106ab39 delete account lash in account settings 2014-01-20 23:10:57 -03:00
Claudio Barril
8a684519f0 DELETE__ACCOUNT message property (en and es languages) 2014-01-20 23:10:15 -03:00
Claudio Barril
24417d4fd0 DELETE__ACCOUNT message property (en and es languages) 2014-01-20 23:10:15 -03:00
Paulo Gustavo Veiga
9c4dfb7f25 Merged feature-WISE-78-pom-improvements into develop 2014-01-20 19:27:34 -03:00
Paulo Gustavo Veiga
7d6c26539d Merged feature-WISE-78-pom-improvements into develop 2014-01-20 19:27:34 -03:00
Ezequiel Bergamaschi
8bdc5f6b05 new button is now a dropdown in order to support folders 2014-01-20 01:03:32 -03:00
Ezequiel Bergamaschi
91b5a08b11 adding new properties 2014-01-20 01:02:48 -03:00
Ezequiel Bergamaschi
c0b8eb7176 adding directory table to sql scripts 2014-01-19 23:46:02 -03:00
Ezequiel Bergamaschi
871d89a304 blue icon on mindmap list 2014-01-19 22:39:44 -03:00
Claudio Barril
0933786525 fix mysql database and user creation 2014-01-19 22:38:47 -03:00
Claudio Barril
0968549e55 creating mysql and hsql maven profiles 2014-01-19 22:38:46 -03:00
Claudio Barril
bec5a087aa fix mysql test-data statements 2014-01-19 22:38:46 -03:00
Claudio Barril
2528ceb8df add if exists to mysql statements 2014-01-19 22:38:46 -03:00
Claudio Barril
f5c7d63528 select database wisemapping in mysql tables creation 2014-01-19 22:38:46 -03:00
Claudio Barril
af0a62aee9 add if not exists to mysql database creation 2014-01-19 22:38:46 -03:00
Claudio Barril
8e402431b8 add if exists to hsql statements 2014-01-19 22:38:46 -03:00
Ezequiel Bergamaschi
e34f5ce45a adding icon to map name in mindmapList 2014-01-19 21:25:53 -03:00
Ezequiel Bergamaschi
b401a53a21 addding tomcat plugin 2014-01-19 18:26:48 -03:00
Ezequiel Bergamaschi
0c103fc3a2 addding tomcat plugin 2014-01-19 18:26:48 -03:00
Claudio Barril
2e7aa144b2 Merge remote-tracking branch 'origin/feature-WISE-78-pom-improvements' into feature/WISE-16-remove_user 2014-01-19 18:25:03 -03:00
Claudio Barril
4eec745296 Merge remote-tracking branch 'origin/feature-WISE-78-pom-improvements' into feature/WISE-16-remove_user 2014-01-19 18:25:03 -03:00
Ezequiel Bergamaschi
947fd30fa2 removing unnecesary build 2014-01-19 18:22:47 -03:00
Ezequiel Bergamaschi
52cac830ae removing unnecesary build 2014-01-19 18:22:47 -03:00
Ezequiel Bergamaschi
808660cfbb remove wrong js file on standalone-editor.xml 2014-01-19 18:22:13 -03:00
Ezequiel Bergamaschi
9d2cf7e1ff remove wrong js file on standalone-editor.xml 2014-01-19 18:22:13 -03:00
Ezequiel Bergamaschi
5d231249c7 updating jetty plugin on pom 2014-01-19 18:21:38 -03:00
Ezequiel Bergamaschi
242827f7e6 updating jetty plugin on pom 2014-01-19 18:21:38 -03:00
Ezequiel Bergamaschi
3736f48efa adding missing info to README.md 2014-01-19 18:21:18 -03:00
Ezequiel Bergamaschi
9639b9e113 adding missing info to README.md 2014-01-19 18:21:18 -03:00
Claudio Barril
531be52c5b fix mysql database and user creation 2014-01-19 14:33:56 -03:00
Claudio Barril
2e24032d1c fix mysql database and user creation 2014-01-19 14:33:56 -03:00
Claudio Barril
cc9fa543cb creating mysql and hsql maven profiles 2014-01-19 14:33:56 -03:00
Claudio Barril
541d07c46c creating mysql and hsql maven profiles 2014-01-19 14:33:56 -03:00
Claudio Barril
52d3838094 fix mysql test-data statements 2014-01-19 14:33:56 -03:00
Claudio Barril
3828a1afdb fix mysql test-data statements 2014-01-19 14:33:56 -03:00
Claudio Barril
d288787fdc add if exists to mysql statements 2014-01-19 14:33:56 -03:00
Claudio Barril
c6aed4bf6e add if exists to mysql statements 2014-01-19 14:33:56 -03:00
Claudio Barril
2c26c3cdc0 select database wisemapping in mysql tables creation 2014-01-19 14:33:56 -03:00
Claudio Barril
7eda354f8f select database wisemapping in mysql tables creation 2014-01-19 14:33:56 -03:00
Claudio Barril
9b133468e4 add if not exists to mysql database creation 2014-01-19 14:33:56 -03:00
Claudio Barril
f20b3a7a46 add if not exists to mysql database creation 2014-01-19 14:33:56 -03:00
Claudio Barril
953e473ef0 add if exists to hsql statements 2014-01-19 14:33:56 -03:00
Claudio Barril
abede3c010 add if exists to hsql statements 2014-01-19 14:33:56 -03:00
Paulo Gustavo Veiga
f2a5221cbd Merge branch 'develop' into feature/WISE-15-mindmapListFolderSupport 2014-01-15 14:22:55 -03:00
Paulo Gustavo Veiga
f339ed777e Merge branch 'release/v3.0.2' of https://bitbucket.org/wisemapping/wisemapping-open-source 2014-01-15 11:03:41 -03:00
Ezequiel Bergamaschi
e165bbbff6 Created new branch feature/WISE-15-mindmapListFolderSupport 2014-01-15 05:02:20 +00:00
Paulo Gustavo Veiga
3d948a1419 Merge branch 'develop' into feature/WISE-16-remove_user 2014-01-12 23:42:47 -03:00
Paulo Gustavo Veiga
cd02cdb1ce Merge branch 'develop' into feature/WISE-16-remove_user 2014-01-12 23:42:47 -03:00
Paulo Gustavo Veiga
1e90a74ac7 Merge branch 'release/v3.0.2' into develop 2014-01-12 23:13:43 -03:00
Paulo Gustavo Veiga
ae587a037a Merge branch 'release/v3.0.2' into develop 2014-01-12 23:13:43 -03:00
Paulo Gustavo Veiga
22c102917e Fix failing uning tests ... 2014-01-12 22:53:42 -03:00
Paulo Gustavo Veiga
703414266e Fix failing uning tests ... 2014-01-12 22:53:42 -03:00
Paulo Veiga
0001dff347 Merge branch 'release/v3.0.2' of bitbucket.org:wisemapping/wisemapping-open-source into release/v3.0.2 2014-01-12 05:55:42 +00:00
Paulo Veiga
970e5bd2ed Merge branch 'release/v3.0.2' of bitbucket.org:wisemapping/wisemapping-open-source into release/v3.0.2 2014-01-12 05:55:42 +00:00
Paulo Veiga
a50a96492f Fix jetty download. 2014-01-12 05:54:43 +00:00
Paulo Veiga
c525acbad4 Fix jetty download. 2014-01-12 05:54:43 +00:00
Paulo Gustavo Veiga
63c063933d Q!
Bug WISE-22 fixed. Resolve resize node issue.
2014-01-12 05:50:50 +00:00
Paulo Gustavo Veiga
83d80cadb5 Q!
Bug WISE-22 fixed. Resolve resize node issue.
2014-01-12 05:50:50 +00:00
Paulo Veiga
59a57e0b34 Merge branch 'release/v3.0.2' into develop 2014-01-12 05:47:21 +00:00
Paulo Veiga
b2adb4f6a6 Merge branch 'release/v3.0.2' into develop 2014-01-12 05:47:21 +00:00
Paulo Gustavo Veiga
80dfab3ef4 Bug WISE-22 fixed. Resolve resize node issue. 2014-01-12 02:17:42 -03:00
Paulo Gustavo Veiga
94915bc8e4 Bug WISE-22 fixed. Resolve resize node issue. 2014-01-12 02:17:42 -03:00
Paulo Gustavo Veiga
fd73564be2 Merged master into feature/WISE-16-remove_user 2014-01-10 00:27:30 -03:00
Paulo Gustavo Veiga
3679db819a Merged master into feature/WISE-16-remove_user 2014-01-10 00:27:30 -03:00
Paulo Gustavo Veiga
a2db34ae61 Revert "Bug WISE-16 fixed. Backed completed."
This reverts commit 9a77ff3bb8.
2014-01-10 00:21:21 -03:00
Paulo Gustavo Veiga
50adfa0053 Revert "Bug WISE-16 fixed. Backed completed."
This reverts commit 9a77ff3bb8.
2014-01-10 00:21:21 -03:00
Paulo Gustavo Veiga
9a77ff3bb8 Bug WISE-16 fixed. Backed completed. 2014-01-10 00:19:56 -03:00
Paulo Gustavo Veiga
5f29024559 Bug WISE-16 fixed. Backed completed. 2014-01-10 00:19:56 -03:00
Paulo Gustavo Veiga
94ac039390 Bug WISE-16 fixed. Backed completed. 2014-01-10 00:18:00 -03:00
Paulo Gustavo Veiga
805f5eed7f Bug WISE-16 fixed. Backed completed. 2014-01-10 00:18:00 -03:00
Paulo Gustavo Veiga
914e3b508c Created new branch develop 2014-01-10 01:37:09 +00:00
Paulo Gustavo Veiga
e4d5425a7d Created new branch develop 2014-01-10 01:37:09 +00:00
Paulo Gustavo Veiga
5e4c1e4357 Add compile information 2014-01-08 23:33:00 +00:00
Paulo Gustavo Veiga
86324c6873 Add compile information 2014-01-08 23:33:00 +00:00
Paulo Gustavo Veiga
c87424ae80 Add compilation details temporally. 2014-01-08 23:28:21 +00:00
Paulo Gustavo Veiga
896e299f8f Add compilation details temporally. 2014-01-08 23:28:21 +00:00
Paulo Gustavo Veiga
fc6b573f86 README.md edited online with Bitbucket 2014-01-08 23:21:30 +00:00
Paulo Gustavo Veiga
751157815e README.md edited online with Bitbucket 2014-01-08 23:21:30 +00:00
Paulo Gustavo Veiga
175b2f8921 Home.textile edited online with Bitbucket 2014-01-08 23:18:24 +00:00
Paulo Gustavo Veiga
9f6ba0b19c Home.textile edited online with Bitbucket 2014-01-08 23:18:24 +00:00
Paulo Gustavo Veiga
f8b25f949a Compiling-and-running.md edited online with Bitbucket 2014-01-08 23:16:06 +00:00
Paulo Gustavo Veiga
711b673e31 Compiling-and-running.md edited online with Bitbucket 2014-01-08 23:16:06 +00:00
Paulo Gustavo Veiga
55ab430cfe Fix compile documentation ... 2014-01-08 23:12:53 +00:00
Paulo Gustavo Veiga
fd6d23c513 Fix compile documentation ... 2014-01-08 23:12:53 +00:00
Ezequiel Bergamaschi
4d3d8daa37 fix wrong version of jetty-maven-plugin 2014-01-07 16:58:05 -03:00
Ezequiel Bergamaschi
1dce163782 fix wrong version of jetty-maven-plugin 2014-01-07 16:58:05 -03:00
Paulo Gustavo Veiga
efd285eb10 README.md edited online with Bitbucket 2014-01-07 01:52:14 +00:00
Paulo Gustavo Veiga
128052102d README.md edited online with Bitbucket 2014-01-07 01:49:07 +00:00
Paulo Veiga
8f2f9da3da Fix 2014-01-05 22:03:41 +00:00
Paulo Gustavo Veiga
84c96287f3 Hack Chrome text element issue. 2014-01-05 18:57:47 -03:00
Paulo Gustavo Veiga
f75124233b Update part of Maven Pluggins versions. 2014-01-05 18:10:42 -03:00
Paulo Gustavo Veiga
26bd9f8840 Resources moved to https. 2014-01-02 18:34:14 -03:00
Paulo Gustavo Veiga
da8f474c64 Add extra documentation for LDAP configuration 2013-09-25 11:00:54 -03:00
Paulo Gustavo Veiga
5e8c1960e7 Fix postgress schema. 2013-05-19 11:42:06 -03:00
Paulo Gustavo Veiga
35d76ea56f Fix message. 2013-04-20 00:43:19 -03:00
Paulo Gustavo Veiga
a230dd104c Fix unlock issues. 2013-04-07 12:27:45 -03:00
Paulo Gustavo Veiga
31fb342ef1 Fix missing message. 2013-04-05 20:49:17 -03:00
Paulo Gustavo Veiga
65283a0edc Improve text export. 2013-04-04 22:11:59 -03:00
Paulo Gustavo Veiga
9686431874 Fix node export format. 2013-04-04 21:46:54 -03:00
Paulo Gustavo Veiga
96cb014a6e Add firefox 20 support. 2013-04-04 20:39:11 -03:00
Paulo Gustavo Veiga
8915e7eddf Fix rename issues. 2013-03-31 15:33:00 -03:00
Paulo Gustavo Veiga
fd021de86d Mindmap loading is lazy. 2013-03-30 01:09:28 -03:00
Paulo Gustavo Veiga
f5b4cc9ea7 Add debung info for exceptions.... 2013-03-29 22:44:13 -03:00
Paulo Gustavo Veiga
8e66c97aa3 Handle deleted maps propertly. 2013-03-29 21:09:28 -03:00
Paulo Gustavo Veiga
bd80d95d22 Fix NPE on loading maps. 2013-03-29 20:32:52 -03:00
Paulo Gustavo Veiga
4d46864388 Add compress fix. 2013-03-29 15:44:49 -03:00
Paulo Gustavo Veiga
3696e126e3 Fix descriptor. 2013-03-29 15:09:55 -03:00
Paulo Gustavo Veiga
65ee33a09f Fix compile 2013-03-29 14:57:21 -03:00
Paulo Gustavo Veiga
dce29eda19 Fix history bug. 2013-03-29 14:51:21 -03:00
Paulo Gustavo Veiga
81d3d591fa Keep working on mindmanager support. 2013-03-29 14:29:58 -03:00
Paulo Gustavo Veiga
2a2dc7c57f Change mindjet extension. 2013-03-29 12:08:40 -03:00
Paulo Gustavo Veiga
2c355205d0 Complete mindjet integration. 2013-03-29 11:49:59 -03:00
Paulo Gustavo Veiga
ed508d646c Add mindjet support. 2013-03-29 11:28:26 -03:00
Paulo Gustavo Veiga
fcb99490d8 Fix image icon render. 2013-03-28 17:33:26 -03:00
Paulo Gustavo Veiga
fd00a5e0fc Minor text fix. 2013-03-28 17:20:01 -03:00
Paulo Gustavo Veiga
f9d1e869b0 Move to WiseMapping 3.1 2013-03-28 17:06:34 -03:00
Paulo Gustavo Veiga
06210ab95b Add text/plan, open office and xls transformation support. 2013-03-28 17:01:42 -03:00
Paulo Gustavo Veiga
3137f78cce Improve purge. 2013-03-28 12:28:53 -03:00
Paulo Gustavo Veiga
dcd59efc12 Add history purge. 2013-03-26 22:58:45 -03:00
Paulo Gustavo Veiga
2b8972a35a Add delete permission to admin. 2013-03-24 22:57:32 -03:00
Paulo Gustavo Veiga
f961ae578c Add purge to history... 2013-03-24 22:49:55 -03:00
Paulo Gustavo Veiga
0188e15a92 Add more catchs .. 2013-03-24 19:28:20 -03:00
Paulo Gustavo Veiga
c12b73c1ff Add catch ... 2013-03-24 19:24:24 -03:00
Paulo Gustavo Veiga
a60f001f2c Check for more period. 2013-03-24 19:15:37 -03:00
Paulo Gustavo Veiga
04d58533cf Catch all exceptions during purge. 2013-03-24 17:20:41 -03:00
Paulo Gustavo Veiga
ed6d89fb7e Admin can delete maps. 2013-03-24 16:58:18 -03:00
Paulo Gustavo Veiga
3b47ed2e52 Fix string case. 2013-03-24 16:48:14 -03:00
Paulo Gustavo Veiga
abfc06c7d5 Fix classcast. 2013-03-24 16:41:57 -03:00
Paulo Gustavo Veiga
712cc2c60b Fix classcast. 2013-03-24 16:33:58 -03:00
Paulo Gustavo Veiga
057d5bc01f Add admin as permissions for finding. 2013-03-24 16:30:38 -03:00
Paulo Gustavo Veiga
e36b0b8b52 Handle exceptions. 2013-03-24 16:20:56 -03:00
Paulo Gustavo Veiga
4dd7a82e32 Add debug info. 2013-03-24 16:10:30 -03:00
Paulo Gustavo Veiga
580d977aa9 Add purge flag. 2013-03-24 15:57:59 -03:00
Paulo Gustavo Veiga
45c67d6b57 Add purge flag. 2013-03-24 15:42:25 -03:00
Paulo Gustavo Veiga
0b6c8a5977 Add purge action. 2013-03-24 15:11:06 -03:00
Paulo Gustavo Veiga
811cc8a668 Add purge action. 2013-03-24 15:03:19 -03:00
Paulo Gustavo Veiga
f136240591 Minor fix on property. 2013-03-19 23:25:36 -03:00
Paulo Gustavo Veiga
e0a6d15ad0 Initialize OPSS values. 2013-03-19 23:18:19 -03:00
Paulo Gustavo Veiga
617abd9d90 Change exception ... 2013-03-19 22:41:43 -03:00
Paulo Gustavo Veiga
c2e74cb2d4 Fix HTML tests positioning. 2013-03-19 22:21:51 -03:00
Paulo Gustavo Veiga
db70db49a5 Add missing resource. 2013-03-19 21:44:51 -03:00
Paulo Gustavo Veiga
4cc6382043 Fix resources. 2013-03-19 21:39:17 -03:00
Paulo Gustavo Veiga
c8d3d99224 Do not send duplicated emails on bugs. 2013-03-19 21:18:15 -03:00
Paulo Gustavo Veiga
645402e691 Fix property name. 2013-03-18 23:27:05 -03:00
Paulo Gustavo Veiga
8ed1a18280 Minor fixes. 2013-03-18 23:25:49 -03:00
Paulo Gustavo Veiga
0d81db52f1 Add alter table scripts. 2013-03-17 23:40:39 -03:00
Paulo Gustavo Veiga
67398fe07e Add OpenId required colums. 2013-03-17 23:19:29 -03:00
Paulo Gustavo Veiga
9b21c77485 Finish OpenId implementation. 2013-03-17 23:17:55 -03:00
Paulo Gustavo Veiga
94356a5773 Outh working!. Pending:
- Test all databases
- Migration Scripts
- Manage error due to changing of authentication schemas.
- Link from the login page.
- What happend with the logout ?.
2013-03-17 18:51:33 -03:00
Paulo Gustavo Veiga
2f8df725c9 Login page completed. 2013-03-17 16:39:50 -03:00
Paulo Gustavo Veiga
b9e508424c Minor fix. 2013-03-17 13:32:41 -03:00
Paulo Gustavo Veiga
48e211cc2d Escape invalid XML chars during serialization. 2013-03-17 11:22:53 -03:00
Paulo Gustavo Veiga
3578d6e624 Temporal hack for broken maps in Firefox. \r issue. 2013-03-14 21:38:38 -03:00
Paulo Gustavo Veiga
8356906791 Another try to capture serialization issue. 2013-03-14 21:25:02 -03:00
Pablo Luna
9e7f289a9e removing Google Brix... no further comments 2013-03-14 23:57:38 +00:00
Pablo Luna
9e67329703 fixing build 2013-03-14 21:51:17 +00:00
Paulo Gustavo Veiga
8489eaea6d More tests fixed. 2013-03-10 21:25:21 -03:00
Paulo Gustavo Veiga
9fb0ebd8f6 Fix tests. 2013-03-10 21:20:19 -03:00
Paulo Gustavo Veiga
e03f5f632b Fix export unit tests. 2013-03-10 19:57:24 -03:00
Paulo Gustavo Veiga
b6ee7e61b8 Fix SVG export tests... 2013-03-10 19:45:21 -03:00
Paulo Gustavo Veiga
202c3f28a3 Fix open id. 2013-03-10 19:07:52 -03:00
Paulo Gustavo Veiga
a1a28efe49 Minor fix, use db database result. 2013-03-10 19:06:55 -03:00
Paulo Gustavo Veiga
0e5592a0d3 Move database configuration scripts. 2013-03-10 19:05:33 -03:00
Paulo Gustavo Veiga
52efdf729b Try to fix encoding issue on post. 2013-03-07 23:46:07 -03:00
Paulo Gustavo Veiga
ef3e8ae772 Add inheritance of properties con creation. 2013-03-03 02:04:00 -03:00
Paulo Gustavo Veiga
1c1fc2ca96 Fix copy and paste issue. 2013-03-03 00:51:14 -03:00
Paulo Gustavo Veiga
bf3bd5c1c7 Fix save on Opera. 2013-03-02 21:29:26 -03:00
Paulo Gustavo Veiga
9cabfb14a5 Add more debug info. 2013-03-02 18:13:59 -03:00
Paulo Gustavo Veiga
def2034fa0 More debug. 2013-03-02 18:12:32 -03:00
Paulo Gustavo Veiga
b5a7a11920 Check map before save. 2013-02-27 23:08:37 -03:00
Paulo Gustavo Veiga
6155a70c04 Fix Message: 'Uncaught TypeError: Object [object Object] has no method 'retrieve'', line:'4988', url: :http://app.wisemapping.com/js/mindplot-min.js 2013-02-24 18:37:13 -03:00
Paulo Gustavo Veiga
846ad24bf3 Minor fix to enable LDAP customization of first and last name. 2013-02-24 17:46:05 -03:00
Paulo Gustavo Veiga
9ab0637690 Fix scape name with spaces. 2013-02-24 17:34:25 -03:00
Paulo Gustavo Veiga
fe331a5170 Merge branch 'master' of repo.wisemapping.org:wisemapping/wiseorg 2013-02-23 23:14:00 -03:00
Paulo Gustavo Veiga
f4969e11b9 Add mode debug info. 2013-02-23 23:07:21 -03:00
Paulo Gustavo Veiga
312f5447b8 Fix NPE. 2013-02-23 15:39:10 -03:00
Paulo Gustavo Veiga
879fa4c926 Add postgres scripts. 2013-02-23 15:33:09 -03:00
Paulo Gustavo Veiga
5e0c879654 Minor fix on export. 2013-02-23 14:54:51 -03:00
Paulo Gustavo Veiga
9049ca25aa More export issues fixed. 2013-02-23 13:53:56 -03:00
Paulo Gustavo Veiga
76ccc5e6b2 Fix mindmap export. 2013-02-23 13:48:43 -03:00
Paulo Gustavo Veiga
8aa733158c Minor translation fix. 2013-02-23 12:58:34 -03:00
Paulo Gustavo Veiga
0eef3b3251 Add Catalan support for time ... 2013-02-23 12:53:06 -03:00
Paulo Gustavo Veiga
965ba4edaa Space " in customization dialogs. 2013-02-23 12:44:45 -03:00
Paulo Gustavo Veiga
7960c0a419 Finsh CA Integrationb. 2013-02-22 20:49:20 -03:00
Paulo Gustavo Veiga
99a3fa64ec Add Catalan support. 2013-02-22 20:39:51 -03:00
Paulo Gustavo Veiga
a7316d516c Add rest service doc. 2013-02-22 20:08:48 -03:00
Paulo Gustavo Veiga
efe562f057 Minor fix. 2013-02-20 14:20:11 -03:00
Paulo Gustavo Veiga
d2b7b640d9 Fix print issue loading cached maps. 2013-02-20 14:16:00 -03:00
Paulo Gustavo Veiga
79f5e51513 Finish LDAP support. 2013-02-20 13:15:31 -03:00
Paulo Gustavo Veiga
0f605d89f0 Enable security configuration from properties. 2013-02-17 23:10:04 -03:00
Paulo Gustavo Veiga
cb6828c08e Minor fixes
Update Spring 3.1.3 fixed.
2013-02-17 21:26:42 -03:00
Paulo Gustavo Veiga
3ff67910c9 Add LDAP support. 2013-02-17 21:00:08 -03:00
Paulo Gustavo Veiga
51f531f6b4 Fix revert on zip format. 2013-02-13 23:13:27 -03:00
Paulo Gustavo Veiga
fc22dd32a2 Compiles. 2013-02-13 23:08:55 -03:00
Paulo Gustavo Veiga
deca7e51b2 Fix npe. 2013-02-13 23:06:18 -03:00
Paulo Gustavo Veiga
28ffead0a0 Fix npe. 2013-02-13 22:51:55 -03:00
Paulo Gustavo Veiga
d1dfb48be5 Add new files. 2013-02-13 22:46:45 -03:00
Paulo Gustavo Veiga
9360a27f15 Show more rows on history. 2013-02-13 21:41:47 -03:00
Paulo Gustavo Veiga
cc8ff94b10 Fix encoding issue on import. 2013-02-11 13:25:07 -03:00
Paulo Gustavo Veiga
f245116e48 Fix deleted object would be re-saved by cascade (remove deleted object from associations): [com.wisemapping.model.Collaboration#114902]; nested exception is org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.wisemapping.model.Collaboration#114902] 2013-02-10 16:14:32 -03:00
Paulo Gustavo Veiga
7bd87c50ac - Disable cache ... 2013-02-10 15:24:37 -03:00
Paulo Gustavo Veiga
86d5c98ed7 - Fix security issues when the map is loaded from the rest service. Two URL has been defined for each type of access. 2013-02-07 21:56:36 -03:00
Paulo Gustavo Veiga
5d05f21803 - Fix security issues when the map is loaded from the rest service. Two URL has been defined for each type of access. 2013-02-07 21:44:20 -03:00
Paulo Gustavo Veiga
6e2880c8cc - Review security for print. This is required for enable public sharing of maps. The issue is when the map is not public in the editor. 2013-02-03 17:47:48 -03:00
Paulo Gustavo Veiga
87ce3fc0a9 - Print is not public
- Public maps now are shared using REST
2013-02-03 17:33:19 -03:00
Paulo Gustavo Veiga
92849b02eb Finish moving mindmap loading to rest. 2013-02-03 13:47:31 -03:00
Paulo Gustavo Veiga
829655f253 Add dummy parameter when the service is readOnly. 2013-02-03 13:19:24 -03:00
Paulo Gustavo Veiga
b4bdad796e Use the same PersitenceManager for public maps. 2013-02-03 12:54:46 -03:00
Paulo Gustavo Veiga
d52e2c04a6 Fix encoding on returning maps. 2013-02-03 12:51:12 -03:00
Paulo Gustavo Veiga
edc3351fd8 Fix httpBase servlet request property. 2013-02-03 12:38:04 -03:00
Paulo Gustavo Veiga
73a664ab97 Minor fix. 2013-01-31 22:57:49 -03:00
Paulo Gustavo Veiga
cabca992d1 Map are loaded using Rest service. 2013-01-31 22:50:21 -03:00
Paulo Gustavo Veiga
e734ea350c Add /f secuence scape. 2013-01-31 20:27:17 -03:00
Paulo Gustavo Veiga
ac7af5b8f1 Minor fix. 2013-01-31 20:10:50 -03:00
Paulo Gustavo Veiga
43e9f8fcad Fix firefox issue with \b caracters. 2013-01-31 20:01:15 -03:00
Paulo Gustavo Veiga
7a401b648e Copy and Paste of nodes was not working. Fixed. 2013-01-31 15:44:43 -03:00
Paulo Gustavo Veiga
82ff47220d Disable browser cache. 2013-01-31 14:49:04 -03:00
Paulo Gustavo Veiga
f3d88e91c4 Fix typo 2013-01-26 01:07:29 -03:00
Paulo Gustavo Veiga
37419cba66 Fix delete issue removing in hsql. History is now removed in advance. 2013-01-26 00:52:05 -03:00
Paulo Gustavo Veiga
8b0465bda6 Fix null object reference on editor. 2012-12-02 21:59:21 -03:00
Paulo Gustavo Veiga
765b1fc80e Exported images are now centered. 2012-12-02 16:37:09 -03:00
Paulo Gustavo Veiga
0d8b6b210e - Add metadata descriptor to template page
- Add png export tests.
2012-12-01 19:09:31 -03:00
Paulo Gustavo Veiga
d2c287684f Improve img quality export. 2012-12-01 17:58:01 -03:00
Paulo Gustavo Veiga
bad11bea88 Fix freemind import/export notes. 2012-12-01 17:22:54 -03:00
Paulo Gustavo Veiga
6c1188314b Control attributes order for freemind serialization. 2012-12-01 16:25:37 -03:00
Paulo Gustavo Veiga
f4f97d3112 Add disclamer for tutotial video reproduction. 2012-11-30 22:25:45 -03:00
Paulo Gustavo Veiga
a958fcbd6e Minor typo. 2012-11-30 22:11:30 -03:00
Paulo Gustavo Veiga
02b31e463b Add help icon to the toolbar. 2012-11-30 22:08:51 -03:00
Paulo Gustavo Veiga
6fe53446ce Add link to tutorial video. 2012-11-30 22:03:11 -03:00
Paulo Gustavo Veiga
5d62bf520a Fix collapsed nodes. 2012-11-28 22:14:52 -03:00
Paulo Gustavo Veiga
12448fc6cb Central node never can be collapsed. 2012-11-28 22:09:29 -03:00
Paulo Gustavo Veiga
ebd6f886d5 Try to fix issues with encoding. 2012-11-28 21:45:13 -03:00
Paulo Gustavo Veiga
66e4b0fb19 Update to Spring 3.1.2 2012-11-26 10:43:50 -03:00
Paulo Gustavo Veiga
f34ec25610 Add new icon. 2012-11-24 14:36:18 -03:00
Paulo Gustavo Veiga
46264991b9 Pogress SQL fix. 2012-11-24 14:16:49 -03:00
Paulo Gustavo Veiga
b9748ca23a Add some documentation for password reset. 2012-11-24 12:56:12 -03:00
Paulo Gustavo Veiga
fe99c9a238 Fix zoom issue. 2012-11-22 00:46:24 -03:00
Paulo Gustavo Veiga
9f495f1e76 Fix event error on firefox 1.6. 2012-11-22 00:30:49 -03:00
Paulo Gustavo Veiga
dd1698b5d9 Fix sharing. 2012-11-22 00:22:39 -03:00
Paulo Gustavo Veiga
c5bf91a9fe Disable debug info. 2012-11-22 00:12:12 -03:00
Paulo Gustavo Veiga
ac8309819c Fix Firefox issue with null values. 2012-11-22 00:05:46 -03:00
Paulo Gustavo Veiga
e1e9c9ebeb Minot fix. 2012-11-20 00:17:33 -03:00
Paulo Gustavo Veiga
4062b6771c Fix some issues. 2012-11-20 00:11:06 -03:00
Paulo Gustavo Veiga
0cdabba5eb Fix issue in embedded and public view toolbar. 2012-11-20 00:02:42 -03:00
Paulo Gustavo Veiga
064b8f1071 Change add nodes toolbar action. 2012-11-19 23:31:10 -03:00
Paulo Gustavo Veiga
c3dcd8f3a9 Fix i18n encodding issue. 2012-11-19 22:47:20 -03:00
Paulo Gustavo Veiga
b717a5f910 Remove add from editor. 2012-11-19 21:59:40 -03:00
Paulo Gustavo Veiga
1602421544 Another try. 2012-11-19 21:56:39 -03:00
Paulo Gustavo Veiga
fe44da9b43 Move add to right. 2012-11-19 21:49:56 -03:00
Paulo Gustavo Veiga
2a8ae4c397 Change add location. 2012-11-19 21:19:30 -03:00
Paulo Gustavo Veiga
7f7a67872e Reset all edition actions before delete. 2012-11-18 20:58:23 -03:00
Paulo Gustavo Veiga
322b0ba13e Fix wrong debug transformation. 2012-11-18 20:17:16 -03:00
Paulo Gustavo Veiga
0aa2d67698 Add a small add to test. 2012-11-18 19:29:10 -03:00
Paulo Gustavo Veiga
3c0055b767 Disable ads. 2012-11-18 18:54:56 -03:00
Paulo Gustavo Veiga
2549305621 Add more adds . 2012-11-18 13:38:17 -03:00
Paulo Gustavo Veiga
42564b2759 Fix stared issue. 2012-11-18 13:25:57 -03:00
Paulo Gustavo Veiga
032df5fdf4 Do not update map tiemstamp on map metadata modification. 2012-11-17 21:28:23 -03:00
Paulo Gustavo Veiga
dbbe8901b7 Move add to fixed. 2012-11-17 18:00:55 -03:00
Paulo Gustavo Veiga
91f27c4e10 Fix ads on editor. 2012-11-17 17:47:11 -03:00
Paulo Gustavo Veiga
91aeddee70 Avoid scrolling on drag. 2012-11-17 17:18:40 -03:00
Paulo Gustavo Veiga
fab3c96097 Minor fix for add. 2012-11-17 15:57:02 -03:00
Paulo Gustavo Veiga
b89b08b7b3 Add add to login page and editor page. 2012-11-17 15:43:06 -03:00
Paulo Gustavo Veiga
ed37b20dfc Add debug info. 2012-11-17 14:38:34 -03:00
Paulo Gustavo Veiga
f44e616a4b Minor fix. 2012-11-17 13:57:06 -03:00
Paulo Gustavo Veiga
e70f2726a3 Delete command topic. 2012-11-17 13:54:46 -03:00
Paulo Gustavo Veiga
964505abd4 Filter some useless error for debug. 2012-11-17 13:46:02 -03:00
Paulo Gustavo Veiga
ce932e57e0 Fix issue deleting multiple relationships. 2012-11-17 13:42:46 -03:00
Paulo Gustavo Veiga
2ec9e70245 Relationship source position during drag is not positioned in the center anymore. 2012-11-17 12:23:24 -03:00
Paulo Gustavo Veiga
fc6d91f59e Fix relationship central node positioning problem ... 2012-11-17 12:02:59 -03:00
Paulo Gustavo Veiga
f8a6607de9 Fix equals bug. 2012-11-17 09:59:53 -03:00
Paulo Gustavo Veiga
ca0b5bfcbe Undo of a deleted topic keep into account if the nodes are visible or not. 2012-11-17 00:24:17 -03:00
Paulo Gustavo Veiga
be545d7103 Add german message bundle. 2012-11-16 23:44:23 -03:00
Paulo Gustavo Veiga
3832844ee6 Fix german resource. 2012-11-16 23:36:46 -03:00
Paulo Gustavo Veiga
b3234675cc Fix lazy initialization bug. 2012-11-16 23:29:01 -03:00
Paulo Gustavo Veiga
146c6d8a17 Add more debug ... 2012-11-16 23:17:46 -03:00
Paulo Gustavo Veiga
37e11a5b05 Add more debug... 2012-11-16 23:11:45 -03:00
Paulo Gustavo Veiga
ea5f1afa40 Change file encoding to UTF-8. 2012-11-16 23:02:37 -03:00
Paulo Gustavo Veiga
2e0339492d Add german support. 2012-11-16 22:47:18 -03:00
Paulo Gustavo Veiga
f8d6cdebc4 Merge branch 'master' into db-purge 2012-11-16 22:39:19 -03:00
Paulo Gustavo Veiga
58ed80d763 Avoid additional checks ... 2012-11-16 22:37:29 -03:00
Ralf Mueller
61569bc571 Added german language message files. 2012-11-15 16:15:26 +01:00
Paulo Gustavo Veiga
7ba21f85bf Fix 'element could not be removed:[object Object] fixed. 2012-11-14 23:46:28 -03:00
Paulo Gustavo Veiga
2c5f7139d5 Add new priority icons. 2012-11-14 21:19:56 -03:00
Paulo Gustavo Veiga
0c433352c5 Minor fix. 2012-11-14 20:53:59 -03:00
Paulo Gustavo Veiga
07c8a1d8c7 Update session for the same user. 2012-11-14 20:44:59 -03:00
Paulo Gustavo Veiga
6560973237 Replace all User.equals for Collaborator.identityEquality 2012-11-14 20:35:09 -03:00
Paulo Gustavo Veiga
596aeeebc4 Keep fixing user issues. 2012-11-14 20:33:42 -03:00
Paulo Gustavo Veiga
16e59a0879 Fix collaboration equal issue. 2012-11-14 20:17:55 -03:00
Paulo Gustavo Veiga
2861a7b5f9 Fix user comparator. 2012-11-14 20:00:46 -03:00
Paulo Gustavo Veiga
b1172f16cc Fix more lock issues. 2012-11-13 21:01:04 -03:00
Paulo Gustavo Veiga
71762ff629 Add more debug. 2012-11-13 13:44:33 -03:00
Paulo Gustavo Veiga
00fd168489 Keep fixing session issues. 2012-11-13 13:34:35 -03:00
586 changed files with 96007 additions and 14143 deletions

View File

@@ -1,34 +0,0 @@
# Compiling and Running
## Prerequisites
The following products must be installed:
* Java Development Kit 6 or higher (http://java.sun.com/javase/downloads/index.jsp)
* Maven 3.x or higher (http://maven.apache.org/)
## Compiling
WiseMapping uses Maven as packaging and project management. The project is composed of 4 maven sub-modules:
* core-js: Utilities JavaScript libraries
* web2d: JavaScript 2D VML/SVG abstraction library used by the mind map editor
* mindplot: JavaScript mind map designer core
* wise-editor: Mindmap Editor standalone distribution
* wise-webapp: J2EE web application
Full compilation of the project can be done executing within <project-dir>:
`mvn package`
Once this command is execute, the file <project-dir>/wise-webapp/target/wisemapping*.war will be generated.
## Testing
The previously generated war can be deployed locally executing within the directory <project-dir>/wise-webapp the following command:
`mvn jetty:run-war`
This will start the application on the URL: http://localhost:8080/wise-webapp/. Additionally, a file based database is automatically populated with a test user.
User: test@wisemapping.org
Password: test

View File

@@ -1,22 +0,0 @@
h1. What is WiseMapping Open Source?
WiseMapping is a free web based mindmapping application. The goal of this project is to provide a high quality product that can be deployed by educational and academic institutions, private and public companies and anyone who needs to have a mindmapping application. WiseMapping is based on the same code source supporting WiseMapping.com.
h1. Why Open Source ?
In the last years, we have received hundred of mails from different persons asking for:
Integrating wisemapping.com with their sites
Deploying a private instance of wisemapping.com
Participating in the development of the site
All this make us wonder "Why if we share our product to all this people and invite them to participate with us in this journey ?" .
h1. Who are we ?
Were a couple of friends working on an idea: “Create the best on-line collaborative mind mapping tool ever created”. This has been our idea since the first day we started.
h1. [[Documentation]]
h1. [[Compiling and Running]]
h1. [[FAQ]]

108
README.md
View File

@@ -1,6 +1,4 @@
# WiseMapping: a Web based mindmapping application
## Project Information
# Project Information
The goal of this project is to provide a high quality product that can be deployed by educational and academic institutions, private and public companies and anyone who needs to have a mindmapping application. WiseMapping is based on the same code source supporting WiseMapping.com. More info: www.wisemapping.org
@@ -9,116 +7,66 @@ The goal of this project is to provide a high quality product that can be deploy
### Prerequisites
The following products must be installed:
* Java Development Kit 6 or higher (http://java.sun.com/javase/downloads/index.jsp)
* Maven 2.2.1 or higher (http://maven.apache.org/)
* Java Development Kit 7 or higher ([http://www.oracle.com/technetwork/java/javase/downloads/index.html])
* Maven 3.x or higher ([http://maven.apache.org/])
### Compiling
WiseMapping uses Maven as packaging and project management. The project is composed of 4 maven sub-modules:
* core-js: Utilities JavaScript libraries
WiseMapping uses Maven as packaging and project management. It's composed of 5 maven sub-modules:
* core-js: Utilities JavaScript classes
* web2d: JavaScript 2D SVG abstraction library used by the mind map editor
* mindplot: JavaScript mind map designer core
* mindplot: JavaScript mindmap designer core
* wise-editor: Mindmap Editor standalone distribution
* wise-webapp: J2EE web application
Full compilation of the project can be done executing within <project-dir>:
The full compilation of the project can be performed executing within <project-dir>:
`mvn install`
`mvn package`
Once this command is execute, the file <project-dir>/wise-webapp/target/wisemapping.war will be generated.
Once this command is execute, the file <project-dir>/wise-webapp/target/wisemapping*.war will be generated.
### Testing
The previously generated war can be deployed locally executing within the directory <project-dir>/wise-webapp the following command:
`mvn jetty:run-war`
`cd wise-webapp;mvn jetty:run-war`
This will start the application on the URL: http://localhost:8080/wise-webapp/. Additionally, a file based database is automatically populated with a test user.
This will start the application on the URL: [http://localhost:8080/wise-webapp/]. Additionally, a file based database is automatically populated with a test user.
User: test@wisemapping.org
Password: test
## Running the JS only version
Start by creating the .zip file:
Start by creating the .zip file:
`mvn assembly:assembly -Dmaven.test.skip=true`
To test the javascript frontend you then do:
unzip target/wisemapping-3.0-SNAPSHOT-editor.zip
cd target/wisemapping-3.0-SNAPSHOT-editor
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>8000,:DocumentRoot=>".").start'
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>8000,:DocumentRoot=>".").start'
Now open a browser using the URL http://localhost:8000/
Now open a browser using the URL http://localhost:8000/wise-editor/src/main/webapp/
### Attaching drag and drop events.
## Members
1) Support for dragging TextNodes:
### Founders
The following code is an example of how to add attach to the div dragImageNode the support for node dragging.
$("dragTextNode").addEvent('mousedown', function(event) {
event.preventDefault();
* Pablo Luna <pveiga@wisemapping.com>
* Paulo Veiga <pablo@wisemapping.com>
// Create a image node ...
var mindmap = designer.getMindmap();
var node = mindmap.createNode();
node.setText("Node Text !!!!");
node.setMetadata("{'media':'test'}");
node.setShapeType(mindplot.model.TopicShape.RECTANGLE);
### Individual Controbutors
// Add link ...
var link = node.createFeature(mindplot.TopicFeature.Link.id, {url:"http://www.wisemapping.com"});
node.addFeature(link);
* Ezequiel Bergamaschi <ezequielbergamaschi@gmail.com>
* Claudio Barril <claudiobarril@gmail.com>
// Add Note ...
var note = node.createFeature(mindplot.TopicFeature.Note.id, {text:"This is a note"});
node.addFeature(note);
### Past Individual Contributors
designer.addDraggedNode(event, node);
});
In the example, a new node is created with text "Node Text !!!!" and a note and a link associated to it when the user drop the node. Something to pay attention is the node.setMetadata("{}"), this attributes will be persisted during the serialization. Here you can store all the data you need.
2) Support for dragging Images: Similar to the point 1,drag support is registered to the div dragImageNode.
$("dragImageNode").addEvent('mousedown', function(event) {
event.preventDefault();
// Create a image node ...
var mindmap = designer.getMindmap();
var node = mindmap.createNode();
node.setImageSize(80, 43);
node.setMetadata("{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&feature=g-vrec&context=G2b4ab69RVAAAAAAAAAA'}");
node.setImageUrl("images/logo-small.png");
node.setShapeType(mindplot.model.TopicShape.IMAGE);
designer.addDraggedNode(event, node);
});
The node.setShapeType(mindplot.model.TopicShape.IMAGE) defines a image node. This makes mandatory the set of setImageUrl and setImageSize properties in the node.
3) An event registration mechanism for Image nodes edit events: The next snipped show how to register a custom edition handler.
designer.addEvent("editnode", function(event) {
var node = event.model;
alert("Node Id:" + node.getId());
alert("Node Metadata:" + node.getMetadata());
alert("Is Read Only:" + event.readOnly);
} });
## Author
* Pablo Luna
* Paulo Veiga
* Ignacio Manzano
* Nicolas Damonte
## License
The source code is Licensed under the WiseMapping Open License, Version 1.0 (the “License”);
You may obtain a copy of the License at: http://www.wisemapping.org/license
You may obtain a copy of the License at: [https://wisemapping.atlassian.net/wiki/display/WS/License]

View File

@@ -0,0 +1,10 @@
INSERT INTO COLLABORATOR (id, email, creation_date) VALUES (1, 'test@wisemapping.org', CURDATE());
INSERT INTO USER (colaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email,authentication_type)
VALUES (1, 'Test', 'User', 'ENC:a94a8fe5ccb19ba61c4c0873d391e987982fbbd3', 1237, CURDATE(), 1,'D');
INSERT INTO COLLABORATOR (id, email, creation_date) VALUES (2, 'admin@wisemapping.org', CURDATE());
INSERT INTO USER (colaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email,authentication_type)
VALUES (2, 'Admin', 'User', 'admin', 1237, CURDATE(), 1,'D');
COMMIT;
SHUTDOWN;

View File

@@ -0,0 +1,96 @@
CREATE TABLE COLLABORATOR (
id INTEGER NOT NULL IDENTITY,
email VARCHAR(255) NOT NULL,
creation_date DATE
);
CREATE TABLE USER (
colaborator_id INTEGER NOT NULL IDENTITY,
authentication_type CHAR(1) NOT NULL,
authenticator_uri VARCHAR(255) NULL,
firstname VARCHAR(255) NOT NULL,
lastname VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
activation_code BIGINT NOT NULL,
activation_date DATE,
allow_send_email CHAR(1) NOT NULL,
locale VARCHAR(5),
FOREIGN KEY (colaborator_id) REFERENCES COLLABORATOR (id)
);
CREATE TABLE MINDMAP (
id INTEGER NOT NULL IDENTITY,
title VARCHAR(255) NOT NULL,
description VARCHAR(255) NOT NULL,
xml LONGVARBINARY NOT NULL,
public BOOLEAN NOT NULL,
creation_date DATETIME,
edition_date DATETIME,
creator_id INTEGER NOT NULL,
tags VARCHAR(1014),
last_editor_id INTEGER NOT NULL
--FOREIGN KEY(creator_id) REFERENCES USER(colaborator_id)
);
CREATE TABLE LABEL (
id INTEGER NOT NULL PRIMARY KEY IDENTITY,
title VARCHAR(30),
creator_id INTEGER NOT NULL,
parent_label_id INTEGER,
color VARCHAR(7) NOT NULL,
iconName VARCHAR(50) NOT NULL
--FOREIGN KEY (creator_id) REFERENCES USER (colaborator_id)
);
CREATE TABLE R_LABEL_MINDMAP (
mindmap_id INTEGER NOT NULL,
label_id INTEGER NOT NULL,
PRIMARY KEY (mindmap_id, label_id),
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id),
FOREIGN KEY (label_id) REFERENCES LABEL (id) ON DELETE CASCADE ON UPDATE NO ACTION
);
CREATE TABLE MINDMAP_HISTORY (
id INTEGER NOT NULL IDENTITY,
xml LONGVARBINARY NOT NULL,
mindmap_id INTEGER NOT NULL,
creation_date DATETIME,
editor_id INTEGER NOT NULL,
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id)
);
CREATE TABLE COLLABORATION_PROPERTIES (
id INTEGER NOT NULL IDENTITY,
starred BOOLEAN NOT NULL,
mindmap_properties VARCHAR(512)
);
CREATE TABLE COLLABORATION (
id INTEGER NOT NULL IDENTITY,
colaborator_id INTEGER NOT NULL,
properties_id INTEGER NOT NULL,
mindmap_id INTEGER NOT NULL,
role_id INTEGER NOT NULL,
FOREIGN KEY (colaborator_id) REFERENCES COLLABORATOR (id),
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id),
FOREIGN KEY (properties_id) REFERENCES COLLABORATION_PROPERTIES (id)
);
CREATE TABLE TAG (
id INTEGER NOT NULL IDENTITY,
name VARCHAR(255) NOT NULL,
user_id INTEGER NOT NULL,
--FOREIGN KEY(user_id) REFERENCES USER(colaborator_id)
);
CREATE TABLE ACCESS_AUDITORY (
id INTEGER NOT NULL IDENTITY,
user_id INTEGER NOT NULL,
login_date DATE,
FOREIGN KEY (user_id) REFERENCES USER (colaborator_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
COMMIT;

View File

@@ -0,0 +1,11 @@
DROP TABLE IF EXISTS ACCESS_AUDITORY;
DROP TABLE IF EXISTS TAG;
DROP TABLE IF EXISTS COLLABORATION;
DROP TABLE IF EXISTS COLLABORATION_PROPERTIES;
DROP TABLE IF EXISTS MINDMAP_HISTORY;
DROP TABLE IF EXISTS R_LABEL_MINDMAP;
DROP TABLE IF EXISTS LABEL;
DROP TABLE IF EXISTS MINDMAP;
DROP TABLE IF EXISTS USER;
DROP TABLE IF EXISTS COLLABORATOR;
COMMIT;

View File

@@ -0,0 +1,13 @@
#
# Command: mysql -u root -p < apopulate_schemas.sql
#
INSERT INTO COLLABORATOR (id, email, creation_date) VALUES (1, 'test@wisemapping.org', CURRENT_DATE());
INSERT INTO USER (colaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email,authentication_type)
VALUES (1, 'Test', 'User', 'ENC:a94a8fe5ccb19ba61c4c0873d391e987982fbbd3', 1237, CURRENT_DATE(), 1,'D');
INSERT INTO COLLABORATOR (id, email, creation_date) VALUES (2, 'admin@wisemapping.org', CURRENT_DATE());
INSERT INTO USER (colaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email,authentication_type)
VALUES (2, 'Admin', 'User', 'admin', 1237, CURRENT_DATE(), 1,'D');
COMMIT;

View File

@@ -0,0 +1,10 @@
#
# Command: mysql -u root -p < create_database.sql
#
DROP DATABASE IF EXISTS wisemapping;
CREATE DATABASE IF NOT EXISTS wisemapping
CHARACTER SET = 'utf8'
COLLATE = 'utf8_unicode_ci';
GRANT ALL ON wisemapping.* TO 'wisemapping'@'localhost';
SET PASSWORD FOR 'wisemapping'@'localhost' = PASSWORD('password');

View File

@@ -0,0 +1,137 @@
#
# Command: mysql -u root -p < create_schemas.sql
#
USE wisemapping;
CREATE TABLE COLLABORATOR (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(255)
CHARACTER SET utf8 NOT NULL UNIQUE,
creation_date DATE
)
CHARACTER SET utf8;
CREATE TABLE USER (
colaborator_id INTEGER NOT NULL PRIMARY KEY,
authentication_type CHAR(1)
CHARACTER SET utf8 NOT NULL,
authenticator_uri VARCHAR(255)
CHARACTER SET utf8,
firstname VARCHAR(255) CHARACTER SET utf8 NOT NULL,
lastname VARCHAR(255) CHARACTER SET utf8 NOT NULL,
password VARCHAR(255) CHARACTER SET utf8 NOT NULL,
activation_code BIGINT(20) NOT NULL,
activation_date DATE,
allow_send_email CHAR(1) CHARACTER SET utf8 NOT NULL DEFAULT 0,
locale VARCHAR(5),
FOREIGN KEY (colaborator_id) REFERENCES COLLABORATOR (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE MINDMAP (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255)
CHARACTER SET utf8 NOT NULL,
description VARCHAR(255)
CHARACTER SET utf8 NOT NULL,
xml MEDIUMBLOB NOT NULL,
public BOOL NOT NULL DEFAULT 0,
creation_date DATETIME,
edition_date DATETIME,
creator_id INTEGER NOT NULL,
tags VARCHAR(1014)
CHARACTER SET utf8,
last_editor_id INTEGER NOT NULL,
FOREIGN KEY (creator_id) REFERENCES USER (colaborator_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE LABEL (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(30)
CHARACTER SET utf8 NOT NULL,
creator_id INTEGER NOT NULL,
parent_label_id INTEGER,
color VARCHAR(7) NOT NULL,
iconName VARCHAR(50) NOT NULL,
FOREIGN KEY (creator_id) REFERENCES USER (colaborator_id),
FOREIGN KEY (parent_label_id) REFERENCES LABEL (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE R_LABEL_MINDMAP (
mindmap_id INTEGER NOT NULL,
label_id INTEGER NOT NULL,
PRIMARY KEY (mindmap_id, label_id),
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id),
FOREIGN KEY (label_id) REFERENCES LABEL (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE MINDMAP_HISTORY
(id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
xml MEDIUMBLOB NOT NULL,
mindmap_id INTEGER NOT NULL,
creation_date DATETIME,
editor_id INTEGER NOT NULL,
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE COLLABORATION_PROPERTIES (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
starred BOOL NOT NULL DEFAULT 0,
mindmap_properties VARCHAR(512)
CHARACTER SET utf8
)
CHARACTER SET utf8;
CREATE TABLE COLLABORATION (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
colaborator_id INTEGER NOT NULL,
properties_id INTEGER NOT NULL,
mindmap_id INTEGER NOT NULL,
role_id INTEGER NOT NULL,
FOREIGN KEY (colaborator_id) REFERENCES COLLABORATOR (id),
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (properties_id) REFERENCES COLLABORATION_PROPERTIES (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE TAG (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255)
CHARACTER SET utf8 NOT NULL,
user_id INTEGER NOT NULL,
FOREIGN KEY (user_id) REFERENCES USER (colaborator_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE ACCESS_AUDITORY (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
login_date DATE,
user_id INTEGER NOT NULL,
FOREIGN KEY (user_id) REFERENCES USER (colaborator_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
COMMIT;

View File

@@ -0,0 +1,11 @@
DROP TABLE IF EXISTS TAG;
DROP TABLE IF EXISTS ACCESS_AUDITORY;
DROP TABLE IF EXISTS COLLABORATION;
DROP TABLE IF EXISTS COLLABORATION_PROPERTIES;
DROP TABLE IF EXISTS MINDMAP_HISTORY;
DROP TABLE IF EXISTS LABEL;
DROP TABLE IF EXISTS MINDMAP;
DROP TABLE IF EXISTS R_LABEL_MINDMAP
DROP TABLE IF EXISTS USER;
DROP TABLE IF EXISTS COLLABORATOR;
COMMIT;

View File

@@ -0,0 +1,57 @@
CREATE TABLE COLLABORATION_PROPERTIES (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
starred BOOL NOT NULL DEFAULT 0,
mindmap_properties VARCHAR(512)
CHARACTER SET utf8
)
CHARACTER SET utf8;
DROP TABLE `MINDMAP_NATIVE`;
ALTER TABLE `MINDMAP_COLABORATOR` RENAME TO `COLLABORATION`;
ALTER TABLE `COLABORATOR` RENAME TO `COLLABORATOR`;
ALTER TABLE `MINDMAP` DROP COLUMN `editor_properties`, DROP COLUMN `mindMapNative_id`;
ALTER TABLE `MINDMAP` CHANGE COLUMN `owner_id` `creator_id` INT(11) NOT NULL
, DROP INDEX `owner_id`
, ADD INDEX `owner_id` (`creator_id` ASC);
ALTER TABLE `COLLABORATION` ADD COLUMN `properties_id` INT(11) NULL DEFAULT NULL
AFTER `role_id`;
DROP TABLE USER_LOGIN;
CREATE TABLE ACCESS_AUDITORY (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
user_id INTEGER NOT NULL,
login_date DATE
)
CHARACTER SET utf8;
#ALTER TABLE ACCESS_AUDITORY
# ADD CONSTRAINT `user_id`
# FOREIGN KEY ()
# REFERENCES `USER` ()
# ON DELETE CASCADE
# ON UPDATE NO ACTION
#, ADD INDEX `user_id` () ;
ALTER TABLE `MINDMAP_HISTORY` DROP COLUMN `creator_user`, ADD COLUMN `editor_id` INT(11) NULL DEFAULT NULL AFTER `creation_date`;
ALTER TABLE `USER` ADD COLUMN `locale` VARCHAR(5) NULL
AFTER `allowSendEmail`;
ALTER TABLE `MINDMAP` DROP COLUMN `last_editor`, ADD COLUMN `last_editor_id` INT(11) NULL DEFAULT 2
AFTER `tags`;
ALTER TABLE `USER` DROP COLUMN `username`, CHANGE COLUMN `activationCode` `activation_code` BIGINT(20) NOT NULL, CHANGE COLUMN `allowSendEmail` `allow_send_email` CHAR(1) NOT NULL DEFAULT '0';
INSERT INTO `MINDMAP` (`last_editor_id`) VALUES (1);
INSERT INTO `COLLABORATOR` (`id`, `email`, `creation_date`) VALUES (8081, 'migfake@wis.com', '2007-10-09');
DELETE FROM `USER`
WHERE activation_date IS null;
DROP TABLE FEEDBACK;
ALTER TABLE `MINDMAP` CHANGE COLUMN `XML` `XML` MEDIUMBLOB NULL DEFAULT NULL;
ALTER TABLE `MINDMAP_HISTORY` CHANGE COLUMN `XML` `XML` MEDIUMBLOB NULL DEFAULT NULL;

View File

@@ -0,0 +1,5 @@
ALTER TABLE `USER` ADD COLUMN `authentication_type` CHAR(1) CHARACTER SET utf8 NOT NULL DEFAULT 'D'
AFTER `colaborator_id`;
ALTER TABLE `USER` ADD COLUMN `authenticator_uri` VARCHAR(255) CHARACTER SET utf8
AFTER `authentication_type`;

View File

@@ -0,0 +1,37 @@
ALTER TABLE `USER` DROP COLUMN `id`;
ALTER TABLE `ACCESS_AUDITORY`
ADD CONSTRAINT
FOREIGN KEY (user_id) REFERENCES USER (colaborator_id)
ON DELETE CASCADE
ON UPDATE NO ACTION;
CREATE TABLE LABEL (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(30)
CHARACTER SET utf8 NOT NULL,
creator_id INTEGER NOT NULL,
parent_label_id INTEGER,
color VARCHAR(7) NOT NULL,
FOREIGN KEY (creator_id) REFERENCES USER (colaborator_id),
FOREIGN KEY (parent_label_id) REFERENCES LABEL (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
CREATE TABLE R_LABEL_MINDMAP (
mindmap_id INTEGER NOT NULL,
label_id INTEGER NOT NULL,
PRIMARY KEY (mindmap_id, label_id),
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id),
FOREIGN KEY (label_id) REFERENCES LABEL (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
)
CHARACTER SET utf8;
ALTER TABLE `LABEL`
ADD COLUMN iconName VARCHAR(50) NOT NULL;
UPDATE LABEL SET iconName = 'glyphicon glyphicon-tag';

View File

@@ -0,0 +1,3 @@
CREATE DATABASE wisemapping;
CREATE USER wisemapping WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE wisemapping TO wisemapping;

View File

@@ -0,0 +1,96 @@
CREATE TABLE COLLABORATOR (
id SERIAL NOT NULL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
creation_date DATE
);
CREATE TABLE "user" (
authentication_type TEXT NOT NULL,
authenticator_uri VARCHAR(255),
colaborator_id INTEGER NOT NULL PRIMARY KEY,
firstname VARCHAR(255) NOT NULL,
lastname VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
activation_code BIGINT NOT NULL,
activation_date DATE,
allow_send_email TEXT NOT NULL DEFAULT 0,
locale VARCHAR(5),
FOREIGN KEY (colaborator_id) REFERENCES COLLABORATOR (id) ON DELETE CASCADE ON UPDATE NO ACTION
);
CREATE TABLE LABEL (
id INTEGER NOT NULL PRIMARY KEY,
title VARCHAR(255),
creator_id INTEGER NOT NULL,
parent_label_id INTEGER,
color VARCHAR(7) NOT NULL
--FOREIGN KEY (creator_id) REFERENCES USER (colaborator_id)
);
CREATE TABLE R_LABEL_MINDMAP (
mindmap_id INTEGER NOT NULL,
label_id INTEGER NOT NULL,
PRIMARY KEY (mindmap_id, label_id),
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id),
FOREIGN KEY (label_id) REFERENCES LABEL (id) ON DELETE CASCADE ON UPDATE NO ACTION
);
CREATE TABLE MINDMAP (
id SERIAL NOT NULL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description VARCHAR(255) NOT NULL,
xml BYTEA NOT NULL,
public BOOL NOT NULL DEFAULT FALSE,
creation_date TIMESTAMP,
edition_date TIMESTAMP,
creator_id INTEGER NOT NULL,
tags VARCHAR(1014),
last_editor_id INTEGER NOT NULL --,
--FOREIGN KEY(creator_id) REFERENCES "USER"(colaborator_id) ON DELETE CASCADE ON UPDATE NO ACTION
);
CREATE TABLE MINDMAP_HISTORY
(id SERIAL NOT NULL PRIMARY KEY,
xml BYTEA NOT NULL,
mindmap_id INTEGER NOT NULL,
creation_date TIMESTAMP,
editor_id INTEGER NOT NULL,
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id) ON DELETE CASCADE ON UPDATE NO ACTION
);
CREATE TABLE COLLABORATION_PROPERTIES (
id SERIAL NOT NULL PRIMARY KEY,
starred BOOL NOT NULL DEFAULT FALSE,
mindmap_properties VARCHAR(512)
);
CREATE TABLE COLLABORATION (
id SERIAL NOT NULL PRIMARY KEY,
colaborator_id INTEGER NOT NULL,
properties_id INTEGER NOT NULL,
mindmap_id INTEGER NOT NULL,
role_id INTEGER NOT NULL,
FOREIGN KEY (colaborator_id) REFERENCES COLLABORATOR (id),
FOREIGN KEY (mindmap_id) REFERENCES MINDMAP (id) ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (properties_id) REFERENCES COLLABORATION_PROPERTIES (id) ON DELETE CASCADE ON UPDATE NO ACTION
);
CREATE TABLE TAG (
id SERIAL NOT NULL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
user_id INTEGER NOT NULL --,
--FOREIGN KEY(user_id) REFERENCES "USER"(colaborator_id) ON DELETE CASCADE ON UPDATE NO ACTION
);
CREATE TABLE ACCESS_AUDITORY (
id SERIAL NOT NULL PRIMARY KEY,
login_date DATE,
user_id INTEGER NOT NULL,
FOREIGN KEY (user_id) REFERENCES "user" (colaborator_id) ON DELETE CASCADE ON UPDATE NO ACTION
);
COMMIT;

View File

@@ -1,9 +1,11 @@
DROP TABLE TAG;
DROP TABLE ACCESS_AUDITORY;
DROP TABLE COLLABORATION;
DROP TABLE COLLABORATION_PROPERTIES;
DROP TABLE MINDMAP_HISTORY;
DROP TABLE MINDMAP;
DROP TABLE USER;
DROP TABLE COLLABORATOR;
DROP TABLE TAG;
DROP TABLE ACCESS_AUDITORY;
DROP TABLE COLLABORATION;
DROP TABLE COLLABORATION_PROPERTIES;
DROP TABLE MINDMAP_HISTORY;
DROP TABLE R_LABEL_MINDMAP;
DROP TABLE LABEL;
DROP TABLE MINDMAP;
DROP TABLE "user";
DROP TABLE COLLABORATOR;
COMMIT;

View File

@@ -9,7 +9,7 @@
<groupId>org.wisemapping</groupId>
<artifactId>wisemapping</artifactId>
<relativePath>../pom.xml</relativePath>
<version>3.0-SNAPSHOT</version>
<version>3.0.4</version>
</parent>
<build>

View File

@@ -6,7 +6,7 @@
<format>zip</format>
</formats>
<files>
<file>
<file>
<source>core-js/target/classes/core.js</source>
<outputDirectory>/js</outputDirectory>
</file>
@@ -14,10 +14,6 @@
<source>mindplot/target/classes/mindplot-min.js</source>
<outputDirectory>/js</outputDirectory>
</file>
<file>
<source>mindplot/target/classes/mindplot.js</source>
<outputDirectory>/js</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>

View File

@@ -1,21 +0,0 @@
#!/bin/bash
set -e
set -u
WISE_VERSION=$1
SERVER_DOWNLOAD_DIR=/var/www/wisemapping.org/stable
WISE_BIN_FILE_NAME=wisemapping-${WISE_VERSION}.zip
WISE_BIN_FILE_PATH=./target/${WISE_BIN_FILE_NAME}
#WISE_SRC_FILE_NAME=wisemapping-${WISE_VERSION}-src.tar.gz
#WISE_SRC_FILE_PATH=./target/${WISE_SRC_FILE_NAME}
#scp ${WISE_SRC_FILE_PATH} thecrow@wisemapping.com:${SERVER_DOWNLOAD_DIR}/
scp ${WISE_BIN_FILE_PATH} thecrow@wisemapping.com:${SERVER_DOWNLOAD_DIR}
# It's there ?
cd target
wget -S http://downloads.wisemapping.org/stable/${WISE_BIN_FILE_NAME}
#wget -S http://downloads.wisemapping.org/stable/${WISE_SRC_FILE_NAME}

View File

@@ -8,7 +8,7 @@ BASE_DIR=`pwd`
TARGET_DIR=$BASE_DIR/target
JETTY_DIR=$TARGET_DIR/wisemapping-$WISE_VERSION
WISE_WEBAPP_DIR=$JETTY_DIR/webapps/wisemapping
JETTY_VERSION=8.1.5.v20120716
JETTY_VERSION=8.1.14.v20131031
JETTY_DIST_DIR=jetty-distribution-${JETTY_VERSION}
JETTY_ZIP=${JETTY_DIST_DIR}.zip
@@ -51,8 +51,9 @@ cp $BASE_DIR/wisemapping.xml $JETTY_DIR/contexts/
# Distribute scripts
cp -r $BASE_DIR/../wise-webapp/src/test/sql $TARGET_DIR/wisemapping-$WISE_VERSION/config
cp -r $BASE_DIR/../config/ $TARGET_DIR/wisemapping-$WISE_VERSION/config
cp ./start.sh ${JETTY_DIR}/
cp -r $BASE_DIR/service $TARGET_DIR/wisemapping-$WISE_VERSION/service
# Store version
echo $1 > $WISE_WEBAPP_DIR/version

View File

@@ -1,32 +0,0 @@
#!/bin/bash
set -e
set -u
WISE_VERSION=$1
TMP_DIR=/tmp/wise-src/wisemapping-src
TAR_FILE_NAME=wisemapping-${WISE_VERSION}-src.tar.gz
OUTPUT_DIR=`pwd`"/target"
OUTPUT_FILE=${OUTPUT_DIR}/${TAR_FILE_NAME}
# Clean all.
cd ..
rm -rf ${TMP_DIR}/../
mvn clean
# Prepare copy
mkdir -p ${TMP_DIR}
rsync -aCv --exclude ".git" --exclude "wisemapping.i*" --exclude "**/*/Brix*" --exclude "**/brix" --exclude "*/*.iml" --exclude "*/wisemapping.log*" --exclude "**/.DS_Store" --exclude "*.textile" --exclude "**/.gitignore" --exclude "installer" --exclude "*/target" . ${TMP_DIR}
# Zip file
[ ! -e ${OUTPUT_DIR} ] && mkdir ${OUTPUT_DIR}
rm -f ${OUTPUT_FILE}
cd ${TMP_DIR}/..
tar -cvzf ${OUTPUT_FILE} .
echo
echo "#################################################################"
echo "Zip file generated on:"${OUTPUT_FILE}
echo "#################################################################"

View File

@@ -0,0 +1,72 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: wisemapping
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: wisemapping
# Description: www.wisemapping.com
### END INIT INFO
set -e
set -u
#environmental variables
JAVA_HOME="/usr/lib/jvm/java7"
JDK_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
WISE_HOME="/opt/wisemapping"
PID_FILE="$WISE_HOME/.pid"
SELF=$(cd $(dirname $0); pwd -P)/$(basename $0)
preInitChecks() {
MYSQL_STATUS=`pgrep mysql`
if [ -z $MYSQL_STATUS ]; then
service mysql start >/dev/null 2>&1
fi
}
wiseStatus() {
echo `pgrep -f "$WISE_HOME/start.jar"`
}
case "${1:-''}" in
'start')
#preInitChecks
cd $WISE_HOME
echo "Starting Wisemapping..."
java -Xmx256m -Dorg.apache.jasper.compiler.disablejsr199=true -jar $WISE_HOME/start.jar > $WISE_HOME/logs/start.log 2>&1 &
PID=$!
cd - >/dev/null 2>&1
echo "proccess id: $PID"
echo "$PID" > $PID_FILE
;;
'stop')
if [ ! -f $PID_FILE ]; then
PID=$(wiseStatus)
else
PID=`cat $PID_FILE`
rm $PID_FILE >/dev/null 2>&1
fi
kill $PID
echo "Wisemapping stopped"
;;
'restart')
set +e; $SELF stop; set -e
$SELF start
;;
'status')
STATUS=$(wiseStatus)
if [ -n "$STATUS" ]; then
echo "Wisemapping server is running, pid: $STATUS"
else
echo "Wisemapping is stopped"
fi
;;
*)
echo "Usage: $SELF start|stop|restart|status"
exit 1
;;
esac

View File

@@ -1,4 +1,4 @@
Copyright [2012] [wisemapping]
Copyright [2014] [wisemapping]
Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the

View File

@@ -9,7 +9,7 @@
<groupId>org.wisemapping</groupId>
<artifactId>wisemapping</artifactId>
<relativePath>../pom.xml</relativePath>
<version>3.0-SNAPSHOT</version>
<version>3.0.4</version>
</parent>
<dependencies>
@@ -193,9 +193,6 @@
<include>commands/AddFeatureToTopicCommand.js</include>
<include>commands/AddRelationshipCommand.js</include>
<include>commands/MoveControlPointCommand.js</include>
<include>collaboration/CollaborationManager.js</include>
<include>collaboration/framework/AbstractCollaborativeFramework.js</include>
<include>collaboration/framework/AbstractCollaborativeModelFactory.js</include>
<include>widget/ModalDialogNotifier.js</include>
<include>widget/ToolbarNotifier.js</include>
<include>widget/ToolbarItem.js</include>
@@ -228,10 +225,12 @@
<include>layout/EventBus.js</include>
<include>MessageBundle_en.js</include>
<include>MessageBundle_es.js</include>
<include>MessageBundle_de.js</include>
<include>MessageBundle_fr.js</include>
<include>MessageBundle_pt_BR.js</include>
<include>MessageBundle_zh_CN.js</include>
<include>MessageBundle_zh_TW.js</include>
<include>MessageBundle_ca.js</include>
<include>footer.js</include>
</includes>
</aggregation>

View File

@@ -1,153 +0,0 @@
/*
* Copyright [2012] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.BrixActionDispatcher = new Class({
Extends: mindplot.ActionDispatcher,
initialize: function(commandContext, fireOnChange) {
this.parent(commandContext, fireOnChange);
this._commandContext = commandContext;
},
dragTopic: function(topicId, position, order, parentTopic) {
var framework = this._getFramework();
var node = framework.getTopic(topicId);
// Set node order ...
if (order != null) {
node.setOrder(order);
} else if (position != null) {
// Set position ...
node.setPosition(position);
} else {
$assert("Illegal commnand state exception.");
}
// Finally, connect node ...
if ($defined(this._parentId)) {
var parentNode = topic.findTopics([this._parentId])[0];
node.disconnect();
node.connect(parentNode);
}
},
changeTextToTopic : function(topicsIds, text) {
var framework = this._getFramework();
var topicId;
if (!(topicsIds instanceof Array)) {
topicId = topicsIds;
} else {
topicId = topicsIds[0];
}
var node = framework.getTopic(topicId);
node.setText(text);
},
_getFramework:function () {
return mindplot.collaboration.CollaborationManager.getInstance().getCollaborativeFramework();
},
addTopics : function(nodeModel, parentTopicId) {
var framework = this._getFramework();
var cmindmap = framework.getModel();
var cparent = $defined(parentTopicId) ? framework.getTopic(parentTopicId) : cmindmap.getCentralTopic();
var cnode = cmindmap.createNode(nodeModel.getType(), nodeModel.getId());
nodeModel.copyTo(cnode);
cnode.connectTo(cparent);
},
changeFontSizeToTopic : function(topicsIds, size) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
topic.setFontSize(size, true);
}.bind(this));
},
changeFontColorToTopic : function(topicsIds, color) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
topic.setFontColor(color, true);
}.bind(this));
},
changeFontFamilyToTopic : function(topicsIds, family) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
topic.setFontFamily(family, true);
}.bind(this));
},
changeFontStyleToTopic : function(topicsIds) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
var style = ( topic.getFontStyle() == "italic") ? "normal" : "italic";
topic.setFontStyle(style, true);
}.bind(this));
},
changeShapeTypeToTopic : function(topicsIds, shapeType) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
topic.setShapeType(shapeType);
}.bind(this))
},
changeFontWeightToTopic : function(topicsIds) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
var weight = (topic.getFontWeight() == "bold") ? "normal" : "bold";
topic.setFontWeight(weight, true);
}.bind(this));
},
changeBackgroundColorToTopic : function(topicsIds, color) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
topic.setBackgroundColor(color, true);
}.bind(this));
},
changeBorderColorToTopic : function(topicsIds, color) {
topicsIds.each(function(topicId) {
var framework = this._getFramework();
var topic = framework.getTopic(topicId);
topic.setBorderColor(color);
}.bind(this));
},
deleteEntities : function(topicsIds, relIds) {
$assert(topicsIds, "topicsIds can not be null");
var framework = this._getFramework();
var mindmap = framework.getModel();
topicsIds.each(function(topicId) {
var topic = framework.getTopic(topicId);
topic.deleteNode();
});
}
});

View File

@@ -29,16 +29,12 @@ mindplot.ConnectionLine = new Class({
var ctrlPoints = this._getCtrlPoints(sourceNode, targetNode);
if (targetNode.getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
line = this._createLine(lineType, mindplot.ConnectionLine.CURVED);
if (line.getType() == "CurvedLine") {
line.setSrcControlPoint(ctrlPoints[0]);
line.setDestControlPoint(ctrlPoints[1]);
}
line.setSrcControlPoint(ctrlPoints[0]);
line.setDestControlPoint(ctrlPoints[1]);
} else {
line = this._createLine(lineType, mindplot.ConnectionLine.SIMPLE_CURVED);
if (line.getType() == "CurvedLine") {
line.setSrcControlPoint(ctrlPoints[0]);
line.setDestControlPoint(ctrlPoints[1]);
}
line.setSrcControlPoint(ctrlPoints[0]);
line.setDestControlPoint(ctrlPoints[1]);
}
// Set line styles ...
var strokeColor = mindplot.ConnectionLine.getStrokeColor();

View File

@@ -33,11 +33,7 @@ mindplot.Designer = new Class({
// Dispatcher manager ...
var commandContext = new mindplot.CommandContext(this);
if (!$defined(options.collab) || options.collab == 'standalone') {
this._actionDispatcher = new mindplot.StandaloneActionDispatcher(commandContext);
} else {
this._actionDispatcher = new mindplot.BrixActionDispatcher(commandContext);
}
this._actionDispatcher = new mindplot.StandaloneActionDispatcher(commandContext);
this._actionDispatcher.addEvent("modelUpdate", function (event) {
this.fireEvent("modelUpdate", event);
@@ -440,8 +436,9 @@ mindplot.Designer = new Class({
}
// Execute event ...
var topic = nodes[0];
this._actionDispatcher.shrinkBranch([topic.getId()], !topic.areChildrenShrunken());
if (topic.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
this._actionDispatcher.shrinkBranch([topic.getId()], !topic.areChildrenShrunken());
}
},
createChildForSelectedNode:function () {
@@ -469,10 +466,57 @@ mindplot.Designer = new Class({
},
_copyNodeProps: function(sourceModel,targetModel){
// I don't copy the font size if the target is the source is the central topic.
if(sourceModel.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE)
{
var fontSize = sourceModel.getFontSize();
if(fontSize){
targetModel.setFontSize(fontSize)
}
}
var fontFamily = sourceModel.getFontFamily();
if(fontFamily){
targetModel.setFontFamily(fontFamily)
}
var fontColor = sourceModel.getFontColor();
if(fontColor){
targetModel.setFontColor(fontColor)
}
var fontWeight = sourceModel.getFontWeight();
if(fontWeight){
targetModel.setFontWeight(fontWeight)
}
var fontStyle = sourceModel.getFontStyle();
if(fontStyle){
targetModel.setFontStyle(fontStyle)
}
var shape = sourceModel.getShapeType();
if(shape){
targetModel.setShapeType(shape)
}
var borderColor = sourceModel.getBorderColor();
if(borderColor){
targetModel.setBorderColor(borderColor)
}
var backgroundColor = sourceModel.getBackgroundColor();
if(backgroundColor){
targetModel.setBackgroundColor(backgroundColor)
}
},
_createChildModel:function (topic, mousePos) {
// Create a new node ...
var model = topic.getModel();
var mindmap = model.getMindmap();
var parentModel = topic.getModel();
var mindmap = parentModel.getMindmap();
var childModel = mindmap.createNode();
// Create a new node ...
@@ -483,6 +527,8 @@ mindplot.Designer = new Class({
var position = result.position;
childModel.setPosition(position.x, position.y);
this._copyNodeProps(parentModel,childModel);
return childModel;
},
@@ -547,8 +593,11 @@ mindplot.Designer = new Class({
// Create a new node ...
var order = topic.getOrder() + 1;
result.setOrder(order);
result.setPosition(10, 10); // Set a dummy pisition ...
result.setPosition(10, 10); // Set a dummy position ...
}
this._copyNodeProps(model,result);
return result;
},
@@ -697,6 +746,9 @@ mindplot.Designer = new Class({
var targetTopicId = model.getToNode();
var targetTopic = dmodel.findTopicById(targetTopicId);
$assert(targetTopic, "targetTopic could not be found:" + targetTopicId + dmodel.getTopics().map(function (e) {
return e.getId()
}));
// Build relationship line ....
var result = new mindplot.Relationship(sourceTopic, targetTopic, model);
@@ -749,7 +801,16 @@ mindplot.Designer = new Class({
}
},
_resetEdition:function () {
var screenManager = this._workspace.getScreenManager();
screenManager.fireEvent("update");
screenManager.fireEvent("mouseup");
this._relPivot.dispose();
},
deleteSelectedEntities:function () {
// Is there some action in progress ?.
this._resetEdition();
var topics = this.getModel().filterSelectedTopics();
var relation = this.getModel().filterSelectedRelationships();

View File

@@ -252,7 +252,7 @@ mindplot.DesignerKeyboard = new Class({
designer.zoomOut();
},
'ctrl++':function (event) {
'ctrl+=':function (event) {
event.preventDefault();
event.stopPropagation();

View File

@@ -115,14 +115,16 @@ mindplot.DragTopic = new Class({
},
removeFromWorkspace:function (workspace) {
// Remove drag shadow.
workspace.removeChild(this._elem2d);
this._isInWorkspace = false;
if (this._isInWorkspace) {
// Remove drag shadow.
workspace.removeChild(this._elem2d);
// Remove pivot shape. To improve performace it will not be removed. Only the visibility will be changed.
var dragPivot = this._getDragPivot();
dragPivot.setVisibility(false);
// Remove pivot shape. To improve performance it will not be removed. Only the visibility will be changed.
var dragPivot = this._getDragPivot();
dragPivot.setVisibility(false);
this._isInWorkspace = false;
}
},
isInWorkspace:function () {
@@ -130,10 +132,12 @@ mindplot.DragTopic = new Class({
},
addToWorkspace:function (workspace) {
workspace.appendChild(this._elem2d);
var dragPivot = this._getDragPivot();
dragPivot.addToWorkspace(workspace);
this._isInWorkspace = true;
if (!this._isInWorkspace) {
workspace.appendChild(this._elem2d);
var dragPivot = this._getDragPivot();
dragPivot.addToWorkspace(workspace);
this._isInWorkspace = true;
}
},
_getDragPivot:function () {

View File

@@ -102,7 +102,6 @@ mindplot.ImageIcon = new Class({
}
});
mindplot.ImageIcon.prototype.ICON_FAMILIES = [
{"id":"face", "icons":["face_plain", "face_sad", "face_crying", "face_smile", "face_surprise", "face_wink"]},
{"id":"funy", "icons":["funy_angel", "funy_devilish", "funy_glasses", "funy_grin", "funy_kiss", "funy_monkey"]},
@@ -114,6 +113,7 @@ mindplot.ImageIcon.prototype.ICON_FAMILIES = [
{"id":"onoff", "icons":["onoff_clock", "onoff_clock_red", "onoff_add", "onoff_delete", "onoff_status_offline", "onoff_status_online"]},
{"id":"money", "icons":["money_money", "money_dollar", "money_euro", "money_pound", "money_yen", "money_coins", "money_ruby"]},
{"id":"time", "icons":["time_calendar", "time_clock", "time_hourglass"]},
{"id":"number", "icons":["number_1", "number_2", "number_3", "number_4", "number_5", "number_6", "number_7", "number_8", "number_9"]},
{"id":"chart", "icons":["chart_bar", "chart_line", "chart_curve", "chart_pie", "chart_organisation"]},
{"id":"sign", "icons":["sign_warning", "sign_info", "sign_stop", "sign_help", "sign_cancel"]},
{"id":"hard", "icons":["hard_cd", "hard_computer", "hard_controller", "hard_driver_disk", "hard_ipod", "hard_keyboard", "hard_mouse", "hard_printer"]},
@@ -126,7 +126,7 @@ mindplot.ImageIcon.prototype.ICON_FAMILIES = [
{"id":"bullet", "icons":["bullet_black", "bullet_blue", "bullet_green", "bullet_orange", "bullet_red", "bullet_pink", "bullet_purple"]},
{"id":"tag", "icons":["tag_blue", "tag_green", "tag_orange", "tag_red", "tag_pink", "tag_yellow"]},
{"id":"object", "icons":["object_bell", "object_clanbomber", "object_key", "object_pencil", "object_phone", "object_magnifier", "object_clip", "object_music", "object_star", "object_wizard", "object_house", "object_cake", "object_camera", "object_palette", "object_rainbow"]},
{"id":"weather", "icons":["weather_clear-night", "weather_clear", "weather_few-clouds-night", "weather_few-clouds", "weather_overcast", "weather_severe-alert", "weather_showers-scattered", "weather_showers", "weather_snow", "weather_storm"]}
{"id":"weather", "icons":["weather_clear-night", "weather_clear", "weather_few-clouds-night", "weather_few-clouds", "weather_overcast", "weather_severe-alert", "weather_showers-scattered", "weather_showers", "weather_snow", "weather_storm"]},
{"id":"task", "icons":["task_0", "task_25", "task_50", "task_75", "task_100"]}
];

View File

@@ -18,8 +18,10 @@
mindplot.LocalStorageManager = new Class({
Extends:mindplot.PersistenceManager,
initialize:function () {
initialize:function (documentUrl,forceLoad) {
this.parent();
this.documentUrl = documentUrl;
this.forceLoad = forceLoad;
},
saveMapXml:function (mapId, mapXml, pref, saveHistory, events) {
@@ -32,10 +34,10 @@ mindplot.LocalStorageManager = new Class({
loadMapDom:function (mapId) {
var xml = localStorage.getItem(mapId + "-xml");
if (xml == null) {
// Let's try to open one from the local directory ...
if (xml == null || this.forceLoad) {
var xmlRequest = new Request({
url:'samples/' + mapId + '.xml',
url:this.documentUrl.replace("{id}", mapId),
headers:{"Content-Type":"text/plain","Accept":"application/xml"},
method:'get',
async:false,
onSuccess:function (responseText) {

View File

@@ -98,28 +98,7 @@ mindplot.MainTopic = new Class({
},
workoutIncomingConnectionPoint:function (sourcePosition) {
$assert(sourcePosition, 'sourcePoint can not be null');
var pos = this.getPosition();
var size = this.getSize();
var isAtRight = mindplot.util.Shape.isAtRight(sourcePosition, pos);
var result = mindplot.util.Shape.calculateRectConnectionPoint(pos, size, isAtRight);
if (this.getShapeType() == mindplot.model.TopicShape.LINE) {
result.y = result.y + (this.getSize().height / 2);
}
// Move a little the position...
var offset = mindplot.Topic.CONNECTOR_WIDTH / 2;
if (this.getPosition().x > 0) {
result.x = result.x + offset;
} else {
result.x = result.x - offset;
}
result.x = Math.ceil(result.x);
result.y = Math.ceil(result.y);
return result;
return mindplot.util.Shape.workoutIncomingConnectionPoint(this, sourcePosition);
},
workoutOutgoingConnectionPoint:function (targetPosition) {

View File

@@ -191,7 +191,7 @@ mindplot.MultilineTextEditor = new Class({
// Set editor's initial size
var displayFunc = function () {
// Position the editor and set the size...
var textShape = this._topic.getTextShape();
var textShape = topic.getTextShape();
textShape.positionRelativeTo(this._containerElem, {
position:{x:'left', y:'top'},
edge:{x:'left', y:'top'}

View File

@@ -83,14 +83,19 @@ mindplot.Relationship = new Class({
var targetTopic = this._targetTopic;
var targetPosition = targetTopic.getPosition();
if (targetTopic.getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
targetPosition = mindplot.util.Shape.workoutIncomingConnectionPoint(targetTopic, sourcePosition);
}
var sPos, tPos;
this._line2d.setStroke(2);
var ctrlPoints = this._line2d.getControlPoints();
if (!this._line2d.isDestControlPointCustom() && !this._line2d.isSrcControlPointCustom()) {
var defaultPoints = mindplot.util.Shape.calculateDefaultControlPoints(sourcePosition, targetPosition);
ctrlPoints[0].x = defaultPoints[0].x;
ctrlPoints[0].y = defaultPoints[0].y;
ctrlPoints[1].x = defaultPoints[1].x;
ctrlPoints[1].y = defaultPoints[1].y;
}
@@ -101,6 +106,7 @@ mindplot.Relationship = new Class({
var tpoint = new core.Point();
tpoint.x = parseInt(ctrlPoints[1].x) + parseInt(targetPosition.x);
tpoint.y = parseInt(ctrlPoints[1].y) + parseInt(targetPosition.y);
sPos = mindplot.util.Shape.calculateRelationShipPointCoordinates(sourceTopic, spoint);
tPos = mindplot.util.Shape.calculateRelationShipPointCoordinates(targetTopic, tpoint);

View File

@@ -43,7 +43,9 @@ mindplot.RelationshipPivot = new Class({
this._pivot = new web2d.CurvedLine();
this._pivot.setStyle(web2d.CurvedLine.SIMPLE_LINE);
this._pivot.setFrom(sourcePos.x, sourcePos.y);
var fromPos = this._calculateFromPosition(sourcePos);
this._pivot.setFrom(fromPos.x, fromPos.y);
this._pivot.setTo(targetPos.x, targetPos.y);
this._pivot.setStroke(2, 'solid', strokeColor);
@@ -54,7 +56,6 @@ mindplot.RelationshipPivot = new Class({
this._startArrow.setStrokeWidth(2);
this._startArrow.setFrom(sourcePos.x, sourcePos.y);
this._workspace.appendChild(this._pivot);
this._workspace.appendChild(this._startArrow);
@@ -99,8 +100,13 @@ mindplot.RelationshipPivot = new Class({
var pos = screen.getWorkspaceMousePosition(event);
// Leave the arrow a couple of pixels away from the cursor.
var gapDistance = Math.sign(pos.x - this._sourceTopic.getPosition().x) * 5;
var sourcePosition = this._sourceTopic.getPosition();
var gapDistance = Math.sign(pos.x - sourcePosition.x) * 5;
var sPos = this._calculateFromPosition(pos);
this._pivot.setFrom(sPos.x, sPos.y);
// Update target position ...
this._pivot.setTo(pos.x - gapDistance, pos.y);
var controlPoints = this._pivot.getControlPoints();
@@ -118,6 +124,21 @@ mindplot.RelationshipPivot = new Class({
event.stopPropagation();
},
_calculateFromPosition:function (toPosition) {
// Calculate origin position ...
var sourcePosition = this._sourceTopic.getPosition();
if (this._sourceTopic.getType() == mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
sourcePosition = mindplot.util.Shape.workoutIncomingConnectionPoint(this._sourceTopic, toPosition);
}
var controlPoint = mindplot.util.Shape.calculateDefaultControlPoints(sourcePosition, toPosition);
var spoint = new core.Point();
spoint.x = parseInt(controlPoint[0].x) + parseInt(sourcePosition.x);
spoint.y = parseInt(controlPoint[0].y) + parseInt(sourcePosition.y);
return mindplot.util.Shape.calculateRelationShipPointCoordinates(this._sourceTopic, spoint);
},
_connectOnFocus:function (targetTopic) {
var sourceTopic = this._sourceTopic;
var mindmap = this._designer.getMindmap();

View File

@@ -20,13 +20,13 @@ mindplot.RESTPersistenceManager = new Class({
Extends:mindplot.PersistenceManager,
initialize:function (options) {
this.parent();
$assert(options.saveUrl, "saveUrl can not be null");
$assert(options.documentUrl, "documentUrl can not be null");
$assert(options.revertUrl, "revertUrl can not be null");
$assert(options.lockUrl, "lockUrl can not be null");
$assert(options.session, "session can not be null");
$assert(options.timestamp, "timestamp can not be null");
this.saveUrl = options.saveUrl;
this.documentUrl = options.documentUrl;
this.revertUrl = options.revertUrl;
this.lockUrl = options.lockUrl;
this.timestamp = options.timestamp;
@@ -43,8 +43,8 @@ mindplot.RESTPersistenceManager = new Class({
var persistence = this;
var query = "minor=" + !saveHistory;
query = query + (this.timestamp ? "&timestamp=" + this.timestamp : "");
query = query + (this.session ? "&session=" + this.session : "");
query = query + "&timestamp=" + this.timestamp;
query = query + "&session=" + this.session;
if (!persistence.onSave) {
@@ -56,7 +56,7 @@ mindplot.RESTPersistenceManager = new Class({
}, 10000);
var request = new Request({
url:this.saveUrl.replace("{id}", mapId) + "?" + query,
url:this.documentUrl.replace("{id}", mapId) + "?" + query,
method:'put',
async:!sync,
@@ -99,13 +99,10 @@ mindplot.RESTPersistenceManager = new Class({
}
}
events.onError(userMsg);
// @Todo: Only for debug. Remove.
persistence.onSave = false;
throw new Error("responseText:" + responseText + ",status:" + this.status);
},
headers:{"Content-Type":"application/json", "Accept":"application/json"},
headers:{"Content-Type":"application/json; charset=utf-8", "Accept":"application/json"},
emulation:false,
urlEncoded:false
});
@@ -124,7 +121,7 @@ mindplot.RESTPersistenceManager = new Class({
},
onFailure:function () {
},
headers:{"Content-Type":"application/json", "Accept":"application/json"},
headers:{"Content-Type":"application/json; charset=utf-8", "Accept":"application/json"},
emulation:false,
urlEncoded:false
});
@@ -163,6 +160,29 @@ mindplot.RESTPersistenceManager = new Class({
severity = "INFO";
}
return {severity:severity, message:message};
},
loadMapDom:function (mapId) {
// Let's try to open one from the local directory ...
var xml;
var xmlRequest = new Request({
url:this.documentUrl.replace("{id}", mapId) + "/xml",
method:'get',
async:false,
headers:{"Content-Type":"text/plain","Accept":"application/xml"},
onSuccess:function (responseText) {
xml = responseText;
}
});
xmlRequest.send();
// If I could not load it from a file, hard code one.
if (xml == null) {
throw new Error("Map could not be loaded");
}
var parser = new DOMParser();
return parser.parseFromString(xml, "text/xml");
}
}
);

View File

@@ -270,6 +270,11 @@ mindplot.CommandContext = new Class({
return mindmap.createNode(mindplot.NodeModel.MAIN_TOPIC_TYPE);
},
addTopic:function (topic) {
var mindmap = this._designer.getMindmap();
return mindmap.addBranch(topic.getModel());
},
connect:function (childTopic, parentTopic) {
childTopic.connectTo(parentTopic, this._designer._workspace);
},

View File

@@ -598,7 +598,7 @@ mindplot.Topic = new Class({
areChildrenShrunken:function () {
var model = this.getModel();
return model.areChildrenShrunken();
return model.areChildrenShrunken() && !this.isCentralTopic();
},
isCollapsed:function () {
@@ -888,7 +888,12 @@ mindplot.Topic = new Class({
_setRelationshipLinesVisibility:function (value) {
this._relationships.each(function (relationship) {
relationship.setVisibility(value);
var sourceTopic = relationship.getSourceTopic();
var targetTopic = relationship.getTargetTopic();
var targetParent = targetTopic.getModel().getParent();
var sourceParent = sourceTopic.getModel().getParent();
relationship.setVisibility(value && (targetParent == null || !targetParent.areChildrenShrunken()) && (sourceParent == null || !sourceParent.areChildrenShrunken()));
});
},
@@ -1203,7 +1208,7 @@ mindplot.Topic = new Class({
var relationships = child.getRelationships();
result = result.concat(relationships);
if(!child.areChildrenShrunken()){
if (!child.areChildrenShrunken()) {
var innerChilds = this._flatten2DElements(child);
result = result.concat(innerChilds);
}

View File

@@ -1,45 +0,0 @@
/*
* Copyright [2012] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.collaboration.CollaborationManager = new Class({
initialize:function() {
this.collaborativeModelReady = false;
this.collaborativeModelReady = null;
},
setCollaborativeFramework : function(framework) {
this._collaborativeFramework = framework;
},
buildMindmap: function() {
return this._collaborativeFramework.buildMindmap();
},
getCollaborativeFramework:function() {
return this._collaborativeFramework;
}
});
mindplot.collaboration.CollaborationManager.getInstance = function() {
if (!$defined(mindplot.collaboration.CollaborationManager.__collaborationManager)) {
mindplot.collaboration.CollaborationManager.__collaborationManager = new mindplot.collaboration.CollaborationManager();
}
return mindplot.collaboration.CollaborationManager.__collaborationManager;
};
mindplot.collaboration.CollaborationManager.getInstance();

View File

@@ -1,54 +0,0 @@
mindplot.collaboration.framework.AbstractCollaborativeFramework = new Class({
initialize: function(model) {
$assert(model, "model can not be null");
this._model = model;
this._actionDispatcher = null;
},
getModel : function() {
return this._model;
},
buildMindmap : function() {
var cmind = this.getModel();
var mmind = new mindplot.model.Mindmap();
cmind.copyTo(mmind);
return mmind;
},
_findTopic : function(nodes, id) {
var result;
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
if (node.getId() == id) {
result = node;
} else {
var children = node.getChildren();
result = this._findTopic(children, id)
}
if (result != null) {
break;
}
}
return result;
},
getTopic:function(id) {
$assert($defined(id), "id can not be null");
var branches = this.getModel().getBranches();
var result = this._findTopic(branches, id);
$assert(result, "Could not find topic:" + id);
return result;
},
getActionDispatcher:function() {
if (this._actionDispatcher == null) {
var context = mindplot.ActionDispatcher.getInstance()._commandContext;
this._actionDispatcher = new mindplot.StandaloneActionDispatcher(context);
}
return this._actionDispatcher;
}
});

View File

@@ -1,26 +0,0 @@
/*
* Copyright [2012] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.collaboration.framework.AbstractCollaborativeModelFactory = new Class({
createNewMindmap:function() {
throw "Unsupported operation";
},
buildMindmap:function(model) {
throw "Unsupported operation";
}
});

View File

@@ -1,37 +0,0 @@
/*
* Copyright [2012] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.collaboration.framework.brix.BrixCollaborativeModelFactory = new Class({
Extends:mindplot.collaboration.framework.AbstractCollaborativeModelFactory,
initialize:function(brixFramework) {
$assert(brixFramework, 'brixFramework can not be null');
this._brixFramework = brixFramework;
},
createNewMindmap : function() {
var mindmap = new mindplot.collaboration.framework.brix.model.Mindmap(this._brixFramework);
var node = mindmap.createNode(mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE, 0);
mindmap.setVersion('pela-brix');
mindmap.addBranch(node);
return mindmap;
},
buildMindmap : function(model) {
return new mindplot.collaboration.framework.brix.model.Mindmap(this._brixFramework, model);
}
});

View File

@@ -1,88 +0,0 @@
/*
* Copyright [2012] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.collaboration.framework.brix.BrixFramework = new Class({
Extends: mindplot.collaboration.framework.AbstractCollaborativeFramework,
initialize: function(model, app) {
this._app = app;
var factory = new mindplot.collaboration.framework.brix.BrixCollaborativeModelFactory(this);
var root = this.getBrixModel().getRoot();
var cmodel = null;
var brixMap = root.get("mindmap");
if (brixMap != null) {
cmodel = factory.buildMindmap(brixMap);
} else {
cmodel = factory.createNewMindmap();
root.put("mindmap", cmodel.getBrixModel());
}
this.parent(cmodel);
console.log("cmodel:" + cmodel.inspect());
},
getBrixModel:function() {
return this._app.getModel();
}
});
instanciated = false;
mindplot.collaboration.framework.brix.BrixFramework.init = function(onload) {
$assert(onload, "load function can not be null");
if (!instanciated) {
var app = new goog.collab.CollaborativeApp();
mindplot.collaboration.framework.brix.BrixFramework.buildMenu(app);
app.start();
app.addListener('modelLoad', function(model) {
var framework = new mindplot.collaboration.framework.brix.BrixFramework(model, app);
mindplot.collaboration.CollaborationManager.getInstance().setCollaborativeFramework(framework);
onload();
}.bind(this));
instanciated = true;
}
};
mindplot.collaboration.framework.brix.BrixFramework.buildMenu = function(app) {
var menuBar = new goog.collab.ui.MenuBar();
// Configure toolbar menu ...
var fileMenu = menuBar.addSubMenu("File");
fileMenu.addItem("Save", function() {
});
fileMenu.addItem("Export", function() {
});
var editMenu = menuBar.addSubMenu("Edit");
editMenu.addItem("Undo", function() {
});
editMenu.addItem("Redo", function() {
});
var formatMenu = menuBar.addSubMenu("Format");
formatMenu.addItem("Bold", function() {
});
var helpMenu = menuBar.addSubMenu("Help");
helpMenu.addItem("Shortcuts", function() {
});
app.setMenuBar(menuBar);
};

View File

@@ -1,106 +0,0 @@
/*
* Copyright [2012] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.collaboration.framework.brix.model.Mindmap = new Class({
Extends:mindplot.model.IMindmap,
initialize:function(brixFramework, brixModel) {
$assert(brixFramework, 'brixFramework can not be null');
this._brixFramework = brixFramework;
if (!$defined(brixModel)) {
this._brixModel = this._createBrixModel();
} else {
this._brixModel = brixModel;
}
},
getVersion: function() {
return this._brixModel.get('version');
},
setVersion: function(value) {
this._brixModel.put('version', value);
},
getDescription: function() {
return this._brixModel.get('description');
},
setDescription: function(value) {
this._brixModel.put('description', value);
},
_createBrixModel:function() {
var model = this._brixFramework.getBrixModel().create("Map");
var branches = this._brixFramework.getBrixModel().create("List");
model.put("branches", branches);
return model;
},
getBrixModel:function() {
return this._brixModel;
},
getBranches : function() {
var result = [];
var branches = this._brixModel.get("branches");
for (var i = 0; i < branches.size(); i++) {
var node = branches.get(i);
if (node != null) {
var nodeModel = new mindplot.collaboration.framework.brix.model.NodeModel(this._brixFramework, node, this);
result.push(nodeModel);
}
}
return result;
},
addBranch : function(nodeModel) {
$assert(nodeModel, "nodeModel can not be null");
var branches = this._brixModel.get("branches");
// @Todo: Hack ?
var newModel = mindplot.collaboration.framework.brix.model.NodeModel.create(this._brixFramework, this, nodeModel.getType(), nodeModel.getId());
nodeModel.copyTo(newModel);
branches.add(newModel);
},
removeBranch : function(nodeModel) {
$assert(nodeModel, "nodeModel can not be null");
$assert(nodeModel.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE, "central topic can not be removed");
var branches = this._brixModel.get("branches");
for (var i = 0; i < branches.size(); i++) {
// @Todo: remove should remove null elements ...
var branch = branches.get(i);
if (branch != null) {
if (branch == nodeModel.getBrixModel()) {
branches.remove(i);
break;
}
}
}
},
createNode : function(type, id) {
return mindplot.collaboration.framework.brix.model.NodeModel.create(this._brixFramework, this, type, id);
}
}
);

View File

@@ -1,168 +0,0 @@
/*
* Copyright [2012] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.collaboration.framework.brix.model.NodeModel = new Class({
Extends: mindplot.model.INodeModel,
initialize : function(brixFramework, brixModel, mindmap) {
$assert(brixFramework, "brixFramework can not null");
$assert(brixModel, "brixModel can not null");
$assert(mindmap && mindmap.getBranches, "mindmap can not null");
this.parent(mindmap);
this._brixModel = brixModel;
this._brixFramework = brixFramework;
this._addBrixListeners();
},
_addBrixListeners : function() {
// Nodes creation should be cached ...
if (!this._brixModel.__registered) {
// Register listener for properties changes ....
var actionDispatcher = this._brixFramework.getActionDispatcher();
this._brixModel.addListener("valueChanged", function(event) {
var key = event.getProperty();
var value = event.getNewValue();
var funName = 'change' + key.capitalize() + 'ToTopic';
if (!$defined(actionDispatcher[funName])) {
throw "No implementation for:" + funName;
}
console.log("This action dispatcher:" + funName);
actionDispatcher[funName]([this.getId()], value);
}.bind(this));
var children = this._brixModel.get("children");
children.addListener("valuesAdded", function(event) {
try {
var brixChildren = event.getValues();
for (var i = 0; i < brixChildren.size(); i++) {
var brixNodeModel = brixChildren.get(0);
var cmodel = new mindplot.collaboration.framework.brix.model.NodeModel(this._brixFramework, brixNodeModel, this.getMindmap());
// @Todo: This is not ok. Is using designer global variable.
var model = new mindplot.model.NodeModel(cmodel.getType(), designer.getMindmap(), this.getId());
cmodel.copyTo(model);
actionDispatcher.addTopics([model], [this.getId()]);
}
} catch(e) {
console.trace();
}
}.bind(this));
children.addListener("valuesRemoved", function(event) {
try {
var brixChildren = event.getValues();
for (var i = 0; i < brixChildren.size(); i++) {
var brixNodeModel = brixChildren.get(i);
var cmodel = new mindplot.collaboration.framework.brix.model.NodeModel(this._brixFramework, brixNodeModel, this.getMindmap());
actionDispatcher.deleteEntities([cmodel.getId()]);
}
} catch(e) {
console.trace();
}
}.bind(this));
this._brixModel.__registered = true;
}
},
getChildren : function() {
var result = [];
var children = this._brixModel.get("children");
for (var i = 0; i < children.size(); i++) {
var node = children.get(i);
var nodeModel = new mindplot.collaboration.framework.brix.model.NodeModel(this._brixFramework, node, this.getMindmap());
nodeModel.setParent(this);
result.push(nodeModel);
}
return result;
},
getBrixModel:function() {
return this._brixModel;
},
putProperty : function(key, value) {
$defined(key, 'key can not be null');
this._brixModel.put(key, value);
},
getProperty : function(key) {
$defined(key, 'key can not be null');
return this._brixModel.get(key);
},
getPropertiesKeys : function() {
var keys = this._brixModel.getKeys();
keys.erase('children');
keys.erase('icons');
keys.erase('links');
keys.erase('notes');
return keys;
},
getParent : function() {
return this._brixModel._parent;
},
setParent : function(parent) {
this._brixModel._parent = parent;
},
appendChild : function(node) {
$assert(node && node.isNodeModel(), 'Only NodeModel can be appended to Mindmap object');
var children = this._brixModel.get("children");
children.add(node.getBrixModel());
this.setParent(this);
},
removeChild : function(child) {
$assert(child && child.isNodeModel(), 'Only NodeModel can be appended to Mindmap object.');
var children = this._brixModel.get("children");
for (var i = 0; i < children.size(); i++) {
if (children.get(i) == child.getBrixModel()) {
children.remove(i);
break;
}
}
this.setParent(null);
}
});
mindplot.collaboration.framework.brix.model.NodeModel.create = function(brixFramework, mindmap, type, id) {
$assert(brixFramework, 'brixFramework can not be null');
$assert(mindmap, 'mindmap can not be null');
$assert(type, 'type can not be null');
$assert($defined(id), 'id can not be null');
var brixModel = brixFramework.getBrixModel().create("Map");
brixModel.put("type", type);
brixModel.put("id", id);
var children = brixFramework.getBrixModel().create("List");
brixModel.put("children", children);
return new mindplot.collaboration.framework.brix.model.NodeModel(brixFramework, brixModel, mindmap);
};

View File

@@ -41,6 +41,8 @@ mindplot.commands.AddTopicCommand = new Class({
var parentTopic = commandContext.findTopics(parentId)[0];
commandContext.connect(topic, parentTopic);
}
}else {
commandContext.addTopic(topic);
}
// Select just created node ...
@@ -55,12 +57,20 @@ mindplot.commands.AddTopicCommand = new Class({
},
undoExecute:function (commandContext) {
// Finally, delete the topic from the workspace ...
// Delete disconnected the nodes. Create a copy of the topics ...
var clonedModel = [];
this._models.each(function (model) {
clonedModel.push(model.clone());
});
// Finally, remove the nodes ...
this._models.each(function (model) {
var topicId = model.getId();
var topic = commandContext.findTopics(topicId)[0];
commandContext.deleteTopic(topic);
}.bind(this));
this._models = clonedModel;
}
});

View File

@@ -149,6 +149,20 @@ mindplot.commands.DeleteCommand = new Class({
return this._collectInDepthRelationships(topic);
}, this);
result.append(rels.flatten());
if (result.length > 0) {
// Filter for unique ...
result = result.sort(function (a, b) {
return a.getModel().getId() - b.getModel().getId();
});
var ret = [result[0]];
for (var i = 1; i < result.length; i++) { // start loop at 1 as element 0 can never be a duplicate
if (result[i - 1] !== result[i]) {
ret.push(result[i]);
}
}
result = ret;
}
return result;
}

View File

@@ -1,971 +0,0 @@
//
// LESS - Leaner CSS v1.1.3
// http://lesscss.org
//
// Copyright (c) 2009-2011, Alexis Sellier
// Licensed under the Apache 2.0 License.
//
//
// LESS - Leaner CSS v1.1.3
// http://lesscss.org
//
// Copyright (c) 2009-2011, Alexis Sellier
// Licensed under the Apache 2.0 License.
//
(function(a, b) {
function v(a, b) {
var c = "less-error-message:" + p(b),e = ["<ul>",'<li><label>[-1]</label><pre class="ctx">{0}</pre></li>',"<li><label>[0]</label><pre>{current}</pre></li>",'<li><label>[1]</label><pre class="ctx">{2}</pre></li>',"</ul>"].join("\n"),f = document.createElement("div"),g,h;
f.id = c,f.className = "less-error-message",h = "<h3>" + (a.message || "There is an error in your .less file") + "</h3>" + '<p><a href="' + b + '">' + b + "</a> ",a.extract && (h += "on line " + a.line + ", column " + (a.column + 1) + ":</p>" + e.replace(/\[(-?\d)\]/g,
function(b, c) {
return parseInt(a.line) + parseInt(c) || ""
}).replace(/\{(\d)\}/g,
function(b, c) {
return a.extract[parseInt(c)] || ""
}).replace(/\{current\}/, a.extract[1].slice(0, a.column) + '<span class="error">' + a.extract[1].slice(a.column) + "</span>")),f.innerHTML = h,q([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #ee4444;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.ctx {","color: #dd4444;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"), {title:"error-message"}),f.style.cssText = ["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),d.env == "development" && (g = setInterval(function() {
document.body && (document.getElementById(c) ? document.body.replaceChild(f, document.getElementById(c)) : document.body.insertBefore(f, document.body.firstChild),clearInterval(g))
}, 10))
}
function u(a) {
d.env == "development" && typeof console != "undefined" && console.log("less: " + a)
}
function t(a) {
return a && a.parentNode.removeChild(a)
}
function s() {
if (a.XMLHttpRequest)return new XMLHttpRequest;
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0")
} catch(b) {
u("browser doesn't support AJAX.");
return null
}
}
function r(a, b, c, e) {
function i(b, c, d) {
b.status >= 200 && b.status < 300 ? c(b.responseText, b.getResponseHeader("Last-Modified")) : typeof d == "function" && d(b.status, a)
}
var f = s(),h = g ? !1 : d.async;
typeof f.overrideMimeType == "function" && f.overrideMimeType("text/css"),f.open("GET", a, h),f.setRequestHeader("Accept", b || "text/x-less, text/css; q=0.9, */*; q=0.5"),f.send(null),g ? f.status === 0 ? c(f.responseText) : e(f.status, a) : h ? f.onreadystatechange = function() {
f.readyState == 4 && i(f, c, e)
} : i(f, c, e)
}
function q(a, b, c) {
var d,e = b.href ? b.href.replace(/\?.*$/, "") : "",f = "less:" + (b.title || p(e));
(d = document.getElementById(f)) === null && (d = document.createElement("style"),d.type = "text/css",d.media = b.media || "screen",d.id = f,document.getElementsByTagName("head")[0].appendChild(d));
if (d.styleSheet)try {
d.styleSheet.cssText = a
} catch(g) {
throw new Error("Couldn't reassign styleSheet.cssText.")
} else(function(a) {
d.childNodes.length > 0 ? d.firstChild.nodeValue !== a.nodeValue && d.replaceChild(a, d.firstChild) : d.appendChild(a)
})(document.createTextNode(a));
c && h && (u("saving " + e + " to cache."),h.setItem(e, a),h.setItem(e + ":timestamp", c))
}
function p(a) {
return a.replace(/^[a-z]+:\/\/?[^\/]+/, "").replace(/^\//, "").replace(/\?.*$/, "").replace(/\.[^\.\/]+$/, "").replace(/[^\.\w-]+/g, "-").replace(/\./g, ":")
}
function o(b, c, e, f) {
var g = a.location.href.replace(/[#?].*$/, ""),i = b.href.replace(/\?.*$/, ""),j = h && h.getItem(i),k = h && h.getItem(i + ":timestamp"),l = {css:j,timestamp:k};
/^(https?|file):/.test(i) || (i.charAt(0) == "/" ? i = a.location.protocol + "//" + a.location.host + i : i = g.slice(0, g.lastIndexOf("/") + 1) + i),r(b.href, b.type, function(a, g) {
if (!e && l && g && (new Date(g)).valueOf() === (new Date(l.timestamp)).valueOf())q(l.css, b),c(null, b, {local:!0,remaining:f}); else try {
(new d.Parser({optimization:d.optimization,paths:[i.replace(/[\w\.-]+$/, "")],mime:b.type})).parse(a, function(a, d) {
if (a)return v(a, i);
try {
c(d, b, {local:!1,lastModified:g,remaining:f}),t(document.getElementById("less-error-message:" + p(i)))
} catch(a) {
v(a, i)
}
})
} catch(h) {
v(h, i)
}
}, function(a, b) {
throw new Error("Couldn't load " + b + " (" + a + ")")
})
}
function n(a, b) {
for (var c = 0; c < d.sheets.length; c++)o(d.sheets[c], a, b, d.sheets.length - (c + 1))
}
function m() {
var a = document.getElementsByTagName("style");
for (var b = 0; b < a.length; b++)a[b].type.match(k) && (new d.Parser).parse(a[b].innerHTML || "", function(c, d) {
a[b].type = "text/css",a[b].innerHTML = d.toCSS()
})
}
function c(b) {
return a.less[b.split("/")[1]]
}
Array.isArray || (Array.isArray = function(a) {
return Object.prototype.toString.call(a) === "[object Array]" || a instanceof Array
}),Array.prototype.forEach || (Array.prototype.forEach = function(a, b) {
var c = this.length >>> 0;
for (var d = 0; d < c; d++)d in this && a.call(b, this[d], d, this)
}),Array.prototype.map || (Array.prototype.map = function(a) {
var b = this.length >>> 0,c = Array(b),d = arguments[1];
for (var e = 0; e < b; e++)e in this && (c[e] = a.call(d, this[e], e, this));
return c
}),Array.prototype.filter || (Array.prototype.filter = function(a) {
var b = [],c = arguments[1];
for (var d = 0; d < this.length; d++)a.call(c, this[d]) && b.push(this[d]);
return b
}),Array.prototype.reduce || (Array.prototype.reduce = function(a) {
var b = this.length >>> 0,c = 0;
if (b === 0 && arguments.length === 1)throw new TypeError;
if (arguments.length >= 2)var d = arguments[1]; else for (; ;) {
if (c in this) {
d = this[c++];
break
}
if (++c >= b)throw new TypeError
}
for (; c < b; c++)c in this && (d = a.call(null, d, this[c], c, this));
return d
}),Array.prototype.indexOf || (Array.prototype.indexOf = function(a) {
var b = this.length,c = arguments[1] || 0;
if (!b)return-1;
if (c >= b)return-1;
c < 0 && (c += b);
for (; c < b; c++) {
if (!Object.prototype.hasOwnProperty.call(this, c))continue;
if (a === this[c])return c
}
return-1
}),Object.keys || (Object.keys = function(a) {
var b = [];
for (var c in a)Object.prototype.hasOwnProperty.call(a, c) && b.push(c);
return b
}),String.prototype.trim || (String.prototype.trim = function() {
return String(this).replace(/^\s\s*/, "").replace(/\s\s*$/, "")
});
var d,e;
typeof a == "undefined" ? (d = exports,e = c("less/tree")) : (typeof a.less == "undefined" && (a.less = {}),d = a.less,e = a.less.tree = {}),d.Parser = function(a) {
function t(a) {
return typeof a == "string" ? b.charAt(c) === a : a.test(j[f]) ? !0 : !1
}
function s(a) {
var d,e,g,h,i,m,n,o;
if (a instanceof Function)return a.call(l.parsers);
if (typeof a == "string")d = b.charAt(c) === a ? a : null,g = 1,r(); else {
r();
if (d = a.exec(j[f]))g = d[0].length; else return null
}
if (d) {
o = c += g,m = c + j[f].length - g;
while (c < m) {
h = b.charCodeAt(c);
if (h !== 32 && h !== 10 && h !== 9)break;
c++
}
j[f] = j[f].slice(g + (c - o)),k = c,j[f].length === 0 && f < j.length - 1 && f++;
return typeof d == "string" ? d : d.length === 1 ? d[0] : d
}
}
function r() {
c > k && (j[f] = j[f].slice(c - k),k = c)
}
function q() {
j[f] = g,c = h,k = c
}
function p() {
g = j[f],h = c,k = c
}
var b,c,f,g,h,i,j,k,l,m = this,n = function() {
},o = this.imports = {paths:a && a.paths || [],queue:[],files:{},mime:a && a.mime,push:function(b, c) {
var e = this;
this.queue.push(b),d.Parser.importer(b, this.paths, function(a) {
e.queue.splice(e.queue.indexOf(b), 1),e.files[b] = a,c(a),e.queue.length === 0 && n()
}, a)
}};
this.env = a = a || {},this.optimization = "optimization"in this.env ? this.env.optimization : 1,this.env.filename = this.env.filename || null;
return l = {imports:o,parse:function(d, g) {
var h,l,m,o,p,q,r = [],t,u = null;
c = f = k = i = 0,j = [],b = d.replace(/\r\n/g, "\n"),j = function(c) {
var d = 0,e = /[^"'`\{\}\/\(\)]+/g,f = /\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,g = 0,h,i = c[0],j,k;
for (var l = 0,m,n; l < b.length; l++) {
e.lastIndex = l,(h = e.exec(b)) && h.index === l && (l += h[0].length,i.push(h[0])),m = b.charAt(l),f.lastIndex = l,!k && !j && m === "/" && (n = b.charAt(l + 1),(n === "/" || n === "*") && (h = f.exec(b)) && h.index === l && (l += h[0].length,i.push(h[0]),m = b.charAt(l)));
if (m === "{" && !k && !j)g++,i.push(m); else if (m === "}" && !k && !j)g--,i.push(m),c[++d] = i = []; else if (m === "(" && !k && !j)i.push(m),j = !0; else if (m === ")" && !k && j)i.push(m),j = !1; else {
if (m === '"' || m === "'" || m === "`")k ? k = k === m ? !1 : k : k = m;
i.push(m)
}
}
if (g > 0)throw{type:"Syntax",message:"Missing closing `}`",filename:a.filename};
return c.map(function(a) {
return a.join("")
})
}([
[]
]),h = new e.Ruleset([], s(this.parsers.primary)),h.root = !0,h.toCSS = function(c) {
var d,f,g;
return function(g, h) {
function n(a) {
return a ? (b.slice(0, a).match(/\n/g) || "").length : null
}
var i = [];
g = g || {},typeof h == "object" && !Array.isArray(h) && (h = Object.keys(h).map(function(a) {
var b = h[a];
b instanceof e.Value || (b instanceof e.Expression || (b = new e.Expression([b])),b = new e.Value([b]));
return new e.Rule("@" + a, b, !1, 0)
}),i = [new e.Ruleset(null, h)]);
try {
var j = c.call(this, {frames:i}).toCSS([], {compress:g.compress || !1})
} catch(k) {
f = b.split("\n"),d = n(k.index);
for (var l = k.index,m = -1; l >= 0 && b.charAt(l) !== "\n"; l--)m++;
throw{type:k.type,message:k.message,filename:a.filename,index:k.index,line:typeof d == "number" ? d + 1 : null,callLine:k.call && n(k.call) + 1,callExtract:f[n(k.call)],stack:k.stack,column:m,extract:[f[d - 1],f[d],f[d + 1]]}
}
return g.compress ? j.replace(/(\s)+/g, "$1") : j
}
}(h.eval);
if (c < b.length - 1) {
c = i,q = b.split("\n"),p = (b.slice(0, c).match(/\n/g) || "").length + 1;
for (var v = c,w = -1; v >= 0 && b.charAt(v) !== "\n"; v--)w++;
u = {name:"ParseError",message:"Syntax Error on line " + p,index:c,filename:a.filename,line:p,column:w,extract:[q[p - 2],q[p - 1],q[p]]}
}
this.imports.queue.length > 0 ? n = function() {
g(u, h)
} : g(u, h)
},parsers:{primary:function() {
var a,b = [];
while ((a = s(this.mixin.definition) || s(this.rule) || s(this.ruleset) || s(this.mixin.call) || s(this.comment) || s(this.directive)) || s(/^[\s\n]+/))a && b.push(a);
return b
},comment:function() {
var a;
if (b.charAt(c) === "/") {
if (b.charAt(c + 1) === "/")return new e.Comment(s(/^\/\/.*/), !0);
if (a = s(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new e.Comment(a)
}
},entities:{quoted:function() {
var a,d = c,f;
b.charAt(d) === "~" && (d++,f = !0);
if (b.charAt(d) === '"' || b.charAt(d) === "'") {
f && s("~");
if (a = s(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new e.Quoted(a[0], a[1] || a[2], f)
}
},keyword:function() {
var a;
if (a = s(/^[A-Za-z-]+/))return new e.Keyword(a)
},call:function() {
var a,b,d = c;
if (!!(a = /^([\w-]+|%)\(/.exec(j[f]))) {
a = a[1].toLowerCase();
if (a === "url")return null;
c += a.length;
if (a === "alpha")return s(this.alpha);
s("("),b = s(this.entities.arguments);
if (!s(")"))return;
if (a)return new e.Call(a, b, d)
}
},arguments:function() {
var a = [],b;
while (b = s(this.expression)) {
a.push(b);
if (!s(","))break
}
return a
},literal:function() {
return s(this.entities.dimension) || s(this.entities.color) || s(this.entities.quoted)
},url:function() {
var a;
if (b.charAt(c) === "u" && !!s(/^url\(/)) {
a = s(this.entities.quoted) || s(this.entities.variable) || s(this.entities.dataURI) || s(/^[-\w%@$\/.&=:;#+?~]+/) || "";
if (!s(")"))throw new Error("missing closing ) for url()");
return new e.URL(a.value || a.data || a instanceof e.Variable ? a : new e.Anonymous(a), o.paths)
}
},dataURI:function() {
var a;
if (s(/^data:/)) {
a = {},a.mime = s(/^[^\/]+\/[^,;)]+/) || "",a.charset = s(/^;\s*charset=[^,;)]+/) || "",a.base64 = s(/^;\s*base64/) || "",a.data = s(/^,\s*[^)]+/);
if (a.data)return a
}
},variable:function() {
var a,d = c;
if (b.charAt(c) === "@" && (a = s(/^@@?[\w-]+/)))return new e.Variable(a, d)
},color:function() {
var a;
if (b.charAt(c) === "#" && (a = s(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/)))return new e.Color(a[1])
},dimension:function() {
var a,d = b.charCodeAt(c);
if (!(d > 57 || d < 45 || d === 47))if (a = s(/^(-?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/))return new e.Dimension(a[1], a[2])
},javascript:function() {
var a,d = c,f;
b.charAt(d) === "~" && (d++,f = !0);
if (b.charAt(d) === "`") {
f && s("~");
if (a = s(/^`([^`]*)`/))return new e.JavaScript(a[1], c, f)
}
}},variable:function() {
var a;
if (b.charAt(c) === "@" && (a = s(/^(@[\w-]+)\s*:/)))return a[1]
},shorthand:function() {
var a,b;
if (!!t(/^[@\w.%-]+\/[@\w.-]+/) && (a = s(this.entity)) && s("/") && (b = s(this.entity)))return new e.Shorthand(a, b)
},mixin:{call:function() {
var a = [],d,f,g,h = c,i = b.charAt(c);
if (i === "." || i === "#") {
while (d = s(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/))a.push(new e.Element(f, d)),f = s(">");
s("(") && (g = s(this.entities.arguments)) && s(")");
if (a.length > 0 && (s(";") || t("}")))return new e.mixin.Call(a, g, h)
}
},definition:function() {
var a,d = [],f,g,h,i;
if (!(b.charAt(c) !== "." && b.charAt(c) !== "#" || t(/^[^{]*(;|})/)))if (f = s(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)) {
a = f[1];
while (h = s(this.entities.variable) || s(this.entities.literal) || s(this.entities.keyword)) {
if (h instanceof e.Variable)if (s(":"))if (i = s(this.expression))d.push({name:h.name,value:i}); else throw new Error("Expected value"); else d.push({name:h.name}); else d.push({value:h});
if (!s(","))break
}
if (!s(")"))throw new Error("Expected )");
g = s(this.block);
if (g)return new e.mixin.Definition(a, d, g)
}
}},entity:function() {
return s(this.entities.literal) || s(this.entities.variable) || s(this.entities.url) || s(this.entities.call) || s(this.entities.keyword) || s(this.entities.javascript) || s(this.comment)
},end:function() {
return s(";") || t("}")
},alpha:function() {
var a;
if (!!s(/^\(opacity=/i))if (a = s(/^\d+/) || s(this.entities.variable)) {
if (!s(")"))throw new Error("missing closing ) for alpha()");
return new e.Alpha(a)
}
},element:function() {
var a,b,c;
c = s(this.combinator),a = s(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/) || s("*") || s(this.attribute) || s(/^\([^)@]+\)/);
if (a)return new e.Element(c, a)
},combinator:function() {
var a,d = b.charAt(c);
if (d === ">" || d === "&" || d === "+" || d === "~") {
c++;
while (b.charAt(c) === " ")c++;
return new e.Combinator(d)
}
if (d === ":" && b.charAt(c + 1) === ":") {
c += 2;
while (b.charAt(c) === " ")c++;
return new e.Combinator("::")
}
return b.charAt(c - 1) === " " ? new e.Combinator(" ") : new e.Combinator(null)
},selector:function() {
var a,d,f = [],g,h;
while (d = s(this.element)) {
g = b.charAt(c),f.push(d);
if (g === "{" || g === "}" || g === ";" || g === ",")break
}
if (f.length > 0)return new e.Selector(f)
},tag:function() {
return s(/^[a-zA-Z][a-zA-Z-]*[0-9]?/) || s("*")
},attribute:function() {
var a = "",b,c,d;
if (!!s("[")) {
if (b = s(/^[a-zA-Z-]+/) || s(this.entities.quoted))(d = s(/^[|~*$^]?=/)) && (c = s(this.entities.quoted) || s(/^[\w-]+/)) ? a = [b,d,c.toCSS ? c.toCSS() : c].join("") : a = b;
if (!s("]"))return;
if (a)return"[" + a + "]"
}
},block:function() {
var a;
if (s("{") && (a = s(this.primary)) && s("}"))return a
},ruleset:function() {
var a = [],b,d,g;
p();
if (g = /^([.#: \w-]+)[\s\n]*\{/.exec(j[f]))c += g[0].length - 1,a = [new e.Selector([new e.Element(null, g[1])])]; else while (b = s(this.selector)) {
a.push(b),s(this.comment);
if (!s(","))break;
s(this.comment)
}
if (a.length > 0 && (d = s(this.block)))return new e.Ruleset(a, d);
i = c,q()
},rule:function() {
var a,d,g = b.charAt(c),k,l;
p();
if (g !== "." && g !== "#" && g !== "&")if (a = s(this.variable) || s(this.property)) {
a.charAt(0) != "@" && (l = /^([^@+\/'"*`(;{}-]*);/.exec(j[f])) ? (c += l[0].length - 1,d = new e.Anonymous(l[1])) : a === "font" ? d = s(this.font) : d = s(this.value),k = s(this.important);
if (d && s(this.end))return new e.Rule(a, d, k, h);
i = c,q()
}
},"import":function() {
var a;
if (s(/^@import\s+/) && (a = s(this.entities.quoted) || s(this.entities.url)) && s(";"))return new e.Import(a, o)
},directive:function() {
var a,d,f,g;
if (b.charAt(c) === "@") {
if (d = s(this["import"]))return d;
if (a = s(/^@media|@page|@-[-a-z]+/)) {
g = (s(/^[^{]+/) || "").trim();
if (f = s(this.block))return new e.Directive(a + " " + g, f)
} else if (a = s(/^@[-a-z]+/))if (a === "@font-face") {
if (f = s(this.block))return new e.Directive(a, f)
} else if ((d = s(this.entity)) && s(";"))return new e.Directive(a, d)
}
},font:function() {
var a = [],b = [],c,d,f,g;
while (g = s(this.shorthand) || s(this.entity))b.push(g);
a.push(new e.Expression(b));
if (s(","))while (g = s(this.expression)) {
a.push(g);
if (!s(","))break
}
return new e.Value(a)
},value:function() {
var a,b = [],c;
while (a = s(this.expression)) {
b.push(a);
if (!s(","))break
}
if (b.length > 0)return new e.Value(b)
},important:function() {
if (b.charAt(c) === "!")return s(/^! *important/)
},sub:function() {
var a;
if (s("(") && (a = s(this.expression)) && s(")"))return a
},multiplication:function() {
var a,b,c,d;
if (a = s(this.operand)) {
while ((c = s("/") || s("*")) && (b = s(this.operand)))d = new e.Operation(c, [d || a,b]);
return d || a
}
},addition:function() {
var a,d,f,g;
if (a = s(this.multiplication)) {
while ((f = s(/^[-+]\s+/) || b.charAt(c - 1) != " " && (s("+") || s("-"))) && (d = s(this.multiplication)))g = new e.Operation(f, [g || a,d]);
return g || a
}
},operand:function() {
var a,d = b.charAt(c + 1);
b.charAt(c) === "-" && (d === "@" || d === "(") && (a = s("-"));
var f = s(this.sub) || s(this.entities.dimension) || s(this.entities.color) || s(this.entities.variable) || s(this.entities.call);
return a ? new e.Operation("*", [new e.Dimension(-1),f]) : f
},expression:function() {
var a,b,c = [],d;
while (a = s(this.addition) || s(this.entity))c.push(a);
if (c.length > 0)return new e.Expression(c)
},property:function() {
var a;
if (a = s(/^(\*?-?[-a-z_0-9]+)\s*:/))return a[1]
}}}
},typeof a != "undefined" && (d.Parser.importer = function(a, b, c, d) {
a.charAt(0) !== "/" && b.length > 0 && (a = b[0] + a),o({href:a,title:a,type:d.mime}, c, !0)
}),function(a) {
function d(a) {
return Math.min(1, Math.max(0, a))
}
function c(b) {
if (b instanceof a.Dimension)return parseFloat(b.unit == "%" ? b.value / 100 : b.value);
if (typeof b == "number")return b;
throw{error:"RuntimeError",message:"color functions take numbers as parameters"}
}
function b(b) {
return a.functions.hsla(b.h, b.s, b.l, b.a)
}
a.functions = {rgb:function(a, b, c) {
return this.rgba(a, b, c, 1)
},rgba:function(b, d, e, f) {
var g = [b,d,e].map(function(a) {
return c(a)
}),f = c(f);
return new a.Color(g, f)
},hsl:function(a, b, c) {
return this.hsla(a, b, c, 1)
},hsla:function(a, b, d, e) {
function h(a) {
a = a < 0 ? a + 1 : a > 1 ? a - 1 : a;
return a * 6 < 1 ? g + (f - g) * a * 6 : a * 2 < 1 ? f : a * 3 < 2 ? g + (f - g) * (2 / 3 - a) * 6 : g
}
a = c(a) % 360 / 360,b = c(b),d = c(d),e = c(e);
var f = d <= .5 ? d * (b + 1) : d + b - d * b,g = d * 2 - f;
return this.rgba(h(a + 1 / 3) * 255, h(a) * 255, h(a - 1 / 3) * 255, e)
},hue:function(b) {
return new a.Dimension(Math.round(b.toHSL().h))
},saturation:function(b) {
return new a.Dimension(Math.round(b.toHSL().s * 100), "%")
},lightness:function(b) {
return new a.Dimension(Math.round(b.toHSL().l * 100), "%")
},alpha:function(b) {
return new a.Dimension(b.toHSL().a)
},saturate:function(a, c) {
var e = a.toHSL();
e.s += c.value / 100,e.s = d(e.s);
return b(e)
},desaturate:function(a, c) {
var e = a.toHSL();
e.s -= c.value / 100,e.s = d(e.s);
return b(e)
},lighten:function(a, c) {
var e = a.toHSL();
e.l += c.value / 100,e.l = d(e.l);
return b(e)
},darken:function(a, c) {
var e = a.toHSL();
e.l -= c.value / 100,e.l = d(e.l);
return b(e)
},fadein:function(a, c) {
var e = a.toHSL();
e.a += c.value / 100,e.a = d(e.a);
return b(e)
},fadeout:function(a, c) {
var e = a.toHSL();
e.a -= c.value / 100,e.a = d(e.a);
return b(e)
},spin:function(a, c) {
var d = a.toHSL(),e = (d.h + c.value) % 360;
d.h = e < 0 ? 360 + e : e;
return b(d)
},mix:function(b, c, d) {
var e = d.value / 100,f = e * 2 - 1,g = b.toHSL().a - c.toHSL().a,h = ((f * g == -1 ? f : (f + g) / (1 + f * g)) + 1) / 2,i = 1 - h,j = [b.rgb[0] * h + c.rgb[0] * i,b.rgb[1] * h + c.rgb[1] * i,b.rgb[2] * h + c.rgb[2] * i],k = b.alpha * e + c.alpha * (1 - e);
return new a.Color(j, k)
},greyscale:function(b) {
return this.desaturate(b, new a.Dimension(100))
},e:function(b) {
return new a.Anonymous(b instanceof a.JavaScript ? b.evaluated : b)
},escape:function(b) {
return new a.Anonymous(encodeURI(b.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29"))
},"%":function(b) {
var c = Array.prototype.slice.call(arguments, 1),d = b.value;
for (var e = 0; e < c.length; e++)d = d.replace(/%[sda]/i, function(a) {
var b = a.match(/s/i) ? c[e].value : c[e].toCSS();
return a.match(/[A-Z]$/) ? encodeURIComponent(b) : b
});
d = d.replace(/%%/g, "%");
return new a.Quoted('"' + d + '"', d)
},round:function(b) {
if (b instanceof a.Dimension)return new a.Dimension(Math.round(c(b)), b.unit);
if (typeof b == "number")return Math.round(b);
throw{error:"RuntimeError",message:"math functions take numbers as parameters"}
}}
}(c("less/tree")),function(a) {
a.Alpha = function(a) {
this.value = a
},a.Alpha.prototype = {toCSS:function() {
return"alpha(opacity=" + (this.value.toCSS ? this.value.toCSS() : this.value) + ")"
},eval:function(a) {
this.value.eval && (this.value = this.value.eval(a));
return this
}}
}(c("less/tree")),function(a) {
a.Anonymous = function(a) {
this.value = a.value || a
},a.Anonymous.prototype = {toCSS:function() {
return this.value
},eval:function() {
return this
}}
}(c("less/tree")),function(a) {
a.Call = function(a, b, c) {
this.name = a,this.args = b,this.index = c
},a.Call.prototype = {eval:function(b) {
var c = this.args.map(function(a) {
return a.eval(b)
});
if (!(this.name in a.functions))return new a.Anonymous(this.name + "(" + c.map(
function(a) {
return a.toCSS()
}).join(", ") + ")");
try {
return a.functions[this.name].apply(a.functions, c)
} catch(d) {
throw{message:"error evaluating function `" + this.name + "`",index:this.index}
}
},toCSS:function(a) {
return this.eval(a).toCSS()
}}
}(c("less/tree")),function(a) {
a.Color = function(a, b) {
Array.isArray(a) ? this.rgb = a : a.length == 6 ? this.rgb = a.match(/.{2}/g).map(function(a) {
return parseInt(a, 16)
}) : a.length == 8 ? (this.alpha = parseInt(a.substring(0, 2), 16) / 255,this.rgb = a.substr(2).match(/.{2}/g).map(function(a) {
return parseInt(a, 16)
})) : this.rgb = a.split("").map(function(a) {
return parseInt(a + a, 16)
}),this.alpha = typeof b == "number" ? b : 1
},a.Color.prototype = {eval:function() {
return this
},toCSS:function() {
return this.alpha < 1 ? "rgba(" + this.rgb.map(
function(a) {
return Math.round(a)
}).concat(this.alpha).join(", ") + ")" : "#" + this.rgb.map(
function(a) {
a = Math.round(a),a = (a > 255 ? 255 : a < 0 ? 0 : a).toString(16);
return a.length === 1 ? "0" + a : a
}).join("")
},operate:function(b, c) {
var d = [];
c instanceof a.Color || (c = c.toColor());
for (var e = 0; e < 3; e++)d[e] = a.operate(b, this.rgb[e], c.rgb[e]);
return new a.Color(d, this.alpha + c.alpha)
},toHSL:function() {
var a = this.rgb[0] / 255,b = this.rgb[1] / 255,c = this.rgb[2] / 255,d = this.alpha,e = Math.max(a, b, c),f = Math.min(a, b, c),g,h,i = (e + f) / 2,j = e - f;
if (e === f)g = h = 0; else {
h = i > .5 ? j / (2 - e - f) : j / (e + f);
switch (e) {
case a:
g = (b - c) / j + (b < c ? 6 : 0);
break;
case b:
g = (c - a) / j + 2;
break;
case c:
g = (a - b) / j + 4
}
g /= 6
}
return{h:g * 360,s:h,l:i,a:d}
}}
}(c("less/tree")),function(a) {
a.Comment = function(a, b) {
this.value = a,this.silent = !!b
},a.Comment.prototype = {toCSS:function(a) {
return a.compress ? "" : this.value
},eval:function() {
return this
}}
}(c("less/tree")),function(a) {
a.Dimension = function(a, b) {
this.value = parseFloat(a),this.unit = b || null
},a.Dimension.prototype = {eval:function() {
return this
},toColor:function() {
return new a.Color([this.value,this.value,this.value])
},toCSS:function() {
var a = this.value + this.unit;
return a
},operate:function(b, c) {
return new a.Dimension(a.operate(b, this.value, c.value), this.unit || c.unit)
}}
}(c("less/tree")),function(a) {
a.Directive = function(b, c) {
this.name = b,Array.isArray(c) ? this.ruleset = new a.Ruleset([], c) : this.value = c
},a.Directive.prototype = {toCSS:function(a, b) {
if (this.ruleset) {
this.ruleset.root = !0;
return this.name + (b.compress ? "{" : " {\n ") + this.ruleset.toCSS(a, b).trim().replace(/\n/g, "\n ") + (b.compress ? "}" : "\n}\n")
}
return this.name + " " + this.value.toCSS() + ";\n"
},eval:function(a) {
a.frames.unshift(this),this.ruleset = this.ruleset && this.ruleset.eval(a),a.frames.shift();
return this
},variable:function(b) {
return a.Ruleset.prototype.variable.call(this.ruleset, b)
},find:function() {
return a.Ruleset.prototype.find.apply(this.ruleset, arguments)
},rulesets:function() {
return a.Ruleset.prototype.rulesets.apply(this.ruleset)
}}
}(c("less/tree")),function(a) {
a.Element = function(b, c) {
this.combinator = b instanceof a.Combinator ? b : new a.Combinator(b),this.value = c.trim()
},a.Element.prototype.toCSS = function(a) {
return this.combinator.toCSS(a || {}) + this.value
},a.Combinator = function(a) {
a === " " ? this.value = " " : this.value = a ? a.trim() : ""
},a.Combinator.prototype.toCSS = function(a) {
return{"":""," ":" ","&":"",":":" :","::":"::","+":a.compress ? "+" : " + ","~":a.compress ? "~" : " ~ ",">":a.compress ? ">" : " > "}[this.value]
}
}(c("less/tree")),function(a) {
a.Expression = function(a) {
this.value = a
},a.Expression.prototype = {eval:function(b) {
return this.value.length > 1 ? new a.Expression(this.value.map(function(a) {
return a.eval(b)
})) : this.value.length === 1 ? this.value[0].eval(b) : this
},toCSS:function(a) {
return this.value.map(
function(b) {
return b.toCSS(a)
}).join(" ")
}}
}(c("less/tree")),function(a) {
a.Import = function(b, c) {
var d = this;
this._path = b,b instanceof a.Quoted ? this.path = /\.(le?|c)ss$/.test(b.value) ? b.value : b.value + ".less" : this.path = b.value.value || b.value,this.css = /css$/.test(this.path),this.css || c.push(this.path, function(a) {
if (!a)throw new Error("Error parsing " + d.path);
d.root = a
})
},a.Import.prototype = {toCSS:function() {
return this.css ? "@import " + this._path.toCSS() + ";\n" : ""
},eval:function(b) {
var c;
if (this.css)return this;
c = new a.Ruleset(null, this.root.rules.slice(0));
for (var d = 0; d < c.rules.length; d++)c.rules[d]instanceof a.Import && Array.prototype.splice.apply(c.rules, [d,1].concat(c.rules[d].eval(b)));
return c.rules
}}
}(c("less/tree")),function(a) {
a.JavaScript = function(a, b, c) {
this.escaped = c,this.expression = a,this.index = b
},a.JavaScript.prototype = {eval:function(b) {
var c,d = this,e = {},f = this.expression.replace(/@\{([\w-]+)\}/g, function(c, e) {
return a.jsify((new a.Variable("@" + e, d.index)).eval(b))
});
try {
f = new Function("return (" + f + ")")
} catch(g) {
throw{message:"JavaScript evaluation error: `" + f + "`",index:this.index}
}
for (var h in b.frames[0].variables())e[h.slice(1)] = {value:b.frames[0].variables()[h].value,toJS:function() {
return this.value.eval(b).toCSS()
}};
try {
c = f.call(e)
} catch(g) {
throw{message:"JavaScript evaluation error: '" + g.name + ": " + g.message + "'",index:this.index}
}
return typeof c == "string" ? new a.Quoted('"' + c + '"', c, this.escaped, this.index) : Array.isArray(c) ? new a.Anonymous(c.join(", ")) : new a.Anonymous(c)
}}
}(c("less/tree")),function(a) {
a.Keyword = function(a) {
this.value = a
},a.Keyword.prototype = {eval:function() {
return this
},toCSS:function() {
return this.value
}}
}(c("less/tree")),function(a) {
a.mixin = {},a.mixin.Call = function(b, c, d) {
this.selector = new a.Selector(b),this.arguments = c,this.index = d
},a.mixin.Call.prototype = {eval:function(a) {
var b,c,d = [],e = !1;
for (var f = 0; f < a.frames.length; f++)if ((b = a.frames[f].find(this.selector)).length > 0) {
c = this.arguments && this.arguments.map(function(b) {
return b.eval(a)
});
for (var g = 0; g < b.length; g++)if (b[g].match(c, a))try {
Array.prototype.push.apply(d, b[g].eval(a, this.arguments).rules),e = !0
} catch(h) {
throw{message:h.message,index:h.index,stack:h.stack,call:this.index}
}
if (e)return d;
throw{message:"No matching definition was found for `" + this.selector.toCSS().trim() + "(" + this.arguments.map(
function(a) {
return a.toCSS()
}).join(", ") + ")`",index:this.index}
}
throw{message:this.selector.toCSS().trim() + " is undefined",index:this.index}
}},a.mixin.Definition = function(b, c, d) {
this.name = b,this.selectors = [new a.Selector([new a.Element(null, b)])],this.params = c,this.arity = c.length,this.rules = d,this._lookups = {},this.required = c.reduce(function(a, b) {
return!b.name || b.name && !b.value ? a + 1 : a
}, 0),this.parent = a.Ruleset.prototype,this.frames = []
},a.mixin.Definition.prototype = {toCSS:function() {
return""
},variable:function(a) {
return this.parent.variable.call(this, a)
},variables:function() {
return this.parent.variables.call(this)
},find:function() {
return this.parent.find.apply(this, arguments)
},rulesets:function() {
return this.parent.rulesets.apply(this)
},eval:function(b, c) {
var d = new a.Ruleset(null, []),e,f = [];
for (var g = 0,h; g < this.params.length; g++)if (this.params[g].name)if (h = c && c[g] || this.params[g].value)d.rules.unshift(new a.Rule(this.params[g].name, h.eval(b))); else throw{message:"wrong number of arguments for " + this.name + " (" + c.length + " for " + this.arity + ")"};
for (var g = 0; g < Math.max(this.params.length, c && c.length); g++)f.push(c[g] || this.params[g].value);
d.rules.unshift(new a.Rule("@arguments", (new a.Expression(f)).eval(b)));
return(new a.Ruleset(null, this.rules.slice(0))).eval({frames:[this,d].concat(this.frames, b.frames)})
},match:function(a, b) {
var c = a && a.length || 0,d;
if (c < this.required)return!1;
if (this.required > 0 && c > this.params.length)return!1;
d = Math.min(c, this.arity);
for (var e = 0; e < d; e++)if (!this.params[e].name && a[e].eval(b).toCSS() != this.params[e].value.eval(b).toCSS())return!1;
return!0
}}
}(c("less/tree")),function(a) {
a.Operation = function(a, b) {
this.op = a.trim(),this.operands = b
},a.Operation.prototype.eval = function(b) {
var c = this.operands[0].eval(b),d = this.operands[1].eval(b),e;
if (c instanceof a.Dimension && d instanceof a.Color)if (this.op === "*" || this.op === "+")e = d,d = c,c = e; else throw{name:"OperationError",message:"Can't substract or divide a color from a number"};
return c.operate(this.op, d)
},a.operate = function(a, b, c) {
switch (a) {
case"+":
return b + c;
case"-":
return b - c;
case"*":
return b * c;
case"/":
return b / c
}
}
}(c("less/tree")),function(a) {
a.Quoted = function(a, b, c, d) {
this.escaped = c,this.value = b || "",this.quote = a.charAt(0),this.index = d
},a.Quoted.prototype = {toCSS:function() {
return this.escaped ? this.value : this.quote + this.value + this.quote
},eval:function(b) {
var c = this,d = this.value.replace(/`([^`]+)`/g,
function(d, e) {
return(new a.JavaScript(e, c.index, !0)).eval(b).value
}).replace(/@\{([\w-]+)\}/g, function(d, e) {
var f = (new a.Variable("@" + e, c.index)).eval(b);
return f.value || f.toCSS()
});
return new a.Quoted(this.quote + d + this.quote, d, this.escaped, this.index)
}}
}(c("less/tree")),function(a) {
a.Rule = function(b, c, d, e) {
this.name = b,this.value = c instanceof a.Value ? c : new a.Value([c]),this.important = d ? " " + d.trim() : "",this.index = e,b.charAt(0) === "@" ? this.variable = !0 : this.variable = !1
},a.Rule.prototype.toCSS = function(a) {
return this.variable ? "" : this.name + (a.compress ? ":" : ": ") + this.value.toCSS(a) + this.important + ";"
},a.Rule.prototype.eval = function(b) {
return new a.Rule(this.name, this.value.eval(b), this.important, this.index)
},a.Shorthand = function(a, b) {
this.a = a,this.b = b
},a.Shorthand.prototype = {toCSS:function(a) {
return this.a.toCSS(a) + "/" + this.b.toCSS(a)
},eval:function() {
return this
}}
}(c("less/tree")),function(a) {
a.Ruleset = function(a, b) {
this.selectors = a,this.rules = b,this._lookups = {}
},a.Ruleset.prototype = {eval:function(b) {
var c = new a.Ruleset(this.selectors, this.rules.slice(0));
c.root = this.root,b.frames.unshift(c);
if (c.root)for (var d = 0; d < c.rules.length; d++)c.rules[d]instanceof a.Import && Array.prototype.splice.apply(c.rules, [d,1].concat(c.rules[d].eval(b)));
for (var d = 0; d < c.rules.length; d++)c.rules[d]instanceof a.mixin.Definition && (c.rules[d].frames = b.frames.slice(0));
for (var d = 0; d < c.rules.length; d++)c.rules[d]instanceof a.mixin.Call && Array.prototype.splice.apply(c.rules, [d,1].concat(c.rules[d].eval(b)));
for (var d = 0,e; d < c.rules.length; d++)e = c.rules[d],e instanceof a.mixin.Definition || (c.rules[d] = e.eval ? e.eval(b) : e);
b.frames.shift();
return c
},match:function(a) {
return!a || a.length === 0
},variables:function() {
return this._variables ? this._variables : this._variables = this.rules.reduce(function(b, c) {
c instanceof a.Rule && c.variable === !0 && (b[c.name] = c);
return b
}, {})
},variable:function(a) {
return this.variables()[a]
},rulesets:function() {
return this._rulesets ? this._rulesets : this._rulesets = this.rules.filter(function(b) {
return b instanceof a.Ruleset || b instanceof a.mixin.Definition
})
},find:function(b, c) {
c = c || this;
var d = [],e,f,g = b.toCSS();
if (g in this._lookups)return this._lookups[g];
this.rulesets().forEach(function(e) {
if (e !== c)for (var g = 0; g < e.selectors.length; g++)if (f = b.match(e.selectors[g])) {
b.elements.length > 1 ? Array.prototype.push.apply(d, e.find(new a.Selector(b.elements.slice(1)), c)) : d.push(e);
break
}
});
return this._lookups[g] = d
},toCSS:function(b, c) {
var d = [],e = [],f = [],g = [],h,i;
if (!this.root)if (b.length === 0)g = this.selectors.map(function(a) {
return[a]
}); else for (var j = 0; j < this.selectors.length; j++)for (var k = 0; k < b.length; k++)g.push(b[k].concat([this.selectors[j]]));
for (var l = 0; l < this.rules.length; l++)i = this.rules[l],i.rules || i instanceof a.Directive ? f.push(i.toCSS(g, c)) : i instanceof a.Comment ? i.silent || (this.root ? f.push(i.toCSS(c)) : e.push(i.toCSS(c))) : i.toCSS && !i.variable ? e.push(i.toCSS(c)) : i.value && !i.variable && e.push(i.value.toString());
f = f.join(""),this.root ? d.push(e.join(c.compress ? "" : "\n")) : e.length > 0 && (h = g.map(
function(a) {
return a.map(
function(a) {
return a.toCSS(c)
}).join("").trim()
}).join(c.compress ? "," : g.length > 3 ? ",\n" : ", "),d.push(h, (c.compress ? "{" : " {\n ") + e.join(c.compress ? "" : "\n ") + (c.compress ? "}" : "\n}\n"))),d.push(f);
return d.join("") + (c.compress ? "\n" : "")
}}
}(c("less/tree")),function(a) {
a.Selector = function(a) {
this.elements = a,this.elements[0].combinator.value === "" && (this.elements[0].combinator.value = " ")
},a.Selector.prototype.match = function(a) {
return this.elements[0].value === a.elements[0].value ? !0 : !1
},a.Selector.prototype.toCSS = function(a) {
if (this._css)return this._css;
return this._css = this.elements.map(
function(b) {
return typeof b == "string" ? " " + b.trim() : b.toCSS(a)
}).join("")
}
}(c("less/tree")),function(b) {
b.URL = function(b, c) {
b.data ? this.attrs = b : (!/^(?:https?:\/|file:\/|data:\/)?\//.test(b.value) && c.length > 0 && typeof a != "undefined" && (b.value = c[0] + (b.value.charAt(0) === "/" ? b.value.slice(1) : b.value)),this.value = b,this.paths = c)
},b.URL.prototype = {toCSS:function() {
return"url(" + (this.attrs ? "data:" + this.attrs.mime + this.attrs.charset + this.attrs.base64 + this.attrs.data : this.value.toCSS()) + ")"
},eval:function(a) {
return this.attrs ? this : new b.URL(this.value.eval(a), this.paths)
}}
}(c("less/tree")),function(a) {
a.Value = function(a) {
this.value = a,this.is = "value"
},a.Value.prototype = {eval:function(b) {
return this.value.length === 1 ? this.value[0].eval(b) : new a.Value(this.value.map(function(a) {
return a.eval(b)
}))
},toCSS:function(a) {
return this.value.map(
function(b) {
return b.toCSS(a)
}).join(a.compress ? "," : ", ")
}}
}(c("less/tree")),function(a) {
a.Variable = function(a, b) {
this.name = a,this
.index = b
},a.Variable.prototype = {eval:function(b) {
var c,d,e = this.name;
e.indexOf("@@") == 0 && (e = "@" + (new a.Variable(e.slice(1))).eval(b).value);
if (c = a.find(b.frames, function(a) {
if (d = a.variable(e))return d.value.eval(b)
}))return c;
throw{message:"variable " + e + " is undefined",index:this.index}
}}
}(c("less/tree")),c("less/tree").find = function(a, b) {
for (var c = 0,d; c < a.length; c++)if (d = b.call(a, a[c]))return d;
return null
},c("less/tree").jsify = function(a) {
return Array.isArray(a.value) && a.value.length > 1 ? "[" + a.value.map(
function(a) {
return a.toCSS(!1)
}).join(", ") + "]" : a.toCSS(!1)
};
var g = location.protocol === "file:" || location.protocol === "chrome:" || location.protocol === "chrome-extension:" || location.protocol === "resource:";
d.env = d.env || (location.hostname == "127.0.0.1" || location.hostname == "0.0.0.0" || location.hostname == "localhost" || location.port.length > 0 || g ? "development" : "production"),d.async = !1,d.poll = d.poll || (g ? 1e3 : 1500),d.watch = function() {
return this.watchMode = !0
},d.unwatch = function() {
return this.watchMode = !1
},d.env === "development" ? (d.optimization = 0,/!watch/.test(location.hash) && d.watch(),d.watchTimer = setInterval(function() {
d.watchMode && n(function(a, b, c) {
a && q(a.toCSS(), b, c.lastModified)
})
}, d.poll)) : d.optimization = 3;
var h;
try {
h = typeof a.localStorage == "undefined" ? null : a.localStorage
} catch(i) {
h = null
}
var j = document.getElementsByTagName("link"),k = /^text\/(x-)?less$/;
d.sheets = [];
for (var l = 0; l < j.length; l++)(j[l].rel === "stylesheet/less" || j[l].rel.match(/stylesheet/) && j[l].type.match(k)) && d.sheets.push(j[l]);
d.refresh = function(a) {
var b,c;
b = c = new Date,n(function(a, d, e) {
e.local ? u("loading " + d.href + " from cache.") : (u("parsed " + d.href + " successfully."),q(a.toCSS(), d, e.lastModified)),u("css for " + d.href + " generated in " + (new Date - c) + "ms"),e.remaining === 0 && u("css generated in " + (new Date - b) + "ms"),c = new Date
}, a),m()
},d.refreshStyles = m,d.refresh(d.env === "development")
})(window)

File diff suppressed because one or more lines are too long

View File

@@ -93,7 +93,7 @@ mindplot.model.RelationshipModel = new Class({
this._startArrow = startArrow;
},
clone:function (model) {
clone:function () {
var result = new mindplot.model.RelationshipModel(this._sourceTargetId, this._targetTopicId);
result._id = this._id;
result._lineType = this._lineType;

View File

@@ -167,7 +167,7 @@ mindplot.persistence.XMLSerializer_Beta = new Class({
$assert(documentElement.nodeName != "parsererror", "Error while parsing: '" + documentElement.childNodes[0].nodeValue);
// Is a wisemap?.
$assert(documentElement.tagName == mindplot.persistence.XMLSerializer_Beta.MAP_ROOT_NODE, "This seem not to be a map document. Root Tag: '" + documentElement.tagName);
$assert(documentElement.tagName == mindplot.persistence.XMLSerializer_Beta.MAP_ROOT_NODE, "This seem not to be a map document. Root Tag: '" + documentElement.tagName + ",',HTML:" +dom.innerHTML + ",XML:"+ core.Utils.innerXML(dom));
// Start the loading process ...
var version = documentElement.getAttribute("version");

View File

@@ -18,7 +18,7 @@
mindplot.persistence.XMLSerializer_Pela = new Class({
toXML:function (mindmap) {
toXML: function (mindmap) {
$assert(mindmap, "Can not save a null mindmap");
var document = core.Utils.createDocument();
@@ -27,7 +27,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
var mapElem = document.createElement("map");
var name = mindmap.getId();
if ($defined(name)) {
mapElem.setAttribute('name', name);
mapElem.setAttribute('name', this.rmXmlInv(name));
}
var version = mindmap.getVersion();
if ($defined(version)) {
@@ -61,7 +61,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
return document;
},
_topicToXML:function (document, topic) {
_topicToXML: function (document, topic) {
var parentTopic = document.createElement("topic");
// Set topic attributes...
@@ -92,7 +92,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
}
if (topic.areChildrenShrunken()) {
if (topic.areChildrenShrunken() && topic.getType() != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
parentTopic.setAttribute('shrink', 'true');
}
@@ -149,10 +149,10 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
for (var key in attributes) {
var value = attributes[key];
if (key == 'text') {
var cdata = document.createCDATASection(value);
var cdata = document.createCDATASection(this.rmXmlInv(value));
featureDom.appendChild(cdata);
} else {
featureDom.setAttribute(key, value);
featureDom.setAttribute(key, this.rmXmlInv(value));
}
}
parentTopic.appendChild(featureDom);
@@ -169,18 +169,18 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
return parentTopic;
},
_noteTextToXML:function (document, elem, text) {
_noteTextToXML: function (document, elem, text) {
if (text.indexOf('\n') == -1) {
elem.setAttribute('text', text);
elem.setAttribute('text', this.rmXmlInv(text));
} else {
var textDom = document.createElement("text");
var cdata = document.createCDATASection(text);
var cdata = document.createCDATASection(this.rmXmlInv(text));
textDom.appendChild(cdata);
elem.appendChild(textDom);
}
},
_relationshipToXML:function (document, relationship) {
_relationshipToXML: function (document, relationship) {
var result = document.createElement("relationship");
result.setAttribute("srcTopicId", relationship.getFromNode());
result.setAttribute("destTopicId", relationship.getToNode());
@@ -203,7 +203,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
return result;
},
loadFromDom:function (dom, mapId) {
loadFromDom: function (dom, mapId) {
$assert(dom, "dom can not be null");
$assert(mapId, "mapId can not be null");
@@ -239,7 +239,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
return mindmap;
},
_deserializeNode:function (domElem, mindmap) {
_deserializeNode: function (domElem, mindmap) {
var type = (domElem.getAttribute('central') != null) ? mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE : mindplot.model.INodeModel.MAIN_TOPIC_TYPE;
// Load attributes...
@@ -319,7 +319,8 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
}
var isShrink = domElem.getAttribute('shrink');
if ($defined(isShrink)) {
// Hack: Some production maps has been stored with the central topic collapsed. This is a bug.
if ($defined(isShrink) && type != mindplot.model.INodeModel.CENTRAL_TOPIC_TYPE) {
topic.setChildrenShrunken(isShrink);
}
@@ -372,7 +373,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
return topic;
},
_deserializeTextAttr:function (domElem) {
_deserializeTextAttr: function (domElem) {
var value = domElem.getAttribute("text");
if (!$defined(value)) {
var children = domElem.childNodes;
@@ -395,7 +396,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
return value;
},
_deserializeNodeText:function (domElem) {
_deserializeNodeText: function (domElem) {
var children = domElem.childNodes;
var value = null;
for (var i = 0; i < children.length; i++) {
@@ -407,7 +408,7 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
return value;
},
_deserializeRelationship:function (domElement, mindmap) {
_deserializeRelationship: function (domElement, mindmap) {
var srcId = domElement.getAttribute("srcTopicId");
var destId = domElement.getAttribute("destTopicId");
var lineType = domElement.getAttribute("lineType");
@@ -436,6 +437,36 @@ mindplot.persistence.XMLSerializer_Pela = new Class({
model.setStartArrow('true');
return model;
}
/*
* This method ensures that the output String has only
* valid XML unicode characters as specified by the
* XML 1.0 standard. For reference, please see
* <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char">the
* standard</a>. This method will return an empty
* String if the input is null or empty.
*
* @param in The String whose non-valid characters we want to remove.
* @return The in String, stripped of non-valid characters.
*/,
rmXmlInv: function (str) {
if (str == null || str == undefined)
return null;
var result = "";
for (var i=0;i<str.length;i++){
var c = str.charCodeAt(i);
if ((c == 0x9) || (c == 0xA) || (c == 0xD)
|| ((c >= 0x20) && (c <= 0xD7FF))
|| ((c >= 0xE000) && (c <= 0xFFFD))
|| ((c >= 0x10000) && (c <= 0x10FFFF))) {
result = result + str.charAt(i);
}
}
return result;
}
});
mindplot.persistence.XMLSerializer_Pela.MAP_ROOT_NODE = 'map';

View File

@@ -46,15 +46,16 @@ mindplot.util.Shape =
calculateRelationShipPointCoordinates:function (topic, controlPoint) {
var size = topic.getSize();
var position = topic.getPosition();
var div = (position.x - controlPoint.x);
div = (Math.abs(div) > 0.1 ? div : 0.1); // Prevent division by 0.
var m;
var yGap = position.y - controlPoint.y;
var xGap = position.x - controlPoint.x;
var disable = Math.abs(yGap) < 5 || Math.abs(xGap) < 5 || Math.abs(yGap - xGap) < 5;
var m = (position.y - controlPoint.y) / div;
var y, x;
var gap = 5;
if (controlPoint.y > position.y + (size.height / 2)) {
y = position.y + (size.height / 2) + gap;
x = position.x - ((position.y - y) / m);
x = !disable ? position.x - ((position.y - y) / (yGap / xGap)) : position.x;
if (x > position.x + (size.width / 2)) {
x = position.x + (size.width / 2);
} else if (x < position.x - (size.width / 2)) {
@@ -62,7 +63,7 @@ mindplot.util.Shape =
}
} else if (controlPoint.y < position.y - (size.height / 2)) {
y = position.y - (size.height / 2) - gap;
x = position.x - ((position.y - y) / m);
x = !disable ? position.x - ((position.y - y) / (yGap / xGap)) : position.x;
if (x > position.x + (size.width / 2)) {
x = position.x + (size.width / 2);
} else if (x < position.x - (size.width / 2)) {
@@ -70,10 +71,10 @@ mindplot.util.Shape =
}
} else if (controlPoint.x < (position.x - size.width / 2)) {
x = position.x - (size.width / 2) - gap;
y = position.y - (m * (position.x - x));
y = !disable ? position.y - ((yGap / xGap) * (position.x - x)) : position.y;
} else {
x = position.x + (size.width / 2) + gap;
y = position.y - (m * (position.x - x));
y = !disable ? position.y - ((yGap / xGap) * (position.x - x)) : position.y;
}
return new core.Point(x, y);
@@ -97,6 +98,31 @@ mindplot.util.Shape =
var y2 = m * (x2 - tarPos.x) + tarPos.y;
return [new core.Point(-srcPos.x + x1, -srcPos.y + y1), new core.Point(-tarPos.x + x2, -tarPos.y + y2)];
},
workoutIncomingConnectionPoint:function (targetNode, sourcePosition) {
$assert(sourcePosition, 'sourcePoint can not be null');
var pos = targetNode.getPosition();
var size = targetNode.getSize();
var isAtRight = mindplot.util.Shape.isAtRight(sourcePosition, pos);
var result = mindplot.util.Shape.calculateRectConnectionPoint(pos, size, isAtRight);
if (targetNode.getShapeType() == mindplot.model.TopicShape.LINE) {
result.y = result.y + (targetNode.getSize().height / 2);
}
// Move a little the position...
var offset = mindplot.Topic.CONNECTOR_WIDTH / 2;
if (!isAtRight) {
result.x = result.x + offset;
} else {
result.x = result.x - offset;
}
result.x = Math.ceil(result.x);
result.y = Math.ceil(result.y);
return result;
}
};

View File

@@ -66,7 +66,7 @@ mindplot.widget.FloatingTip = new Class({
},
show:function (element) {
var old = element.retrieve('floatingtip');
var old = $(element).retrieve('floatingtip');
if (old){
if (old.getStyle('opacity') == 1) {
clearTimeout(old.retrieve('timeout'));

View File

@@ -29,7 +29,7 @@ mindplot.widget.IconPanel = new Class({
buildPanel:function () {
var content = new Element('div', {'class':'toolbarPanel', 'id':'IconsPanel'});
content.setStyles({width:253, height:210, padding:5});
content.setStyles({width:253, height:230, padding:5});
content.addEvent("click", function (event) {
event.stopPropagation()
});

View File

@@ -99,7 +99,7 @@ mindplot.widget.LinkEditor = new Class({
});
openButton.inject(form);
openButton.addEvent('click',function(){
window.open(input.value,"_blank", "status=1,width=700,height=450,resize=1");
window.open(input.value,"_blank", "status=1,width=700,height=450,resizable=1");
});

View File

@@ -67,7 +67,7 @@ mindplot.widget.LinkIconTooltip = new Class({
});
var img = new Element('img', {
src:'http://open.thumbshots.org/image.pxf?url=' + linkIcon.getModel().getUrl(),
src:'http://immediatenet.com/t/m?Size=1024x768&URL=' + linkIcon.getModel().getUrl(),
img:linkIcon.getModel().getUrl(),
alt:linkIcon.getModel().getUrl()
}

View File

@@ -223,9 +223,10 @@ mindplot.widget.Menu = new Class({
this._registerTooltip('export', $msg('EXPORT'));
this._addButton('print', false, false, function () {
this.save(saveElem, designer, false);
var baseUrl = window.location.href.substring(0, window.location.href.lastIndexOf("c/maps/"));
window.open(baseUrl + 'c/maps/' + mapId + '/print');
});
}.bind(this));
this._registerTooltip('print', $msg('PRINT'));
@@ -274,7 +275,7 @@ mindplot.widget.Menu = new Class({
}
this._addButton('addTopic', true, false, function () {
designer.createChildForSelectedNode();
designer.createSiblingForSelectedNode();
});
this._registerTooltip('addTopic', $msg('ADD_TOPIC'), "Enter");
@@ -432,6 +433,20 @@ mindplot.widget.Menu = new Class({
});
}
var videoElem = $("tutorialVideo");
if (videoElem) {
var width = 900;
var height = 500;
var left = (screen.width / 2) - (width / 2);
var top = (screen.height / 2) - (height / 2);
videoElem.addEvent('click', function (event) {
window.open("https://www.youtube.com/tv?vq=medium#/watch?v=rKxZwNKs9cE", "_blank", 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left);
event.preventDefault();
});
}
},
_registerEvents:function (designer) {

View File

@@ -0,0 +1,60 @@
DISCARD_CHANGES=Descartar els canvis
SAVE=Desar
INSERT=Inserir
ZOOM_IN=Apropar
ZOOM_OUT=Allunyar
TOPIC_BORDER_COLOR=Color del bord
TOPIC_SHAPE=Forma del Tòpic
TOPIC_ADD=Afegir Tòpic
TOPIC_DELETE=Esborrar Tòpic
TOPIC_ICON=Afegir Icona
TOPIC_LINK=Afegir Enllaç
TOPIC_NOTE=Afegir Nota
TOPIC_COLOR=Color del Tòpic
TOPIC_RELATIONSHIP=Relació
FONT_FAMILY=Tipus de font
FONT_SIZE=Mida del text
FONT_BOLD=Negreta
FONT_ITALIC=Itàlica
FONT_COLOR=Color del Text
UNDO=Refer
NOTE=Nota
LOADING=Carregant ...
PRINT=Imprimir
PUBLISH=Publicar
REDO=Desfer
ADD_TOPIC=Afegir Tòpic
COLLABORATE=Compartir
EXPORT=Exportar
HISTORY=Història
SAVE_COMPLETE=Desat completat
SAVING=Gravant ...
ONE_TOPIC_MUST_BE_SELECTED=No ha estat possible crear un nou tòpic. Com a mínim ha de seleccionar un tòpic.
ONLY_ONE_TOPIC_MUST_BE_SELECTED=No ha estar possible crear un nou tòpic. Només un tòpic ha d'estar seleccionat.
SAVE_COULD_NOT_BE_COMPLETED=No s'ha pogut desar. Provi més tard.
UNEXPECTED_ERROR_LOADING=Ho sentim, un error ha esdevingut inesperadament. Provi recarregant l'editor, si el problema continua contacti a support@wisemapping.com.
ZOOM_ERROR=No es pot fer més zoom.
ZOOM_IN_ERROR=El zoom és massa creixent.
MAIN_TOPIC=Tòpic principal
SUB_TOPIC=Tòpic secundari
ISOLATED_TOPIC=Tòpic aïllat
CENTRAL_TOPIC=Tòpic central
ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE=Els tòpics fills no es poden col·lapsar. Només un tòpic ha d'estar seleccionat.
SHORTCUTS=Accessos directes
ENTITIES_COULD_NOT_BE_DELETED=El tòpic o la relució no poden ser esborrats. Com a mínim ha de seleccionar un.
AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED=Com a mínim ha de seleccionar un tòpic.
CLIPBOARD_IS_EMPTY=Res a copiar.
CENTRAL_TOPIC_CAN_NOT_BE_DELETED=El tòpic central no pot esborrar-se.
RELATIONSHIP_COULD_NOT_BE_CREATED=La relució no s'ha pout drear. Primer has de seleccionar una relució pare.
SELECTION_COPIED_TO_CLIPBOARD=Tòpics copiats
WRITE_YOUR_TEXT_HERE=Escriu aquí la teva nota ...
REMOVE=Esborrar
ACCEPT=Acceptar
CANCEL=Cancel·lar
LINK=Enllaç
OPEN_LINK=Obrir Enllaç
SESSION_EXPIRED=La seva sessió ha finalitzat. Si us plau, torni a connectar-se.

View File

@@ -0,0 +1,59 @@
ZOOM_IN=Ansicht vergrößern
ZOOM_OUT=Ansicht verkleinern
TOPIC_SHAPE=Themen Gestaltung
TOPIC_ADD=Thema hinzufügen
TOPIC_DELETE=Thema löschen
TOPIC_ICON=Symbol hinzufügen
TOPIC_LINK=Verbindung hinzufügen
TOPIC_RELATIONSHIP=Beziehung
TOPIC_COLOR=Themenfarbe
TOPIC_BORDER_COLOR=Thema Randfarbe
TOPIC_NOTE=Notiz hinzufügen
FONT_FAMILY=Schrifttyp
FONT_SIZE=Schriftgröße
FONT_BOLD=Fette Schrift
FONT_ITALIC=Kursive Schrift
UNDO=Rückgängig machen
REDO=Wiederholen
INSERT=Einfügen
SAVE=Sichern
NOTE=Notiz
ADD_TOPIC=Thema hinzufügen
LOADING=Laden ...
EXPORT=Exportieren
PRINT=Drucken
PUBLISH=Publizieren
COLLABORATE=Mitbenutzen
HISTORY=Historie
DISCARD_CHANGES=Änderungen verwerfen
FONT_COLOR=Textfarbe
SAVING=Sichern ...
SAVE_COMPLETE=Sichern abgeschlossen
ZOOM_IN_ERROR=Zoom zu hoch.
ZOOM_ERROR=Es kann nicht weiter vergrößert bzw. verkelinert werden.
ONLY_ONE_TOPIC_MUST_BE_SELECTED=Thema konnte nicht angelegt werden. Bitte wählen Sie nur ein Thema aus.
ONE_TOPIC_MUST_BE_SELECTED=Thema konnte nicht angelegt werden. Es muss ein Thema ausgewählt werden.
ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE=Kinderknoten können nicht eingefaltet werden. Es muss ein Thema ausgewäht werden.
SAVE_COULD_NOT_BE_COMPLETED=Sichern wurde nicht abgeschlossen. Versuchen Sie es später nocheinmal.
UNEXPECTED_ERROR_LOADING=E tut uns Leid, ein unerwarteter Fehler ist aufgetreten.\nVersuchen Sie, den Editor neu zu laden. Falls das Problem erneut auftritt, bitte kontaktieren Sie uns unter support@wisemapping.com.
MAIN_TOPIC=Hauptthema
SUB_TOPIC=Unterthema
ISOLATED_TOPIC=Isoliertes Thema
CENTRAL_TOPIC=Zentrales Thema
SHORTCUTS=Tastaturkürzel
ENTITIES_COULD_NOT_BE_DELETED=Konnte das Thema oder die Beziehung nicht löschen. Es muss mindest ein Eintrag ausgewählt sein.
AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED=Es muss mindestens ein Thema ausgewählt sein.
CLIPBOARD_IS_EMPTY=Es gibt nichts zu kopieren. Die Zwischenablage ist leer.
CENTRAL_TOPIC_CAN_NOT_BE_DELETED=Das zentrale Thema kann nicht gelöscht werden.
RELATIONSHIP_COULD_NOT_BE_CREATED=Die Beziehung konnte nicht angelegt werden. Es muss erst ein Vater-Thema ausgewählt werden, um die Beziehung herzustellen.
SELECTION_COPIED_TO_CLIPBOARD=Themen in der Zwischenablage
WRITE_YOUR_TEXT_HERE=Schreiben Sie ihre Notiz hier ...
REMOVE=Entfernen
ACCEPT=Akzeptieren
CANCEL=Abbrechen
LINK=Verbindung
OPEN_LINK=Öffne URL

18
pom.xml
View File

@@ -4,14 +4,15 @@
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<properties>
<com.wisemapping.version>3.0-SNAPSHOT</com.wisemapping.version>
<com.wisemapping.version>3.0.4</com.wisemapping.version>
<superpom.dir>${project.basedir}/wise-webapps</superpom.dir>
</properties>
<modelVersion>4.0.0</modelVersion>
<groupId>org.wisemapping</groupId>
<artifactId>wisemapping</artifactId>
<name>WiseMapping Project</name>
<version>3.0-SNAPSHOT</version>
<version>3.0.4</version>
<packaging>pom</packaging>
<licenses>
@@ -47,17 +48,17 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<version>2.16</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<version>2.6</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0</version>
<version>3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -101,12 +102,11 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<inherited>true</inherited>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

3
setup.sh Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
export MAVEN_OPTS="-XX:MaxPermSize=128M"

View File

@@ -9,7 +9,7 @@
<groupId>org.wisemapping</groupId>
<artifactId>wisemapping</artifactId>
<relativePath>../pom.xml</relativePath>
<version>3.0-SNAPSHOT</version>
<version>3.0.4</version>
</parent>
<build>

View File

@@ -153,11 +153,21 @@ web2d.peer.svg.TextPeer = new Class({
},
getWidth : function () {
var computedWidth;
// Firefox hack for this issue:http://stackoverflow.com/questions/6390065/doing-ajax-updates-in-svg-breaks-getbbox-is-there-a-workaround
try {
var computedWidth = this._native.getBBox().width;
computedWidth = this._native.getBBox().width;
// Chrome bug is producing this error, oly during page loading. Remove the hack if it works. The issue seems to be
// caused when the element is hidden. I don't know why, but it works ...
if(computedWidth==0){
var bbox = this._native.getBBox();
computedWidth = bbox.width;
}
} catch(e) {
computedWidth = 10;
}
var width = parseInt(computedWidth);

View File

@@ -89,7 +89,7 @@ function testElementFill()
assertEquals(opacity, fill.opacity);
}
// Set attributes
// Set delegated
elem.setAttribute('fillColor', color);
elem.setAttribute('fillOpacity', opacity);

View File

@@ -30,6 +30,7 @@ function createStorageManager(mindplot) {
},
loadMapDom : function(mapId) {
var xml;
var xmlRequest = new Request({
url: this.backendUrl + mapId,
method: 'get',

View File

@@ -0,0 +1,71 @@
JS Editor Integration
---------------------
## Running the JS only version
Start by creating the .zip file:
`mvn assembly:assembly -Dmaven.test.skip=true`
To test the javascript frontend you then do:
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>8000,:DocumentRoot=>".").start'
Now open a browser using the URL http://localhost:8000/wise-editor/src/main/webapp/
### Attaching drag and drop events.
1) Support for dragging TextNodes:
The following code is an example of how to add attach to the div dragImageNode the support for node dragging.
$("dragTextNode").addEvent('mousedown', function(event) {
event.preventDefault();
// Create a image node ...
var mindmap = designer.getMindmap();
var node = mindmap.createNode();
node.setText("Node Text !!!!");
node.setMetadata("{'media':'test'}");
node.setShapeType(mindplot.model.TopicShape.RECTANGLE);
// Add link ...
var link = node.createFeature(mindplot.TopicFeature.Link.id, {url:"http://www.wisemapping.com"});
node.addFeature(link);
// Add Note ...
var note = node.createFeature(mindplot.TopicFeature.Note.id, {text:"This is a note"});
node.addFeature(note);
designer.addDraggedNode(event, node);
});
In the example, a new node is created with text "Node Text !!!!" and a note and a link associated to it when the user drop the node. Something to pay attention is the node.setMetadata("{}"), this delegated will be persisted during the serialization. Here you can store all the data you need.
2) Support for dragging Images: Similar to the point 1,drag support is registered to the div dragImageNode.
$("dragImageNode").addEvent('mousedown', function(event) {
event.preventDefault();
// Create a image node ...
var mindmap = designer.getMindmap();
var node = mindmap.createNode();
node.setImageSize(80, 43);
node.setMetadata("{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&feature=g-vrec&context=G2b4ab69RVAAAAAAAAAA'}");
node.setImageUrl("images/logo-small.png");
node.setShapeType(mindplot.model.TopicShape.IMAGE);
designer.addDraggedNode(event, node);
});
The node.setShapeType(mindplot.model.TopicShape.IMAGE) defines a image node. This makes mandatory the set of setImageUrl and setImageSize properties in the node.
3) An event registration mechanism for Image nodes edit events: The next snipped show how to register a custom edition handler.
designer.addEvent("editnode", function(event) {
var node = event.model;
alert("Node Id:" + node.getId());
alert("Node Metadata:" + node.getMetadata());
alert("Is Read Only:" + event.readOnly);
} });

View File

@@ -9,7 +9,7 @@
<groupId>org.wisemapping</groupId>
<artifactId>wisemapping</artifactId>
<relativePath>../pom.xml</relativePath>
<version>3.0-SNAPSHOT</version>
<version>3.0.4</version>
</parent>
<dependencies>
@@ -31,8 +31,8 @@
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.14.v20131031</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">

View File

@@ -1,48 +0,0 @@
<html>
<body>
<script type="text/javascript" src="http://docs.google.com/brix/static/api/js/jsapi.nocache.js"></script>
<script type="text/javascript">
var collabOnLoad = function() {
app = new goog.collab.CollaborativeApp();
app.start();
app.addListener('modelLoad', function(model) {
var root = app.getModel().getRoot();
var myList = root.get("myList");
if (!myList) {
myList = app.getModel().create("List");
root.put("myList", myList);
}
myList.addListener('valuesAdded', function(event) {
console.log("value added:" + myList.size());
});
myList.addListener('valuesRemoved', function(event) {
console.log("value removed:" + myList.size());
});
});
removedAction = function() {
var root = app.getModel().getRoot();
var myList = root.get("myList");
myList.remove(myList.size() - 1);
};
addAction = function() {
var root = app.getModel().getRoot();
var myList = root.get("myList");
myList.add("Some elem " + myList.size());
console.log("Click on adding...");
};
};
</script>
Funca?
<input style="font-size:20px;width:50px;height:50px;" type="button" value="Add" id="a2" onclick="addAction(this)"/>
<input style="font-size:20px;width:50px;height:50px;" type="button" value="Remove" id="a2"
onclick="removedAction(this)"/>
</body>
</html>

View File

@@ -1,6 +1,5 @@
@import "compatibility.less";
@import "css/libraries/moodialog/css/MooDialog.css";
@import "libraries/moodialog/css/MooDialog.css";
/********************************************************************************/
/* Header & Toolbar Styles */
/********************************************************************************/
@@ -13,7 +12,8 @@ body {
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
overflow:hidden;
overflow: hidden;
position: fixed
}
div#mindplot {
@@ -21,7 +21,7 @@ div#mindplot {
top: 0;
left: 0;
width: 100%;
height:100%;
height: 100%;
border: 0;
overflow: hidden;
}
@@ -36,8 +36,8 @@ div#small_error_icon {
background-color: #dfcf3c;
padding: 5px 15px;
color: #666666;
/*font-weight: bold;*/
/*width: 100px;*/
/*font-weight: bold;*/
/*width: 100px;*/
font-size: 13px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
@@ -49,8 +49,8 @@ div#small_error_icon {
background-color: #dfcf3c;
padding: 5px 15px;
color: #666666;
/*font-weight: bold;*/
/*width: 100px;*/
/*font-weight: bold;*/
/*width: 100px;*/
font-size: 13px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
@@ -150,18 +150,18 @@ div#small_error_icon {
/* Modal dialogs definitions */
div.modalDialog {
position: fixed;
top: 50%;
left: 50%;
z-index: 11000;
width: 500px;
margin: -250px 0 0 -250px;
background-color: #ffffff;
border: 1px solid #999;
padding: 10px;
overflow: auto;
position: fixed;
top: 50%;
left: 50%;
z-index: 11000;
width: 500px;
margin: -250px 0 0 -250px;
background-color: #ffffff;
border: 1px solid #999;
padding: 10px;
overflow: auto;
/* IE6-7 */
/* IE6-7 */
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px;
@@ -178,31 +178,40 @@ div.modalDialog .content {
padding: 5px 5px;
}
div.modalDialog .title
{
div.modalDialog .title {
font-weight: bold;
text-shadow: 1px 1px 0 #fff;
border-bottom: 1px solid #eee;
padding: 5px 15px;
font-size: 18px;
}
/*--- End Modal Dialog Form ---*/
.publishModalDialog .content{
height:420px;
.publishModalDialog .content {
height: 420px;
}
.exportModalDialog .content{
height:400px;
.exportModalDialog .content {
height: 400px;
}
.shareModalDialog .content {
height:440px;
height: 440px;
}
div.shareModalDialog {
width: 550px;
}
#tutorialVideo{
background: url(../images/help.png) no-repeat left center;
padding-left: 19px;
}
#keyboardShortcuts{
background: url(../images/help.png) no-repeat left center;
padding-left: 19px;
}

View File

@@ -1,6 +1,9 @@
@import "editor.less";
/* Overwrite some styles */
body{
position: inherit;
}
div#headerInfo {
height: 0;

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -87,7 +87,7 @@ function buildDesigner(options) {
}
} else {
persistence = new mindplot.LocalStorageManager();
persistence = new mindplot.LocalStorageManager("samples/{id}.xml");
}
mindplot.PersistenceManager.init(persistence);

View File

@@ -1 +1 @@
../../../../../mindplot/src/main/javascript/libraries/less/less-1.1.3.min.js
../../../../../mindplot/src/main/javascript/libraries/less/less-1.6.2.min.js

1
wise-webapp/config Symbolic link
View File

@@ -0,0 +1 @@
../config/

View File

@@ -5,14 +5,22 @@ Introduction
-------------
All WiseMapping services are exposed as REST services. Those services are the same used by the WiseMapping when you are using it.
In the following section, all supported services are listed. The following variables should be replaced:
In the following section, all supported services are listed.
REST Console
-------------
You can learn how what are WiseMapping REST API's from using our interactive console. You can access it from here: http://localhost:8080/doc/rest/index.html.
Important: Don't forget to configure your server host url in /WEB-INF/app.properties. By default it's configure to http://localhost:8080/wisemapping/</p>
CURL Usage Examples
-------------
The following variables should be replaced:
- host.name: Host name where WiseMapping is deployed. Default Value: localhost
- host.post: Post number where WiseMapping is deployed. Default Value: 8080
- context.path: Context Path name where the application is deployed. Default Value: wisemapping
Supported Operations
----------------------
- context.path: Context Path name where the application is deployed. Default Value: wisemapping
Obtaining user information by email:
* Template Path: /service/admin/users/email/{user.email}.json
@@ -22,4 +30,13 @@ Deleting a based on the user id:
* Template Path: /service/admin/users/{userId}
* curl "http://{host.name}:{host.port}/{context.path}/service/admin/users/{userId}" --request delete --basic -u "admin@wisemapping.org:admin"
Changing Password:
Template Path: /service/admin/users/{userId}/password
* curl "http://{host.name}:{host.port}/{context.path}/service/admin/users/{userId}/password" --request put --basic -u "admin@wisemapping.org:admin" -H "Content-Type:text/plain" --data "<new_password>"
Creating a new user:
* Template Path: /service/admin/users/
* Method: Post
* curl "http://{host.name}:{host.port}/{context.path}/service/admin/users" --request post --basic -u "admin@wisemapping.org:admin" -H "Content-Type:application/json" --data '{"email": "te2@mydomain.de", "lastname": "lastname", "firstname":"myfirstname","password":"password"}'

View File

@@ -9,7 +9,7 @@
<groupId>org.wisemapping</groupId>
<artifactId>wisemapping</artifactId>
<relativePath>../pom.xml</relativePath>
<version>3.0-SNAPSHOT</version>
<version>3.0.4</version>
</parent>
<repositories>
@@ -28,7 +28,7 @@
</repositories>
<properties>
<org.springframework.version>3.1.0.RELEASE</org.springframework.version>
<org.springframework.version>3.1.3.RELEASE</org.springframework.version>
</properties>
<dependencies>
@@ -77,6 +77,18 @@
<version>${org.springframework.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
<version>${org.springframework.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-openid</artifactId>
<version>${org.springframework.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
@@ -107,16 +119,6 @@
<version>${org.springframework.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jsr173_api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
@@ -176,12 +178,6 @@
<version>${org.springframework.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.0.1B</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
@@ -224,21 +220,15 @@
<version>1.7</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
@@ -276,7 +266,6 @@
<artifactId>jackson-core-asl</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
@@ -307,86 +296,156 @@
<artifactId>jsoup</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.6.6</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-annotations_2.9.1</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>coverage</id>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.4.201312101107</version>
<executions>
<!--
Prepares the property pointing to the JaCoCo runtime agent which
is passed as VM argument when Maven the Surefire plugin is executed.
-->
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!--
Ensures that the code coverage report for unit tests is created after
unit tests have been run.
-->
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>hsqldb</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<driver>org.hsqldb.jdbc.JDBCDriver</driver>
<url>jdbc:hsqldb:file:${project.build.directory}/db/wisemapping</url>
<username>sa</username>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.5</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.8</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>drop-schemas</id>
<phase>prepare-package</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<onError>continue</onError>
<orderFile>descending</orderFile>
<fileset>
<basedir>${project.basedir}</basedir>
<includes>
<include>config/database/hsql/drop-schemas.sql</include>
<include>config/database/hsql/create-schemas.sql</include>
<include>config/database/hsql/apopulate-schemas.sql</include>
</includes>
</fileset>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>mysqldb</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.5</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>init-schema</id>
<goals>
<goal>execute</goal>
</goals>
<phase>prepare-package</phase>
</execution>
</executions>
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<username>root</username>
<password></password>
<url>jdbc:mysql://127.0.0.1:3306/?useUnicode=true&amp;characterEncoding=UTF-8</url>
<autocommit>false</autocommit>
<srcFiles>
<srcFile>config/database/mysql/create-database.sql</srcFile>
<srcFile>config/database/mysql/create-schemas.sql</srcFile>
<srcFile>config/database/mysql/apopulate-schemas.sql</srcFile>
</srcFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<driver>org.hsqldb.jdbc.JDBCDriver</driver>
<url>jdbc:hsqldb:file:${project.build.directory}/db/wisemapping</url>
<username>sa</username>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.5</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.8</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>drop-schemas</id>
<phase>test</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<onError>continue</onError>
<orderFile>ascending</orderFile>
<fileset>
<basedir>${project.basedir}</basedir>
<includes>
<include>src/test/sql/hsql/drop-schemas.sql</include>
</includes>
</fileset>
</configuration>
</execution>
<execution>
<id>create-schema</id>
<phase>test</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<orderFile>ascending</orderFile>
<fileset>
<basedir>${project.basedir}</basedir>
<includes>
<include>src/test/sql/hsql/create-schemas.sql</include>
</includes>
</fileset>
</configuration>
</execution>
<execution>
<id>create-data</id>
<phase>test</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<orderFile>ascending</orderFile>
<fileset>
<basedir>${project.basedir}</basedir>
<includes>
<include>src/test/sql/hsql/test-data.sql</include>
</includes>
</fileset>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native2ascii-maven-plugin</artifactId>
@@ -404,8 +463,6 @@
</includes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
@@ -469,16 +526,30 @@
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<path>/wisemapping</path>
<warFile>${project.build.directory}/wisemapping.war</warFile>
<mode>war</mode>
<update>true</update>
<systemProperties>
<database.base.url>${project.build.directory}</database.base.url>
</systemProperties>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.4.v20120524</version>
<version>8.1.14.v20131031</version>
<configuration>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
@@ -501,7 +572,6 @@
<value>${project.build.directory}</value>
</systemProperty>
</systemProperties>
<!--<scanIntervalSeconds>10</scanIntervalSeconds>-->
</configuration>
<executions>
<execution>
@@ -524,7 +594,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>

View File

@@ -0,0 +1,26 @@
package com.wisemapping.dao;
import com.wisemapping.model.Label;
import com.wisemapping.model.User;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public interface LabelManager {
void addLabel(@NotNull final Label label);
void saveLabel(@NotNull final Label label);
@NotNull
List<Label> getAllLabels(@NotNull final User user);
@Nullable
Label getLabelById(int id, @NotNull final User user);
@Nullable
Label getLabelByTitle(@NotNull final String title, @NotNull final User user);
void removeLabel(@NotNull final Label label);
}

View File

@@ -0,0 +1,57 @@
package com.wisemapping.dao;
import com.wisemapping.model.Label;
import com.wisemapping.model.User;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.util.List;
public class LabelManagerImpl extends HibernateDaoSupport
implements LabelManager {
@Override
public void addLabel(@NotNull final Label label) {
saveLabel(label);
}
@Override
public void saveLabel(@NotNull final Label label) {
getSession().save(label);
}
@NotNull
@Override
public List<Label> getAllLabels(@NotNull final User user) {
return getHibernateTemplate().find("from com.wisemapping.model.Label wisemapping where creator_id=?", user.getId());
}
@Nullable
@Override
public Label getLabelById(int id, @NotNull final User user) {
List<Label> labels = getHibernateTemplate().find("from com.wisemapping.model.Label wisemapping where id=? and creator=?", new Object[]{id, user});
return getFirst(labels);
}
@Nullable
@Override
public Label getLabelByTitle(@NotNull String title, @NotNull final User user) {
final List<Label> labels = getHibernateTemplate().find("from com.wisemapping.model.Label wisemapping where title=? and creator=?", new Object[]{title, user});
return getFirst(labels);
}
@Override
public void removeLabel(@NotNull Label label) {
getHibernateTemplate().delete(label);
}
@Nullable private Label getFirst(List<Label> labels) {
Label result = null;
if (labels != null && !labels.isEmpty()) {
result = labels.get(0);
}
return result;
}
}

View File

@@ -22,6 +22,7 @@ import com.wisemapping.model.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.util.List;
public interface MindmapManager {
@@ -38,7 +39,7 @@ public interface MindmapManager {
List<Mindmap> getAllMindmaps();
@NotNull
@Nullable
Mindmap getMindmapById(int mindmapId);
Mindmap getMindmapByTitle(final String name, final User user);
@@ -66,4 +67,6 @@ public interface MindmapManager {
public MindMapHistory getHistory(int historyId);
void updateCollaboration(@NotNull Collaboration collaboration);
void purgeHistory(int mapId) throws IOException;
}

View File

@@ -19,7 +19,9 @@
package com.wisemapping.dao;
import com.wisemapping.model.*;
import com.wisemapping.util.ZipUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
@@ -27,6 +29,7 @@ import org.hibernate.criterion.Junction;
import org.hibernate.criterion.Order;
import org.hibernate.Criteria;
import java.io.IOException;
import java.util.List;
import java.util.Calendar;
@@ -57,11 +60,10 @@ public class MindmapManagerImpl
final Criteria hibernateCriteria = getSession().createCriteria(MindMapHistory.class);
hibernateCriteria.add(Restrictions.eq("mindmapId", mindmapId));
hibernateCriteria.addOrder(Order.desc("creationTime"));
// Mientras no haya paginacion solo los 10 primeros
// This line throws errors in some environments, so getting all history and taking firsts 10 records
// hibernateCriteria.setMaxResults(10);
List list = hibernateCriteria.list();
return list.subList(0, (10 < list.size() ? 10 : list.size()));
hibernateCriteria.setMaxResults(30);
return hibernateCriteria.list();
}
@Override
@@ -74,6 +76,38 @@ public class MindmapManagerImpl
getHibernateTemplate().save(collaboration);
}
@Override
public void purgeHistory(int mapId) throws IOException {
final Criteria hibernateCriteria = getSession().createCriteria(MindMapHistory.class);
hibernateCriteria.add(Restrictions.eq("mindmapId", mapId));
hibernateCriteria.addOrder(Order.desc("creationTime"));
final List<MindMapHistory> historyList = hibernateCriteria.list();
final Mindmap mindmap = this.getMindmapById(mapId);
if (mindmap != null) {
final Calendar yearAgo = Calendar.getInstance();
yearAgo.add(Calendar.MONTH, -12);
// If the map has not been modified in the last months, it means that I don't need to keep all the history ...
int max = mindmap.getLastModificationTime().before(yearAgo) ? 10 : 25;
for (MindMapHistory history : historyList) {
byte[] zippedXml = history.getZippedXml();
if (new String(zippedXml).startsWith("<map")) {
history.setZippedXml(ZipUtils.bytesToZip(zippedXml));
getHibernateTemplate().update(history);
}
}
if (historyList.size() > max) {
for (int i = max; i < historyList.size(); i++) {
getHibernateTemplate().delete(historyList.get(i));
}
}
}
}
@Override
public List<Mindmap> search(MindMapCriteria criteria, int maxResult) {
final Criteria hibernateCriteria = getSession().createCriteria(Mindmap.class);
@@ -164,7 +198,7 @@ public class MindmapManagerImpl
}
@Override
@NotNull
@Nullable
public Mindmap getMindmapById(int id) {
return getHibernateTemplate().get(Mindmap.class, id);
}
@@ -203,13 +237,20 @@ public class MindmapManagerImpl
@Override
public void removeMindmap(@NotNull final Mindmap mindMap) {
// Delete history first ...
final Criteria hibernateCriteria = getSession().createCriteria(MindMapHistory.class);
hibernateCriteria.add(Restrictions.eq("mindmapId", mindMap.getId()));
List list = hibernateCriteria.list();
getHibernateTemplate().deleteAll(list);
// Delete mindmap ....
getHibernateTemplate().delete(mindMap);
}
private void saveHistory(@NotNull final Mindmap mindMap) {
final MindMapHistory history = new MindMapHistory();
history.setXml(mindMap.getXml());
history.setZippedXml(mindMap.getZippedXml());
history.setCreationTime(Calendar.getInstance());
history.setEditor(mindMap.getLastEditor());
history.setMindmapId(mindMap.getId());

View File

@@ -45,6 +45,6 @@ public interface UserManager {
public User createUser(User user, Collaborator col);
public void deleteUser(User user);
public void removeUser(@NotNull User user);
}

View File

@@ -22,7 +22,9 @@ import com.wisemapping.model.Collaboration;
import com.wisemapping.model.Collaborator;
import com.wisemapping.model.User;
import com.wisemapping.model.AccessAuditory;
import org.hibernate.ObjectNotFoundException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.security.authentication.encoding.PasswordEncoder;
//import org.acegisecurity.providers.encoding.PasswordEncoder;
@@ -69,8 +71,15 @@ public class UserManagerImpl
return cola;
}
@Nullable
public User getUserBy(long id) {
return getHibernateTemplate().get(User.class, id);
User user = null;
try{
user = getHibernateTemplate().get(User.class, id);
} catch (ObjectNotFoundException e){
// Ignore ...
}
return user;
}
@Override
@@ -101,11 +110,8 @@ public class UserManagerImpl
}
@Override
public void deleteUser(@NotNull User user) {
final Collaborator collaborator = this.getCollaboratorBy(user.getEmail());
getHibernateTemplate().delete(collaborator);
public void removeUser(@NotNull final User user) {
getHibernateTemplate().delete(user);
getHibernateTemplate().flush();
}
public void auditLogin(@NotNull AccessAuditory accessAuditory) {

View File

@@ -18,7 +18,11 @@ abstract public class ClientException extends WiseMappingException {
String getMsgBundleKey();
public String getMessage(@NotNull final MessageSource messageSource, final @NotNull Locale locale) {
return messageSource.getMessage(this.getMsgBundleKey(), this.getMsgBundleArgs(), locale);
String message = messageSource.getMessage(this.getMsgBundleKey(), this.getMsgBundleArgs(), locale);
if(message==null){
message = this.getMessage();
}
return message;
}
protected Object[] getMsgBundleArgs(){
@@ -28,4 +32,8 @@ abstract public class ClientException extends WiseMappingException {
public Severity getSeverity() {
return this.severity;
}
public String getTechInfo() {
return getMessage();
}
}

View File

@@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull;
public class EditionSessionExpiredException
extends ClientException
{
public static final String MSG_KEY = "MINDMAP_TIMESTAMP_OUTDATED";
private static final String MSG_KEY = "MINDMAP_TIMESTAMP_OUTDATED";
public EditionSessionExpiredException(@NotNull String msg)
{

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