diff --git a/core-js/src/main/javascript/Monitor.js b/core-js/src/main/javascript/Monitor.js
deleted file mode 100644
index 0e885bbb..00000000
--- a/core-js/src/main/javascript/Monitor.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright [2011] [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.
- */
-
-core.Monitor = new Class({
- initialize : function(fadeElement, logContentElem) {
- $assert(fadeElement, "fadeElement can not be null");
- $assert(logContentElem, "logContentElem can not be null");
-
- this.pendingMessages = [];
- this.inProgress = false;
- this._container = fadeElement;
- this._currentMessage = null;
- this._logContentElem = logContentElem;
-
- this._fxOpacity = fadeElement.effect('opacity', { duration: 6000 });
-
- },
-
- _logMessage : function(msg, msgKind) {
- this._fxOpacity.clearTimer();
- if (msgKind == core.Monitor.MsgKind.ERROR) {
- msg = "
" + msg + "
";
- }
- this._currentMessage = msg;
- this._fxOpacity.start(1, 0);
- this._logContentElem.innerHTML = msg;
-
- },
-
- logError : function(userMsg) {
- this.logMessage(userMsg, core.Monitor.MsgKind.ERROR);
- console.log(userMsg);
- },
-
- logMessage : function(msg, msgKind) {
- if (!msgKind) {
- msgKind = core.Monitor.MsgKind.INFO;
- }
-
- if (msgKind == core.Monitor.MsgKind.FATAL) {
- // In this case, a modal dialog must be shown... No recovery is possible.
- new Windoo.Alert(msg,
- {
- 'window': { theme:Windoo.Themes.aero,
- title:"Outch!!. An unexpected error.",
- 'onClose':function() {
- }
- }
- });
- } else {
- var messages = this.pendingMessages;
- var monitor = this;
-
- if (!this.executer) {
- // Log current message ...
- monitor._logMessage(msg, msgKind);
-
- // Start worker thread ...
- var disptacher = function() {
- if (messages.length > 0) {
- var msgToDisplay = messages.shift();
- monitor._logMessage(msgToDisplay);
- }
-
- // Stop thread?
- if (messages.length == 0) {
- $clear(monitor.executer);
- monitor.executer = null;
- monitor._fxOpacity.hide();
- this._currentMessage = null;
- }
- };
- this.executer = disptacher.periodical(600);
- } else {
- if (this._currentMessage != msg) {
- messages.push(msg);
- }
- }
- }
- }
-});
-
-core.Monitor.setInstance = function(monitor) {
- this.monitor = monitor;
-};
-
-core.Monitor.getInstance = function() {
- var result = this.monitor;
- if (result == null) {
- result = {
- logError: function(msg) {
- console.log(msg)
- },
-
- logMessage: function(msg) {
- console.log(msg)
- }
- };
- }
- return result;
-};
-
-
-core.Monitor.MsgKind =
-{
- INFO:1,
- WARNING:2,
- ERROR:3,
- FATAL:4
-};
\ No newline at end of file
diff --git a/core-js/src/main/javascript/Point.js b/web2d/src/main/javascript/Point.js
similarity index 100%
rename from core-js/src/main/javascript/Point.js
rename to web2d/src/main/javascript/Point.js
diff --git a/web2d/src/main/javascript/peer/svg/ElementPeer.js b/web2d/src/main/javascript/peer/svg/ElementPeer.js
index 4181a27b..d5c2d373 100644
--- a/web2d/src/main/javascript/peer/svg/ElementPeer.js
+++ b/web2d/src/main/javascript/peer/svg/ElementPeer.js
@@ -19,6 +19,13 @@
web2d.peer.svg.ElementPeer = new Class({
initialize :function(svgElement) {
this._native = svgElement;
+ if (!this._native.addEvent) {
+ // Hack bug: https://bugzilla.mozilla.org/show_bug.cgi?id=740811
+ for (var key in Element) {
+ this._native[key] = Element.prototype[key];
+ }
+ }
+
this._size = {width:1,height:1};
this._changeListeners = {};
// http://support.adobe.com/devsup/devsup.nsf/docs/50493.htm
@@ -82,7 +89,8 @@ web2d.peer.svg.ElementPeer = new Class({
* http://developer.mozilla.org/en/docs/addEvent
*/
addEvent : function(type, listener) {
- this._native.addEvent(type, listener);
+ // this._native.addEvent(type, listener);
+ this._native.addEventListener(type, listener);
},
fireEvent : function(type) {
diff --git a/wise-webapp/src/main/java/com/wisemapping/controller/ExportController.java b/wise-webapp/src/main/java/com/wisemapping/controller/ExportController.java
new file mode 100644
index 00000000..7d76c4fe
--- /dev/null
+++ b/wise-webapp/src/main/java/com/wisemapping/controller/ExportController.java
@@ -0,0 +1,117 @@
+package com.wisemapping.controller;
+
+
+import com.wisemapping.exceptions.WiseMappingException;
+import com.wisemapping.model.User;
+import com.wisemapping.rest.BaseController;
+import com.wisemapping.rest.model.RestUser;
+import com.wisemapping.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Controller
+public class ExportController extends BaseController {
+ @Autowired
+ private UserService userService;
+
+ @RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/json", "text/html", "application/xml"})
+ @ResponseBody
+ public ModelAndView getUserById(@PathVariable long id) throws IOException {
+ final User userBy = userService.getUserBy(id);
+ if (userBy == null) {
+ throw new IllegalArgumentException("User could not be found");
+ }
+ return new ModelAndView("userView", "user", new RestUser(userBy));
+ }
+
+ @RequestMapping(method = RequestMethod.GET, value = "admin/users/email/{email}", produces = {"application/json", "text/html", "application/xml"})
+ @ResponseBody
+ public ModelAndView getUserByEmail(@PathVariable String email) throws IOException {
+ final User user = userService.getUserBy(email);
+ if (user == null) {
+ throw new IllegalArgumentException("User '" + email + "' could not be found");
+ }
+ return new ModelAndView("userView", "user", new RestUser(user));
+ }
+
+ @RequestMapping(method = RequestMethod.GET, value = "admin/users/username/{username}", produces = {"application/json", "text/html", "application/xml"})
+ @ResponseBody
+ public ModelAndView getUserByUsername(@PathVariable String username) throws IOException {
+ final User user = userService.getUserByUsername(username);
+ if (user == null) {
+ throw new IllegalArgumentException("User '" + username + "' could not be found");
+ }
+ return new ModelAndView("userView", "user", new RestUser(user));
+ }
+
+ @RequestMapping(method = RequestMethod.POST, value = "admin/users", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
+ @ResponseStatus(value = HttpStatus.CREATED)
+ public void createUser(@RequestBody RestUser user, HttpServletResponse response) throws IOException, WiseMappingException {
+ if (user == null) {
+ throw new IllegalArgumentException("User could not be found");
+ }
+
+ // User already exists ?
+ final String email = user.getEmail();
+ if (userService.getUserBy(email) != null) {
+ throw new IllegalArgumentException("User already exists with this email.");
+ }
+
+ final String username = user.getUsername();
+ if (username == null || username.isEmpty()) {
+ throw new IllegalArgumentException("username can not be null");
+ }
+
+ if (userService.getUserByUsername(username) != null) {
+ throw new IllegalArgumentException("User already exists with this username.");
+ }
+
+ // Run some other validations ...
+ final User delegated = user.getDelegated();
+ final String lastname = delegated.getLastname();
+ if (lastname == null || lastname.isEmpty()) {
+ throw new IllegalArgumentException("lastname can not be null");
+ }
+
+ final String firstName = delegated.getFirstname();
+ if (firstName == null || firstName.isEmpty()) {
+ throw new IllegalArgumentException("firstname can not be null");
+ }
+
+ // Finally create the user ...
+ userService.createUser(delegated, false);
+ response.setHeader("Location", "/service/admin/users/" + user.getId());
+ }
+
+ @RequestMapping(method = RequestMethod.PUT, value = "admin/users/{id}/password", consumes = {"text/plain"})
+ @ResponseStatus(value = HttpStatus.NO_CONTENT)
+ public void changePassword(@RequestBody String password, @PathVariable long id) throws IOException, WiseMappingException {
+ if (password == null) {
+ throw new IllegalArgumentException("Password can not be null");
+ }
+
+ final User user = userService.getUserBy(id);
+ if (user == null) {
+ throw new IllegalArgumentException("User '" + id + "' could not be found");
+ }
+ user.setPassword(password);
+ userService.changePassword(user);
+ }
+
+ @RequestMapping(method = RequestMethod.DELETE)
+ @ResponseStatus(value = HttpStatus.NO_CONTENT)
+ public void getUserByEmail(@PathVariable long id) throws IOException, WiseMappingException {
+ final User user = userService.getUserBy(id);
+ if (user == null) {
+ throw new IllegalArgumentException("User '" + id + "' could not be found");
+ }
+ userService.deleteUser(user);
+ }
+
+}
diff --git a/wise-webapp/src/main/java/com/wisemapping/ncontroller/NMindmapController.java b/wise-webapp/src/main/java/com/wisemapping/ncontroller/NMindmapController.java
new file mode 100644
index 00000000..b01c865a
--- /dev/null
+++ b/wise-webapp/src/main/java/com/wisemapping/ncontroller/NMindmapController.java
@@ -0,0 +1,31 @@
+package com.wisemapping.ncontroller;
+
+
+import com.wisemapping.model.User;
+import com.wisemapping.rest.model.RestUser;
+import com.wisemapping.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.IOException;
+
+@Controller
+public class NMindmapController {
+ @Autowired
+ private UserService userService;
+
+ @RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/json", "text/html", "application/xml"})
+ @ResponseBody
+ public ModelAndView getUserById(@PathVariable long id) throws IOException {
+ final User userBy = userService.getUserBy(id);
+ if (userBy == null) {
+ throw new IllegalArgumentException("User could not be found");
+ }
+ return new ModelAndView("userView", "user", new RestUser(userBy));
+ }
+}